RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
Hunter.java
1package com.osroyale.content.skill.impl.hunter;
2
3import com.osroyale.Config;
4import com.osroyale.content.event.impl.ItemInteractionEvent;
5import com.osroyale.content.event.impl.NpcInteractionEvent;
6import com.osroyale.content.event.impl.ObjectInteractionEvent;
7import com.osroyale.content.skill.impl.hunter.net.ImplingReward;
8import com.osroyale.content.skill.impl.hunter.net.PuroPuroAction;
9import com.osroyale.content.skill.impl.hunter.net.impl.Butterfly;
10import com.osroyale.content.skill.impl.hunter.net.impl.Impling;
11import com.osroyale.content.skill.impl.hunter.net.Netting;
12import com.osroyale.content.skill.impl.hunter.trap.BoxTrap;
13import com.osroyale.content.skill.impl.hunter.trap.SnareTrap;
14import com.osroyale.content.skill.impl.hunter.trap.Trap;
15import com.osroyale.content.skill.impl.hunter.trap.TrapManager;
16import com.osroyale.game.world.World;
17import com.osroyale.game.world.entity.combat.hit.Hit;
18import com.osroyale.game.world.entity.mob.npc.Npc;
19import com.osroyale.game.world.entity.mob.player.Player;
20import com.osroyale.game.world.entity.skill.Skill;
21import com.osroyale.game.world.items.Item;
22import com.osroyale.game.world.object.CustomGameObject;
23import com.osroyale.game.world.position.Position;
24import com.osroyale.net.packet.out.SendMessage;
25import com.osroyale.util.Utility;
26
59
60public class Hunter extends Skill {
61
63 public Hunter(int level, double experience) {
64 super(Skill.HUNTER, level, experience);
65 }
66
67 @Override
68 protected double modifier() {
70 }
71
72 @Override
73 protected boolean clickObject(Player player, ObjectInteractionEvent event) {
74 if (event.getOpcode() == 0) {
75 switch (event.getObject().getId()) {
76 case 25016:
77 case 25029:
78 player.action.execute(new PuroPuroAction(player, event.getObject()));
79 return true;
80 case 19187:
81 case 19175:
82 TrapManager.dismantle(player, event.getObject());
83 return true;
84 case 19191:
85 case 19189:
86 case 19180:
87 case 19184:
88 case 19182:
89 case 19178:
90 TrapManager.lootTrap(player, event.getObject());
91 return true;
92 }
93 }
94 return false;
95 }
96
97 @Override
98 protected boolean clickNpc(Player player, NpcInteractionEvent event) {
99 if (event.getOpcode() != 0) {
100 return false;
101 }
102
103 Npc npc = event.getNpc();
104
105 if (!npc.isVisible()) {
106 return false;
107 }
108
109 if (Impling.forId(npc.id).isPresent()) {
110 Impling imp = Impling.forId(npc.id).get();
111 World.schedule(new Netting(player, npc, imp.experience, imp.level, 11260, imp.reward));
112 return true;
113 } else if (Butterfly.forId(npc.id).isPresent()) {
114 Butterfly fly = Butterfly.forId(npc.id).get();
115 World.schedule(new Netting(player, npc, fly.experience, fly.level, 10012, fly.reward));
116 return true;
117 }
118
119 return false;
120 }
121
122 @Override
123 protected boolean clickItem(Player player, ItemInteractionEvent event) {
124 Item item = event.getItem();
125
126 if (event.getOpcode() == 0) {
127 switch (item.getId()) {
128 case 10006:
129 TrapManager.layTrap(player, new SnareTrap(new CustomGameObject(19175, new Position(player.getX(), player.getY(), player.getHeight())), Trap.TrapState.SET, 200, player));
130 return true;
131 case 10008:
132 TrapManager.layTrap(player, new BoxTrap(new CustomGameObject(19187, new Position(player.getX(), player.getY(), player.getHeight())), Trap.TrapState.SET, 200, player));
133 return true;
134 }
135 }
136
137 if (event.getOpcode() != 1) {
138 return false;
139 }
140
141 if (!ImplingReward.forId(item.getId()).isPresent()) {
142 return false;
143 }
144
145 ImplingReward impling = ImplingReward.forId(item.getId()).get();
146 Item reward = Utility.randomElement(impling.getLootation());
147
148 if (player.inventory.getFreeSlots() == 0) {
149 player.send(new SendMessage("You do not have enough inventory space to enter this."));
150 return true;
151 }
152
153 boolean shatter = Utility.random(10) == 1;
154 player.inventory.remove(item);
155
156 if (!shatter) {
157 player.inventory.add(11260, 1);
158 player.send(new SendMessage("You successfully open the jar.", true));
159 } else {
160 player.send(new SendMessage("The jar breaks as you open the jar, cutting you a bit.", true));
161 player.damage(new Hit(Utility.random(3)));
162 }
163
164 player.inventory.add(reward);
165 return true;
166 }
167}
static final double HUNTER_MODIFICATION
Definition Config.java:307
Hunter(int level, double experience)
Definition Hunter.java:63
Skill(int skill, int level, double experience)
Definition Skill.java:221