RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
KetZek.java
1package com.osroyale.game.world.entity.combat.attack.listener.npc;
2
3import com.osroyale.game.Animation;
4import com.osroyale.game.UpdatePriority;
5import com.osroyale.game.world.entity.combat.attack.listener.NpcCombatListenerSignature;
6import com.osroyale.game.world.entity.combat.attack.listener.SimplifiedListener;
7import com.osroyale.game.world.entity.combat.hit.CombatHit;
8import com.osroyale.game.world.entity.combat.hit.Hit;
9import com.osroyale.game.world.entity.combat.strategy.CombatStrategy;
10import com.osroyale.game.world.entity.combat.strategy.npc.NpcMagicStrategy;
11import com.osroyale.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
12import com.osroyale.game.world.entity.mob.Mob;
13import com.osroyale.game.world.entity.mob.npc.Npc;
14
15import static com.osroyale.game.world.entity.combat.CombatUtil.createStrategyArray;
16import static com.osroyale.game.world.entity.combat.CombatUtil.randomStrategy;
17import static com.osroyale.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
18
22@NpcCombatListenerSignature(npcs = {3125})
52
53public class KetZek extends SimplifiedListener<Npc> {
54
55 private static MagicAttack MAGIC;
56 private static CombatStrategy<Npc>[] STRATEGIES;
57
58 static {
59 try {
60 MAGIC = new MagicAttack();
61 STRATEGIES = createStrategyArray(NpcMeleeStrategy.get(), MAGIC);
62 } catch (Exception e) {
63 e.printStackTrace();
64 }
65 }
66
67 @Override
68 public boolean canAttack(Npc attacker, Mob defender) {
69 if (!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
70 attacker.setStrategy(MAGIC);
71 }
72 return attacker.getStrategy().canAttack(attacker, defender);
73 }
74
75 @Override
76 public void start(Npc attacker, Mob defender, Hit[] hits) {
77 if (!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
78 attacker.setStrategy(MAGIC);
79 } else {
80 attacker.setStrategy(randomStrategy(STRATEGIES));
81 }
82 }
83
84 private static class MagicAttack extends NpcMagicStrategy {
85 private MagicAttack() {
86 super(getDefinition("Fire Blast"));
87 }
88
89 @Override
90 public Animation getAttackAnimation(Npc attacker, Mob defender) {
91 return new Animation(2647, UpdatePriority.HIGH);
92 }
93
94 @Override
95 public CombatHit[] getHits(Npc attacker, Mob defender) {
96 CombatHit combatHit = nextMagicHit(attacker, defender, combatProjectile.getMaxHit());
97 combatHit.setAccurate(true);
98 return new CombatHit[]{combatHit};
99 }
100 }
101}
CombatStrategy< Npc > getStrategy()
Definition Npc.java:198