Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Attack Npcs
- */
- public void attackNpc(int i) {
- System.out.println("0");
- if (NPCHandler.npcs[i] != null) {
- if (NPCHandler.npcs[i].isDead || NPCHandler.npcs[i].MaxHP <= 0) {
- c.usingMagic = false;
- c.faceUpdate(0);
- c.npcIndex = 0;
- System.out.println("1");
- return;
- }
- if (KQnpc(i) && !c.fullVerac() || c.usingMagic) {
- resetPlayerAttack();
- c.sendMessage("Your attacks will have no effect on the Queen.");
- System.out.println("1");
- return;
- }
- if(c.respawnTimer > 0) {
- c.npcIndex = 0;
- System.out.println("2");
- return;
- }
- if (Server.npcHandler.npcs[i].underAttackBy > 0 && Server.npcHandler.npcs[i].underAttackBy != c.playerId && !Server.npcHandler.npcs[i].inMulti()) {
- c.npcIndex = 0;
- c.sendMessage("This monster is already in combat.");
- System.out.println("3");
- return;
- }
- if ((c.underAttackBy > 0 || c.underAttackBy2 > 0) && c.underAttackBy2 != i && !c.inMulti()) {
- resetPlayerAttack();
- c.sendMessage("I am already under attack.");
- System.out.println("4");
- return;
- }
- if (!goodSlayer(i)) {
- resetPlayerAttack();
- System.out.println("5");
- return;
- }
- if (NPCHandler.npcs[i].spawnedBy != c.playerId && Server.npcHandler.npcs[i].spawnedBy > 0) {
- resetPlayerAttack();
- c.sendMessage("This monster was not spawned for you.");
- System.out.println("6");
- return;
- }
- c.followId2 = i;
- c.followId = 0;
- if(c.attackTimer <= 0) {
- boolean usingBow = false;
- boolean usingArrows = false;
- boolean usingOtherRangeWeapons = false;
- boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185;
- c.bonusAttack = 0;
- c.rangeItemUsed = 0;
- c.projectileStage = 0;
- if (c.autocasting) {
- c.spellId = c.autocastId;
- c.usingMagic = true;
- }
- if(c.spellId > 0) {
- c.usingMagic = true;
- }
- c.attackTimer = getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
- c.specAccuracy = 1.0;
- c.specDamage = 1.0;
- if(!c.usingMagic) {
- for (int bowId : c.BOWS) {
- if(c.playerEquipment[c.playerWeapon] == bowId) {
- usingBow = true;
- for (int arrowId : c.ARROWS) {
- if(c.playerEquipment[c.playerArrows] == arrowId) {
- usingArrows = true;
- }
- }
- }
- }
- for (int otherRangeId : c.OTHER_RANGE_WEAPONS) {
- if(c.playerEquipment[c.playerWeapon] == otherRangeId) {
- usingOtherRangeWeapons = true;
- }
- }
- }
- if (armaNpc(i) && !usingCross && !usingBow && !c.usingMagic && !usingCrystalBow() && !usingOtherRangeWeapons) {
- resetPlayerAttack();
- System.out.println("7");
- return;
- }
- if((!c.goodDistance(c.getX(), c.getY(), NPCHandler.npcs[i].getX(), NPCHandler.npcs[i].getY(), 2) && (usingHally() && !usingOtherRangeWeapons && !usingBow && !c.usingMagic)) ||(!c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[i].getX(), Server.npcHandler.npcs[i].getY(), 4) && (usingOtherRangeWeapons && !usingBow && !c.usingMagic)) || (!c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[i].getX(), Server.npcHandler.npcs[i].getY(), 1) && (!usingOtherRangeWeapons && !usingHally() && !usingBow && !c.usingMagic)) || ((!c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[i].getX(), Server.npcHandler.npcs[i].getY(), 8) && (usingBow || c.usingMagic)))) {
- c.attackTimer = 2;
- System.out.println("8");
- return;
- }
- if(!usingCross && !usingArrows && usingBow && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)) {
- c.sendMessage("You have run out of arrows!");
- c.stopMovement();
- c.freezeTimer = 1;
- c.npcIndex = 0;
- System.out.println("9");
- return;
- }
- if(correctBowAndArrows() < c.playerEquipment[c.playerArrows] && Config.CORRECT_ARROWS && usingBow && !usingCrystalBow() && c.playerEquipment[c.playerWeapon] != 9185) {
- 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()+".");
- c.stopMovement();
- c.freezeTimer = 1;
- c.npcIndex = 0;
- System.out.println("10");
- return;
- }
- if (c.playerEquipment[c.playerWeapon] == 9185 && !properBolts()) {
- c.sendMessage("You must use bolts with a crossbow.");
- c.stopMovement();
- c.freezeTimer = 1;
- resetPlayerAttack();
- System.out.println("11");
- return;
- }
- if(usingBow || c.usingMagic || usingOtherRangeWeapons || (c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[i].getX(), Server.npcHandler.npcs[i].getY(), 2) && usingHally())) {
- c.stopMovement();
- }
- if(!checkMagicReqs(c.spellId)) {
- c.stopMovement();
- c.npcIndex = 0;
- System.out.println("12");
- return;
- }
- c.faceUpdate(i);
- //c.specAccuracy = 1.0;
- //c.specDamage = 1.0;
- Server.npcHandler.npcs[i].underAttackBy = c.playerId;
- Server.npcHandler.npcs[i].lastDamageTaken = System.currentTimeMillis();
- if(c.usingSpecial && !c.usingMagic) {
- if(checkSpecAmount(c.playerEquipment[c.playerWeapon])){
- c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
- c.lastArrowUsed = c.playerEquipment[c.playerArrows];
- activateSpecial(c.playerEquipment[c.playerWeapon], i);
- System.out.println("13");
- return;
- } else {
- c.sendMessage("You don't have the required special energy to use this attack.");
- c.usingSpecial = false;
- c.getItems().updateSpecialBar();
- c.npcIndex = 0;
- System.out.println("14");
- return;
- }
- }
- if(usingBow || c.usingMagic || usingOtherRangeWeapons) {
- c.mageFollow = true;
- } else {
- c.mageFollow = false;
- }
- c.specMaxHitIncrease = 0;
- if(!c.usingMagic) {
- c.startAnimation(getWepAnim(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()));
- } else {
- c.startAnimation(c.MAGIC_SPELLS[c.spellId][2]);
- }
- c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
- c.lastArrowUsed = c.playerEquipment[c.playerArrows];
- if(!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee hit delay
- c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
- c.projectileStage = 0;
- c.oldNpcIndex = i;
- }
- if(usingBow && !usingOtherRangeWeapons && !c.usingMagic || usingCross) { // range hit delay
- if (usingCross)
- c.usingBow = true;
- if (c.fightMode == 2)
- c.attackTimer--;
- c.lastArrowUsed = c.playerEquipment[c.playerArrows];
- c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
- c.gfx100(getRangeStartGFX());
- c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
- c.projectileStage = 1;
- c.oldNpcIndex = i;
- if(c.playerEquipment[c.playerWeapon] >= 4212 && c.playerEquipment[c.playerWeapon] <= 4223) {
- c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
- c.crystalBowArrowCount++;
- c.lastArrowUsed = 0;
- } else {
- c.rangeItemUsed = c.playerEquipment[c.playerArrows];
- c.getItems().deleteArrow();
- }
- fireProjectileNpc();
- }
- if(usingBow && usingCross && c.usingMagic && usingOtherRangeWeapons) {
- c.getPA().followNpc();
- c.stopMovement();
- } else {
- c.followId = 0;
- c.followId2 = i;
- }
- if(usingOtherRangeWeapons && !c.usingMagic && !usingBow) { // knives, darts, etc hit delay
- c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
- c.getItems().deleteEquipment();
- c.gfx100(getRangeStartGFX());
- c.lastArrowUsed = 0;
- c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
- c.projectileStage = 1;
- c.oldNpcIndex = i;
- if (c.fightMode == 2)
- c.attackTimer--;
- fireProjectileNpc();
- }
- if(c.usingMagic) { // magic hit delay
- int pX = c.getX();
- int pY = c.getY();
- int nX = Server.npcHandler.npcs[i].getX();
- int nY = Server.npcHandler.npcs[i].getY();
- int offX = (pY - nY)* -1;
- int offY = (pX - nX)* -1;
- c.castingMagic = true;
- c.projectileStage = 2;
- if(c.MAGIC_SPELLS[c.spellId][3] > 0) {
- if(getStartGfxHeight() == 100) {
- c.gfx100(c.MAGIC_SPELLS[c.spellId][3]);
- } else {
- c.gfx0(c.MAGIC_SPELLS[c.spellId][3]);
- }
- }
- if(c.MAGIC_SPELLS[c.spellId][4] > 0) {
- c.getPA().createPlayersProjectile(pX, pY, offX, offY, 50, 78, c.MAGIC_SPELLS[c.spellId][4], getStartHeight(), getEndHeight(), i + 1, 50);
- }
- c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
- c.oldNpcIndex = i;
- c.oldSpellId = c.spellId;
- c.spellId = 0;
- if (!c.autocasting)
- c.npcIndex = 0;
- }
- if(usingBow && Config.CRYSTAL_BOW_DEGRADES) { // crystal bow degrading
- if(c.playerEquipment[c.playerWeapon] == 4212) { // new crystal bow becomes full bow on the first shot
- c.getItems().wearItem(4214, 1, 3);
- }
- if(c.crystalBowArrowCount >= 250){
- switch(c.playerEquipment[c.playerWeapon]) {
- case 4223: // 1/10 bow
- c.getItems().wearItem(-1, 1, 3);
- c.sendMessage("Your crystal bow has fully degraded.");
- if(!c.getItems().addItem(4207, 1)) {
- Server.itemHandler.createGroundItem(c, 4207, c.getX(), c.getY(), 1, c.getId());
- }
- c.crystalBowArrowCount = 0;
- break;
- default:
- c.getItems().wearItem(++c.playerEquipment[c.playerWeapon], 1, 3);
- c.sendMessage("Your crystal bow degrades.");
- c.crystalBowArrowCount = 0;
- break;
- }
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment