package com.asteria.game.character.player.content; import com.asteria.game.World; import com.asteria.game.character.combat.prayer.CombatPrayer; import com.asteria.game.character.combat.weapon.CombatSpecial; import com.asteria.game.character.player.Player; import com.asteria.game.character.player.Rights; import com.asteria.game.character.player.skill.Skills; import com.asteria.task.Task; /** * The class that handles the restoration of weakened skills. * * @author lare96 <http://github.com/lare96> */ public final class RestoreStatTask extends Task { /** * Creates a new {@link RestoreStatTask}. */ public RestoreStatTask() { super(30, false); } @Override public void execute() { for (Player player : World.getPlayers()) { if (player == null) { continue; } for (int i = 0; i < player.getSkills().length; i++) { int realLevel = player.getSkills()[i].getRealLevel(); if (i == Skills.HITPOINTS) { if (player.getSkills()[i].getLevel() < realLevel && player.isAcceptAid()) { player.getSkills()[i].increaseLevel(1); if (CombatPrayer.isActivated(player, CombatPrayer.RAPID_HEAL)) { if (player.getSkills()[i].getLevel() < realLevel) { player.getSkills()[i].increaseLevel(1); } } Skills.refresh(player, Skills.HITPOINTS); } continue; } if (player.getSkills()[i].getLevel() < realLevel && i != Skills.PRAYER) { player.getSkills()[i].increaseLevel(1); if (CombatPrayer.isActivated(player, CombatPrayer.RAPID_RESTORE)) { if (player.getSkills()[i].getLevel() < realLevel) { player.getSkills()[i].increaseLevel(1); } } Skills.refresh(player, i); } else if (player.getSkills()[i].getLevel() > realLevel && i != Skills.PRAYER) { player.getSkills()[i].decreaseLevel(1); Skills.refresh(player, i); } } if (player.getSpecialPercentage().get() < 100) { if (player.getRights().equal(Rights.DEVELOPER)) { CombatSpecial.restore(player, 100); return; } CombatSpecial.restore(player, 5); } } } @Override public void onCancel() { World.submit(new RestoreStatTask()); } }