RuneHive-Game
Loading...
Searching...
No Matches
Flambleed.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.attack.listener.npc;
2
3import com.runehive.net.packet.out.SendMessage;
4import com.runehive.game.Animation;
5import com.runehive.game.UpdatePriority;
6import com.runehive.game.world.entity.combat.attack.listener.NpcCombatListenerSignature;
7import com.runehive.game.world.entity.combat.attack.listener.SimplifiedListener;
8import com.runehive.game.world.entity.combat.hit.CombatHit;
9import com.runehive.game.world.entity.combat.hit.Hit;
10import com.runehive.game.world.entity.combat.strategy.CombatStrategy;
11import com.runehive.game.world.entity.combat.strategy.npc.NpcMagicStrategy;
12import com.runehive.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
13import com.runehive.game.world.entity.mob.Mob;
14import com.runehive.game.world.entity.mob.npc.Npc;
15import com.runehive.game.world.entity.mob.player.Player;
16import com.runehive.game.world.items.Item;
17
18import static com.runehive.game.world.entity.combat.CombatUtil.createStrategyArray;
19import static com.runehive.game.world.entity.combat.CombatUtil.randomStrategy;
20import static com.runehive.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
21
22/**
23 * @author Daniel
24 */
25@NpcCombatListenerSignature(npcs = { 4881 })
26public class Flambleed extends SimplifiedListener<Npc> {
27
28 private static MagicAttack MAGIC;
30
31 static {
32 try {
33 MAGIC = new MagicAttack();
34 STRATEGIES = createStrategyArray(NpcMeleeStrategy.get(), MAGIC);
35 } catch(Exception e) {
36 e.printStackTrace();
37 }
38 }
39
40 @Override
41 public boolean canAttack(Npc attacker, Mob defender) {
42 if(!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
43 attacker.setStrategy(MAGIC);
44 }
45 return attacker.getStrategy().canAttack(attacker, defender);
46 }
47
48 @Override
49 public void start(Npc attacker, Mob defender, Hit[] hits) {
50 if(!NpcMeleeStrategy.get().withinDistance(attacker, defender)) {
51 attacker.setStrategy(MAGIC);
52 } else {
53 attacker.setStrategy(randomStrategy(STRATEGIES));
54 }
55 }
56
57 @Override
58 public void hit(Npc attacker, Mob defender, Hit hit) {
59 if (!defender.isPlayer()) {
60 return;
61 }
62 Player player = defender.getPlayer();
63 if (!player.equipment.hasWeapon()) {
64 return;
65 }
66 if (player.equipment.contains(1580)) {
67 return;
68 }
69 Item weapon = player.equipment.getWeapon();
70 player.equipment.unEquip(weapon);
71 player.send(new SendMessage("Flambeeds has removed your weapon since you are not wearing ice gloves."));
72 }
73
74 private static class MagicAttack extends NpcMagicStrategy {
75 private MagicAttack() {
76 super(getDefinition("Flames Of Zamorak"));
77 }
78
79 @Override
80 public Animation getAttackAnimation(Npc attacker, Mob defender) {
81 return new Animation(1750, UpdatePriority.HIGH);
82 }
83
84 @Override
85 public CombatHit[] getHits(Npc attacker, Mob defender) {
86 return new CombatHit[] { nextMagicHit(attacker, defender, combatProjectile) };
87 }
88 }
89}
Class that models a single animation used by an entity.
void start(Npc attacker, Mob defender, Hit[] hits)
A wrapper for a Hit object, adding additional variables for hit and hitsplat delays.
A Hit object holds the damage amount and hitsplat data.
Definition Hit.java:10
final CombatHit nextMagicHit(T attacker, Mob defender)
Handles the mob class.
Definition Mob.java:66
final boolean isPlayer()
Check if an entity is a player.
Definition Mob.java:564
Represents a non-player character in the in-game world.
Definition Npc.java:29
void setStrategy(CombatStrategy< Npc > strategy)
Definition Npc.java:212
CombatStrategy< Npc > getStrategy()
The combat strategy of the mob.
Definition Npc.java:161
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
boolean contains(int[] bowsWithNoArrowsRequired)
The OutgoingPacket that sends a message to a Players chatbox in the client.
Represents different priorities for updating.