RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
DestructionSkillAction.java
1package com.osroyale.content.skill.impl;
2
3import com.osroyale.net.packet.out.SendMessage;
4import com.osroyale.game.action.policy.WalkablePolicy;
5import com.osroyale.game.world.entity.mob.Mob;
6import com.osroyale.content.skill.SkillAction;
7import com.osroyale.game.world.items.Item;
8import com.osroyale.game.world.items.ItemDefinition;
9import com.osroyale.game.world.position.Position;
10import com.osroyale.util.RandomGen;
11
12import java.util.Optional;
13
61
62public abstract class DestructionSkillAction extends SkillAction {
63
64 private static final int SUCCESS_FACTOR = 10;
65 private final RandomGen random = new RandomGen();
66
73 public DestructionSkillAction(Mob mob, Optional<Position> position, boolean instant) {
74 super(mob, position, instant);
75 }
76
77 @Override
78 public boolean canRun() {
79 String name = ItemDefinition.get(destructItem().getId()).getName();
80 if(getMob().isPlayer() && !getMob().getPlayer().inventory.contains(destructItem().getId())) {
81 getMob().getPlayer().send(new SendMessage("You do not have any " + name + " in your inventory."));
82 return false;
83 }
84 return true;
85 }
86
87 public abstract double successFactor();
88
89 @Override
90 public final void onExecute() {
91 int factor = (getMob().skills.getSkills()[skill()].getLevel() / SUCCESS_FACTOR);
92 double boost = (factor * 0.01);
93 if (random.success((successFactor() + boost))) {
94 if(getMob().isPlayer()) {
95 onDestruct(true);
96 getMob().skills.addExperience(skill(), experience());
97 this.cancel();
98 return;
99 }
100 } else {
101 onDestruct(false);
102 }
103 }
104
105 @Override
109
114 public void onDestruct(boolean success) {
115
116 }
117
122 public abstract Item destructItem();
123
124 @Override
125 public boolean prioritized() {
126 return false;
127 }
128}
SkillAction(Mob mob, Optional< Position > position, int delay, boolean instant)
DestructionSkillAction(Mob mob, Optional< Position > position, boolean instant)
synchronized final void cancel()
Definition Task.java:147