mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Tahngarth: fix attacking
This commit is contained in:
committed by
Michael Kamensky
parent
578e499460
commit
0b4cc03300
@@ -35,7 +35,7 @@ import forge.game.zone.ZoneType;
|
|||||||
import forge.util.CardTranslation;
|
import forge.util.CardTranslation;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -561,14 +561,16 @@ public abstract class SpellAbilityEffect {
|
|||||||
|
|
||||||
if (sa.hasParam(attackingParam) && combat.getAttackingPlayer().equals(controller)) {
|
if (sa.hasParam(attackingParam) && combat.getAttackingPlayer().equals(controller)) {
|
||||||
String attacking = sa.getParam(attackingParam);
|
String attacking = sa.getParam(attackingParam);
|
||||||
|
|
||||||
GameEntity defender = null;
|
GameEntity defender = null;
|
||||||
FCollectionView<GameEntity> defs = null;
|
FCollection<GameEntity> defs = null;
|
||||||
if ("True".equalsIgnoreCase(attacking)) {
|
if ("True".equalsIgnoreCase(attacking)) {
|
||||||
defs = combat.getDefenders();
|
defs = (FCollection<GameEntity>) combat.getDefenders();
|
||||||
} else if (sa.hasParam("ChoosePlayerOrPlaneswalker")) {
|
} else if (sa.hasParam("ChoosePlayerOrPlaneswalker")) {
|
||||||
Player defendingPlayer = Iterables.getFirst(AbilityUtils.getDefinedPlayers(host, attacking, sa), null);
|
PlayerCollection defendingPlayers = AbilityUtils.getDefinedPlayers(host, attacking, sa);
|
||||||
if (defendingPlayer != null) {
|
defs = new FCollection<>();
|
||||||
defs = game.getCombat().getDefendersControlledBy(defendingPlayer);
|
for (Player p : defendingPlayers) {
|
||||||
|
defs.addAll(game.getCombat().getDefendersControlledBy(p));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
defs = AbilityUtils.getDefinedEntities(host, attacking, sa);
|
defs = AbilityUtils.getDefinedEntities(host, attacking, sa);
|
||||||
@@ -577,7 +579,14 @@ public abstract class SpellAbilityEffect {
|
|||||||
if (defs != null) {
|
if (defs != null) {
|
||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Attacker", c);
|
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);
|
Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(c.getName())), false, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,6 +169,10 @@ public class PlayerProperty {
|
|||||||
if (player.getAssignedDamage() == 0) {
|
if (player.getAssignedDamage() == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
} else if (property.equals("Defending")) {
|
||||||
|
if (!player.getGame().getCombat().getAttackersAndDefenders().values().contains(player)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else if (property.equals("wasDealtCombatDamageThisTurn")) {
|
} else if (property.equals("wasDealtCombatDamageThisTurn")) {
|
||||||
if (player.getAssignedCombatDamage() == 0) {
|
if (player.getAssignedCombatDamage() == 0) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Legendary Creature Minotaur Warrior
|
|||||||
PT:5/5
|
PT:5/5
|
||||||
K:CantBeBlockedByAmount GT1
|
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.
|
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
|
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.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user