53 public static final SecureRandom srand =
new SecureRandom();
55 public static boolean successful(
Mob attacker,
Mob defender,
CombatType style) {
60 if (attackRoll > defenceRoll)
61 chance = 1D - (defenceRoll + 2D) / (2D * (attackRoll + 1D));
63 chance = attackRoll / (2D * (defenceRoll + 1D));
65 double roll = srand.nextDouble();
69 public static double getPrayerBonus(
Mob attacker,
CombatType style) {
70 double prayerBonus = 1D;
88 bonus = attacker.getPlayer().getBonus(3);
97 if (((
Player) attacker).equipment.contains(27275)) {
100 if (((
Player) attacker).equipment.contains(
Items.SALVE_AMULET)) {
103 if (attacker.
isNpc()) {
104 if (((
Player) attacker).equipment.contains(
Items.SLAYER_HELMET)) {
107 if (((
Player) attacker).equipment.contains(
Items.BLACK_SLAYER_HELMET) || ((
Player) attacker).equipment.contains(
Items.GREEN_SLAYER_HELMET)
108 || ((
Player) attacker).equipment.contains(
Items.PURPLE_SLAYER_HELMET) || ((
Player) attacker).equipment.contains(
Items.RED_SLAYER_HELMET) || ((
Player) attacker).equipment.contains(21888)) {
111 if (((
Player) attacker).equipment.contains(19720)) {
114 if (((
Player) attacker).equipment.contains(22555)) {
119 if (task !=
null && task.valid(task.getName())) {
120 if (((
Player) attacker).equipment.contains(
Items.SLAYER_HELMET)) {
123 if (((
Player) attacker).equipment.contains(11865)) {
126 if (((
Player) attacker).equipment.contains(
Items.BLACK_SLAYER_HELMET) || ((
Player) attacker).equipment.contains(
Items.GREEN_SLAYER_HELMET) || ((
Player) attacker).equipment.contains(
Items.PURPLE_SLAYER_HELMET)
127 || ((
Player) attacker).equipment.contains(
Items.RED_SLAYER_HELMET) || ((
Player) attacker).equipment.contains(21888)) {
136 public static int getMagicLevelNpc(
Mob defender) {
137 return defender.getNpc().definition.
getSkills()[6];
140 public static int getMagicDefenceLevelNpc(
Mob defender,
CombatType style) {
142 if (defender instanceof
Npc npc) {
144 bonus = npc.getBonus(8);
150 public static double getEffectiveLevelDefender(
Mob defender) {
151 return getMagicLevelNpc(defender);
154 public static double getDefenceRoll(
Mob defender,
CombatType style) {
155 return Math.floor((getEffectiveLevelDefender(defender) + 9) * (getMagicDefenceLevelNpc(defender, style) + 64));
158 public static int getMagicLevel(
Mob attacker) {
162 public static double getEffectiveLevelAttacker(
Mob attacker,
CombatType style) {
163 return getMagicLevel(attacker) * (getPrayerBonus(attacker, style) + 9D);
167 return Math.round(getEffectiveLevelAttacker(attacker, style) * (getEquipmentBonus(attacker, style, task)) + 64D);