package game.model; /** A fighter is someone who can take part in a battle. This could be a * card (typically a Monster) but also the player him/herself or a spell * card. */ public interface Fighter extends Action { /** The attack of the fighter. This does not include any modifying cards * on the table. To find out the attack including these, use {@link Game#getAttack(Fighter)}. * @return The attack. */ int getAttack(); /** The defense of the fighter. This does not include any modifying cards * on the table. To find out the defense including these, use {@link Game#getDefense(Fighter)}. * @return The defense. */ int getDefense(); /** Called when the fighter has lost and needs to deal with damage. * @param game The game state. * @param amount The amount of damage to take. */ void damage(Game game, int amount); /** Called just before the actual fight on the defender. Can be used to initialise the * fighter for response if the response depends on the game situation. * @param game The game state. * @return true if this fighter is happy to respond to this attack, false otherwise. */ boolean responding(Game game); }