Code:
public boolean AttackPlayer(int NPCID) {
int Player = npcs[NPCID].StartKilling;
if (Server.PlayerManager.players[Player] == null) {
ResetAttackPlayer(NPCID);
return false;
} else if (Server.PlayerManager.players[Player].DirectionCount < 2) {
return false;
}
if (Server.PlayerManager.players[Player].playerLevel[3] <= 0) {
ResetAttackPlayer(NPCID);
}
Client plr = (Client) Server.PlayerManager.players[Player];
int hitDiff = 0;
int EnemyX = Server.PlayerManager.players[Player].absX;
int EnemyY = Server.PlayerManager.players[Player].absY;
npcs[NPCID].enemyX = EnemyX;
npcs[NPCID].enemyY = EnemyY;
int npX = npcs[NPCID].absX;
int npY = npcs[NPCID].absY;
int plX = Server.PlayerManager.players[Player].absX;
int plY = Server.PlayerManager.players[Player].absY;
int offX = (npX - plX) * -1;
int offY = (npY - plY) * -1;
int EnemyHP = Server.PlayerManager.players[Player].playerLevel[Server.PlayerManager.players[Player].playerHitpoints];
int EnemyMaxHP = getLevelForXP(Server.PlayerManager.players[Player].playerXP[Server.PlayerManager.players[Player].playerHitpoints]);
boolean RingOfLife = false;
hitDiff = Misc.random(npcs[NPCID].MaxHit);
if (Server.PlayerManager.players[Player].attacknpc == NPCID && !plr.IsDead) {
Server.PlayerManager.players[Player].faceNPC = NPCID;
Server.PlayerManager.players[Player].faceNPCupdate = true;
Server.PlayerManager.players[Player].attacknpc = NPCID;
Server.PlayerManager.players[Player].IsAttackingNPC = true;
}
if (GoodDistance(npcs[NPCID].absX, npcs[NPCID].absY, EnemyX, EnemyY, 30) && npcs[NPCID].npcType != 2745 && npcs[NPCID].npcType != 2456 && npcs[NPCID].npcType != 2743 && npcs[NPCID].npcType != 2744 && npcs[NPCID].npcType != 2740 && npcs[NPCID].npcType != 2739 && npcs[NPCID].npcType != 2881 && npcs[NPCID].npcType != 2882 && npcs[NPCID].npcType != 50) { //1645
if (!plr.IsDead) {
FollowPlayerCB(NPCID, Player);
}
}
if((GoodDistance(npcs[NPCID].absX, npcs[NPCID].absY, EnemyX, EnemyY, 15) == false) && npcs[NPCID].npcType == 1007) {
if (!plr.IsDead) {
npcs[NPCID].absX = 0;
npcs[NPCID].absY = 0;
npcs[NPCID].followPlayer = 0;
npcs[NPCID].followingPlayer = false;
}
}
if (npcs[NPCID].npcType == 2745 || npcs[NPCID].npcType == 2456 || npcs[NPCID].npcType == 2744 || npcs[NPCID].npcType == 2743 || npcs[NPCID].npcType == 2740 || npcs[NPCID].npcType == 2739 || npcs[NPCID].npcType == 2881 || npcs[NPCID].npcType == 2882 || npcs[NPCID].npcType == 50) { //1645
if (!plr.IsDead) {
FacePlayerCB(NPCID, Player);
}
}
if (GoodDistance(npcs[NPCID].absX, npcs[NPCID].absY, EnemyX, EnemyY, 1) || npcs[NPCID].npcType == 2745 || npcs[NPCID].npcType == 2456 || npcs[NPCID].npcType == 2744 || npcs[NPCID].npcType == 2743 || npcs[NPCID].npcType == 2740 || npcs[NPCID].npcType == 2739 || npcs[NPCID].npcType == 2881 || npcs[NPCID].npcType == 2882 || npcs[NPCID].npcType == 50) {
if (npcs[NPCID].actionTimer == 0) {
if (plr.playerLevel[3] <= 0) {
//ResetAttackPlayer(NPCID);
npcs[NPCID].followingPlayer = false;
npcs[NPCID].followPlayer = 0;
npcs[NPCID].IsUnderAttack = false;
npcs[NPCID].StartKilling = 0;
} else {
switch (npcs[NPCID].npcType) {
case 81:
case 397:
case 1766:
case 1767:
case 1768:
npcs[NPCID].animNumber = 0x03B;
break;
case 41:
npcs[NPCID].animNumber = 0x037;
break;
case 87:
npcs[NPCID].animNumber = 0x08A;
break;
case 21:
case 2256:
npcs[NPCID].animNumber = 451;
hitDiff = 4 + Misc.random(9);
break;
case 1958:
npcs[NPCID].animNumber = 422;
hitDiff = 4 + Misc.random(18);
break;
case 82:
npcs[NPCID].animNumber = 64;
hitDiff = 4 + Misc.random(6);
break;
case 32:
npcs[NPCID].animNumber = 412;
hitDiff = Misc.random(4);
break;
case 1977:
npcs[NPCID].animNumber = 451;
if (plr.playerEquipment[plr.playerHat] == 4164) {
if (!plr.protMelee) {
hitDiff = 5 + Misc.random(18);
} else {
hitDiff = 0;
}
} else {
hitDiff = 10 + Misc.random(16);
plr.Send("Fareed crushes you as you can't see through the smoke without a Facemask!");
}
plr.playerLevel[5] -= 2;
break;
case 1913:
if (Misc.random(4) < 3) {
npcs[NPCID].animNumber = 412;
if (!plr.protMelee) {
hitDiff = 3 + Misc.random(19);
} else {
hitDiff = 0;
}
plr.playerLevel[5] -= 2;
} else {
npcs[NPCID].animNumber = 1979;
plr.gfxLow(369);
plr.Entangle(24000);
if (!plr.protMage) {
hitDiff = 6 + Misc.random(20);
} else {
hitDiff = 0;
}
plr.Send("You are frozen!");
plr.playerLevel[5] -= 4;
}
break;
case 1914:
npcs[NPCID].animNumber = 412;
if (!plr.protMelee) {
hitDiff = 5 + Misc.random(18);
} else {
hitDiff = 0;
}
if (!plr.Poisoned) {
plr.PoisonPlayer();
}
plr.playerLevel[5] -= 2;
break;
case 1975:
npcs[NPCID].animNumber = 407;
if (!plr.protMelee) {
hitDiff = 3 + Misc.random(25);
} else {
hitDiff = 0;
}
plr.playerLevel[5] -= 3;
break;
case 1200:
npcs[NPCID].animNumber = 440;
if (!plr.protMelee) {
hitDiff = 4 + Misc.random(14);
} else {
hitDiff = 0;
}
break;
case 1264:
npcs[NPCID].animNumber = 811;
hitDiff = Misc.random(6);
plr.gfx(76);
break;
case 2746:
npcs[NPCID].animNumber = 2636;
npcs[NPCID].actionTimer = 9;
if (!plr.protMelee) {
hitDiff = Misc.random(8);
} else {
hitDiff = 0;
}
break;
case 78:
npcs[NPCID].animNumber = 30;
hitDiff = 4 + Misc.random(4);
break;
case 50:
npcs[NPCID].animNumber = 81;
plr.Projectile(npcs[NPCID].absY + 1, npcs[NPCID].absX + 1, offY, offX, 50, 90, 440, 60, 31, -npcs[NPCID].StartKilling - 1);
plr.AttackPlayers(4);
if (plr.playerEquipment[plr.playerShield] == 1540 || plr.playerEquipment[plr.playerShield] == 2774) {
hitDiff = Misc.random(17);
plr.Send("Your shield protects you from the dragon's fire!");
} else if (plr.playerEquipment[plr.playerShield] != 1540 || plr.playerEquipment[plr.playerShield] != 2774) {
hitDiff = 10 + Misc.random(32);
plr.Send("The dragon's fire burns you!");
}
break;
case 52:
npcs[NPCID].animNumber = 25;
hitDiff = 2 + Misc.random(6);
break;
case 18:
npcs[NPCID].animNumber = 451;
hitDiff = 4 + Misc.random(2);
break;
case 53:
npcs[NPCID].animNumber = 80;
break;
case 54:
npcs[NPCID].animNumber = 81;
plr.gfx(157);
if (plr.playerEquipment[plr.playerShield] == 1540 || plr.playerEquipment[plr.playerShield] == 2774) {
hitDiff = Misc.random(12);
plr.Send("Your shield protects you from the dragon's fire!");
} else if (plr.playerEquipment[plr.playerShield] != 1540 || plr.playerEquipment[plr.playerShield] != 2774) {
hitDiff = 10 + Misc.random(21);
plr.Send("The dragon's fire burns you!");
}
break;
case 55:
npcs[NPCID].animNumber = 81;
plr.gfx(157);
if (plr.playerEquipment[plr.playerShield] == 1540 || plr.playerEquipment[plr.playerShield] == 2774) {
hitDiff = Misc.random(8);
plr.Send("Your shield protects you from the dragon's fire!");
} else if (plr.playerEquipment[plr.playerShield] != 1540 || plr.playerEquipment[plr.playerShield] != 2774) {
hitDiff = 10 + Misc.random(16);
plr.Send("The dragon's fire burns you!");
}
break;
case 1158:
if (!plr.protMage) {
npcs[NPCID].animNumber = 1184;
hitDiff = 20 + Misc.random(12);
} else {
npcs[NPCID].animNumber = 1177;
hitDiff = 4 + Misc.random(20);
}
break;
case 1160:
npcs[NPCID].animNumber = 1177;
plr.Projectile(npcs[NPCID].absY + 2, npcs[NPCID].absX + 2, offY, offX, 50, 90, 280, 60, 31, -npcs[NPCID].StartKilling - 1);
plr.gfx(281);
plr.AttackPlayers(20);
if (!plr.protMage) {
hitDiff = Misc.random(31);
} else {
hitDiff = 0;
}
break;
case 2026:
npcs[NPCID].animNumber = 2067;
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendString(""+plr.playerLevel[5]+"", 4012);
if (!plr.protMelee) {
hitDiff = 20 + Misc.random(40);
} else {
hitDiff = 0;
}
break;
case 2027:
npcs[NPCID].animNumber = 2080;
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendString(""+plr.playerLevel[5]+"", 4012);
if (!plr.protMelee) {
hitDiff = 4 + Misc.random(15);
} else {
hitDiff = 0;
}
break;
case 2029:
npcs[NPCID].animNumber = 2068;
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendString(""+plr.playerLevel[5]+"", 4012);
if (!plr.protMelee) {
hitDiff = 4 + Misc.random(15);
} else {
hitDiff = 0;
}
break;
case 2030:
npcs[NPCID].animNumber = 2062;
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendString(""+plr.playerLevel[5]+"", 4012);
if (!plr.protMelee) {
hitDiff = 22 + Misc.random(4);
} else {
hitDiff = 0;
}
break;
case 2627:
npcs[NPCID].animNumber = 2621;
hitDiff = Misc.random(3);
break;
case 2628:
npcs[NPCID].animNumber = 2621;
hitDiff = Misc.random(3);
break;
case 2734:
npcs[NPCID].animNumber = 2621;
hitDiff = Misc.random(3);
plr.playerLevel[5] -= 2;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
break;
case 2735:
npcs[NPCID].animNumber = 2621;
hitDiff = Misc.random(3);
plr.playerLevel[5] -= hitDiff;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
break;
case 2729:
case 2730:
npcs[NPCID].animNumber = 2625;
hitDiff = Misc.random(6);
break;
case 2736:
case 2737:
npcs[NPCID].animNumber = 2625;
hitDiff = Misc.random(6);
plr.playerLevel[5] -= 2;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
break;
case 2738:
npcs[NPCID].animNumber = 2625;
hitDiff = Misc.random(3);
plr.playerLevel[5] -= 2;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
break;
case 2631:
case 2632:
npcs[NPCID].animNumber = 2628;
hitDiff = Misc.random(12);
plr.playerLevel[5] -= 2;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
break;
case 2739:
case 2740:
if (npcs[NPCID].npcType == 2740) {
npcs[NPCID].actionTimer = 9;
}
npcs[NPCID].animNumber = 2633;
plr.Projectile(npcs[NPCID].absY + 1, npcs[NPCID].absX + 1, offY, offX, 50, 100, 443, 60, 31, -npcs[NPCID].StartKilling - 1);
plr.playerLevel[5] -= 2;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
if (!plr.protRange) {
hitDiff = Misc.random(16);
} else {
hitDiff = 0;
}
break;
case 3592:
npcs[NPCID].animNumber = 2628;
hitDiff = Misc.random(12);
break;
case 2741:
case 2742:
npcs[NPCID].animNumber = 2637;
plr.playerLevel[5] -= 3;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
if (!plr.protMelee) {
hitDiff = Misc.random(28);
} else {
hitDiff = 0;
}
break;
case 117:
npcs[NPCID].animNumber = 999;
plr.playerLevel[5] -= 3;
plr.AttackPlayers(3);
if (!plr.protMelee) {
hitDiff = 10 + Misc.random(52);
} else {
hitDiff = 0;
}
break;
case 2456:
npcs[NPCID].animNumber = 1343;
plr.Projectile(npcs[NPCID].absY, npcs[NPCID].absX, offY, offX, 50, 90, 297, 60, 31, -npcs[NPCID].StartKilling - 1);
npcs[NPCID].actionTimer = 6 + Misc.random(5);
if (!plr.protRange) {
hitDiff = 2 + Misc.random(14);
} else {
hitDiff = 0;
}
break;
case 134:
npcs[NPCID].animNumber = 143;
plr.PoisonPlayer();
hitDiff = Misc.random(4);
break;
case 256:
npcs[NPCID].animNumber = 1833;
if (!plr.protMelee) {
hitDiff = Misc.random(10);
} else {
hitDiff = 0;
}
break;
case 1613: //nech
if (!plr.protMelee) {
hitDiff = Misc.random(20);
} else {
hitDiff = 0;
}
break;
case 1610://gargoyal
if (!plr.protMelee) {
hitDiff = Misc.random(14);
} else {
hitDiff = 0;
}
break;
case 1615:
npcs[NPCID].animNumber = 1537;
if (!plr.protMelee) {
hitDiff = Misc.random(14);
} else {
hitDiff = 0;
}
break;
case 2783:
npcs[NPCID].animNumber = 2733;
if (!plr.protMelee) {
hitDiff = 22 + Misc.random(10);
} else {
hitDiff = 0;
}
break;
case 1619:
npcs[NPCID].animNumber = 1552;
if (!plr.protMelee) {
hitDiff = Misc.random(14);
} else {
hitDiff = 0;
}
break;
case 1653:
npcs[NPCID].animNumber = 1592;
if (!plr.protMelee) {
hitDiff = Misc.random(4);
} else {
hitDiff = 0;
}
break;
case 1616:
npcs[NPCID].animNumber = 1546;
if (!plr.protMelee) {
hitDiff = Misc.random(10);
} else {
hitDiff = 0;
}
break;
case 1624:
npcs[NPCID].animNumber = 1557;
if (plr.playerEquipment[plr.playerHat] != 4164) {
hitDiff = Misc.random(34);
plr.Send("It Hits You When You Can't See, GET A FACEMASK!.");
if (plr.playerEquipment[plr.playerHat] == 4164) {
if (!plr.protMelee) {
hitDiff = Misc.random(10);
} else {
hitDiff = 0;
}
}
}
break;
case 1637:
npcs[NPCID].animNumber = 1586;
if (!plr.protMelee) {
hitDiff = Misc.random(9);
} else {
hitDiff = 0;
}
break;
case 2881:
npcs[NPCID].animNumber = 2855;
plr.AttackPlayers(2);
npcs[NPCID].actionTimer = 9;
if (!plr.protRange) {
hitDiff = Misc.random(25);
} else {
hitDiff = 0;
}
break;
case 2882:
npcs[NPCID].animNumber = 2854;
plr.Projectile(npcs[NPCID].absY, npcs[NPCID].absX, offY, offX, 50, 90, 162, 60, 31, -npcs[NPCID].StartKilling - 1);
npcs[NPCID].actionTimer = 11;
if (!plr.protMage) {
hitDiff = 25 + Misc.random(28);
} else {
hitDiff = 0;
}
break;
case 2883:
npcs[NPCID].animNumber = 2851;
npcs[NPCID].actionTimer = 13;
if (!plr.protMelee) {
hitDiff = Misc.random(25);
} else {
hitDiff = 0;
}
break;
case 1265:
npcs[NPCID].animNumber = 1312;
if (!plr.protMelee) {
hitDiff = Misc.random(3);
} else {
hitDiff = 0;
}
break;
case 86:
npcs[NPCID].animNumber = 138;
hitDiff = Misc.random(3);
break;
case 1007:
npcs[NPCID].animNumber = 811;
plr.gfx(78);
if (!plr.protMage) {
hitDiff = 5 + Misc.random(15);
} else {
hitDiff = 0;
}
break;
case 2743:
case 2744:
npcs[NPCID].animNumber = 2647;
plr.Projectile(npcs[NPCID].absY, npcs[NPCID].absX, offY, offX, 50, 90, 445, 60, 31, -npcs[NPCID].StartKilling - 1);
if (npcs[NPCID].npcType == 2743) {
npcs[NPCID].actionTimer = 9;
} else {
npcs[NPCID].actionTimer = 10;
}
plr.playerLevel[5] -= 5;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
plr.gfxLow(446);
if (!plr.protMage) {
hitDiff = 10 + Misc.random(37);
} else {
hitDiff = 0;
}
break;
case 2745:
if (plr.JadAttack == 0 || plr.JadAttack == 1) {
npcs[NPCID].animNumber = 2652;
plr.JadAttacking = true;
plr.JadGFX = true;
plr.JadRange = true;
plr.JadMage = false;
plr.JadDelay = System.currentTimeMillis();
}
if (plr.JadAttack == 2) {
plr.Projectile(npcs[NPCID].absY + 2, npcs[NPCID].absX + 2, offY, offX, 50, 140, 448, 120, 31, -npcs[NPCID].StartKilling - 1);
plr.Projectile(npcs[NPCID].absY + 2, npcs[NPCID].absX + 2, offY, offX, 50, 149, 449, 120, 31, -npcs[NPCID].StartKilling - 1);
plr.Projectile(npcs[NPCID].absY + 2, npcs[NPCID].absX + 2, offY, offX, 50, 158, 450, 120, 31, -npcs[NPCID].StartKilling - 1);
npcs[NPCID].animNumber = 2656;
plr.JadAttacking = true;
plr.JadMage = true;
plr.JadRange = false;
plr.JadDelay = System.currentTimeMillis();
}
npcs[NPCID].actionTimer = 10;
break;
case 110:
npcs[NPCID].animNumber = 128;
hitDiff = Misc.random(6);
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
break;
case 49:
npcs[NPCID].animNumber = 158;
if (!plr.protMelee) {
hitDiff = Misc.random(23);
} else {
hitDiff = 0;
}
break;
case 1770:
case 1771:
case 1772:
case 1773:
case 1774:
npcs[NPCID].animNumber = 309;
hitDiff = Misc.random(2);
break;
case 2025:
npcs[NPCID].animNumber = 729;
plr.Projectile(npcs[NPCID].absY, npcs[NPCID].absX, offY, offX, 50, 90, 156, 43, 31, -npcs[NPCID].StartKilling - 1);
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
if (!plr.protMage) {
hitDiff = 5 + Misc.random(15);
} else {
hitDiff = 0;
}
break;
case 1643:
plr.Projectile(npcs[NPCID].absY, npcs[NPCID].absX, offY, offX, 50, 90, 166, 43, 31, -npcs[NPCID].StartKilling - 1);
npcs[NPCID].animNumber = 729;
if (!plr.protMage) {
hitDiff = 5 + Misc.random(12);
} else {
hitDiff = 0;
}
break;
case 2028:
npcs[NPCID].animNumber = 2075;
plr.playerLevel[5] -= 4;
plr.sendString(" Prayer: "+plr.playerLevel[5]+"/"+plr.getLevelForXP(plr.playerXP[5])+"", 687);
plr.sendFrame126(""+plr.playerLevel[5]+"", 4012);
if (!plr.protRange) {
hitDiff = Misc.random(25);
} else {
hitDiff = 0;
}
break;
case 64:
npcs[NPCID].animNumber = 0x326;
break;
case 3200:
npcs[NPCID].animNumber = 3146;
hitDiff = 20 + Misc.random(10);
break;
case 752:
npcs[NPCID].animNumber = 0x326;
break;
default:
npcs[NPCID].animNumber = 0x326;
break;
}
if (npcs[NPCID].npcType != 2745) {
plr.anim(plr.BlockAnim(plr.playerEquipment[plr.playerWeapon]));
}
npcs[NPCID].animUpdateRequired = true;
npcs[NPCID].updateRequired = true;
if ((EnemyHP - hitDiff) < 0) {
hitDiff = EnemyHP;
}
Server.PlayerManager.players[Player].hitDiff = hitDiff;
Server.PlayerManager.players[Player].updateRequired = true;
if (npcs[NPCID].npcType != 2745) {
Server.PlayerManager.players[Player].hitUpdateRequired = true;
}
Server.PlayerManager.players[Player].appearanceUpdateRequired = true;
if (npcs[NPCID].npcType != 2743 && npcs[NPCID].npcType != 2744 && npcs[NPCID].npcType != 2740 && npcs[NPCID].npcType != 2456 && npcs[NPCID].npcType != 2745 && npcs[NPCID].npcType != 2881 && npcs[NPCID].npcType != 2882 && npcs[NPCID].npcType != 2883) {
npcs[NPCID].actionTimer = 7;
}
}
return true;
}
}
return false;
}