Some fixes (#5079)

* Clean up CardTypes syntax

* Riku counting fix
This commit is contained in:
tool4ever
2024-04-20 15:40:43 +02:00
committed by GitHub
parent fd453dce07
commit 2efcace2b6
24 changed files with 34 additions and 70 deletions

View File

@@ -599,21 +599,8 @@ public class AbilityUtils {
// All the following only work for SpellAbilities // All the following only work for SpellAbilities
else if (ability instanceof SpellAbility) { else if (ability instanceof SpellAbility) {
final SpellAbility sa = (SpellAbility) ability; final SpellAbility sa = (SpellAbility) ability;
if (calcX[0].startsWith("Modes")) {
int chosenModes = 0;
SpellAbility sub = sa;
while(sub != null) {
if (!sub.getSVar("CharmOrder").equals("")) {
chosenModes++;
}
sub = sub.getSubAbility();
}
// Count Math
final String m = CardFactoryUtil.extractOperators(calcX[1]);
val = doXMath(chosenModes, m, card, ability);
}
// Player attribute counting // Player attribute counting
else if (calcX[0].startsWith("TargetedPlayer")) { if (calcX[0].startsWith("TargetedPlayer")) {
final List<Player> players = new ArrayList<>(); final List<Player> players = new ArrayList<>();
final SpellAbility saTargeting = sa.getSATargetingPlayer(); final SpellAbility saTargeting = sa.getSATargetingPlayer();
if (null != saTargeting) { if (null != saTargeting) {
@@ -1739,14 +1726,11 @@ public class AbilityUtils {
} }
// Count$NumTimesChoseMode // Count$NumTimesChoseMode
if (sq[0].startsWith("NumTimesChoseMode")) { if (sq[0].startsWith("NumTimesChoseMode")) {
final SpellAbility root = sa.getRootAbility(); SpellAbility sub = sa.getRootAbility();
int amount = 0; int amount = 0;
if (root != null) { while (sub != null) {
SpellAbility sub = root; if (sub.getDirectSVars().containsKey("CharmOrder")) amount++;
while(sub != null) { sub = sub.getSubAbility();
if (!sub.getSVar("CharmOrder").equals("")) amount++;
sub = sub.getSubAbility();
}
} }
return doXMath(amount, expr, c, ctb); return doXMath(amount, expr, c, ctb);
} }
@@ -2037,9 +2021,6 @@ public class AbilityUtils {
return doXMath(c.getNetPower() + c.getNetToughness(), expr, c, ctb); return doXMath(c.getNetPower() + c.getNetToughness(), expr, c, ctb);
} }
if (sq[0].equals("CardNumTypes")) {
return doXMath(getNumberOfTypes(c), expr, c, ctb);
}
if (sq[0].equals("CardNumNotedTypes")) { if (sq[0].equals("CardNumNotedTypes")) {
return doXMath(c.getNumNotedTypes(), expr, c, ctb); return doXMath(c.getNumNotedTypes(), expr, c, ctb);
} }
@@ -2653,21 +2634,6 @@ public class AbilityUtils {
return game.getPhaseHandler().getPlanarDiceSpecialActionThisTurn(); return game.getPhaseHandler().getPlanarDiceSpecialActionThisTurn();
} }
if (sq[0].contains("CardTypes")) {
return doXMath(getCardTypesFromList(getDefinedCards(c, sq[1], ctb), false), expr, c, ctb);
}
if (sq[0].contains("CardControllerTypes")) {
return doXMath(getCardTypesFromList(player.getCardsIn(ZoneType.listValueOf(sq[1])), false), expr, c, ctb);
}
if (sq[0].contains("CardControllerPermanentTypes")) {
return doXMath(getCardTypesFromList(player.getCardsIn(ZoneType.listValueOf(sq[1])), true), expr, c, ctb);
}
if (sq[0].startsWith("OppTypesInGrave")) {
final PlayerCollection opponents = player.getOpponents();
CardCollection oppCards = opponents.getCardsIn(ZoneType.Graveyard);
return doXMath(getCardTypesFromList(oppCards, false), expr, c, ctb);
}
if (sq[0].equals("TotalTurns")) { if (sq[0].equals("TotalTurns")) {
return doXMath(game.getPhaseHandler().getTurn(), expr, c, ctb); return doXMath(game.getPhaseHandler().getTurn(), expr, c, ctb);
} }
@@ -3680,6 +3646,10 @@ public class AbilityUtils {
return doXMath(num, splitString.length > 1 ? splitString[1] : null, source, ctb); return doXMath(num, splitString.length > 1 ? splitString[1] : null, source, ctb);
} }
if (string.startsWith("CardTypes")) {
return doXMath(getCardTypesFromList(paidList, string.startsWith("CardTypesPermanent")), CardFactoryUtil.extractOperators(string), source, ctb);
}
String filteredString = string; String filteredString = string;
Iterable<Card> filteredList = paidList; Iterable<Card> filteredList = paidList;
final String[] filter = filteredString.split("_"); final String[] filter = filteredString.split("_");
@@ -3895,12 +3865,6 @@ public class AbilityUtils {
return list; return list;
} }
public static int getNumberOfTypes(final Card card) {
EnumSet<CardType.CoreType> types = EnumSet.noneOf(CardType.CoreType.class);
Iterables.addAll(types, card.getType().getCoreTypes());
return types.size();
}
public static int getCardTypesFromList(final Iterable<Card> list, boolean permanentTypes) { public static int getCardTypesFromList(final Iterable<Card> list, boolean permanentTypes) {
EnumSet<CardType.CoreType> types = EnumSet.noneOf(CardType.CoreType.class); EnumSet<CardType.CoreType> types = EnumSet.noneOf(CardType.CoreType.class);
for (Card c1 : list) { for (Card c1 : list) {

View File

@@ -368,7 +368,7 @@ public class PlayEffect extends SpellAbilityEffect {
continue; continue;
} }
boolean unpayableCost = tgtSA.getHostCard().getManaCost().isNoCost(); boolean unpayableCost = tgtSA.getPayCosts().getCostMana().getMana().isNoCost();
if (sa.hasParam("WithoutManaCost")) { if (sa.hasParam("WithoutManaCost")) {
tgtSA = tgtSA.copyWithNoManaCost(); tgtSA = tgtSA.copyWithNoManaCost();
} else if (sa.hasParam("PlayCost")) { } else if (sa.hasParam("PlayCost")) {

View File

@@ -4,6 +4,6 @@ Types:Tribal Artifact Lhurgoyf
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards. T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +X | NumDef$ +X SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +X | NumDef$ +X
S:Mode$ Continuous | Affected$ Creature.Lhurgoyf+YouCtrl | AddKeyword$ Trample | Description$ Lhurgoyf creatures you control have trample. S:Mode$ Continuous | Affected$ Creature.Lhurgoyf+YouCtrl | AddKeyword$ Trample | Description$ Lhurgoyf creatures you control have trample.
SVar:X:Count$CardTypes.ValidGraveyard Card SVar:X:Count$ValidGraveyard Card$CardTypes
SVar:PlayMain1:TRUE SVar:PlayMain1:TRUE
Oracle:Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards.\nLhurgoyf creatures you control have trample. Oracle:Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards.\nLhurgoyf creatures you control have trample.

View File

@@ -6,6 +6,6 @@ A:AB$ LoseLife | Cost$ T Sac<X/Permanent> | XMaxLimit$ 3 | CostDesc$ {T}, Sacrif
SVar:DBGainThree:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBDrawThree | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3 SVar:DBGainThree:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBDrawThree | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3
SVar:DBDrawThree:DB$ Draw | NumCards$ 3 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3 SVar:DBDrawThree:DB$ Draw | NumCards$ 3 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:Y:Count$CardTypes.Sacrificed SVar:Y:Sacrificed$CardTypes
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice
Oracle:{T}, Sacrifice up to three permanents: If there were three or more card types among the sacrificed permanents, each opponent loses 3 life, you gain 3 life, and you draw three cards. Oracle:{T}, Sacrifice up to three permanents: If there were three or more card types among the sacrificed permanents, each opponent loses 3 life, you gain 3 life, and you draw three cards.

View File

@@ -4,7 +4,7 @@ Types:Creature Lhurgoyf Imp
PT:*/1+* PT:*/1+*
K:Flying K:Flying
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
SVar:X:Count$CardTypes.ValidGraveyard Card SVar:X:Count$ValidGraveyard Card$CardTypes
SVar:Y:SVar$X/Plus.1 SVar:Y:SVar$X/Plus.1
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME dies, target opponent puts a card from their hand on top of their library. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME dies, target opponent puts a card from their hand on top of their library.
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Library | LibraryPosition$ 0 | ValidTgts$ Opponent | Chooser$ Targeted | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | IsCurse$ True SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Library | LibraryPosition$ 0 | ValidTgts$ Opponent | Chooser$ Targeted | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | IsCurse$ True

View File

@@ -3,8 +3,8 @@ ManaCost:3 G G
Types:Creature Ooze Types:Creature Ooze
PT:*/*+1 PT:*/*+1
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1. S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1.
SVar:X:Count$CardControllerTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypes
SVar:Y:Count$CardControllerTypes.Graveyard/Plus.1 SVar:Y:SVar$X/Plus.1
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a green Ooze creature token with "This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1." T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a green Ooze creature token with "This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1."
SVar:TrigToken:DB$ Token | TokenScript$ g_x_y_ooze_types_graveyard SVar:TrigToken:DB$ Token | TokenScript$ g_x_y_ooze_types_graveyard
DeckHas:Ability$Graveyard|Token DeckHas:Ability$Graveyard|Token

View File

@@ -3,7 +3,7 @@ ManaCost:5 B B
Types:Creature Vampire Types:Creature Vampire
PT:4/5 PT:4/5
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | CheckSVar$ X | SVarCompare$ GE4 | Description$ Delirium — This spell costs {2} less to cast if there are four or more card types among cards in your graveyard. S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | CheckSVar$ X | SVarCompare$ GE4 | Description$ Delirium — This spell costs {2} less to cast if there are four or more card types among cards in your graveyard.
SVar:X:Count$CardControllerTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypes
K:Flying K:Flying
DeckHints:Ability$Graveyard|Discard DeckHints:Ability$Graveyard|Discard
DeckHas:Ability$Delirium DeckHas:Ability$Delirium

View File

@@ -6,7 +6,7 @@ K:Flying
K:Trample K:Trample
K:Protection:Instant:instants K:Protection:Instant:instants
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone$ All | Description$ This spell costs {1} less to cast for each card type among cards in your graveyard. S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone$ All | Description$ This spell costs {1} less to cast for each card type among cards in your graveyard.
SVar:X:Count$CardControllerTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypes
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigControlPlayer | TriggerDescription$ When you cast CARDNAME, you gain control of target opponent during that player's next turn. After that turn, that player takes an extra turn. T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigControlPlayer | TriggerDescription$ When you cast CARDNAME, you gain control of target opponent during that player's next turn. After that turn, that player takes an extra turn.
SVar:TrigControlPlayer:DB$ ControlPlayer | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ DBDelTrig SVar:TrigControlPlayer:DB$ ControlPlayer | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ DBDelTrig
SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | DelayedTriggerDefinedPlayer$ Targeted | RememberObjects$ Targeted | Phase$ Cleanup | Execute$ DBAddTurn | Static$ True SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | DelayedTriggerDefinedPlayer$ Targeted | RememberObjects$ Targeted | Phase$ Cleanup | Execute$ DBAddTurn | Static$ True

View File

@@ -7,7 +7,7 @@ SVar:DBDraw:DB$ Draw | Defined$ Player | NumCards$ 1
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Z | SVarCompare$ EQ11 | LifeTotal$ You | LifeAmount$ GEW | Execute$ TrigWin | TriggerDescription$ At the beginning of your upkeep, if there are five colors among permanents you control, there are six or more card types among permanents you control and/or cards in your graveyard, and your life total is greater than or equal to your starting life total, you win the game. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Z | SVarCompare$ EQ11 | LifeTotal$ You | LifeAmount$ GEW | Execute$ TrigWin | TriggerDescription$ At the beginning of your upkeep, if there are five colors among permanents you control, there are six or more card types among permanents you control and/or cards in your graveyard, and your life total is greater than or equal to your starting life total, you win the game.
SVar:TrigWin:DB$ WinsGame | Defined$ You SVar:TrigWin:DB$ WinsGame | Defined$ You
SVar:X:Count$ColorsCtrl Permanent/LimitMax.5 SVar:X:Count$ColorsCtrl Permanent/LimitMax.5
SVar:Y:Count$CardControllerTypes.Battlefield,Graveyard/LimitMax.6 SVar:Y:Count$ValidBattlefield,Graveyard Card.YouCtrl$CardTypes/LimitMax.6
SVar:Z:SVar$X/Plus.Y SVar:Z:SVar$X/Plus.Y
SVar:W:Count$YourStartingLife SVar:W:Count$YourStartingLife
DeckHas:Ability$LifeGain DeckHas:Ability$LifeGain

View File

@@ -10,5 +10,5 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage
SVar:DBCounter:DB$ PutCounter | CounterNum$ X | CounterType$ P1P1 | Defined$ Self | SubAbility$ DBDraw SVar:DBCounter:DB$ PutCounter | CounterNum$ X | CounterType$ P1P1 | Defined$ Self | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | NumCards$ X SVar:DBDraw:DB$ Draw | NumCards$ X
SVar:SacrificedPermanentsTypes:PlayerCountPropertyYou$SacrificedPermanentTypesThisTurn SVar:SacrificedPermanentsTypes:PlayerCountPropertyYou$SacrificedPermanentTypesThisTurn
SVar:X:Count$CardControllerPermanentTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypesPermanent
Oracle:This spell costs {1} less to cast for each card type among permanents you've sacrificed this turn.\nFlying, trample, haste\nWhenever Korvold deals combat damage to a player, put X +1/+1 counters on Korvold and draw X cards, where X is the number of permanent types among cards in your graveyard. Oracle:This spell costs {1} less to cast for each card type among permanents you've sacrificed this turn.\nFlying, trample, haste\nWhenever Korvold deals combat damage to a player, put X +1/+1 counters on Korvold and draw X cards, where X is the number of permanent types among cards in your graveyard.

View File

@@ -8,5 +8,5 @@ SVar:TrigDig:DB$ Dig | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZo
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Play | SubAbility$ DBCleanup | ForgetOnMoved$ Exile SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Play | SubAbility$ DBCleanup | ForgetOnMoved$ Exile
SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play those cards this turn. SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play those cards this turn.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$CardTypes.Valid Permanent.nonLand+Other+YouCtrl SVar:X:Count$Valid Permanent.nonLand+Other+YouCtrl$CardTypes
Oracle:Ward {1}\nAt the beginning of your upkeep, exile the top X cards of your library, where X is the number of card types among other nonland permanents you control. You may play those cards this turn. Oracle:Ward {1}\nAt the beginning of your upkeep, exile the top X cards of your library, where X is the number of card types among other nonland permanents you control. You may play those cards this turn.

View File

@@ -2,6 +2,6 @@ Name:Lucid Dreams
ManaCost:3 U U ManaCost:3 U U
Types:Sorcery Types:Sorcery
A:SP$ Draw | NumCards$ X | SpellDescription$ Draw X cards, where X is the number of card types among cards in your graveyard. A:SP$ Draw | NumCards$ X | SpellDescription$ Draw X cards, where X is the number of card types among cards in your graveyard.
SVar:X:Count$CardControllerTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypes
DeckHints:Ability$Discard|Graveyard DeckHints:Ability$Discard|Graveyard
Oracle:Draw X cards, where X is the number of card types among cards in your graveyard. Oracle:Draw X cards, where X is the number of card types among cards in your graveyard.

View File

@@ -4,7 +4,7 @@ Types:Legendary Artifact
A:AB$ Draw | Cost$ T | SubAbility$ DBDiscard | SpellDescription$ Draw a card, then discard a card. A:AB$ Draw | Cost$ T | SubAbility$ DBDiscard | SpellDescription$ Draw a card, then discard a card.
SVar:DBDiscard:DB$ Discard | Mode$ TgtChoose SVar:DBDiscard:DB$ Discard | Mode$ TgtChoose
A:AB$ SetState | Cost$ 4 T | Defined$ Self | Mode$ Transform | CheckSVar$ X | SVarCompare$ GE4 | SpellDescription$ Transform CARDNAME. Activate only if there are four or more permanent types among cards in your graveyard. (Artifact, battle, creature, enchantment, land, and planeswalker are permanent types.) A:AB$ SetState | Cost$ 4 T | Defined$ Self | Mode$ Transform | CheckSVar$ X | SVarCompare$ GE4 | SpellDescription$ Transform CARDNAME. Activate only if there are four or more permanent types among cards in your graveyard. (Artifact, battle, creature, enchantment, land, and planeswalker are permanent types.)
SVar:X:Count$CardControllerPermanentTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypesPermanent
DeckHas:Ability$Discard DeckHas:Ability$Discard
DeckHints:Ability$Graveyard|Mill|Dredge DeckHints:Ability$Graveyard|Mill|Dredge
AlternateMode:DoubleFaced AlternateMode:DoubleFaced

View File

@@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigDiscard | T
SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBImmediateTrigger SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBImmediateTrigger
SVar:DBImmediateTrigger:DB$ ImmediateTrigger | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | Execute$ TrigDamage | RememberObjects$ RememberedCard | SubAbility$ DBCleanup | TriggerDescription$ When you do, CARDNAME deals X damage to any target, where X is the number of card types the discarded card has. SVar:DBImmediateTrigger:DB$ ImmediateTrigger | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | Execute$ TrigDamage | RememberObjects$ RememberedCard | SubAbility$ DBCleanup | TriggerDescription$ When you do, CARDNAME deals X damage to any target, where X is the number of card types the discarded card has.
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ X SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ X
SVar:X:TriggerRemembered$CardNumTypes SVar:X:TriggerRemembered$CardTypes
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:Random AI:RemoveDeck:Random
Oracle:At the beginning of combat on your turn, you may discard a card. When you do, Mount Velus Manticore deals X damage to any target, where X is the number of card types the discarded card has. Oracle:At the beginning of combat on your turn, you may discard a card. When you do, Mount Velus Manticore deals X damage to any target, where X is the number of card types the discarded card has.

View File

@@ -6,5 +6,5 @@ K:Flying
K:Deathtouch K:Deathtouch
K:Lifelink K:Lifelink
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ CARDNAME's power is equal to 1 plus the number of card types among cards in your opponents' graveyards. (Cards in graveyards have only the characteristics of their front face.) S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ CARDNAME's power is equal to 1 plus the number of card types among cards in your opponents' graveyards. (Cards in graveyards have only the characteristics of their front face.)
SVar:X:Count$OppTypesInGrave/Plus.1 SVar:X:Count$ValidGraveyard Card.OppOwn$CardTypes/Plus.1
Oracle:Flying, deathtouch, lifelink\nNighthawk Scavenger's power is equal to 1 plus the number of card types among cards in your opponents' graveyards. (Cards in graveyards have only the characteristics of their front face.) Oracle:Flying, deathtouch, lifelink\nNighthawk Scavenger's power is equal to 1 plus the number of card types among cards in your opponents' graveyards. (Cards in graveyards have only the characteristics of their front face.)

View File

@@ -6,6 +6,6 @@ SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ X | Reme
SVar:DBToken:DB$ Token | TokenScript$ w_1_1_spirit_flying | TokenAmount$ Y | SubAbility$ DBCleanup | SpellDescription$ Create a 1/1 white Spirit creature token with flying for each card type among cards discarded this way. SVar:DBToken:DB$ Token | TokenScript$ w_1_1_spirit_flying | TokenAmount$ Y | SubAbility$ DBCleanup | SpellDescription$ Create a 1/1 white Spirit creature token with flying for each card type among cards discarded this way.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:Y:Count$CardTypes.Remembered SVar:Y:Remembered$CardTypes
DeckHas:Ability$Discard|Token & Type$Spirit DeckHas:Ability$Discard|Token & Type$Spirit
Oracle:Draw X cards, then discard X cards. Create a 1/1 white Spirit creature token with flying for each card type among cards discarded this way. Oracle:Draw X cards, then discard X cards. Create a 1/1 white Spirit creature token with flying for each card type among cards discarded this way.

View File

@@ -6,6 +6,6 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S
SVar:TrigCharm:DB$ Charm | CharmNum$ Count$Compare Y GE4.2.1 | Choices$ DBDealDamage,DBDig | AdditionalDescription$ . If there are four or more card types among cards in your graveyard, choose both. SVar:TrigCharm:DB$ Charm | CharmNum$ Count$Compare Y GE4.2.1 | Choices$ DBDealDamage,DBDig | AdditionalDescription$ . If there are four or more card types among cards in your graveyard, choose both.
SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target.
SVar:DBDig:DB$ Dig | DigNum$ 4 | RestRandomOrder$ True | NoReveal$ True | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. SVar:DBDig:DB$ Dig | DigNum$ 4 | RestRandomOrder$ True | NoReveal$ True | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order.
SVar:Y:Count$CardControllerTypes.Graveyard SVar:Y:Count$ValidGraveyard Card.YouOwn$CardTypes
SVar:PlayMain1:TRUE SVar:PlayMain1:TRUE
Oracle:Delirium — When Prophetic Titan enters the battlefield, choose one. If there are four or more card types among cards in your graveyard, choose both instead.\n• Prophetic Titan deals 4 damage to any target.\n• Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. Oracle:Delirium — When Prophetic Titan enters the battlefield, choose one. If there are four or more card types among cards in your graveyard, choose both instead.\n• Prophetic Titan deals 4 damage to any target.\n• Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order.

View File

@@ -6,6 +6,6 @@ A:AB$ LoseLife | Cost$ T Sac<X/Permanent> | Defined$ Player.Opponent | LifeAmoun
SVar:DBGainThree:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBDrawThree | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3 SVar:DBGainThree:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBDrawThree | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3
SVar:DBDrawThree:DB$ Draw | NumCards$ 3 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3 SVar:DBDrawThree:DB$ Draw | NumCards$ 3 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3
SVar:X:Count$ChosenNumber SVar:X:Count$ChosenNumber
SVar:Y:Count$CardTypes.Sacrificed SVar:Y:Sacrificed$CardTypes
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice
Oracle:{T}, Sacrifice up to three permanents: If there were three or more card types among the sacrificed permanents, each opponent loses 3 life, you gain 3 life, and you draw three cards. Oracle:{T}, Sacrifice up to three permanents: If there were three or more card types among the sacrificed permanents, each opponent loses 3 life, you gain 3 life, and you draw three cards.

View File

@@ -3,5 +3,5 @@ ManaCost:R
Types:Instant Types:Instant
A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or planeswalker. Delirium — CARDNAME deals 4 damage instead if there are four or more card types among cards in your graveyard. A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or planeswalker. Delirium — CARDNAME deals 4 damage instead if there are four or more card types among cards in your graveyard.
SVar:X:Count$Compare Y GE4.4.2 SVar:X:Count$Compare Y GE4.4.2
SVar:Y:Count$CardControllerTypes.Graveyard SVar:Y:Count$ValidGraveyard Card.YouOwn$CardTypes
Oracle:Unholy Heat deals 2 damage to target creature or planeswalker.\nDelirium — Unholy Heat deals 4 damage instead if there are four or more card types among cards in your graveyard. Oracle:Unholy Heat deals 2 damage to target creature or planeswalker.\nDelirium — Unholy Heat deals 4 damage instead if there are four or more card types among cards in your graveyard.

View File

@@ -2,7 +2,7 @@ Name:Scour the Laboratory
ManaCost:4 U U ManaCost:4 U U
Types:Instant Types:Instant
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | CheckSVar$ X | SVarCompare$ GE4 | Description$ Delirium — This spell costs {2} less to cast if there are four or more card types among cards in your graveyard. S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | CheckSVar$ X | SVarCompare$ GE4 | Description$ Delirium — This spell costs {2} less to cast if there are four or more card types among cards in your graveyard.
SVar:X:Count$CardControllerTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypes
A:SP$ Draw | Cost$ 4 U U | NumCards$ 3 | SpellDescription$ Draw three cards. A:SP$ Draw | Cost$ 4 U U | NumCards$ 3 | SpellDescription$ Draw three cards.
DeckHints:Ability$Graveyard|Discard DeckHints:Ability$Graveyard|Discard
DeckHas:Ability$Delirium DeckHas:Ability$Delirium

View File

@@ -7,7 +7,7 @@ SVar:TrigExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | R
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | Duration$ UntilTheEndOfYourNextTurn | StaticAbilities$ Play | SubAbility$ DBCleanup | ForgetOnMoved$ Exile SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | Duration$ UntilTheEndOfYourNextTurn | StaticAbilities$ Play | SubAbility$ DBCleanup | ForgetOnMoved$ Exile
SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play that card. SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play that card.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ CopySpellAbility | Cost$ T | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | MayChooseTarget$ True | CheckSVar$ Count$ThisTurnCast_Card.YouCtrl | SVarCompare$ GE3 | SpellDescription$ Copy target instant or sorcery spell you control. You may choose new targets for the copy. Activate only if you've cast three or more spells this turn. A:AB$ CopySpellAbility | Cost$ T | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | TargetType$ Spell | MayChooseTarget$ True | CheckSVar$ Count$ThisTurnCast_Card.YouCtrl | SVarCompare$ GE3 | SpellDescription$ Copy target instant or sorcery spell you control. You may choose new targets for the copy. Activate only if you've cast three or more spells this turn.
DeckNeeds:Type$Instant|Sorcery DeckNeeds:Type$Instant|Sorcery
DeckHints:Keyword$Flash DeckHints:Keyword$Flash
Oracle:Whenever you cast your second spell each turn, exile the top card of your library. Until the end of your next turn, you may play that card.\n{T}: Copy target instant or sorcery spell you control. You may choose new targets for the copy. Activate only if you've cast three or more spells this turn. Oracle:Whenever you cast your second spell each turn, exile the top card of your library. Until the end of your next turn, you may play that card.\n{T}: Copy target instant or sorcery spell you control. You may choose new targets for the copy. Activate only if you've cast three or more spells this turn.

View File

@@ -3,6 +3,6 @@ ManaCost:1 G
Types:Creature Lhurgoyf Types:Creature Lhurgoyf
PT:*/1+* PT:*/1+*
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
SVar:X:Count$CardTypes.ValidGraveyard Card SVar:X:Count$ValidGraveyard Card$CardTypes
SVar:Y:SVar$X/Plus.1 SVar:Y:SVar$X/Plus.1
Oracle:Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. Oracle:Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.

View File

@@ -3,5 +3,5 @@ ManaCost:R
Types:Instant Types:Instant
A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or planeswalker. Delirium — CARDNAME deals 6 damage instead if there are four or more card types among cards in your graveyard. A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or planeswalker. Delirium — CARDNAME deals 6 damage instead if there are four or more card types among cards in your graveyard.
SVar:X:Count$Compare Y GE4.6.2 SVar:X:Count$Compare Y GE4.6.2
SVar:Y:Count$CardControllerTypes.Graveyard SVar:Y:Count$ValidGraveyard Card.YouOwn$CardTypes
Oracle:Unholy Heat deals 2 damage to target creature or planeswalker.\nDelirium — Unholy Heat deals 6 damage instead if there are four or more card types among cards in your graveyard. Oracle:Unholy Heat deals 2 damage to target creature or planeswalker.\nDelirium — Unholy Heat deals 6 damage instead if there are four or more card types among cards in your graveyard.

View File

@@ -4,6 +4,6 @@ Types:Creature Ooze
Colors:green Colors:green
PT:*/*+1 PT:*/*+1
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1. S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.
SVar:X:Count$CardControllerTypes.Graveyard SVar:X:Count$ValidGraveyard Card.YouOwn$CardTypes
SVar:Y:Count$CardControllerTypes.Graveyard/Plus.1 SVar:Y:SVar$X/Plus.1
Oracle:This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1. Oracle:This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.