Fix Conflagrate (#5348)

This commit is contained in:
tool4ever
2024-06-01 14:05:55 +02:00
committed by GitHub
parent 5c54b83f6d
commit 6a672eedb5
6 changed files with 8 additions and 9 deletions

View File

@@ -46,7 +46,7 @@ public abstract class ManifestBaseEffect extends SpellAbilityEffect {
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : getDefaultMessage() + " "; String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : getDefaultMessage() + " ";
tgtCards = new CardCollection(activator.getController().chooseCardsForEffect(choices, sa, title, amount, amount, false, null)); tgtCards = new CardCollection(p.getController().chooseCardsForEffect(choices, sa, title, amount, amount, false, null));
} else if ("TopOfLibrary".equals(sa.getParamOrDefault("Defined", "TopOfLibrary"))) { } else if ("TopOfLibrary".equals(sa.getParamOrDefault("Defined", "TopOfLibrary"))) {
tgtCards = p.getTopXCardsFromLibrary(amount); tgtCards = p.getTopXCardsFromLibrary(amount);
fromLibrary = true; fromLibrary = true;

View File

@@ -739,8 +739,7 @@ public class CardFactoryUtil {
" | ValidBlocker$ Creature | Secondary$ True " + " | ValidBlocker$ Creature | Secondary$ True " +
" | TriggerDescription$ Afflict " + n + " (" + inst.getReminderText() + ")"; " | TriggerDescription$ Afflict " + n + " (" + inst.getReminderText() + ")";
final String abStringAfflict = "DB$ LoseLife | Defined$ TriggeredDefendingPlayer" + final String abStringAfflict = "DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ " + n;
" | LifeAmount$ " + n;
final Trigger afflictTrigger = TriggerHandler.parseTrigger(trigStr, card, intrinsic, null); final Trigger afflictTrigger = TriggerHandler.parseTrigger(trigStr, card, intrinsic, null);
afflictTrigger.setOverridingAbility(AbilityFactory.getAbility(abStringAfflict, card)); afflictTrigger.setOverridingAbility(AbilityFactory.getAbility(abStringAfflict, card));
@@ -754,7 +753,7 @@ public class CardFactoryUtil {
sb.append("Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self "); sb.append("Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self ");
sb.append("| Secondary$ True | TriggerDescription$ ").append(name); sb.append("| Secondary$ True | TriggerDescription$ ").append(name);
sb.append(" (").append(inst.getReminderText()).append(")"); sb.append(" (").append(inst.getReminderText()).append(")");
final String effect = "DB$ Token | TokenAmount$ " + k[1] + " | TokenScript$ wb_1_1_spirit_flying"; final String effect = "DB$ Token | TokenAmount$ " + k[1] + " | TokenScript$ wb_1_1_spirit_flying";
final Trigger trigger = TriggerHandler.parseTrigger(sb.toString(), card, intrinsic); final Trigger trigger = TriggerHandler.parseTrigger(sb.toString(), card, intrinsic);

View File

@@ -1,7 +1,8 @@
Name:Aether Tide Name:Aether Tide
ManaCost:X U ManaCost:X U
Types:Sorcery Types:Sorcery
A:SP$ ChangeZone | Cost$ X U Discard<X/Creature/creature(s)> | CostDesc$ As an additional cost to cast this spell, discard X creature cards. | TargetMin$ X | TargetMax$ X | Origin$ Battlefield | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select X target creatures | SpellDescription$ Return X target creatures to their owners' hands. S:Mode$ RaiseCost | ValidCard$ Card.Self | Activator$ You | Type$ Spell | Cost$ Discard<X/Creature/creature(s)> | EffectZone$ All | Description$ As an additional cost to cast this spell, discard X creature cards.
A:SP$ ChangeZone | Cost$ X U | TargetMin$ X | TargetMax$ X | Origin$ Battlefield | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select X target creatures | SpellDescription$ Return X target creatures to their owners' hands.
SVar:X:Count$xPaid SVar:X:Count$xPaid
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:As an additional cost to cast this spell, discard X creature cards.\nReturn X target creatures to their owners' hands. Oracle:As an additional cost to cast this spell, discard X creature cards.\nReturn X target creatures to their owners' hands.

View File

@@ -2,7 +2,7 @@ Name:The Toymaker's Trap
ManaCost:2 B ManaCost:2 B
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChooseNumber | TriggerDescription$ At the beginning of your upkeep, secretly choose a number between 1 and 5 that hasn't been chosen. If you do, an opponent guesses which number you chose, then you reveal the number you chose. If they guessed wrong, they lose life equal to the number they guessed and you draw a card. If they guessed right, sacrifice CARDNAME. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChooseNumber | TriggerDescription$ At the beginning of your upkeep, secretly choose a number between 1 and 5 that hasn't been chosen. If you do, an opponent guesses which number you chose, then you reveal the number you chose. If they guessed wrong, they lose life equal to the number they guessed and you draw a card. If they guessed right, sacrifice CARDNAME.
SVar:TrigChooseNumber:DB$ ChooseNumber | Secretly$ True | Min$ 1 | Max$ 5 | RemoveChoices$ Remembered | Guesser$ Opponent | GuessWrong$ DBLoseLife | GuessCorrect$ DBSac | RememberChosen$ True | SubAbility$ DBCleanup SVar:TrigChooseNumber:DB$ ChooseNumber | Secretly$ True | Min$ 1 | Max$ 5 | RemoveChoices$ Remembered | Guesser$ Opponent | GuessWrong$ DBLoseLife | GuessCorrect$ DBSac | RememberChosen$ True
SVar:DBLoseLife:DB$ LoseLife | Defined$ RememberedPlayer | LifeAmount$ Count$ChosenNumber | SubAbility$ DBDraw SVar:DBLoseLife:DB$ LoseLife | Defined$ RememberedPlayer | LifeAmount$ Count$ChosenNumber | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw SVar:DBDraw:DB$ Draw
SVar:DBSac:DB$ Sacrifice SVar:DBSac:DB$ Sacrifice

View File

@@ -6,5 +6,5 @@ K:Flying
K:First Strike K:First Strike
T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters the battlefield, destroy up to one target nonbasic land. Its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle. T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters the battlefield, destroy up to one target nonbasic land. Its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Land.nonBasic | TgtPrompt$ Select up to one target nonbasic land | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBSearch | AILogic$ GhostQuarter SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Land.nonBasic | TgtPrompt$ Select up to one target nonbasic land | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBSearch | AILogic$ GhostQuarter
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | DefinedPlayer$ TargetedController | ChangeType$ Land.Basic | ChangeNum$ 1 SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | DefinedPlayer$ TargetedController | ChangeType$ Land.Basic | ChangeNum$ 1 | Tapped$ True
Oracle:Flying, first strike\nWhen White Orchid Phantom enters the battlefield, destroy up to one target nonbasic land. Its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle. Oracle:Flying, first strike\nWhen White Orchid Phantom enters the battlefield, destroy up to one target nonbasic land. Its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.

View File

@@ -262,8 +262,7 @@ public class HumanPlaySpellAbility {
if (cost.hasXInAnyCostPart()) { if (cost.hasXInAnyCostPart()) {
final String sVar = ability.getSVar("X"); //only prompt for new X value if card doesn't determine it another way final String sVar = ability.getSVar("X"); //only prompt for new X value if card doesn't determine it another way
// check if X != 0 is even allowed or the X shard got removed // check if X != 0 is even allowed or the X shard got removed
boolean replacedXshard = ability.isSpell() && ability.getHostCard().getManaCost().countX() > 0 && boolean replacedXshard = ability.isSpell() && ability.getHostCard().getManaCost().countX() > 0 && !cost.hasXInAnyCostPart();
(cost.hasNoManaCost() || cost.getCostMana().getAmountOfX() == 0);
if (("Count$xPaid".equals(sVar) && !replacedXshard) || sVar.isEmpty()) { if (("Count$xPaid".equals(sVar) && !replacedXshard) || sVar.isEmpty()) {
final Integer value = controller.announceRequirements(ability, "X"); final Integer value = controller.announceRequirements(ability, "X");
if (value == null) { if (value == null) {