package mage.abilities.effects.common; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; import mage.constants.Outcome; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import java.util.UUID; /** * @author xenohedron */ public class DamageTargetAndSelfEffect extends OneShotEffect { private final int firstAmount; private final int secondAmount; /** * Deals simultaneous damage to the target and to itself */ public DamageTargetAndSelfEffect(int amount) { this(amount, amount); } /** * Deals simultaneous damage to the target and to itself */ public DamageTargetAndSelfEffect(int firstAmount, int secondAmount) { super(Outcome.Damage); this.firstAmount = firstAmount; this.secondAmount = secondAmount; } protected DamageTargetAndSelfEffect(final DamageTargetAndSelfEffect effect) { super(effect); this.firstAmount = effect.firstAmount; this.secondAmount = effect.secondAmount; } @Override public DamageTargetAndSelfEffect copy() { return new DamageTargetAndSelfEffect(this); } @Override public boolean apply(Game game, Ability source) { for (UUID targetId : this.getTargetPointer().getTargets(game, source)) { Permanent permanent = game.getPermanent(targetId); if (permanent != null) { permanent.damage(firstAmount, source.getSourceId(), source, game); } else { Player player = game.getPlayer(targetId); if (player != null) { player.damage(firstAmount, source.getSourceId(), source, game); } } } Permanent itself = source.getSourcePermanentIfItStillExists(game); if (itself != null) { itself.damage(secondAmount, source.getSourceId(), source, game); } return true; } @Override public String getText(Mode mode) { if (staticText != null && !staticText.isEmpty()) { return staticText; } return "{this} deals " + firstAmount + "damage to " + getTargetPointer().describeTargets(mode.getTargets(), "that creature") + " and " + secondAmount + "damage to itself"; } }