1package com.osroyale.game.world.entity.combat.strategy.npc;
3import com.osroyale.game.Animation;
4import com.osroyale.game.world.entity.combat.CombatType;
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.hit.Hit;
8import com.osroyale.game.world.entity.combat.strategy.CombatStrategy;
9import com.osroyale.game.world.entity.mob.Mob;
10import com.osroyale.game.world.entity.mob.npc.Npc;
12public abstract class MultiStrategy
extends CombatStrategy<Npc> {
13 protected CombatStrategy<Npc> currentStrategy;
16 public boolean withinDistance(Npc attacker, Mob defender) {
17 return currentStrategy.withinDistance(attacker, defender);
21 public boolean canAttack(Npc attacker, Mob defender) {
22 return currentStrategy.canAttack(attacker, defender);
26 public boolean canOtherAttack(Mob attacker, Npc defender) {
27 return currentStrategy.canOtherAttack(attacker, defender);
31 public void start(Npc attacker, Mob defender, Hit[] hits) {
32 currentStrategy.start(attacker, defender, hits);
36 public void attack(Npc attacker, Mob defender, Hit hit) {
37 currentStrategy.attack(attacker, defender, hit);
41 public void hit(Npc attacker, Mob defender, Hit hit) {
42 currentStrategy.hit(attacker, defender, hit);
46 public void hitsplat(Npc attacker, Mob defender, Hit hit) {
47 currentStrategy.hitsplat(attacker, defender, hit);
51 public void block(Mob attacker, Npc defender, Hit hit, CombatType combatType) {
52 currentStrategy.block(attacker, defender, hit, combatType);
56 public void preDeath(Mob attacker, Npc defender, Hit hit) {
57 currentStrategy.preDeath(attacker, defender, hit);
61 public void onDeath(Mob attacker, Npc defender, Hit hit) {
62 currentStrategy.onDeath(attacker, defender, hit);
66 public void preKill(Mob attacker, Mob defender, Hit hit) {
67 currentStrategy.preKill(attacker, defender, hit);
71 public void onKill(Npc attacker, Mob defender, Hit hit) {
72 currentStrategy.onKill(attacker, defender, hit);
76 public void finishIncoming(Mob attacker, Npc defender) {
77 currentStrategy.finishIncoming(attacker, defender);
81 public void finishOutgoing(Npc attacker, Mob defender) {
82 currentStrategy.finishOutgoing(attacker, defender);
86 public int getAttackDelay(Npc attacker, Mob defender, FightType fightType) {
87 return currentStrategy.getAttackDelay(attacker, defender, fightType);
91 public int getAttackDistance(Npc attacker, FightType fightType) {
92 return currentStrategy.getAttackDistance(attacker, fightType);
96 public CombatHit[] getHits(Npc attacker, Mob defender) {
97 return currentStrategy.getHits(attacker, defender);
101 public Animation getAttackAnimation(Npc attacker, Mob defender) {
102 return currentStrategy.getAttackAnimation(attacker, defender);
106 public CombatType getCombatType() {
107 return currentStrategy.getCombatType();
111 public int modifyAccuracy(Npc attacker, Mob defender,
int roll) {
112 return currentStrategy.modifyAccuracy(attacker, defender, roll);
116 public int modifyAggressive(Npc attacker, Mob defender,
int roll) {
117 return currentStrategy.modifyAggressive(attacker, defender, roll);
121 public int modifyDefensive(Mob attacker, Npc defender,
int roll) {
122 return currentStrategy.modifyDefensive(attacker, defender, roll);
126 public int modifyDamage(Npc attacker, Mob defender,
int damage) {
127 return currentStrategy.modifyDamage(attacker, defender, damage);
131 public int modifyAttackLevel(Npc attacker, Mob defender,
int level) {
132 return currentStrategy.modifyAttackLevel(attacker, defender, level);
136 public int modifyStrengthLevel(Npc attacker, Mob defender,
int level) {
137 return currentStrategy.modifyStrengthLevel(attacker, defender, level);
141 public int modifyDefenceLevel(Mob attacker, Npc defender,
int level) {
142 return currentStrategy.modifyDefenceLevel(attacker, defender, level);
146 public int modifyRangedLevel(Npc attacker, Mob defender,
int level) {
147 return currentStrategy.modifyRangedLevel(attacker, defender, level);
151 public int modifyMagicLevel(Npc attacker, Mob defender,
int level) {
152 return currentStrategy.modifyMagicLevel(attacker, defender, level);
156 public int modifyOffensiveBonus(Npc attacker, Mob defender,
int bonus) {
157 return currentStrategy.modifyOffensiveBonus(attacker, defender, bonus);
161 public int modifyAggressiveBonus(Npc attacker, Mob defender,
int bonus) {
162 return currentStrategy.modifyAggressiveBonus(attacker, defender, bonus);
166 public int modifyDefensiveBonus(Mob attacker, Npc defender,
int bonus) {
167 return currentStrategy.modifyDefensiveBonus(attacker, defender, bonus);
171 public void onDamage(Npc defender, Hit hit) {