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