RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
CombatVenomEffect.java
1package com.osroyale.game.world.entity.combat.effect.impl;
2
3import com.osroyale.game.world.entity.combat.effect.CombatEffect;
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.hit.Hitsplat;
7import com.osroyale.game.world.entity.mob.Mob;
8import com.osroyale.game.world.entity.mob.npc.Npc;
9import com.osroyale.game.world.entity.mob.player.Player;
10import com.osroyale.game.world.items.Item;
11import com.osroyale.game.world.items.containers.equipment.Equipment;
12import com.osroyale.net.packet.out.SendMessage;
13import com.osroyale.net.packet.out.SendPoison;
14
46
47public final class CombatVenomEffect extends CombatEffect {
48
51 super(30);
52 }
53
54 @Override
55 public boolean apply(Mob mob) {
56 if (mob.isVenomed()) {
57 return false;
58 }
59
60 if (mob.isNpc() && mob.getNpc().definition.hasVenomImmunity()) {
61 return false;
62 }
63
64 if (mob.isPlayer() && mob.getPlayer().equipment
65 .retrieve(Equipment.HELM_SLOT)
66 .filter(helm -> helm.getId() == 13197 || helm.getId() == 13199 || helm.getId() == 12931)
67 .isPresent()) {
68 return false;
69 }
70
71 if (mob.isPlayer()) {
72 Player player = mob.getPlayer();
73 if (player.getVenomImmunity().get() > 0 || mob.isDead())
74 return false;
75 player.send(new SendMessage("You have been venomed!"));
76 player.send(new SendPoison(SendPoison.PoisonType.VENOM));
77 }
78 mob.getVenomDamage().set(6);
79 return true;
80 }
81
82 @Override
83 public boolean removeOn(Mob mob) {
84 boolean remove = !mob.isVenomed() || mob.isDead();
85 if (remove && mob.isPlayer()) {
86 Player player = (Player) mob;
87 player.send(new SendPoison(SendPoison.PoisonType.NO_POISON));
88 }
89 return remove;
90 }
91
92 @Override
93 public void process(Mob mob) {
94 if (mob.getVenomDamage().get() < 20)
95 mob.damage(new Hit(mob.getVenomDamage().getAndIncrement(2), Hitsplat.VENOM, HitIcon.NONE));
96 }
97
98 @Override
99 public boolean onLogin(Mob mob) {
100 if (mob.isVenomed() && mob.isPlayer()) {
101 mob.getPlayer().send(new SendPoison(SendPoison.PoisonType.REGULAR));
102 }
103 return mob.isVenomed();
104 }
105
106 public static boolean isVenomous(Npc npc) {
107 return npc.id == 2042 || npc.id == 2043 || npc.id == 2044;
108 }
109
110 public static boolean isVenomous(Item weapon) {
111 return weapon.matchesId(12_926) || weapon.matchesId(12_904) || weapon.matchesId(12_899);
112 }
113
114}