RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
MeleeStrategy.java
1package com.osroyale.game.world.entity.combat.strategy.basic;
2
3import com.osroyale.game.world.entity.combat.attack.FightType;
4import com.osroyale.game.world.entity.combat.hit.Hit;
5import com.osroyale.game.world.entity.combat.hit.HitIcon;
6import com.osroyale.game.world.entity.combat.strategy.CombatStrategy;
7import com.osroyale.game.world.entity.mob.Mob;
8import com.osroyale.game.world.entity.mob.player.Player;
9import com.osroyale.game.world.entity.skill.Skill;
10import com.osroyale.game.world.pathfinding.path.SimplePathChecker;
11import com.osroyale.util.Utility;
12
16public abstract class MeleeStrategy<T extends Mob> extends CombatStrategy<T> {
17
18 @Override
19 public boolean withinDistance(T attacker, Mob defender) {
20 final FightType fightType = attacker.getCombat().getFightType();
21 final int distance = getAttackDistance(attacker, fightType);
22
23 final boolean withinDistance = Utility.inRange(attacker, defender, distance);
24 if (defender.id == 1739 || defender.id == 1740 || defender.id == 1741 || defender.id == 1742 || defender.id == 1756) {
25 return withinDistance;
26 }
27 return withinDistance
28 && (SimplePathChecker.checkLine(attacker, defender)
29 || SimplePathChecker.checkLine(defender, attacker));
30 }
31
32 protected static void addCombatExperience(Player player, Hit... hits) {
33 int exp = 0;
34 for (Hit hit : hits) {
35 if (hit.getDamage() <= 0) continue;
36 if (hit.getHitIcon() == HitIcon.MELEE) {
37 exp += hit.getDamage();
38 } else if (hit.getHitIcon() == HitIcon.MAGIC) {
39 MagicStrategy.addCombatExperience(player, 0, hit);
40 }
41 }
42
43 exp *= player.experienceRate;
44 player.skills.addExperience(Skill.HITPOINTS, exp / 3);
45 switch (player.getCombat().getFightType().getStyle()) {
46 case ACCURATE:
47 player.skills.addExperience(Skill.ATTACK, exp);
48 break;
49 case AGGRESSIVE:
50 player.skills.addExperience(Skill.STRENGTH, exp);
51 break;
52 case DEFENSIVE:
53 player.skills.addExperience(Skill.DEFENCE, exp);
54 break;
55 case CONTROLLED:
56 exp /= 3;
57 player.skills.addExperience(Skill.ATTACK, exp);
58 player.skills.addExperience(Skill.STRENGTH, exp);
59 player.skills.addExperience(Skill.DEFENCE, exp);
60 break;
61 }
62 }
63
64}