package com.asteria.game.character.combat.effect;
import plugin.minigames.fightcaves.FightCavesHandler;
import com.asteria.game.NodeType;
import com.asteria.game.character.CharacterNode;
import com.asteria.game.character.Flag;
import com.asteria.game.character.player.Player;
/**
* The combat effect applied when a player needs to be skulled.
*
* @author lare96 <http://github.com/lare96>
*/
public final class CombatSkullEffect extends CombatEffect {
/**
* Creates a new {@link CombatSkullEffect}.
*/
public CombatSkullEffect() {
super(50);
}
@Override
public boolean apply(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
if (player.getSkullTimer().get() > 0) {
return false;
}
player.getSkullTimer().set(3000);
player.setSkullIcon(Player.WHITE_SKULL);
player.getFlags().set(Flag.APPEARANCE);
return true;
}
return false;
}
@Override
public boolean removeOn(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
if (player.getSkullTimer().get() <= 0) {
player.setSkullIcon(-1);
player.getFlags().set(Flag.APPEARANCE);
return true;
}
return false;
}
return true;
}
@Override
public void process(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
player.getSkullTimer().decrementAndGet(50, 0);
}
}
@Override
public boolean onLogin(CharacterNode c) {
if (c.getType() == NodeType.PLAYER) {
Player player = (Player) c;
if (player.getSkullTimer().get() > 0) {
player.setSkullIcon(Player.WHITE_SKULL);
return true;
}
if (FightCavesHandler.isChampion(player))
player.setSkullIcon(Player.RED_SKULL);
}
return false;
}
}