RuneHive-Game
Loading...
Searching...
No Matches
MagicFormula.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.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;
8import com.runehive.game.world.items.containers.equipment.Equipment;
9
10public final class MagicFormula implements FormulaModifier<Mob> {
11
12 @Override
13 public int modifyAccuracy(Mob attacker, Mob defender, int roll) {
14 int level = attacker.skills.getLevel(Skill.MAGIC);
15 return 8 + attacker.getCombat().modifyMagicLevel(defender, level);
16 }
17
18 @Override
19 public int modifyAggressive(Mob attacker, Mob defender, int roll) {
20 int level = attacker.skills.getLevel(Skill.MAGIC);
21 return 8 + attacker.getCombat().modifyMagicLevel(defender, level);
22 }
23
24 @Override
25 public int modifyDefensive(Mob attacker, Mob defender, int roll) {
26 //FightType fightType = defender.getCombat().getFightType();
27
28 int magic = defender.skills.getLevel(Skill.MAGIC);
29 magic = defender.getCombat().modifyMagicLevel(defender, magic);
30
31 int defence = defender.skills.getLevel(Skill.DEFENCE);
32 defence = defender.getCombat().modifyDefenceLevel(attacker, defence);
33
34 double eD;
35 if (attacker instanceof Player) {
36 eD = magic * 0.7 + defence * 0.3;
37 } else {
38 eD = magic + 9;
39 }
40 /*int effectiveLevel = 8 + fightType.getStyle().getDefensiveIncrease();
41 effectiveLevel += 0.70 * magic + 0.30 * defence;*/
42
43 return (int) eD;
44 }
45
46 @Override
47 public int modifyDamage(Mob attacker, Mob defender, int damage) {
48 int bonus = attacker.getBonus(Equipment.MAGIC_STRENGTH);
49
50 if (attacker.isPlayer()) {
51 if (attacker.getPlayer().isSingleCast()) {
52 damage = attacker.getPlayer().singleCast.getCombatProjectile().getMaxHit();
53 } else if (attacker.getPlayer().isAutocast()) {
54 damage = attacker.getPlayer().autocast.getCombatProjectile().getMaxHit();
55 }
56 }
57
58 damage += damage * bonus / 100;
59 damage = attacker.getCombat().modifyDamage(defender, damage);
60
62 damage *= !attacker.isPlayer() || defender.isNpc() ? 0.0 : 0.6;
63 }
64
65 return damage;
66 }
67
68 @Override
69 public int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus) {
70 bonus = attacker.getBonus(Equipment.MAGIC_OFFENSE);
71 return attacker.getCombat().modifyOffensiveBonus(defender, bonus);
72 }
73
74 @Override
75 public int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus) {
76 return attacker.getCombat().modifyAggresiveBonus(defender, bonus);
77 }
78
79 @Override
80 public int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus) {
81 bonus = defender.getBonus(Equipment.MAGIC_DEFENSE);
82 return defender.getCombat().modifyDefensiveBonus(attacker, bonus);
83 }
84
85}
int modifyDefensive(Mob attacker, Mob defender, int roll)
int modifyAggressiveBonus(Mob attacker, Mob defender, int bonus)
int modifyDamage(Mob attacker, Mob defender, int damage)
int modifyOffensiveBonus(Mob attacker, Mob defender, int bonus)
int modifyAggressive(Mob attacker, Mob defender, int roll)
int modifyAccuracy(Mob attacker, Mob defender, int roll)
int modifyDefensiveBonus(Mob attacker, Mob defender, int bonus)
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
This class represents a character controlled by a player.
Definition Player.java:125
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 MAGIC
The magic skill id.
Definition Skill.java:39
int getLevel(int id)
Gets the level of a skill.
The container that manages the equipment for a player.