From 94e860a021225e29595305baf8b84a2497b06cc1 Mon Sep 17 00:00:00 2001 From: Sloth Date: Tue, 7 Feb 2012 10:17:27 +0000 Subject: [PATCH] - Added "Optional" parameter to AF Sacrifice. - Fixed Rathi Dragon. --- res/cardsfolder/r/rathi_dragon.txt | 2 +- .../abilityfactory/AbilityFactorySacrifice.java | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/res/cardsfolder/r/rathi_dragon.txt b/res/cardsfolder/r/rathi_dragon.txt index bd840c8d835..2a1698ee22b 100644 --- a/res/cardsfolder/r/rathi_dragon.txt +++ b/res/cardsfolder/r/rathi_dragon.txt @@ -5,7 +5,7 @@ Text:no text PT:5/5 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacMtn | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you sacrifice two Mountains. -SVar:TrigSacMtn:AB$ Sacrifice | Cost$ 0 | Amount$ 2 | SacValid$ Mountain | RememberSacrificed$ True | SubAbility$ DBSacSelf +SVar:TrigSacMtn:AB$ Sacrifice | Cost$ 0 | Amount$ 2 | SacValid$ Mountain | RememberSacrificed$ True | Optional$ True | SubAbility$ DBSacSelf SVar:DBSacSelf:DB$ Sacrifice | Cost$ 0 | Defined$ Self | SubAbility$ DBCleanup | ConditionCheckSVar$ X | ConditionSVarCompare$ LT2 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java index 0600ddeda97..dc7fa0b13da 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java @@ -484,7 +484,8 @@ public class AbilityFactorySacrifice { if (p.isComputer()) { sacList = AbilityFactorySacrifice.sacrificeAI(p, amount, valid, sa, destroy); } else { - sacList = AbilityFactorySacrifice.sacrificeHuman(p, amount, valid, sa, destroy); + sacList = AbilityFactorySacrifice.sacrificeHuman(p, amount, valid, sa, destroy, + params.containsKey("Optional")); } if (remSacrificed) { for (int i = 0; i < sacList.size(); i++) { @@ -538,7 +539,7 @@ public class AbilityFactorySacrifice { * a {@link java.lang.String} object. */ private static CardList sacrificeHuman(final Player p, final int amount, final String valid, final SpellAbility sa, - final boolean destroy) { + final boolean destroy, final boolean optional) { CardList saccedList = new CardList(); CardList list = p.getCardsIn(Zone.Battlefield); list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -548,7 +549,11 @@ public class AbilityFactorySacrifice { break; } Object o; - o = GuiUtils.getChoice("Select a card to sacrifice", list.toArray()); + if (optional) { + o = GuiUtils.getChoiceOptional("Select a card to sacrifice", list.toArray()); + } else { + o = GuiUtils.getChoice("Select a card to sacrifice", list.toArray()); + } if (o != null) { final Card c = (Card) o; @@ -563,6 +568,8 @@ public class AbilityFactorySacrifice { } list.remove(c); + } else { + return saccedList; } } return saccedList;