RuneHive-Game
Loading...
Searching...
No Matches
RangedFormula.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.formula;
2
3import com.runehive.game.world.entity.combat.FormulaModifier;
4import com.runehive.game.world.entity.combat.attack.FightType;
5import com.runehive.game.world.entity.mob.Mob;
6import com.runehive.game.world.entity.mob.prayer.Prayer;
7import com.runehive.game.world.entity.skill.Skill;
8import com.runehive.game.world.items.containers.equipment.Equipment;
9
10public final class RangedFormula implements FormulaModifier<Mob> {
11
12 @Override
13 public int modifyAccuracy(Mob attacker, Mob defender, int roll) {
14 FightType fightType = attacker.getCombat().getFightType();
15 int level = attacker.skills.getLevel(Skill.RANGED);
16 int effectiveAccuracy = attacker.getCombat().modifyRangedLevel(defender, level);
17 return 8 + effectiveAccuracy + fightType.getStyle().getAccuracyIncrease();
18 }
19
20 @Override
21 public int modifyAggressive(Mob attacker, Mob defender, int roll) {
22 int level = attacker.skills.getLevel(Skill.RANGED);
23 return 8 + attacker.getCombat().modifyRangedLevel(defender, level);
24 }
25
26 @Override
27 public int modifyDefensive(Mob attacker, Mob defender, int roll) {
28 FightType fightType = defender.getCombat().getFightType();
29 int level = defender.skills.getLevel(Skill.DEFENCE);
30 int effectiveDefence = defender.getCombat().modifyDefenceLevel(attacker, level);
31 return 8 + effectiveDefence + fightType.getStyle().getDefensiveIncrease();
32 }
33
34 @Override
35 public int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus) {
36 bonus = attacker.getBonus(Equipment.RANGED_OFFENSE);
37 return attacker.getCombat().modifyOffensiveBonus(defender, bonus);
38 }
39
40 @Override
41 public int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus) {
42 bonus = attacker.getBonus(Equipment.RANGED_STRENGTH);
43 return attacker.getCombat().modifyAggresiveBonus(defender, bonus);
44 }
45
46 @Override
47 public int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus) {
48 bonus = defender.getBonus(Equipment.RANGED_DEFENSE);
49 return defender.getCombat().modifyDefensiveBonus(attacker, bonus);
50 }
51
52 @Override
53 public int modifyDamage(Mob attacker, Mob defender, int damage) {
54 damage = attacker.getCombat().modifyDamage(defender, damage);
56 damage *= !attacker.isPlayer() || defender.isNpc() ? 0.0 : 0.6;
57 }
58 return damage;
59 }
60
61}
int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus)
int modifyAccuracy(Mob attacker, Mob defender, int roll)
int modifyDamage(Mob attacker, Mob defender, int damage)
int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus)
int modifyAggressive(Mob attacker, Mob defender, int roll)
int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus)
int modifyDefensive(Mob attacker, Mob defender, int roll)
Handles the mob class.
Definition Mob.java:66
abstract Combat<? extends Mob > getCombat()
The combat of the mob.
final boolean isNpc()
Check if an entity is an npc.
Definition Mob.java:550
final boolean isPlayer()
Check if an entity is a player.
Definition Mob.java:564
boolean isActive(Prayer... prayers)
Checks if all given prayers are active.
Represents a trainable and usable skill.
Definition Skill.java:18
static final int RANGED
The ranged skill id.
Definition Skill.java:33
static final int DEFENCE
The defence skill id.
Definition Skill.java:24
int getLevel(int id)
Gets the level of a skill.
The container that manages the equipment for a player.
The enumerated type whose elements represent the fighting types.
final FightStyle getStyle()
Gets the style active when this type is active.