Originally Posted by
Paul Griffiths
npchandler
I know that.. I'm not that dumb
Originally Posted by
Core
applydamage in npchandler.
Don't got that method.. but i got this
Code:
public boolean AttackPlayer(int NPCID) {
if (npcs[NPCID].getKiller() == 0) {
return false;
}
int Player = npcs[NPCID].getKiller();
if (server.playerHandler.players[Player] == null) {
ResetAttackPlayer(NPCID);
return false;
} else if (server.playerHandler.players[Player].DirectionCount < 2) {
return false;
}
client plr = (client) server.playerHandler.players[Player];
int EnemyX = server.playerHandler.players[Player].absX;
int EnemyY = server.playerHandler.players[Player].absY;
npcs[NPCID].enemyX = EnemyX;
npcs[NPCID].enemyY = EnemyY;
if ((Math.abs(npcs[NPCID].absX - EnemyX) > 20) || (Math.abs(npcs[NPCID].absY - EnemyY) > 20)) {
ResetAttackPlayer(NPCID);
}
int EnemyHP = server.playerHandler.players[Player].playerLevel[server.playerHandler.players[Player].playerHitpoints];
int EnemyMaxHP = getLevelForXP(server.playerHandler.players[Player].playerXP[server.playerHandler.players[Player].playerHitpoints]);
if (server.playerHandler.players[Player].attacknpc == NPCID) {
server.playerHandler.players[Player].faceNPC = NPCID; // *****cheez: sets npc index for player to view
server.playerHandler.players[Player].faceNPCupdate = true; // *****cheez: updates face npc index so player faces npcs
server.playerHandler.players[Player].attacknpc = NPCID;
server.playerHandler.players[Player].IsAttackingNPC = true;
}
int hitDiff = 0;
hitDiff = misc.random(npcs[NPCID].MaxHit);
client player = (client) server.playerHandler.players[Player];
if (player != null) {
int def = player.playerBonus[6];
int rand = misc.random(def);
if (NPCID == 1961) {
combatLevel[NPCID] = 105;
}
int rand_npc = misc.random(combatLevel[NPCID] * 5);
if (npcs[NPCID].npcType == 1472) {
rand_npc = misc.random(800);
}
if (npcs[NPCID].npcType == 80) {
rand_npc = misc.random(500);
}
if (npcs[NPCID].npcType == 1913) {
rand_npc = misc.random(1500);
}
if (npcs[NPCID].npcType == 936) {
rand_npc = misc.random(100);
}
if (npcs[NPCID].npcType == 110) {
rand_npc = misc.random(20);
}
int blocked = (int) (def / 10);
if (rand_npc > rand) {
hitDiff = misc.random(npcs[NPCID].MaxHit) - blocked;
if (hitDiff < 0) {
hitDiff = 0;
}
} else {
hitDiff = 0;
}
}
if ((npcs[NPCID].npcType != 3200) && (npcs[NPCID].npcType != 1645)) {
FollowPlayerCB(NPCID, Player);
}
if ((GoodDistance(npcs[NPCID].absX, npcs[NPCID].absY, EnemyX, EnemyY, 1) == true) || (npcs[NPCID].npcType == 3200) || (npcs[NPCID].npcType == 2745) || (npcs[NPCID].npcType == 425)) {
if (npcs[NPCID].actionTimer == 0) {
if (false && (EnemyHP <= (int) ((double) ((double) EnemyMaxHP / 10.0) + 0.5))) { //doublecheckthis
} else {
if (server.playerHandler.players[Player].deathStage > 0) {
ResetAttackPlayer(NPCID);
} else {
if (server.NpcAnimHandler.atk[npcs[NPCID].npcType] != 0) {
npcs[NPCID].animNumber = server.NpcAnimHandler.atk[npcs[NPCID].npcType];
} else {
npcs[NPCID].animNumber = 0x326;
}
npcs[NPCID].animUpdateRequired = true;
npcs[NPCID].updateRequired = true;
if ((EnemyHP - hitDiff) < 0) {
hitDiff = EnemyHP;
ResetAttackPlayer(NPCID);
}
int id = playerEquipment[playerShield];
//client ppl = (client) server.playerHandler.players[Player];
if (hitDiff >= 0) {
server.playerHandler.players[Player].startAnimation(403);
}
int rannn = misc.random(2);
if (rannn == 1) {
if (server.playerHandler.players[Player].protMelee) {
hitDiff = 0;
}
server.playerHandler.players[Player].hitDiff = hitDiff;
server.playerHandler.players[Player].dealDamage(hitDiff);
server.playerHandler.players[Player].updateRequired = true;
server.playerHandler.players[Player].hitUpdateRequired = true;
server.playerHandler.players[Player].appearanceUpdateRequired = true;
npcs[NPCID].actionTimer = 5;
} else if (rannn == 2) {
if (server.playerHandler.players[Player].protMelee) {
hitDiff = 0;
}
server.playerHandler.players[Player].hitDiff2 = hitDiff;
server.playerHandler.players[Player].dealDamage(hitDiff);
server.playerHandler.players[Player].updateRequired = true;
server.playerHandler.players[Player].hitUpdateRequired2 = true;
server.playerHandler.players[Player].appearanceUpdateRequired = true;
npcs[NPCID].actionTimer = 5;
}
}
}
return true;
}
}
return false;
}
I have tried putting the method in there different places but it just doesn't work. The base is Devolution 2.4