package net.scapeemulator.game.model.player.skills.runecrafting;
import net.scapeemulator.game.model.object.GroundObjectList.GroundObject;
import net.scapeemulator.game.model.player.Item;
import net.scapeemulator.game.model.player.Player;
import net.scapeemulator.game.model.player.action.ReachObjectAction;
import net.scapeemulator.game.model.player.skills.Skill;
/**
* @author David Insley
*/
public class RunecraftingAction extends ReachObjectAction {
private final RCRune runeType;
private final GroundObject object;
public RunecraftingAction(Player player, RCRune runeType, GroundObject object) {
super(1, false, player, object, 1, true);
this.runeType = runeType;
this.object = object;
}
@Override
public void executeAction() {
if (!mob.notWalking()) {
return;
}
mob.turnToPosition(object.getCenterPosition());
if (!runeType.getRequirements().hasRequirementsDisplayOne(mob)) {
stop();
return;
}
Item removed = null;
// If pure ess isn't required, check for rune ess
if (!runeType.pureReq()) {
removed = mob.getInventory().remove(new Item(Runecrafting.RUNE_ESS, 28));
}
// If we couldn't use regular essence (either because it isn't allowed or we didn't have it), check for pure essence
if (removed == null) {
removed = mob.getInventory().remove(new Item(Runecrafting.PURE_ESS, 28));
}
if (removed == null) {
mob.sendMessage("You don't have enough essence to craft any runes.");
stop();
return;
}
int amount = removed.getAmount();
Item runes = new Item(runeType.getRune().getItemId(), amount * runeType.getMultiplier(mob.getSkillSet().getCurrentLevel(Skill.RUNECRAFTING)));
mob.sendMessage("You bind the altar's power into some " + runes.getDefinition().getName().toLowerCase() + "s.");
mob.getSkillSet().addExperience(Skill.RUNECRAFTING, runeType.getXP() * amount);
mob.getInventory().add(runes);
mob.playAnimation(Runecrafting.CRAFT_ANIMATION);
mob.playSpotAnimation(Runecrafting.CRAFT_GFX);
stop();
}
}