1package com.osroyale.content.activity.infernomobs;
3import com.osroyale.game.Animation;
4import com.osroyale.game.UpdatePriority;
5import com.osroyale.game.world.entity.combat.attack.FightType;
6import com.osroyale.game.world.entity.combat.hit.CombatHit;
7import com.osroyale.game.world.entity.combat.strategy.CombatStrategy;
8import com.osroyale.game.world.entity.combat.strategy.npc.MultiStrategy;
9import com.osroyale.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
10import com.osroyale.game.world.entity.combat.strategy.npc.NpcRangedStrategy;
11import com.osroyale.game.world.entity.mob.Mob;
12import com.osroyale.game.world.entity.mob.npc.Npc;
14import static com.osroyale.game.world.entity.combat.CombatUtil.createStrategyArray;
15import static com.osroyale.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
46public class JaxXil
extends MultiStrategy {
48 private static final Melee MELEE =
new Melee();
49 private static final Ranged RANGED =
new Ranged();
51 private static final CombatStrategy<Npc>[] STRATEGIES = createStrategyArray(RANGED, MELEE);
54 currentStrategy = RANGED;
58 public boolean canAttack(
Npc attacker,
Mob defender) {
59 if (!currentStrategy.withinDistance(attacker, defender)) {
60 currentStrategy = MELEE;
62 return currentStrategy.canAttack(attacker, defender);
65 private static class Melee
extends NpcMeleeStrategy {
69 public int getAttackDistance(
Npc attacker,
FightType fightType) {
80 return new CombatHit[] { nextMeleeHit(attacker, defender) };
84 private static class Ranged
extends NpcRangedStrategy {
89 super(getDefinition(
"xil"));
99 return new CombatHit[] { nextMagicHit(attacker, defender, 46) };