diff --git a/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java index a13c4ca15e1..ce7bd9bb882 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java @@ -91,9 +91,17 @@ public class SacrificeEffect extends SpellAbilityEffect { } else { boolean isOptional = sa.hasParam("Optional"); - choosenToSacrifice = destroy ? - p.getController().choosePermanentsToDestroy(sa, isOptional ? 0 : amount, amount, validTargets, msg) : - p.getController().choosePermanentsToSacrifice(sa, isOptional ? 0 : amount, amount, validTargets, msg); + boolean isStrict = sa.hasParam("StrictAmount"); + int minTargets = isOptional ? 0 : amount; + boolean notEnoughTargets = isStrict && validTargets.size() < minTargets; + + if (!notEnoughTargets) { + choosenToSacrifice = destroy ? + p.getController().choosePermanentsToDestroy(sa, minTargets, amount, validTargets, msg) : + p.getController().choosePermanentsToSacrifice(sa, minTargets, amount, validTargets, msg); + } else { + choosenToSacrifice = CardCollection.EMPTY; + } } for (Card sac : choosenToSacrifice) { diff --git a/forge-gui/res/cardsfolder/l/lotus_vale.txt b/forge-gui/res/cardsfolder/l/lotus_vale.txt index af8d54556e9..9d65865ecc1 100644 --- a/forge-gui/res/cardsfolder/l/lotus_vale.txt +++ b/forge-gui/res/cardsfolder/l/lotus_vale.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 3 | SpellDescription$ Add three mana of any one color to your mana pool. R:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ PayBeforeETB | Description$ If CARDNAME would enter the battlefield, sacrifice two untapped lands instead. If you do, put CARDNAME onto the battlefield. If you don't, put it into its owner's graveyard. -SVar:PayBeforeETB:AB$ Sacrifice | Cost$ 0 | SacValid$ Land.untapped | Defined$ You | RememberSacrificed$ True | Amount$ 2 | SubAbility$ MoveToGraveyard +SVar:PayBeforeETB:AB$ Sacrifice | Cost$ 0 | SacValid$ Land.untapped | Defined$ You | RememberSacrificed$ True | Amount$ 2 | StrictAmount$ True | SubAbility$ MoveToGraveyard SVar:MoveToGraveyard:DB$ ChangeZone | Origin$ All | Destination$ Graveyard | Defined$ ReplacedCard | ConditionCheckSVar$ X | ConditionSVarCompare$ LT2 | SubAbility$ MoveToBattlefield SVar:MoveToBattlefield:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/s/scorched_ruins.txt b/forge-gui/res/cardsfolder/s/scorched_ruins.txt index 91144c421d2..fcc58392bc9 100644 --- a/forge-gui/res/cardsfolder/s/scorched_ruins.txt +++ b/forge-gui/res/cardsfolder/s/scorched_ruins.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ 1 | Amount$ 4 | SpellDescription$ Add {4} to your mana pool. R:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ PayBeforeETB | Description$ If CARDNAME would enter the battlefield, sacrifice two untapped lands instead. If you do, put CARDNAME onto the battlefield. If you don't, put it into its owner's graveyard. -SVar:PayBeforeETB:AB$ Sacrifice | Cost$ 0 | SacValid$ Land.untapped | Defined$ You | RememberSacrificed$ True | Amount$ 2 | SubAbility$ MoveToGraveyard +SVar:PayBeforeETB:AB$ Sacrifice | Cost$ 0 | SacValid$ Land.untapped | Defined$ You | RememberSacrificed$ True | Amount$ 2 | StrictAmount$ True | SubAbility$ MoveToGraveyard SVar:MoveToGraveyard:DB$ ChangeZone | Origin$ All | Destination$ Graveyard | Defined$ ReplacedCard | ConditionCheckSVar$ X | ConditionSVarCompare$ LT2 | SubAbility$ MoveToBattlefield SVar:MoveToBattlefield:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True