From 01a6a382854969781fc969ca94e172d4620a64ec Mon Sep 17 00:00:00 2001 From: Renato Filipe Vidal Santos <45150760+dracontes@users.noreply.github.com> Date: Wed, 7 May 2025 06:17:38 +0100 Subject: [PATCH] YTDM: 4 cards (#7473) --- .../game/ability/SpellAbilityEffect.java | 6 +++++ .../upcoming/dragonsoul_prodigy.txt | 9 ++++++++ .../cardsfolder/upcoming/song_of_seasons.txt | 8 +++++++ .../stonehide_ancient_warning_tremor.txt | 22 +++++++++++++++++++ .../upcoming/swiftspears_teachings.txt | 8 +++++++ 5 files changed, 53 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/dragonsoul_prodigy.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/song_of_seasons.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/stonehide_ancient_warning_tremor.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/swiftspears_teachings.txt 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 9cfd9e35e14..9ad783e9419 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -370,6 +370,8 @@ public abstract class SpellAbilityEffect { StringBuilder sb = new StringBuilder(); if (location.equals("Hand")) { sb.append("Return "); + } else if (location.equals("Library")) { + sb.append("Shuffle "); } else if (location.equals("SacrificeCtrl")) { sb.append("Its controller sacrifices "); } else { @@ -378,6 +380,8 @@ public abstract class SpellAbilityEffect { sb.append(Lang.joinHomogenous(crds)); if (location.equals("Hand")) { sb.append(" to your hand"); + } else if (location.equals("Library")) { + sb.append(" into your library"); } sb.append(" at the "); if (combat) { @@ -410,6 +414,8 @@ public abstract class SpellAbilityEffect { String trigSA = ""; if (location.equals("Hand")) { trigSA = "DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Battlefield | Destination$ Hand"; + } else if (location.equals("Library")) { + trigSA = "DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Battlefield | Destination$ Library | Shuffle$ True"; } else if (location.equals("SacrificeCtrl")) { trigSA = "DB$ SacrificeAll | Defined$ DelayTriggerRememberedLKI"; } else if (location.equals("Sacrifice")) { diff --git a/forge-gui/res/cardsfolder/upcoming/dragonsoul_prodigy.txt b/forge-gui/res/cardsfolder/upcoming/dragonsoul_prodigy.txt new file mode 100644 index 00000000000..54569ea2d5b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dragonsoul_prodigy.txt @@ -0,0 +1,9 @@ +Name:Dragonsoul Prodigy +ManaCost:2 R +Types:Creature Human Monk +PT:2/2 +T:Mode$ SpellCast | ValidCard$ Omen | ValidActivatingPlayer$ You | ActivatorThisTurnCast$ EQ1 | Execute$ TrigConjure | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast your first Omen spell each turn, conjure a duplicate of that card onto the battlefield. It gains haste. At the beginning of the next end step, shuffle it into its owner's library. +SVar:TrigConjure:DB$ MakeCard | Conjure$ True | DefinedName$ TriggeredCard | Zone$ Battlefield | RememberMade$ True | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | AtEOT$ Library | Duration$ Permanent | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Whenever you cast your first Omen spell each turn, conjure a duplicate of that card onto the battlefield. It gains haste. At the beginning of the next end step, shuffle it into its owner's library. diff --git a/forge-gui/res/cardsfolder/upcoming/song_of_seasons.txt b/forge-gui/res/cardsfolder/upcoming/song_of_seasons.txt new file mode 100644 index 00000000000..f72547c4548 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/song_of_seasons.txt @@ -0,0 +1,8 @@ +Name:Song of Seasons +ManaCost:1 R G +Types:Sorcery +A:SP$ Seek | Types$ Mountain,Forest,Land.nonMountain+nonForest | RememberFound$ True | SubAbility$ DBChangeZone1 +SVar:DBChangeZone1:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Land.IsRemembered | ChangeNum$ 1 | Mandatory$ True | SelectPrompt$ Select a card to put onto the battlefield | SubAbility$ DBChangeZone2 | StackDescription$ None +SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Hand | Destination$ Graveyard | ChangeType$ Land.IsRemembered | ChangeNum$ 1 | Mandatory$ True | SelectPrompt$ Select a card to put onto the graveyard | StackDescription$ None | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Seek a Mountain card, a Forest card, and a non-Mountain, non-Forest land card. Put one of them onto the battlefield and put one of them into your graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/stonehide_ancient_warning_tremor.txt b/forge-gui/res/cardsfolder/upcoming/stonehide_ancient_warning_tremor.txt new file mode 100644 index 00000000000..e9f7c39b3e4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/stonehide_ancient_warning_tremor.txt @@ -0,0 +1,22 @@ +Name:Stonehide Ancient +ManaCost:3 G U R +Types:Creature Dragon +PT:6/6 +K:Flying +K:Vigilance +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When this creature enters, return all non-Dragon creatures to their owners' hands. +SVar:TrigChange:DB$ ChangeZoneAll | ChangeType$ Creature.nonDragon | Origin$ Battlefield | Destination$ Hand +AlternateMode:Omen +Oracle:Flying, vigilance\nWhen this creature enters, return all non-Dragon creatures to their owners' hands. + +ALTERNATE + +Name:Warning Tremor +ManaCost:2 R +Types:Sorcery Omen +A:SP$ DealDamage | ValidTgts$ Any | NumDmg$ 2 | SubAbility$ DBEffect | SpellDescription$ CARDNAME deals 2 damage to any target. +SVar:DBEffect:DB$ Effect | StaticAbilities$ ReduceCost | Triggers$ TrigCastSpell | Duration$ Permanent | SpellDescription$ The next Dragon spell you cast costs {2} less to cast. +SVar:ReduceCost:Mode$ ReduceCost | Type$ Spell | Activator$ You | ValidCard$ Dragon | Amount$ 2 | Description$ The next Dragon spell you cast costs {2} less to cast. +SVar:TrigCastSpell:Mode$ SpellCast | ValidCard$ Dragon | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ RemoveEffect | Static$ True +SVar:RemoveEffect:DB$ ChangeZone | Origin$ Command | Destination$ Exile +Oracle:Warning Tremor deals 2 damage to any target.\nThe next Dragon spell you cast costs {2} less to cast. diff --git a/forge-gui/res/cardsfolder/upcoming/swiftspears_teachings.txt b/forge-gui/res/cardsfolder/upcoming/swiftspears_teachings.txt new file mode 100644 index 00000000000..3080fc09be9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/swiftspears_teachings.txt @@ -0,0 +1,8 @@ +Name:Swiftspear's Teachings +ManaCost:R +Types:Sorcery +A:SP$ Effect | Boon$ True | Duration$ Permanent | Triggers$ SpellCast | SubAbility$ DBDraw | SpellDescription$ You get a one-time boon with "When you cast a creature spell, it gains prowess and haste." +SVar:SpellCast:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ TrigEffect | TriggerDescription$ When you cast a creature spell, it gains prowess and haste. +SVar:TrigEffect:DB$ Pump | PumpZone$ Stack | Defined$ TriggeredCard | KW$ Haste & Prowess | Duration$ Permanent +SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. +Oracle:You get a one-time boon with "When you cast a creature spell, it gains prowess and haste."\nDraw a card.