RuneHive-Game
Loading...
Searching...
No Matches
Woodcutting.java
Go to the documentation of this file.
1package com.runehive.content.skill.impl.woodcutting;
2
3import com.runehive.content.event.impl.ObjectInteractionEvent;
4import com.runehive.content.skill.SkillRepository;
5import com.runehive.game.world.entity.mob.player.Player;
6import com.runehive.game.world.entity.skill.Skill;
7import com.runehive.game.world.items.Item;
8import com.runehive.net.packet.out.SendMessage;
9import com.runehive.util.StringUtils;
10
11/**
12 * @author <a href="http://www.rune-server.org/members/stand+up/">Stand Up</a>
13 * @since 24-12-2016.
14 */
15public final class Woodcutting extends Skill {
16
17 /** Constructs a new {@link Woodcutting} skill. */
18 public Woodcutting(int level, double experience) {
19 super(Skill.WOODCUTTING, level, experience);
20 }
21
22 public static double getBonus(Player player) {
23 double bonus = 0;
24 if(player.equipment.getId(0) == 10941)
25 bonus += 0.4;
26 if(player.equipment.getId(4) == 10939)
27 bonus += 0.8;
28 if(player.equipment.getId(7) == 10940)
29 bonus += 0.6;
30 if(player.equipment.getId(10) == 10933)
31 bonus += 0.2;
32
33 if(player.equipment.containsAll(10941, 10939, 10940, 10933))
34 bonus = 2.5;
35
36 return bonus;
37 }
38
39 public static boolean success(Player player, TreeData tree, AxeData axe) {
40 return SkillRepository.isSuccess(player, Skill.WOODCUTTING, tree.levelRequired, axe.level);
41 }
42
43 @Override
44 protected boolean clickObject(Player player, ObjectInteractionEvent event) {
45 TreeData tree = TreeData.forId(event.getObject().getId());
46
47 if (tree == null)
48 return false;
49
50 AxeData axe = AxeData.getDefinition(player).orElse(null);
51
52 if (axe == null) {
53 player.send(new SendMessage("You don't have a hatchet."));
54 return true;
55 }
56
57 if (!player.skills.getSkills()[Skill.WOODCUTTING].reqLevel(axe.level)) {
58 player.send(new SendMessage("You need a level of " + axe.level + " to use this hatchet!"));
59 return true;
60 }
61
62 if (!player.skills.getSkills()[Skill.WOODCUTTING].reqLevel(tree.levelRequired)) {
63 player.send(new SendMessage("You need a level of " + tree.levelRequired + " to cut " + StringUtils.appendIndefiniteArticle(event.getObject().getDefinition().getName()) + "."));
64 return true;
65 }
66
67 if (!player.inventory.hasCapacityFor(new Item(tree.item))) {
68 player.message("You do not have enough inventory spaces to do this!");
69 return true;
70 }
71
72 player.action.execute(new WoodcuttingAction(player, event.getObject(), tree, axe));
73 player.skills.get(Skill.WOODCUTTING).setDoingSkill(true);
74 player.message(true, "You swing your axe at the tree...");
75 return true;
76 }
77}
static boolean isSuccess(int skill, int levelRequired)
boolean clickObject(Player player, ObjectInteractionEvent event)
Woodcutting(int level, double experience)
Constructs a new Woodcutting skill.
static boolean success(Player player, TreeData tree, AxeData axe)
public< A extends Action<?> > void execute(A action)
This class represents a character controlled by a player.
Definition Player.java:125
double experience
The current skill experience.
Definition Skill.java:179
boolean reqLevel(int level)
Determines if your level is greater than or equal to level.
Definition Skill.java:270
int level
The current level of the skill.
Definition Skill.java:173
void setDoingSkill(boolean doingSkill)
Definition Skill.java:489
Skill(int skill, int level, double experience)
Constructs a new Skill.
Definition Skill.java:184
Skill[] getSkills()
Gets the skills of the mob.
Skill get(int id)
Gets the skill for an id.
The container class that represents an item that can be interacted with.
Definition Item.java:21
final int getId(int index)
Gets the item id located on index.
final boolean hasCapacityFor(Item... item)
Determines if this container has the capacity for item.
final boolean containsAll(int... identifiers)
Determines if this container contains all identifiers.
The OutgoingPacket that sends a message to a Players chatbox in the client.
static String appendIndefiniteArticle(String thing)
Appends the determined indefinite article to thing.
static Optional< AxeData > getDefinition(Player player)
Gets the definition for this hatchet.
Definition AxeData.java:74
final int levelRequired
The level required to chop the tree.
Definition TreeData.java:31
static TreeData forId(int id)
Gets the tree data based on the object identification.
Definition TreeData.java:71
final int item
The product identification for chopping the tree.
Definition TreeData.java:34