From 1da25c1cc08e63c44253b53a42402e5c0120a4a5 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sun, 26 Jan 2025 20:05:32 +0100 Subject: [PATCH] TriggerCrewedSaddled: unify (#6897) --- .../java/forge/game/ability/AbilityKey.java | 1 - .../java/forge/game/ability/AbilityUtils.java | 2 ++ .../src/main/java/forge/game/card/Card.java | 14 ++++++----- .../java/forge/game/card/CardProperty.java | 2 +- .../game/trigger/TriggerBecomesCrewed.java | 10 ++++---- ...rCrewed.java => TriggerCrewedSaddled.java} | 10 ++++---- .../java/forge/game/trigger/TriggerType.java | 3 ++- .../main/java/forge/game/zone/MagicStack.java | 24 +++++++++++++++---- forge-gui/res/cardsfolder/a/adrestia.txt | 6 +---- forge-gui/res/cardsfolder/g/gearshift_ace.txt | 2 +- forge-gui/res/cardsfolder/g/ghost_ark.txt | 2 +- .../m/mighty_servant_of_leuk_o.txt | 2 +- forge-gui/res/cardsfolder/m/mindlink_mech.txt | 2 +- .../res/cardsfolder/m/mobilizer_mech.txt | 2 +- .../res/cardsfolder/p/protean_war_engine.txt | 2 +- .../res/cardsfolder/s/speedway_fanatic.txt | 2 +- .../cardsfolder/t/tiana_angelic_mechanic.txt | 2 +- .../cardsfolder/upcoming/canyon_vaulter.txt | 8 +++++++ .../res/cardsfolder/v/veteran_motorist.txt | 2 +- 19 files changed, 60 insertions(+), 38 deletions(-) rename forge-game/src/main/java/forge/game/trigger/{TriggerCrewed.java => TriggerCrewedSaddled.java} (67%) create mode 100644 forge-gui/res/cardsfolder/upcoming/canyon_vaulter.txt diff --git a/forge-game/src/main/java/forge/game/ability/AbilityKey.java b/forge-game/src/main/java/forge/game/ability/AbilityKey.java index 24faa6069b3..3d931a47674 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityKey.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityKey.java @@ -139,7 +139,6 @@ public enum AbilityKey { Token("Token"), TokenNum("TokenNum"), Valiant("Valiant"), - Vehicle("Vehicle"), Won("Won"), // below used across different Replacements, don't reuse 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 00906ef1b6f..65a0a50f3d2 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -535,6 +535,8 @@ else if (ability != null) { val = handlePaid(card.getConvoked(), calcX[1], card, ability); } else if (calcX[0].startsWith("Emerged")) { val = handlePaid(card.getEmerged(), calcX[1], card, ability); + } else if (calcX[0].startsWith("Crewed")) { + val = handlePaid(card.getCrewedByThisTurn(), calcX[1], card, ability); } else if (calcX[0].startsWith("Remembered")) { // Add whole Remembered list to handlePaid final CardCollection list = new CardCollection(); diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index c76eadaa10c..a507fd2f239 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -6755,10 +6755,9 @@ public void resetTimesCrewedThisTurn() { public void becomesCrewed(SpellAbility sa) { timesCrewedThisTurn++; - CardCollection crew = sa.getPaidList("TappedCards", true); + CardCollection crew = sa.getPaidList("Tapped", true); addCrewedByThisTurn(crew); - Map runParams = AbilityKey.newMap(); - runParams.put(AbilityKey.Vehicle, this); + Map runParams = AbilityKey.mapFromCard(this); runParams.put(AbilityKey.Crew, crew); game.getTriggerHandler().runTrigger(TriggerType.BecomesCrewed, runParams, false); } @@ -6771,11 +6770,14 @@ public final void addCrewedByThisTurn(final CardCollection crew) { if (crewedByThisTurn != null) crewedByThisTurn.addAll(crew); else crewedByThisTurn = crew; } - public final CardCollection getCrewedByThisTurn() { + public final CardCollectionView getCrewedByThisTurn() { + if (crewedByThisTurn == null) { + return CardCollection.EMPTY; + } return crewedByThisTurn; } - public final void setCrewedByThisTurn(final CardCollection crew) { - crewedByThisTurn = crew; + public final void setCrewedByThisTurn(final CardCollectionView crew) { + crewedByThisTurn = new CardCollection(crew); } public final void visitAttraction(Player visitor) { 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 27fd9f84bd8..b5dc3ff66e7 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -2187,7 +2187,7 @@ boolean check() { return true; } - private static boolean hasTimestampMatch(final Card card, final CardCollection coll) { + private static boolean hasTimestampMatch(final Card card, final CardCollectionView coll) { if (coll == null) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesCrewed.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesCrewed.java index d72b16a3816..d0260487937 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesCrewed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesCrewed.java @@ -17,20 +17,20 @@ public TriggerBecomesCrewed(final Map params, final Card host, f @Override public boolean performTest(Map runParams) { - if (!matchesValidParam("ValidVehicle", runParams.get(AbilityKey.Vehicle))) { + if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) { return false; } if (!matchesValidParam("ValidCrew", runParams.get(AbilityKey.Crew))) { return false; } if (hasParam("FirstTimeCrewed")) { - Card v = (Card) runParams.get(AbilityKey.Vehicle); + Card v = (Card) runParams.get(AbilityKey.Card); if (v.getTimesCrewedThisTurn() != 1) { return false; } } if (hasParam("ValidCrewAmount")) { - Card v = (Card) runParams.get(AbilityKey.Vehicle); + Card v = (Card) runParams.get(AbilityKey.Card); CardCollection crews = (CardCollection) runParams.get(AbilityKey.Crew); if (crews == null) { return false; @@ -45,13 +45,13 @@ public boolean performTest(Map runParams) { @Override public void setTriggeringObjects(SpellAbility sa, Map runParams) { - sa.setTriggeringObjectsFrom(runParams, AbilityKey.Vehicle, AbilityKey.Crew); + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card, AbilityKey.Crew); } @Override public String getImportantStackObjects(SpellAbility sa) { StringBuilder sb = new StringBuilder(); - sb.append(Localizer.getInstance().getMessage("lblVehicle")).append(": ").append(sa.getTriggeringObject(AbilityKey.Vehicle)); + sb.append(Localizer.getInstance().getMessage("lblVehicle")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(" "); sb.append(Localizer.getInstance().getMessage("lblCrew")).append(": ").append(sa.getTriggeringObject(AbilityKey.Crew)); return sb.toString(); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCrewed.java b/forge-game/src/main/java/forge/game/trigger/TriggerCrewedSaddled.java similarity index 67% rename from forge-game/src/main/java/forge/game/trigger/TriggerCrewed.java rename to forge-game/src/main/java/forge/game/trigger/TriggerCrewedSaddled.java index 3fcdf13c645..d3ef8754b3c 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCrewed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCrewedSaddled.java @@ -7,15 +7,15 @@ import forge.game.spellability.SpellAbility; import forge.util.Localizer; -public class TriggerCrewed extends Trigger { +public class TriggerCrewedSaddled extends Trigger { - public TriggerCrewed(final Map params, final Card host, final boolean intrinsic) { + public TriggerCrewedSaddled(final Map params, final Card host, final boolean intrinsic) { super(params, host, intrinsic); } @Override public boolean performTest(Map runParams) { - if (!matchesValidParam("ValidVehicle", runParams.get(AbilityKey.Vehicle))) { + if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) { return false; } if (!matchesValidParam("ValidCrew", runParams.get(AbilityKey.Crew))) { @@ -26,13 +26,13 @@ public boolean performTest(Map runParams) { @Override public void setTriggeringObjects(SpellAbility sa, Map runParams) { - sa.setTriggeringObjectsFrom(runParams, AbilityKey.Vehicle, AbilityKey.Crew); + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card, AbilityKey.Crew); } @Override public String getImportantStackObjects(SpellAbility sa) { StringBuilder sb = new StringBuilder(); - sb.append(Localizer.getInstance().getMessage("lblVehicle")).append(": ").append(sa.getTriggeringObject(AbilityKey.Vehicle)); + sb.append(Localizer.getInstance().getMessage("lblCard")).append(": ").append(sa.getTriggeringObject(AbilityKey.Card)); sb.append(" "); sb.append(Localizer.getInstance().getMessage("lblCrew")).append(": ").append(sa.getTriggeringObject(AbilityKey.Crew)); return sb.toString(); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index 0dcfe2cdf12..df8f1850c20 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -57,7 +57,7 @@ public enum TriggerType { CounterRemoved(TriggerCounterRemoved.class), CounterRemovedOnce(TriggerCounterRemovedOnce.class), CrankContraption(TriggerCrankContraption.class), - Crewed(TriggerCrewed.class), + Crewed(TriggerCrewedSaddled.class), Cycled(TriggerCycled.class), DamageAll(TriggerDamageAll.class), DamageDealtOnce(TriggerDamageDealtOnce.class), @@ -120,6 +120,7 @@ public enum TriggerType { RolledDie(TriggerRolledDie.class), RolledDieOnce(TriggerRolledDieOnce.class), RoomEntered(TriggerEnteredRoom.class), + Saddled(TriggerCrewedSaddled.class), Sacrificed(TriggerSacrificed.class), SacrificedOnce(TriggerSacrificedOnce.class), Scry(TriggerScry.class), diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index 35f33374d0c..92a08f5d0bd 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -421,11 +421,25 @@ public final void add(SpellAbility sp, SpellAbilityStackInstance si, int id) { activator.addCycled(sp); } - if (sp.isCrew()) { - // Trigger crews! - runParams.put(AbilityKey.Vehicle, sp.getHostCard()); - runParams.put(AbilityKey.Crew, sp.getPaidList("TappedCards", true)); - game.getTriggerHandler().runTrigger(TriggerType.Crewed, runParams, false); + if (sp.isCrew() && sp.getHostCard().getType().hasSubtype("Vehicle")) { + Iterable crews = sp.getPaidList("Tapped", true); + if (crews != null) { + for (Card c : crews) { + Map crewParams = AbilityKey.mapFromCard(sp.getHostCard()); + crewParams.put(AbilityKey.Crew, c); + game.getTriggerHandler().runTrigger(TriggerType.Crewed, crewParams, false); + } + } + } + if (sp.isKeyword(Keyword.SADDLE) && sp.getHostCard().getType().hasSubtype("Mount")) { + Iterable crews = sp.getPaidList("Tapped", true); + if (crews != null) { + for (Card c : crews) { + Map saddleParams = AbilityKey.mapFromCard(sp.getHostCard()); + saddleParams.put(AbilityKey.Crew, c); + game.getTriggerHandler().runTrigger(TriggerType.Saddled, saddleParams, false); + } + } } } else { // Run Copy triggers diff --git a/forge-gui/res/cardsfolder/a/adrestia.txt b/forge-gui/res/cardsfolder/a/adrestia.txt index 357ecfc46b3..5e140ec5716 100644 --- a/forge-gui/res/cardsfolder/a/adrestia.txt +++ b/forge-gui/res/cardsfolder/a/adrestia.txt @@ -6,11 +6,7 @@ K:Landwalk:Island T:Mode$ Attacks | ValidCard$ Card.Self | CheckSVar$ X | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, if an Assassin crewed it this turn, draw a card. CARDNAME becomes an Assassin in addition to its other types until end of turn. SVar:TrigDraw:DB$ Draw | NumCards$ 1 | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ Assassin -T:Mode$ BecomesCrewed | ValidVehicle$ Card.Self | Execute$ RememberCrew | Static$ True -SVar:RememberCrew:DB$ PumpAll | ValidCards$ Assassin.TriggeredCrew | RememberPumped$ True -T:Mode$ Phase | Phase$ End of Turn | Static$ True | Execute$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Remembered$Amount +SVar:X:Crewed$Valid Assassin K:Crew:1 SVar:HasAttackEffect:TRUE DeckHints:Type$Assassin diff --git a/forge-gui/res/cardsfolder/g/gearshift_ace.txt b/forge-gui/res/cardsfolder/g/gearshift_ace.txt index 785369b5d3c..136edd82057 100644 --- a/forge-gui/res/cardsfolder/g/gearshift_ace.txt +++ b/forge-gui/res/cardsfolder/g/gearshift_ace.txt @@ -4,5 +4,5 @@ Types:Creature Dwarf Pilot PT:2/1 K:First Strike T:Mode$ Crewed | ValidCrew$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME crews a Vehicle, that Vehicle gains first strike until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ TriggeredVehicle | KW$ First Strike +SVar:TrigPump:DB$ Pump | Defined$ TriggeredCardLKICopy | KW$ First Strike Oracle:First strike\nWhenever Gearshift Ace crews a Vehicle, that Vehicle gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/g/ghost_ark.txt b/forge-gui/res/cardsfolder/g/ghost_ark.txt index e19f257b03f..d6b2a66348c 100644 --- a/forge-gui/res/cardsfolder/g/ghost_ark.txt +++ b/forge-gui/res/cardsfolder/g/ghost_ark.txt @@ -3,7 +3,7 @@ ManaCost:4 Types:Artifact Vehicle PT:3/3 K:Flying -T:Mode$ BecomesCrewed | ValidVehicle$ Card.Self | Execute$ DBPumpAll | TriggerDescription$ Repair Barge — Whenever CARDNAME becomes crewed, each artifact creature card in your graveyard gains unearth {3} until end of turn. +T:Mode$ BecomesCrewed | ValidCard$ Card.Self | Execute$ DBPumpAll | TriggerDescription$ Repair Barge — Whenever CARDNAME becomes crewed, each artifact creature card in your graveyard gains unearth {3} until end of turn. SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Artifact.Creature+YouCtrl | KW$ Unearth:3 | PumpZone$ Graveyard K:Crew:2 DeckHas:Ability$Graveyard & Keyword$Unearth diff --git a/forge-gui/res/cardsfolder/m/mighty_servant_of_leuk_o.txt b/forge-gui/res/cardsfolder/m/mighty_servant_of_leuk_o.txt index 744e2082287..7b4727e5987 100644 --- a/forge-gui/res/cardsfolder/m/mighty_servant_of_leuk_o.txt +++ b/forge-gui/res/cardsfolder/m/mighty_servant_of_leuk_o.txt @@ -4,7 +4,7 @@ Types:Artifact Vehicle PT:6/6 K:Trample K:Ward:Discard<1/Card> -T:Mode$ BecomesCrewed | ValidVehicle$ Card.Self | FirstTimeCrewed$ True | ValidCrewAmount$ 2 | Execute$ DBAnimate | TriggerDescription$ Whenever CARDNAME becomes crewed for the first time each turn, if it was crewed by exactly two creatures, it gains "Whenever this creature deals combat damage to a player, draw two cards" until end of turn. +T:Mode$ BecomesCrewed | ValidCard$ Card.Self | FirstTimeCrewed$ True | ValidCrewAmount$ 2 | Execute$ DBAnimate | TriggerDescription$ Whenever CARDNAME becomes crewed for the first time each turn, if it was crewed by exactly two creatures, it gains "Whenever this creature deals combat damage to a player, draw two cards" until end of turn. SVar:DBAnimate:DB$ Animate | Defined$ Self | Duration$ UntilEndOfTurn | Triggers$ TrigCDPlayer | StackDescription$ None SVar:TrigCDPlayer:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ DBDraw | CombatDamage$ True | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player, draw two cards. SVar:DBDraw:DB$ Draw | NumCards$ 2 diff --git a/forge-gui/res/cardsfolder/m/mindlink_mech.txt b/forge-gui/res/cardsfolder/m/mindlink_mech.txt index c5b104ec889..8129075672c 100644 --- a/forge-gui/res/cardsfolder/m/mindlink_mech.txt +++ b/forge-gui/res/cardsfolder/m/mindlink_mech.txt @@ -3,7 +3,7 @@ ManaCost:2 U Types:Artifact Vehicle PT:4/3 K:Flying -T:Mode$ BecomesCrewed | ValidVehicle$ Card.Self | FirstTimeCrewed$ True | Execute$ TrigClone | TriggerDescription$ Whenever CARDNAME becomes crewed for the first time each turn, until end of turn, CARDNAME becomes a copy of target nonlegendary creature that crewed it this turn, except it's 4/3, it's a Vehicle artifact in addition to its other types, and it has flying. +T:Mode$ BecomesCrewed | ValidCard$ Card.Self | FirstTimeCrewed$ True | Execute$ TrigClone | TriggerDescription$ Whenever CARDNAME becomes crewed for the first time each turn, until end of turn, CARDNAME becomes a copy of target nonlegendary creature that crewed it this turn, except it's 4/3, it's a Vehicle artifact in addition to its other types, and it has flying. SVar:TrigClone:DB$ Clone | ValidTgts$ Creature.TriggeredCrew+nonLegendary | TgtPrompt$ Select target nonlegendary creature that crewed it this turn | Duration$ UntilEndOfTurn | SetPower$ 4 | SetToughness$ 3 | AddTypes$ Vehicle & Artifact | AddKeywords$ Flying | AILogic$ CloneBestCreature K:Crew:1 AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/m/mobilizer_mech.txt b/forge-gui/res/cardsfolder/m/mobilizer_mech.txt index 2e0fe69991e..d462cfc2a2f 100644 --- a/forge-gui/res/cardsfolder/m/mobilizer_mech.txt +++ b/forge-gui/res/cardsfolder/m/mobilizer_mech.txt @@ -3,7 +3,7 @@ ManaCost:1 U Types:Artifact Vehicle PT:3/4 K:Flying -T:Mode$ BecomesCrewed | ValidVehicle$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ Whenever CARDNAME becomes crewed, up to one other target Vehicle you control becomes an artifact creature until end of turn. +T:Mode$ BecomesCrewed | ValidCard$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ Whenever CARDNAME becomes crewed, up to one other target Vehicle you control becomes an artifact creature until end of turn. SVar:TrigAnimate:DB$ Animate | ValidTgts$ Vehicle.YouCtrl+Other | TgtPrompt$ Select up to one other target Vehicle you control | TargetMin$ 0 | TargetMax$ 1 | Types$ Creature,Artifact K:Crew:3 Oracle:Flying diff --git a/forge-gui/res/cardsfolder/p/protean_war_engine.txt b/forge-gui/res/cardsfolder/p/protean_war_engine.txt index ba38da66548..610423d116d 100644 --- a/forge-gui/res/cardsfolder/p/protean_war_engine.txt +++ b/forge-gui/res/cardsfolder/p/protean_war_engine.txt @@ -4,7 +4,7 @@ Types:Artifact Vehicle PT:0/4 K:ETBReplacement:Other:DBDraft SVar:DBDraft:DB$ Draft | TriggerZones$ Battlefield | Spellbook$ Serra Angel,Resplendent Angel,Steel-Plume Marshal,Duelcraft Trainer,Falconer Adept,Seraph of Dawn,Star-Crowned Stag,Benalish Marshal,Blade Historian,Captivating Crew,Manaform Hellkite,Serra Paragon,Moonveil Regent,Skyship Stalker,Ogre Battledriver | Zone$ Exile | SpellDescription$ As CARDNAME enters, draft a card from CARDNAME's spellbook and exile it. -T:Mode$ BecomesCrewed | ValidVehicle$ Card.Self | Execute$ TrigClone | TriggerDescription$ Whenever CARDNAME becomes crewed, until end of turn, it becomes a copy of the exiled card, except it's a Vehicle artifact in addition to its other types. +T:Mode$ BecomesCrewed | ValidCard$ Card.Self | Execute$ TrigClone | TriggerDescription$ Whenever CARDNAME becomes crewed, until end of turn, it becomes a copy of the exiled card, except it's a Vehicle artifact in addition to its other types. SVar:TrigClone:DB$ Clone | Defined$ ExiledWith | CloneTarget$ Self | AddTypes$ Vehicle & Artifact | Duration$ UntilEndOfTurn K:Crew:3 SVar:HasAttackingEffect:TRUE diff --git a/forge-gui/res/cardsfolder/s/speedway_fanatic.txt b/forge-gui/res/cardsfolder/s/speedway_fanatic.txt index bf1c835657e..66c6f84b04e 100644 --- a/forge-gui/res/cardsfolder/s/speedway_fanatic.txt +++ b/forge-gui/res/cardsfolder/s/speedway_fanatic.txt @@ -4,5 +4,5 @@ Types:Creature Human Pilot PT:2/1 K:Haste T:Mode$ Crewed | ValidCrew$ Card.Self | Execute$ TrigSpeedway | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME crews a Vehicle, that Vehicle gains haste until end of turn. -SVar:TrigSpeedway:DB$ Pump | Defined$ TriggeredVehicle | KW$ Haste +SVar:TrigSpeedway:DB$ Pump | Defined$ TriggeredCardLKICopy | KW$ Haste Oracle:Haste\nWhenever Speedway Fanatic crews a Vehicle, that Vehicle gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/t/tiana_angelic_mechanic.txt b/forge-gui/res/cardsfolder/t/tiana_angelic_mechanic.txt index 11baf7bce19..7b940039767 100644 --- a/forge-gui/res/cardsfolder/t/tiana_angelic_mechanic.txt +++ b/forge-gui/res/cardsfolder/t/tiana_angelic_mechanic.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Angel Artificer PT:3/2 K:Flying T:Mode$ Crewed | ValidCrew$ Card.Self,Creature.Legendary+Other+YouCtrl | Execute$ TrigEffect | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME or another legendary creature you control crews a Vehicle, that Vehicle perpetually gets +1/+0. -SVar:TrigEffect:DB$ Pump | Defined$ TriggeredVehicle | NumAtt$ 1 | Duration$ Perpetual +SVar:TrigEffect:DB$ Pump | Defined$ TriggeredCardLKICopy | NumAtt$ 1 | Duration$ Perpetual DeckHints:Type$Legendary DeckNeeds:Type$Vehicle Oracle:Flying\nWhen Tiana, Angelic Mechanic or another legendary creature you control crews a Vehicle, that Vehicle perpetually gets +1/+0. diff --git a/forge-gui/res/cardsfolder/upcoming/canyon_vaulter.txt b/forge-gui/res/cardsfolder/upcoming/canyon_vaulter.txt new file mode 100644 index 00000000000..e03218e56c7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/canyon_vaulter.txt @@ -0,0 +1,8 @@ +Name:Canyon Vaulter +ManaCost:1 W +Types:Creature Kor Pilot +PT:3/1 +T:Mode$ Crewed | ValidCrew$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature saddles a Mount or crews a Vehicle during your main phase, that Mount or Vehicle gains flying until end of turn. +T:Mode$ Saddled | ValidCrew$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever this creature saddles a Mount or crews a Vehicle during your main phase, that Mount or Vehicle gains flying until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ TriggeredCardLKICopy | KW$ Flying +Oracle:Whenever this creature saddles a Mount or crews a Vehicle during your main phase, that Mount or Vehicle gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/v/veteran_motorist.txt b/forge-gui/res/cardsfolder/v/veteran_motorist.txt index 4fafc73612e..d1963dca23a 100644 --- a/forge-gui/res/cardsfolder/v/veteran_motorist.txt +++ b/forge-gui/res/cardsfolder/v/veteran_motorist.txt @@ -5,5 +5,5 @@ PT:3/1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters, scry 2. SVar:TrigScry:DB$ Scry | ScryNum$ 2 T:Mode$ Crewed | ValidCrew$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME crews a Vehicle, that Vehicle gets +1/+1 until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ TriggeredVehicle | NumAtt$ 1 | NumDef$ 1 +SVar:TrigPump:DB$ Pump | Defined$ TriggeredCardLKICopy | NumAtt$ 1 | NumDef$ 1 Oracle:When Veteran Motorist enters, scry 2.\nWhenever Veteran Motorist crews a Vehicle, that Vehicle gets +1/+1 until end of turn.