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 bd57dd5fd48..c28b74aa7fa 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1665,6 +1665,10 @@ public class AbilityUtils { return doXMath(calculateAmount(c, sq[sa.isBargained() ? 1 : 2], ctb), expr, c, ctb); } + if (sq[0].startsWith("Freerunning")) { + return doXMath(calculateAmount(c, sq[sa.isFreerunning() ? 1 : 2], ctb), expr, c, ctb); + } + // Count$Madness.. if (sq[0].startsWith("Madness")) { return doXMath(calculateAmount(c, sq[sa.isMadness() ? 1 : 2], ctb), expr, c, ctb); 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 245bd64ea4b..0532f57d10f 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -3127,7 +3127,14 @@ public class CardFactoryUtil { newSA.putParam("Secondary", "True"); } newSA.putParam("PrecostDesc", "Freerunning"); - newSA.putParam("CostDesc", ManaCostParser.parse(k[1])); + StringBuilder costDesc = new StringBuilder(); + if (!freerunningCost.isOnlyManaCost()) { + costDesc.append("—"); + } else { + costDesc.append(" "); + } + costDesc.append(freerunningCost.toSimpleString()); + newSA.putParam("CostDesc", costDesc.toString()); // makes new SpellDescription final StringBuilder sb = new StringBuilder(); diff --git a/forge-gui/res/cardsfolder/upcoming/escape_detection.txt b/forge-gui/res/cardsfolder/upcoming/escape_detection.txt new file mode 100644 index 00000000000..c5779b676cf --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/escape_detection.txt @@ -0,0 +1,7 @@ +Name:Escape Detection +ManaCost:1 U U +Types:Instant +K:Freerunning:Return<1/Creature.Blue/blue creature> +A:SP$ ChangeZone | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBDraw | SpellDescription$ Return target creature to its owner's hand. Draw a card. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Freerunning—Return a blue creature you control to its owner’s hand. (You may cast this spell for its freerunning cost if you dealt combat damage to a player this turn with an Assassin or commander.)\nReturn target creature to its owner's hand.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/monastery_raid.txt b/forge-gui/res/cardsfolder/upcoming/monastery_raid.txt new file mode 100644 index 00000000000..68f0efd542a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/monastery_raid.txt @@ -0,0 +1,11 @@ +Name:Monastery Raid +ManaCost:2 R +Types:Sorcery +K:Freerunning:X R +A:SP$ Dig | Defined$ You | DigNum$ Y | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBMayPlay | SpellDescription$ Exile the top two cards of your library. If this spell’s freerunning cost was paid, exile the top X cards of your library instead. You may play the exiled cards until the end of your next turn. +SVar:DBMayPlay:DB$ Effect | StaticAbilities$ STCommuned | Duration$ UntilTheEndOfYourNextTurn | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:STCommuned:Mode$ Continuous | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Exile | MayPlay$ True | Description$ You may play the exiled cards until the end of your next turn. +SVar:Y:Count$Freerunning.X.2 +SVar:X:Count$xPaid +Oracle:Freerunning {X}{R} (You may cast this spell for its freerunning cost if you dealt combat damage to a player this turn with an Assassin or commander.)\nExile the top two cards of your library. If this spell’s freerunning cost was paid, exile the top X cards of your library instead. You may play the exiled cards until the end of your next turn.