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);
}