RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
MejRah.java
1package com.osroyale.content.activity.infernomobs;
2
3import com.osroyale.game.task.TickableTask;
4import com.osroyale.game.world.World;
5import com.osroyale.game.world.entity.combat.attack.FightType;
6import com.osroyale.game.world.entity.combat.hit.CombatHit;
7import com.osroyale.game.world.entity.combat.hit.Hit;
8import com.osroyale.game.world.entity.combat.strategy.npc.MultiStrategy;
9import com.osroyale.game.world.entity.combat.strategy.npc.NpcRangedStrategy;
10import com.osroyale.game.world.entity.mob.Mob;
11import com.osroyale.game.world.entity.mob.npc.Npc;
12import com.osroyale.game.world.entity.skill.Skill;
13
14import static com.osroyale.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
15
39
40public class MejRah extends MultiStrategy {
41
42 public MejRah() {
43 currentStrategy = new Ranged();
44 }
45
46 @Override
47 public int getAttackDelay(Npc attacker, Mob defender, FightType fightType) {
48 return attacker.definition.getAttackDelay();
49 }
50
51 private static class Ranged extends NpcRangedStrategy {
52
53 private Ranged() {
54 super(getDefinition("MejRah"));
55 }
56
57 @Override
58 public void hit(Npc attacker, Mob defender, Hit hit) {
59 if (!hit.isAccurate())
60 return;
61 World.schedule(new TickableTask(true, 1) {
62 @Override
63 protected void tick() {
64 Skill attack = defender.skills.get(Skill.ATTACK);
65 Skill str = defender.skills.get(Skill.STRENGTH);
66 Skill range = defender.skills.get(Skill.RANGED);
67 Skill mage = defender.skills.get(Skill.MAGIC);
68 Skill def = defender.skills.get(Skill.DEFENCE);
69 attack.modifyLevel(level -> level - 2);
70 str.modifyLevel(level -> level - 2);
71 range.modifyLevel(level -> level - 2);
72 mage.modifyLevel(level -> level - 2);
73 def.modifyLevel(level -> level - 2);
74 defender.skills.refresh();
75 if (defender.isPlayer())
76 defender.getPlayer().message("@red@You're skills have been drained..");
77 if (tick == ((CombatHit) hit).getHitsplatDelay() - 1)
78 cancel();
79 }
80 });
81 }
82
83 @Override
84 public CombatHit[] getHits(Npc attacker, Mob defender) {
85 return new CombatHit[] { nextRangedHit(attacker, defender, 19) };
86 }
87 }
88}
static void schedule(Task task)
Definition World.java:284
void modifyLevel(Function< Integer, Integer > function)
Definition Skill.java:318