RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
MeleeFormula.java
1package com.osroyale.game.world.entity.combat.formula;
2
3import com.osroyale.game.world.entity.combat.FormulaModifier;
4import com.osroyale.game.world.entity.combat.attack.FightType;
5import com.osroyale.game.world.entity.combat.strategy.npc.boss.CorporealBeast;
6import com.osroyale.game.world.entity.mob.Mob;
7import com.osroyale.game.world.entity.mob.prayer.Prayer;
8import com.osroyale.game.world.entity.skill.Skill;
9import com.osroyale.game.world.items.containers.equipment.Equipment;
10
11import java.util.concurrent.TimeUnit;
12
37
38public final class MeleeFormula implements FormulaModifier<Mob> {
39
40 @Override
41 public int modifyAccuracy(Mob attacker, Mob defender, int roll) {
42 FightType fightType = attacker.getCombat().getFightType();
43 int level = attacker.skills.getLevel(Skill.ATTACK);
44 int effectiveAccuracy = attacker.getCombat().modifyAttackLevel(defender, level);
45 return 8 + effectiveAccuracy + fightType.getStyle().getAccuracyIncrease();
46 }
47
48 @Override
49 public int modifyAggressive(Mob attacker, Mob defender, int roll) {
50 FightType fightType = attacker.getCombat().getFightType();
51 int level = attacker.skills.getLevel(Skill.STRENGTH);
52 int effectiveStrength = attacker.getCombat().modifyStrengthLevel(defender, level);
53 return 8 + effectiveStrength + fightType.getStyle().getStrengthIncrease();
54 }
55
56 @Override
57 public int modifyDefensive(Mob attacker, Mob defender, int roll) {
58 FightType fightType = defender.getCombat().getFightType();
59 int level = defender.skills.getLevel(Skill.DEFENCE);
60 int effectiveDefence = defender.getCombat().modifyDefenceLevel(attacker, level);
61 return 8 + effectiveDefence + fightType.getStyle().getDefensiveIncrease();
62 }
63
64 @Override
65 public int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus) {
66 FightType fightType = attacker.getCombat().getFightType();
67 bonus = attacker.getBonus(fightType.getBonus());
68 return attacker.getCombat().modifyOffensiveBonus(defender, bonus);
69 }
70
71 @Override
72 public int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus) {
73 bonus = attacker.getBonus(Equipment.STRENGTH_BONUS);
74 return attacker.getCombat().modifyAggresiveBonus(defender, bonus);
75 }
76
77 @Override
78 public int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus) {
79 FightType fightType = attacker.getCombat().getFightType();
80 bonus = defender.getBonus(fightType.getCorrespondingBonus());
81 return defender.getCombat().modifyDefensiveBonus(attacker, bonus);
82 }
83
84 @Override
85 public int modifyDamage(Mob attacker, Mob defender, int damage) {
86 damage = attacker.getCombat().modifyDamage(defender, damage);
87 if(defender.isNpc() && defender.getNpc().id == 319 && (attacker.isPlayer() && !attacker.getPlayer().equipment.containsAny(CorporealBeast.weaponsAllowed))) {
88 damage /= 2;
89 }
90 if (defender.isPlayer() && !defender.getPlayer().staffOfDeadSpecial.elapsed(1, TimeUnit.MINUTES) && defender.getPlayer().equipment.containsAny(11791, 12904)) {
91 damage /= 2;
92 }
93 if (defender.prayer.isActive(Prayer.PROTECT_FROM_MELEE) && !defender.attributes.has("VERACS-EFFECT")) {
94 damage *= !attacker.isPlayer() || defender.isNpc() ? 0.0 : 0.6;
95 }
96 return damage;
97 }
98
99}
abstract Combat<? extends Mob > getCombat()