RuneHive-Game
Loading...
Searching...
No Matches
Hunter.java
Go to the documentation of this file.
1package com.runehive.content.skill.impl.hunter;
2
3import com.runehive.Config;
4import com.runehive.content.event.impl.ItemInteractionEvent;
5import com.runehive.content.event.impl.NpcInteractionEvent;
6import com.runehive.content.event.impl.ObjectInteractionEvent;
7import com.runehive.content.skill.impl.hunter.net.ImplingReward;
8import com.runehive.content.skill.impl.hunter.net.PuroPuroAction;
9import com.runehive.content.skill.impl.hunter.net.impl.Butterfly;
10import com.runehive.content.skill.impl.hunter.net.impl.Impling;
11import com.runehive.content.skill.impl.hunter.net.Netting;
12import com.runehive.content.skill.impl.hunter.trap.BoxTrap;
13import com.runehive.content.skill.impl.hunter.trap.SnareTrap;
14import com.runehive.content.skill.impl.hunter.trap.Trap;
15import com.runehive.content.skill.impl.hunter.trap.TrapManager;
16import com.runehive.game.world.World;
17import com.runehive.game.world.entity.combat.hit.Hit;
18import com.runehive.game.world.entity.mob.npc.Npc;
19import com.runehive.game.world.entity.mob.player.Player;
20import com.runehive.game.world.entity.skill.Skill;
21import com.runehive.game.world.items.Item;
22import com.runehive.game.world.object.CustomGameObject;
23import com.runehive.game.world.position.Position;
24import com.runehive.net.packet.out.SendMessage;
25import com.runehive.util.Utility;
26
27/**
28 * Handles the hunter skill.
29 *
30 * @author Daniel
31 */
32public class Hunter extends Skill {
33
34 /** Creates a new <code>Hunter<code> */
35 public Hunter(int level, double experience) {
36 super(Skill.HUNTER, level, experience);
37 }
38
39 @Override
40 protected double modifier() {
42 }
43
44 @Override
45 protected boolean clickObject(Player player, ObjectInteractionEvent event) {
46 if (event.getOpcode() == 0) {
47 switch (event.getObject().getId()) {
48 case 25016:
49 case 25029:
50 player.action.execute(new PuroPuroAction(player, event.getObject()));
51 return true;
52 case 19187:
53 case 19175:
54 TrapManager.dismantle(player, event.getObject());
55 return true;
56 case 19191:
57 case 19189:
58 case 19180:
59 case 19184:
60 case 19182:
61 case 19178:
62 TrapManager.lootTrap(player, event.getObject());
63 return true;
64 }
65 }
66 return false;
67 }
68
69 @Override
70 protected boolean clickNpc(Player player, NpcInteractionEvent event) {
71 if (event.getOpcode() != 0) {
72 return false;
73 }
74
75 Npc npc = event.getNpc();
76
77 if (!npc.isVisible()) {
78 return false;
79 }
80
81 if (Impling.forId(npc.id).isPresent()) {
82 Impling imp = Impling.forId(npc.id).get();
83 World.schedule(new Netting(player, npc, imp.experience, imp.level, 11260, imp.reward));
84 return true;
85 } else if (Butterfly.forId(npc.id).isPresent()) {
86 Butterfly fly = Butterfly.forId(npc.id).get();
87 World.schedule(new Netting(player, npc, fly.experience, fly.level, 10012, fly.reward));
88 return true;
89 }
90
91 return false;
92 }
93
94 @Override
95 protected boolean clickItem(Player player, ItemInteractionEvent event) {
96 Item item = event.getItem();
97
98 if (event.getOpcode() == 0) {
99 switch (item.getId()) {
100 case 10006:
101 TrapManager.layTrap(player, new SnareTrap(new CustomGameObject(19175, new Position(player.getX(), player.getY(), player.getHeight())), Trap.TrapState.SET, 200, player));
102 return true;
103 case 10008:
104 TrapManager.layTrap(player, new BoxTrap(new CustomGameObject(19187, new Position(player.getX(), player.getY(), player.getHeight())), Trap.TrapState.SET, 200, player));
105 return true;
106 }
107 }
108
109 if (event.getOpcode() != 1) {
110 return false;
111 }
112
113 if (!ImplingReward.forId(item.getId()).isPresent()) {
114 return false;
115 }
116
117 ImplingReward impling = ImplingReward.forId(item.getId()).get();
118 Item reward = Utility.randomElement(impling.getLootation());
119
120 if (player.inventory.getFreeSlots() == 0) {
121 player.send(new SendMessage("You do not have enough inventory space to enter this."));
122 return true;
123 }
124
125 boolean shatter = Utility.random(10) == 1;
126 player.inventory.remove(item);
127
128 if (!shatter) {
129 player.inventory.add(11260, 1);
130 player.send(new SendMessage("You successfully open the jar.", true));
131 } else {
132 player.send(new SendMessage("The jar breaks as you open the jar, cutting you a bit.", true));
133 player.damage(new Hit(Utility.random(3)));
134 }
135
136 player.inventory.add(reward);
137 return true;
138 }
139}
The class that contains setting-related constants for the server.
Definition Config.java:24
static final double HUNTER_MODIFICATION
The experience modification for hunter.
Definition Config.java:265
boolean clickNpc(Player player, NpcInteractionEvent event)
Definition Hunter.java:70
boolean clickItem(Player player, ItemInteractionEvent event)
Definition Hunter.java:95
Hunter(int level, double experience)
Creates a new Hunter
Definition Hunter.java:35
boolean clickObject(Player player, ObjectInteractionEvent event)
Definition Hunter.java:45
static void dismantle(Player client, GameObject trap)
static void layTrap(Player client, Trap trap)
static void lootTrap(Player client, GameObject trap)
public< A extends Action<?> > void execute(A action)
Represents the game world.
Definition World.java:46
static void schedule(Task task)
Submits a new event.
Definition World.java:247
A Hit object holds the damage amount and hitsplat data.
Definition Hit.java:10
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
double experience
The current skill experience.
Definition Skill.java:179
int level
The current level of the skill.
Definition Skill.java:173
Skill(int skill, int level, double experience)
Constructs a new Skill.
Definition Skill.java:184
The container class that represents an item that can be interacted with.
Definition Item.java:21
final int getId()
Gets the identification of this item.
Definition Item.java:324
boolean remove(Item item)
Attempts to withdraw item from this container.
boolean add(Item item)
Attempts to deposit item into this container.
Represents a static game object loaded from the map fs.
Represents a single tile on the game world.
Definition Position.java:14
The OutgoingPacket that sends a message to a Players chatbox in the client.
Handles miscellaneous methods.
Definition Utility.java:27
static int random(int bound)
Definition Utility.java:239
static< T > T randomElement(Collection< T > collection)
Picks a random element out of any array type.
Definition Utility.java:248
static Optional< ImplingReward > forId(int item)
static Optional< Butterfly > forId(int butterfly)
static Optional< Impling > forId(int impling)
Definition Impling.java:38
The possible states a trap can be in.
Definition Trap.java:9