1package com.osroyale.content.skill.impl;
3import com.google.common.base.Preconditions;
4import com.osroyale.net.packet.out.SendMessage;
5import com.osroyale.game.action.Action;
6import com.osroyale.game.action.policy.WalkablePolicy;
7import com.osroyale.game.world.entity.mob.Mob;
8import com.osroyale.game.world.entity.mob.player.Player;
9import com.osroyale.content.skill.SkillAction;
10import com.osroyale.game.world.items.Item;
11import com.osroyale.game.world.position.Position;
12import com.osroyale.util.RandomGen;
13import com.osroyale.util.StringUtils;
15import java.util.Optional;
49 NONE, ITEM, EXPERIENCE, ALL
58 private static final int SUCCESS_FACTOR = 10;
63 private final RandomGen random =
new RandomGen();
73 super(mob, position, instant);
85 super(mob, position, delay, instant);
94 public void onHarvest(Item[] items,
boolean success) {
131 if (
getMob().isPlayer()) {
133 if (
getMob().isPlayer() &&
getMob().getPlayer().inventory.remaining() < 1) {
134 getMob().getPlayer().send(
new SendMessage(
"You do not have any space left in your inventory."));
141 for (Item item :
remove) {
142 if (!player.inventory.
contains(item)) {
156 Preconditions.checkState(SUCCESS_FACTOR >= 0 && SUCCESS_FACTOR <= 99,
"Invalid success factor for harvesting!");
157 int factor = (
getMob().skills.getSkills()[
skill()].getLevel() / SUCCESS_FACTOR);
158 double boost = (factor * 0.01);
163 if (
getMob().isPlayer()) {
abstract double experience()
SkillAction(Mob mob, Optional< Position > position, int delay, boolean instant)
abstract Item[] harvestItems()
HarvestingSkillAction(Mob mob, Optional< Position > position, int delay, boolean instant)
abstract Optional< Item[]> removeItems()
WalkablePolicy getWalkablePolicy()
abstract double successFactor()
DoubleReward doubleReward()
void onHarvest(Item[] items, boolean success)
HarvestingSkillAction(Mob mob, Optional< Position > position, boolean instant)
final boolean containsAll(int... identifiers)
static String appendIndefiniteArticle(String thing)