RuneHive-Game
Loading...
Searching...
No Matches
AgrithNaNa.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.npc.NpcMagicStrategy;
10import com.runehive.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
11import com.runehive.game.world.entity.mob.Mob;
12import com.runehive.game.world.entity.mob.npc.Npc;
13
14import static com.runehive.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
15
16/**
17 * @author Daniel
18 */
19@NpcCombatListenerSignature(npcs = { 4880 })
20public class AgrithNaNa extends SimplifiedListener<Npc> {
21
22 private static MagicAttack MAGIC;
23
24 static {
25 try {
26 MAGIC = new MagicAttack();
27 } catch(Exception e) {
28 e.printStackTrace();
29 }
30 }
31
32 @Override
33 public boolean canAttack(Npc attacker, Mob defender) {
34 if(!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
35 attacker.setStrategy(MAGIC);
36 }
37 return attacker.getStrategy().canAttack(attacker, defender);
38 }
39
40 @Override
41 public void start(Npc attacker, Mob defender, Hit[] hits) {
42 if(!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
43 attacker.setStrategy(MAGIC);
44 } else {
46 }
47 }
48
49 private static class MagicAttack extends NpcMagicStrategy {
50 private MagicAttack() {
51 super(getDefinition("Fire Blast"));
52 }
53
54 @Override
55 public Animation getAttackAnimation(Npc attacker, Mob defender) {
56 return new Animation(3502, UpdatePriority.HIGH);
57 }
58
59 @Override
60 public CombatHit[] getHits(Npc attacker, Mob defender) {
61 CombatHit combatHit = nextMagicHit(attacker, defender, combatProjectile.getMaxHit());
62 combatHit.setAccurate(true);
63 return new CombatHit[] { combatHit };
64 }
65 }
66}
Class that models a single animation used by an entity.
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.