RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
CombatFormula.java
1package com.osroyale.game.world.entity.combat.formula;
2
3import com.osroyale.game.world.entity.combat.FormulaModifier;
4import com.osroyale.game.world.entity.mob.Mob;
5
6import java.util.Deque;
7import java.util.LinkedList;
8
9public class CombatFormula<T extends Mob> implements FormulaModifier<T> {
10 private final Deque<FormulaModifier<? super T>> modifiers = new LinkedList<>();
11
12 public void addFirst(FormulaModifier<? super T> modifier) {
13 modifiers.addFirst(modifier);
14 }
15
16 public void removeFirst() {
17 modifiers.removeFirst();
18 }
19
20 public boolean add(FormulaModifier<? super T> modifier) {
21 return !modifiers.contains(modifier) && modifiers.add(modifier);
22 }
23
24 public boolean remove(FormulaModifier<? super T> modifier) {
25 return modifiers.remove(modifier);
26 }
27
28 @Override
29 public int modifyAttackLevel(T attacker, Mob defender, int level) {
30 for (FormulaModifier<? super T> modifier : modifiers) {
31 level = modifier.modifyAttackLevel(attacker, defender, level);
32 }
33 return level;
34 }
35
36 @Override
37 public int modifyStrengthLevel(T attacker, Mob defender, int level) {
38 for (FormulaModifier<? super T> modifier : modifiers) {
39 level = modifier.modifyStrengthLevel(attacker, defender, level);
40 }
41 return level;
42 }
43
44 @Override
45 public int modifyDefenceLevel(Mob attacker, T defender, int level) {
46 for (FormulaModifier<? super T> modifier : modifiers) {
47 level = modifier.modifyDefenceLevel(attacker, defender, level);
48 }
49 return level;
50 }
51
52 @Override
53 public int modifyRangedLevel(T attacker, Mob defender, int level) {
54 for (FormulaModifier<? super T> modifier : modifiers) {
55 level = modifier.modifyRangedLevel(attacker, defender, level);
56 }
57 return level;
58 }
59
60 @Override
61 public int modifyMagicLevel(T attacker, Mob defender, int level) {
62 for (FormulaModifier<? super T> modifier : modifiers) {
63 level = modifier.modifyMagicLevel(attacker, defender, level);
64 }
65 return level;
66 }
67
68 @Override
69 public int modifyAccuracy(T attacker, Mob defender, int roll) {
70 for (FormulaModifier<? super T> modifier : modifiers) {
71 roll = modifier.modifyAccuracy(attacker, defender, roll);
72 }
73 return roll;
74 }
75
76 @Override
77 public int modifyAggressive(T attacker, Mob defender, int roll) {
78 for (FormulaModifier<? super T> modifier : modifiers) {
79 roll = modifier.modifyAggressive(attacker, defender, roll);
80 }
81 return roll;
82 }
83
84 @Override
85 public int modifyDefensive(Mob attacker, T defender, int roll) {
86 for (FormulaModifier<? super T> modifier : modifiers) {
87 roll = modifier.modifyDefensive(attacker, defender, roll);
88 }
89 return roll;
90 }
91
92 @Override
93 public int modifyDamage(T attacker, Mob defender, int damage) {
94 for (FormulaModifier<? super T> modifier : modifiers) {
95 damage = modifier.modifyDamage(attacker, defender, damage);
96 }
97 return damage;
98 }
99
100 @Override
101 public int modifyOffensiveBonus(T attacker, Mob defender, int bonus) {
102 for (FormulaModifier<? super T> modifier : modifiers) {
103 bonus = modifier.modifyOffensiveBonus(attacker, defender, bonus);
104 }
105 return bonus;
106 }
107
108 @Override
109 public int modifyAggressiveBonus(T attacker, Mob defender, int bonus) {
110 for (FormulaModifier<? super T> modifier : modifiers) {
111 bonus = modifier.modifyAggressiveBonus(attacker, defender, bonus);
112 }
113 return bonus;
114 }
115
116 @Override
117 public int modifyDefensiveBonus(Mob attacker, T defender, int bonus) {
118 for (FormulaModifier<? super T> modifier : modifiers) {
119 bonus = modifier.modifyDefensiveBonus(attacker, defender, bonus);
120 }
121 return bonus;
122 }
123
124}