package com.asteria.game.character.player.content;
import java.util.Optional;
import com.asteria.game.character.CharacterNode;
import com.asteria.game.character.Spell;
import com.asteria.game.character.player.Player;
import com.asteria.game.item.Item;
import com.asteria.game.location.Position;
/**
* The spell implementation that provides additional functions exclusively for
* teleportation spells.
*
* @author lare96 <http://github.com/lare96>
*/
public abstract class TeleportSpell extends Spell {
@Override
public final Optional<Item[]> equipmentRequired(Player player) {
return Optional.empty();
}
@Override
public final void startCast(CharacterNode cast, CharacterNode castOn) {
}
/**
* The position that the caster will be moved to.
*
* @return the teleport position.
*/
public abstract Position moveTo();
/**
* The teleportation method that this spell uses.
*
* @return the teleportation type.
*/
public abstract Spellbook type();
}