RuneHive-Game
Loading...
Searching...
No Matches
MeleeFormula.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.combat.strategy.npc.boss.CorporealBeast;
6import com.runehive.game.world.entity.mob.Mob;
7import com.runehive.game.world.entity.mob.prayer.Prayer;
8import com.runehive.game.world.entity.skill.Skill;
9import com.runehive.game.world.items.containers.equipment.Equipment;
10
11import java.util.concurrent.TimeUnit;
12
13public final class MeleeFormula implements FormulaModifier<Mob> {
14
15 @Override
16 public int modifyAccuracy(Mob attacker, Mob defender, int roll) {
17 FightType fightType = attacker.getCombat().getFightType();
18 int level = attacker.skills.getLevel(Skill.ATTACK);
19 int effectiveAccuracy = attacker.getCombat().modifyAttackLevel(defender, level);
20 return 8 + effectiveAccuracy + fightType.getStyle().getAccuracyIncrease();
21 }
22
23 @Override
24 public int modifyAggressive(Mob attacker, Mob defender, int roll) {
25 FightType fightType = attacker.getCombat().getFightType();
26 int level = attacker.skills.getLevel(Skill.STRENGTH);
27 int effectiveStrength = attacker.getCombat().modifyStrengthLevel(defender, level);
28 return 8 + effectiveStrength + fightType.getStyle().getStrengthIncrease();
29 }
30
31 @Override
32 public int modifyDefensive(Mob attacker, Mob defender, int roll) {
33 FightType fightType = defender.getCombat().getFightType();
34 int level = defender.skills.getLevel(Skill.DEFENCE);
35 int effectiveDefence = defender.getCombat().modifyDefenceLevel(attacker, level);
36 return 8 + effectiveDefence + fightType.getStyle().getDefensiveIncrease();
37 }
38
39 @Override
40 public int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus) {
41 FightType fightType = attacker.getCombat().getFightType();
42 bonus = attacker.getBonus(fightType.getBonus());
43 return attacker.getCombat().modifyOffensiveBonus(defender, bonus);
44 }
45
46 @Override
47 public int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus) {
48 bonus = attacker.getBonus(Equipment.STRENGTH_BONUS);
49 return attacker.getCombat().modifyAggresiveBonus(defender, bonus);
50 }
51
52 @Override
53 public int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus) {
54 FightType fightType = attacker.getCombat().getFightType();
55 bonus = defender.getBonus(fightType.getCorrespondingBonus());
56 return defender.getCombat().modifyDefensiveBonus(attacker, bonus);
57 }
58
59 @Override
60 public int modifyDamage(Mob attacker, Mob defender, int damage) {
61 damage = attacker.getCombat().modifyDamage(defender, damage);
62 if(defender.isNpc() && defender.getNpc().id == 319 && (attacker.isPlayer() && !attacker.getPlayer().equipment.containsAny(CorporealBeast.weaponsAllowed))) {
63 damage /= 2;
64 }
65 if (defender.isPlayer() && !defender.getPlayer().staffOfDeadSpecial.elapsed(1, TimeUnit.MINUTES) && defender.getPlayer().equipment.containsAny(11791, 12904)) {
66 damage /= 2;
67 }
68 if (defender.prayer.isActive(Prayer.PROTECT_FROM_MELEE) && !defender.attributes.has("VERACS-EFFECT")) {
69 damage *= !attacker.isPlayer() || defender.isNpc() ? 0.0 : 0.6;
70 }
71 return damage;
72 }
73
74}
int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus)
int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus)
int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus)
int modifyDamage(Mob attacker, Mob defender, int damage)
int modifyAggressive(Mob attacker, Mob defender, int roll)
int modifyDefensive(Mob attacker, Mob defender, int roll)
int modifyAccuracy(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 GenericAttributes attributes
Definition Mob.java:95
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 DEFENCE
The defence skill id.
Definition Skill.java:24
static final int ATTACK
The attack skill id.
Definition Skill.java:21
static final int STRENGTH
The strength skill id.
Definition Skill.java:27
int getLevel(int id)
Gets the level of a skill.
final boolean containsAny(int... identifiers)
Determines if this container contains any identifiers.
The container that manages the equipment for a player.
boolean elapsed(long time, TimeUnit unit)
public< K > boolean has(K key)
Checks if a key is in the list of generic attribute.
The enumerated type whose elements represent the fighting types.
final int getCorrespondingBonus()
Determines the corresponding bonus for this fight type.
final FightStyle getStyle()
Gets the style active when this type is active.
final int getBonus()
Gets the type of bonus this global will apply.