Code:
public void multiSpellOnNPC(int originalNpc) {
c.PlayerAttType = 2;
if (!multis() || !c.inMulti())
return;
NPC o2 = (NPC) NPCHandler.npcs[originalNpc];
int origX = o2.absX;
int origY = o2.absY;
for (int indx = 0; indx < NPCHandler.maxNPCs; indx++) {
if (NPCHandler.npcs[indx] != null) {
NPC o = (NPC) NPCHandler.npcs[indx];
if (!(o.absX >= origX - 2 && o.absX <= origX + 2
&& o.absY >= origY - 2 && o.absY <= origY + 2)
|| !o.inMulti())
continue;
if (!checkNpcReq(indx) || indx == originalNpc)
continue;
int bonusAttack = getBonusAttack(indx);
if (Misc.random(NPCHandler.npcs[indx].defence) > 10
+ Misc.random(mageAtk()) + bonusAttack) {
if (getEndGfxHeight() == 100) { // end GFX
o.gfx100(c.MAGIC_SPELLS[c.oldSpellId][5]);
} else {
o.gfx0(c.MAGIC_SPELLS[c.oldSpellId][5]);
}
int damage = Misc.random(c.MAGIC_SPELLS[c.oldSpellId][6]);
c.getPA().addSkillXP(
(c.MAGIC_SPELLS[c.oldSpellId][7] + damage
* Config.MAGIC_EXP_RATE), 6);
c.getPA().addSkillXP(
(c.MAGIC_SPELLS[c.oldSpellId][7] + damage
* Config.MAGIC_EXP_RATE / 3), 3);
spellEffects(damage, indx);
if (damage > -1) {
NPCHandler.npcs[indx].hitDiff = damage;
NPCHandler.npcs[indx].HP -= damage;
NPCHandler.npcs[indx].hitUpdateRequired = true;
c.totalDamageDealt += damage;
}
} else {
int damage = 0;
o.gfx100(85);
NPCHandler.npcs[indx].hitDiff = damage;
NPCHandler.npcs[indx].hitUpdateRequired = true;
c.totalDamageDealt += damage;
}
}
}
}
public void multiSpellOnPlayer(int originalPlayer) {
if (!multis() || !c.inMulti())
return;
c.PlayerAttType = 2;
Client o2 = (Client) PlayerHandler.players[originalPlayer];
int origX = o2.absX;
int origY = o2.absY;
for (int indx = 0; indx < Config.MAX_PLAYERS; indx++) {
if (PlayerHandler.players[indx] != null) {
Client o = (Client) PlayerHandler.players[indx];
if (!(o.absX >= origX - 2 && o.absX <= origX + 2
&& o.absY >= origY - 2 && o.absY <= origY + 2)
|| !o.inMulti())
continue;
if (!checkPlayerReq(indx) || indx == originalPlayer
|| indx == c.playerId)
continue;
if (Misc.random(o.getCombat().mageDef()) > Misc
.random(mageAtk())) {
if (getEndGfxHeight() == 100) { // end GFX
o.gfx100(c.MAGIC_SPELLS[c.oldSpellId][5]);
} else {
o.gfx0(c.MAGIC_SPELLS[c.oldSpellId][5]);
}
int damage = Misc.random(c.MAGIC_SPELLS[c.oldSpellId][6]);
c.getPA().addSkillXP(
(c.MAGIC_SPELLS[c.oldSpellId][7] + damage
* Config.MAGIC_EXP_RATE), 6);
c.getPA().addSkillXP(
(c.MAGIC_SPELLS[c.oldSpellId][7] + damage
* Config.MAGIC_EXP_RATE / 3), 3);
spellEffects(damage, indx);
hitPlayer(indx, damage);
} else {
o.gfx100(85);
hitPlayer(indx, 0);
}
}
}
}
public void spellEffects(int damage, int indx) {
switch (c.MAGIC_SPELLS[c.oldSpellId][0]) {
case 12901:
case 12919:
case 12911:
case 12929:
int heal = Misc.random(damage / 2);
if (c.playerLevel[3] + heal >= c.getPA().getLevelForXP(
c.playerXP[3])) {
c.playerLevel[3] = c.getPA().getLevelForXP(c.playerXP[3]);
} else {
c.playerLevel[3] += heal;
}
c.getPA().refreshSkill(3);
break;
}
int freezeDelay = getFreezeTime();
if (c.playerIndex > 0) {
if(freezeDelay > 0 && PlayerHandler.players[indx].freezeTimer == 0)
PlayerHandler.players[indx].freezeTimer = freezeDelay;
} else if (c.npcIndex > 0) {
if(freezeDelay > 0 && NPCHandler.npcs[indx].freezeTimer == 0)
NPCHandler.npcs[indx].freezeTimer = freezeDelay;
}
}
public void hitPlayer(int damage, int i) {
Client o = (Client) PlayerHandler.players[i];
if(o == null)
return;
o.setHitDiff(damage);
o.setHitUpdateRequired(true);
o.dealDamage(damage);
o.updateRequired = true;
o.underAttackBy = c.playerId;
o.logoutDelay = System.currentTimeMillis();
o.singleCombatDelay = System.currentTimeMillis();
}
public boolean checkNpcReq(int i) {
if (NPCHandler.npcs[i].isDead || NPCHandler.npcs[i].MaxHP <= 0) {
c.usingMagic = false;
c.faceUpdate(0);
c.npcIndex = 0;
return false;
}
if(c.respawnTimer > 0) {
c.npcIndex = 0;
return false;
}
if (NPCHandler.npcs[i].underAttackBy > 0 && NPCHandler.npcs[i].underAttackBy != c.playerId && !NPCHandler.npcs[i].inMulti() && c.inGodwars() == false) {
c.npcIndex = 0;
c.sendMessage("This monster is already in combat.");
return false;
}
if ((c.underAttackBy > 0 || c.underAttackBy2 > 0) && c.underAttackBy2 != i && !c.inMulti() && c.inGodwars() == false) {
resetPlayerAttack();
c.sendMessage("I am already under attack.");
return false;
}
if (!goodSlayer(i)) {
resetPlayerAttack();
return false;
}
if (NPCHandler.npcs[i].npcType == 6258) {
if (92 > c.getLevelForXP(c.playerXP[c.playerPrayer])) {
c.sendMessage("You need a prayer level of 92 to harm this NPC.");
resetPlayerAttack();
return false;
}
}
if (NPCHandler.npcs[i].spawnedBy != c.playerId && NPCHandler.npcs[i].spawnedBy > 0) {
resetPlayerAttack();
c.sendMessage("This monster was not spawned for you.");
return false;
}
return true;
}
public boolean checkPlayerReq(int i) {
if (PlayerHandler.players[i].isDead) {
resetPlayerAttack();
return false;
}
if(c.respawnTimer > 0 || PlayerHandler.players[i].respawnTimer > 0) {
resetPlayerAttack();
return false;
}
/*if (c.teleTimer > 0 || Server.playerHandler.players[i].teleTimer > 0) {
resetPlayerAttack();
return;
}*/
if(!c.getCombat().checkReqs()) {
return false;
}
if(c.playerRights == 1 && c.playerRights ==2){
c.sendMessage("Staff are not allowed to pk");
c.sendMessage("Your account has been blacklisted for an owner to see");
return false;
}
if (c.getPA().getWearingAmount() < 4 && c.duelStatus < 1 && !c.inWeaponGame()) {
c.sendMessage("You must be wearing at least 4 items to attack someone.");
resetPlayerAttack();
return false;
}
boolean sameSpot = c.absX == PlayerHandler.players[i].getX() && c.absY == PlayerHandler.players[i].getY();
if(!c.goodDistance(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), c.getX(), c.getY(), 25) && !sameSpot) {
resetPlayerAttack();
return false;
}
if(PlayerHandler.players[i].respawnTimer > 0) {
PlayerHandler.players[i].playerIndex = 0;
resetPlayerAttack();
return false;
}
if (PlayerHandler.players[i].heightLevel != c.heightLevel) {
resetPlayerAttack();
return false;
}
return true;
}
Code:
...
if(getEndGfxHeight() == 100 && !magicFailed){ // end GFX
NPCHandler.npcs[i].gfx100(c.MAGIC_SPELLS[c.oldSpellId][5]);
} else if (!magicFailed){
NPCHandler.npcs[i].gfx0(c.MAGIC_SPELLS[c.oldSpellId][5]);
}
multiSpellOnNPC(i);
...
Code:
...
if(getEndGfxHeight() == 100 && !c.magicFailed){ // end GFX
PlayerHandler.players[i].gfx100(c.MAGIC_SPELLS[c.oldSpellId][5]);
} else if (!c.magicFailed){
PlayerHandler.players[i].gfx0(c.MAGIC_SPELLS[c.oldSpellId][5]);
} else if(c.magicFailed) {
PlayerHandler.players[i].gfx100(85);
}
multiSpellOnPlayer(i);
...