RuneHive-Game
Loading...
Searching...
No Matches
CombatVenomEffect.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.effect.impl;
2
3import com.runehive.game.world.entity.combat.effect.CombatEffect;
4import com.runehive.game.world.entity.combat.hit.Hit;
5import com.runehive.game.world.entity.combat.hit.HitIcon;
6import com.runehive.game.world.entity.combat.hit.Hitsplat;
7import com.runehive.game.world.entity.mob.Mob;
8import com.runehive.game.world.entity.mob.npc.Npc;
9import com.runehive.game.world.entity.mob.player.Player;
10import com.runehive.game.world.items.Item;
11import com.runehive.game.world.items.containers.equipment.Equipment;
12import com.runehive.net.packet.out.SendMessage;
13import com.runehive.net.packet.out.SendPoison;
14
15/**
16 * The combat effect applied when a character needs to be venomed.
17 *
18 * @author lare96 <http://github.com/lare96>
19 */
20public final class CombatVenomEffect extends CombatEffect {
21
22 /** Creates a new {@link CombatVenomEffect}. */
24 super(30);
25 }
26
27 @Override
28 public boolean apply(Mob mob) {
29 if (mob.isVenomed()) {
30 return false;
31 }
32
33 if (mob.isNpc() && mob.getNpc().definition.hasVenomImmunity()) {
34 return false;
35 }
36
37 if (mob.isPlayer() && mob.getPlayer().equipment
38 .retrieve(Equipment.HELM_SLOT)
39 .filter(helm -> helm.getId() == 13197 || helm.getId() == 13199 || helm.getId() == 12931)
40 .isPresent()) {
41 return false;
42 }
43
44 if (mob.isPlayer()) {
45 Player player = mob.getPlayer();
46 if (player.getVenomImmunity().get() > 0 || mob.isDead())
47 return false;
48 player.send(new SendMessage("You have been venomed!"));
50 }
51 mob.getVenomDamage().set(6);
52 return true;
53 }
54
55 @Override
56 public boolean removeOn(Mob mob) {
57 boolean remove = !mob.isVenomed() || mob.isDead();
58 if (remove && mob.isPlayer()) {
59 Player player = (Player) mob;
61 }
62 return remove;
63 }
64
65 @Override
66 public void process(Mob mob) {
67 if (mob.getVenomDamage().get() < 20)
68 mob.damage(new Hit(mob.getVenomDamage().getAndIncrement(2), Hitsplat.VENOM, HitIcon.NONE));
69 }
70
71 @Override
72 public boolean onLogin(Mob mob) {
73 if (mob.isVenomed() && mob.isPlayer()) {
74 mob.getPlayer().send(new SendPoison(SendPoison.PoisonType.REGULAR));
75 }
76 return mob.isVenomed();
77 }
78
79 public static boolean isVenomous(Npc npc) {
80 return npc.id == 2042 || npc.id == 2043 || npc.id == 2044;
81 }
82
83 public static boolean isVenomous(Item weapon) {
84 return weapon.matchesId(12_926) || weapon.matchesId(12_904) || weapon.matchesId(12_899);
85 }
86
87}
CombatEffect(int delay)
Creates a new CombatEffect.
boolean removeOn(Mob mob)
Removes this effect from mob if needed.
boolean onLogin(Mob mob)
Executed on login, primarily used to re-apply the effect to mob.
void process(Mob mob)
Provides processing for this effect on mob.
A Hit object holds the damage amount and hitsplat data.
Definition Hit.java:10
Handles the mob class.
Definition Mob.java:66
Represents a non-player character in the in-game world.
Definition Npc.java:29
This class represents a character controlled by a player.
Definition Player.java:125
The container class that represents an item that can be interacted with.
Definition Item.java:21
The container that manages the equipment for a player.
The OutgoingPacket that sends a message to a Players chatbox in the client.
int get()
Gets the value present within this counter.
The enumerated type whose elements represent the hit icon of a Hit.
Definition HitIcon.java:8