Merge branch 'Card-Forge:master' into farm

This commit is contained in:
Simisays
2023-03-03 13:36:24 +01:00
committed by GitHub
28 changed files with 35 additions and 50 deletions

View File

@@ -3230,7 +3230,6 @@ public class AbilityUtils {
return num; return num;
} }
return secondaryNum; return secondaryNum;
} else { } else {
return num; return num;
} }
@@ -3389,15 +3388,15 @@ public class AbilityUtils {
String[] lparts = l[0].split(" ", 2); String[] lparts = l[0].split(" ", 2);
final List<ZoneType> vZone = ZoneType.listValueOf(lparts[0].split("Valid")[1]); final List<ZoneType> vZone = ZoneType.listValueOf(lparts[0].split("Valid")[1]);
String restrictions = TextUtil.fastReplace(l[0], TextUtil.addSuffix(lparts[0]," "), ""); String restrictions = TextUtil.fastReplace(l[0], TextUtil.addSuffix(lparts[0]," "), "");
CardCollection cards = CardLists.getValidCards(game.getCardsIn(vZone), restrictions, player, source, ctb); int num = CardLists.getValidCardCount(game.getCardsIn(vZone), restrictions, player, source, ctb);
return doXMath(cards.size(), m, source, ctb); return doXMath(num, m, source, ctb);
} }
// count valid cards on the battlefield // count valid cards on the battlefield
if (l[0].startsWith("Valid ")) { if (l[0].startsWith("Valid ")) {
final String restrictions = l[0].substring(6); final String restrictions = l[0].substring(6);
CardCollection cardsonbattlefield = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), restrictions, player, source, ctb); int num = CardLists.getValidCardCount(game.getCardsIn(ZoneType.Battlefield), restrictions, player, source, ctb);
return doXMath(cardsonbattlefield.size(), m, source, ctb); return doXMath(num, m, source, ctb);
} }
if (l[0].startsWith("ThisTurnEntered")) { if (l[0].startsWith("ThisTurnEntered")) {
@@ -3606,21 +3605,10 @@ public class AbilityUtils {
*/ */
public static int handlePaid(final Iterable<Card> paidList, final String string, final Card source, CardTraitBase ctb) { public static int handlePaid(final Iterable<Card> paidList, final String string, final Card source, CardTraitBase ctb) {
if (Iterables.isEmpty(paidList)) { if (Iterables.isEmpty(paidList)) {
if (string.contains(".")) { return doXMath(0, CardFactoryUtil.extractOperators(string), source, ctb);
final String[] splitString = string.split("\\.", 2);
return doXMath(0, splitString[1], source, ctb);
} else {
return 0;
}
} }
if (string.startsWith("Amount")) { if (string.startsWith("Amount")) {
int size = Iterables.size(paidList); return doXMath(Iterables.size(paidList), CardFactoryUtil.extractOperators(string), source, ctb);
if (string.contains(".")) {
final String[] splitString = string.split("\\.", 2);
return doXMath(size, splitString[1], source, ctb);
} else {
return size;
}
} }
if (string.startsWith("GreatestPower")) { if (string.startsWith("GreatestPower")) {
@@ -3653,8 +3641,8 @@ public class AbilityUtils {
if (string.startsWith("Valid")) { if (string.startsWith("Valid")) {
final String[] splitString = string.split("/", 2); final String[] splitString = string.split("/", 2);
String valid = splitString[0].substring(6); String valid = splitString[0].substring(6);
final List<Card> list = CardLists.getValidCardsAsList(paidList, valid, source.getController(), source, ctb); final int num = CardLists.getValidCardCount(paidList, valid, source.getController(), source, ctb);
return doXMath(list.size(), splitString.length > 1 ? splitString[1] : null, source, ctb); return doXMath(num, splitString.length > 1 ? splitString[1] : null, source, ctb);
} }
String filteredString = string; String filteredString = string;

View File

@@ -167,7 +167,7 @@ public class MakeCardEffect extends SpellAbilityEffect {
game.getTriggerHandler().runTrigger(TriggerType.ConjureAll, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.ConjureAll, runParams, false);
} }
if (zone.equals(ZoneType.Library)) { if (zone.equals(ZoneType.Library) && !sa.hasParam("LibraryPosition")) {
player.shuffle(sa); player.shuffle(sa);
} }
} }

View File

@@ -161,7 +161,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
if (sa.hasParam("ChooseOrder") && !sa.getParam("ChooseOrder").equals("True")) { if (sa.hasParam("ChooseOrder") && !sa.getParam("ChooseOrder").equals("True")) {
chooser = AbilityUtils.getDefinedPlayers(source, sa.getParam("ChooseOrder"), sa).get(0); chooser = AbilityUtils.getDefinedPlayers(source, sa.getParam("ChooseOrder"), sa).get(0);
} }
while (validTypes.size() > 0) { while (!validTypes.isEmpty()) {
String chosenT = chooser.getController().chooseSomeType("card", sa, validTypes, null); String chosenT = chooser.getController().chooseSomeType("card", sa, validTypes, null);
source.setChosenType(chosenT); source.setChosenType(chosenT);
AbilityUtils.resolve(repeat); AbilityUtils.resolve(repeat);

View File

@@ -4,6 +4,6 @@ Types:Instant Arcane
A:SP$ ChangeZone | Cost$ 2 R | Origin$ Battlefield | Destination$ Hand | ChangeType$ Mountain.YouCtrl | ChangeNum$ X | Hidden$ True | RememberChanged$ True | SubAbility$ DBDamage | SpellDescription$ Sweep — Return any number of Mountains you control to their owner's hand. CARDNAME deals damage to target creature equal to twice the number of Mountains returned this way. A:SP$ ChangeZone | Cost$ 2 R | Origin$ Battlefield | Destination$ Hand | ChangeType$ Mountain.YouCtrl | ChangeNum$ X | Hidden$ True | RememberChanged$ True | SubAbility$ DBDamage | SpellDescription$ Sweep — Return any number of Mountains you control to their owner's hand. CARDNAME deals damage to target creature equal to twice the number of Mountains returned this way.
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ Y SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ Y
SVar:X:Count$Valid Mountain.YouCtrl SVar:X:Count$Valid Mountain.YouCtrl
SVar:Y:Remembered$Amount.Twice SVar:Y:Remembered$Amount/Twice
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Sweep — Return any number of Mountains you control to their owner's hand. Barrel Down Sokenzan deals damage to target creature equal to twice the number of Mountains returned this way. Oracle:Sweep — Return any number of Mountains you control to their owner's hand. Barrel Down Sokenzan deals damage to target creature equal to twice the number of Mountains returned this way.

View File

@@ -5,7 +5,7 @@ Loyalty:4
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 2 | TokenScript$ r_3_1_elemental_haste | AtEOT$ Exile | SpellDescription$ Create two 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step. A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 2 | TokenScript$ r_3_1_elemental_haste | AtEOT$ Exile | SpellDescription$ Create two 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step.
A:AB$ Discard | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | Defined$ You | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ Discard all the cards in your hand, then draw that many cards plus one. A:AB$ Discard | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | Defined$ You | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ Discard all the cards in your hand, then draw that many cards plus one.
SVar:DBDraw:DB$ Draw | NumCards$ Y | Defined$ You | SubAbility$ DBCleanup SVar:DBDraw:DB$ Draw | NumCards$ Y | Defined$ You | SubAbility$ DBCleanup
SVar:Y:Remembered$Amount.Plus.1 SVar:Y:Remembered$Amount/Plus.1
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ DamageAll | Cost$ SubCounter<X/LOYALTY> | NumDmg$ X | ValidCards$ Creature | Planeswalker$ True | Ultimate$ True | ValidDescription$ each creature. | SpellDescription$ CARDNAME deals X damage to each creature. A:AB$ DamageAll | Cost$ SubCounter<X/LOYALTY> | NumDmg$ X | ValidCards$ Creature | Planeswalker$ True | Ultimate$ True | ValidDescription$ each creature. | SpellDescription$ CARDNAME deals X damage to each creature.
SVar:X:Count$xPaid SVar:X:Count$xPaid

View File

@@ -3,6 +3,6 @@ ManaCost:2 B
Types:Enchantment Types:Enchantment
A:AB$ Token | XCantBe0$ True | Cost$ 1 B ExileFromGrave<X/Creature> | TokenAmount$ 1 | TokenScript$ b_x_x_zombie_horror | TokenOwner$ You | TokenPower$ Y | TokenToughness$ Y | TokenTapped$ True | SpellDescription$ Create a tapped X/X black Zombie Horror creature token, where X is twice the number of cards exiled this way. A:AB$ Token | XCantBe0$ True | Cost$ 1 B ExileFromGrave<X/Creature> | TokenAmount$ 1 | TokenScript$ b_x_x_zombie_horror | TokenOwner$ You | TokenPower$ Y | TokenToughness$ Y | TokenTapped$ True | SpellDescription$ Create a tapped X/X black Zombie Horror creature token, where X is twice the number of cards exiled this way.
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:Y:ExiledCards$Amount.Twice SVar:Y:ExiledCards$Amount/Twice
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{1}{B}, Exile one or more creature cards from your graveyard: Create a tapped X/X black Zombie Horror creature token, where X is twice the number of cards exiled this way. Oracle:{1}{B}, Exile one or more creature cards from your graveyard: Create a tapped X/X black Zombie Horror creature token, where X is twice the number of cards exiled this way.

View File

@@ -5,7 +5,7 @@ A:SP$ RepeatEach | Cost$ 2 B | RepeatPlayers$ Player | RepeatSubAbility$ DBDisca
SVar:DBDiscard:DB$ Discard | Defined$ Player.IsRemembered | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw SVar:DBDiscard:DB$ Discard | Defined$ Player.IsRemembered | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanDrawn SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanDrawn
SVar:CleanDrawn:DB$ Cleanup | ClearRemembered$ True SVar:CleanDrawn:DB$ Cleanup | ClearRemembered$ True
# This calculation isn't considering the remembered player, only the remembered cards? # This calculation isn't considering the remembered player, only the remembered cards
SVar:X:Remembered$Amount.Minus.1 SVar:X:Remembered$Amount.Minus.1
AI:RemoveDeck:All AI:RemoveDeck:All
AI:RemoveDeck:Random AI:RemoveDeck:Random

View File

@@ -3,7 +3,7 @@ ManaCost:4 R
Types:Instant Arcane Types:Instant Arcane
A:SP$ Pump | Cost$ 4 R Sac<X/Spirit> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ Z | SpellDescription$ Target creature gets +3/+0 until end of turn. For each Spirit sacrificed this way, that creature gets an additional +3/+0 until end of turn. A:SP$ Pump | Cost$ 4 R Sac<X/Spirit> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ Z | SpellDescription$ Target creature gets +3/+0 until end of turn. For each Spirit sacrificed this way, that creature gets an additional +3/+0 until end of turn.
SVar:Z:SVar$Y/Thrice SVar:Z:SVar$Y/Thrice
SVar:Y:Sacrificed$Amount.Plus.1 SVar:Y:Sacrificed$Amount/Plus.1
SVar:X:Count$xPaid SVar:X:Count$xPaid
AI:RemoveDeck:Random AI:RemoveDeck:Random
AI:RemoveDeck:All AI:RemoveDeck:All

View File

@@ -6,7 +6,7 @@ SVar:DBFluxDiscard:DB$ Discard | Defined$ Player.IsRemembered | AnyNumber$ True
SVar:DBFluxDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanTheFlux SVar:DBFluxDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanTheFlux
SVar:CleanTheFlux:DB$ Cleanup | ClearRemembered$ True SVar:CleanTheFlux:DB$ Cleanup | ClearRemembered$ True
SVar:DBDraw:DB$ Draw | NumCards$ 1 SVar:DBDraw:DB$ Draw | NumCards$ 1
SVar:X:Remembered$Amount/Minus.1 SVar:X:Remembered$Amount
AI:RemoveDeck:All AI:RemoveDeck:All
AI:RemoveDeck:Random AI:RemoveDeck:Random
Oracle:Each player discards any number of cards, then draws that many cards.\nDraw a card. Oracle:Each player discards any number of cards, then draws that many cards.\nDraw a card.

View File

@@ -3,5 +3,5 @@ ManaCost:2 GW GW GW
Types:Instant Types:Instant
A:SP$ DestroyAll | Cost$ 2 GW GW GW | ValidCards$ Artifact,Enchantment | RememberDestroyed$ True | SubAbility$ DBGainLife | SpellDescription$ Destroy all artifacts and enchantments. You gain 2 life for each permanent destroyed this way. A:SP$ DestroyAll | Cost$ 2 GW GW GW | ValidCards$ Artifact,Enchantment | RememberDestroyed$ True | SubAbility$ DBGainLife | SpellDescription$ Destroy all artifacts and enchantments. You gain 2 life for each permanent destroyed this way.
SVar:DBGainLife:DB$ GainLife | LifeAmount$ X SVar:DBGainLife:DB$ GainLife | LifeAmount$ X
SVar:X:Remembered$Amount.Twice SVar:X:Remembered$Amount/Twice
Oracle:Destroy all artifacts and enchantments. You gain 2 life for each permanent destroyed this way. Oracle:Destroy all artifacts and enchantments. You gain 2 life for each permanent destroyed this way.

View File

@@ -3,7 +3,7 @@ ManaCost:2 R W
Types:Instant Types:Instant
A:SP$ Discard | Cost$ 2 R W | Defined$ You | RememberDiscarded$ True | Mode$ Hand | SubAbility$ DBDraw | SpellDescription$ Discard all the cards in your hand, then draw that many cards plus one. You gain life equal to the number of cards in your hand. A:SP$ Discard | Cost$ 2 R W | Defined$ You | RememberDiscarded$ True | Mode$ Hand | SubAbility$ DBDraw | SpellDescription$ Discard all the cards in your hand, then draw that many cards plus one. You gain life equal to the number of cards in your hand.
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DBGainLife SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DBGainLife
SVar:X:Remembered$Amount.Plus.1 SVar:X:Remembered$Amount/Plus.1
SVar:DBGainLife:DB$ GainLife | LifeAmount$ Y | SubAbility$ DBCleanup SVar:DBGainLife:DB$ GainLife | LifeAmount$ Y | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Y:Count$InYourHand SVar:Y:Count$InYourHand

View File

@@ -3,7 +3,7 @@ ManaCost:2 B B B
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | Cost$ 2 B B B | ValidCards$ Creature.nonBlack | RememberDestroyed$ True | SubAbility$ DBDealDamage | SpellDescription$ Destroy all nonblack creatures. CARDNAME deals X plus 3 damage to you, where X is the number of creatures that died this way. A:SP$ DestroyAll | Cost$ 2 B B B | ValidCards$ Creature.nonBlack | RememberDestroyed$ True | SubAbility$ DBDealDamage | SpellDescription$ Destroy all nonblack creatures. CARDNAME deals X plus 3 damage to you, where X is the number of creatures that died this way.
SVar:DBDealDamage:DB$ DealDamage | NumDmg$ X | Defined$ You SVar:DBDealDamage:DB$ DealDamage | NumDmg$ X | Defined$ You
SVar:X:Remembered$Amount.Plus.3 SVar:X:Remembered$Amount/Plus.3
# Remember Destroyed still isn't quite right since Hellfire cares about Replacement effects too # Remember Destroyed still isn't quite right since Hellfire cares about Replacement effects too
SVar:NeedsToPlayVar:Y GE5 SVar:NeedsToPlayVar:Y GE5
SVar:Y:Count$YourLifeTotal SVar:Y:Count$YourLifeTotal

View File

@@ -9,5 +9,5 @@ SVar:DBDiscard:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBInce
SVar:DBIncendiaryDiscard:DB$ Discard | Defined$ Player.IsRemembered | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBIncendiaryDraw SVar:DBIncendiaryDiscard:DB$ Discard | Defined$ Player.IsRemembered | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBIncendiaryDraw
SVar:DBIncendiaryDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanIncendiary SVar:DBIncendiaryDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanIncendiary
SVar:CleanIncendiary:DB$ Cleanup | ClearRemembered$ True SVar:CleanIncendiary:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount/Minus.1 SVar:X:Remembered$Amount
Oracle:Choose two —\n• Incendiary Command deals 4 damage to target player or planeswalker.\n• Incendiary Command deals 2 damage to each creature.\n• Destroy target nonbasic land.\n• Each player discards all the cards in their hand, then draws that many cards. Oracle:Choose two —\n• Incendiary Command deals 4 damage to target player or planeswalker.\n• Incendiary Command deals 2 damage to each creature.\n• Destroy target nonbasic land.\n• Each player discards all the cards in their hand, then draws that many cards.

View File

@@ -5,5 +5,5 @@ A:SP$ DayTime | Value$ Night | SubAbility$ DBDiscard | SpellDescription$ It beco
SVar:DBDiscard:DB$ Discard | AnyNumber$ True | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw | StackDescription$ {p:You} discards any number of cards, | SpellDescription$ Discard any number of cards, SVar:DBDiscard:DB$ Discard | AnyNumber$ True | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw | StackDescription$ {p:You} discards any number of cards, | SpellDescription$ Discard any number of cards,
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ Y | SubAbility$ DBCleanup | StackDescription$ then draws that many cards plus one. | SpellDescription$ then draw that many cards plus one. SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ Y | SubAbility$ DBCleanup | StackDescription$ then draws that many cards plus one. | SpellDescription$ then draw that many cards plus one.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Y:Remembered$Amount.Plus.1 SVar:Y:Remembered$Amount/Plus.1
Oracle:It becomes night. Discard any number of cards, then draw that many cards plus one. Oracle:It becomes night. Discard any number of cards, then draw that many cards plus one.

View File

@@ -4,7 +4,7 @@ Types:Creature Human Wizard
PT:1/1 PT:1/1
A:AB$ Reveal | Cost$ 2 W T | Defined$ You | RevealValid$ Card.White | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBJasmineLife | SpellDescription$ Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way. A:AB$ Reveal | Cost$ 2 W T | Defined$ You | RevealValid$ Card.White | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBJasmineLife | SpellDescription$ Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way.
SVar:DBJasmineLife:DB$ GainLife | LifeAmount$ JasmineX | SubAbility$ DBJasmineCleanup SVar:DBJasmineLife:DB$ GainLife | LifeAmount$ JasmineX | SubAbility$ DBJasmineCleanup
SVar:JasmineX:Remembered$Amount.Twice SVar:JasmineX:Remembered$Amount/Twice
SVar:DBJasmineCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBJasmineCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{2}{W}, {T}: Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way. Oracle:{2}{W}, {T}: Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way.

View File

@@ -8,7 +8,7 @@ SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$
SVar:FoeRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBDmg | DamageMap$ True | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals damage to each foe equal to the number of cards in their hand. SVar:FoeRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBDmg | DamageMap$ True | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals damage to each foe equal to the number of cards in their hand.
SVar:DBDmg:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ Y SVar:DBDmg:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ Y
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount.Plus.1 SVar:X:Remembered$Amount/Plus.1
SVar:Y:Count$ValidHand Card.RememberedPlayerCtrl SVar:Y:Count$ValidHand Card.RememberedPlayerCtrl
SVar:NeedsToPlayVar:Z GE4 SVar:NeedsToPlayVar:Z GE4
SVar:Z:Count$ValidHand Card.OppCtrl SVar:Z:Count$ValidHand Card.OppCtrl

View File

@@ -5,7 +5,7 @@ PT:1/2
A:AB$ Reveal | Cost$ T | RevealValid$ Card.Artifact+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBMetalWorkerMana | SpellDescription$ Reveal any number of artifact cards in your hand. Add {C}{C} for each card revealed this way. A:AB$ Reveal | Cost$ T | RevealValid$ Card.Artifact+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBMetalWorkerMana | SpellDescription$ Reveal any number of artifact cards in your hand. Add {C}{C} for each card revealed this way.
SVar:DBMetalWorkerMana:DB$ Mana | Produced$ C | Amount$ MetalWorkerX | SubAbility$ DBMetalWorkerCleanup SVar:DBMetalWorkerMana:DB$ Mana | Produced$ C | Amount$ MetalWorkerX | SubAbility$ DBMetalWorkerCleanup
SVar:DBMetalWorkerCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBMetalWorkerCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:MetalWorkerX:Remembered$Amount.Twice SVar:MetalWorkerX:Remembered$Amount/Twice
AI:RemoveDeck:All AI:RemoveDeck:All
AI:RemoveDeck:Random AI:RemoveDeck:Random
Oracle:{T}: Reveal any number of artifact cards in your hand. Add {C}{C} for each card revealed this way. Oracle:{T}: Reveal any number of artifact cards in your hand. Add {C}{C} for each card revealed this way.

View File

@@ -3,5 +3,5 @@ ManaCost:3 R R
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | Cost$ 3 R R | ValidTgts$ Player | TgtPrompt$ Select target player | ValidCards$ Creature | ValidDescription$ all creatures targeted player controls | RememberDestroyed$ True | SubAbility$ DBTokenInfestation | SpellDescription$ Destroy all creatures target player controls. For each creature that died this way, that player creates two 1/1 red Goblin creature tokens. A:SP$ DestroyAll | Cost$ 3 R R | ValidTgts$ Player | TgtPrompt$ Select target player | ValidCards$ Creature | ValidDescription$ all creatures targeted player controls | RememberDestroyed$ True | SubAbility$ DBTokenInfestation | SpellDescription$ Destroy all creatures target player controls. For each creature that died this way, that player creates two 1/1 red Goblin creature tokens.
SVar:DBTokenInfestation:DB$ Token | TokenAmount$ X | TokenScript$ r_1_1_goblin | TokenOwner$ Targeted SVar:DBTokenInfestation:DB$ Token | TokenAmount$ X | TokenScript$ r_1_1_goblin | TokenOwner$ Targeted
SVar:X:Remembered$Amount.Twice SVar:X:Remembered$Amount/Twice
Oracle:Destroy all creatures target player controls. For each creature that died this way, that player creates two 1/1 red Goblin creature tokens. Oracle:Destroy all creatures target player controls. For each creature that died this way, that player creates two 1/1 red Goblin creature tokens.

View File

@@ -6,7 +6,7 @@ SVar:ShuffleHand:DB$ ChangeZoneAll | Defined$ Player.IsRemembered | Origin$ Hand
SVar:PsychoDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ MindFlame SVar:PsychoDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ MindFlame
SVar:MindFlame:DB$ DealDamage | Defined$ Player.Opponent+IsRemembered | NumDmg$ Y | ConditionPresent$ Artifact.YouCtrl | ConditionCompare$ GE3 | StackDescription$ None | SubAbility$ DBCleanup SVar:MindFlame:DB$ DealDamage | Defined$ Player.Opponent+IsRemembered | NumDmg$ Y | ConditionPresent$ Artifact.YouCtrl | ConditionCompare$ GE3 | StackDescription$ None | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount/Minus.1 SVar:X:Remembered$Amount
SVar:Y:PlayerCountRemembered$CardsDrawn SVar:Y:PlayerCountRemembered$CardsDrawn
SVar:NeedsToPlayVar:Z LE2 SVar:NeedsToPlayVar:Z LE2
SVar:Z:Count$InYourHand SVar:Z:Count$InYourHand

View File

@@ -3,5 +3,5 @@ ManaCost:3 G
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | Cost$ 3 G | ValidCards$ Enchantment | RememberDestroyed$ True | SubAbility$ DBGainLife | SpellDescription$ Destroy all enchantments. You gain 2 life for each enchantment destroyed this way. A:SP$ DestroyAll | Cost$ 3 G | ValidCards$ Enchantment | RememberDestroyed$ True | SubAbility$ DBGainLife | SpellDescription$ Destroy all enchantments. You gain 2 life for each enchantment destroyed this way.
SVar:DBGainLife:DB$ GainLife | LifeAmount$ X SVar:DBGainLife:DB$ GainLife | LifeAmount$ X
SVar:X:Remembered$Amount.Twice SVar:X:Remembered$Amount/Twice
Oracle:Destroy all enchantments. You gain 2 life for each enchantment destroyed this way. Oracle:Destroy all enchantments. You gain 2 life for each enchantment destroyed this way.

View File

@@ -6,5 +6,5 @@ SVar:DBSac:DB$ Sacrifice | Defined$ Remembered | Amount$ SacX | SacValid$ Creatu
SVar:DBMana:DB$ Mana | Produced$ B | Amount$ ManaX | SubAbility$ DBCleanup SVar:DBMana:DB$ Mana | Produced$ B | Amount$ ManaX | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:SacX:Count$Valid Creature SVar:SacX:Count$Valid Creature
SVar:ManaX:Remembered$Amount.Twice SVar:ManaX:Remembered$Amount/Twice
Oracle:Your team may sacrifice any number of creatures. For each creature sacrificed this way, you add {B}{B}. Oracle:Your team may sacrifice any number of creatures. For each creature sacrificed this way, you add {B}{B}.

View File

@@ -3,6 +3,6 @@ ManaCost:4 B B
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | Cost$ 4 B B | ValidCards$ Creature | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberDestroyed$ True | SubAbility$ DBLoseLife | SpellDescription$ Destroy all creatures target opponent controls. You lose 2 life for each creature destroyed this way. A:SP$ DestroyAll | Cost$ 4 B B | ValidCards$ Creature | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberDestroyed$ True | SubAbility$ DBLoseLife | SpellDescription$ Destroy all creatures target opponent controls. You lose 2 life for each creature destroyed this way.
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X
SVar:X:Remembered$Amount.Twice SVar:X:Remembered$Amount/Twice
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Destroy all creatures target opponent controls. You lose 2 life for each creature destroyed this way. Oracle:Destroy all creatures target opponent controls. You lose 2 life for each creature destroyed this way.

View File

@@ -5,6 +5,6 @@ A:SP$ Sacrifice | Cost$ 1 W | Defined$ You | Amount$ SacX | SacValid$ Permanent
SVar:DBGainLife:DB$ GainLife | LifeAmount$ LifeX | SubAbility$ DBCleanup SVar:DBGainLife:DB$ GainLife | LifeAmount$ LifeX | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:SacX:Count$Valid Permanent.YouCtrl SVar:SacX:Count$Valid Permanent.YouCtrl
SVar:LifeX:Remembered$Amount.Twice SVar:LifeX:Remembered$Amount/Twice
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Sacrifice any number of permanents. You gain 2 life for each permanent sacrificed this way. Oracle:Sacrifice any number of permanents. You gain 2 life for each permanent sacrificed this way.

View File

@@ -2,7 +2,7 @@ Name:Revival Experiment
ManaCost:4 B G ManaCost:4 B G
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatTypesFrom$ Permanent.YouOwn | TypesFromZone$ Graveyard | RepeatSubAbility$ ChooseCard | SubAbility$ DBReturn | SpellDescription$ For each permanent type, return up to one card of that type from your graveyard to the battlefield. A:SP$ RepeatEach | RepeatTypesFrom$ Permanent.YouOwn | TypesFromZone$ Graveyard | RepeatSubAbility$ ChooseCard | SubAbility$ DBReturn | SpellDescription$ For each permanent type, return up to one card of that type from your graveyard to the battlefield.
SVar:ChooseCard:DB$ ChooseCard | Choices$ Card.ChosenType+YouOwn | ChoiceTitle$ Choose up to one card of this type to return | ChoiceTitleAppend$ ChosenType | RememberChosen$ True SVar:ChooseCard:DB$ ChooseCard | Choices$ Card.ChosenType+YouOwn | ChoiceZone$ Graveyard | ChoiceTitle$ Choose up to one card of this type to return | ChoiceTitleAppend$ ChosenType | RememberChosen$ True
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBLoseLife SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | SubAbility$ DBChange | StackDescription$ SpellDescription | SubAbility$ DBExile | SpellDescription$ You lose 3 life for each card returned this way. SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | SubAbility$ DBChange | StackDescription$ SpellDescription | SubAbility$ DBExile | SpellDescription$ You lose 3 life for each card returned this way.
SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | SpellDescription$ Exile CARDNAME. SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | SpellDescription$ Exile CARDNAME.

View File

@@ -3,5 +3,5 @@ ManaCost:4 W W
Types:Sorcery Types:Sorcery
A:SP$ DestroyAll | Cost$ 4 W W | ValidCards$ Creature.tapped | RememberDestroyed$ True | SubAbility$ DBGainLife | SpellDescription$ Destroy all tapped creatures. You gain 2 life for each creature destroyed this way. A:SP$ DestroyAll | Cost$ 4 W W | ValidCards$ Creature.tapped | RememberDestroyed$ True | SubAbility$ DBGainLife | SpellDescription$ Destroy all tapped creatures. You gain 2 life for each creature destroyed this way.
SVar:DBGainLife:DB$ GainLife | LifeAmount$ X SVar:DBGainLife:DB$ GainLife | LifeAmount$ X
SVar:X:Remembered$Amount.Twice SVar:X:Remembered$Amount/Twice
Oracle:Destroy all tapped creatures. You gain 2 life for each creature destroyed this way. Oracle:Destroy all tapped creatures. You gain 2 life for each creature destroyed this way.

View File

@@ -3,7 +3,7 @@ ManaCost:W
Types:Instant Types:Instant
A:SP$ Reveal | Cost$ W | Defined$ You | RevealValid$ Card.White | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBScentOfJasmineLife | SpellDescription$ Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way. A:SP$ Reveal | Cost$ W | Defined$ You | RevealValid$ Card.White | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBScentOfJasmineLife | SpellDescription$ Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way.
SVar:DBScentOfJasmineLife:DB$ GainLife | LifeAmount$ ScentOfJasmineX | SubAbility$ DBScentOfJasmineCleanup SVar:DBScentOfJasmineLife:DB$ GainLife | LifeAmount$ ScentOfJasmineX | SubAbility$ DBScentOfJasmineCleanup
SVar:ScentOfJasmineX:Remembered$Amount.Twice SVar:ScentOfJasmineX:Remembered$Amount/Twice
SVar:DBScentOfJasmineCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBScentOfJasmineCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way. Oracle:Reveal any number of white cards in your hand. You gain 2 life for each card revealed this way.

View File

@@ -7,11 +7,9 @@ SVar:WhirlYou:DB$ ChangeZoneAll | Defined$ You | Origin$ Hand | Destination$ Lib
SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ You | SubAbility$ DBCleanup SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ You | SubAbility$ DBCleanup
A:AB$ RepeatEach | Cost$ R Sac<1/CARDNAME> | RepeatPlayers$ Player | RepeatSubAbility$ ShuffleHand | SpellDescription$ Each player shuffles the cards from their hand into their library, then draws that many cards. A:AB$ RepeatEach | Cost$ R Sac<1/CARDNAME> | RepeatPlayers$ Player | RepeatSubAbility$ ShuffleHand | SpellDescription$ Each player shuffles the cards from their hand into their library, then draws that many cards.
SVar:ShuffleHand:DB$ ChangeZoneAll | Defined$ Player.IsRemembered | Origin$ Hand | Destination$ Library | LibraryPosition$ -1 | RememberChanged$ True | Shuffle$ True | SubAbility$ WindDraw SVar:ShuffleHand:DB$ ChangeZoneAll | Defined$ Player.IsRemembered | Origin$ Hand | Destination$ Library | LibraryPosition$ -1 | RememberChanged$ True | Shuffle$ True | SubAbility$ WindDraw
SVar:WindDraw:DB$ Draw | NumCards$ Y | Defined$ Player.IsRemembered | SubAbility$ DBCleanup SVar:WindDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount SVar:X:Remembered$Amount
# Amount Minus 1 because the Player is also being remembered at this point
SVar:Y:Remembered$Amount/Minus.1
AI:RemoveDeck:Random AI:RemoveDeck:Random
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:When Whirlpool Warrior enters the battlefield, shuffle the cards from your hand into your library, then draw that many cards.\n{R}, Sacrifice Whirlpool Warrior: Each player shuffles the cards from their hand into their library, then draws that many cards. Oracle:When Whirlpool Warrior enters the battlefield, shuffle the cards from your hand into your library, then draw that many cards.\n{R}, Sacrifice Whirlpool Warrior: Each player shuffles the cards from their hand into their library, then draws that many cards.

View File

@@ -5,8 +5,7 @@ A:SP$ RepeatEach | Cost$ R | RepeatPlayers$ Player | RepeatSubAbility$ ShuffleHa
SVar:ShuffleHand:DB$ ChangeZoneAll | Defined$ Player.IsRemembered | Origin$ Hand | Destination$ Library | LibraryPosition$ -1 | RememberChanged$ True | Shuffle$ True | SubAbility$ WindDraw SVar:ShuffleHand:DB$ ChangeZoneAll | Defined$ Player.IsRemembered | Origin$ Hand | Destination$ Library | LibraryPosition$ -1 | RememberChanged$ True | Shuffle$ True | SubAbility$ WindDraw
SVar:WindDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanTheWind SVar:WindDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanTheWind
SVar:CleanTheWind:DB$ Cleanup | ClearRemembered$ True SVar:CleanTheWind:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount/Minus.1 SVar:X:Remembered$Amount
# Amount Minus 1 because the Player is also being remembered at this point
AI:RemoveDeck:Random AI:RemoveDeck:Random
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Each player shuffles the cards from their hand into their library, then draws that many cards. Oracle:Each player shuffles the cards from their hand into their library, then draws that many cards.