RuneHive-Game
Loading...
Searching...
No Matches
KetZek.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.attack.listener.npc;
2
3import com.runehive.game.Animation;
4import com.runehive.game.UpdatePriority;
5import com.runehive.game.world.entity.combat.attack.listener.NpcCombatListenerSignature;
6import com.runehive.game.world.entity.combat.attack.listener.SimplifiedListener;
7import com.runehive.game.world.entity.combat.hit.CombatHit;
8import com.runehive.game.world.entity.combat.hit.Hit;
9import com.runehive.game.world.entity.combat.strategy.CombatStrategy;
10import com.runehive.game.world.entity.combat.strategy.npc.NpcMagicStrategy;
11import com.runehive.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
12import com.runehive.game.world.entity.mob.Mob;
13import com.runehive.game.world.entity.mob.npc.Npc;
14
15import static com.runehive.game.world.entity.combat.CombatUtil.createStrategyArray;
16import static com.runehive.game.world.entity.combat.CombatUtil.randomStrategy;
17import static com.runehive.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
18
19/**
20 * @author Daniel
21 */
22@NpcCombatListenerSignature(npcs = {3125})
23public class KetZek extends SimplifiedListener<Npc> {
24
25 private static MagicAttack MAGIC;
27
28 static {
29 try {
30 MAGIC = new MagicAttack();
31 STRATEGIES = createStrategyArray(NpcMeleeStrategy.get(), MAGIC);
32 } catch (Exception e) {
33 e.printStackTrace();
34 }
35 }
36
37 @Override
38 public boolean canAttack(Npc attacker, Mob defender) {
39 if (!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
40 attacker.setStrategy(MAGIC);
41 }
42 return attacker.getStrategy().canAttack(attacker, defender);
43 }
44
45 @Override
46 public void start(Npc attacker, Mob defender, Hit[] hits) {
47 if (!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
48 attacker.setStrategy(MAGIC);
49 } else {
50 attacker.setStrategy(randomStrategy(STRATEGIES));
51 }
52 }
53
54 private static class MagicAttack extends NpcMagicStrategy {
55 private MagicAttack() {
56 super(getDefinition("Fire Blast"));
57 }
58
59 @Override
60 public Animation getAttackAnimation(Npc attacker, Mob defender) {
61 return new Animation(2647, UpdatePriority.HIGH);
62 }
63
64 @Override
65 public CombatHit[] getHits(Npc attacker, Mob defender) {
66 CombatHit combatHit = nextMagicHit(attacker, defender, combatProjectile.getMaxHit());
67 combatHit.setAccurate(true);
68 return new CombatHit[]{combatHit};
69 }
70 }
71}
Class that models a single animation used by an entity.
void start(Npc attacker, Mob defender, Hit[] hits)
Definition KetZek.java:46
A wrapper for a Hit object, adding additional variables for hit and hitsplat delays.
A Hit object holds the damage amount and hitsplat data.
Definition Hit.java:10
final CombatHit nextMagicHit(T attacker, Mob defender)
Handles the mob class.
Definition Mob.java:66
Represents a non-player character in the in-game world.
Definition Npc.java:29
void setStrategy(CombatStrategy< Npc > strategy)
Definition Npc.java:212
CombatStrategy< Npc > getStrategy()
The combat strategy of the mob.
Definition Npc.java:161
Represents different priorities for updating.