diff --git a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java index f1dc48ad8b8..c5e182f7b2f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java @@ -89,11 +89,11 @@ public class PlayAi extends SpellAbilityAi { } } - if (source != null && source.hasKeyword(Keyword.HIDEAWAY) && source.hasRemembered()) { + if (source != null && source.hasKeyword(Keyword.HIDEAWAY) && source.hasExiledCard()) { // AI is not very good at playing non-permanent spells this way, at least yet // (might be possible to enable it for Sorceries in Main1/Main2 if target is available, // but definitely not for most Instants) - Card rem = (Card) source.getFirstRemembered(); + Card rem = source.getExiledCards().getFirst(); CardTypeView t = rem.getState(CardStateName.Original).getType(); return t.isPermanent() && !t.isLand(); diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java index 5f85a77f270..206fffaa29b 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -332,6 +332,8 @@ public class GameCopier { final Card newCard = createCardCopy(newGame, owner, c); cardMap.put(c, newCard); + // TODO ExiledWith + Player zoneOwner = owner; // everything the CreatureEvaluator checks must be set here if (zone == ZoneType.Battlefield) { diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index b03fc392691..ab778d67228 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -355,6 +355,8 @@ public class AbilityUtils { } cards.addAll(CardLists.getValidCards(candidates, validDefined, hostCard.getController(), hostCard, sa)); return cards; + } else if (defined.startsWith("ExiledWith")) { + cards.addAll(hostCard.getExiledCards()); } else { CardCollection list = getPaidCards(sa, defined); if (list != null) { diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 8dff735a913..97af85b3d62 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -1373,7 +1373,8 @@ public class CardFactoryUtil { String hideawayDig = "DB$ Dig | Defined$ You | DigNum$ " + n + " | DestinationZone$ Exile | ExileFaceDown$ True | RememberChanged$ True | RestRandomOrder$ True"; String hideawayEffect = "DB$ Effect | StaticAbilities$ STHideawayEffectLookAtCard | ForgetOnMoved$ Exile | RememberObjects$ Remembered | Duration$ Permanent"; - + String cleanupStr = "DB$ Cleanup | ClearRemembered$ True"; + String lookAtCard = "Mode$ Continuous | Affected$ Card.IsRemembered | MayLookAt$ EffectSourceController | EffectZone$ Command | AffectedZone$ Exile | Description$ Any player who has controlled the permanent that exiled this card may look at this card in the exile zone."; SpellAbility digSA = AbilityFactory.getAbility(hideawayDig, card); @@ -1381,18 +1382,15 @@ public class CardFactoryUtil { AbilitySub effectSA = (AbilitySub) AbilityFactory.getAbility(hideawayEffect, card); effectSA.setSVar("STHideawayEffectLookAtCard", lookAtCard); + AbilitySub cleanSA = (AbilitySub) AbilityFactory.getAbility(cleanupStr, card); + digSA.setSubAbility(effectSA); + effectSA.setSubAbility(cleanSA); hideawayTrigger.setOverridingAbility(digSA); triggers.add(hideawayTrigger); - // when the card with hideaway leaves the battlefield, forget all exiled cards - final Trigger changeZoneTrigger = TriggerHandler.parseTrigger("Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | TriggerZones$ Battlefield | Static$ True", card, intrinsic); - String cleanupStr = "DB$ Cleanup | ClearRemembered$ True"; - changeZoneTrigger.setOverridingAbility(AbilityFactory.getAbility(cleanupStr, card)); - triggers.add(changeZoneTrigger); - for (final Trigger trigger : triggers) { inst.addTrigger(trigger); } diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 2201efef817..54142f27953 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -372,14 +372,14 @@ public class CardProperty { } } - if (!card.getExiledWith().equals(host)) { + if (!card.getExiledWith().equalsWithTimestamp(host)) { return false; } } else if (property.equals("ExiledWithEffectSource")) { if (card.getExiledWith() == null) { return false; } - if (!card.getExiledWith().equals(source.getEffectSource())) { + if (!card.getExiledWith().equalsWithTimestamp(source.getEffectSource())) { return false; } } else if (property.equals("EncodedWithSource")) { diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index e970612f6ca..3b9c49f7efb 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -313,6 +313,7 @@ public final class CardUtil { newCopy.setExiledBy(in.getExiledBy()); newCopy.setExiledWith(getLKICopy(in.getExiledWith(), cachedMap)); + newCopy.addExiledCards(in.getExiledCards()); if (in.getGame().getCombat() != null && in.isPermanent()) { newCopy.setCombatLKI(in.getGame().getCombat().saveLKI(newCopy)); diff --git a/forge-gui/res/cardsfolder/c/cemetery_tampering.txt b/forge-gui/res/cardsfolder/c/cemetery_tampering.txt index 31551672949..2b7544509c4 100644 --- a/forge-gui/res/cardsfolder/c/cemetery_tampering.txt +++ b/forge-gui/res/cardsfolder/c/cemetery_tampering.txt @@ -4,7 +4,6 @@ Types:Enchantment K:Hideaway:5 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you may mill three cards. Then if there are twenty or more cards in your graveyard, you may play the exiled card without paying its mana cost. SVar:TrigMill:DB$ Mill | NumCards$ 3 | Optional$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | ConditionPresent$ Card.IsRemembered | ConditionZone$ Exile | ConditionCheckSVar$ X | ConditionSVarCompare$ GE20 | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True -SVar:X:Count$ValidGraveyard Card.YouOwn +SVar:DBPlay:DB$ Play | ConditionPresent$ Card.YouOwn | ConditionZone$ Graveyard | ConditionCompare$ GE20 | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True DeckHas:Ability$Mill Oracle:Hideaway 5 (When this enchantment enters the battlefield, look at the top five cards of your library, exile one face down, then put the rest on the bottom in a random order.)\nAt the beginning of your upkeep, you may mill three cards. Then if there are twenty or more cards in your graveyard, you may play the exiled card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/f/fight_rigging.txt b/forge-gui/res/cardsfolder/f/fight_rigging.txt index 59bacbf04cf..eda8418d539 100644 --- a/forge-gui/res/cardsfolder/f/fight_rigging.txt +++ b/forge-gui/res/cardsfolder/f/fight_rigging.txt @@ -4,7 +4,6 @@ Types:Enchantment K:Hideaway:5 T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of combat on your turn, put a +1/+1 counter on target creature you control. Then if you control a creature with power 7 or greater, you may play the exiled card without paying its mana cost. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | ConditionPresent$ Card.IsRemembered | ConditionZone$ Exile | ConditionCheckSVar$ X | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True -SVar:X:Count$Valid Creature.YouCtrl+powerGE7 +SVar:DBPlay:DB$ Play | ConditionPresent$ Creature.YouCtrl+powerGE7 | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True DeckHas:Ability$Counters Oracle:Hideaway 5 (When this enchantment enters the battlefield, look at the top five cards of your library, exile one face down, then put the rest on the bottom in a random order.)\nAt the beginning of combat on your turn, put a +1/+1 counter on target creature you control. Then if you control a creature with power 7 or greater, you may play the exiled card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/h/howltooth_hollow.txt b/forge-gui/res/cardsfolder/h/howltooth_hollow.txt index ee31fbfc4e1..45ec601bda6 100644 --- a/forge-gui/res/cardsfolder/h/howltooth_hollow.txt +++ b/forge-gui/res/cardsfolder/h/howltooth_hollow.txt @@ -4,7 +4,6 @@ Types:Land K:Hideaway:4 K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. -A:AB$ Play | Cost$ B T | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ Hands | ConditionSVarCompare$ EQ0 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if each player has no cards in hand. -SVar:Hands:Count$NumInAllHands +A:AB$ Play | Cost$ B T | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionZone$ Hand | ConditionPresent$ Card | ConditionCompare$ EQ0 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if each player has no cards in hand. AI:RemoveDeck:Random Oracle:Hideaway 4 (When this permanent enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)\nHowltooth Hollow enters the battlefield tapped.\n{T}: Add {B}.\n{B}, {T}: You may play the exiled card without paying its mana cost if each player has no cards in hand. diff --git a/forge-gui/res/cardsfolder/m/mosswort_bridge.txt b/forge-gui/res/cardsfolder/m/mosswort_bridge.txt index 527d90d27a6..cbe0143b4de 100644 --- a/forge-gui/res/cardsfolder/m/mosswort_bridge.txt +++ b/forge-gui/res/cardsfolder/m/mosswort_bridge.txt @@ -4,6 +4,6 @@ Types:Land K:Hideaway:4 K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}. -A:AB$ Play | Cost$ G T | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if creatures you control have total power 10 or greater. +A:AB$ Play | Cost$ G T | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if creatures you control have total power 10 or greater. SVar:X:Count$SumPower_Creature.YouCtrl Oracle:Hideaway 4 (When this permanent enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)\nMosswort Bridge enters the battlefield tapped.\n{T}: Add {G}.\n{G}, {T}: You may play the exiled card without paying its mana cost if creatures you control have total power 10 or greater. diff --git a/forge-gui/res/cardsfolder/r/rabble_rousing.txt b/forge-gui/res/cardsfolder/r/rabble_rousing.txt index a33f9da9ff5..056ff9d9f48 100644 --- a/forge-gui/res/cardsfolder/r/rabble_rousing.txt +++ b/forge-gui/res/cardsfolder/r/rabble_rousing.txt @@ -4,8 +4,7 @@ Types:Enchantment K:Hideaway:5 T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you attack with one or more creatures, create that many 1/1 green and white Citizen creature tokens. Then if you control ten or more creatures, you may play the exiled card without paying its mana cost. SVar:TrigToken:DB$ Token | TokenScript$ gw_1_1_citizen | TokenAmount$ X | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | ConditionPresent$ Card.IsRemembered | ConditionZone$ Exile | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE10 | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True +SVar:DBPlay:DB$ Play | ConditionPresent$ Creature.YouCtrl | ConditionCompare$ GE10 | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True SVar:X:TriggerObjectsAttackers$Valid Creature.YouCtrl -SVar:Y:Count$Valid Creature.YouCtrl DeckHas:Ability$Token & Type$Citizen Oracle:Hideaway 5 (When this enchantment enters the battlefield, look at the top five cards of your library, exile one face down, then put the rest on the bottom in a random order.)\nWhenever you attack with one or more creatures, create that many 1/1 green and white Citizen creature tokens. Then if you control ten or more creatures, you may play the exiled card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/s/shelldock_isle.txt b/forge-gui/res/cardsfolder/s/shelldock_isle.txt index 35f2a98670c..178c3a528ae 100644 --- a/forge-gui/res/cardsfolder/s/shelldock_isle.txt +++ b/forge-gui/res/cardsfolder/s/shelldock_isle.txt @@ -4,7 +4,7 @@ Types:Land K:Hideaway:4 K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. -A:AB$ Play | Cost$ U T | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE20 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if a library has twenty or fewer cards in it. +A:AB$ Play | Cost$ U T | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE20 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if a library has twenty or fewer cards in it. SVar:X:PlayerCountPlayers$LowestValidLibrary Card.YouOwn AI:RemoveDeck:Random Oracle:Hideaway 4 (When this permanent enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)\nShelldock Isle enters the battlefield tapped.\n{T}: Add {U}.\n{U}, {T}: You may play the exiled card without paying its mana cost if a library has twenty or fewer cards in it. diff --git a/forge-gui/res/cardsfolder/s/smugglers_buggy.txt b/forge-gui/res/cardsfolder/s/smugglers_buggy.txt index 5688b3b592c..8157349c081 100644 --- a/forge-gui/res/cardsfolder/s/smugglers_buggy.txt +++ b/forge-gui/res/cardsfolder/s/smugglers_buggy.txt @@ -4,8 +4,8 @@ Types:Artifact Vehicle PT:5/5 K:Hideaway:4 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPlay | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may cast the exiled card without paying its mana cost. If you do, return CARDNAME to its owner's hand. -SVar:TrigPlay:DB$ Play | ValidSA$ Spell | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ImprintPlayed$ True | SubAbility$ DBReturn +SVar:TrigPlay:DB$ Play | ValidSA$ Spell | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ImprintPlayed$ True | SubAbility$ DBReturn SVar:DBReturn:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Hand | ConditionDefined$ Imprinted | ConditionPresent$ Card | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ConditionDefined$ Imprinted | ConditionPresent$ Card +SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True K:Crew:2 Oracle:Hideaway 4 (When this artifact enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom in a random order.)\nWhenever Smuggler's Buggy deals combat damage to a player, you may cast the exiled card without paying its mana cost. If you do, return Smuggler's Buggy to its owner's hand.\nCrew 2 diff --git a/forge-gui/res/cardsfolder/s/spinerock_knoll.txt b/forge-gui/res/cardsfolder/s/spinerock_knoll.txt index ebd57cddcca..8bc206a7561 100644 --- a/forge-gui/res/cardsfolder/s/spinerock_knoll.txt +++ b/forge-gui/res/cardsfolder/s/spinerock_knoll.txt @@ -4,6 +4,6 @@ Types:Land K:Hideaway:4 K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. -A:AB$ Play | Cost$ R T | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE7 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if an opponent was dealt 7 or more damage this turn. +A:AB$ Play | Cost$ R T | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE7 | ForgetRemembered$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if an opponent was dealt 7 or more damage this turn. SVar:X:Count$MaxOppDamageThisTurn Oracle:Hideaway 4 (When this permanent enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)\nSpinerock Knoll enters the battlefield tapped.\n{T}: Add {R}.\n{R}, {T}: You may play the exiled card without paying its mana cost if an opponent was dealt 7 or more damage this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/prowl.txt b/forge-gui/res/cardsfolder/upcoming/prowl.txt new file mode 100644 index 00000000000..4cf7e2f3480 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/prowl.txt @@ -0,0 +1,31 @@ +Name:Prowl, Stoic Strategist +ManaCost:3 W +Types:Legendary Artifact Creature Robot +PT:3/3 +K:More Than Meets the Eye:2 W +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Whenever NICKNAME attacks, exile up to one other target tapped creature or Vehicle. For as long as that card remains exiled, its owner may play it. +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Creature.Other+tapped,Vehicle.Other+tapped | TgtPrompt$ Select up to one other target tapped creature or Vehicle | TargetMin$ 0 | TargetMax$ 1 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | StaticAbilities$ Play | ExileOnMoved$ Exile | EffectOwner$ TargetedOwner | Duration$ Permanent +SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ For as long as that card remains exiled, its owner may play it. +T:Mode$ SpellCast | ValidCard$ Card.ExiledWithSource | ValidActivatingPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a player plays a card exiled with NICKNAME, you draw a card and convert NICKNAME. +T:Mode$ LandPlayed | ValidCard$ Card.ExiledWithSource | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever a player plays a card exiled with NICKNAME, you draw a card and convert NICKNAME. +SVar:TrigDraw:DB$ Draw | SubAbility$ DBConvert +SVar:DBConvert:DB$ SetState | Mode$ Convert | SubAbility$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +AlternateMode:Convert + +Oracle:More Than Meets the Eye {1}{R}{G} (You may cast this card converted for {1}{R}{G}.)\nOther nontoken artifact creatures and Vehicles you control have modular 1. (They enter the battlefield with an additional +1/+1 counter on them. When they die, you may put their +1/+1 counters on target artifact creature.)\nWhenever you put one or more +1/+1 counters on Blaster, convert it. + +ALTERNATE + +Name:Blaster, Morale Booster +ManaCost:no cost +Colors:red,green +Types:Legendary Artifact +K:Modular:3 +A:AB$ MoveCounter | Cost$ X T | Source$ Self | ValidTgts$ Artifact.Other | TgtPrompt$ Select another target artifact to get counters | CounterType$ P1P1 | CounterNum$ X | SorcerySpeed$ True | SubAbility$ DBPump | SpellDescription$ Move X +1/+1 counters from NICKNAME onto another target artifact. Activate only as a sorcery. +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Haste | SubAbility$ DBConvert | SpellDescription$ That artifact gains haste until end of turn. +SVar:DBConvert:DB$ SetState | Mode$ Convert | ConditionPresent$ Card.Self+counters_EQ0_P1P1 | StackDescription$ If NICKNAME has no +1/+1 counters on it, convert it. +SVar:X:Count$xPaid +DeckHas:Ability$Counters +Oracle:Modular 3\n{X}, {T}: Move X +1/+1 counters from Blaster onto another target artifact. That artifact gains haste until end of turn. If Blaster has no +1/+1 counters on it, convert it. Activate only as a sorcery. diff --git a/forge-gui/res/cardsfolder/w/watcher_for_tomorrow.txt b/forge-gui/res/cardsfolder/w/watcher_for_tomorrow.txt index ddfbf1416ce..0f9fe52129b 100644 --- a/forge-gui/res/cardsfolder/w/watcher_for_tomorrow.txt +++ b/forge-gui/res/cardsfolder/w/watcher_for_tomorrow.txt @@ -5,5 +5,5 @@ PT:2/1 K:Hideaway:4 K:CARDNAME enters the battlefield tapped. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ DBReturn | TriggerDescription$ When CARDNAME leaves the battlefield, put the exiled card into its owner's hand. -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Hand +SVar:DBReturn:DB$ ChangeZone | Defined$ ExiledWith | Origin$ Exile | Destination$ Hand Oracle:Hideaway 4 (When this permanent enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)\nWatcher for Tomorrow enters the battlefield tapped.\nWhen Watcher for Tomorrow leaves the battlefield, put the exiled card into its owner's hand. diff --git a/forge-gui/res/cardsfolder/w/widespread_thieving.txt b/forge-gui/res/cardsfolder/w/widespread_thieving.txt index 60184768592..9ac15f50d9c 100644 --- a/forge-gui/res/cardsfolder/w/widespread_thieving.txt +++ b/forge-gui/res/cardsfolder/w/widespread_thieving.txt @@ -4,7 +4,7 @@ Types:Enchantment K:Hideaway:5 T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a multicolored spell, create a Treasure token. Then, you may pay {W}{U}{B}{R}{G}. If you do, you may play the exiled card without paying its mana cost. SVar:TrigToken:DB$ Token | TokenScript$ c_a_treasure_sac | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | UnlessCost$ W U B R G | UnlessSwitched$ True | UnlessPayer$ You | ConditionPresent$ Card.IsRemembered | ConditionZone$ Exile | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True +SVar:DBPlay:DB$ Play | UnlessCost$ W U B R G | UnlessSwitched$ True | UnlessPayer$ You | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True AI:RemoveDeck:Random SVar:BuffedBy:Card.MultiColor DeckHas:Ability$Token|Sacrifice & Type$Treasure|Artifact diff --git a/forge-gui/res/cardsfolder/w/windbrisk_heights.txt b/forge-gui/res/cardsfolder/w/windbrisk_heights.txt index 3108c305b82..34c793f0d4a 100644 --- a/forge-gui/res/cardsfolder/w/windbrisk_heights.txt +++ b/forge-gui/res/cardsfolder/w/windbrisk_heights.txt @@ -4,6 +4,6 @@ Types:Land K:Hideaway:4 K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. -A:AB$ Play | Cost$ W T | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | ForgetRemembered$ True | PlayerTurn$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if you attacked with three or more creatures this turn. +A:AB$ Play | Cost$ W T | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | ForgetRemembered$ True | PlayerTurn$ True | AILogic$ CheckCondition | SpellDescription$ You may play the exiled card without paying its mana cost if you attacked with three or more creatures this turn. SVar:X:Count$AttackersDeclared Oracle:Hideaway 4 (When this permanent enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.)\nWindbrisk Heights enters the battlefield tapped.\n{T}: Add {W}.\n{W}, {T}: You may play the exiled card without paying its mana cost if you attacked with three or more creatures this turn. diff --git a/forge-gui/res/cardsfolder/w/wiretapping.txt b/forge-gui/res/cardsfolder/w/wiretapping.txt index 440db38ba44..ddcd9bb3a2d 100644 --- a/forge-gui/res/cardsfolder/w/wiretapping.txt +++ b/forge-gui/res/cardsfolder/w/wiretapping.txt @@ -4,6 +4,5 @@ Types:Enchantment K:Hideaway:5 T:Mode$ Drawn | ValidCard$ Card.YouOwn | FirstCardInDrawStep$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you draw your first card during each of your draw steps, draw a card. Then if you have nine or more cards in hand, you may play the exiled card without paying its mana cost. SVar:TrigDraw:DB$ Draw | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | ConditionPresent$ Card.IsRemembered | ConditionZone$ Exile | ConditionCheckSVar$ X | ConditionSVarCompare$ GE9 | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True -SVar:X:Count$InYourHand +SVar:DBPlay:DB$ Play | ConditionPresent$ Card | ConditionZone$ Hand | ConditionCompare$ GE9 | Defined$ ExiledWith | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True Oracle:Hideaway 5 (When this enchantment enters the battlefield, look at the top five cards of your library, exile one face down, then put the rest on the bottom in a random order.)\nWhenever you draw your first card during each of your draw steps, draw a card. Then if you have nine or more cards in hand, you may play the exiled card without paying its mana cost.