1package com.runehive.game.world.entity.combat.accuracy;
3import com.runehive.game.world.entity.combat.FormulaUtils;
4import com.runehive.game.world.entity.mob.Mob;
5import com.runehive.game.world.entity.mob.player.Player;
6import com.runehive.game.world.entity.mob.prayer.Prayer;
7import com.runehive.game.world.entity.skill.Skill;
9import java.security.SecureRandom;
17 public static final SecureRandom
srand =
new SecureRandom();
24 if (attackRoll > defenceRoll)
25 chance = 1D - (defenceRoll + 2D) / (2D * (attackRoll + 1D));
27 chance = attackRoll / (2D * (defenceRoll + 1D));
29 double roll =
srand.nextDouble();
39 if (defender instanceof
Player) {
42 switch (defender.
getCombat().getFightType().getStyle()) {
43 case DEFENSIVE -> defenceLevel += 3;
44 case CONTROLLED -> defenceLevel += 1;
50 return defenceLevel * (defenceBonus + 64);
57 double roll = effectiveLevel * (attackBonus + 64);
59 if (attacker instanceof
Player player) {
63 return Math.floor(roll);
68 if (attacker instanceof
Player) {
70 effectiveLevel = Math.floor(effectiveLevel);
72 switch (attacker.
getCombat().getFightType().getStyle()) {
73 case ACCURATE -> effectiveLevel += 3;
74 case CONTROLLED -> effectiveLevel += 1;
79 if (attacker instanceof
Player player) {
81 effectiveLevel *= 1.10;
85 return Math.floor(effectiveLevel);
89 double prayerBonus = 1;
104 return defender.
getBonus(defender.
getCombat().getFightType().getCorrespondingBonus());
112 double prayerBonus = 1;
114 prayerBonus += 1.05D;
116 prayerBonus += 1.10D;
118 prayerBonus += 1.15D;
120 prayerBonus += 1.20D;
122 prayerBonus += 1.25D;
static double getPrayerAttackBonus(Mob attacker)
static int getDefenceBonus(Mob defender)
static double getDefenceRoll(Mob defender)
static boolean successful(Mob attacker, Mob defender)
static double getEffectiveLevel(Mob attacker)
static final SecureRandom srand
static int getAttackBonus(Mob attacker)
static double getAttackRoll(Mob attacker)
static double getPrayerDefenseBonus(Mob defender)
final SkillManager skills
abstract Combat<? extends Mob > getCombat()
The combat of the mob.
This class represents a character controlled by a player.
boolean isActive(Prayer... prayers)
Checks if all given prayers are active.
Represents a trainable and usable skill.
static final int DEFENCE
The defence skill id.
static final int ATTACK
The attack skill id.
int getLevel(int id)
Gets the level of a skill.