RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
KrilTsutsaroth.java
1package com.osroyale.game.world.entity.combat.attack.listener.npc;
2
3import com.osroyale.game.world.entity.combat.CombatType;
4import com.osroyale.game.world.entity.combat.attack.listener.NpcCombatListenerSignature;
5import com.osroyale.game.world.entity.combat.attack.listener.SimplifiedListener;
6import com.osroyale.game.world.entity.combat.hit.CombatHit;
7import com.osroyale.game.world.entity.combat.hit.Hit;
8import com.osroyale.game.world.entity.combat.strategy.CombatStrategy;
9import com.osroyale.game.world.entity.combat.strategy.npc.NpcMagicStrategy;
10import com.osroyale.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
11import com.osroyale.game.world.entity.mob.Mob;
12import com.osroyale.game.world.entity.mob.npc.Npc;
13import com.osroyale.util.Utility;
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
20@NpcCombatListenerSignature(npcs = {3129})
48
49public class KrilTsutsaroth extends SimplifiedListener<Npc> {
50 private static CombatStrategy<Npc>[] STRATEGIES;
51 private static final String[] SHOUTS = { "Attack them, you dogs!", "Attack!", "YARRRRRRRR!", "Rend them limb from limb!", "Forward!", "No retreat!", };
52
53
54 static {
55 try {
56 STRATEGIES = createStrategyArray(NpcMeleeStrategy.get(), new MagicAttack());
57 } catch (Exception e) {
58 e.printStackTrace();
59 }
60 }
61
62 @Override
63 public void start(Npc attacker, Mob defender, Hit[] hits) {
64 attacker.setStrategy(randomStrategy(STRATEGIES));
65 if (Utility.random(3) == 0) {
66 attacker.speak(Utility.randomElement(SHOUTS));
67 }
68 }
69
70 @Override
71 public void block(Mob attacker, Npc defender, Hit hit, CombatType combatType) {
72 attacker.getStrategy().block(attacker, defender, hit, combatType);
73 defender.getCombat().attack(attacker);
74 }
75
76 private static class MagicAttack extends NpcMagicStrategy {
77 public MagicAttack() {
78 super(getDefinition("Kril Tsutsaroth"));
79 }
80
81 @Override
82 public CombatHit[] getHits(Npc attacker, Mob defender) {
83 CombatHit hit = nextMagicHit(attacker, defender, 30);
84 hit.setAccurate(true);
85 return new CombatHit[]{hit};
86 }
87 }
88}
void speak(String forceChat)
Definition Mob.java:164
abstract Combat<? extends Mob > getCombat()
CombatStrategy< Npc > getStrategy()
Definition Npc.java:198
static< T > T randomElement(Collection< T > collection)
Definition Utility.java:285