Merge branch 'Card-Forge:master' into master

This commit is contained in:
Ayora29
2024-09-27 19:49:28 +02:00
committed by GitHub
38 changed files with 157 additions and 45 deletions

View File

@@ -1398,7 +1398,7 @@ public abstract class GameState {
c.setTurnInZone(turn);
} else if (info.equals("IsToken")) {
c.setGamePieceType(GamePieceType.TOKEN);
} else if (info.equals("ClassLevel:")) {
} else if (info.startsWith("ClassLevel:")) {
c.setClassLevel(Integer.parseInt(info.substring(info.indexOf(':') + 1)));
}
}

View File

@@ -258,6 +258,10 @@ public class CopyPermanentEffect extends TokenEffectBase {
if (sa.hasParam("ForEach")) {
for (Player p : AbilityUtils.getDefinedPlayers(host, sa.getParam("ForEach"), sa)) {
if (sa.hasParam("OptionalForEach") && !activator.getController().confirmAction(sa, null,
Localizer.getInstance().getMessage("lblCopyPermanentConfirm") + " (" + p + ")", null)) {
continue;
}
Card proto = getProtoType(sa, c, controller);
proto.addRemembered(p);
tokenTable.put(controller, proto, numCopies);

View File

@@ -123,7 +123,6 @@ public class DigEffect extends SpellAbilityEffect {
int destZone1ChangeNum = 1;
String changeValid = sa.getParamOrDefault("ChangeValid", "");
final boolean anyNumber = sa.hasParam("AnyNumber");
final boolean optional = sa.hasParam("Optional");
final boolean skipReorder = sa.hasParam("SkipReorder");
@@ -300,6 +299,17 @@ public class DigEffect extends SpellAbilityEffect {
if (!movedCards.isEmpty()) {
game.getAction().reveal(movedCards, chooser, true, Localizer.getInstance().getMessage("lblPlayerPickedChosen", chooser.getName(), ""));
}
} else if (sa.hasParam("WithDifferentPowers")) {
movedCards = new CardCollection();
while (!valid.isEmpty() && (anyNumber || movedCards.size() < destZone1ChangeNum)) {
String title = Localizer.getInstance().getMessage(movedCards.isEmpty()?"lblChooseCreature":"lblChooseCreatureWithDiffPower");
Card choice = p.getController().chooseSingleEntityForEffect(valid, sa, title, true, null);
if (choice == null) {
break;
}
movedCards.add(choice);
valid = CardLists.getValidCards(valid, "Card.powerNE" + choice.getNetPower(), activator, host, sa);
}
} else {
String prompt;

View File

@@ -7206,6 +7206,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
setRegeneratedThisTurn(0);
resetShieldCount();
setBecameTargetThisTurn(false);
setValiant(false);
setFoughtThisTurn(false);
turnedFaceUpThisTurn = false;
clearMustBlockCards();

View File

@@ -1553,7 +1553,7 @@ public class CardFactoryUtil {
final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True"
+ " | TriggerDescription$ Myriad (" + inst.getReminderText() + ")";
final String copyStr = "DB$ CopyPermanent | Defined$ Self | TokenTapped$ True | Optional$ True | TokenAttacking$ RememberedPlayer & Valid Planeswalker.ControlledBy Remembered"
final String copyStr = "DB$ CopyPermanent | Defined$ Self | TokenTapped$ True | OptionalForEach$ True | TokenAttacking$ RememberedPlayer & Valid Planeswalker.ControlledBy Remembered"
+ "| ForEach$ OppNonDefendingPlayer | AtEOT$ ExileCombat | CleanupForEach$ True";
final SpellAbility copySA = AbilityFactory.getAbility(copyStr, card);

View File

@@ -292,17 +292,6 @@ public class CardProperty {
if (!source.isRemembered(p)) {
return false;
}
} else if (property.startsWith("nonRememberedPlayerCtrl")) {
if (!source.hasRemembered()) {
final Card newCard = game.getCardState(source);
if (newCard.isRemembered(controller)) {
return false;
}
}
if (source.isRemembered(controller)) {
return false;
}
} else if (property.equals("targetedBy")) {
if (!(spellAbility instanceof SpellAbility)) {
return false;

View File

@@ -307,7 +307,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount;
}
// nothing more left in otherSubtract
return;
break;
}
}
}
@@ -327,7 +327,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount;
}
// nothing more left in otherSubtract
return;
break;
}
}
}
@@ -347,7 +347,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount;
}
// nothing more left in otherSubtract
return;
break;
}
}
}
@@ -367,7 +367,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount;
}
// nothing more left in otherSubtract
return;
break;
}
}
}
@@ -389,7 +389,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount;
}
// nothing more left in otherSubtract
return;
break;
}
} else if (sc.xCount > 0) { // X part that can only be paid by specific color
if (otherSubtract >= sc.xCount) {
@@ -403,7 +403,7 @@ public class ManaCostBeingPaid {
sc.totalCount -= otherSubtract;
sc.xCount -= otherSubtract;
// nothing more left in otherSubtract
return;
break;
}
}
}

View File

@@ -4,6 +4,6 @@ Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ ChooseChampion | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, target opponent chooses a player. Until your next turn, only you and the chosen player can cast spells and attack with creatures.
SVar:ChooseChampion:DB$ ChoosePlayer | ValidTgts$ Opponent | Choices$ Player | AILogic$ BestAllyBoardPosition | SubAbility$ PrepChamps
SVar:PrepChamps:DB$ Effect | RememberObjects$ ChosenPlayer,You | Name$ Choose Your Champion Scheme | Duration$ UntilYourNextTurn | StaticAbilities$ RestrictAttackers,RestrictCasting
SVar:RestrictAttackers:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.nonRememberedPlayerCtrl | Description$ Until your next turn, only you and the chosen player can attack with creatures.
SVar:RestrictAttackers:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.!RememberedPlayerCtrl | Description$ Until your next turn, only you and the chosen player can attack with creatures.
SVar:RestrictCasting:Mode$ CantBeCast | ValidCard$ Card | Caster$ Player.IsNotRemembered | EffectZone$ Command | Description$ Until your next turn, only you and the chosen player can cast spells.
Oracle:When you set this scheme in motion, target opponent chooses a player. Until your next turn, only you and the chosen player can cast spells and attack with creatures.

View File

@@ -1,7 +1,7 @@
Name:Doomsday
ManaCost:B B B
Types:Sorcery
A:SP$ ChangeZone | Origin$ Graveyard,Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 5 | SubAbility$ DBChangeZone | RememberChanged$ True | Mandatory$ True | SpellDescription$ Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.
A:SP$ ChangeZone | Origin$ Graveyard,Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 5 | Shuffle$ False | SubAbility$ DBChangeZone | RememberChanged$ True | Mandatory$ True | SpellDescription$ Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.
SVar:DBChangeZone:DB$ ChangeZoneAll | Defined$ You | Origin$ Graveyard,Library | Destination$ Exile | ChangeType$ Card.IsNotRemembered | SubAbility$ DBDig
SVar:DBDig:DB$ RearrangeTopOfLibrary | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ Y | SubAbility$ DBCleanup

View File

@@ -11,5 +11,5 @@ K:Visit:TrigPump
SVar:TrigPump:DB$ Effect | StaticAbilities$ Pump | ValidTgts$ Creature | Triggers$ ExileSelf | RememberObjects$ Targeted | SpellDescription$ Target creature gains flying until end of turn, or until any player rolls a 1, whichever comes first.
SVar:Pump:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Flying | Description$ This creature gains flying until end of turn, or until any player rolls a 1.
SVar:ExileSelf:Mode$ RolledDie | Execute$ TrigRemove | ValidResult$ EQ1 | Static$ True
SVar:TrigRemove:DB$ ChangeZone | Origin$ Command | Defined$ Self | Destination$ Exiled
SVar:TrigRemove:DB$ ChangeZone | Origin$ Command | Defined$ Self | Destination$ Exile
Oracle:Visit — Target creature gains flying until end of turn, or until any player rolls a 1, whichever comes first.

View File

@@ -2,7 +2,7 @@ Name:Fortunate Few
ManaCost:3 W W
Types:Sorcery
A:SP$ RepeatEach | StartingWithActivator$ True | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBDestroyAll | SpellDescription$ Choose a nonland permanent you don't control, then each other player chooses a nonland permanent they don't control that hasn't been chosen this way. Destroy all other nonland permanents.
SVar:DBChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Permanent.nonLand+nonRememberedPlayerCtrl+IsNotRemembered | RememberChosen$ True | ChoiceZone$ Battlefield | AILogic$ WorstCard
SVar:DBChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Permanent.nonLand+!RememberedPlayerCtrl+IsNotRemembered | RememberChosen$ True | ChoiceZone$ Battlefield | AILogic$ WorstCard
SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Permanent.nonLand+IsNotRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Choose a nonland permanent you don't control, then each other player chooses a nonland permanent they don't control that hasn't been chosen this way. Destroy all other nonland permanents.

View File

@@ -2,14 +2,11 @@ Name:Keen Duelist
ManaCost:1 B
Types:Creature Human Wizard
PT:2/2
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigRepeatEach | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you and target opponent each reveal the top card of your library. You each lose life equal to the mana value of the card revealed by the other player. You each put the card you revealed into your hand.
SVar:TrigRepeatEach:DB$ RepeatEach | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RepeatPlayers$ TargetedAndYou | RepeatSubAbility$ DBReveal | SubAbility$ DBRepeatEach
SVar:DBReveal:DB$ Dig | Defined$ Player.IsRemembered | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Library | RememberChanged$ True
SVar:DBRepeatEach:DB$ RepeatEach | RepeatPlayers$ TargetedAndYou | RepeatSubAbility$ DBImprint | SubAbility$ DBChangeZoneAll
SVar:DBImprint:DB$ Pump | ImprintCards$ ValidAll Card.IsRemembered+nonRememberedPlayerCtrl | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X | SubAbility$ DBClearImprint
SVar:DBClearImprint:DB$ Cleanup | ClearImprinted$ True
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigReveal | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you and target opponent each reveal the top card of your library. You each lose life equal to the mana value of the card revealed by the other player. You each put the card you revealed into your hand.
SVar:TrigReveal:DB$ PeekAndReveal | NoPeek$ True | ValidTgts$ Opponent | Defined$ TargetedAndYou | RememberRevealed$ True | SubAbility$ DBRepeatEach
SVar:DBRepeatEach:DB$ RepeatEach | RepeatPlayers$ TargetedAndYou | RepeatSubAbility$ DBLoseLife | SubAbility$ DBChangeZoneAll
SVar:DBLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X
SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Hand | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Imprinted$CardManaCost
SVar:X:Count$ValidLibrary Card.IsRemembered+!RememberedPlayerCtrl$CardManaCost
Oracle:At the beginning of your upkeep, you and target opponent each reveal the top card of your library. You each lose life equal to the mana value of the card revealed by the other player. You each put the card you revealed into your hand.

View File

@@ -6,8 +6,9 @@ T:Mode$ SpellCast | ValidCard$ Instant.wasCastFromYourHandByYou,Sorcery.wasCastF
SVar:TrigOpenAttraction:DB$ OpenAttraction
A:AB$ ChangeZone | Cost$ X T | ValidTgts$ Instant.cmcEQX+YouCtrl,Sorcery.cmcEQX+YouCtrl | Origin$ Graveyard | Imprint$ True | Destination$ Exile | SubAbility$ DBPutCounter | SpellDescription$ Exile target instant or sorcery card with mana value X from your graveyard and choose an Attraction you control that doesn't have a midway counter on it. Put a midway counter on it. For as long as that Attraction is on the battlefield, whenever you visit it, copy the exiled card. You may cast the copy without paying its mana cost.
SVar:DBPutCounter:DB$ PutCounter | Choices$ Attraction.YouCtrl+counters_EQ0_MIDWAY | RememberPut$ True | ChoicePrompt$ Select target attraction you control that doesn't have a midway counter on it | CounterType$ MIDWAY | CounterNum$ 1 | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | Triggers$ TrigVisit,RemoveEffect | RememberObjects$ Remembered | ImprintCards$ Imprinted | Duration$ Permanent
SVar:TrigVisit:Mode$ VisitAttraction | ValidCard$ Attraction.IsRemembered | Execute$ TrigCopy | TriggerDescription$ For as long as that Attraction is on the battlefield, whenever you visit it, copy the exiled card. You may cast the copy without paying its mana cost.
SVar:DBEffect:DB$ Effect | Triggers$ TrigVisit,RemoveEffect | RememberObjects$ Remembered | ImprintCards$ Imprinted | Duration$ Permanent | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
SVar:TrigVisit:Mode$ VisitAttraction | ValidPlayer$ You | ValidCard$ Attraction.IsRemembered | Execute$ TrigCopy | TriggerDescription$ For as long as that Attraction is on the battlefield, whenever you visit it, copy the exiled card. You may cast the copy without paying its mana cost.
SVar:TrigCopy:DB$ Play | Valid$ Card.IsImprinted | ValidSA$ Spell | ValidZone$ Exile | WithoutManaCost$ True | Amount$ All | Optional$ True | CopyCard$ True
SVar:RemoveEffect:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsRemembered | Static$ True | Execute$ ExileEffect
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile

View File

@@ -2,7 +2,7 @@ Name:Saw in Half
ManaCost:2 B
Types:Instant
A:SP$ Destroy | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBCopy | RememberLKI$ True | SpellDescription$ Destroy target creature.
SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | NumCopies$ 2 | Controller$ TargetedController | SetPower$ dX | SetToughness$ dY | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ If that creature dies this way, its controller creates two tokens that are copies of that creature, except their base power is half that creature's power and their base toughness is half that creature's toughness. Round up each time.
SVar:DBCopy:DB$ CopyPermanent | Defined$ RememberedLKI | NumCopies$ 2 | Controller$ TargetedController | SetPower$ dX | SetToughness$ dY | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ If that creature dies this way, its controller creates two tokens that are copies of that creature, except their base power is half that creature's power and their base toughness is half that creature's toughness. Round up each time.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount
SVar:dX:RememberedLKI$CardPower/HalfUp

View File

@@ -1,7 +1,7 @@
Name:A Premonition of Your Demise
ManaCost:no cost
Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, reveal the top two cards of your library and put them into your hand. When you reveal one or more nonland cards this way, this scheme deals damage equal to their total mana value to any target.
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DBDig | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, reveal the top two cards of your library and put them into your hand. When you reveal one or more nonland cards this way, this scheme deals damage equal to their total mana value to any target.
SVar:DBDig:DB$ Dig | DigNum$ 2 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Hand | RememberChanged$ True | SubAbility$ DBImmediateTrigger
SVar:DBImmediateTrigger:DB$ ImmediateTrigger | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | Execute$ TrigDamage | SubAbility$ DBCleanup | SpellDescription$ When you reveal one or more nonland cards this way, this scheme deals damage equal to their total mana value to any target.
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ X

View File

@@ -0,0 +1,7 @@
Name:Beastie Beatdown
ManaCost:R G
Types:Sorcery
A:SP$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | Condition$ Delirium | AILogic$ Fight | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBDealDamage | SpellDescription$ Choose target creature you control and target creature an opponent controls. Delirium — If there are four or more card types among cards in your graveyard, put two +1/+1 counters on the creature you control. The creature you control deals damage equal to its power to the creature an opponent controls.
SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature an opponent controls | NumDmg$ X | DamageSource$ ParentTarget
SVar:X:ParentTargeted$CardPower
Oracle:Choose target creature you control and target creature an opponent controls.\nDelirium — If there are four or more card types among cards in your graveyard, put two +1/+1 counters on the creature you control.\nThe creature you control deals damage equal to its power to the creature an opponent controls.

View File

@@ -0,0 +1,8 @@
Name:Cackling Slasher
ManaCost:3 B
Types:Creature Human Assassin
PT:3/3
K:Deathtouch
K:etbCounter:P1P1:1:CheckSVar$ Count$Morbid.1.0:CARDNAME enters with a +1/+1 counter on it if a creature died this turn.
DeckHas:Ability$Counters
Oracle:Deathtouch\nCackling Slasher enters with a +1/+1 counter on it if a creature died this turn.

View File

@@ -0,0 +1,10 @@
Name:Dissection Tools
ManaCost:5
Types:Artifact Equipment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDread | TriggerDescription$ When CARDNAME enters, manifest dread, then attach CARDNAME to that creature.
SVar:TrigDread:DB$ ManifestDread | RememberManifested$ True | SubAbility$ DBAttach
SVar:DBAttach:DB$ Attach | Defined$ Remembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Deathtouch & Lifelink | Description$ Equipped creature has +2/+2 and has deathtouch and lifelink.
K:Equip:Sac<1/Creature>
Oracle:When Dissection Tools enters, manifest dread, then attach Dissection Tools to that creature.\nEquipped creature has +2/+2 and has deathtouch and lifelink.\nEquip—Sacrifice a creature.

View File

@@ -3,5 +3,5 @@ ManaCost:U
Types:Instant
A:SP$ Effect | ValidTgts$ Creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | AILogic$ Pump | StackDescription$ {c:Targeted} can't be blocked this turn. | SubAbility$ DBDraw | SpellDescription$ Target creature can't be blocked this turn. Draw a card.
SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn.
SVar:TrigDraw:DB$ Draw
Oracle:Target creature can't be blocked this turn.\nDraw a card.
SVar:DBDraw:DB$ Draw
Oracle:Target creature can't be blocked this turn.\nDraw a card.

View File

@@ -0,0 +1,10 @@
Name:Entity Tracker
ManaCost:2 U
Types:Creature Human Scout
PT:2/3
K:Flash
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Eerie — Whenever an enchantment you control enters and whenever you fully unlock a Room, draw a card.
T:Mode$ FullyUnlock | ValidCard$ Card.Room | ValidPlayer$ You | Secondary$ True | Execute$ TrigDraw | TriggerDescription$ Eerie — Whenever an enchantment you control enters and whenever you fully unlock a Room, draw a card.
SVar:TrigDraw:DB$ Draw
DeckNeeds:Type$Enchantment
Oracle:Flash\nEerie — Whenever an enchantment you control enters and whenever you fully unlock a Room, draw a card.

View File

@@ -2,6 +2,6 @@ Name:Friendly Teddy
ManaCost:2
Types:Artifact Creature Bear Toy
PT:2/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters, each player draws a card.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME dies, each player draws a card.
SVar:TrigDraw:DB$ Draw | Defined$ Player
Oracle:When Friendly Teddy enters, each player draws a card.
Oracle:When Friendly Teddy dies, each player draws a card.

View File

@@ -0,0 +1,7 @@
Name:Get Out
ManaCost:U U
Types:Instant
A:SP$ Charm | Choices$ DBCounter,DBChangeZone
SVar:DBCounter:DB$ Counter | TargetType$ Spell | ValidTgts$ Creature,Enchantment | TgtPrompt$ Counter target creature or enchantment spell | SpellDescription$ Counter target creature or enchantment spell.
SVar:DBChangeZone:DB$ ChangeZone | ValidTgts$ Creature.YouOwn,Enchantment.YouOwn | TgtPrompt$ Select target creature or enchantment you own | TargetMin$ 1 | TargetMax$ 2 | TgtZone$ Battlefield | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return one or two target creatures and/or enchantments you own to your hand.
Oracle:Choose one —\n• Counter target creature or enchantment spell.\n• Return one or two target creatures and/or enchantments you own to your hand.

View File

@@ -0,0 +1,7 @@
Name:Living Phone
ManaCost:2 W
Types:Artifact Creature Toy
PT:2/1
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME dies, look at the top five cards of your library. You may reveal a creature card with power 2 or less from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.powerLE2 | RestRandomOrder$ True | ForceRevealToController$ True
Oracle:When Living Phone dies, look at the top five cards of your library. You may reveal a creature card with power 2 or less from among them and put it into your hand. Put the rest on the bottom of your library in a random order.

View File

@@ -0,0 +1,7 @@
Name:Monstrous Emergence
ManaCost:1 G
Types:Sorcery
A:SP$ DealDamage | Cost$ 1 G RevealOrChoose<1/Creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | SpellDescription$ CARDNAME deals damage equal to the power of the creature you chose or the card you revealed to target creature.
SVar:X:Revealed$CardPower
AI:RemoveDeck:All
Oracle:As an additional cost to cast this spell, choose a creature you control or reveal a creature card from your hand.\nMonstrous Emergence deals damage equal to the power of the creature you chose or the card you revealed to target creature.

View File

@@ -0,0 +1,8 @@
Name:Rip, Spawn Hunter
Types:Legendary Creature Human Survivor
ManaCost:2 G W
PT:4/4
T:Mode$ Phase | Phase$ Main2 | ValidPlayer$ You | PresentDefined$ Self | IsPresent$ Card.tapped | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Survival — At the beginning of your second main phase, if CARDNAME is tapped, reveal the top X cards of your library, where X is its power. Put any number of creature and/or Vehicle cards with different powers from among them into your hand. Put the rest on the bottom of your library in a random order.
SVar:TrigDig:DB$ Dig | DigNum$ X | AnyNumber$ True | WithDifferentPowers$ True | ChangeValid$ Creature,Vehicle | RestRandomOrder$ True | ForceRevealToController$ True
SVar:X:Count$CardPower
Oracle:Survival — At the beginning of your second main phase, if Rip, Spawn Hunter is tapped, reveal the top X cards of your library, where X is its power. Put any number of creature and/or Vehicle cards with different powers from among them into your hand. Put the rest on the bottom of your library in a random order.

View File

@@ -0,0 +1,7 @@
Name:Ripchain Razorkin
ManaCost:3 R
Types:Creature Human Berserker
PT:5/3
K:Reach
A:AB$ Draw | Cost$ 2 R Sac<1/Land> | SpellDescription$ Draw a card.
Oracle:Reach\n{2}{R}, Sacrifice a land: Draw a card.

View File

@@ -0,0 +1,12 @@
Name:Unidentified Hovership
ManaCost:1 W W
Types:Artifact Vehicle
PT:2/2
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters, exile up to one target creature with toughness 5 or less.
SVar:TrigChangeZone:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.toughnessLE5 | TgtPrompt$ Select target creature with toughness 5 or less. | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigDread | TriggerDescription$ When CARDNAME leaves the battlefield, the exiled card's owner manifests dread.
SVar:TrigDread:DB$ ManifestDread | DefinedPlayer$ RememberedOwner | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
K:Crew:1
Oracle:Flying\nWhen Unidentified Hovership enters, exile up to one target creature with toughness 5 or less.\nWhen Unidentified Hovership leaves the battlefield, the exiled card's owner manifests dread.\nCrew 1

View File

@@ -0,0 +1,6 @@
Name:Unnerving Grasp
ManaCost:2 U
Types:Sorcery
A:SP$ ChangeZone | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Hand | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBDread | SpellDescription$ Return up to one target nonland permanent to its owner's hand. Manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.)
SVar:DBDread:DB$ ManifestDread
Oracle:Return up to one target nonland permanent to its owner's hand. Manifest dread. (Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.)

View File

@@ -5,7 +5,7 @@ PT:9/9
K:Flying
K:Lifelink
K:Ward:Sac<3/Permanent.nonLand/nonland permanent>
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.nonToken+YouDontCtrl+OppOwn | ReplaceWith$ Exile | Description$ If a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidLKI$ Card.nonToken+YouDontCtrl+OppOwn | ReplaceWith$ Exile | Description$ If a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.
SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
S:Mode$ Continuous | Condition$ PlayerTurn | MayPlay$ True | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | MayPlayAltManaCost$ PayLife<ConvertedManaCost> | Description$ During your turn, you may play cards exiled with NICKNAME. If you cast a spell this way, pay life equal to its mana value rather than pay its mana cost.
Oracle:Flying, lifelink\nWard—Sacrifice three nonland permanents.\nIf a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.\nDuring your turn, you may play cards exiled with Valgavoth. If you cast a spell this way, pay life equal to its mana value rather than pay its mana cost.

View File

@@ -1,6 +1,6 @@
Name:Valgavoth's Onslaught
ManaCost:X X G
Types:Instant
Types:Sorcery
A:SP$ ManifestDread | Amount$ X | RememberManifested$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ RememberedCard | CounterType$ P1P1 | CounterNum$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True

View File

@@ -0,0 +1,6 @@
Name:Winter's Intervention
ManaCost:1 B
Types:Instant
A:SP$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to target creature. You gain 2 life.
SVar:DBGainLife:DB$ GainLife | LifeAmount$ 2
Oracle:Winter's Intervention deals 2 damage to target creature. You gain 2 life.

View File

@@ -3,4 +3,4 @@ Name:Commander
Type:Casual
Subtype:Commander
Order:137
Banned:Adriana's Valor; Advantageous Proclamation; Ashnod's Coupon; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Cross; Double Deal; Double Dip; Double Play; Double Stroke; Double Take; Echoing Boon; Emissary's Ploy; Enter the Dungeon; Flash; Hired Heist; Hold the Perimeter; Hullbreacher; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Lutri, the Spellchaser; Magical Hacker; Mox Lotus; Muzzio's Preparations; Natural Unity; Once More with Feeling; Power Play; R&D's Secret Lair; Richard Garfield, Ph.D.; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Staying Power; Summoner's Bond; Time Machine; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Ancestral Recall; Balance; Biorhythm; Black Lotus; Braids, Cabal Minion; Chaos Orb; Coalition Victory; Channel; Emrakul, the Aeons Torn; Erayo, Soratami Ascendant; Falling Star; Fastbond; Gifts Ungiven; Griselbrand; Iona, Shield of Emeria; Karakas; Leovold, Emissary of Trest; Library of Alexandria; Limited Resources; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Panoptic Mirror; Paradox Engine; Primeval Titan; Prophet of Kruphix; Recurring Nightmare; Rofellos, Llanowar Emissary; Shahrazad; Sundering Titan; Sway of the Stars; Sylvan Primordial; Time Vault; Time Walk; Tinker; Tolarian Academy; Trade Secrets; Upheaval; Yawgmoth's Bargain; Cleanse; Crusade; Imprison; Invoke Prejudice; Jihad; Pradesh Gypsies; Stone-Throwing Devils; Golos, Tireless Pilgrim
Banned:Adriana's Valor; Advantageous Proclamation; Ashnod's Coupon; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Dockside Extortionist; Double Cross; Double Deal; Double Dip; Double Play; Double Stroke; Double Take; Echoing Boon; Emissary's Ploy; Enter the Dungeon; Flash; Hired Heist; Hold the Perimeter; Hullbreacher; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Jeweled Lotus; Lutri, the Spellchaser; Magical Hacker; Mana Crypt; Mox Lotus; Muzzio's Preparations; Nadu, Winged Wisdom; Natural Unity; Once More with Feeling; Power Play; R&D's Secret Lair; Richard Garfield, Ph.D.; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Staying Power; Summoner's Bond; Time Machine; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Ancestral Recall; Balance; Biorhythm; Black Lotus; Braids, Cabal Minion; Chaos Orb; Coalition Victory; Channel; Emrakul, the Aeons Torn; Erayo, Soratami Ascendant; Falling Star; Fastbond; Gifts Ungiven; Griselbrand; Iona, Shield of Emeria; Karakas; Leovold, Emissary of Trest; Library of Alexandria; Limited Resources; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Panoptic Mirror; Paradox Engine; Primeval Titan; Prophet of Kruphix; Recurring Nightmare; Rofellos, Llanowar Emissary; Shahrazad; Sundering Titan; Sway of the Stars; Sylvan Primordial; Time Vault; Time Walk; Tinker; Tolarian Academy; Trade Secrets; Upheaval; Yawgmoth's Bargain; Cleanse; Crusade; Imprison; Invoke Prejudice; Jihad; Pradesh Gypsies; Stone-Throwing Devils; Golos, Tireless Pilgrim

View File

@@ -0,0 +1,16 @@
[metadata]
Name:Possibility Storm - Bloomburrow #04
URL:https://i2.wp.com/www.possibilitystorm.com/wp-content/uploads/2024/09/latest-scaled.jpg?ssl=1
Goal:Win
Turns:1
Difficulty:Mythic
Description:Win this turn. Ensure your solution satisfies all possible blocking decisions. Good luck!
[state]
turn=1
activeplayer=p0
activephase=MAIN1
p0life=20
p0hand=Ornery Tumblewagg;Oko, the Ringleader;Season of Gathering;Shivan Devastator;Ferocification
p0battlefield=Innkeeper's Talent|ClassLevel:2;Rampaging Geoderm;Kami of Whispered Hopes|Counters:P1P1=2;Island;Island;Mountain;Mountain;Forest;Forest
p1life=17
p1battlefield=Fear of Immobility;Shield-Wall Sentinel

View File

@@ -445,8 +445,7 @@ public final class CardScriptParser {
"YouDontCtrl", "OppCtrl", "ChosenCtrl", "DefenderCtrl",
"DefenderCtrlForRemembered", "DefendingPlayerCtrl",
"EnchantedPlayerCtrl", "EnchantedControllerCtrl",
"RememberedPlayer", "RememberedPlayerCtrl",
"nonRememberedPlayerCtrl", "TargetedPlayerCtrl",
"RememberedPlayer", "RememberedPlayerCtrl", "TargetedPlayerCtrl",
"TargetedControllerCtrl", "ActivePlayerCtrl",
"YouOwn", "YouDontOwn", "OppOwn",
"TargetedPlayerOwn", "OwnerDoesntControl", "Other", "Self",