RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
MobDeath.java
1package com.osroyale.game.world.entity.mob;
2
3import com.osroyale.game.task.Task;
4import com.osroyale.game.world.World;
5import com.osroyale.game.world.entity.combat.CombatConstants;
6import com.osroyale.net.packet.out.SendScreenshot;
7
15public abstract class MobDeath<T extends Mob> extends Task {
16
18 protected final T mob;
19
21 private int counter;
22
24 public MobDeath(T mob, int delay) {
25 super(true, delay);
26 this.mob = mob;
27 }
28
30 public abstract void preDeath(Mob killer);
31
33 public abstract void death();
34
36 public abstract void postDeath(Mob killer);
37
38
39 @Override
40 public void onSchedule() {
41 mob.setDead(true);
42 mob.locking.lock();
43 mob.getCombat().reset();
44 mob.getPoisonDamage().set(0);
45 mob.resetFace();
46 mob.getCombat().resetTimers(-CombatConstants.COMBAT_LOGOUT_COOLDOWN);
47 }
48
49 @Override
50 public final void execute() {
51 Mob killer = mob.getCombat().getDamageCache().calculateProperKiller().orElse(null);
52 switch (++counter) {
53 case 1:
54 if (killer != null) {
55 killer.getCombat().preKill(mob, mob.getCombat().getDamageCache().lastHit);
56 if (killer.isPlayer()) {
57 World.sendKillFeed(killer, mob);
58 }
59 }
60
61 if (killer != null && /*(!killer.isPlayer() || !mob.isPlayer()) &&*/ killer.getCombat().isAttacking(mob)) {
62 mob.getCombat().preDeath(killer, mob.getCombat().getDamageCache().lastHit);
63 if (!mob.isDead()) {
64 cancel();
65 return;
66 }
68 killer.getCombat().reset();
69 }
70 break;
71 case 2:
72 if (killer != null) {
73 if (killer.isPlayer() && mob.isPlayer() && killer.getPlayer().settings.screenshotKill) {
74 killer.getPlayer().send(new SendScreenshot());
75 }
76 }
77 preDeath(killer);
78 break;
79 case 3:
80 death();
81 postDeath(killer);
82 if (killer != null) {
83 killer.getCombat().onKill(mob, mob.getCombat().getDamageCache().lastHit);
84 mob.getCombat().onDeath(killer, mob.getCombat().getDamageCache().lastHit);
85 }
86 mob.getCombat().getDamageCache().clear();
87 break;
88 case 4:
89 this.cancel();
90 break;
91 }
92 }
93
94 @Override
95 public void onCancel(boolean logout) {
96// mob.walkingQueue.setLock(false);
97 mob.setDead(false);
98 mob.locking.unlock();
99 }
100}
synchronized final void cancel()
Definition Task.java:147
Task(boolean instant, int delay)
Definition Task.java:75
static void sendKillFeed(final Mob killer, final Mob victim)
Definition World.java:509
abstract Combat<? extends Mob > getCombat()