diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index def41d98075..4826163b1d8 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -35,7 +35,7 @@ import forge.game.zone.ZoneType; import forge.util.CardTranslation; import forge.util.Lang; import forge.util.Localizer; -import forge.util.collect.FCollectionView; +import forge.util.collect.FCollection; /** *

@@ -561,14 +561,16 @@ public abstract class SpellAbilityEffect { if (sa.hasParam(attackingParam) && combat.getAttackingPlayer().equals(controller)) { String attacking = sa.getParam(attackingParam); + GameEntity defender = null; - FCollectionView defs = null; + FCollection defs = null; if ("True".equalsIgnoreCase(attacking)) { - defs = combat.getDefenders(); + defs = (FCollection) combat.getDefenders(); } else if (sa.hasParam("ChoosePlayerOrPlaneswalker")) { - Player defendingPlayer = Iterables.getFirst(AbilityUtils.getDefinedPlayers(host, attacking, sa), null); - if (defendingPlayer != null) { - defs = game.getCombat().getDefendersControlledBy(defendingPlayer); + PlayerCollection defendingPlayers = AbilityUtils.getDefinedPlayers(host, attacking, sa); + defs = new FCollection<>(); + for (Player p : defendingPlayers) { + defs.addAll(game.getCombat().getDefendersControlledBy(p)); } } else { defs = AbilityUtils.getDefinedEntities(host, attacking, sa); @@ -577,7 +579,14 @@ public abstract class SpellAbilityEffect { if (defs != null) { Map params = Maps.newHashMap(); params.put("Attacker", c); - defender = controller.getController().chooseSingleEntityForEffect(defs, sa, + Player chooser; + if (sa.hasParam("Chooser")) { + chooser = Iterables.getFirst(AbilityUtils.getDefinedPlayers(host, sa.getParam("Chooser"), sa), null); + } + else { + chooser = controller; + } + defender = chooser.getController().chooseSingleEntityForEffect(defs, sa, Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(c.getName())), false, params); } diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java index 64371232234..6d9265d04e9 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java +++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java @@ -169,6 +169,10 @@ public class PlayerProperty { if (player.getAssignedDamage() == 0) { return false; } + } else if (property.equals("Defending")) { + if (!player.getGame().getCombat().getAttackersAndDefenders().values().contains(player)) { + return false; + } } else if (property.equals("wasDealtCombatDamageThisTurn")) { if (player.getAssignedCombatDamage() == 0) { return false; diff --git a/forge-gui/res/cardsfolder/t/tahngarth_first_mate.txt b/forge-gui/res/cardsfolder/t/tahngarth_first_mate.txt index ff8901c848f..39487a986ac 100644 --- a/forge-gui/res/cardsfolder/t/tahngarth_first_mate.txt +++ b/forge-gui/res/cardsfolder/t/tahngarth_first_mate.txt @@ -4,6 +4,6 @@ Types:Legendary Creature Minotaur Warrior PT:5/5 K:CantBeBlockedByAmount GT1 T:Mode$ AttackersDeclared | AttackingPlayer$ Player.Opponent | Execute$ TrigGainControl | TriggerZones$ Battlefield | OptionalDecider$ You | IsPresent$ Card.Self+tapped | TriggerDescription$ Whenever an opponent attacks with one or more creatures, if CARDNAME is tapped, you may have that opponent gain control of CARDNAME until end of combat. If you do, choose a player or planeswalker that opponent is attacking. CARDNAME is attacking that player or planeswalker. -SVar:TrigGainControl:DB$ GainControl | Defined$ Self | NewController$ TriggeredAttackingPlayer | LoseControl$ EndOfCombat | Attacking$ True +SVar:TrigGainControl:DB$ GainControl | Defined$ Self | NewController$ TriggeredAttackingPlayer | LoseControl$ EndOfCombat | Attacking$ Player.Defending | Chooser$ You | ChoosePlayerOrPlaneswalker$ True AI:RemoveDeck:All Oracle:Tahngarth, First Mate can't be blocked by more than one creature.\nWhenever an opponent attacks with one or more creatures, if Tahngarth is tapped, you may have that opponent gain control of Tahngarth until end of combat. If you do, choose a player or planeswalker that opponent is attacking. Tahngarth is attacking that player or planeswalker.