From 7248f35b3ab3bdcf16dda7f080929ea75a0533ae Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 23 Nov 2022 12:34:08 -0500 Subject: [PATCH 1/2] kenessos_priest_of_thassa.txt --- .../upcoming/kenessos_priest_of_thassa.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/kenessos_priest_of_thassa.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kenessos_priest_of_thassa.txt b/forge-gui/res/cardsfolder/upcoming/kenessos_priest_of_thassa.txt new file mode 100644 index 00000000000..389e13d5a33 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kenessos_priest_of_thassa.txt @@ -0,0 +1,13 @@ +Name:Kenessos, Priest of Thassa +ManaCost:1 U +Types:Legendary Creature Merfolk Cleric +PT:1/3 +R:Event$ Scry | ActiveZones$ Battlefield | ValidPlayer$ You | ReplaceWith$ ScryP1 | Description$ If you would scry a number of cards, scry that many cards plus one instead. +SVar:ScryP1:DB$ ReplaceEffect | VarName$ Num | VarValue$ X +SVar:X:ReplaceCount$Num/Plus.1 +A:AB$ Dig | Cost$ 3 GU | DigNum$ 1 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.Kraken,Creature.Leviathan,Creature.Octopus,Creature.Serpent | ForceRevealToController$ True | AILogic$ AlwaysConfirm | DestinationZone$ Battlefield | LibraryPosition2$ 0 | RememberMovedToZone$ 2 | SubAbility$ DBBottom | StackDescription$ {p:You} looks at the top card of their library. If it's a Kraken, Leviathan, Octopus, or Serpent creature card, they may put it onto the battlefield. | SpellDescription$ Look at the top card of your library. If it's a Kraken, Leviathan, Octopus, or Serpent creature card, you may put it onto the battlefield. +SVar:DBBottom:DB$ ChangeZone | ConditionDefined$ Remembered | ConditionPresent$ Card | Defined$ Remembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | Optional$ True | OptionalPrompt$ Put that card on the bottom of your library? | SubAbility$ DBCleanup | StackDescription$ If they don't put the card onto the battlefield, they may put it on the bottom of their library. | SpellDescription$ If you don't put the card onto the battlefield, you may put it on the bottom of your library. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AI:RemoveDeck:Random +DeckHints:Type$Kraken|Leviathan|Octopus|Serpent +Oracle:If you would scry a number of cards, scry that many cards plus one instead.\n{3}{G/U}: Look at the top card of your library. If it's a Kraken, Leviathan, Octopus, or Serpent creature card, you may put it onto the battlefield. If you don't put the card onto the battlefield, you may put it on the bottom of your library. From 865c8856642c4ebd0ab9cdafffeacd6955409a70 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 23 Nov 2022 12:34:28 -0500 Subject: [PATCH 2/2] ChangeZoneEffect.changeZonePlayerInvariant support "OptionalPrompt" --- .../game/ability/effects/ChangeZoneEffect.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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 30b7ee9cef5..040e11893ae 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 @@ -973,13 +973,16 @@ public class ChangeZoneEffect extends SpellAbilityEffect { int changeNum = sa.hasParam("ChangeNum") ? AbilityUtils.calculateAmount(source, sa.getParam("ChangeNum"), sa) : 1; - final boolean optional = sa.hasParam("Optional"); - if (optional) { + if (sa.hasParam("Optional")) { String prompt; - if (defined) { - prompt = Localizer.getInstance().getMessage("lblPutThatCardFromPlayerOriginToDestination", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase(), destination.getTranslatedName().toLowerCase()); + if (sa.hasParam("OptionalPrompt")) { + prompt = sa.getParam("OptionalPrompt"); } else { - prompt = Localizer.getInstance().getMessage("lblSearchPlayerZoneConfirm", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase()); + if (defined) { + prompt = Localizer.getInstance().getMessage("lblPutThatCardFromPlayerOriginToDestination", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase(), destination.getTranslatedName().toLowerCase()); + } else { + prompt = Localizer.getInstance().getMessage("lblSearchPlayerZoneConfirm", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase()); + } } String message = MessageUtil.formatMessage(prompt , decider, player); if (!decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneGeneral, message, null)) {