RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
MagicFormula.java
1package com.osroyale.game.world.entity.combat.formula;
2
3import com.osroyale.game.world.entity.combat.FormulaModifier;
4import com.osroyale.game.world.entity.mob.Mob;
5import com.osroyale.game.world.entity.mob.player.Player;
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
35
36public final class MagicFormula implements FormulaModifier<Mob> {
37
38 @Override
39 public int modifyAccuracy(Mob attacker, Mob defender, int roll) {
40 int level = attacker.skills.getLevel(Skill.MAGIC);
41 return 8 + attacker.getCombat().modifyMagicLevel(defender, level);
42 }
43
44 @Override
45 public int modifyAggressive(Mob attacker, Mob defender, int roll) {
46 int level = attacker.skills.getLevel(Skill.MAGIC);
47 return 8 + attacker.getCombat().modifyMagicLevel(defender, level);
48 }
49
50 @Override
51 public int modifyDefensive(Mob attacker, Mob defender, int roll) {
52 //FightType fightType = defender.getCombat().getFightType();
53
54 int magic = defender.skills.getLevel(Skill.MAGIC);
55 magic = defender.getCombat().modifyMagicLevel(defender, magic);
56
57 int defence = defender.skills.getLevel(Skill.DEFENCE);
58 defence = defender.getCombat().modifyDefenceLevel(attacker, defence);
59
60 double eD;
61 if (attacker instanceof Player) {
62 eD = magic * 0.7 + defence * 0.3;
63 } else {
64 eD = magic + 9;
65 }
66 /*int effectiveLevel = 8 + fightType.getStyle().getDefensiveIncrease();
67 effectiveLevel += 0.70 * magic + 0.30 * defence;*/
68
69 return (int) eD;
70 }
71
72 @Override
73 public int modifyDamage(Mob attacker, Mob defender, int damage) {
74 int bonus = attacker.getBonus(Equipment.MAGIC_STRENGTH);
75
76 if (attacker.isPlayer()) {
77 if (attacker.getPlayer().isSingleCast()) {
78 damage = attacker.getPlayer().singleCast.getCombatProjectile().getMaxHit();
79 } else if (attacker.getPlayer().isAutocast()) {
80 damage = attacker.getPlayer().autocast.getCombatProjectile().getMaxHit();
81 }
82 }
83
84 damage += damage * bonus / 100;
85 damage = attacker.getCombat().modifyDamage(defender, damage);
86
87 if (defender.prayer.isActive(Prayer.PROTECT_FROM_MAGIC)) {
88 damage *= !attacker.isPlayer() || defender.isNpc() ? 0.0 : 0.6;
89 }
90
91 return damage;
92 }
93
94 @Override
95 public int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus) {
96 bonus = attacker.getBonus(Equipment.MAGIC_OFFENSE);
97 return attacker.getCombat().modifyOffensiveBonus(defender, bonus);
98 }
99
100 @Override
101 public int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus) {
102 return attacker.getCombat().modifyAggresiveBonus(defender, bonus);
103 }
104
105 @Override
106 public int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus) {
107 bonus = defender.getBonus(Equipment.MAGIC_DEFENSE);
108 return defender.getCombat().modifyDefensiveBonus(attacker, bonus);
109 }
110
111}
abstract Combat<? extends Mob > getCombat()