Tahngarth: fix attacking

This commit is contained in:
Bug Hunter
2021-03-12 18:24:02 +00:00
committed by Michael Kamensky
parent 578e499460
commit 0b4cc03300
3 changed files with 21 additions and 8 deletions

View File

@@ -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;
/**
* <p>
@@ -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<GameEntity> defs = null;
FCollection<GameEntity> defs = null;
if ("True".equalsIgnoreCase(attacking)) {
defs = combat.getDefenders();
defs = (FCollection<GameEntity>) 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<String, Object> 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);
}

View File

@@ -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;

View File

@@ -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.