From 1eb230e236e5bdd75dbba48a84af9fa6ab3cba0d Mon Sep 17 00:00:00 2001 From: magenoxx Date: Thu, 26 Jul 2012 18:47:04 +0400 Subject: [PATCH] Fixed Issue#29: It is possible to cancel creature attack even if it must attack --- .../src/mage/player/human/HumanPlayer.java | 13 +++++++++++-- Mage.Server/plugins/mage-player-human.jar | Bin 14441 -> 14703 bytes 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 6323f1cc630..9543dc0a9c5 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -36,6 +36,7 @@ import mage.abilities.*; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.*; import mage.abilities.effects.ReplacementEffect; +import mage.abilities.effects.RequirementEffect; import mage.abilities.mana.ManaAbility; import mage.cards.Card; import mage.cards.Cards; @@ -527,14 +528,22 @@ public class HumanPlayer extends PlayerImpl { selectDefender(game.getCombat().getDefenders(), attacker.getId(), game); } else if (filterAttack.match(attacker, null, playerId, game) && game.getStack().isEmpty()) { -// if (game.getState().getTriggered().isEmpty() && game.getState().getDelayed().isEmpty()) - game.getCombat().removeAttacker(attacker.getId(), game); + removeAttackerIfPossible(game, attacker); } } } } } + private void removeAttackerIfPossible(Game game, Permanent attacker) { + for (RequirementEffect effect : game.getContinuousEffects().getApplicableRequirementEffects(attacker, game)) { + if (effect.mustAttack(game)) { + return; // we can't cancel attacking + } + } + game.getCombat().removeAttacker(attacker.getId(), game); + } + protected boolean selectDefender(Set defenders, UUID attackerId, Game game) { if (defenders.size() == 1) { declareAttacker(attackerId, defenders.iterator().next(), game); diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar index d22341095b32b8e229839bcb16b26cfed4f34240..ad2f1035accded00e71abec6edb623781db28050 100644 GIT binary patch delta 13208 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 delta 13020 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 MPXKeo^^fHL01s)WK>z>%