case 5: // Weaken
case 9: // Curse
if (affectedMob instanceof Npc) {
Npc np = (Npc) affectedMob;
if (spellID == 1) {
if (np.confused) {
owner.getActionSender()
.sendMessage(
"Your oponent is already confused");
return;
}
}
if (spellID == 5) {
if (np.weakend) {
owner.getActionSender()
.sendMessage(
"Your oponent is already weakend");
return;
}
}
if (spellID == 9) {
if (np.cursed) {
owner.getActionSender()
.sendMessage(
"Your oponent is already cursed");
return;
}
}
} /*
* else { player.getActionSender().sendMessage(
* "Currently Unavaliable"); return; }
*/
if (affectedMob instanceof Player
&& !owner.isDueling()) {
Player affectedPlayer = (Player) affectedMob;
owner.setSkulledOn(affectedPlayer);
}
int stat = -1;
if (spellID == 1)
stat = 0;
else if (spellID == 5)
stat = 2;
else if (spellID == 9)
stat = 1;
int statLv = -1;
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
statLv = affectedPlayer.getCurStat(stat);
} else if (affectedMob instanceof Npc) {
Npc n = (Npc) affectedMob;
if (stat == 0)
statLv = n.getAttack();
else if (stat == 1)
statLv = n.getDefense();
else if (stat == 2)
statLv = n.getStrength();
}
if (statLv == -1 || stat == -1)
return;
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
if (affectedPlayer.getCurStat(stat) < affectedPlayer
.getMaxStat(stat)
- (affectedPlayer.getMaxStat(stat) / 20)) {
owner.getActionSender().sendMessage(
"Your opponent is already stunned");
return;
} else {
affectedPlayer.setCurStat(
stat,
affectedPlayer.getCurStat(stat)
- (affectedPlayer
.getMaxStat(stat) / 20));
affectedPlayer.getActionSender()
.sendStats();
affectedPlayer
.getActionSender()
.sendMessage(
owner.getUsername()
+ " has stunned you");
}
} else if (affectedMob instanceof Npc) {
Npc n = (Npc) affectedMob;
if (spellID == 1)
n.confused = true;
else if (spellID == 5)
n.weakend = true;
else if (spellID == 9)
n.cursed = true;
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
Projectile projectilez = new Projectile(owner,
affectedMob, 1);
ArrayList<Player> playersToInformm = new ArrayList<Player>();
playersToInformm.addAll(owner.getViewArea()
.getPlayersInView());
playersToInformm.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInformm) {
p.informOfProjectile(projectilez);
p.informOfModifiedHits(affectedMob);
}
finalizeSpell(owner, spell);
owner.getActionSender().sendInventory();
owner.getActionSender().sendStat(6);
return;
case 19: // Crumble undead
if (affectedMob instanceof Player) {
owner.getActionSender()
.sendMessage(
"You can not use this spell on a Player");
return;
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
Npc n = (Npc) affectedMob;
int damaga = Formulae.Rand(1, 5);
boolean foundd = false;
if (n.undead) {
foundd = true;
damaga = Formulae
.Rand(3,
Constants.GameServer.CRUMBLE_UNDEAD_MAX);
}
if (!foundd) {
owner.getActionSender()
.sendMessage(
"You must use this spell on undead monsters only");
return;
}
if (Formulae.Rand(0, 8) == 2)
damaga = 0;
Projectile projectilee = new Projectile(owner,
affectedMob, 1);
affectedMob.setLastDamage(damaga);
int newp = affectedMob.getHits() - damaga;
affectedMob.setHits(newp);
ArrayList<Player> playersToInforms = new ArrayList<Player>();
playersToInforms.addAll(owner.getViewArea()
.getPlayersInView());
playersToInforms.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInforms) {
p.informOfProjectile(projectilee);
p.informOfModifiedHits(affectedMob);
}
if (newp <= 0) {
affectedMob.killedBy(owner, owner.isDueling());
if (owner instanceof Player
&& affectedMob instanceof Npc) {
((Npc) affectedMob).getSyndicate()
.distributeExp((Npc) affectedMob);
}
}
finalizeSpell(owner, spell);
owner.getActionSender().sendInventory();
owner.getActionSender().sendStat(6);
return;
case 42: // vulnerability
case 45: // Enfeeble
case 47: // Stun
owner.getActionSender().sendMessage(
"@or1@This spell is not yet implemented.");
break;
case 25:
if (owner.getLocation().inWilderness()) {
owner.getActionSender().sendMessage(
"Can not use this spell in wilderness");
return;
}
if (affectedMob instanceof Npc) {
if (((Npc) affectedMob).getID() == 477) {
player.getActionSender()
.sendMessage(
"The dragon seems immune to this spell");
return;
}
}
boolean flagispro = false;
ListIterator<InvItem> iterator22 = owner
.getInventory().getItems().listIterator();
while (iterator22.hasNext()) {
InvItem cape = (InvItem) iterator22.next();
if (cape.id == 1000 && cape.wielded) {
flagispro = flagispro || true;
}
// else {flag = false;}
}
if (flagispro) {
if (!owner.isCharged()) {
owner.getActionSender().sendMessage(
"@red@You are not charged!");
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
if (affectedMob instanceof Player
&& !owner.isDueling()) {
Player affectedPlayer = (Player) affectedMob;
owner.setSkulledOn(affectedPlayer);
}
int damag = Formulae.calcSpellHit(20,
owner.getMagicPoints());
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer
.getActionSender()
.sendMessage(
owner.getUsername()
+ " is shooting at you!");
}
Projectile projectil = new Projectile(owner,
affectedMob, 1);
// godSpellObject(affectedMob, 33);
affectedMob.setLastDamage(damag);
int newhp = affectedMob.getHits() - damag;
affectedMob.setHits(newhp);
ArrayList<Player> playersToInfor = new ArrayList<Player>();
playersToInfor.addAll(owner.getViewArea()
.getPlayersInView());
playersToInfor.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInfor) {
p.informOfProjectile(projectil);
p.informOfModifiedHits(affectedMob);
}
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer.getActionSender()
.sendStat(3);
}
if (newhp <= 0) {
affectedMob.killedBy(owner,
owner.isDueling());
}
owner.getActionSender().sendInventory();
owner.getActionSender().sendStat(6);
finalizeSpell(owner, spell);
break;
} else {
owner.getActionSender()
.sendMessage(
"You need to be wearing the Iban Staff to cast this spell!");
return;
}
case 33:
if (owner.getLocation().inWilderness()) {
owner.getActionSender().sendMessage(
"Can not use this spell in wilderness");
return;
}
if (affectedMob instanceof Npc) {
if (((Npc) affectedMob).getID() == 477) {
player.getActionSender()
.sendMessage(
"The dragon seems immune to this spell");
return;
}
}
boolean flag = false;
ListIterator<InvItem> iterator = owner
.getInventory().getItems().listIterator();
while (iterator.hasNext()) {
InvItem cape = iterator.next();
if (cape.id == 1217 && cape.wielded) {
flag = true;
}
// else {flag = false;}
}
if (flag) {
if (!owner.isCharged()) {
owner.getActionSender().sendMessage(
"@red@You are not charged!");
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
if (affectedMob instanceof Player
&& !owner.isDueling()) {
Player affectedPlayer = (Player) affectedMob;
owner.setSkulledOn(affectedPlayer);
}
int damag = Formulae.calcGodSpells(owner,
affectedMob);
// int damag = Formulae.calcSpellHit(max,
// owner.getMagicPoints());
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer
.getActionSender()
.sendMessage(
owner.getUsername()
+ " is shooting at you!");
}
Projectile projectil = new Projectile(owner,
affectedMob, 1);
godSpellObject(affectedMob, 33);
affectedMob.setLastDamage(damag);
int newhp = affectedMob.getHits() - damag;
affectedMob.setHits(newhp);
ArrayList<Player> playersToInfor = new ArrayList<Player>();
playersToInfor.addAll(owner.getViewArea()
.getPlayersInView());
playersToInfor.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInfor) {
p.informOfProjectile(projectil);
p.informOfModifiedHits(affectedMob);
}
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer.getActionSender()
.sendStat(3);
}
if (newhp <= 0) {
affectedMob.killedBy(owner,
owner.isDueling());
}
owner.getActionSender().sendInventory();
owner.getActionSender().sendStat(6);
finalizeSpell(owner, spell);
break;
} else {
owner.getActionSender()
.sendMessage(
"You need to be wearing the Staff of Guthix to cast this spell!");
return;
}
case 34:
if (affectedMob instanceof Npc) {
if (((Npc) affectedMob).getID() == 477) {
player.getActionSender()
.sendMessage(
"The dragon seems immune to this spell");
return;
}
}
if (owner.getLocation().inWilderness()) {
owner.getActionSender().sendMessage(
"Can not use this spell in wilderness");
return;
}
boolean bool = false;
ListIterator<InvItem> iterat = owner.getInventory()
.getItems().listIterator();
while (iterat.hasNext()) {
InvItem cape = iterat.next();
if (cape.id == 1218 && cape.wielded) {
bool = bool || true;
}
// else {flag = false;}
}
if (bool) {
if (!owner.isCharged()) {
owner.getActionSender().sendMessage(
"@red@You are not charged!");
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
if (affectedMob instanceof Player
&& !owner.isDueling()) {
Player affectedPlayer = (Player) affectedMob;
owner.setSkulledOn(affectedPlayer);
}
// int damag = Rand(0, 25);
int damag = Formulae.calcGodSpells(owner,
affectedMob);
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer
.getActionSender()
.sendMessage(
owner.getUsername()
+ " is shooting at you!");
}
Projectile projectil = new Projectile(owner,
affectedMob, 1);
godSpellObject(affectedMob, 34);
affectedMob.setLastDamage(damag);
int newhp = affectedMob.getHits() - damag;
affectedMob.setHits(newhp);
ArrayList<Player> playersToInfor = new ArrayList<Player>();
playersToInfor.addAll(owner.getViewArea()
.getPlayersInView());
playersToInfor.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInfor) {
p.informOfProjectile(projectil);
p.informOfModifiedHits(affectedMob);
}
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer.getActionSender()
.sendStat(3);
}
if (newhp <= 0) {
affectedMob.killedBy(owner,
owner.isDueling());
}
owner.getActionSender().sendInventory();
owner.getActionSender().sendStat(6);
finalizeSpell(owner, spell);
break;
} else {
owner.getActionSender()
.sendMessage(
"You need to be wearing the Staff of Saradomin to cast this spell!");
return;
}
case 35:
if (affectedMob instanceof Npc) {
if (((Npc) affectedMob).getID() == 477) {
player.getActionSender()
.sendMessage(
"The dragon seems immune to this spell");
return;
}
}
if (owner.getLocation().inWilderness()) {
owner.getActionSender().sendMessage(
"Can not use this spell in wilderness");
return;
}
boolean flag2 = false;
ListIterator<InvItem> iterato = owner
.getInventory().getItems().listIterator();
while (iterato.hasNext()) {
InvItem cape = iterato.next();
if (cape.id == 1216 && cape.wielded) {
flag2 = flag2 || true;
}
// else {flag = false;}
}
if (flag2) {
if (!owner.isCharged()) {
owner.getActionSender().sendMessage(
"@red@You are not charged!");
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
if (affectedMob instanceof Player
&& !owner.isDueling()) {
Player affectedPlayer = (Player) affectedMob;
owner.setSkulledOn(affectedPlayer);
}
// int damag = Rand(0, 25);
int damag = Formulae.calcGodSpells(owner,
affectedMob);
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer
.getActionSender()
.sendMessage(
owner.getUsername()
+ " is shooting at you!");
}
Projectile projectil = new Projectile(owner,
affectedMob, 1);
godSpellObject(affectedMob, 35);
affectedMob.setLastDamage(damag);
int newhp = affectedMob.getHits() - damag;
affectedMob.setHits(newhp);
ArrayList<Player> playersToInfor = new ArrayList<Player>();
playersToInfor.addAll(owner.getViewArea()
.getPlayersInView());
playersToInfor.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInfor) {
p.informOfProjectile(projectil);
p.informOfModifiedHits(affectedMob);
}
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer.getActionSender()
.sendStat(3);
}
if (newhp <= 0) {
affectedMob.killedBy(owner,
owner.isDueling());
}
owner.getActionSender().sendInventory();
owner.getActionSender().sendStat(6);
finalizeSpell(owner, spell);
break;
} else {
owner.getActionSender()
.sendMessage(
"You need to be wearing the Staff of Zaramorak to cast this spell");
return;
}
default:
if (spell.getReqLevel() == 62
|| spell.getReqLevel() == 65
|| spell.getReqLevel() == 70
|| spell.getReqLevel() == 75) {
if (!Config.members) {
player.getActionSender()
.sendMessage(
"Must be on a members server to use this");
return;
}
if (player.getLocation().inWilderness()
&& Config.f2pWildy) {
player.getActionSender()
.sendMessage(
"You can not cast this Members spell in F2P Wilderness");
return;
}
}
if (!checkAndRemoveRunes(owner, spell)) {
return;
}
int max = -1;
for (int i = 0; i < Constants.GameServer.SPELLS.length; i++) {
if (spell.getReqLevel() == Constants.GameServer.SPELLS[i][0])
max = Constants.GameServer.SPELLS[i][1];
}
if (player.getMagicPoints() > 30)
max += 1;
int damage = Formulae.calcSpellHit(max,
owner.getMagicPoints());
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer.getActionSender().sendMessage(
owner.getUsername()
+ " is shooting at you!");
}
if (affectedMob instanceof Npc) {
Npc npcc = (Npc) affectedMob;
npcc.getSyndicate().addDamage(owner, damage,
Damage.MAGIC_DAMAGE);
}
Projectile projectile = new Projectile(owner,
affectedMob, 1);
affectedMob.setLastDamage(damage);
int newHp = affectedMob.getHits() - damage;
affectedMob.setHits(newHp);
ArrayList<Player> playersToInform = new ArrayList<Player>();
playersToInform.addAll(owner.getViewArea()
.getPlayersInView());
playersToInform.addAll(affectedMob.getViewArea()
.getPlayersInView());
for (Player p : playersToInform) {
p.informOfProjectile(projectile);
p.informOfModifiedHits(affectedMob);
}
if (affectedMob instanceof Player) {
Player affectedPlayer = (Player) affectedMob;
affectedPlayer.getActionSender().sendStat(3);
}
if (newHp <= 0) {
if (affectedMob instanceof Player)
affectedMob.killedBy(owner,
owner.isDueling());
if (owner instanceof Player) {
Player toLoot = owner;
if (affectedMob instanceof Npc) {
Npc npc = (Npc) affectedMob;
npc.getSyndicate().distributeExp(npc);
}
if (!(affectedMob instanceof Player))
affectedMob.killedBy(toLoot,
owner.isDueling());
}
}
finalizeSpell(owner, spell);
if (newHp > 0) {
if (affectedMob instanceof Npc) {
final Npc npc = (Npc) affectedMob;
if (npc.isBusy()
|| npc.getChasing() != null)
return;
npc.resetPath();
npc.setChasing(player);
// Radius is 0 to prevent wallhacking by
// NPCs. Easiest method I can come up with
// for now.
Instance.getDelayedEventHandler().add(
new WalkMobToMobEvent(affectedMob,
owner, 0) {
public void arrived() {
if (affectedMob.isBusy()
|| owner.isBusy()) {
npc.setChasing(null);
return;
}
if (affectedMob.inCombat()
|| owner.inCombat()) {
npc.setChasing(null);
return;
}
npc.resetPath();
player.resetAll();
player.resetPath();
player.setBusy(true);
player.setStatus(Action.FIGHTING_MOB);
player.getActionSender()
.sendSound(
"underattack");
player.getActionSender()
.sendMessage(
"You are under attack!");
npc.setLocation(player
.getLocation(),
true);
for (Player p : npc
.getViewArea()
.getPlayersInView())
p.removeWatchedNpc(npc);
player.setSprite(9);
player.setOpponent(npc);
player.setCombatTimer();
npc.setBusy(true);
npc.setSprite(8);
npc.setOpponent(player);
npc.setCombatTimer();
npc.setChasing(null);
FightEvent fighting = new FightEvent(
player, npc, true);
fighting.setLastRun(0);
world.getDelayedEventHandler()
.add(fighting);
}
public void failed() {
npc.setChasing(null);
}
});
}
}
break;