Code:
@Override
public void sendDeath(final Entity source) {
if (prayer.hasPrayersOn()
&& getTemporaryAttributtes().get("startedDuel") != Boolean.TRUE) {
if (prayer.usingPrayer(0, 22)) {
setNextGraphics(new Graphics(437));
final Player target = this;
if (isAtMultiArea()) {
for (int regionId : getMapRegionsIds()) {
List<Integer> playersIndexes = World
.getRegion(regionId).getPlayerIndexes();
if (playersIndexes != null) {
for (int playerIndex : playersIndexes) {
Player player = World.getPlayers().get(
playerIndex);
if (player == null
|| !player.hasStarted()
|| player.isDead()
|| player.hasFinished()
|| !player.withinDistance(this, 1)
|| !player.isCanPvp()
|| !target.getControlerManager()
.canHit(player))
continue;
player.applyHit(new Hit(
target,
Utils.getRandom((int) (skills
.getLevelForXp(Skills.PRAYER) * 2.5)),
HitLook.REGULAR_DAMAGE));
}
}
List<Integer> npcsIndexes = World.getRegion(regionId)
.getNPCsIndexes();
if (npcsIndexes != null) {
for (int npcIndex : npcsIndexes) {
NPC npc = World.getNPCs().get(npcIndex);
if (npc == null
|| npc.isDead()
|| npc.hasFinished()
|| !npc.withinDistance(this, 1)
|| !npc.getDefinitions()
.hasAttackOption()
|| !target.getControlerManager()
.canHit(npc))
continue;
npc.applyHit(new Hit(
target,
Utils.getRandom((int) (skills
.getLevelForXp(Skills.PRAYER) * 2.5)),
HitLook.REGULAR_DAMAGE));
}
}
}
} else {
if (source != null && source != this && !source.isDead()
&& !source.hasFinished()
&& source.withinDistance(this, 1))
source.applyHit(new Hit(target, Utils
.getRandom((int) (skills
.getLevelForXp(Skills.PRAYER) * 2.5)),
HitLook.REGULAR_DAMAGE));
}
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX() - 1, target.getY(),
target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX() + 1, target.getY(),
target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX(), target.getY() - 1,
target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX(), target.getY() + 1,
target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX() - 1,
target.getY() - 1, target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX() - 1,
target.getY() + 1, target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX() + 1,
target.getY() - 1, target.getPlane()));
World.sendGraphics(target, new Graphics(438),
new WorldTile(target.getX() + 1,
target.getY() + 1, target.getPlane()));
}
});
} else if (prayer.usingPrayer(1, 17)) {
World.sendProjectile(this, new WorldTile(getX() + 2,
getY() + 2, getPlane()), 2260, 24, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX() + 2, getY(),
getPlane()), 2260, 41, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX() + 2,
getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX() - 2,
getY() + 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX() - 2, getY(),
getPlane()), 2260, 41, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX() - 2,
getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX(), getY() + 2,
getPlane()), 2260, 41, 0, 41, 35, 30, 0);
World.sendProjectile(this, new WorldTile(getX(), getY() - 2,
getPlane()), 2260, 41, 0, 41, 35, 30, 0);
final Player target = this;
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setNextGraphics(new Graphics(2259));
if (isAtMultiArea()) {
for (int regionId : getMapRegionsIds()) {
List<Integer> playersIndexes = World.getRegion(
regionId).getPlayerIndexes();
if (playersIndexes != null) {
for (int playerIndex : playersIndexes) {
Player player = World.getPlayers().get(
playerIndex);
if (player == null
|| !player.hasStarted()
|| player.isDead()
|| player.hasFinished()
|| !player.isCanPvp()
|| !player.withinDistance(
target, 2)
|| !target
.getControlerManager()
.canHit(player))
continue;
player.applyHit(new Hit(
target,
Utils.getRandom((skills
.getLevelForXp(Skills.PRAYER) * 3)),
HitLook.REGULAR_DAMAGE));
}
}
List<Integer> npcsIndexes = World.getRegion(
regionId).getNPCsIndexes();
if (npcsIndexes != null) {
for (int npcIndex : npcsIndexes) {
NPC npc = World.getNPCs().get(npcIndex);
if (npc == null
|| npc.isDead()
|| npc.hasFinished()
|| !npc.withinDistance(target,
2)
|| !npc.getDefinitions()
.hasAttackOption()
|| !target
.getControlerManager()
.canHit(npc))
continue;
npc.applyHit(new Hit(
target,
Utils.getRandom((skills
.getLevelForXp(Skills.PRAYER) * 3)),
HitLook.REGULAR_DAMAGE));
}
}
}
} else {
if (source != null && source != target
&& !source.isDead()
&& !source.hasFinished()
&& source.withinDistance(target, 2))
source.applyHit(new Hit(
target,
Utils.getRandom((skills
.getLevelForXp(Skills.PRAYER) * 3)),
HitLook.REGULAR_DAMAGE));
}
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() + 2, getY() + 2,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() + 2, getY(), getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() + 2, getY() - 2,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() - 2, getY() + 2,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() - 2, getY(), getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() - 2, getY() - 2,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX(), getY() + 2, getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX(), getY() - 2, getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() + 1, getY() + 1,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() + 1, getY() - 1,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() - 1, getY() + 1,
getPlane()));
World.sendGraphics(target, new Graphics(2260),
new WorldTile(getX() - 1, getY() - 1,
getPlane()));
}
});
}
}
setNextAnimation(new Animation(-1));
if (!controlerManager.sendDeath())
return;
lock(7);
stopAll();
if (familiar != null)
familiar.sendDeath(this);
final WorldTile deathTile = new WorldTile(this);
WorldTasksManager.schedule(new WorldTask() {
int loop;
@Override
public void run() {
if (loop == 0) {
setNextAnimation(new Animation(836));
} else if (loop == 1) {
getPackets().sendGameMessage("Oh dear, you have died.");
if (source instanceof Player) {
Player killer = (Player) source;
killer.setAttackedByDelay(4);
}
} else if (loop == 3) {
controlerManager.startControler("DeathEvent", deathTile, hasSkull());
} else if (loop == 4) {
killstreak = 0;
getPackets().sendMusicEffect(90);
stop();
}
loop++;
}
}, 0, 1);
}