54public class KreeArra
extends MultiStrategy {
55 private static final Ranged RANGED =
new Ranged();
56 private static final Magic MAGIC =
new Magic();
57 private static final Melee MELEE =
new Melee();
59 private boolean melee;
61 private static final CombatStrategy<Npc>[] NON_MELEE = createStrategyArray(MAGIC, RANGED);
64 currentStrategy = MELEE;
68 public boolean canOtherAttack(
Mob attacker,
Npc defender) {
70 attacker.getPlayer().message(
"You can't attack Armadyl with melee!");
73 return super.canOtherAttack(attacker, defender);
77 public boolean canAttack(
Npc attacker,
Mob defender) {
78 boolean isTarget = attacker.equals(defender.
getCombat().getDefender());
79 if (!melee && !isTarget) {
80 currentStrategy = MELEE;
82 }
else if (isTarget) melee =
false;
83 return super.canAttack(attacker, defender);
87 public boolean withinDistance(
Npc attacker,
Mob defender) {
88 boolean isTarget = attacker.equals(defender.
getCombat().getDefender());
89 if (!melee && !isTarget) {
90 currentStrategy = MELEE;
92 }
else if (isTarget) melee =
false;
93 return super.withinDistance(attacker, defender);
97 public void finishOutgoing(
Npc attacker,
Mob defender) {
98 super.finishOutgoing(attacker, defender);
99 boolean isTarget = attacker.equals(defender.
getCombat().getDefender());
100 if (!melee && !isTarget) {
101 currentStrategy = MELEE;
104 currentStrategy = randomStrategy(NON_MELEE);
105 if (isTarget) melee =
false;
110 public int getAttackDelay(
Npc attacker,
Mob defender,
FightType fightType) {
111 return attacker.definition.getAttackDelay();
114 private static class Ranged
extends NpcRangedStrategy {
121 return new CombatHit[] { nextRangedHit(attacker, defender, 71) };
125 private static class Magic
extends NpcMagicStrategy {
131 public void hit(
Npc attacker,
Mob defender,
Hit hit) {
132 if (hit.isAccurate())
133 super.hit(attacker, defender, hit);
138 CombatHit hit = nextRangedHit(attacker, defender, 21);
144 private static class Melee
extends NpcMeleeStrategy {
154 return new CombatHit[] { nextMeleeHit(attacker, defender, 26) };