67public class DemonicGorillas
extends MultiStrategy {
68 private static final Melee MELEE =
new Melee();
69 private static final Magic MAGIC =
new Magic();
70 private static final Ranged RANGED =
new Ranged();
71 private static final CombatStrategy<Npc>[] STRATEGIES = createStrategyArray(MAGIC, MELEE, RANGED);
72 private static final Integer[] FORMS = { 7147, 7148, 7149 };
73 private int attackCount = 0;
74 private int damageDealt = 0;
75 private int form = -1;
77 public DemonicGorillas() {
78 this.currentStrategy = randomStrategy(STRATEGIES);
81 private CombatStrategy getNextStrategy() {
82 return RandomUtils.randomExclude(STRATEGIES, currentStrategy);
85 private int getNextForm() {
86 return RandomUtils.randomExclude(FORMS, form);
94 nextForm = defender.id;
97 damageDealt += hit.getDamage();
98 if (damageDealt >= 50) {
99 nextForm = getNextForm();
105 defender.transform(nextForm);
108 if (form == 7147 && !defender.prayer.
isActive(
Prayer.PROTECT_FROM_MELEE)) {
110 }
else if (form == 7148 && !defender.prayer.
isActive(
Prayer.PROTECT_FROM_RANGE)) {
112 }
else if (form == 7149 && !defender.prayer.
isActive(
Prayer.PROTECT_FROM_MAGIC)) {
119 public void hit(
Npc attacker,
Mob defender,
Hit hit) {
120 super.hit(attacker, defender, hit);
121 if (hit.getDamage() == 0) {
123 if (attackCount >= 3) {
124 currentStrategy = getNextStrategy();
131 public int modifyDefensive(
Mob attacker,
Npc defender,
int roll) {
132 return (
int) (roll * 2.3);
135 private static final class Melee
extends NpcMeleeStrategy {
139 public int getAttackDistance(
Npc attacker,
FightType fightType) {
150 return new CombatHit[]{nextMeleeHit(attacker, defender)};
154 private static class Magic
extends NpcMagicStrategy {
158 super(getDefinition(
"Demonic Gorilla Magic"));
163 CombatHit combatHit = nextMagicHit(attacker, defender, 31);
164 combatHit.setAccurate(
true);
174 public int getAttackDistance(
Npc attacker,
FightType fightType) {
179 private static class Ranged
extends NpcRangedStrategy {
183 super(getDefinition(
"Demonic Gorilla Ranged"));
188 return new CombatHit[]{nextRangedHit(attacker, defender, 31)};
197 public int getAttackDistance(
Npc attacker,
FightType fightType) {