RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
Dessourt.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 = { 4883 })
53
54public class Dessourt extends SimplifiedListener<Npc> {
55
56 private static MagicAttack MAGIC;
57 private static CombatStrategy<Npc>[] STRATEGIES;
58
59 static {
60 try {
61 MAGIC = new MagicAttack();
62 STRATEGIES = createStrategyArray(NpcMeleeStrategy.get(), MAGIC);
63 } catch(Exception e) {
64 e.printStackTrace();
65 }
66 }
67
68 @Override
69 public boolean canAttack(Npc attacker, Mob defender) {
70 if(!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
71 attacker.setStrategy(MAGIC);
72 }
73 return attacker.getStrategy().canAttack(attacker, defender);
74 }
75
76 @Override
77 public void start(Npc attacker, Mob defender, Hit[] hits) {
78 if(!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
79 attacker.setStrategy(MAGIC);
80 } else {
81 attacker.setStrategy(randomStrategy(STRATEGIES));
82 }
83 }
84
85 @Override
86 public void hit(Npc attacker, Mob defender, Hit hit) {
87 super.hit(attacker, defender, hit);
88 attacker.speak("Hssssssssssssssss");
89 }
90
91 private static class MagicAttack extends NpcMagicStrategy {
92 private MagicAttack() {
93 super(getDefinition("Toktz-xil-ul"));
94 }
95
96 @Override
97 public Animation getAttackAnimation(Npc attacker, Mob defender) {
98 return new Animation(3508, UpdatePriority.HIGH);
99 }
100
101 @Override
102 public CombatHit[] getHits(Npc attacker, Mob defender) {
103 CombatHit combatHit = nextMagicHit(attacker, defender, combatProjectile);
104 combatHit.setAccurate(true);
105 return new CombatHit[] { combatHit };
106 }
107 }
108}
void speak(String forceChat)
Definition Mob.java:164
CombatStrategy< Npc > getStrategy()
Definition Npc.java:198