package com.asteria.game.character.combat.effect;
import com.asteria.game.NodeType;
import com.asteria.game.character.CharacterNode;
import com.asteria.game.character.player.Player;
/**
* The combat effect applied when a player needs to be teleblocked.
*
* @author lare96 <http://github.com/lare96>
*/
public final class CombatTeleblockEffect extends CombatEffect {
/**
* Creates a new {@link CombatTeleblockEffect}.
*/
public CombatTeleblockEffect() {
super(50);
}
@Override
public boolean apply(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
if (player.getTeleblockTimer().get() > 0) {
return false;
}
player.getTeleblockTimer().set(3000);
player.getMessages().sendMessage("You have just been teleblocked!");
return true;
}
return false;
}
@Override
public boolean removeOn(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
if (player.getTeleblockTimer().get() <= 0) {
player.getMessages().sendMessage("You feel the effects of the teleblock spell go away.");
return true;
}
return false;
}
return true;
}
@Override
public void process(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
player.getTeleblockTimer().decrementAndGet(50, 0);
}
}
@Override
public boolean onLogin(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
if (player.getTeleblockTimer().get() > 0)
return true;
}
return false;
}
}