zock70
June 3rd, 2011, 01:22
CONTINUING FROM PART 1 (Only the registered members can see the link.!-part-1&p=344015#post344015)
5) Now go to PlayerVsPlayer.java in (sourcenamehere)\com\rs2hd\content\skills\combat and replace code with mine:
package com.rs2hd.content.skills.combat;
import com.rs2hd.content.skills.prayer.CursesEffectsHandl er;
import com.rs2hd.content.Following;
import com.rs2hd.event.*;
import com.rs2hd.model.*;
import com.rs2hd.GameEngine;
import com.rs2hd.tickable.Tickable;
import com.rs2hd.util.Misc;
public class PlayerVsPlayer {
private transient Player p;
int projectile = -1;
int req;
int gfx2;
int damage;
int anim;
int gfx;
int freezeDelay = 0;
int timer;
int magicIndex;
boolean usingAncient;
boolean freeze = false;
boolean barrage = false;
public void setPlayer(Player p) {
this.p = p;
}
public void tick() {
if(timer > 0) {
timer--;
}
}
public int calculateMelee(Player player, Player opponent) {
return CombatFormula.maxMelee(player, opponent);
}
public int calculateRange(Player player, Player opponent) {
int rangeAtk = Misc.random(CombatFormula.rangeAttack(player));
int rangeDef = Misc.random(CombatFormula.rangeDef(opponent));
if(rangeAtk <= rangeDef && Misc.random(2) == 1) {
return 0;
}
return Misc.random(CombatFormula.maxRange(player));
}
private static boolean canAttack(Player p, Player p2) {
boolean first = p.inClanWars() && p.getLocation().getClanLevel() > 0;
boolean second = p2.inClanWars() && p2.getLocation().getClanLevel() > 0;
if(p.inFightPits && !p2.inFightPits) {
return false;
}
if(!p.inFightPits && p2.inFightPits) {
return false;
}
if(!p.inFightPits) {
if(!first) {
p.getActionSender().sendMessage("You need to be inside of a clan wars free-for-all or risked zone to attack.");
p.resetAttack();
return false;
}
if(!second) {
p.getActionSender().sendMessage("That player isn't inside the attacking zone.");
p.resetAttack();
return false;
}
if(p.isAggressor()) {
if(p2.getInteractingWith() != p) {
p.getHeadIcons().setSkulled(true);
p.getUpdateFlags().setAppearanceUpdateRequired(tru e);
}
}
}
/*int wildy = Math.min(Location.wildernessLevel(p.getLocation()) , Location.wildernessLevel(p2.getLocation()));
int levelDiff = Math.abs(p.getSkills().getCombatLevel() - p2.getSkills().getCombatLevel());
if(wildy < levelDiff) {
p.getActionSender().sendMessage("The difference between your Combat Level and the Combat Level of your opponent is");
p.getActionSender().sendMessage("too great.");
p.getActionSender().sendMessage("You need to move deeper into the wilderness to attack that target.");
p.resetAttack();
return false;
} else if(p.isAggressor()) {
if(p2.getInteractingWith() != p) {
p.getHeadIcons().setSkulled(true);
p.getUpdateFlags().setAppearanceUpdateRequired(tru e);
}
}*/
return true;
}
public void Attack(Player p2) {
if(p == null || p2 == null || !canAttack(p, p2)) {
return;
}
if (p.getInventory().contains(4561, 1)) {
p.getActionSender().sendMessage("You cannot PvP with purple sweets!.");
p.resetAttack();
return;
}
if (p2.getInventory().contains(4561, 1)) {
p.getActionSender().sendMessage("They cannot PvP with purple sweets!.");
p2.resetAttack();
return;
}
if (p.THICKSKIN == true && p.PrayerTime == 0) {
p2.hit(Misc.random(10));
p.PrayerTime = 15;
p2.getSkills().DrainPray(1);
p2.graphics(1935);
return;
}
if (p.combatWith != p2.getIndex() && p.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("You are already in combat.");
p.resetAttack();
return;
}
if (p2.combatWith != p.getIndex() && p2.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("That player is already in combat.");
p.resetAttack();
return;
}
if(p.isDead() || p2.isDestroyed() || p2.isDead()) {
p.resetAttack();
return;
}
if(!p.Attacking) {
p.resetAttack();
return;
}
p.setCombatTimer();
p2.setCombatTimer();
if(p.pvn().autoCasting == true) {
MagicAttack(p, p2);
} else if (usingRange(p)) {
RangeAttack(p, p2);
} else {
MeleeAttack(p, p2);
}
}
public boolean RecoilRingEquipped(Player p2) {
try {
if(p2.getEquipment().get(12).getDefinition().getId () == 2550) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean divineEquipped(Player p2) {
try {
if(p2.getEquipment().get(5).getDefinition().getId( ) == 13740) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean elysianEquipped(Player p2) {
try {
if(p2.getEquipment().get(5).getDefinition().getId( ) == 13742) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullDharokEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 4716 && p.getEquipment().get(4).getDefinition().getId() == 4720 && p.getEquipment().get(7).getDefinition().getId() == 4722 && p.getEquipment().get(3).getDefinition().getId() == 4718) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullVoidRangeEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 11664 && p.getEquipment().get(4).getDefinition().getId() == 8839 && p.getEquipment().get(7).getDefinition().getId() == 8840 && p.getEquipment().get(3).getDefinition().getId() == 8842) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullVoidMeleeEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 11665 && p.getEquipment().get(4).getDefinition().getId() == 8839 && p.getEquipment().get(7).getDefinition().getId() == 8840 && p.getEquipment().get(3).getDefinition().getId() == 8842) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullVoidMagicEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 11663 && p.getEquipment().get(4).getDefinition().getId() == 8839 && p.getEquipment().get(7).getDefinition().getId() == 8840 && p.getEquipment().get(3).getDefinition().getId() == 8842) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
//void end
public boolean vestaLongSwordEquipped(Player p) {
try {
if(p.getEquipment().get(3).getDefinition().getId() == 13899) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean armadylGodswordEquipped(Player p) {
try {
if(p.getEquipment().get(3).getDefinition().getId() == 11694) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public void RangeAttack(final Player p, final Player p2) {
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) > 6) {
Following.combatFollow(p, p2, true);
}
try {
final int rangeHit = calculateRange(p, p2);
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) <= 8) {
p.getWalkingQueue().reset();
if (p2.veng == true) {
int vengDamage = (int) (rangeHit * 0.75);
if (vengDamage > 0) {
p2.setLastChatMessage(new ChatMessage(0, 16, "Taste Vengeance!"));
p2.getUpdateFlags().setChatTextUpdateRequired(true );
p.hit(vengDamage);
p2.veng = false;
}
}
}
if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
//if(p.DeflectMelee == true){
//}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, p2, rangeHit);
}
//if (p2.DeflectMelee == true){
//CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
//}
//if (p2.DeflectMagic == true){
// CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
//}
if (p2.DeflectRange == true){
CursesEffectsHandler.handleDeflectRange(p, p2, damage);
}
if (p.SapWarrior == true){
CursesEffectsHandler.handleSapWarrior(p, p2, damage);
}
if (p.SapRanger == true){
CursesEffectsHandler.handleSapRanger(p, p2, damage);
}
if (p.SapMage == true){
CursesEffectsHandler.handleSapMage(p, p2, damage);
}
if (p.SapSpirit == true){
CursesEffectsHandler.handleSapSpirit(p, p2);
}
if (p.combatWith != p2.getIndex() && p.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("You are already in combat.");
p.resetAttack();
return;
}
if (p2.combatWith != p.getIndex() && p2.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("That player is already in combat.");
p.resetAttack();
return;
}
if(p.combatDelay == 0) {
if(!p.getEquipment().hasAmmo()) {
p.sm("You dont have any ammo in your backpack.");
return;
}
p2.combatResetWith += PkDefinitions.getCombatDelay(p) + 1;
GameEngine.poison.checkForPoison(p, p2);
p2.combatWith = p.getIndex();
p.combatDelay += PkDefinitions.getCombatDelay(p);
if(p.getEquipment().isWieldingHandCannon()) {
if(p.usingSpecial) {
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(12174, 0);
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, (int) (rangeHit * 1.10));
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if (elysianEquipped(p2)) {
if(Misc.random(3) == 3) {
p2.hit(p, rangeHit/2);
p2.getActionSender().sendMessage("Your Elysian Spirit Shield removed a part of your opponent hit.");
}
} else if (divineEquipped(p2)) {
if(Misc.random(3) == 3) {
int prayDrain = Misc.random(20);
p2.hit(Misc.random(15));
p2.getActionSender().sendMessage("Your Divine Spirit shield took the hit and decreased some of your prayer.");
p2.getSkills().hitPray(prayDrain);
}
} else {
p2.hit(p, rangeHit);
p2.animate(p2.getEquipment().getDefenceAnimation() );
}
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingDbow()) {
if(p.usingSpecial) {
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.59);
damage = Misc.random(damage);
if(damage > 49) {
if(Misc.random(4) != 2) {
damage = 40 + Misc.random(6);
} else {
damage = 25 + Misc.random(6);
}
}
p2.hit(p, damage);
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.62);
damage = Misc.random(damage);
if(damage > 49) {
if(Misc.random(4) == 2) {
damage = 40 + Misc.random(6);
} else {
damage = 25 + Misc.random(6);
}
}
p2.hit(p, damage);
p2.animate(p2.getEquipment().getDefenceAnimation() );
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.48);
p2.hit(p, damage);
p2.animate(p2.getEquipment().getDefenceAnimation() );
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.48);
p2.hit(p, damage);
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingCBow()) {
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if (elysianEquipped(p2)) {
if(Misc.random(3) == 3) {
p2.hit(p, rangeHit/2);
p2.getActionSender().sendMessage("Your Elysian Spirit Shield removed a part of your opponent hit.");
}
} else if (divineEquipped(p2)) {
if(Misc.random(3) == 3) {
int prayDrain = Misc.random(20);
p2.hit(Misc.random(15));
p2.getActionSender().sendMessage("Your Divine Spirit shield took the hit and decreased some of your prayer.");
p2.getSkills().hitPray(prayDrain);
}
} else if(Misc.random(10) == 1) {
EnchantSpec(p, p2, rangeHit);
p2.animate(p2.getEquipment().getDefenceAnimation() );
} else {
p2.hit(p, rangeHit);
p2.animate(p2.getEquipment().getDefenceAnimation() );
}
this.stop();
}
});
} else if(p.usingSpecial) {
switch(p.getEquipment().get(3).getDefinition().get Id()) {
}
} else {
if(p.getEquipment().get(3).getDefinition().getId() == 15241) {
p.sm("You need to be wearing handcannon ammo to fire this weapon.");
return;
}
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if (elysianEquipped(p2)) {
if(Misc.random(3) == 3) {
p2.hit(p, rangeHit/2);
p2.getActionSender().sendMessage("Your Elysian Spirit Shield removed a part of your opponent hit.");
}
} else if (divineEquipped(p2)) {
if(Misc.random(3) == 3) {
int prayDrain = Misc.random(20);
p2.hit(Misc.random(15));
p2.getActionSender().sendMessage("Your Divine Spirit shield took the hit and decreased some of your prayer.");
p2.getSkills().hitPray(prayDrain);
}
} else {
p2.hit(p, rangeHit);
}
this.stop();
}
});
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
public void EnchantSpec(Player p, Player p2, int rangeDamage) {
try {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 9242:
rangeDamage = rangeDamage + Misc.random(p2.getHp()/5);
if (rangeDamage >= 149)
rangeDamage = 149;
p.hit(Misc.random(p.getHp())/10);
p2.graphics(754);
p.getActionSender().SendSound(2912,100,0);
p2.getActionSender().SendSound(2912,100,0);
break;
case 9244:
int FireDamage = Misc.random(20);
if (p2.getEquipment().get(3).getDefinition().getId() == 11283 ||p2.getEquipment().get(3).getDefinition().getId() == 1540)
FireDamage = Misc.random(5);
rangeDamage = rangeDamage + FireDamage;
p2.graphics(756);
p.getActionSender().SendSound(2915,100,0);
p2.getActionSender().SendSound(2915,100,0);
break;
case 9245:
rangeDamage = Misc.random((int) (rangeDamage * 1.10));
p.heal(rangeDamage);
p2.graphics(753);
p.getActionSender().SendSound(2917,100,0);
p2.getActionSender().SendSound(2917,100,0);
break;
case 9237:
p2.id = -1;
p2.Attacking = false;
p2.graphics(755);
p.getActionSender().SendSound(2914,100,0);
p2.getActionSender().SendSound(2914,100,0);
break;
}
p2.hit(p, rangeDamage);
} catch(Exception e) {
}
}
public void MeleeAttack(final Player p, final Player p2) {
try {
if (p.frozen == 0) {
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) != 1)
Following.combatFollow(p, p2, false);
}
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) < 2) {
if(p.combatDelay == 0) {
final int meleeDamage = calculateMelee(p, p2);
p2.combatResetWith += PkDefinitions.getCombatDelay(p)+1;
GameEngine.poison.checkForPoison(p, p2);
p.IsFollowing = false;
p.FollowingId = -1;
p2.combatWith = p.getIndex();
p.combatDelay += PkDefinitions.getCombatDelay(p);
if (p2.veng) {
int vengDamage = ((meleeDamage/4)*3);
if (vengDamage != 0) {
p2.setLastChatMessage(new ChatMessage(0, 16, "Taste Vengeance!"));
p2.getUpdateFlags().setChatTextUpdateRequired(true );
p.hit(vengDamage);
p2.veng = false;
}
}
if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2,meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, p2, meleeDamage);
}
if (p2.DeflectMelee == true){
CursesEffectsHandler.handleDeflectMelee(p, p2, meleeDamage);
}
//if (p2.DeflectMagic == true){
// CursesEffectsHandler.handleDeflectMelee(p, p2, meleeDamage);
//}
//if (p2.DeflectRange == true){
// CursesEffectsHandler.handleDeflectRange(p, p2, meleeDamage);
//}
if (p.SapWarrior == true){
CursesEffectsHandler.handleSapWarrior(p, p2, meleeDamage);
}
if (p.SapRanger == true){
CursesEffectsHandler.handleSapRanger(p, p2, meleeDamage);
}
if (p.SapMage == true){
CursesEffectsHandler.handleSapMage(p, p2, meleeDamage);
}
if (p.SapSpirit == true){
CursesEffectsHandler.handleSapSpirit(p, p2);
}
if(!p.usingSpecial) {
p.animate(PkDefinitions.getCombatAnim(p));
p.getActionSender().SendSound(SoundID(p),100,0);
p2.getActionSender().SendSound(SoundID(p),100,0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
p2.animate(p2.getEquipment().getDefenceAnimation() );
this.stop();
}
});
} else {
p.usingSpecial = false;
if (p.specialAmount >= p.getSpecialAmount()) {
p.specialAmount -= p.getSpecialAmount();
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 4151:
p2.graphics(341, 0);
p.animate(1658, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
break;
case 5698:
case 1215:
p.graphics(252, (100 << 16));
p.animate(1062, 0);
p.getActionSender().SendSound(2537,100,0);
p2.getActionSender().SendSound(2537,100,0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 0.88));
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 0.78));
this.stop();
}
});
this.stop();
}
});
break;
case 11730:
p.graphics(1224, 0);
p2.graphics(1194, 0);
p.animate(7072, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (1.14 * meleeDamage * 0.73));
this.stop();
}
});
this.stop();
}
});
p.getActionSender().SendSound(3853,100,0);
p2.getActionSender().SendSound(3853,100,0);
break;
case 11694:
p.graphics(1222, 0);
p.animate(7074, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3865,100,0);
p2.getActionSender().SendSound(3865,100,0);
break;
case 13450:
p.graphics(1222, 0);
p.animate(7074, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 0.60));
this.stop();
}
});
p.getActionSender().SendSound(3865,100,0);
p2.getActionSender().SendSound(3865,100,0);
break;
case 10887:
p.graphics(1027, 0);
p.animate(5870, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
break;
case 15259:
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.animate(12031);
p.graphics(2144);
break;
case 11696:
p.graphics(1223, 0);
p.animate(7073, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.30));
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
p2.getActionSender().SendSound(3834,100,0);
break;
case 13444: // lent whip & colored whips
case 15441:
case 15442:
case 15443:
case 15444:
final int lwhip1 = meleeDamage/2;
final int lwhip2 = meleeDamage/3;
final int lwhip3 = meleeDamage/5;
final int lwhip4 = meleeDamage/5;
p.graphics(1224, 0);
p2.graphics(2015, 0);
p.animate(7072, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, lwhip1);
p2.hit(p, lwhip2);
p2.hit(p, lwhip3);
p2.hit(p, lwhip4);
this.stop();
}
});
break;
case 11716:
p.graphics(1225, 0);
p.animate(7001, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit((int) (meleeDamage * 1.10));
this.stop();
}
});
break;
case 11698:
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage/2);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 11700:
p.graphics(2110, 0);
p.animate(7070, 0);
p2.graphics(2111, 0);
p2.frozen = 15;
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 13451:
p.graphics(1223, 0);
p.animate(7073, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.30));
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
p2.getActionSender().SendSound(3834,100,0);
break;
case 13452:
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 13453:
p.graphics(2110, 0);
p.animate(7070, 0);
p2.frozen = 60;
p2.graphics(2111, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.20));
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 1305:
p.graphics(2117, 0);
p.animate(12031, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.20));
this.stop();
}
});
p.getActionSender().SendSound(2529,100,0);
p2.getActionSender().SendSound(2529,100,0);
break;
case 4587:
p.graphics(2118, 0);
p.animate(12005, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(2540,100,0);
p2.getActionSender().SendSound(2540,100,0);
break;
case 3204:
p.graphics(282, 0);
p2.graphics(254, 0);
p.animate(1665, 0);
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (1.13 * (meleeDamage * 0.94)));
this.stop();
}
});
this.stop();
}
});
break;
case 1434:
p.graphics(251, 50);
p.animate(1060, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.25));
this.stop();
}
});
p.getActionSender().SendSound(2541,100,0);
p2.getActionSender().SendSound(2541,100,0);
break;
case 7158:
p.graphics(559, 0);
p.animate(3157, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
break;
case 13902:
p.graphics(1840, 0);
p.animate(10505, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.60));
this.stop();
}
});
break;
case 14484:
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw1 = meleeDamage/2;int dclaw2 = meleeDamage/4;int dclaw3 = meleeDamage/4;
if (meleeDamage == 0) {
dclaw1 = calculateMelee(p, p2);
dclaw2 = dclaw1/2;
dclaw3 = dclaw1/4;
}
if (meleeDamage == 0 && dclaw1 == 0) {
dclaw2 = calculateMelee(p, p2);
dclaw3= dclaw2/2;
}
if (meleeDamage == 0 && dclaw1 == 0 && dclaw2 == 0) {
dclaw3 = calculateMelee(p, p2);
}
final int[] fDclaw = {dclaw1, dclaw2, dclaw3};
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, fDclaw[0]);
p2.hit(p, fDclaw[1]);
p2.hit(p, fDclaw[2]);
this.stop();
}
});
this.stop();
}
});
break;
case 14486://dragon claws
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw5 = meleeDamage/6;int dclaw6 = meleeDamage/8;int dclaw7 = meleeDamage/8;
if (meleeDamage == 0) {
dclaw1 = calculateMelee(p, p2);
dclaw2 = dclaw5/6;
dclaw3 = dclaw5/8;
}
if (meleeDamage == 0 && dclaw5 == 0) {
dclaw2 = calculateMelee(p, p2);
dclaw3= dclaw6/6;
}
if (meleeDamage == 0 && dclaw5 == 0 && dclaw6 == 0) {
dclaw7 = calculateMelee(p, p2);
}
final int[] fDclaw2 = {dclaw5, dclaw6, dclaw7};
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, fDclaw2[0]);
p2.hit(p, fDclaw2[1]);
p2.hit(p, fDclaw2[2]);
this.stop();
}
});
this.stop();
}
});
break;
case 13905:
p.animate(10499, 0);
p.graphics(1835, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.10));
this.stop();
}
});
break;
case 13899:
p.animate(10502, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.35));
this.stop();
}
});
break;
default:
p2.hit(p, meleeDamage);
p.animate(PkDefinitions.getCombatAnim(p));
p.getActionSender().sendMessage("This weapon has no special Attack, if you still see special bar please relogin.");
break;
}
} else {
p.getActionSender().sendMessage("You need to wait til your spec bar gets ready.");}
}
}
}
} catch(Exception e) {
}
}
public void MagicAttack(final Player p, final Player p2) {
try {
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) > 6) {
Following.combatFollow(p, p2, true);
}
int rand_att = Misc.random(p.getSkills().getLevelForXp(6))*4;
int rand_def = (int) (0.45 * Misc.random(p2.getSkills().getLevelForXp(1)));
int random_u = Misc.random(p.getBonuses().getBonus(3)) * 2;
int random_def = Misc.random(p2.getBonuses().getBonus(8));
if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2, damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2 , damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2 , damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2 , damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2, damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, p2, damage);
}
//if (p2.DeflectMelee == true){
// CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
//}
if (p2.DeflectMagic == true){
CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
}
//if (p2.DeflectRange == true){
// CursesEffectsHandler.handleDeflectRange(p, p2, damage);
//}
if (p.SapWarrior == true){
CursesEffectsHandler.handleSapWarrior(p, p2, damage);
}
if (p.SapRanger == true){
CursesEffectsHandler.handleSapRanger(p, p2, damage);
}
if (p.SapMage == true){
CursesEffectsHandler.handleSapMage(p, p2, damage);
}
if (p.SapSpirit == true){
CursesEffectsHandler.handleSapSpirit(p, p2);
}
if(p.pvn().autoCasting == true) {
switch(p.magicType) {
case 192:
switch(p.pvn().autoCast) {
case 25://Wind strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
gfx = 90;
anim = 1162;
projectile = 91;
damage = 2;
gfx2 = 92;
req = 0;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 28: //Water strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(555, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(555, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(554, 1);
p.getInventory().deleteItem(555, 1);
gfx = 93;
anim = 1162;
projectile = 94;
damage = 4;
gfx2 = 95;
req = 5;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 30: //Earth strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
p.getInventory().deleteItem(557, 1);
gfx = 96;
anim = 1162;
projectile = 97;
damage = 6;
gfx2 = 98;
req = 9;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 32: //Fire strike
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(554, 3)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(554, 3) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(554, 3);
p.getInventory().deleteItem(557, 1);
gfx = 99;
anim = 1162;
projectile = 100;
damage = 8;
gfx2 = 101;
req = 13;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 34: //Wind bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
gfx = 117;
anim = 1162;
projectile = 118;
damage = 9;
gfx2 = 119;
req = 17;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 39: //Water bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(666, 2)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(555, 2)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(555, 2);
gfx = 120;
anim = 1162;
projectile = 121;
damage = 10;
gfx2 = 122;
req = 23;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 42: //Earth bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(557, 3);
gfx = 123;
anim = 1162;
projectile = 124;
damage = 11;
gfx2 = 125;
req = 29;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 45: //Fire bolt
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(554, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(562, 1) && p.getInventory().contains(554, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(554, 3);
gfx = 126;
anim = 1162;
projectile = 127;
damage = 12;
gfx2 = 128;
req = 35;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 49: //Wind blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
gfx = 132;
anim = 1162;
projectile = 133;
damage = 13;
gfx2 = 134;
req = 41;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 52: //Water blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(555, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(555, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 3);
gfx = 135;
anim = 1162;
projectile = 136;
damage = 14;
gfx2 = 137;
req = 47;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 58: //Earth blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 3);
gfx = 138;
anim = 1162;
projectile = 139;
damage = 15;
gfx2 = 140;
req = 53;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 63: //Fire blast
if(!p.getInventory().contains(556, 4)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(554, 5)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 4) && p.getInventory().contains(560, 1) && p.getInventory().contains(554, 5)) {
p.getInventory().deleteItem(556, 4);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 5);
gfx = 129;
anim = 1162;
projectile = 130;
damage = 16;
gfx2 = 131;
req = 59;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 70: //Wind wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
gfx = 158;
anim = 1162;
projectile = 159;
damage = 17;
gfx2 = 160;
req = 62;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 73: //Water wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(555, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 7);
gfx = 161;
anim = 1162;
projectile = 162;
damage = 18;
gfx2 = 163;
req = 65;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 77: //Earth Wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(557, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 7);
gfx = 164;
anim = 1162;
projectile = 165;
damage = 19;
gfx2 = 166;
req = 70;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 80: //FireWave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(554, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(554, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 7);
gfx = 155;
anim = 1162;
projectile = 156;
damage = 20;
gfx2 = 157;
req = 75;
usingAncient = false;
p.MageTime =5;
}
}
break;
case 68: //zammy
if (p.getEquipment().get(3).getDefinition().getId() == 2417) {
gfx = -1;
anim = 811;
projectile = -1;
damage = 30;
gfx2 = 78;
req = 60;
usingAncient = false;
} else {
gfx = -1;
anim = -1;
projectile = -1;
gfx2 = -1;
damage = -1;
req = -1;
usingAncient = false;
p.getActionSender().sendMessage("You need a zammorak staff to cast this spell.");
return;
}
break;
case 66: //sara
if (p.getEquipment().get(3).getDefinition().getId() == 2415){
gfx = -1;
anim = 811;
projectile = -1;
damage = 30;
gfx2 = 77;
req = 60;
usingAncient = false;
} else {
gfx = -1;
anim = -1;
projectile = -1;
gfx2 = -1;
damage = -1;
req = -1;
usingAncient = false;
p.getActionSender().sendMessage("You need a zammorak staff to cast this spell.");
return;
}
break;
case 67: //guth
if (p.getEquipment().get(3).getDefinition().getId() == 2416){
gfx = -1;
anim = 811;
projectile = -1;
damage = 30;
gfx2 = 76;
req = 60;
usingAncient = false;
} else {
gfx = -1;
anim = -1;
projectile = -1;
gfx2 = -1;
damage = -1;
req = -1;
usingAncient = false;
p.getActionSender().sendMessage("You need a zammorak staff to cast this spell.");
return;
}
break;
}
break;
case 193:
projectile = -1;
gfx = -1;
usingAncient = true;
switch (p.pvn().autoCastAncient) {
case 23: //Ice barrage
gfx = 368;
anim = 1979;
damage = 30;
gfx2 = 369;
req = 94;
freeze = false;
freezeDelay = 15;
break;
case 35: //Shadow barrage
//gfx = 368;
anim = 1978;
damage = 28;
gfx2 = 383;
req = 88;
break;
case 31: //Smoke barrage
//gfx = 368;
anim = 1979;
damage = 27;
gfx2 = 391;
req = 86;
break;
case 21: //Ice blitz
//gfx = 368;
anim = 1978;
damage = 26;
gfx2 = 367;
req = 82;
freeze = false;
freezeDelay = 0;
break;
case 25: //Blood Blitz
//gfx = 368;
anim = 1978;
damage = 25;
gfx2 = 375;
req = 80;
break;
case 33: //Shadow blitz
//gfx = 368;
anim = 1978;
damage = 24;
gfx2 = 381;
req = 76;
break;
case 29: //Smoke blitz
//gfx = 368;
anim = 1978;
damage = 23;
gfx2 = 387;
req = 74;
break;
case 22: //Ice burst
// gfx = 368;
anim = 1979;
damage = 22;
gfx2 = 363;
req = 70;
freeze = false;
freezeDelay = 1;
break;
case 26: //Blood Burst
// gfx = 368;
anim = 1979;
damage = 21;
gfx2 = 376;
req = 68;
break;
case 34: //Shadow Burst
//gfx = 368;
anim = 1978;
damage = 17;
gfx2 = 382;
req = 64;
break;
case 30: //Smoke Burst
//gfx = 368;
anim = 1979;
damage = 17;
gfx2 = 389;
req = 62;
break;
case 20: //Ice rush
//gfx = 368;
anim = 1978;
damage = 16;
gfx2 = 361;
req = 58;
freeze = false;
freezeDelay = 1;
break;
case 24: //Blood Rush
//gfx = 368;
anim = 1978;
damage = 15;
gfx2 = 361;
req = 56;
break;
case 32: //Shadow Rush
//gfx = 368;
anim = 1978;
damage = 14;
gfx2 = 379;
req = 52;
break;
case 28: //Smoke Rush
// gfx = 368;
anim = 1978;
damage = 13;
gfx2 = 385;
req = 50;
break;
case 39:// miasmic barrage
gfx = 1853;
anim = 10518;
damage = 35;
gfx2 = 1854;
req = 97;
break;
case 38://miasmic burst
gfx = 1848;
anim = 10516;
damage = 24;
gfx2 = 1849;
req = 73;
break;
case 37://miasmic blitz
gfx = 1850;
anim = 10524;
damage = 28;
gfx2 = 1851;
req = 85;
break;
case 36://miasmic rush
gfx = 1845;
anim = 10513;
damage = 18;
gfx2 = 1846;
req = 61;
break;
}
break;
}
}
if ( p.getSkills().getLevelForXp(6) <= req) {
p.sm("You need level " + req+ " magic to use this spell.");
}
else if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) <= 8) {
if(p.combatDelay == 0) {
if ((random_u >= random_def) && (rand_att > rand_def)) {
p2.combatResetWith += PkDefinitions.getCombatDelay(p)+1;
p2.combatWith = p.getIndex();
p.turnTo(p2);
p.animate(anim);
if (barrage) {
p.graphics(gfx, 100);
} else {
p.graphics(gfx, (100 << 16));
}
p.combatDelay =+ 5;
p.getWalkingQueue().reset();
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, projectile, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
final int magichit = Misc.random(damage);
p2.hit(p, Misc.random(magichit));
p.getSkills().addXp(6, magichit * 1200);
if (!usingAncient) {
p2.graphics(gfx2, (100 << 16));
} else {
if (freeze) {
if (p2.frozen == 0) {
p2.frozen = freezeDelay;
p2.graphics(369, 100);
p2.sm("You have been frozen");
p2.getWalkingQueue().reset();
} else {
p2.graphics(1677, (100 << 16));
this.stop();
return;
}
}
p2.graphics(gfx2, 100);
}
this.stop();
}
});
} else {
p2.combatWith = p.getIndex();
p.turnTo(p2);
p.animate(anim);
if (barrage) {
p.graphics(gfx, 100);
} else {
p.graphics(gfx, (100 << 16));
}
p.combatDelay =+ 5;
p.combatDelay =+ 5;
p.getWalkingQueue().reset();
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, projectile, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.graphics(85, (100 << 16));
this.stop();
}
});
}
}
}
} catch(Exception e) {
}
}
public int getMagicDelay() {
Player p2 = World.getWorld().getPlayers().get(magicIndex);
if (p == null || p2 == null)
return 1600;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 1)
return 955;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 2)
return 1055;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 3)
return 1200;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 4)
return 1450;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 5)
return 1550;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 6)
return 1650;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 7)
return 1750;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 8)
return 1750;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 9)
return 1845;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 10)
return 1845;
return 1;
}
public boolean usingRange(Player p) {
if(p.getEquipment().get(3) == null) {
return false;
}
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 14684:
case 4212:
case 4214:
case 4734:
case 11235:
case 15701:
case 15702:
case 15703:
case 15704:
case 9185:
case 18357:
case 861:
case 868:
case 867:
case 866:
case 865:
case 863:
case 15241:
case 10034:
case 14121:
case 841:
case 843:
case 845:
case 847:
case 849:
case 851:
case 853:
case 855:
case 857:
case 859:
return true;
case 0:
return false;
case -1:
return false;
default:
return false;
}
}
public int SoundID(Player p) {
if(p.getEquipment().get(3) == null) {
return 2566;
}
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 806: // Start of Darts
case 807:
case 808:
case 809:
case 810:
case 811:
case 11230:
case 863: // Start of Knifes
case 864:
case 865:
case 866:
case 867:
case 868:
case 869:
return 2707;
case 0:
return -1;
case 4151:
return 2720;
case 1307: // Start of 2Hs
case 1309:
case 1311:
case 1313:
case 1315:
case 1317:
case 1319:
case 7158:
case 6609:
return 2504;
case 6528:
return 2520;
case 11235:
case 15701:
case 15702:
case 15703:
case 15704:
return 3731;
case 1379: // Start of Staffs
case 1381:
case 1383:
case 1385:
case 1387:
case 2415: // Start of God Staffs & Iban's Staff & Slayer staff
case 2416:
case 2417:
case 1409:
case 4170:
case 1391: // Start of BattleStaffs
case 1393:
case 1395:
case 1397:
case 1399:
case 4710: // Start of Ahrim's Staff
case 4862:
case 4863:
case 4864:
case 4865:
return 2555;
case 4755: // Start of Verac's Flail
case 4982:
case 4983:
case 4984:
case 4985:
return 1322;
case 4747: // Start of Torag's Hammers
case 4958:
case 4959:
case 4960:
case 4861:
return 1330;
case 4718: // Start of Dharok's Greataxe
case 4886:
case 4887:
case 4888:
case 4889:
return 1320;
case 4726: // Start of Guthan's Warspear
case 4910:
case 4911:
case 4912:
case 4913:
return 1333;
case 1363: // Start of BattleAxes
case 1365:
case 1367:
case 136:
case 1371:
case 1373:
case 1375:
case 1377:
case 6589:
case 7807:
return 2498;
case 1277:
case 1279:
case 1281:
case 1283:
case 1285:
case 1287:
case 1289:
return 2499;
case 1321: // Start of Scimitars
case 1323:
case 1325:
case 1327:
case 1329:
case 1331:
case 1333:
case 4587:
case 6611:
case 11998: case 1291: // Start of Longswords
case 1293:
case 1295:
case 1297:
case 1299:
case 1301:
case 1303:
case 1305:
case 6607:
case 13899:
return 2500;
case 746: // Start of Daggers
case 747:
case 1213:
case 1215:
case 5696: // Start of Daggers(p++)
case 5698:
case 6597:
return 2549;
case 11694: // Start of GodSwords
case 11696:
case 11698:
case 11700:
return 3846;
case 4734: // Start of Karil's Cross & X-bow
case 4934:
case 4935:
case 4936:
case 4937:
case 9174: // Start of CrossBows
case 9176:
case 9177:
case 9179:
case 9181:
case 9183:
case 9185:
case 14684:
case 18357:
return 1081;
default:
return 2566;
}
}
public int getDbowDrawback() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1110;
case 892:
return 1109;
case 890:
return 1108;
case 888:
return 1107;
case 886:
return 1106;
case 884:
return 1105;
case 882:
return 1104;
default:
return 1114;
}
}
public int getDbowSpec() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1099;
default:
return 1102;
}
}
public int rangeStrBonus() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212: // d arrows
return 69;
case 892: // rune arrows
return 69;
case 15243: // handcannon
return 90;
case 9244: // d bolt
return 92;
default:
return 50;
}
}
}
6) Now, in the same folder you were in ((sourcenamehere)\src\com\rs2hd\content\skills\com bat), open PlayerVsNpc.java and replace the code with mine:
package com.rs2hd.content.skills.combat;
import com.rs2hd.content.skills.prayer.CursesEffectsHandl er;
import com.rs2hd.event.Event;
import com.rs2hd.model.Equipment;
import com.rs2hd.model.NPC;
import com.rs2hd.model.Player;
import com.rs2hd.model.Skills;
import com.rs2hd.model.World;
import com.rs2hd.tickable.Tickable;
import com.rs2hd.util.Misc;
/**
* @author Dragonkk 40%
*
*/
public class PlayerVsNpc {
private transient Player p;
public int autoCast;
public int autoCastAncient;
public boolean autoCasting;
private int projectile = -1;
private int req;
private int gfx2;
private int damage;
private int anim;
private int gfx;
private boolean usingAncient;
private int magicIndex;
boolean freeze = false;
boolean barrage = false;
int freezeDelay = 0;
public void setPlayer(Player p) {
this.p = p;
}
public void Attack(NPC n) {
if(p == null || n == null) {
System.out.println("p/n = null");
return;
}
if(p.isDead() || n.isDead()) {
p.resetAttack();
return;
}
if(p.AttackingNpc == false) {
return;
}
Equipment e = p.getEquipment();
if(n.getId() == 3375) {
if(e.get(Equipment.SLOT_WEAPON) == null) {
p.getActionSender().sendMessage("You need a rubber chicken to attack this");
n.Attacking = false;
p.resetAttack();
return;
}
if(e.get(Equipment.SLOT_WEAPON).getId() != 4566) {
p.getActionSender().sendMessage("You need a rubber chicken to attack this");
n.Attacking = false;
p.resetAttack();
return;
}
}
if (p.THICKSKIN == true && p.PrayerTime == 0) {
n.hit(Misc.random(25));
p.PrayerTime = 15;
n.graphics(1935);
return;
}
if(p.getSkills().getLevel(Skills.SLAYER) < p.getSlayer().getRequiredLevel(n.getId())) {
p.getActionSender().sendMessage("You need a level of " + p.getSlayer().getRequiredLevel(n.getId()) + " slayer to attack this monster!");
p.resetAttack();
return;
}
n.pid = p.getIndex();
n.giveDrop = p.getIndex();
n.Attacking = true;
if(autoCasting == true) {
MagicAttack(p, n);
} else if (usingRange(p)) {
RangeAttack(p, n);
} else {
MeleeAttack(p, n);
}
}
public boolean FullDharokEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 4716 && p.getEquipment().get(4).getDefinition().getId() == 4720 && p.getEquipment().get(7).getDefinition().getId() == 4722 && p.getEquipment().get(3).getDefinition().getId() == 4718) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public void MagicAttack(final Player p, final NPC n) {
try {
//if (p.LeechAttack == true) {
// CursesEffectsHandler.handleLeechAttack(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechRange == true) {
// CursesEffectsHandler.handleLeechRanged(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechMagic == true) {
// CursesEffectsHandler.handleLeechMagic(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechDefence == true) {
// CursesEffectsHandler.handleLeechDefence(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechStrength == true) {
// CursesEffectsHandler.handleLeechStrength(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.SpecialAttackLeech == true) {
// CursesEffectsHandler.handleSpecLeech(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.Soulsplit == true) {
// CursesEffectsHandler.handleSoulSplit(p, p2, meleeDamage);
//}
if(autoCasting == true) {
switch(p.magicType) {
case 192:
switch(autoCast) {
case 25://Wind strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
gfx = 90;
anim = 1162;
projectile = 91;
damage = 2;
gfx2 = 92;
req = 0;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 28: //Water strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(555, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(555, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(554, 1);
p.getInventory().deleteItem(555, 1);
gfx = 93;
anim = 1162;
projectile = 94;
damage = 4;
gfx2 = 95;
req = 5;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 30: //Earth strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
p.getInventory().deleteItem(557, 1);
gfx = 96;
anim = 1162;
projectile = 97;
damage = 6;
gfx2 = 98;
req = 9;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 32: //Fire strike
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(554, 3)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(554, 3) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(554, 3);
p.getInventory().deleteItem(557, 1);
gfx = 99;
anim = 1162;
projectile = 100;
damage = 8;
gfx2 = 101;
req = 13;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 34: //Wind bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
gfx = 117;
anim = 1162;
projectile = 118;
damage = 9;
gfx2 = 119;
req = 17;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 39: //Water bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(666, 2)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(555, 2)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(555, 2);
gfx = 120;
anim = 1162;
projectile = 121;
damage = 10;
gfx2 = 122;
req = 23;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 42: //Earth bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(557, 3);
gfx = 123;
anim = 1162;
projectile = 124;
damage = 11;
gfx2 = 125;
req = 29;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 45: //Fire bolt
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(554, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(562, 1) && p.getInventory().contains(554, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(554, 3);
gfx = 126;
anim = 1162;
projectile = 127;
damage = 12;
gfx2 = 128;
req = 35;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 49: //Wind blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
gfx = 132;
anim = 1162;
projectile = 133;
damage = 13;
gfx2 = 134;
req = 41;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 52: //Water blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(555, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(555, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 3);
gfx = 135;
anim = 1162;
projectile = 136;
damage = 14;
gfx2 = 137;
req = 47;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 58: //Earth blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 3);
gfx = 138;
anim = 1162;
projectile = 139;
damage = 15;
gfx2 = 140;
req = 53;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 63: //Fire blast
if(!p.getInventory().contains(556, 4)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(554, 5)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 4) && p.getInventory().contains(560, 1) && p.getInventory().contains(554, 5)) {
p.getInventory().deleteItem(556, 4);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 5);
gfx = 129;
anim = 1162;
projectile = 130;
damage = 16;
gfx2 = 131;
req = 59;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 70: //Wind wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
gfx = 158;
anim = 1162;
projectile = 159;
damage = 17;
gfx2 = 160;
req = 62;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 73: //Water wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(555, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 7);
gfx = 161;
anim = 1162;
projectile = 162;
damage = 18;
gfx2 = 163;
req = 65;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 77: //Earth Wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(557, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 7);
gfx = 164;
anim = 1162;
projectile = 165;
damage = 19;
gfx2 = 166;
req = 70;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 80: //FireWave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(554, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(554, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 7);
gfx = 155;
anim = 1162;
projectile = 156;
damage = 20;
gfx2 = 157;
req = 75;
usingAncient = false;
p.MageTime =5;
}
}
}
break;
case 193:
projectile = -1;
gfx = -1;
usingAncient = true;
switch (autoCastAncient) {
case 23: //Ice barrage
gfx = 368;
anim = 1979;
damage = 30;
gfx2 = 369;
req = 94;
freeze = true;
freezeDelay = 20;
break;
case 35: //Shadow barrage
//gfx = 368;
anim = 1978;
damage = 28;
gfx2 = 383;
req = 88;
break;
case 31: //Smoke barrage
//gfx = 368;
anim = 1979;
damage = 27;
gfx2 = 391;
req = 86;
break;
case 21: //Ice blitz
//gfx = 368;
anim = 1978;
damage = 26;
gfx2 = 367;
req = 82;
freeze = true;
freezeDelay = 15;
break;
case 25: //Blood Blitz
//gfx = 368;
anim = 1978;
damage = 25;
gfx2 = 375;
req = 80;
break;
case 33: //Shadow blitz
//gfx = 368;
anim = 1978;
damage = 24;
gfx2 = 381;
req = 76;
break;
case 29: //Smoke blitz
//gfx = 368;
anim = 1978;
damage = 23;
gfx2 = 387;
req = 74;
break;
case 22: //Ice burst
// gfx = 368;
anim = 1979;
damage = 22;
gfx2 = 363;
req = 70;
freeze = true;
freezeDelay = 10;
break;
case 26: //Blood Burst
// gfx = 368;
anim = 1979;
damage = 21;
gfx2 = 376;
req = 68;
break;
case 34: //Shadow Burst
//gfx = 368;
anim = 1978;
damage = 17;
gfx2 = 382;
req = 64;
break;
case 30: //Smoke Burst
//gfx = 368;
anim = 1979;
damage = 17;
gfx2 = 389;
req = 62;
break;
case 20: //Ice rush
//gfx = 368;
anim = 1978;
damage = 16;
gfx2 = 361;
req = 58;
freeze = true;
freezeDelay = 5;
break;
case 24: //Blood Rush
//gfx = 368;
anim = 1978;
damage = 15;
gfx2 = 361;
req = 56;
break;
case 32: //Shadow Rush
//gfx = 368;
anim = 1978;
damage = 14;
gfx2 = 379;
req = 52;
break;
case 28: //Smoke Rush
// gfx = 368;
anim = 1978;
damage = 13;
gfx2 = 385;
req = 50;
break;
case 39:// miasmic barrage
gfx = 1853;
anim = 10518;
damage = 35;
gfx2 = 1854;
req = 97;
break;
case 38://miasmic burst
gfx = 1848;
anim = 10516;
damage = 24;
gfx2 = 1849;
req = 73;
break;
case 37://miasmic blitz
gfx = 1850;
anim = 10524;
damage = 28;
gfx2 = 1851;
req = 85;
break;
case 36://miasmic rush
gfx = 1845;
anim = 10513;
damage = 18;
gfx2 = 1846;
req = 61;
break;
}
break;
}
}
if ( p.getSkills().getLevelForXp(6) <= req) {
p.sm("You need level " + req+ " magic to use this spell.");
p.pvn().autoCasting = false;
p.getWalkingQueue().reset();// fixed
} else if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), n.getLocation().getX(), n.getLocation().getY()) <= 8) {
p.getWalkingQueue().reset();
}
if(p.combatDelay == 0) {
final int magichit = Misc.random(damage);
p.turnTo(n);
p.combatDelay =+ 5;
p.getWalkingQueue().reset();
p.graphics(gfx, (100 << 16));
p.animate(anim);
World.getWorld().getProjectileManager().fire(p.get Location(), n.getLocation(), 50, 70, projectile, 43, 31, n);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
n.hit(p, magichit);
p.getSkills().addXp(6, magichit * 1000);
n.graphics(gfx2);
this.stop();
}
});
}
} catch(Exception e) {
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public void RangeAttack(final Player p, final NPC p2) {
try {
/*if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}*/
//if (p.Soulsplit == true) {
// CursesEffectsHandler.handleSoulSplit(p, p2, meleeDamage);
//}
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) <= 8) {
p.getWalkingQueue().reset();
}
if(p.combatDelay == 0 && p.cantPk == false) {
if(!p.getEquipment().hasAmmo()) {
p.sm("You dont have any ammo in your backpack.");
return;
}
p2.pid = p.getIndex();
p2.Attacking = true;
p.combatDelay += PkDefinitions.getCombatDelay(p);
if(p.getEquipment().isWieldingHandCannon()) {
if(p.usingSpecial) {
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(12174, 0);
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 0, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, Misc.random(p.NPCMaxHitRange() * 1.50));
BossesDef(p, p2 , (int) (p.NPCMaxHitRange() * 1.50), 0);
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 0, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingDbow()) {
if(p.usingSpecial) {
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
World.getWorld().registerEvent(new Event(100) {
public void execute() {
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange() * 0), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange() * 0));
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange() * 0), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange() * 0));
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(100) {
public void execute() {
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingCBow()) {
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if(Misc.random(10) == 1) {
EnchantSpec(p, p2, p.NPCMaxHitRange());
p2.animate(p2.getDefenceAnimation());
this.stop();
} else {
p2.hit(p, p.NPCMaxHitRange());
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.animate(p2.getDefenceAnimation());
this.stop();
}
}
});
} else if(p.usingSpecial) {
} else {
if(p.getEquipment().get(3).getDefinition().getId() == 15241) {
p.sm("You need to be wearing handcannon ammo to fire this weapon.");
return;
}
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
this.stop();
}
});
}
}
} catch(Exception e) {
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public void EnchantSpec(Player p, NPC n, int rangeDamage) {
try {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 9242:
rangeDamage = rangeDamage + Misc.random((n.getHp()/5));
if (rangeDamage >= 100)
rangeDamage = 100;
p.hit(Misc.random(p.getHp())/10);
n.graphics(754);
p.getActionSender().SendSound(2912,100,0);
break;
case 9244:
rangeDamage = rangeDamage + Misc.random(25);
n.graphics(756);
p.getActionSender().SendSound(2915,100,0);
break;
case 9245:
rangeDamage = Misc.random((int) (rangeDamage * 1.25));
p.heal(rangeDamage);
n.graphics(753);
p.getActionSender().SendSound(2917,100,0);
break;
case 9237:
n.pid = -1;
n.Attacking = false;
n.graphics(755);
p.getActionSender().SendSound(2914,100,0);
}
BossesDef(p, n , rangeDamage, 1);
n.hit(p, rangeDamage);
} catch(Exception e) {
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
public void MeleeAttack(final Player p, final NPC n) {
int distance = 1;
if (n.getId() == 8133 || (n.getId() >= 1158 && n.getId() <= 1160) || n.getId() == 6260 || n.getId() == 6222) {
distance = 4;
}
if (n.getId() == 8350 || n.getId() == 8351 || n.getId() == 8352) {
distance = 4;
}
/*if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}*/
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), n.getLocation().getX(), n.getLocation().getY()) <= distance) {
if(p.combatDelay == 0) {
n.pid = p.getIndex();
n.Attacking = true;
final int meleeDamage = Misc.random(p.NPCMaxHitMelee());
final int meleeDamage2 = Misc.random(p.NPCMaxHitMelee());
BossesDef(p, n , meleeDamage, 0);
p.turnTo(n);
n.turnTo(p);
p.combatDelay = PkDefinitions.getCombatDelay(p);
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, n, meleeDamage);
}
if (p.DeflectMelee == true){
CursesEffectsHandler.handleDeflectMelee(p, n);
}
//if (p2.DeflectMagic == true){
// CursesEffectsHandler.handleDeflectMelee(p, n, damage);
//}
//if (p2.DeflectRange == true){
// CursesEffectsHandler.handleDeflectRange(p, n, damage);
//}
//if (p.SapWarrior == true){
// CursesEffectsHandler.handleSapWarrior(p, n, damage);
//}
//if (p.SapRanger == true){
// CursesEffectsHandler.handleSapRanger(p, n, damage);
//}
//if (p.SapMage == true){
// CursesEffectsHandler.handleSapMage(p, n, damage);
//}
//if (p.SapSpirit == true){
// CursesEffectsHandler.handleSapSpirit(p, p2);
//}
if(!p.usingSpecial) {
World.getWorld().submit(new Tickable(1) {
@Override
public void execute() {
n.hit(p, meleeDamage);
n.animate(n.getDefenceAnimation());
this.stop();
}
});
p.animate(PkDefinitions.getCombatAnim(p));
}
if(p.usingSpecial) {
p.usingSpecial = false;
if (p.specialAmount >= p.getSpecialAmount()) {
p.specialAmount -= p.getSpecialAmount();
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 14484:
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw1 = meleeDamage/2;int dclaw2 = meleeDamage/4;int dclaw3 = meleeDamage/4;
if (meleeDamage == 0) {
dclaw1 = Misc.random(p.MaxHitMelee());
dclaw2 = dclaw1/2;
dclaw3 = dclaw1/4;
}
if (meleeDamage == 0 && dclaw1 == 0) {
dclaw2 = Misc.random(p.MaxHitMelee());
dclaw3= dclaw2/2;
}
if (meleeDamage == 0 && dclaw1 == 0 && dclaw2 == 0) {
dclaw3 = Misc.random(p.MaxHitMelee());
}
n.hit(p, meleeDamage);
n.hit(p, dclaw1);
n.hit(p, dclaw2);
n.hit(p, dclaw3);
break;
case 14486:
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw5 = meleeDamage/6;int dclaw6 = meleeDamage/8;int dclaw7 = meleeDamage/8;
if (meleeDamage == 0) {
dclaw1 = Misc.random(p.MaxHitMelee());
dclaw2 = dclaw5/6;
dclaw3 = dclaw7/8;
}
if (meleeDamage == 0 && dclaw5 == 0) {
dclaw6 = Misc.random(p.MaxHitMelee());
dclaw7= dclaw6/6;
}
if (meleeDamage == 0 && dclaw5 == 0 && dclaw6 == 0) {
dclaw3 = Misc.random(p.MaxHitMelee());
}
n.hit(p, meleeDamage);
n.hit(p, dclaw5);
n.hit(p, dclaw6);
n.hit(p, dclaw7);
break;
case 13899:
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
this.stop();
}
});
p.animate(10502, 0);
break;
case 13902:
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.25));
this.stop();
}
});
p.graphics(1840, 0);
p.animate(10505, 0);
break;
case 15259:
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
this.stop();
}
});
p.animate(12031, 0);
p.graphics(2144, 100);
break;
case 4151: //whip
n.graphics(341, 0);
p.animate(1658, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n , meleeDamage, 0);
this.stop();
}
});
break;
case 1215:
case 10581:
n.graphics(252, (100 << 16));
p.animate(1062, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
n.hit(p, (int) (meleeDamage2 * 1.10));
BossesDef(p, n , (int) (meleeDamage * 1.10), 0);
BossesDef(p, n , (int) (meleeDamage2 * 1.10), 0);
this.stop();
}
});
p.getActionSender().SendSound(2537,100,0);
break;
case 5698:
n.graphics(252, (100 << 16));
p.animate(1062, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
n.hit(p, (int) (meleeDamage2 * 1.10));
BossesDef(p, n , (int) (meleeDamage * 1.10), 0);
BossesDef(p, n , (int) (meleeDamage2 * 1.10), 0);
this.stop();
}
});
p.getActionSender().SendSound(2537,100,0);
break;
case 11730:
p.graphics(1224, 0);
p.animate(7072, 0);
n.graphics(1194, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
n.hit(p, meleeDamage2);
BossesDef(p, n , meleeDamage2, 0);
this.stop();
}
});
p.getActionSender().SendSound(3853,100,0);
break;
case 11694:
p.graphics(1222, 0);
p.animate(7074, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.15));
BossesDef(p, n , (int) (meleeDamage * 1.15), 0);
this.stop();
}
});
p.getActionSender().SendSound(3865,100, 0);
break;
case 11716:
p.graphics(1225, 0);
p.animate(7001, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
BossesDef(p, n, (int) (meleeDamage * 1.10), 0);
this.stop();
}
});
break;
case 13450:
p.graphics(1222, 0);
p.animate(7074, 0);
final int hit13450 = (int) (meleeDamage * 1.65);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, hit13450);
BossesDef(p, n, (int) (meleeDamage * 1.65), 0);
this.stop();
}
});
p.getActionSender().SendSound(3865,100, 0);
break;
case 10887:
p.graphics(1027, 0);
p.animate(5870, 0);
final int hit10887 = (int) (meleeDamage * 1.05);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, hit10887);
BossesDef(p, n, (int) (meleeDamage * 1.05), 0);
this.stop();
}
});
break;
case 11696:
p.graphics(1223, 0);
p.animate(7073, 0);
final int hit11696 = (int) (meleeDamage * 1.10);
World.getWorld().submit(new Tickable(1) {
public void execute() {
BossesDef(p, n, (int) (meleeDamage * 1.10), 0);
n.hit(p, hit11696);
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
break;
case 11698:
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage/2);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 11700:
p.graphics(2110, 0);
p.animate(7070, 0);
n.graphics(2111, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 13444: // lent whip & colored whips
case 15441:
case 15442:
case 15443:
case 15444:
final int lwhip1 = meleeDamage/2;
final int lwhip2 = meleeDamage/3;
final int lwhip3 = meleeDamage/5;
final int lwhip4 = meleeDamage/5;
p.graphics(1224, 0);
n.graphics(2015, 0);
p.animate(7072, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, lwhip1);
n.hit(p, lwhip2);
n.hit(p, lwhip3);
n.hit(p, lwhip4);
this.stop();
}
});
break;
case 13117: // invalius flail thing
final int lflail1 = meleeDamage/5;
final int lflail2 = meleeDamage/8;
p.graphics(1930, 0);
n.graphics(1931, 0);
p.animate(1658, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, lflail1);
n.hit(p, lflail2);
this.stop();
}
});
break;
case 13451://lent bgs
p.graphics(1223, 0);
p.animate(7073, 0);
final int hit13451 = (int) (meleeDamage * 1.15);
World.getWorld().submit(new Tickable(1) {
public void execute() {
BossesDef(p, n, (int) (meleeDamage * 1.15),
0);
n.hit(p, hit13451);
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
break;
case 13452://lent sgs
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 13453://lent zgs
p.graphics(2110, 0);
p.animate(7070, 0);
n.graphics(2111, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n , meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 1305:
p.graphics(2117, 0);
p.animate(12031, 0);
final int hit1305 = (int) (meleeDamage * 1.20);
World.getWorld().submit(new Tickable(1) {
public void execute() {
BossesDef(p, n, (int) (meleeDamage * 1.20),
0);
n.hit(p, hit1305);
this.stop();
}
});
p.getActionSender().SendSound(2529,100,0);
break;
case 4587:
p.graphics(2118, 0);
p.animate(12005, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(2540,100,0);
break;
case 3204:
p.graphics(282, 50);
n.graphics(254, 100);
p.animate(1665, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
n.hit(p, meleeDamage2);
BossesDef(p, n, meleeDamage, 0);
BossesDef(p, n, meleeDamage2, 0);
this.stop();
}
});
break;
case 1434:
p.graphics(251, 50);
p.animate(1060, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
int hit1434 = (int) (meleeDamage * 1.25);
BossesDef(p, n, (int) (meleeDamage * 1.25),
0);
n.hit(p, hit1434);
this.stop();
}
});
p.getActionSender().SendSound(2541,100,0);
break;
case 7158:
p.graphics(559, 0);
p.animate(3157, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
break;
default:
n.hit(p, meleeDamage);
BossesDef(p, n , meleeDamage, 0);
p.animate(PkDefinitions.getCombatAnim(p));
p.getActionSender().sendMessage("This weapon has no special Attack, if you still see special bar please relogin.");
}
}else{p.getActionSender().sendMessage("You do not have enough special energy.");}
}
}
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public int getMagicDelay() {
NPC p2 = World.getWorld().getNpcs().get(magicIndex);
if (p == null || p2 == null)
return 1300;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 1)
return 700;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 2)
return 700;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 3)
return 900;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 4)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 5)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 6)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 7)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 8)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 9)
return 1045;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 10)
return 1045;
return 1;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public boolean usingRange(Player p) {
if(p.getEquipment().get(3) == null) {
return false;
}
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 14684:
case 4212:
case 4214:
case 4734:
case 11235:
case 15701:
case 15702:
case 15703:
case 15704:
case 9185:
case 18357:
case 861:
case 868:
case 867:
case 866:
case 865:
case 863:
case 14121:
case 15241:
case 10034:
case 11230:
case 841:
case 843:
case 845:
case 847:
case 849:
case 851:
case 853:
case 855:
case 857:
case 859:
return true;
case 0:
return false;
case -1:
return false;
default:
return false;
}
}
public boolean LightEquipped(Player p) {
try {
if(p.getEquipment().get(3).getDefinition().getId() == 6746 || p.getEquipment().get(3).getDefinition().getId() == 6745){
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public void BossesDef(final Player p, final NPC n , int Damage, int AttType) {
p.addHitExp(p, Damage);
switch (n.getId()) {
case 8324:
case 8325:
case 8326:
case 8327:
if (n.NPCCharges > 0) {
n.NPCDamage[AttType] += Damage;
if (n.NPCDamage[0] >= 15) {
n.NPCDamage[0] = 0;
n.setId(8325);
}
if (n.NPCDamage[1] >= 15) {
n.NPCDamage[1] = 0;
n.setId(8326);
}
if (n.NPCDamage[2] >= 15) {
n.NPCDamage[2] = 0;
n.setId(8327);
}
}
break;
case 8350:
case 8351:
case 8352:
n.NPCDamage[AttType] += Damage;
if (n.NPCDamage[0] >= 31) {
n.NPCDamage[0] = 0;
n.setId(8352);
}
if (n.NPCDamage[1] >= 31) {
n.NPCDamage[1] = 0;
n.setId(8351);
}
if (n.NPCDamage[2] >= 31) {
n.NPCDamage[2] = 0;
n.setId(8350);
}
if (n.UsingThis == false) {
n.graphics(1885);
if (LightEquipped(p) && Misc.random(2) == 1) {
n.UsingThis = true;
p.sm("The demon is temporarily weakened by your weapon.");
World.getWorld().registerEvent(new Event(30000) {
public void execute() {
if (!n.isDead()) {
p.sm("The Tormented demon regains its strength against your weapon.");
}
n.UsingThis = false;
this.stop();
}
});
}
}
break;
}
}
public int getDbowDrawback() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1110;
case 892:
return 1109;
case 890:
return 1108;
case 888:
return 1107;
case 886:
return 1106;
case 884:
return 1105;
case 882:
return 1104;
default:
return 1114;
}
}
public int getDbowSpec() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1099;
default:
return 1102;
}
}
/*public int getMaxHit(Player p) {
int base = damage;
double strengthMultiplier = (baseBonus * 0.00175) + 0.1;
int maxHit = (int) Math.floor(combatStrength * strengthMultiplier * 1.05);
if(FullDharokEquipped()) {
maxHit += (int)((p.getSkills().getLevelForXp(3) - p.getSkills().getLevel(3))/2.2);
}
}*/
}
7) go to CommandsPacketHandler.java in ((sourcename)\src\com\rs2hd\packethandler) and ADD this in (DON'T replace your code):
if (cmd[0].equals("::curses")) {
if(cmd[1].equalsIgnoreCase("true") || cmd[1].equalsIgnoreCase("false")){
player.sm("It's just ::curses now, i fixed it :3");
return;
}
if(!player.cursesToggle){
player.sm("You sense a surge of power flow through your body!");
player.curses = true;
player.getActionSender().sendConfig(1086, 1);
player.cursesToggle = true;
} else if (player.cursesToggle) {
player.getActionSender().sendConfig(1086, 0);
player.curses = false;
player.sm("You sense a surge of purity flow through your body!");
player.cursesToggle = false;
}
}
That should be it! if you have any errors, reply with the error message :3 have fun!
Also, Please don't leech :( I know you probably won't, but im asking you nicely -.-
5) Now go to PlayerVsPlayer.java in (sourcenamehere)\com\rs2hd\content\skills\combat and replace code with mine:
package com.rs2hd.content.skills.combat;
import com.rs2hd.content.skills.prayer.CursesEffectsHandl er;
import com.rs2hd.content.Following;
import com.rs2hd.event.*;
import com.rs2hd.model.*;
import com.rs2hd.GameEngine;
import com.rs2hd.tickable.Tickable;
import com.rs2hd.util.Misc;
public class PlayerVsPlayer {
private transient Player p;
int projectile = -1;
int req;
int gfx2;
int damage;
int anim;
int gfx;
int freezeDelay = 0;
int timer;
int magicIndex;
boolean usingAncient;
boolean freeze = false;
boolean barrage = false;
public void setPlayer(Player p) {
this.p = p;
}
public void tick() {
if(timer > 0) {
timer--;
}
}
public int calculateMelee(Player player, Player opponent) {
return CombatFormula.maxMelee(player, opponent);
}
public int calculateRange(Player player, Player opponent) {
int rangeAtk = Misc.random(CombatFormula.rangeAttack(player));
int rangeDef = Misc.random(CombatFormula.rangeDef(opponent));
if(rangeAtk <= rangeDef && Misc.random(2) == 1) {
return 0;
}
return Misc.random(CombatFormula.maxRange(player));
}
private static boolean canAttack(Player p, Player p2) {
boolean first = p.inClanWars() && p.getLocation().getClanLevel() > 0;
boolean second = p2.inClanWars() && p2.getLocation().getClanLevel() > 0;
if(p.inFightPits && !p2.inFightPits) {
return false;
}
if(!p.inFightPits && p2.inFightPits) {
return false;
}
if(!p.inFightPits) {
if(!first) {
p.getActionSender().sendMessage("You need to be inside of a clan wars free-for-all or risked zone to attack.");
p.resetAttack();
return false;
}
if(!second) {
p.getActionSender().sendMessage("That player isn't inside the attacking zone.");
p.resetAttack();
return false;
}
if(p.isAggressor()) {
if(p2.getInteractingWith() != p) {
p.getHeadIcons().setSkulled(true);
p.getUpdateFlags().setAppearanceUpdateRequired(tru e);
}
}
}
/*int wildy = Math.min(Location.wildernessLevel(p.getLocation()) , Location.wildernessLevel(p2.getLocation()));
int levelDiff = Math.abs(p.getSkills().getCombatLevel() - p2.getSkills().getCombatLevel());
if(wildy < levelDiff) {
p.getActionSender().sendMessage("The difference between your Combat Level and the Combat Level of your opponent is");
p.getActionSender().sendMessage("too great.");
p.getActionSender().sendMessage("You need to move deeper into the wilderness to attack that target.");
p.resetAttack();
return false;
} else if(p.isAggressor()) {
if(p2.getInteractingWith() != p) {
p.getHeadIcons().setSkulled(true);
p.getUpdateFlags().setAppearanceUpdateRequired(tru e);
}
}*/
return true;
}
public void Attack(Player p2) {
if(p == null || p2 == null || !canAttack(p, p2)) {
return;
}
if (p.getInventory().contains(4561, 1)) {
p.getActionSender().sendMessage("You cannot PvP with purple sweets!.");
p.resetAttack();
return;
}
if (p2.getInventory().contains(4561, 1)) {
p.getActionSender().sendMessage("They cannot PvP with purple sweets!.");
p2.resetAttack();
return;
}
if (p.THICKSKIN == true && p.PrayerTime == 0) {
p2.hit(Misc.random(10));
p.PrayerTime = 15;
p2.getSkills().DrainPray(1);
p2.graphics(1935);
return;
}
if (p.combatWith != p2.getIndex() && p.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("You are already in combat.");
p.resetAttack();
return;
}
if (p2.combatWith != p.getIndex() && p2.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("That player is already in combat.");
p.resetAttack();
return;
}
if(p.isDead() || p2.isDestroyed() || p2.isDead()) {
p.resetAttack();
return;
}
if(!p.Attacking) {
p.resetAttack();
return;
}
p.setCombatTimer();
p2.setCombatTimer();
if(p.pvn().autoCasting == true) {
MagicAttack(p, p2);
} else if (usingRange(p)) {
RangeAttack(p, p2);
} else {
MeleeAttack(p, p2);
}
}
public boolean RecoilRingEquipped(Player p2) {
try {
if(p2.getEquipment().get(12).getDefinition().getId () == 2550) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean divineEquipped(Player p2) {
try {
if(p2.getEquipment().get(5).getDefinition().getId( ) == 13740) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean elysianEquipped(Player p2) {
try {
if(p2.getEquipment().get(5).getDefinition().getId( ) == 13742) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullDharokEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 4716 && p.getEquipment().get(4).getDefinition().getId() == 4720 && p.getEquipment().get(7).getDefinition().getId() == 4722 && p.getEquipment().get(3).getDefinition().getId() == 4718) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullVoidRangeEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 11664 && p.getEquipment().get(4).getDefinition().getId() == 8839 && p.getEquipment().get(7).getDefinition().getId() == 8840 && p.getEquipment().get(3).getDefinition().getId() == 8842) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullVoidMeleeEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 11665 && p.getEquipment().get(4).getDefinition().getId() == 8839 && p.getEquipment().get(7).getDefinition().getId() == 8840 && p.getEquipment().get(3).getDefinition().getId() == 8842) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean FullVoidMagicEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 11663 && p.getEquipment().get(4).getDefinition().getId() == 8839 && p.getEquipment().get(7).getDefinition().getId() == 8840 && p.getEquipment().get(3).getDefinition().getId() == 8842) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
//void end
public boolean vestaLongSwordEquipped(Player p) {
try {
if(p.getEquipment().get(3).getDefinition().getId() == 13899) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public boolean armadylGodswordEquipped(Player p) {
try {
if(p.getEquipment().get(3).getDefinition().getId() == 11694) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public void RangeAttack(final Player p, final Player p2) {
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) > 6) {
Following.combatFollow(p, p2, true);
}
try {
final int rangeHit = calculateRange(p, p2);
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) <= 8) {
p.getWalkingQueue().reset();
if (p2.veng == true) {
int vengDamage = (int) (rangeHit * 0.75);
if (vengDamage > 0) {
p2.setLastChatMessage(new ChatMessage(0, 16, "Taste Vengeance!"));
p2.getUpdateFlags().setChatTextUpdateRequired(true );
p.hit(vengDamage);
p2.veng = false;
}
}
}
if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
//if(p.DeflectMelee == true){
//}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2, rangeHit);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, p2, rangeHit);
}
//if (p2.DeflectMelee == true){
//CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
//}
//if (p2.DeflectMagic == true){
// CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
//}
if (p2.DeflectRange == true){
CursesEffectsHandler.handleDeflectRange(p, p2, damage);
}
if (p.SapWarrior == true){
CursesEffectsHandler.handleSapWarrior(p, p2, damage);
}
if (p.SapRanger == true){
CursesEffectsHandler.handleSapRanger(p, p2, damage);
}
if (p.SapMage == true){
CursesEffectsHandler.handleSapMage(p, p2, damage);
}
if (p.SapSpirit == true){
CursesEffectsHandler.handleSapSpirit(p, p2);
}
if (p.combatWith != p2.getIndex() && p.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("You are already in combat.");
p.resetAttack();
return;
}
if (p2.combatWith != p.getIndex() && p2.combatWith != 0 && !p.multiZone()) {
p.getActionSender().sendMessage("That player is already in combat.");
p.resetAttack();
return;
}
if(p.combatDelay == 0) {
if(!p.getEquipment().hasAmmo()) {
p.sm("You dont have any ammo in your backpack.");
return;
}
p2.combatResetWith += PkDefinitions.getCombatDelay(p) + 1;
GameEngine.poison.checkForPoison(p, p2);
p2.combatWith = p.getIndex();
p.combatDelay += PkDefinitions.getCombatDelay(p);
if(p.getEquipment().isWieldingHandCannon()) {
if(p.usingSpecial) {
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(12174, 0);
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, (int) (rangeHit * 1.10));
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if (elysianEquipped(p2)) {
if(Misc.random(3) == 3) {
p2.hit(p, rangeHit/2);
p2.getActionSender().sendMessage("Your Elysian Spirit Shield removed a part of your opponent hit.");
}
} else if (divineEquipped(p2)) {
if(Misc.random(3) == 3) {
int prayDrain = Misc.random(20);
p2.hit(Misc.random(15));
p2.getActionSender().sendMessage("Your Divine Spirit shield took the hit and decreased some of your prayer.");
p2.getSkills().hitPray(prayDrain);
}
} else {
p2.hit(p, rangeHit);
p2.animate(p2.getEquipment().getDefenceAnimation() );
}
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingDbow()) {
if(p.usingSpecial) {
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.59);
damage = Misc.random(damage);
if(damage > 49) {
if(Misc.random(4) != 2) {
damage = 40 + Misc.random(6);
} else {
damage = 25 + Misc.random(6);
}
}
p2.hit(p, damage);
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.62);
damage = Misc.random(damage);
if(damage > 49) {
if(Misc.random(4) == 2) {
damage = 40 + Misc.random(6);
} else {
damage = 25 + Misc.random(6);
}
}
p2.hit(p, damage);
p2.animate(p2.getEquipment().getDefenceAnimation() );
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.48);
p2.hit(p, damage);
p2.animate(p2.getEquipment().getDefenceAnimation() );
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
int damage = (int) (rangeHit * 1.48);
p2.hit(p, damage);
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingCBow()) {
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if (elysianEquipped(p2)) {
if(Misc.random(3) == 3) {
p2.hit(p, rangeHit/2);
p2.getActionSender().sendMessage("Your Elysian Spirit Shield removed a part of your opponent hit.");
}
} else if (divineEquipped(p2)) {
if(Misc.random(3) == 3) {
int prayDrain = Misc.random(20);
p2.hit(Misc.random(15));
p2.getActionSender().sendMessage("Your Divine Spirit shield took the hit and decreased some of your prayer.");
p2.getSkills().hitPray(prayDrain);
}
} else if(Misc.random(10) == 1) {
EnchantSpec(p, p2, rangeHit);
p2.animate(p2.getEquipment().getDefenceAnimation() );
} else {
p2.hit(p, rangeHit);
p2.animate(p2.getEquipment().getDefenceAnimation() );
}
this.stop();
}
});
} else if(p.usingSpecial) {
switch(p.getEquipment().get(3).getDefinition().get Id()) {
}
} else {
if(p.getEquipment().get(3).getDefinition().getId() == 15241) {
p.sm("You need to be wearing handcannon ammo to fire this weapon.");
return;
}
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if (elysianEquipped(p2)) {
if(Misc.random(3) == 3) {
p2.hit(p, rangeHit/2);
p2.getActionSender().sendMessage("Your Elysian Spirit Shield removed a part of your opponent hit.");
}
} else if (divineEquipped(p2)) {
if(Misc.random(3) == 3) {
int prayDrain = Misc.random(20);
p2.hit(Misc.random(15));
p2.getActionSender().sendMessage("Your Divine Spirit shield took the hit and decreased some of your prayer.");
p2.getSkills().hitPray(prayDrain);
}
} else {
p2.hit(p, rangeHit);
}
this.stop();
}
});
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
public void EnchantSpec(Player p, Player p2, int rangeDamage) {
try {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 9242:
rangeDamage = rangeDamage + Misc.random(p2.getHp()/5);
if (rangeDamage >= 149)
rangeDamage = 149;
p.hit(Misc.random(p.getHp())/10);
p2.graphics(754);
p.getActionSender().SendSound(2912,100,0);
p2.getActionSender().SendSound(2912,100,0);
break;
case 9244:
int FireDamage = Misc.random(20);
if (p2.getEquipment().get(3).getDefinition().getId() == 11283 ||p2.getEquipment().get(3).getDefinition().getId() == 1540)
FireDamage = Misc.random(5);
rangeDamage = rangeDamage + FireDamage;
p2.graphics(756);
p.getActionSender().SendSound(2915,100,0);
p2.getActionSender().SendSound(2915,100,0);
break;
case 9245:
rangeDamage = Misc.random((int) (rangeDamage * 1.10));
p.heal(rangeDamage);
p2.graphics(753);
p.getActionSender().SendSound(2917,100,0);
p2.getActionSender().SendSound(2917,100,0);
break;
case 9237:
p2.id = -1;
p2.Attacking = false;
p2.graphics(755);
p.getActionSender().SendSound(2914,100,0);
p2.getActionSender().SendSound(2914,100,0);
break;
}
p2.hit(p, rangeDamage);
} catch(Exception e) {
}
}
public void MeleeAttack(final Player p, final Player p2) {
try {
if (p.frozen == 0) {
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) != 1)
Following.combatFollow(p, p2, false);
}
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) < 2) {
if(p.combatDelay == 0) {
final int meleeDamage = calculateMelee(p, p2);
p2.combatResetWith += PkDefinitions.getCombatDelay(p)+1;
GameEngine.poison.checkForPoison(p, p2);
p.IsFollowing = false;
p.FollowingId = -1;
p2.combatWith = p.getIndex();
p.combatDelay += PkDefinitions.getCombatDelay(p);
if (p2.veng) {
int vengDamage = ((meleeDamage/4)*3);
if (vengDamage != 0) {
p2.setLastChatMessage(new ChatMessage(0, 16, "Taste Vengeance!"));
p2.getUpdateFlags().setChatTextUpdateRequired(true );
p.hit(vengDamage);
p2.veng = false;
}
}
if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2,meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2, meleeDamage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, p2, meleeDamage);
}
if (p2.DeflectMelee == true){
CursesEffectsHandler.handleDeflectMelee(p, p2, meleeDamage);
}
//if (p2.DeflectMagic == true){
// CursesEffectsHandler.handleDeflectMelee(p, p2, meleeDamage);
//}
//if (p2.DeflectRange == true){
// CursesEffectsHandler.handleDeflectRange(p, p2, meleeDamage);
//}
if (p.SapWarrior == true){
CursesEffectsHandler.handleSapWarrior(p, p2, meleeDamage);
}
if (p.SapRanger == true){
CursesEffectsHandler.handleSapRanger(p, p2, meleeDamage);
}
if (p.SapMage == true){
CursesEffectsHandler.handleSapMage(p, p2, meleeDamage);
}
if (p.SapSpirit == true){
CursesEffectsHandler.handleSapSpirit(p, p2);
}
if(!p.usingSpecial) {
p.animate(PkDefinitions.getCombatAnim(p));
p.getActionSender().SendSound(SoundID(p),100,0);
p2.getActionSender().SendSound(SoundID(p),100,0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
p2.animate(p2.getEquipment().getDefenceAnimation() );
this.stop();
}
});
} else {
p.usingSpecial = false;
if (p.specialAmount >= p.getSpecialAmount()) {
p.specialAmount -= p.getSpecialAmount();
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 4151:
p2.graphics(341, 0);
p.animate(1658, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
break;
case 5698:
case 1215:
p.graphics(252, (100 << 16));
p.animate(1062, 0);
p.getActionSender().SendSound(2537,100,0);
p2.getActionSender().SendSound(2537,100,0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 0.88));
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 0.78));
this.stop();
}
});
this.stop();
}
});
break;
case 11730:
p.graphics(1224, 0);
p2.graphics(1194, 0);
p.animate(7072, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (1.14 * meleeDamage * 0.73));
this.stop();
}
});
this.stop();
}
});
p.getActionSender().SendSound(3853,100,0);
p2.getActionSender().SendSound(3853,100,0);
break;
case 11694:
p.graphics(1222, 0);
p.animate(7074, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3865,100,0);
p2.getActionSender().SendSound(3865,100,0);
break;
case 13450:
p.graphics(1222, 0);
p.animate(7074, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 0.60));
this.stop();
}
});
p.getActionSender().SendSound(3865,100,0);
p2.getActionSender().SendSound(3865,100,0);
break;
case 10887:
p.graphics(1027, 0);
p.animate(5870, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
break;
case 15259:
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.animate(12031);
p.graphics(2144);
break;
case 11696:
p.graphics(1223, 0);
p.animate(7073, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.30));
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
p2.getActionSender().SendSound(3834,100,0);
break;
case 13444: // lent whip & colored whips
case 15441:
case 15442:
case 15443:
case 15444:
final int lwhip1 = meleeDamage/2;
final int lwhip2 = meleeDamage/3;
final int lwhip3 = meleeDamage/5;
final int lwhip4 = meleeDamage/5;
p.graphics(1224, 0);
p2.graphics(2015, 0);
p.animate(7072, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, lwhip1);
p2.hit(p, lwhip2);
p2.hit(p, lwhip3);
p2.hit(p, lwhip4);
this.stop();
}
});
break;
case 11716:
p.graphics(1225, 0);
p.animate(7001, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit((int) (meleeDamage * 1.10));
this.stop();
}
});
break;
case 11698:
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage/2);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 11700:
p.graphics(2110, 0);
p.animate(7070, 0);
p2.graphics(2111, 0);
p2.frozen = 15;
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 13451:
p.graphics(1223, 0);
p.animate(7073, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.30));
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
p2.getActionSender().SendSound(3834,100,0);
break;
case 13452:
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 13453:
p.graphics(2110, 0);
p.animate(7070, 0);
p2.frozen = 60;
p2.graphics(2111, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.20));
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
p2.getActionSender().SendSound(3857,100,0);
break;
case 1305:
p.graphics(2117, 0);
p.animate(12031, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.20));
this.stop();
}
});
p.getActionSender().SendSound(2529,100,0);
p2.getActionSender().SendSound(2529,100,0);
break;
case 4587:
p.graphics(2118, 0);
p.animate(12005, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
p.getActionSender().SendSound(2540,100,0);
p2.getActionSender().SendSound(2540,100,0);
break;
case 3204:
p.graphics(282, 0);
p2.graphics(254, 0);
p.animate(1665, 0);
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (1.13 * (meleeDamage * 0.94)));
this.stop();
}
});
this.stop();
}
});
break;
case 1434:
p.graphics(251, 50);
p.animate(1060, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.25));
this.stop();
}
});
p.getActionSender().SendSound(2541,100,0);
p2.getActionSender().SendSound(2541,100,0);
break;
case 7158:
p.graphics(559, 0);
p.animate(3157, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
this.stop();
}
});
break;
case 13902:
p.graphics(1840, 0);
p.animate(10505, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.60));
this.stop();
}
});
break;
case 14484:
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw1 = meleeDamage/2;int dclaw2 = meleeDamage/4;int dclaw3 = meleeDamage/4;
if (meleeDamage == 0) {
dclaw1 = calculateMelee(p, p2);
dclaw2 = dclaw1/2;
dclaw3 = dclaw1/4;
}
if (meleeDamage == 0 && dclaw1 == 0) {
dclaw2 = calculateMelee(p, p2);
dclaw3= dclaw2/2;
}
if (meleeDamage == 0 && dclaw1 == 0 && dclaw2 == 0) {
dclaw3 = calculateMelee(p, p2);
}
final int[] fDclaw = {dclaw1, dclaw2, dclaw3};
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, fDclaw[0]);
p2.hit(p, fDclaw[1]);
p2.hit(p, fDclaw[2]);
this.stop();
}
});
this.stop();
}
});
break;
case 14486://dragon claws
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw5 = meleeDamage/6;int dclaw6 = meleeDamage/8;int dclaw7 = meleeDamage/8;
if (meleeDamage == 0) {
dclaw1 = calculateMelee(p, p2);
dclaw2 = dclaw5/6;
dclaw3 = dclaw5/8;
}
if (meleeDamage == 0 && dclaw5 == 0) {
dclaw2 = calculateMelee(p, p2);
dclaw3= dclaw6/6;
}
if (meleeDamage == 0 && dclaw5 == 0 && dclaw6 == 0) {
dclaw7 = calculateMelee(p, p2);
}
final int[] fDclaw2 = {dclaw5, dclaw6, dclaw7};
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, fDclaw2[0]);
p2.hit(p, fDclaw2[1]);
p2.hit(p, fDclaw2[2]);
this.stop();
}
});
this.stop();
}
});
break;
case 13905:
p.animate(10499, 0);
p.graphics(1835, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.10));
this.stop();
}
});
break;
case 13899:
p.animate(10502, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
p2.hit(p, (int) (meleeDamage * 1.35));
this.stop();
}
});
break;
default:
p2.hit(p, meleeDamage);
p.animate(PkDefinitions.getCombatAnim(p));
p.getActionSender().sendMessage("This weapon has no special Attack, if you still see special bar please relogin.");
break;
}
} else {
p.getActionSender().sendMessage("You need to wait til your spec bar gets ready.");}
}
}
}
} catch(Exception e) {
}
}
public void MagicAttack(final Player p, final Player p2) {
try {
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) > 6) {
Following.combatFollow(p, p2, true);
}
int rand_att = Misc.random(p.getSkills().getLevelForXp(6))*4;
int rand_def = (int) (0.45 * Misc.random(p2.getSkills().getLevelForXp(1)));
int random_u = Misc.random(p.getBonuses().getBonus(3)) * 2;
int random_def = Misc.random(p2.getBonuses().getBonus(8));
if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2, damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2 , damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2 , damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2 , damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2, damage);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, p2, damage);
}
//if (p2.DeflectMelee == true){
// CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
//}
if (p2.DeflectMagic == true){
CursesEffectsHandler.handleDeflectMelee(p, p2, damage);
}
//if (p2.DeflectRange == true){
// CursesEffectsHandler.handleDeflectRange(p, p2, damage);
//}
if (p.SapWarrior == true){
CursesEffectsHandler.handleSapWarrior(p, p2, damage);
}
if (p.SapRanger == true){
CursesEffectsHandler.handleSapRanger(p, p2, damage);
}
if (p.SapMage == true){
CursesEffectsHandler.handleSapMage(p, p2, damage);
}
if (p.SapSpirit == true){
CursesEffectsHandler.handleSapSpirit(p, p2);
}
if(p.pvn().autoCasting == true) {
switch(p.magicType) {
case 192:
switch(p.pvn().autoCast) {
case 25://Wind strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
gfx = 90;
anim = 1162;
projectile = 91;
damage = 2;
gfx2 = 92;
req = 0;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 28: //Water strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(555, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(555, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(554, 1);
p.getInventory().deleteItem(555, 1);
gfx = 93;
anim = 1162;
projectile = 94;
damage = 4;
gfx2 = 95;
req = 5;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 30: //Earth strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
p.getInventory().deleteItem(557, 1);
gfx = 96;
anim = 1162;
projectile = 97;
damage = 6;
gfx2 = 98;
req = 9;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 32: //Fire strike
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(554, 3)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(554, 3) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(554, 3);
p.getInventory().deleteItem(557, 1);
gfx = 99;
anim = 1162;
projectile = 100;
damage = 8;
gfx2 = 101;
req = 13;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 34: //Wind bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
gfx = 117;
anim = 1162;
projectile = 118;
damage = 9;
gfx2 = 119;
req = 17;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 39: //Water bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(666, 2)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(555, 2)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(555, 2);
gfx = 120;
anim = 1162;
projectile = 121;
damage = 10;
gfx2 = 122;
req = 23;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 42: //Earth bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(557, 3);
gfx = 123;
anim = 1162;
projectile = 124;
damage = 11;
gfx2 = 125;
req = 29;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 45: //Fire bolt
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(554, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(562, 1) && p.getInventory().contains(554, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(554, 3);
gfx = 126;
anim = 1162;
projectile = 127;
damage = 12;
gfx2 = 128;
req = 35;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 49: //Wind blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
gfx = 132;
anim = 1162;
projectile = 133;
damage = 13;
gfx2 = 134;
req = 41;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 52: //Water blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(555, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(555, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 3);
gfx = 135;
anim = 1162;
projectile = 136;
damage = 14;
gfx2 = 137;
req = 47;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 58: //Earth blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 3);
gfx = 138;
anim = 1162;
projectile = 139;
damage = 15;
gfx2 = 140;
req = 53;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 63: //Fire blast
if(!p.getInventory().contains(556, 4)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(554, 5)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 4) && p.getInventory().contains(560, 1) && p.getInventory().contains(554, 5)) {
p.getInventory().deleteItem(556, 4);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 5);
gfx = 129;
anim = 1162;
projectile = 130;
damage = 16;
gfx2 = 131;
req = 59;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 70: //Wind wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
gfx = 158;
anim = 1162;
projectile = 159;
damage = 17;
gfx2 = 160;
req = 62;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 73: //Water wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(555, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 7);
gfx = 161;
anim = 1162;
projectile = 162;
damage = 18;
gfx2 = 163;
req = 65;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 77: //Earth Wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(557, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 7);
gfx = 164;
anim = 1162;
projectile = 165;
damage = 19;
gfx2 = 166;
req = 70;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 80: //FireWave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(554, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(554, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 7);
gfx = 155;
anim = 1162;
projectile = 156;
damage = 20;
gfx2 = 157;
req = 75;
usingAncient = false;
p.MageTime =5;
}
}
break;
case 68: //zammy
if (p.getEquipment().get(3).getDefinition().getId() == 2417) {
gfx = -1;
anim = 811;
projectile = -1;
damage = 30;
gfx2 = 78;
req = 60;
usingAncient = false;
} else {
gfx = -1;
anim = -1;
projectile = -1;
gfx2 = -1;
damage = -1;
req = -1;
usingAncient = false;
p.getActionSender().sendMessage("You need a zammorak staff to cast this spell.");
return;
}
break;
case 66: //sara
if (p.getEquipment().get(3).getDefinition().getId() == 2415){
gfx = -1;
anim = 811;
projectile = -1;
damage = 30;
gfx2 = 77;
req = 60;
usingAncient = false;
} else {
gfx = -1;
anim = -1;
projectile = -1;
gfx2 = -1;
damage = -1;
req = -1;
usingAncient = false;
p.getActionSender().sendMessage("You need a zammorak staff to cast this spell.");
return;
}
break;
case 67: //guth
if (p.getEquipment().get(3).getDefinition().getId() == 2416){
gfx = -1;
anim = 811;
projectile = -1;
damage = 30;
gfx2 = 76;
req = 60;
usingAncient = false;
} else {
gfx = -1;
anim = -1;
projectile = -1;
gfx2 = -1;
damage = -1;
req = -1;
usingAncient = false;
p.getActionSender().sendMessage("You need a zammorak staff to cast this spell.");
return;
}
break;
}
break;
case 193:
projectile = -1;
gfx = -1;
usingAncient = true;
switch (p.pvn().autoCastAncient) {
case 23: //Ice barrage
gfx = 368;
anim = 1979;
damage = 30;
gfx2 = 369;
req = 94;
freeze = false;
freezeDelay = 15;
break;
case 35: //Shadow barrage
//gfx = 368;
anim = 1978;
damage = 28;
gfx2 = 383;
req = 88;
break;
case 31: //Smoke barrage
//gfx = 368;
anim = 1979;
damage = 27;
gfx2 = 391;
req = 86;
break;
case 21: //Ice blitz
//gfx = 368;
anim = 1978;
damage = 26;
gfx2 = 367;
req = 82;
freeze = false;
freezeDelay = 0;
break;
case 25: //Blood Blitz
//gfx = 368;
anim = 1978;
damage = 25;
gfx2 = 375;
req = 80;
break;
case 33: //Shadow blitz
//gfx = 368;
anim = 1978;
damage = 24;
gfx2 = 381;
req = 76;
break;
case 29: //Smoke blitz
//gfx = 368;
anim = 1978;
damage = 23;
gfx2 = 387;
req = 74;
break;
case 22: //Ice burst
// gfx = 368;
anim = 1979;
damage = 22;
gfx2 = 363;
req = 70;
freeze = false;
freezeDelay = 1;
break;
case 26: //Blood Burst
// gfx = 368;
anim = 1979;
damage = 21;
gfx2 = 376;
req = 68;
break;
case 34: //Shadow Burst
//gfx = 368;
anim = 1978;
damage = 17;
gfx2 = 382;
req = 64;
break;
case 30: //Smoke Burst
//gfx = 368;
anim = 1979;
damage = 17;
gfx2 = 389;
req = 62;
break;
case 20: //Ice rush
//gfx = 368;
anim = 1978;
damage = 16;
gfx2 = 361;
req = 58;
freeze = false;
freezeDelay = 1;
break;
case 24: //Blood Rush
//gfx = 368;
anim = 1978;
damage = 15;
gfx2 = 361;
req = 56;
break;
case 32: //Shadow Rush
//gfx = 368;
anim = 1978;
damage = 14;
gfx2 = 379;
req = 52;
break;
case 28: //Smoke Rush
// gfx = 368;
anim = 1978;
damage = 13;
gfx2 = 385;
req = 50;
break;
case 39:// miasmic barrage
gfx = 1853;
anim = 10518;
damage = 35;
gfx2 = 1854;
req = 97;
break;
case 38://miasmic burst
gfx = 1848;
anim = 10516;
damage = 24;
gfx2 = 1849;
req = 73;
break;
case 37://miasmic blitz
gfx = 1850;
anim = 10524;
damage = 28;
gfx2 = 1851;
req = 85;
break;
case 36://miasmic rush
gfx = 1845;
anim = 10513;
damage = 18;
gfx2 = 1846;
req = 61;
break;
}
break;
}
}
if ( p.getSkills().getLevelForXp(6) <= req) {
p.sm("You need level " + req+ " magic to use this spell.");
}
else if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) <= 8) {
if(p.combatDelay == 0) {
if ((random_u >= random_def) && (rand_att > rand_def)) {
p2.combatResetWith += PkDefinitions.getCombatDelay(p)+1;
p2.combatWith = p.getIndex();
p.turnTo(p2);
p.animate(anim);
if (barrage) {
p.graphics(gfx, 100);
} else {
p.graphics(gfx, (100 << 16));
}
p.combatDelay =+ 5;
p.getWalkingQueue().reset();
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, projectile, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
final int magichit = Misc.random(damage);
p2.hit(p, Misc.random(magichit));
p.getSkills().addXp(6, magichit * 1200);
if (!usingAncient) {
p2.graphics(gfx2, (100 << 16));
} else {
if (freeze) {
if (p2.frozen == 0) {
p2.frozen = freezeDelay;
p2.graphics(369, 100);
p2.sm("You have been frozen");
p2.getWalkingQueue().reset();
} else {
p2.graphics(1677, (100 << 16));
this.stop();
return;
}
}
p2.graphics(gfx2, 100);
}
this.stop();
}
});
} else {
p2.combatWith = p.getIndex();
p.turnTo(p2);
p.animate(anim);
if (barrage) {
p.graphics(gfx, 100);
} else {
p.graphics(gfx, (100 << 16));
}
p.combatDelay =+ 5;
p.combatDelay =+ 5;
p.getWalkingQueue().reset();
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, projectile, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.graphics(85, (100 << 16));
this.stop();
}
});
}
}
}
} catch(Exception e) {
}
}
public int getMagicDelay() {
Player p2 = World.getWorld().getPlayers().get(magicIndex);
if (p == null || p2 == null)
return 1600;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 1)
return 955;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 2)
return 1055;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 3)
return 1200;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 4)
return 1450;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 5)
return 1550;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 6)
return 1650;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 7)
return 1750;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 8)
return 1750;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 9)
return 1845;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 10)
return 1845;
return 1;
}
public boolean usingRange(Player p) {
if(p.getEquipment().get(3) == null) {
return false;
}
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 14684:
case 4212:
case 4214:
case 4734:
case 11235:
case 15701:
case 15702:
case 15703:
case 15704:
case 9185:
case 18357:
case 861:
case 868:
case 867:
case 866:
case 865:
case 863:
case 15241:
case 10034:
case 14121:
case 841:
case 843:
case 845:
case 847:
case 849:
case 851:
case 853:
case 855:
case 857:
case 859:
return true;
case 0:
return false;
case -1:
return false;
default:
return false;
}
}
public int SoundID(Player p) {
if(p.getEquipment().get(3) == null) {
return 2566;
}
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 806: // Start of Darts
case 807:
case 808:
case 809:
case 810:
case 811:
case 11230:
case 863: // Start of Knifes
case 864:
case 865:
case 866:
case 867:
case 868:
case 869:
return 2707;
case 0:
return -1;
case 4151:
return 2720;
case 1307: // Start of 2Hs
case 1309:
case 1311:
case 1313:
case 1315:
case 1317:
case 1319:
case 7158:
case 6609:
return 2504;
case 6528:
return 2520;
case 11235:
case 15701:
case 15702:
case 15703:
case 15704:
return 3731;
case 1379: // Start of Staffs
case 1381:
case 1383:
case 1385:
case 1387:
case 2415: // Start of God Staffs & Iban's Staff & Slayer staff
case 2416:
case 2417:
case 1409:
case 4170:
case 1391: // Start of BattleStaffs
case 1393:
case 1395:
case 1397:
case 1399:
case 4710: // Start of Ahrim's Staff
case 4862:
case 4863:
case 4864:
case 4865:
return 2555;
case 4755: // Start of Verac's Flail
case 4982:
case 4983:
case 4984:
case 4985:
return 1322;
case 4747: // Start of Torag's Hammers
case 4958:
case 4959:
case 4960:
case 4861:
return 1330;
case 4718: // Start of Dharok's Greataxe
case 4886:
case 4887:
case 4888:
case 4889:
return 1320;
case 4726: // Start of Guthan's Warspear
case 4910:
case 4911:
case 4912:
case 4913:
return 1333;
case 1363: // Start of BattleAxes
case 1365:
case 1367:
case 136:
case 1371:
case 1373:
case 1375:
case 1377:
case 6589:
case 7807:
return 2498;
case 1277:
case 1279:
case 1281:
case 1283:
case 1285:
case 1287:
case 1289:
return 2499;
case 1321: // Start of Scimitars
case 1323:
case 1325:
case 1327:
case 1329:
case 1331:
case 1333:
case 4587:
case 6611:
case 11998: case 1291: // Start of Longswords
case 1293:
case 1295:
case 1297:
case 1299:
case 1301:
case 1303:
case 1305:
case 6607:
case 13899:
return 2500;
case 746: // Start of Daggers
case 747:
case 1213:
case 1215:
case 5696: // Start of Daggers(p++)
case 5698:
case 6597:
return 2549;
case 11694: // Start of GodSwords
case 11696:
case 11698:
case 11700:
return 3846;
case 4734: // Start of Karil's Cross & X-bow
case 4934:
case 4935:
case 4936:
case 4937:
case 9174: // Start of CrossBows
case 9176:
case 9177:
case 9179:
case 9181:
case 9183:
case 9185:
case 14684:
case 18357:
return 1081;
default:
return 2566;
}
}
public int getDbowDrawback() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1110;
case 892:
return 1109;
case 890:
return 1108;
case 888:
return 1107;
case 886:
return 1106;
case 884:
return 1105;
case 882:
return 1104;
default:
return 1114;
}
}
public int getDbowSpec() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1099;
default:
return 1102;
}
}
public int rangeStrBonus() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212: // d arrows
return 69;
case 892: // rune arrows
return 69;
case 15243: // handcannon
return 90;
case 9244: // d bolt
return 92;
default:
return 50;
}
}
}
6) Now, in the same folder you were in ((sourcenamehere)\src\com\rs2hd\content\skills\com bat), open PlayerVsNpc.java and replace the code with mine:
package com.rs2hd.content.skills.combat;
import com.rs2hd.content.skills.prayer.CursesEffectsHandl er;
import com.rs2hd.event.Event;
import com.rs2hd.model.Equipment;
import com.rs2hd.model.NPC;
import com.rs2hd.model.Player;
import com.rs2hd.model.Skills;
import com.rs2hd.model.World;
import com.rs2hd.tickable.Tickable;
import com.rs2hd.util.Misc;
/**
* @author Dragonkk 40%
*
*/
public class PlayerVsNpc {
private transient Player p;
public int autoCast;
public int autoCastAncient;
public boolean autoCasting;
private int projectile = -1;
private int req;
private int gfx2;
private int damage;
private int anim;
private int gfx;
private boolean usingAncient;
private int magicIndex;
boolean freeze = false;
boolean barrage = false;
int freezeDelay = 0;
public void setPlayer(Player p) {
this.p = p;
}
public void Attack(NPC n) {
if(p == null || n == null) {
System.out.println("p/n = null");
return;
}
if(p.isDead() || n.isDead()) {
p.resetAttack();
return;
}
if(p.AttackingNpc == false) {
return;
}
Equipment e = p.getEquipment();
if(n.getId() == 3375) {
if(e.get(Equipment.SLOT_WEAPON) == null) {
p.getActionSender().sendMessage("You need a rubber chicken to attack this");
n.Attacking = false;
p.resetAttack();
return;
}
if(e.get(Equipment.SLOT_WEAPON).getId() != 4566) {
p.getActionSender().sendMessage("You need a rubber chicken to attack this");
n.Attacking = false;
p.resetAttack();
return;
}
}
if (p.THICKSKIN == true && p.PrayerTime == 0) {
n.hit(Misc.random(25));
p.PrayerTime = 15;
n.graphics(1935);
return;
}
if(p.getSkills().getLevel(Skills.SLAYER) < p.getSlayer().getRequiredLevel(n.getId())) {
p.getActionSender().sendMessage("You need a level of " + p.getSlayer().getRequiredLevel(n.getId()) + " slayer to attack this monster!");
p.resetAttack();
return;
}
n.pid = p.getIndex();
n.giveDrop = p.getIndex();
n.Attacking = true;
if(autoCasting == true) {
MagicAttack(p, n);
} else if (usingRange(p)) {
RangeAttack(p, n);
} else {
MeleeAttack(p, n);
}
}
public boolean FullDharokEquipped() {
try {
if(p.getEquipment().get(0).getDefinition().getId() == 4716 && p.getEquipment().get(4).getDefinition().getId() == 4720 && p.getEquipment().get(7).getDefinition().getId() == 4722 && p.getEquipment().get(3).getDefinition().getId() == 4718) {
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public void MagicAttack(final Player p, final NPC n) {
try {
//if (p.LeechAttack == true) {
// CursesEffectsHandler.handleLeechAttack(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechRange == true) {
// CursesEffectsHandler.handleLeechRanged(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechMagic == true) {
// CursesEffectsHandler.handleLeechMagic(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechDefence == true) {
// CursesEffectsHandler.handleLeechDefence(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.LeechStrength == true) {
// CursesEffectsHandler.handleLeechStrength(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.SpecialAttackLeech == true) {
// CursesEffectsHandler.handleSpecLeech(p, p2);
// p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
//}
//if (p.Soulsplit == true) {
// CursesEffectsHandler.handleSoulSplit(p, p2, meleeDamage);
//}
if(autoCasting == true) {
switch(p.magicType) {
case 192:
switch(autoCast) {
case 25://Wind strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
gfx = 90;
anim = 1162;
projectile = 91;
damage = 2;
gfx2 = 92;
req = 0;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 28: //Water strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(555, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(555, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(554, 1);
p.getInventory().deleteItem(555, 1);
gfx = 93;
anim = 1162;
projectile = 94;
damage = 4;
gfx2 = 95;
req = 5;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 30: //Earth strike
if(!p.getInventory().contains(556, 1)|| !p.getInventory().contains(558, 1)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 1) && p.getInventory().contains(558, 1) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 1);
p.getInventory().deleteItem(558, 1);
p.getInventory().deleteItem(557, 1);
gfx = 96;
anim = 1162;
projectile = 97;
damage = 6;
gfx2 = 98;
req = 9;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 32: //Fire strike
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(554, 3)|| !p.getInventory().contains(557, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(554, 3) && p.getInventory().contains(557, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(554, 3);
p.getInventory().deleteItem(557, 1);
gfx = 99;
anim = 1162;
projectile = 100;
damage = 8;
gfx2 = 101;
req = 13;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 34: //Wind bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
gfx = 117;
anim = 1162;
projectile = 118;
damage = 9;
gfx2 = 119;
req = 17;
p.MageTime = 5;
usingAncient = false;
}
}
break;
case 39: //Water bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(666, 2)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(555, 2)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(555, 2);
gfx = 120;
anim = 1162;
projectile = 121;
damage = 10;
gfx2 = 122;
req = 23;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 42: //Earth bolt
if(!p.getInventory().contains(556, 2)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 2) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 2);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(557, 3);
gfx = 123;
anim = 1162;
projectile = 124;
damage = 11;
gfx2 = 125;
req = 29;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 45: //Fire bolt
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(562, 1)|| !p.getInventory().contains(554, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(562, 1) && p.getInventory().contains(554, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(562, 1);
p.getInventory().deleteItem(554, 3);
gfx = 126;
anim = 1162;
projectile = 127;
damage = 12;
gfx2 = 128;
req = 35;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 49: //Wind blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
gfx = 132;
anim = 1162;
projectile = 133;
damage = 13;
gfx2 = 134;
req = 41;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 52: //Water blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(555, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(555, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 3);
gfx = 135;
anim = 1162;
projectile = 136;
damage = 14;
gfx2 = 137;
req = 47;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 58: //Earth blast
if(!p.getInventory().contains(556, 3)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(557, 3)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 3) && p.getInventory().contains(560, 1) && p.getInventory().contains(557, 3)) {
p.getInventory().deleteItem(556, 3);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 3);
gfx = 138;
anim = 1162;
projectile = 139;
damage = 15;
gfx2 = 140;
req = 53;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 63: //Fire blast
if(!p.getInventory().contains(556, 4)|| !p.getInventory().contains(560, 1)|| !p.getInventory().contains(554, 5)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 4) && p.getInventory().contains(560, 1) && p.getInventory().contains(554, 5)) {
p.getInventory().deleteItem(556, 4);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 5);
gfx = 129;
anim = 1162;
projectile = 130;
damage = 16;
gfx2 = 131;
req = 59;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 70: //Wind wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
gfx = 158;
anim = 1162;
projectile = 159;
damage = 17;
gfx2 = 160;
req = 62;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 73: //Water wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(555, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(562, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(555, 7);
gfx = 161;
anim = 1162;
projectile = 162;
damage = 18;
gfx2 = 163;
req = 65;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 77: //Earth Wave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(557, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(557, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(557, 7);
gfx = 164;
anim = 1162;
projectile = 165;
damage = 19;
gfx2 = 166;
req = 70;
usingAncient = false;
p.MageTime = 5;
}
}
break;
case 80: //FireWave
if(!p.getInventory().contains(556, 5)|| !p.getInventory().contains(565, 1)|| !p.getInventory().contains(554, 7)) {
p.sm("You need the correct runes to cast this spell");
p.resetAttack();
} else {
if (p.MageTime == 0 && p.getInventory().contains(556, 5) && p.getInventory().contains(565, 1) && p.getInventory().contains(554, 7)) {
p.getInventory().deleteItem(556, 5);
p.getInventory().deleteItem(560, 1);
p.getInventory().deleteItem(554, 7);
gfx = 155;
anim = 1162;
projectile = 156;
damage = 20;
gfx2 = 157;
req = 75;
usingAncient = false;
p.MageTime =5;
}
}
}
break;
case 193:
projectile = -1;
gfx = -1;
usingAncient = true;
switch (autoCastAncient) {
case 23: //Ice barrage
gfx = 368;
anim = 1979;
damage = 30;
gfx2 = 369;
req = 94;
freeze = true;
freezeDelay = 20;
break;
case 35: //Shadow barrage
//gfx = 368;
anim = 1978;
damage = 28;
gfx2 = 383;
req = 88;
break;
case 31: //Smoke barrage
//gfx = 368;
anim = 1979;
damage = 27;
gfx2 = 391;
req = 86;
break;
case 21: //Ice blitz
//gfx = 368;
anim = 1978;
damage = 26;
gfx2 = 367;
req = 82;
freeze = true;
freezeDelay = 15;
break;
case 25: //Blood Blitz
//gfx = 368;
anim = 1978;
damage = 25;
gfx2 = 375;
req = 80;
break;
case 33: //Shadow blitz
//gfx = 368;
anim = 1978;
damage = 24;
gfx2 = 381;
req = 76;
break;
case 29: //Smoke blitz
//gfx = 368;
anim = 1978;
damage = 23;
gfx2 = 387;
req = 74;
break;
case 22: //Ice burst
// gfx = 368;
anim = 1979;
damage = 22;
gfx2 = 363;
req = 70;
freeze = true;
freezeDelay = 10;
break;
case 26: //Blood Burst
// gfx = 368;
anim = 1979;
damage = 21;
gfx2 = 376;
req = 68;
break;
case 34: //Shadow Burst
//gfx = 368;
anim = 1978;
damage = 17;
gfx2 = 382;
req = 64;
break;
case 30: //Smoke Burst
//gfx = 368;
anim = 1979;
damage = 17;
gfx2 = 389;
req = 62;
break;
case 20: //Ice rush
//gfx = 368;
anim = 1978;
damage = 16;
gfx2 = 361;
req = 58;
freeze = true;
freezeDelay = 5;
break;
case 24: //Blood Rush
//gfx = 368;
anim = 1978;
damage = 15;
gfx2 = 361;
req = 56;
break;
case 32: //Shadow Rush
//gfx = 368;
anim = 1978;
damage = 14;
gfx2 = 379;
req = 52;
break;
case 28: //Smoke Rush
// gfx = 368;
anim = 1978;
damage = 13;
gfx2 = 385;
req = 50;
break;
case 39:// miasmic barrage
gfx = 1853;
anim = 10518;
damage = 35;
gfx2 = 1854;
req = 97;
break;
case 38://miasmic burst
gfx = 1848;
anim = 10516;
damage = 24;
gfx2 = 1849;
req = 73;
break;
case 37://miasmic blitz
gfx = 1850;
anim = 10524;
damage = 28;
gfx2 = 1851;
req = 85;
break;
case 36://miasmic rush
gfx = 1845;
anim = 10513;
damage = 18;
gfx2 = 1846;
req = 61;
break;
}
break;
}
}
if ( p.getSkills().getLevelForXp(6) <= req) {
p.sm("You need level " + req+ " magic to use this spell.");
p.pvn().autoCasting = false;
p.getWalkingQueue().reset();// fixed
} else if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), n.getLocation().getX(), n.getLocation().getY()) <= 8) {
p.getWalkingQueue().reset();
}
if(p.combatDelay == 0) {
final int magichit = Misc.random(damage);
p.turnTo(n);
p.combatDelay =+ 5;
p.getWalkingQueue().reset();
p.graphics(gfx, (100 << 16));
p.animate(anim);
World.getWorld().getProjectileManager().fire(p.get Location(), n.getLocation(), 50, 70, projectile, 43, 31, n);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
n.hit(p, magichit);
p.getSkills().addXp(6, magichit * 1000);
n.graphics(gfx2);
this.stop();
}
});
}
} catch(Exception e) {
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public void RangeAttack(final Player p, final NPC p2) {
try {
/*if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}*/
//if (p.Soulsplit == true) {
// CursesEffectsHandler.handleSoulSplit(p, p2, meleeDamage);
//}
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) <= 8) {
p.getWalkingQueue().reset();
}
if(p.combatDelay == 0 && p.cantPk == false) {
if(!p.getEquipment().hasAmmo()) {
p.sm("You dont have any ammo in your backpack.");
return;
}
p2.pid = p.getIndex();
p2.Attacking = true;
p.combatDelay += PkDefinitions.getCombatDelay(p);
if(p.getEquipment().isWieldingHandCannon()) {
if(p.usingSpecial) {
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(12174, 0);
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 0, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, Misc.random(p.NPCMaxHitRange() * 1.50));
BossesDef(p, p2 , (int) (p.NPCMaxHitRange() * 1.50), 0);
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(2138, 0);
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 0, 70, 2143, 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingDbow()) {
if(p.usingSpecial) {
if (p.specialAmount < p.getSpecialAmount()) {
p.usingSpecial = false;
p.getActionSender().sendMessage("You do not have enough special energy.");
return;
}
p.usingSpecial = false;
p.specialAmount -= p.getSpecialAmount();
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
World.getWorld().registerEvent(new Event(100) {
public void execute() {
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, getDbowSpec(), 43, 31, p2);
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange() * 0), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange() * 0));
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange() * 0), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange() * 0));
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
} else {
p.animate(PkDefinitions.getCombatAnim(p));
p.graphics(getDbowDrawback(), (100 << 16));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(100) {
public void execute() {
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
p2.animate(p2.getDefenceAnimation());
this.stop();
}
});
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
this.stop();
}
});
}
} else if(p.getEquipment().isWieldingCBow()) {
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
if(Misc.random(10) == 1) {
EnchantSpec(p, p2, p.NPCMaxHitRange());
p2.animate(p2.getDefenceAnimation());
this.stop();
} else {
p2.hit(p, p.NPCMaxHitRange());
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
p2.animate(p2.getDefenceAnimation());
this.stop();
}
}
});
} else if(p.usingSpecial) {
} else {
if(p.getEquipment().get(3).getDefinition().getId() == 15241) {
p.sm("You need to be wearing handcannon ammo to fire this weapon.");
return;
}
p.animate(PkDefinitions.getCombatAnim(p));
World.getWorld().getProjectileManager().fire(p.get Location(), p2.getLocation(), 50, 70, p.getEquipment().getProjectileId(), 43, 31, p2);
World.getWorld().registerEvent(new Event(getMagicDelay()) {
public void execute() {
p2.hit(p, Misc.random(p.NPCMaxHitRange()));
BossesDef(p, p2 , (int) (p.NPCMaxHitRange()), 0);
this.stop();
}
});
}
}
} catch(Exception e) {
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public void EnchantSpec(Player p, NPC n, int rangeDamage) {
try {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 9242:
rangeDamage = rangeDamage + Misc.random((n.getHp()/5));
if (rangeDamage >= 100)
rangeDamage = 100;
p.hit(Misc.random(p.getHp())/10);
n.graphics(754);
p.getActionSender().SendSound(2912,100,0);
break;
case 9244:
rangeDamage = rangeDamage + Misc.random(25);
n.graphics(756);
p.getActionSender().SendSound(2915,100,0);
break;
case 9245:
rangeDamage = Misc.random((int) (rangeDamage * 1.25));
p.heal(rangeDamage);
n.graphics(753);
p.getActionSender().SendSound(2917,100,0);
break;
case 9237:
n.pid = -1;
n.Attacking = false;
n.graphics(755);
p.getActionSender().SendSound(2914,100,0);
}
BossesDef(p, n , rangeDamage, 1);
n.hit(p, rangeDamage);
} catch(Exception e) {
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
public void MeleeAttack(final Player p, final NPC n) {
int distance = 1;
if (n.getId() == 8133 || (n.getId() >= 1158 && n.getId() <= 1160) || n.getId() == 6260 || n.getId() == 6222) {
distance = 4;
}
if (n.getId() == 8350 || n.getId() == 8351 || n.getId() == 8352) {
distance = 4;
}
/*if (p.LeechAttack == true) {
CursesEffectsHandler.handleLeechAttack(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechRange == true) {
CursesEffectsHandler.handleLeechRanged(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechMagic == true) {
CursesEffectsHandler.handleLeechMagic(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechDefence == true) {
CursesEffectsHandler.handleLeechDefence(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.LeechStrength == true) {
CursesEffectsHandler.handleLeechStrength(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}
if (p.SpecialAttackLeech == true) {
CursesEffectsHandler.handleSpecLeech(p, p2);
p.leechDelay = System.currentTimeMillis() + Misc.random(5000);
}*/
if(Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), n.getLocation().getX(), n.getLocation().getY()) <= distance) {
if(p.combatDelay == 0) {
n.pid = p.getIndex();
n.Attacking = true;
final int meleeDamage = Misc.random(p.NPCMaxHitMelee());
final int meleeDamage2 = Misc.random(p.NPCMaxHitMelee());
BossesDef(p, n , meleeDamage, 0);
p.turnTo(n);
n.turnTo(p);
p.combatDelay = PkDefinitions.getCombatDelay(p);
if (p.Soulsplit == true) {
CursesEffectsHandler.handleSoulSplit(p, n, meleeDamage);
}
if (p.DeflectMelee == true){
CursesEffectsHandler.handleDeflectMelee(p, n);
}
//if (p2.DeflectMagic == true){
// CursesEffectsHandler.handleDeflectMelee(p, n, damage);
//}
//if (p2.DeflectRange == true){
// CursesEffectsHandler.handleDeflectRange(p, n, damage);
//}
//if (p.SapWarrior == true){
// CursesEffectsHandler.handleSapWarrior(p, n, damage);
//}
//if (p.SapRanger == true){
// CursesEffectsHandler.handleSapRanger(p, n, damage);
//}
//if (p.SapMage == true){
// CursesEffectsHandler.handleSapMage(p, n, damage);
//}
//if (p.SapSpirit == true){
// CursesEffectsHandler.handleSapSpirit(p, p2);
//}
if(!p.usingSpecial) {
World.getWorld().submit(new Tickable(1) {
@Override
public void execute() {
n.hit(p, meleeDamage);
n.animate(n.getDefenceAnimation());
this.stop();
}
});
p.animate(PkDefinitions.getCombatAnim(p));
}
if(p.usingSpecial) {
p.usingSpecial = false;
if (p.specialAmount >= p.getSpecialAmount()) {
p.specialAmount -= p.getSpecialAmount();
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 14484:
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw1 = meleeDamage/2;int dclaw2 = meleeDamage/4;int dclaw3 = meleeDamage/4;
if (meleeDamage == 0) {
dclaw1 = Misc.random(p.MaxHitMelee());
dclaw2 = dclaw1/2;
dclaw3 = dclaw1/4;
}
if (meleeDamage == 0 && dclaw1 == 0) {
dclaw2 = Misc.random(p.MaxHitMelee());
dclaw3= dclaw2/2;
}
if (meleeDamage == 0 && dclaw1 == 0 && dclaw2 == 0) {
dclaw3 = Misc.random(p.MaxHitMelee());
}
n.hit(p, meleeDamage);
n.hit(p, dclaw1);
n.hit(p, dclaw2);
n.hit(p, dclaw3);
break;
case 14486:
p.graphics(1950, 0);
p.animate(10961, 0);
int dclaw5 = meleeDamage/6;int dclaw6 = meleeDamage/8;int dclaw7 = meleeDamage/8;
if (meleeDamage == 0) {
dclaw1 = Misc.random(p.MaxHitMelee());
dclaw2 = dclaw5/6;
dclaw3 = dclaw7/8;
}
if (meleeDamage == 0 && dclaw5 == 0) {
dclaw6 = Misc.random(p.MaxHitMelee());
dclaw7= dclaw6/6;
}
if (meleeDamage == 0 && dclaw5 == 0 && dclaw6 == 0) {
dclaw3 = Misc.random(p.MaxHitMelee());
}
n.hit(p, meleeDamage);
n.hit(p, dclaw5);
n.hit(p, dclaw6);
n.hit(p, dclaw7);
break;
case 13899:
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
this.stop();
}
});
p.animate(10502, 0);
break;
case 13902:
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.25));
this.stop();
}
});
p.graphics(1840, 0);
p.animate(10505, 0);
break;
case 15259:
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
this.stop();
}
});
p.animate(12031, 0);
p.graphics(2144, 100);
break;
case 4151: //whip
n.graphics(341, 0);
p.animate(1658, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n , meleeDamage, 0);
this.stop();
}
});
break;
case 1215:
case 10581:
n.graphics(252, (100 << 16));
p.animate(1062, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
n.hit(p, (int) (meleeDamage2 * 1.10));
BossesDef(p, n , (int) (meleeDamage * 1.10), 0);
BossesDef(p, n , (int) (meleeDamage2 * 1.10), 0);
this.stop();
}
});
p.getActionSender().SendSound(2537,100,0);
break;
case 5698:
n.graphics(252, (100 << 16));
p.animate(1062, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
n.hit(p, (int) (meleeDamage2 * 1.10));
BossesDef(p, n , (int) (meleeDamage * 1.10), 0);
BossesDef(p, n , (int) (meleeDamage2 * 1.10), 0);
this.stop();
}
});
p.getActionSender().SendSound(2537,100,0);
break;
case 11730:
p.graphics(1224, 0);
p.animate(7072, 0);
n.graphics(1194, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
n.hit(p, meleeDamage2);
BossesDef(p, n , meleeDamage2, 0);
this.stop();
}
});
p.getActionSender().SendSound(3853,100,0);
break;
case 11694:
p.graphics(1222, 0);
p.animate(7074, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.15));
BossesDef(p, n , (int) (meleeDamage * 1.15), 0);
this.stop();
}
});
p.getActionSender().SendSound(3865,100, 0);
break;
case 11716:
p.graphics(1225, 0);
p.animate(7001, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, (int) (meleeDamage * 1.10));
BossesDef(p, n, (int) (meleeDamage * 1.10), 0);
this.stop();
}
});
break;
case 13450:
p.graphics(1222, 0);
p.animate(7074, 0);
final int hit13450 = (int) (meleeDamage * 1.65);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, hit13450);
BossesDef(p, n, (int) (meleeDamage * 1.65), 0);
this.stop();
}
});
p.getActionSender().SendSound(3865,100, 0);
break;
case 10887:
p.graphics(1027, 0);
p.animate(5870, 0);
final int hit10887 = (int) (meleeDamage * 1.05);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, hit10887);
BossesDef(p, n, (int) (meleeDamage * 1.05), 0);
this.stop();
}
});
break;
case 11696:
p.graphics(1223, 0);
p.animate(7073, 0);
final int hit11696 = (int) (meleeDamage * 1.10);
World.getWorld().submit(new Tickable(1) {
public void execute() {
BossesDef(p, n, (int) (meleeDamage * 1.10), 0);
n.hit(p, hit11696);
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
break;
case 11698:
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage/2);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 11700:
p.graphics(2110, 0);
p.animate(7070, 0);
n.graphics(2111, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 13444: // lent whip & colored whips
case 15441:
case 15442:
case 15443:
case 15444:
final int lwhip1 = meleeDamage/2;
final int lwhip2 = meleeDamage/3;
final int lwhip3 = meleeDamage/5;
final int lwhip4 = meleeDamage/5;
p.graphics(1224, 0);
n.graphics(2015, 0);
p.animate(7072, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, lwhip1);
n.hit(p, lwhip2);
n.hit(p, lwhip3);
n.hit(p, lwhip4);
this.stop();
}
});
break;
case 13117: // invalius flail thing
final int lflail1 = meleeDamage/5;
final int lflail2 = meleeDamage/8;
p.graphics(1930, 0);
n.graphics(1931, 0);
p.animate(1658, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, lflail1);
n.hit(p, lflail2);
this.stop();
}
});
break;
case 13451://lent bgs
p.graphics(1223, 0);
p.animate(7073, 0);
final int hit13451 = (int) (meleeDamage * 1.15);
World.getWorld().submit(new Tickable(1) {
public void execute() {
BossesDef(p, n, (int) (meleeDamage * 1.15),
0);
n.hit(p, hit13451);
this.stop();
}
});
p.getActionSender().SendSound(3834,100,0);
break;
case 13452://lent sgs
p.graphics(1220, 0);
p.animate(7071, 0);
p.heal(meleeDamage);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 13453://lent zgs
p.graphics(2110, 0);
p.animate(7070, 0);
n.graphics(2111, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n , meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(3857,100,0);
break;
case 1305:
p.graphics(2117, 0);
p.animate(12031, 0);
final int hit1305 = (int) (meleeDamage * 1.20);
World.getWorld().submit(new Tickable(1) {
public void execute() {
BossesDef(p, n, (int) (meleeDamage * 1.20),
0);
n.hit(p, hit1305);
this.stop();
}
});
p.getActionSender().SendSound(2529,100,0);
break;
case 4587:
p.graphics(2118, 0);
p.animate(12005, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
p.getActionSender().SendSound(2540,100,0);
break;
case 3204:
p.graphics(282, 50);
n.graphics(254, 100);
p.animate(1665, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
n.hit(p, meleeDamage2);
BossesDef(p, n, meleeDamage, 0);
BossesDef(p, n, meleeDamage2, 0);
this.stop();
}
});
break;
case 1434:
p.graphics(251, 50);
p.animate(1060, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
int hit1434 = (int) (meleeDamage * 1.25);
BossesDef(p, n, (int) (meleeDamage * 1.25),
0);
n.hit(p, hit1434);
this.stop();
}
});
p.getActionSender().SendSound(2541,100,0);
break;
case 7158:
p.graphics(559, 0);
p.animate(3157, 0);
World.getWorld().submit(new Tickable(1) {
public void execute() {
n.hit(p, meleeDamage);
BossesDef(p, n, meleeDamage, 0);
this.stop();
}
});
break;
default:
n.hit(p, meleeDamage);
BossesDef(p, n , meleeDamage, 0);
p.animate(PkDefinitions.getCombatAnim(p));
p.getActionSender().sendMessage("This weapon has no special Attack, if you still see special bar please relogin.");
}
}else{p.getActionSender().sendMessage("You do not have enough special energy.");}
}
}
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public int getMagicDelay() {
NPC p2 = World.getWorld().getNpcs().get(magicIndex);
if (p == null || p2 == null)
return 1300;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 1)
return 700;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 2)
return 700;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 3)
return 900;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 4)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 5)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 6)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 7)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 8)
return 1050;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 9)
return 1045;
if (Misc.getDistance(p.getLocation().getX(), p.getLocation().getY(), p2.getLocation().getX(), p2.getLocation().getY()) == 10)
return 1045;
return 1;
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public boolean usingRange(Player p) {
if(p.getEquipment().get(3) == null) {
return false;
}
switch(p.getEquipment().get(3).getDefinition().get Id()) {
case 14684:
case 4212:
case 4214:
case 4734:
case 11235:
case 15701:
case 15702:
case 15703:
case 15704:
case 9185:
case 18357:
case 861:
case 868:
case 867:
case 866:
case 865:
case 863:
case 14121:
case 15241:
case 10034:
case 11230:
case 841:
case 843:
case 845:
case 847:
case 849:
case 851:
case 853:
case 855:
case 857:
case 859:
return true;
case 0:
return false;
case -1:
return false;
default:
return false;
}
}
public boolean LightEquipped(Player p) {
try {
if(p.getEquipment().get(3).getDefinition().getId() == 6746 || p.getEquipment().get(3).getDefinition().getId() == 6745){
return true;
}
return false;
} catch (Exception e) {
return false;
}
}
public void BossesDef(final Player p, final NPC n , int Damage, int AttType) {
p.addHitExp(p, Damage);
switch (n.getId()) {
case 8324:
case 8325:
case 8326:
case 8327:
if (n.NPCCharges > 0) {
n.NPCDamage[AttType] += Damage;
if (n.NPCDamage[0] >= 15) {
n.NPCDamage[0] = 0;
n.setId(8325);
}
if (n.NPCDamage[1] >= 15) {
n.NPCDamage[1] = 0;
n.setId(8326);
}
if (n.NPCDamage[2] >= 15) {
n.NPCDamage[2] = 0;
n.setId(8327);
}
}
break;
case 8350:
case 8351:
case 8352:
n.NPCDamage[AttType] += Damage;
if (n.NPCDamage[0] >= 31) {
n.NPCDamage[0] = 0;
n.setId(8352);
}
if (n.NPCDamage[1] >= 31) {
n.NPCDamage[1] = 0;
n.setId(8351);
}
if (n.NPCDamage[2] >= 31) {
n.NPCDamage[2] = 0;
n.setId(8350);
}
if (n.UsingThis == false) {
n.graphics(1885);
if (LightEquipped(p) && Misc.random(2) == 1) {
n.UsingThis = true;
p.sm("The demon is temporarily weakened by your weapon.");
World.getWorld().registerEvent(new Event(30000) {
public void execute() {
if (!n.isDead()) {
p.sm("The Tormented demon regains its strength against your weapon.");
}
n.UsingThis = false;
this.stop();
}
});
}
}
break;
}
}
public int getDbowDrawback() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1110;
case 892:
return 1109;
case 890:
return 1108;
case 888:
return 1107;
case 886:
return 1106;
case 884:
return 1105;
case 882:
return 1104;
default:
return 1114;
}
}
public int getDbowSpec() {
switch(p.getEquipment().get(13).getDefinition().ge tId()) {
case 11212:
return 1099;
default:
return 1102;
}
}
/*public int getMaxHit(Player p) {
int base = damage;
double strengthMultiplier = (baseBonus * 0.00175) + 0.1;
int maxHit = (int) Math.floor(combatStrength * strengthMultiplier * 1.05);
if(FullDharokEquipped()) {
maxHit += (int)((p.getSkills().getLevelForXp(3) - p.getSkills().getLevel(3))/2.2);
}
}*/
}
7) go to CommandsPacketHandler.java in ((sourcename)\src\com\rs2hd\packethandler) and ADD this in (DON'T replace your code):
if (cmd[0].equals("::curses")) {
if(cmd[1].equalsIgnoreCase("true") || cmd[1].equalsIgnoreCase("false")){
player.sm("It's just ::curses now, i fixed it :3");
return;
}
if(!player.cursesToggle){
player.sm("You sense a surge of power flow through your body!");
player.curses = true;
player.getActionSender().sendConfig(1086, 1);
player.cursesToggle = true;
} else if (player.cursesToggle) {
player.getActionSender().sendConfig(1086, 0);
player.curses = false;
player.sm("You sense a surge of purity flow through your body!");
player.cursesToggle = false;
}
}
That should be it! if you have any errors, reply with the error message :3 have fun!
Also, Please don't leech :( I know you probably won't, but im asking you nicely -.-