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;