diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java index fc6e1b89f8c..ab0db62815d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java @@ -17,6 +17,7 @@ import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; +import forge.util.Lang; import forge.util.Localizer; import forge.util.MyRandom; @@ -40,8 +41,10 @@ public class DigUntilEffect extends SpellAbilityEffect { sb.append(pl).append(" "); } - sb.append("reveals cards from their library until revealing "); - sb.append(untilAmount).append(" ").append(desc).append(" card"); + final ZoneType revealed = ZoneType.smartValueOf(sa.getParam("RevealedDestination")); + sb.append(revealed.equals(ZoneType.Exile) ? "exiles cards from their library until they exile " : + "reveals cards from their library until revealing "); + sb.append(Lang.nounWithNumeralExceptOne(untilAmount, desc + " card")); if (untilAmount != 1) { sb.append("s"); } @@ -49,27 +52,30 @@ public class DigUntilEffect extends SpellAbilityEffect { untilAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("MaxRevealed"), sa); sb.append(" or ").append(untilAmount).append(" card/s"); } - sb.append(". Put "); + sb.append("."); - final ZoneType found = ZoneType.smartValueOf(sa.getParam("FoundDestination")); - final ZoneType revealed = ZoneType.smartValueOf(sa.getParam("RevealedDestination")); - if (found != null) { - sb.append(untilAmount > 1 ? "those cards" : "that card"); - sb.append(" "); + if (!sa.hasParam("NoPutDesc")) { + sb.append(" Put "); - if (found.equals(ZoneType.Hand)) { - sb.append("into their hand "); - } + final ZoneType found = ZoneType.smartValueOf(sa.getParam("FoundDestination")); + if (found != null) { + sb.append(untilAmount > 1 ? "those cards" : "that card"); + sb.append(" "); - if (revealed.equals(ZoneType.Graveyard)) { - sb.append("and all other cards into their graveyard."); - } - if (revealed.equals(ZoneType.Exile)) { - sb.append("and exile all other cards revealed this way."); - } - } else if (revealed != null) { - if (revealed.equals(ZoneType.Hand)) { - sb.append("all cards revealed this way into their hand"); + if (found.equals(ZoneType.Hand)) { + sb.append("into their hand "); + } + + if (revealed.equals(ZoneType.Graveyard)) { + sb.append("and all other cards into their graveyard."); + } + if (revealed.equals(ZoneType.Exile)) { + sb.append("and exile all other cards revealed this way."); + } + } else if (revealed != null) { + if (revealed.equals(ZoneType.Hand)) { + sb.append("all cards revealed this way into their hand"); + } } } return sb.toString(); diff --git a/forge-gui/res/cardsfolder/d/demonlord_belzenlok.txt b/forge-gui/res/cardsfolder/d/demonlord_belzenlok.txt index 95d7885e422..2d10c8125c9 100644 --- a/forge-gui/res/cardsfolder/d/demonlord_belzenlok.txt +++ b/forge-gui/res/cardsfolder/d/demonlord_belzenlok.txt @@ -5,8 +5,8 @@ PT:6/6 K:Flying K:Trample T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When CARDNAME enters the battlefield, exile cards from the top of your library until you exile a nonland card, then put that card into your hand. If the card's mana value is 4 or greater, repeat this process. CARDNAME deals 1 damage to you for each card put into your hand this way. -SVar:TrigRepeat:DB$ Repeat | RepeatSubAbility$ DBCleanup | RepeatDefined$ Remembered | RepeatPresent$ Card.cmcGE4 | RepeatCompare$ EQ1 | StackDescription$ Exile cards from the top of your library until you exile a nonland card, then put that card into your hand. If the card's mana value is 4 or greater, repeat this process. CARDNAME deals 1 damage to you for each card put into your hand this way. +SVar:TrigRepeat:DB$ Repeat | RepeatSubAbility$ DBCleanup | RepeatDefined$ Remembered | RepeatPresent$ Card.cmcGE4 | RepeatCompare$ EQ1 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDigUntil -SVar:DBDigUntil:DB$ DigUntil | ValidPlayer$ You | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Hand | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBDealDamage +SVar:DBDigUntil:DB$ DigUntil | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Hand | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBDealDamage SVar:DBDealDamage:DB$ DealDamage | NumDmg$ 1 | Defined$ You Oracle:Flying, trample\nWhen Demonlord Belzenlok enters the battlefield, exile cards from the top of your library until you exile a nonland card, then put that card into your hand. If the card's mana value is 4 or greater, repeat this process. Demonlord Belzenlok deals 1 damage to you for each card put into your hand this way. diff --git a/forge-gui/res/cardsfolder/e/eldrazi_obligator.txt b/forge-gui/res/cardsfolder/e/eldrazi_obligator.txt index 6e88dea0762..1e7256f30a8 100644 --- a/forge-gui/res/cardsfolder/e/eldrazi_obligator.txt +++ b/forge-gui/res/cardsfolder/e/eldrazi_obligator.txt @@ -4,7 +4,7 @@ Types:Creature Eldrazi PT:3/1 K:Devoid T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When you cast this spell, you may pay {1}{C}. If you do, gain control of target creature until end of turn, untap that creature, and it gains haste until end of turn. ({C} represents colorless mana.) -SVar:TrigChange:AB$GainControl | Cost$ 1 C | TgtPrompt$ Choose target creature. | ValidTgts$ Creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature until end of turn, untap that creature, and it gains haste until end of turn. +SVar:TrigChange:AB$ GainControl | Cost$ 1 C | ValidTgts$ Creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature until end of turn, untap that creature, and it gains haste until end of turn. K:Haste DeckHints:Ability$Mana.Colorless Oracle:Devoid (This card has no color.)\nWhen you cast this spell, you may pay {1}{C}. If you do, gain control of target creature until end of turn, untap that creature, and it gains haste until end of turn. ({C} represents colorless mana.)\nHaste diff --git a/forge-gui/res/cardsfolder/i/illuna_apex_of_wishes.txt b/forge-gui/res/cardsfolder/i/illuna_apex_of_wishes.txt index d38f41bf11d..8006aae5385 100644 --- a/forge-gui/res/cardsfolder/i/illuna_apex_of_wishes.txt +++ b/forge-gui/res/cardsfolder/i/illuna_apex_of_wishes.txt @@ -6,7 +6,7 @@ K:Mutate:3 RG U U K:Flying K:Trample T:Mode$ Mutates | ValidCard$ Card.Self | Execute$ TrigDigUntil | TriggerDescription$ Whenever this creature mutates, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. -SVar:TrigDigUntil:DB$ DigUntil | ValidPlayer$ You | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose SVar:DBChoose:DB$ GenericChoice | Choices$ Battlefield,Hand | Defined$ You SVar:Battlefield:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup | SpellDescription$ Put the nonland permanent onto the battlefield SVar:Hand:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Hand | SubAbility$ DBCleanup | SpellDescription$ Put the nonland permanent into your hand diff --git a/forge-gui/res/cardsfolder/u/undying_flames.txt b/forge-gui/res/cardsfolder/u/undying_flames.txt index 6d2faaba003..4ab12c5d51b 100644 --- a/forge-gui/res/cardsfolder/u/undying_flames.txt +++ b/forge-gui/res/cardsfolder/u/undying_flames.txt @@ -2,7 +2,7 @@ Name:Undying Flames ManaCost:4 R R Types:Sorcery K:Epic -A:SP$ DigUntil | Cost$ 4 R R | Defined$ You | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ UndyingDamage | SpellDescription$ Exile cards from the top of your library until you exile a nonland card. Undying Flames deals damage to any target equal to that card's mana value. +A:SP$ DigUntil | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ UndyingDamage | NoPutDesc$ True | SpellDescription$ Exile cards from the top of your library until you exile a nonland card. Undying Flames deals damage to any target equal to that card's mana value. SVar:UndyingDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ FlameX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:FlameX:Remembered$CardManaCost diff --git a/forge-gui/res/cardsfolder/upcoming/sarevoks_tome.txt b/forge-gui/res/cardsfolder/upcoming/sarevoks_tome.txt new file mode 100644 index 00000000000..1c4d3a2d664 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sarevoks_tome.txt @@ -0,0 +1,12 @@ +Name:Sarevok's Tome +ManaCost:4 +Types:Artifact +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigInitiative | TriggerDescription$ When CARDNAME enters the battlefield, you take the initiative. +SVar:TrigInitiative:DB$ TakeInitiative +A:AB$ Mana | Cost$ T | Produced$ C | Amount$ X | SpellDescription$ Add {C}. If you have the initiative, add {C}{C} instead. +SVar:X:Count$Initiative.2.1 +A:AB$ DigUntil | Cost$ 3 T | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPlay | CheckSVar$ Y | NoPutDesc$ True | SpellDescription$ Exile cards from the top of your library until you exile a nonland card. You may cast that card without paying its mana cost. Activate only if you've completed a dungeon. +SVar:DBPlay:DB$ Play | Defined$ Remembered | DefinedDesc$ that card | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Y:PlayerCountPropertyYou$DungeonsCompleted +Oracle:When Sarevok's Tome enters the battlefield, you take the initiative.\n{T}: Add {C}. If you have the initiative, add {C}{C} instead.\n{3}, {T}: Exile cards from the top of your library until you exile a nonland card. You may cast that card without paying its mana cost. Activate only if you've completed a dungeon.