Code:
public boolean AttackNPC(int NPCID) {
if (server.npcHandler.npcs[npcs[NPCID].attacknpc] != null) {
int EnemyX = server.npcHandler.npcs[npcs[NPCID].attacknpc].absX;
int EnemyY = server.npcHandler.npcs[npcs[NPCID].attacknpc].absY;
int EnemyHP = server.npcHandler.npcs[npcs[NPCID].attacknpc].HP;
int hitDiff = 0;
hitDiff = misc.random(npcs[NPCID].MaxHit);
if (GoodDistance(EnemyX, EnemyY, npcs[NPCID].absX,
npcs[NPCID].absY, 1) == true) {
if (server.npcHandler.npcs[npcs[NPCID].attacknpc].IsDead == true) {
ResetAttackNPC(NPCID);
npcs[NPCID].animNumber = 2103;
npcs[NPCID].animUpdateRequired = true;
npcs[NPCID].updateRequired = true;
} else {
if ((EnemyHP - hitDiff) < 0) {
hitDiff = EnemyHP;
}
if (npcs[NPCID].npcType == 9)
npcs[NPCID].animNumber = 386;
if (npcs[NPCID].npcType == 3200)
npcs[NPCID].animNumber = 0x326;
if ((npcs[NPCID].npcType == 1605)
|| (npcs[NPCID].npcType == 1472)) {
npcs[NPCID].animNumber = 386;
}
npcs[NPCID].animUpdateRequired = true;
npcs[NPCID].updateRequired = true;
server.npcHandler.npcs[npcs[NPCID].attacknpc].hitDiff = hitDiff;
server.npcHandler.npcs[npcs[NPCID].attacknpc].attacknpc = NPCID;
server.npcHandler.npcs[npcs[NPCID].attacknpc].updateRequired = true;
server.npcHandler.npcs[npcs[NPCID].attacknpc].hitUpdateRequired = true;
npcs[NPCID].actionTimer = 7;
return true;
}
}
}
return false;
}