From 597ab366967a5046123f4e631b0cccccb200a066 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Tue, 21 Feb 2023 13:20:26 -0500 Subject: [PATCH 1/2] SpellAbilityEffect.getCards support "ThisDefinedAndTgts" --- .../main/java/forge/game/ability/SpellAbilityEffect.java | 6 ++++++ forge-gui/res/cardsfolder/c/coastal_wizard.txt | 3 +-- forge-gui/res/cardsfolder/l/lady_sun.txt | 3 +-- forge-gui/res/cardsfolder/s/snow_hound.txt | 3 +-- forge-gui/res/cardsfolder/w/wizard_mentor.txt | 3 +-- 5 files changed, 10 insertions(+), 8 deletions(-) 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 4793f11b8dc..98a72bf35f1 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -209,6 +209,12 @@ public abstract class SpellAbilityEffect { private static CardCollection getCards(final boolean definedFirst, final String definedParam, final SpellAbility sa) { final boolean useTargets = sa.usesTargeting() && (!definedFirst || !sa.hasParam(definedParam)); + if (sa.hasParam("ThisDefinedAndTgts")) { + CardCollection cards = + AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("ThisDefinedAndTgts"), sa); + cards.addAll(sa.getTargets().getTargetCards()); + return cards; + } return useTargets ? new CardCollection(sa.getTargets().getTargetCards()) : AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam(definedParam), sa); } diff --git a/forge-gui/res/cardsfolder/c/coastal_wizard.txt b/forge-gui/res/cardsfolder/c/coastal_wizard.txt index 0a97824c361..c650c565e9b 100644 --- a/forge-gui/res/cardsfolder/c/coastal_wizard.txt +++ b/forge-gui/res/cardsfolder/c/coastal_wizard.txt @@ -2,7 +2,6 @@ Name:Coastal Wizard ManaCost:2 U U Types:Creature Human Wizard PT:1/1 -A:AB$ ChangeZone | Cost$ T | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBChangeZone | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | ActivationFirstCombat$ True | SpellDescription$ Return CARDNAME and another target creature to their owners' hands. Activate only during your turn, before attackers are declared. -SVar:DBChangeZone:DB$ ChangeZone | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand +A:AB$ ChangeZone | Cost$ T | ThisDefinedAndTgts$ Self | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | Origin$ Battlefield | Destination$ Hand | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | ActivationFirstCombat$ True | SpellDescription$ Return CARDNAME and another target creature to their owners' hands. Activate only during your turn, before attackers are declared. AI:RemoveDeck:All Oracle:{T}: Return Coastal Wizard and another target creature to their owners' hands. Activate only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/l/lady_sun.txt b/forge-gui/res/cardsfolder/l/lady_sun.txt index ffd09020bed..f7c428ac973 100644 --- a/forge-gui/res/cardsfolder/l/lady_sun.txt +++ b/forge-gui/res/cardsfolder/l/lady_sun.txt @@ -2,7 +2,6 @@ Name:Lady Sun ManaCost:1 U U Types:Legendary Creature Human Advisor PT:1/1 -A:AB$ ChangeZone | Cost$ T | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBChangeZone | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | ActivationFirstCombat$ True | SpellDescription$ Return CARDNAME and another target creature to their owners' hands. Activate only during your turn, before attackers are declared. -SVar:DBChangeZone:DB$ ChangeZone | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand +A:AB$ ChangeZone | Cost$ T | ThisDefinedAndTgts$ Self | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | Origin$ Battlefield | Destination$ Hand | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | ActivationFirstCombat$ True | SpellDescription$ Return CARDNAME and another target creature to their owners' hands. Activate only during your turn, before attackers are declared. AI:RemoveDeck:All Oracle:{T}: Return Lady Sun and another target creature to their owners' hands. Activate only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/s/snow_hound.txt b/forge-gui/res/cardsfolder/s/snow_hound.txt index ffab13572b5..a28b3e40132 100644 --- a/forge-gui/res/cardsfolder/s/snow_hound.txt +++ b/forge-gui/res/cardsfolder/s/snow_hound.txt @@ -2,7 +2,6 @@ Name:Snow Hound ManaCost:2 W Types:Creature Dog PT:1/1 -A:AB$ ChangeZone | Cost$ 1 T | ValidTgts$ Creature.Blue+YouCtrl,Creature.Green+YouCtrl | TgtPrompt$ Select target blue or green creature you control | Origin$ Battlefield | Destination$ Hand | SubAbility$ Return | SpellDescription$ Return CARDNAME and target green or blue creature you control to their owner's hand. -SVar:Return:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand +A:AB$ ChangeZone | Cost$ 1 T | ThisDefinedAndTgts$ Self | ValidTgts$ Creature.Blue+YouCtrl,Creature.Green+YouCtrl | TgtPrompt$ Select target blue or green creature you control | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME and target green or blue creature you control to their owner's hand. AI:RemoveDeck:Random Oracle:{1}, {T}: Return Snow Hound and target green or blue creature you control to their owner's hand. diff --git a/forge-gui/res/cardsfolder/w/wizard_mentor.txt b/forge-gui/res/cardsfolder/w/wizard_mentor.txt index 01c434e0428..c14b1bc4f45 100644 --- a/forge-gui/res/cardsfolder/w/wizard_mentor.txt +++ b/forge-gui/res/cardsfolder/w/wizard_mentor.txt @@ -2,7 +2,6 @@ Name:Wizard Mentor ManaCost:2 U Types:Creature Human Wizard PT:2/2 -A:AB$ ChangeZone | Cost$ T | Origin$ Battlefield | Destination$ Hand | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature. | SubAbility$ DBChangeZone | SpellDescription$ Return CARDNAME and target creature you control to owner's hand. -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand +A:AB$ ChangeZone | Cost$ T | ThisDefinedAndTgts$ Self | Origin$ Battlefield | Destination$ Hand | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Return CARDNAME and target creature you control to their owner's hand. AI:RemoveDeck:All Oracle:{T}: Return Wizard Mentor and target creature you control to their owner's hand. From 5fde87c84a89161fdb370ccfb76f2477bcd2b0a8 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Tue, 21 Feb 2023 13:20:52 -0500 Subject: [PATCH 2/2] ChangeZoneEffect.changeHiddenOriginStackDescription improve --- .../main/java/forge/game/ability/effects/ChangeZoneEffect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 71523075187..bbc9275d4e6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -330,7 +330,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { tgts = sa.knownDetermineDefined(sa.getParam("Defined")); } - sbTargets.append(" ").append(sa.getParamOrDefault("DefinedDesc", StringUtils.join(tgts, ", "))); + sbTargets.append(" ").append(sa.getParamOrDefault("DefinedDesc", Lang.joinHomogenous(tgts))); final String targetname = sbTargets.toString();