RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
RangedFormula.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.mob.Mob;
6import com.osroyale.game.world.entity.mob.prayer.Prayer;
7import com.osroyale.game.world.entity.skill.Skill;
8import com.osroyale.game.world.items.containers.equipment.Equipment;
9
34
35public final class RangedFormula implements FormulaModifier<Mob> {
36
37 @Override
38 public int modifyAccuracy(Mob attacker, Mob defender, int roll) {
39 FightType fightType = attacker.getCombat().getFightType();
40 int level = attacker.skills.getLevel(Skill.RANGED);
41 int effectiveAccuracy = attacker.getCombat().modifyRangedLevel(defender, level);
42 return 8 + effectiveAccuracy + fightType.getStyle().getAccuracyIncrease();
43 }
44
45 @Override
46 public int modifyAggressive(Mob attacker, Mob defender, int roll) {
47 int level = attacker.skills.getLevel(Skill.RANGED);
48 return 8 + attacker.getCombat().modifyRangedLevel(defender, level);
49 }
50
51 @Override
52 public int modifyDefensive(Mob attacker, Mob defender, int roll) {
53 FightType fightType = defender.getCombat().getFightType();
54 int level = defender.skills.getLevel(Skill.DEFENCE);
55 int effectiveDefence = defender.getCombat().modifyDefenceLevel(attacker, level);
56 return 8 + effectiveDefence + fightType.getStyle().getDefensiveIncrease();
57 }
58
59 @Override
60 public int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus) {
61 bonus = attacker.getBonus(Equipment.RANGED_OFFENSE);
62 return attacker.getCombat().modifyOffensiveBonus(defender, bonus);
63 }
64
65 @Override
66 public int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus) {
67 bonus = attacker.getBonus(Equipment.RANGED_STRENGTH);
68 return attacker.getCombat().modifyAggresiveBonus(defender, bonus);
69 }
70
71 @Override
72 public int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus) {
73 bonus = defender.getBonus(Equipment.RANGED_DEFENSE);
74 return defender.getCombat().modifyDefensiveBonus(attacker, bonus);
75 }
76
77 @Override
78 public int modifyDamage(Mob attacker, Mob defender, int damage) {
79 damage = attacker.getCombat().modifyDamage(defender, damage);
80 if (defender.prayer.isActive(Prayer.PROTECT_FROM_RANGE)) {
81 damage *= !attacker.isPlayer() || defender.isNpc() ? 0.0 : 0.6;
82 }
83 return damage;
84 }
85
86}
abstract Combat<? extends Mob > getCombat()