Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.13 KB | None | 0 0
  1. package server.model.players.packets;
  2.  
  3. import server.Config;
  4. import server.Server;
  5. import server.model.players.Client;
  6. import server.model.players.PacketType;
  7. import server.model.players.skills.Slayer;
  8.  
  9. /**
  10.  * Click NPC
  11.  */
  12. public class ClickNPC implements PacketType {
  13.     public static final int ATTACK_NPC = 72, MAGE_NPC = 131, FIRST_CLICK = 155, SECOND_CLICK = 17, THIRD_CLICK = 21;
  14.     @Override
  15.     public void processPacket(Client c, int packetType, int packetSize) {
  16.         c.npcIndex = 0;
  17.         c.npcClickIndex = 0;
  18.         c.playerIndex = 0;
  19.         c.clickNpcType = 0;
  20.         c.getPA().resetFollow();
  21.         switch(packetType) {
  22.            
  23.             /**
  24.             * Attack npc melee or range
  25.             **/
  26.             case ATTACK_NPC:
  27.             if (!c.mageAllowed) {
  28.                 c.mageAllowed = true;
  29.                 c.sendMessage("I can't reach that.");
  30.                 break;
  31.             }
  32.             c.npcIndex = c.getInStream().readUnsignedWordA();
  33.             if (Server.npcHandler.npcs[c.npcIndex] == null) {
  34.                 c.npcIndex = 0;
  35.                 break;
  36.             }  
  37.             if (Server.npcHandler.npcs[c.npcIndex].MaxHP == 0) {
  38.                 c.npcIndex = 0;
  39.                 break;
  40.             }          
  41.             if(Server.npcHandler.npcs[c.npcIndex] == null){
  42.                 break;
  43.             }
  44.             if (c.autocastId > 0)
  45.                 c.autocasting = true;          
  46.             if (!c.autocasting && c.spellId > 0) {
  47.                 c.spellId = 0;
  48.             }
  49.             c.faceUpdate(c.npcIndex);          
  50.             c.usingMagic = false;
  51.             boolean usingBow = false;
  52.             boolean usingOtherRangeWeapons = false;
  53.             boolean usingArrows = false;
  54.             boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185;
  55.             if (c.playerEquipment[c.playerWeapon] >= 4214 && c.playerEquipment[c.playerWeapon] <= 4223)
  56.                 usingBow = true;
  57.             for (int bowId : c.BOWS) {
  58.                 if(c.playerEquipment[c.playerWeapon] == bowId) {
  59.                     usingBow = true;
  60.                     for (int arrowId : c.ARROWS) {
  61.                         if(c.playerEquipment[c.playerArrows] == arrowId) {
  62.                             usingArrows = true;
  63.                         }
  64.                     }
  65.                 }
  66.             }
  67.             for (int otherRangeId : c.OTHER_RANGE_WEAPONS) {
  68.                 if(c.playerEquipment[c.playerWeapon] == otherRangeId) {
  69.                     usingOtherRangeWeapons = true;
  70.                 }
  71.             }
  72.             if((usingBow || c.autocasting) && c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[c.npcIndex].getX(), Server.npcHandler.npcs[c.npcIndex].getY(), 7)) {
  73.                 c.stopMovement();
  74.             }
  75.            
  76.             if(usingOtherRangeWeapons && c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[c.npcIndex].getX(), Server.npcHandler.npcs[c.npcIndex].getY(), 4)) {
  77.                 c.stopMovement();
  78.             }
  79.             if(!usingCross && !usingArrows && usingBow && c.playerEquipment[c.playerWeapon] < 4212 && c.playerEquipment[c.playerWeapon] > 4223 && !usingCross) {
  80.                 c.sendMessage("You have run out of arrows!");
  81.                 break;
  82.             }
  83.             if(c.getCombat().correctBowAndArrows() < c.playerEquipment[c.playerArrows] && Config.CORRECT_ARROWS && usingBow && !c.getCombat().usingCrystalBow() && c.playerEquipment[c.playerWeapon] != 9185) {
  84.                 c.sendMessage("You can't use "+c.getItems().getItemName(c.playerEquipment[c.playerArrows]).toLowerCase()+"s with a "+c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()+".");
  85.                 c.stopMovement();
  86.                 c.getCombat().resetPlayerAttack();
  87.                 return;
  88.             }
  89.             if (c.playerEquipment[c.playerWeapon] == 9185 && !c.getCombat().properBolts()) {
  90.                 c.sendMessage("You must use bolts with a crossbow.");
  91.                 c.stopMovement();
  92.                 c.getCombat().resetPlayerAttack();
  93.                 return;            
  94.             }
  95.            
  96.             if (c.followId > 0) {
  97.                 c.getPA().resetFollow();           
  98.             }
  99.         if (c.attackTimer <= 0) {
  100.             if (Slayer.isSlayerCreature(c.npcIndex)) {
  101.                 if (Slayer.checkSlayerRequirements(c.npcIndex)) {
  102.                     c.getCombat().attackNpc(c.npcIndex);
  103.                     c.attackTimer++;
  104.                 } else {
  105.                     c.sendMessage(Slayer.slayerRequirement(c.npcIndex));
  106.                     return;
  107.                 }
  108.             } else {
  109.                 c.getCombat().attackNpc(c.npcIndex);
  110.                 c.attackTimer++;
  111.             }
  112.         }
  113.            
  114.             break;
  115.            
  116.             /**
  117.             * Attack npc with magic
  118.             **/
  119.             case MAGE_NPC:
  120.             if (!c.mageAllowed) {
  121.                 c.mageAllowed = true;
  122.                 c.sendMessage("I can't reach that.");
  123.                 break;
  124.             }
  125.             //c.usingSpecial = false;
  126.             //c.getItems().updateSpecialBar();
  127.            
  128.             c.npcIndex = c.getInStream().readSignedWordBigEndianA();
  129.             int castingSpellId = c.getInStream().readSignedWordA();
  130.             c.usingMagic = false;
  131.            
  132.             if(Server.npcHandler.npcs[c.npcIndex] == null ){
  133.                 break;
  134.             }
  135.            
  136.             if(Server.npcHandler.npcs[c.npcIndex].MaxHP == 0 || Server.npcHandler.npcs[c.npcIndex].npcType == 944){
  137.                 c.sendMessage("You can't attack this npc.");
  138.                 break;
  139.             }
  140.            
  141.             for(int i = 0; i < c.MAGIC_SPELLS.length; i++){
  142.                 if(castingSpellId == c.MAGIC_SPELLS[i][0]) {
  143.                     c.spellId = i;
  144.                     c.usingMagic = true;
  145.                     break;
  146.                 }
  147.             }
  148.             if(castingSpellId == 1171) { // crumble undead
  149.                 for (int npc : Config.UNDEAD_NPCS) {
  150.                     if(Server.npcHandler.npcs[c.npcIndex].npcType != npc) {
  151.                      c.sendMessage("You can only attack undead monsters with this spell.");
  152.                      c.usingMagic = false;
  153.                      c.stopMovement();
  154.                      break;
  155.                     }
  156.                 }
  157.             }
  158.             /*if(!c.getCombat().checkMagicReqs(c.spellId)) {
  159.                 c.stopMovement();
  160.                 break;
  161.             }*/
  162.             if (c.autocasting)
  163.                 c.autocasting = false;
  164.            
  165.             if(c.usingMagic) {
  166.                 if(c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[c.npcIndex].getX(), Server.npcHandler.npcs[c.npcIndex].getY(), 6)) {
  167.                     c.stopMovement();
  168.                 }
  169.                 if (c.attackTimer <= 0) {
  170.                     if (Slayer.isSlayerCreature(c.npcIndex)) {
  171.                         if (Slayer.checkSlayerRequirements(c.npcIndex)) {
  172.                             c.getCombat().attackNpc(c.npcIndex);
  173.                             c.attackTimer++;
  174.                         } else {
  175.                             c.sendMessage(Slayer.slayerRequirement(c.npcIndex));
  176.                             return;
  177.                         }
  178.                     } else {
  179.                         c.getCombat().attackNpc(c.npcIndex);
  180.                         c.attackTimer++;
  181.                     }
  182.                 }
  183.             }
  184.             break;
  185.            
  186.             case FIRST_CLICK:
  187.                 c.npcClickIndex = c.inStream.readSignedWordBigEndian();
  188.                 c.npcType = Server.npcHandler.npcs[c.npcClickIndex].npcType;
  189.                 if(c.goodDistance(Server.npcHandler.npcs[c.npcClickIndex].getX(), Server.npcHandler.npcs[c.npcClickIndex].getY(), c.getX(), c.getY(), 1)) {
  190.                     c.turnPlayerTo(Server.npcHandler.npcs[c.npcClickIndex].getX(), Server.npcHandler.npcs[c.npcClickIndex].getY());
  191.                     Server.npcHandler.npcs[c.npcClickIndex].facePlayer(c.playerId);
  192.                     c.getActions().firstClickNpc(c.npcType);   
  193.                 } else {
  194.                     c.clickNpcType = 1;
  195.                 }
  196.                 break;
  197.            
  198.             case SECOND_CLICK:
  199.                 c.npcClickIndex = c.inStream.readUnsignedWordBigEndianA();
  200.                 c.npcType = Server.npcHandler.npcs[c.npcClickIndex].npcType;
  201.                 if(c.goodDistance(Server.npcHandler.npcs[c.npcClickIndex].getX(), Server.npcHandler.npcs[c.npcClickIndex].getY(), c.getX(), c.getY(), 1)) {
  202.                     c.turnPlayerTo(Server.npcHandler.npcs[c.npcClickIndex].getX(), Server.npcHandler.npcs[c.npcClickIndex].getY());
  203.                     Server.npcHandler.npcs[c.npcClickIndex].facePlayer(c.playerId);
  204. switch(c.npcType) {
  205.  
  206.  
  207. case 6807:
  208. case 6874:
  209. case 6868:
  210. case 6795:
  211. case 6816:
  212. case 6873:
  213. if(Server.npcHandler.npcs[c.npcClickIndex].npcId == c.summoningnpcid) {
  214. c.sendMessage("You are now storing items inside your npc");
  215.     c.Summoning().store();
  216. } else {
  217. c.sendMessage("This is not your npc");
  218. }
  219.  
  220.  
  221. break;
  222.  
  223.  
  224.  
  225.  
  226.  
  227. }
  228.                     c.getActions().secondClickNpc(c.npcType);
  229. //c.getActions().store(c.npcClickIndex, c.npcType);
  230.  
  231.                 } else {
  232.                     c.clickNpcType = 2;
  233.                 }
  234.                 break;
  235.            
  236.             case THIRD_CLICK:
  237.                 c.npcClickIndex = c.inStream.readSignedWord();
  238.                 c.npcType = Server.npcHandler.npcs[c.npcClickIndex].npcType;
  239.                 if(c.goodDistance(Server.npcHandler.npcs[c.npcClickIndex].getX(), Server.npcHandler.npcs[c.npcClickIndex].getY(), c.getX(), c.getY(), 1)) {
  240.                     c.turnPlayerTo(Server.npcHandler.npcs[c.npcClickIndex].getX(), Server.npcHandler.npcs[c.npcClickIndex].getY());
  241.                     Server.npcHandler.npcs[c.npcClickIndex].facePlayer(c.playerId);
  242.                     c.getActions().thirdClickNpc(c.npcType);   
  243.                 } else {
  244.                     c.clickNpcType = 3;
  245.                 }
  246.                 break;
  247.         }
  248.  
  249.     }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement