53public class CorporealBeast
extends MultiStrategy {
54 private static final MagicAttack MAGIC =
new MagicAttack();
55 private static final CrushMelee MELEE =
new CrushMelee();
56 private static final CombatStrategy<Npc>[] STRATEGIES = createStrategyArray(MAGIC, MELEE);
57 public static final int weaponsAllowed [] = {
Items.BRONZE_SPEAR,
Items.IRON_SPEAR,
Items.STEEL_SPEAR,
Items.BLACK_SPEAR,
59 Items.GUTHANS_WARSPEAR,
Items.ZAMORAKIAN_SPEAR,
Items.ZAMORAKIAN_HASTA, 26219, 27246};
63 public CorporealBeast() {
64 currentStrategy = randomStrategy(STRATEGIES);
68 public boolean canAttack(
Npc attacker,
Mob defender) {
69 return currentStrategy.canAttack(attacker, defender);
73 public void finishOutgoing(
Npc attacker,
Mob defender) {
74 currentStrategy.finishOutgoing(attacker, defender);
75 currentStrategy = randomStrategy(STRATEGIES);
82 super.block(attacker, defender, hit, combatType);
86 public int getAttackDelay(
Npc attacker,
Mob defender,
FightType fightType) {
91 public int modifyAccuracy(
Npc attacker,
Mob defender,
int roll) {
92 return (
int) (roll * 5.05);
95 private static final class CrushMelee
extends NpcMeleeStrategy {
99 public int getAttackDistance(
Npc attacker,
FightType fightType) {
110 return new CombatHit[]{nextMeleeHit(attacker, defender)};
114 private static class MagicAttack
extends NpcMagicStrategy {
117 private MagicAttack() {
122 public void start(
Npc attacker,
Mob defender,
Hit[] hits) {
123 super.start(attacker, defender, hits);
127 public void hit(
Npc attacker,
Mob defender,
Hit hit) {
128 super.hit(attacker, defender, hit);
133 return new CombatHit[] { nextMagicHit(attacker, defender, 65) };
142 public int getAttackDistance(
Npc attacker,
FightType fightType) {