Merge branch 'Card-Forge:master' into YONE4

This commit is contained in:
Simisays
2023-03-03 12:54:21 +01:00
committed by GitHub
32 changed files with 39 additions and 53 deletions

View File

@@ -2040,7 +2040,7 @@ public class ComputerUtilCombat {
final boolean hasTrample = attacker.hasKeyword(Keyword.TRAMPLE);
if (combat != null && hasTrample && attacker.isAttacking()) {
if (combat != null && remaining != null && hasTrample && attacker.isAttacking()) {
// if attacker has trample and some of its blockers are also blocking others it's generally a good idea
// to assign those without trample first so we can maximize the damage to the defender
for (final Card c : remaining) {

View File

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

View File

@@ -198,6 +198,7 @@ public class AnimateEffect extends AnimateEffectBase {
if (sa.hasParam("Crew")) {
c.becomesCrewed(sa);
c.updatePowerToughnessForView();
}
game.fireEvent(new GameEventCardStatsChanged(c));

View File

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

View File

@@ -161,7 +161,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
if (sa.hasParam("ChooseOrder") && !sa.getParam("ChooseOrder").equals("True")) {
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);
source.setChosenType(chosenT);
AbilityUtils.resolve(repeat);

View File

@@ -6361,7 +6361,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
continue;
}
if (!tr.getParam("Destination").equals(ZoneType.Battlefield.toString())) {
if (!ZoneType.Battlefield.toString().equals(tr.getParam("Destination"))) {
continue;
}

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.
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ Y
SVar:X:Count$Valid Mountain.YouCtrl
SVar:Y:Remembered$Amount.Twice
SVar:Y:Remembered$Amount/Twice
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.

View File

@@ -5,7 +5,7 @@ PT:1/1
T:Mode$ ChangesZoneAll | ValidCards$ Creature.basePowerEQ1+baseToughnessEQ1+Other+YouCtrl | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever one or more other creatures with base power and toughness 1/1 enter the battlefield under your control, put a +1/+1 counter on CARDNAME.
SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ Whenever NICKNAME attacks, each other creature you control with base power and toughness 1/1 gets +X/+X until end of turn, where X is the number of +1/+1 counters on NICKNAME.
SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.basePowerEQ1+baseToughnessEQ1+Other | NumAtt$ +X | NumDef$ +X
SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.basePowerEQ1+baseToughnessEQ1+Other+YouCtrl | NumAtt$ +X | NumDef$ +X
SVar:X:Count$CardCounters.P1P1
DeckHas:Ability$Counters
DeckHints:Type$Citizen

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$ 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:Y:Remembered$Amount.Plus.1
SVar:Y:Remembered$Amount/Plus.1
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.
SVar:X:Count$xPaid

View File

@@ -3,6 +3,6 @@ ManaCost:2 B
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.
SVar:X:Count$xPaid
SVar:Y:ExiledCards$Amount.Twice
SVar:Y:ExiledCards$Amount/Twice
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.

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:DBDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanDrawn
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
AI:RemoveDeck:All
AI:RemoveDeck:Random

View File

@@ -3,7 +3,7 @@ ManaCost:4 R
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.
SVar:Z:SVar$Y/Thrice
SVar:Y:Sacrificed$Amount.Plus.1
SVar:Y:Sacrificed$Amount/Plus.1
SVar:X:Count$xPaid
AI:RemoveDeck:Random
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:CleanTheFlux:DB$ Cleanup | ClearRemembered$ True
SVar:DBDraw:DB$ Draw | NumCards$ 1
SVar:X:Remembered$Amount/Minus.1
SVar:X:Remembered$Amount
AI:RemoveDeck:All
AI:RemoveDeck:Random
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
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: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.

View File

@@ -3,7 +3,7 @@ ManaCost:2 R W
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.
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:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Y:Count$InYourHand

View File

@@ -3,7 +3,7 @@ ManaCost:2 B B B
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.
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
SVar:NeedsToPlayVar:Y GE5
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:DBIncendiaryDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanIncendiary
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.

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: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: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.

View File

@@ -4,7 +4,7 @@ Types:Creature Human Wizard
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.
SVar:DBJasmineLife:DB$ GainLife | LifeAmount$ JasmineX | SubAbility$ DBJasmineCleanup
SVar:JasmineX:Remembered$Amount.Twice
SVar:JasmineX:Remembered$Amount/Twice
SVar:DBJasmineCleanup:DB$ Cleanup | ClearRemembered$ True
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.

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:DBDmg:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ Y
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:NeedsToPlayVar:Z GE4
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.
SVar:DBMetalWorkerMana:DB$ Mana | Produced$ C | Amount$ MetalWorkerX | SubAbility$ DBMetalWorkerCleanup
SVar:DBMetalWorkerCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:MetalWorkerX:Remembered$Amount.Twice
SVar:MetalWorkerX:Remembered$Amount/Twice
AI:RemoveDeck:All
AI:RemoveDeck:Random
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
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: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.

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: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:X:Remembered$Amount/Minus.1
SVar:X:Remembered$Amount
SVar:Y:PlayerCountRemembered$CardsDrawn
SVar:NeedsToPlayVar:Z LE2
SVar:Z:Count$InYourHand

View File

@@ -3,5 +3,5 @@ ManaCost:3 G
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.
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.

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:DBCleanup:DB$ Cleanup | ClearRemembered$ True
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}.

View File

@@ -3,6 +3,6 @@ ManaCost:4 B B
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.
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X
SVar:X:Remembered$Amount.Twice
SVar:X:Remembered$Amount/Twice
AI:RemoveDeck:All
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:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:SacX:Count$Valid Permanent.YouCtrl
SVar:LifeX:Remembered$Amount.Twice
SVar:LifeX:Remembered$Amount/Twice
AI:RemoveDeck:All
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
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.
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: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.

View File

@@ -3,5 +3,5 @@ ManaCost:4 W W
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.
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.

View File

@@ -3,7 +3,7 @@ ManaCost:W
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.
SVar:DBScentOfJasmineLife:DB$ GainLife | LifeAmount$ ScentOfJasmineX | SubAbility$ DBScentOfJasmineCleanup
SVar:ScentOfJasmineX:Remembered$Amount.Twice
SVar:ScentOfJasmineX:Remembered$Amount/Twice
SVar:DBScentOfJasmineCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All
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
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: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: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: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.

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:WindDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | SubAbility$ CleanTheWind
SVar:CleanTheWind:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount/Minus.1
# Amount Minus 1 because the Player is also being remembered at this point
SVar:X:Remembered$Amount
AI:RemoveDeck:Random
AI:RemoveDeck:All
Oracle:Each player shuffles the cards from their hand into their library, then draws that many cards.