package com.asteria.game.character.combat.magic; import java.util.Optional; import com.asteria.game.character.CharacterNode; import com.asteria.game.character.player.Player; import com.asteria.game.item.Item; /** * The {@link CombatSpell} extension with support for effects and no damage. * * @author lare96 <http://github.com/lare96> */ public abstract class CombatEffectSpell extends CombatSpell { @Override public final int maximumHit() { return -1; } @Override public final Optional<Item[]> equipmentRequired(Player player) { return Optional.empty(); } @Override public final void executeOnHit(CharacterNode cast, CharacterNode castOn, boolean accurate, int damage) { if (accurate) { effect(cast, castOn); } } /** * Executed when the spell casted by {@code cast} hits {@code castOn}. * * @param cast * the character who casted the spell. * @param castOn * the character who the spell was casted on. */ public abstract void effect(CharacterNode cast, CharacterNode castOn); }