diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java index 78c8430c76e..e3a8dc35c64 100644 --- a/src/main/java/forge/game/phase/CombatUtil.java +++ b/src/main/java/forge/game/phase/CombatUtil.java @@ -810,8 +810,18 @@ public class CombatUtil { if (cntAttackers > 0 && Singletons.getModel().getGame().isCardInPlay("Dueling Grounds")) { return false; } + + Player defender = c.getController().getOpponent(); + if (combat != null) { + final GameEntity def = combat.getDefender(); + if (def instanceof Player) { + defender = (Player) def; + } else { + defender = ((Card) def).getController(); + } + } - return CombatUtil.canAttack(c); + return CombatUtil.canAttack(c, defender); } // can a creature attack at the moment? @@ -825,13 +835,41 @@ public class CombatUtil { * @return a boolean. */ public static boolean canAttack(final Card c) { + return canAttack(c, c.getController().getOpponent()); + } + + // can a creature attack at the moment? + /** + *
+ * canAttack. + *
+ * + * @param c + * a {@link forge.Card} object. + * @return a boolean. + */ + public static boolean canAttack(final Card c, final Player defender) { if (c.isTapped() || c.isPhasedOut() || (c.hasSickness() && !c.hasKeyword("CARDNAME can attack as though it had haste.")) || Singletons.getModel().getGame().getPhaseHandler().getPhase() .isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)) { return false; } - return CombatUtil.canAttackNextTurn(c); + return CombatUtil.canAttackNextTurn(c, defender); + } + + // can a creature attack if untapped and without summoning sickness? + /** + *+ * canAttackNextTurn. + *
+ * + * @param c + * a {@link forge.Card} object. + * @return a boolean. + */ + public static boolean canAttackNextTurn(final Card c) { + return canAttackNextTurn(c, c.getController().getOpponent()); } // can a creature attack if untapped and without summoning sickness? @@ -844,7 +882,7 @@ public class CombatUtil { * a {@link forge.Card} object. * @return a boolean. */ - public static boolean canAttackNextTurn(final Card c) { + public static boolean canAttackNextTurn(final Card c, final Player defender) { if (!c.isCreature()) { return false; } @@ -875,7 +913,7 @@ public class CombatUtil { if (asSeparateWords[12].matches("[0-9][0-9]?")) { powerLimit[0] = Integer.parseInt((asSeparateWords[12]).trim()); - List