RuneHive-Game
Loading...
Searching...
No Matches
Spinolyp.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.strategy.npc.boss.dagannoths;
2
3import com.runehive.game.world.entity.combat.attack.FightType;
4import com.runehive.game.world.entity.combat.hit.CombatHit;
5import com.runehive.game.world.entity.combat.projectile.CombatProjectile;
6import com.runehive.game.world.entity.combat.strategy.CombatStrategy;
7import com.runehive.game.world.entity.combat.strategy.npc.MultiStrategy;
8import com.runehive.game.world.entity.combat.strategy.npc.NpcMagicStrategy;
9import com.runehive.game.world.entity.combat.strategy.npc.NpcRangedStrategy;
10import com.runehive.game.world.entity.mob.Mob;
11import com.runehive.game.world.entity.mob.npc.Npc;
12
13import static com.runehive.game.world.entity.combat.CombatUtil.createStrategyArray;
14import static com.runehive.game.world.entity.combat.CombatUtil.randomStrategy;
15
16/** @author Michael | Chex */
17public class Spinolyp extends MultiStrategy {
18 private static final Ranged RANGED = new Ranged();
19 private static final Magic MAGIC = new Magic();
20
21 private static final CombatStrategy<Npc>[] STRATEGIES = createStrategyArray(RANGED, MAGIC);
22
23 public Spinolyp() {
24 currentStrategy = randomStrategy(STRATEGIES);
25 }
26
27 @Override
28 public int getAttackDelay(Npc attacker, Mob defender, FightType fightType) {
29 return attacker.definition.getAttackDelay();
30 }
31
32 private static final class Magic extends NpcMagicStrategy {
33
34 public Magic() {
35 super(CombatProjectile.getDefinition("Water Strike"));
36 }
37
38 @Override
39 public int getAttackDistance(Npc attacker, FightType fightType) {
40 return 15;
41 }
42
43 @Override
44 public CombatHit[] getHits(Npc attacker, Mob defender) {
45 return new CombatHit[]{nextMagicHit(attacker, defender, 10)};
46 }
47 }
48
49 private static final class Ranged extends NpcRangedStrategy {
50
51 public Ranged() {
52 super(CombatProjectile.getDefinition("EMPTY"));
53 }
54
55 @Override
56 public int getAttackDistance(Npc attacker, FightType fightType) {
57 return 15;
58 }
59
60 @Override
61 public CombatHit[] getHits(Npc attacker, Mob defender) {
62 return new CombatHit[]{nextRangedHit(attacker, defender, 10)};
63 }
64 }
65
66}
A wrapper for a Hit object, adding additional variables for hit and hitsplat delays.
final CombatHit nextRangedHit(T attacker, Mob defender)
final CombatHit nextMagicHit(T attacker, Mob defender)
int getAttackDelay(Npc attacker, Mob defender, FightType fightType)
Definition Spinolyp.java:28
Handles the mob class.
Definition Mob.java:66
Represents a non-player character in the in-game world.
Definition Npc.java:29
The enumerated type whose elements represent the fighting types.