RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
ToragListener.java
1package com.osroyale.game.world.entity.combat.attack.listener.item;
2
3import com.osroyale.net.packet.out.SendMessage;
4import com.osroyale.game.Graphic;
5import com.osroyale.game.UpdatePriority;
6import com.osroyale.game.world.entity.combat.attack.listener.ItemCombatListenerSignature;
7import com.osroyale.game.world.entity.combat.attack.listener.NpcCombatListenerSignature;
8import com.osroyale.game.world.entity.combat.attack.listener.SimplifiedListener;
9import com.osroyale.game.world.entity.combat.hit.Hit;
10import com.osroyale.game.world.entity.mob.Mob;
11import com.osroyale.game.world.entity.mob.player.Player;
12import com.osroyale.util.Utility;
13
19@NpcCombatListenerSignature(npcs = {1676})
20@ItemCombatListenerSignature(requireAll = true, items = {4745, 4747, 4749, 4751})
21public class ToragListener extends SimplifiedListener<Mob> {
22
23 @Override
24 public void hit(Mob attacker, Mob defender, Hit hit) {
25 if (defender.isPlayer() && hit.getDamage() > 1) {
26 boolean success = Utility.random(100) <= 25;
27
28 if (!success)
29 return;
30
31 Player player = defender.getPlayer();
32 int energy = player.runEnergy;
33 int drain = energy < 50 ? 10 : 20;
34
35 energy -= drain;
36
37 if (energy < 0)
38 energy = 0;
39
40 player.runEnergy = energy;
41 player.send(new SendMessage(drain + "% run energy has been drained by " + attacker.getName() + "."));
42 player.graphic(new Graphic(399, UpdatePriority.VERY_HIGH));
43
44 if (attacker.isPlayer()) {
45 attacker.getPlayer().send(new SendMessage("You have drained " + drain +"% of " + defender.getName() + "'s run energy."));
46 }
47 }
48
49 super.hit(attacker, defender, hit);
50 }
51}