Merge branch 'master' into master2

This commit is contained in:
Anthony Calosa
2024-10-10 19:34:39 +08:00
41 changed files with 399 additions and 16 deletions

View File

@@ -779,7 +779,6 @@ public final class CardType implements Comparable<CardType>, CardTypeView {
if (ctOther == null) { if (ctOther == null) {
return false; return false;
} }
for (final CoreType type : getCoreTypes()) { for (final CoreType type : getCoreTypes()) {
if (ctOther.hasType(type)) { if (ctOther.hasType(type)) {
return true; return true;
@@ -788,6 +787,23 @@ public final class CardType implements Comparable<CardType>, CardTypeView {
return false; return false;
} }
public boolean sharesAllCardTypesWith(final CardTypeView ctOther) {
if (ctOther == null) {
return false;
}
for (final CoreType type : getCoreTypes()) {
if (!ctOther.hasType(type)) {
return false;
}
}
for (final CoreType type : ctOther.getCoreTypes()) {
if (!this.hasType(type)) {
return false;
}
}
return true;
}
public boolean sharesSubtypeWith(final CardTypeView ctOther) { public boolean sharesSubtypeWith(final CardTypeView ctOther) {
if (ctOther == null) { if (ctOther == null) {
return false; return false;

View File

@@ -30,6 +30,7 @@ public interface CardTypeView extends Iterable<String>, Serializable {
public boolean sharesLandTypeWith(final CardTypeView ctOther); public boolean sharesLandTypeWith(final CardTypeView ctOther);
public boolean sharesPermanentTypeWith(final CardTypeView ctOther); public boolean sharesPermanentTypeWith(final CardTypeView ctOther);
public boolean sharesCardTypeWith(final CardTypeView ctOther); public boolean sharesCardTypeWith(final CardTypeView ctOther);
public boolean sharesAllCardTypesWith(final CardTypeView ctOther);
boolean isPermanent(); boolean isPermanent();
boolean isCreature(); boolean isCreature();

View File

@@ -1870,6 +1870,8 @@ public class GameAction {
public final CardCollection sacrifice(final Iterable<Card> list, final SpellAbility source, final boolean effect, Map<AbilityKey, Object> params) { public final CardCollection sacrifice(final Iterable<Card> list, final SpellAbility source, final boolean effect, Map<AbilityKey, Object> params) {
Multimap<Player, Card> lki = MultimapBuilder.hashKeys().arrayListValues().build(); Multimap<Player, Card> lki = MultimapBuilder.hashKeys().arrayListValues().build();
final boolean showRevealDialog = source != null && source.hasParam("ShowSacrificedCards");
CardCollection result = new CardCollection(); CardCollection result = new CardCollection();
for (Card c : list) { for (Card c : list) {
if (c == null) { if (c == null) {
@@ -1890,6 +1892,10 @@ public class GameAction {
if (changed != null) { if (changed != null) {
result.add(changed); result.add(changed);
} }
if (showRevealDialog) {
final String message = Localizer.getInstance().getMessage("lblSacrifice");
game.getAction().reveal(result, ZoneType.Graveyard, c.getOwner(), false, message, false);
}
} }
for (Map.Entry<Player, Collection<Card>> e : lki.asMap().entrySet()) { for (Map.Entry<Player, Collection<Card>> e : lki.asMap().entrySet()) {
// Run triggers // Run triggers

View File

@@ -1296,7 +1296,7 @@ public class AbilityUtils {
} }
} }
} else if (defined.startsWith("ValidStack")) { } else if (defined.startsWith("ValidStack")) {
String valid = changedDef.split(" ", 2)[1]; String[] valid = changedDef.split(" ", 2)[1].split(",");
for (SpellAbilityStackInstance stackInstance : game.getStack()) { for (SpellAbilityStackInstance stackInstance : game.getStack()) {
SpellAbility instanceSA = stackInstance.getSpellAbility(); SpellAbility instanceSA = stackInstance.getSpellAbility();
if (instanceSA != null && instanceSA.isValid(valid, player, card, sa)) { if (instanceSA != null && instanceSA.isValid(valid, player, card, sa)) {
@@ -2304,6 +2304,10 @@ public class AbilityUtils {
return doXMath(player.getNumDrawnThisTurn(), expr, c, ctb); return doXMath(player.getNumDrawnThisTurn(), expr, c, ctb);
} }
if (sq[0].equals("YouDrewLastTurn")) {
return doXMath(player.getNumDrawnLastTurn(), expr, c, ctb);
}
if (sq[0].equals("YouRollThisTurn")) { if (sq[0].equals("YouRollThisTurn")) {
return doXMath(player.getNumRollsThisTurn(), expr, c, ctb); return doXMath(player.getNumRollsThisTurn(), expr, c, ctb);
} }

View File

@@ -6088,6 +6088,13 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
return getType().sharesCardTypeWith(c1.getType()); return getType().sharesCardTypeWith(c1.getType());
} }
public final boolean sharesAllCardTypesWith(final Card c1) {
if (c1 == null) {
return false;
}
return getType().sharesAllCardTypesWith(c1.getType());
}
public final boolean sharesControllerWith(final Card c1) { public final boolean sharesControllerWith(final Card c1) {
return c1 != null && getController().equals(c1.getController()); return c1 != null && getController().equals(c1.getController());
} }

View File

@@ -114,6 +114,10 @@ public final class CardPredicates {
return c -> c.sharesCardTypeWith(card); return c -> c.sharesCardTypeWith(card);
} }
public static Predicate<Card> sharesAllCardTypesWith(final Card card) {
return c -> c.sharesAllCardTypesWith(card);
}
public static Predicate<Card> sharesCreatureTypeWith(final Card card) { public static Predicate<Card> sharesCreatureTypeWith(final Card card) {
return c -> c.sharesCreatureTypeWith(card); return c -> c.sharesCreatureTypeWith(card);
} }

View File

@@ -35,10 +35,7 @@ import forge.util.collect.FCollectionView;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import java.util.Collections; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Set;
public class CardProperty { public class CardProperty {
@@ -847,6 +844,11 @@ public class CardProperty {
} }
} }
} }
} else if (property.startsWith("sharesAllCardTypesWithOther")) {
final String restriction = property.split("sharesAllCardTypesWithOther ")[1];
CardCollection list = AbilityUtils.getDefinedCards(source, restriction, spellAbility);
list.remove(card);
return Iterables.any(list, CardPredicates.sharesAllCardTypesWith(card));
} else if (property.startsWith("sharesLandTypeWith")) { } else if (property.startsWith("sharesLandTypeWith")) {
final String restriction = property.split("sharesLandTypeWith ")[1]; final String restriction = property.split("sharesLandTypeWith ")[1];
if (!Iterables.any(AbilityUtils.getDefinedCards(source, restriction, spellAbility), CardPredicates.sharesLandTypeWith(card))) { if (!Iterables.any(AbilityUtils.getDefinedCards(source, restriction, spellAbility), CardPredicates.sharesLandTypeWith(card))) {
@@ -1503,7 +1505,7 @@ public class CardProperty {
} }
} else if (property.startsWith("power") || property.startsWith("toughness") || property.startsWith("cmc") } else if (property.startsWith("power") || property.startsWith("toughness") || property.startsWith("cmc")
|| property.startsWith("totalPT") || property.startsWith("numColors") || property.startsWith("totalPT") || property.startsWith("numColors")
|| property.startsWith("basePower") || property.startsWith("baseToughness")) { || property.startsWith("basePower") || property.startsWith("baseToughness") || property.startsWith("numTypes")) {
int x; int x;
int y = 0; int y = 0;
String rhs = ""; String rhs = "";
@@ -1529,6 +1531,9 @@ public class CardProperty {
} else if (property.startsWith("numColors")) { } else if (property.startsWith("numColors")) {
rhs = property.substring(11); rhs = property.substring(11);
y = card.getColor().countColors(); y = card.getColor().countColors();
} else if (property.startsWith("numTypes")) {
rhs = property.substring(10);
y = Iterables.size(card.getType().getCoreTypes());
} }
x = AbilityUtils.calculateAmount(source, rhs, spellAbility); x = AbilityUtils.calculateAmount(source, rhs, spellAbility);

View File

@@ -105,6 +105,7 @@ public class Player extends GameEntity implements Comparable<Player> {
private int numPowerSurgeLands; private int numPowerSurgeLands;
private int numLibrarySearchedOwn; //The number of times this player has searched his library private int numLibrarySearchedOwn; //The number of times this player has searched his library
private int numDrawnThisTurn; private int numDrawnThisTurn;
private int numDrawnLastTurn;
private int numDrawnThisDrawStep; private int numDrawnThisDrawStep;
private int numRollsThisTurn; private int numRollsThisTurn;
private int numExploredThisTurn; private int numExploredThisTurn;
@@ -1444,6 +1445,10 @@ public class Player extends GameEntity implements Comparable<Player> {
return numDrawnThisTurn; return numDrawnThisTurn;
} }
public final int getNumDrawnLastTurn() {
return numDrawnLastTurn;
}
public final int numDrawnThisDrawStep() { public final int numDrawnThisDrawStep() {
return numDrawnThisDrawStep; return numDrawnThisDrawStep;
} }
@@ -2256,6 +2261,9 @@ public class Player extends GameEntity implements Comparable<Player> {
public final void setLandsPlayedLastTurn(int num) { public final void setLandsPlayedLastTurn(int num) {
landsPlayedLastTurn = num; landsPlayedLastTurn = num;
} }
public final void setNumDrawnLastTurn(int num) {
numDrawnLastTurn= num;
}
public final int getInvestigateNumThisTurn() { public final int getInvestigateNumThisTurn() {
return investigatedThisTurn; return investigatedThisTurn;
@@ -2475,6 +2483,7 @@ public class Player extends GameEntity implements Comparable<Player> {
for (final PlayerZone pz : zones.values()) { for (final PlayerZone pz : zones.values()) {
pz.resetCardsAddedThisTurn(); pz.resetCardsAddedThisTurn();
} }
setNumDrawnLastTurn(getNumDrawnThisTurn());
resetNumDrawnThisTurn(); resetNumDrawnThisTurn();
resetNumRollsThisTurn(); resetNumRollsThisTurn();
resetNumExploredThisTurn(); resetNumExploredThisTurn();

View File

@@ -21,10 +21,11 @@ Types:Legendary Planeswalker Ajani
Loyalty:3 Loyalty:3
A:AB$ PutCounterAll | Cost$ AddCounter<2/LOYALTY> | ValidCards$ Cat.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Planeswalker$ True | SpellDescription$ Put a +1/+1 counter on each Cat you control. A:AB$ PutCounterAll | Cost$ AddCounter<2/LOYALTY> | ValidCards$ Cat.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Planeswalker$ True | SpellDescription$ Put a +1/+1 counter on each Cat you control.
A:AB$ Token | Cost$ AddCounter<0/LOYALTY> | TokenAmount$ 1 | TokenScript$ w_2_1_cat_warrior | TokenOwner$ You | RememberOriginalTokens$ True | SubAbility$ DBImmediateTrig1 | Planeswalker$ True | SpellDescription$ Create a 2/1 white Cat Warrior creature token. When you do, if you control a red permanent other than CARDNAME, he deals damage equal to the number of creatures you control to any target. A:AB$ Token | Cost$ AddCounter<0/LOYALTY> | TokenAmount$ 1 | TokenScript$ w_2_1_cat_warrior | TokenOwner$ You | RememberOriginalTokens$ True | SubAbility$ DBImmediateTrig1 | Planeswalker$ True | SpellDescription$ Create a 2/1 white Cat Warrior creature token. When you do, if you control a red permanent other than CARDNAME, he deals damage equal to the number of creatures you control to any target.
SVar:DBImmediateTrig1:DB$ ImmediateTrigger | TriggerAmount$ Remembered$Amount | ConditionPresent$ Permanent.Red+YouCtrl+Other | Execute$ TrigDamage | TriggerDescription$ When you do, if you control a red permanent other than CARDNAME, he deals damage equal to the number of creatures you control to any target. SVar:DBImmediateTrig1:DB$ ImmediateTrigger | TriggerAmount$ Remembered$Amount | ConditionPresent$ Permanent.Red+YouCtrl+Other | Execute$ TrigDamage | SubAbility$ DBCleanup2 | TriggerDescription$ When you do, if you control a red permanent other than CARDNAME, he deals damage equal to the number of creatures you control to any target.
SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | ConditionPresent$ Permanent.Red+YouCtrl+Other | SubAbility$ DBCleanup | TgtPrompt$ Select any valid target | SpellDescription$ CARDNAME deals damage equal to the number of creatures you control to any target. SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | ConditionPresent$ Permanent.Red+YouCtrl+Other | TgtPrompt$ Select any valid target | SpellDescription$ CARDNAME deals damage equal to the number of creatures you control to any target.
SVar:X:Count$Valid Creature.YouCtrl SVar:X:Count$Valid Creature.YouCtrl
A:AB$ ChooseCard | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ Opponent | Choices$ Permanent.nonLand | ChooseEach$ Artifact & Creature & Enchantment & Planeswalker | ControlledByPlayer$ Chooser | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each opponent chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. A:AB$ ChooseCard | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ Opponent | Choices$ Permanent.nonLand | ChooseEach$ Artifact & Creature & Enchantment & Planeswalker | ControlledByPlayer$ Chooser | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each opponent chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest.
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.nonLand+OppCtrl+nonChosenCard | SubAbility$ DBCleanup SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.nonLand+OppCtrl+nonChosenCard | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:DBCleanup2:DB$ Cleanup | ClearRemembered$ True
Oracle:[+2]: Put a +1/+1 counter on each Cat you control.\n[0]: Create a 2/1 white Cat Warrior creature token. When you do, if you control a red permanent other than Ajani, Nacatl Avenger, he deals damage equal to the number of creatures you control to any target.\n[-4]: Each opponent chooses an artifact, a creature, an enchantment and a planeswalker from among the nonland permanents they control, then sacrifices the rest. Oracle:[+2]: Put a +1/+1 counter on each Cat you control.\n[0]: Create a 2/1 white Cat Warrior creature token. When you do, if you control a red permanent other than Ajani, Nacatl Avenger, he deals damage equal to the number of creatures you control to any target.\n[-4]: Each opponent chooses an artifact, a creature, an enchantment and a planeswalker from among the nonland permanents they control, then sacrifices the rest.

View File

@@ -4,7 +4,7 @@ Types:Artifact
A:AB$ Mana | Cost$ T CollectEvidence<3> | Produced$ Any | SubAbility$ DBPutCounter | SpellDescription$ Add one mana of any color. Put an unlock counter on CARDNAME. (To collect evidence 3, exile cards with total mana value 3 or greater from your graveyard.) A:AB$ Mana | Cost$ T CollectEvidence<3> | Produced$ Any | SubAbility$ DBPutCounter | SpellDescription$ Add one mana of any color. Put an unlock counter on CARDNAME. (To collect evidence 3, exile cards with total mana value 3 or greater from your graveyard.)
SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ UNLOCK SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ UNLOCK
A:AB$ Surveil | Cost$ Sac<1/CARDNAME> | Amount$ 3 | SubAbility$ DBDraw | IsPresent$ Card.Self+counters_GE5_UNLOCK | SpellDescription$ Surveil 3, then draw three cards. Activate only if CARDNAME has five or more unlock counters on it. A:AB$ Surveil | Cost$ Sac<1/CARDNAME> | Amount$ 3 | SubAbility$ DBDraw | IsPresent$ Card.Self+counters_GE5_UNLOCK | SpellDescription$ Surveil 3, then draw three cards. Activate only if CARDNAME has five or more unlock counters on it.
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 3 | SubAbility$ DBGainLife SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 3
DeckHints:Ability$Graveyard|Mill|Discard|Dredge DeckHints:Ability$Graveyard|Mill|Discard|Dredge
DeckHas:Ability$Counters|Sacrifice|Surveil DeckHas:Ability$Counters|Sacrifice|Surveil
Oracle:{T}, Collect evidence 3: Add one mana of any color. Put an unlock counter on Cryptex. (To collect evidence 3, exile cards with total mana value 3 or greater from your graveyard.)\nSacrifice Cryptex: Surveil 3, then draw three cards. Activate only if Cryptex has five or more unlock counters on it. Oracle:{T}, Collect evidence 3: Add one mana of any color. Put an unlock counter on Cryptex. (To collect evidence 3, exile cards with total mana value 3 or greater from your graveyard.)\nSacrifice Cryptex: Surveil 3, then draw three cards. Activate only if Cryptex has five or more unlock counters on it.

View File

@@ -3,6 +3,6 @@ ManaCost:2 U U
Types:Enchantment Aura Types:Enchantment Aura
K:Enchant creature K:Enchant creature
A:SP$ Attach | Cost$ 2 U U | ValidTgts$ Creature | AILogic$ Curse A:SP$ Attach | Cost$ 2 U U | ValidTgts$ Creature | AILogic$ Curse
A:AB$ ChangeZone | Cost$ U | Defined$ EnchantedAndSelf | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBBounce | SpellDescription$ Return enchanted creature and CARDNAME to their owners' hands. A:AB$ ChangeZone | Cost$ U | Defined$ EnchantedAndSelf | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return enchanted creature and CARDNAME to their owners' hands.
SVar:NonStackingAttachEffect:True SVar:NonStackingAttachEffect:True
Oracle:Enchant creature\n{U}: Return enchanted creature and Disappear to their owners' hands. Oracle:Enchant creature\n{U}: Return enchanted creature and Disappear to their owners' hands.

View File

@@ -4,7 +4,7 @@ Types:Creature Human Soldier
PT:3/3 PT:3/3
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseThree | TriggerDescription$ When CARDNAME enters, each player sacrifices all lands they control except for three. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseThree | TriggerDescription$ When CARDNAME enters, each player sacrifices all lands they control except for three.
SVar:TrigChooseThree:DB$ ChooseCard | Defined$ Player | Choices$ Land | ControlledByPlayer$ Chooser | Amount$ 3 | ChoiceTitle$ Choose three lands to keep | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers SVar:TrigChooseThree:DB$ ChooseCard | Defined$ Player | Choices$ Land | ControlledByPlayer$ Chooser | Amount$ 3 | ChoiceTitle$ Choose three lands to keep | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers
SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Land.nonChosenCard | SubAbility$ DBCleanup SVar:DBAllOthers:DB$ SacrificeAll | ValidCards$ Land.nonChosenCard | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice
Oracle:When Keldon Firebombers enters, each player sacrifices all lands they control except for three. Oracle:When Keldon Firebombers enters, each player sacrifices all lands they control except for three.

View File

@@ -3,7 +3,7 @@ ManaCost:1 U R W
Types:Legendary Creature Giant Warrior Types:Legendary Creature Giant Warrior
PT:7/7 PT:7/7
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, choose an opponent at random. CARDNAME attacks that player this combat if able. T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, choose an opponent at random. CARDNAME attacks that player this combat if able.
SVar:TrigChoose:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | Random$ True | SubAbility$ DBPEffect SVar:TrigChoose:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | Random$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ Self | ExileOnMoved$ Battlefield | StaticAbilities$ AttackChosen | Duration$ UntilEndOfCombat SVar:DBEffect:DB$ Effect | RememberObjects$ Self | ExileOnMoved$ Battlefield | StaticAbilities$ AttackChosen | Duration$ UntilEndOfCombat
SVar:AttackChosen:Mode$ MustAttack | ValidCreature$ Card.IsRemembered | MustAttack$ ChosenPlayer | Description$ EFFECTSOURCE attacks that player this combat if able. SVar:AttackChosen:Mode$ MustAttack | ValidCreature$ Card.IsRemembered | MustAttack$ ChosenPlayer | Description$ EFFECTSOURCE attacks that player this combat if able.
Oracle:At the beginning of combat on your turn, choose an opponent at random. Ruhan of the Fomori attacks that player this combat if able. Oracle:At the beginning of combat on your turn, choose an opponent at random. Ruhan of the Fomori attacks that player this combat if able.

View File

@@ -2,7 +2,7 @@ Name:The Five Doctors
ManaCost:5 G ManaCost:5 G
Types:Sorcery Types:Sorcery
K:Kicker:5 K:Kicker:5
A:SP$ ChangeZone | Origin$ Library | OriginAlternative$ Graveyard | Destination$ Hand | DestinationAlternative$ Battlefield | DestAltSVar$ MANDATORY Count$TimesKicked | ChangeType$ Doctor | ChangeNum$ 5 | SubAbility$ DBChangeZone | SpellDescription$ Search your library and/or graveyard for up to five Doctor cards, reveal them, and put them into your hand. If you search your library this way, shuffle. If this spell was kicked, put those cards onto the battlefield instead of putting them into your hand. A:SP$ ChangeZone | Origin$ Library | OriginAlternative$ Graveyard | Destination$ Hand | DestinationAlternative$ Battlefield | DestAltSVar$ MANDATORY Count$TimesKicked | ChangeType$ Doctor | ChangeNum$ 5 | SpellDescription$ Search your library and/or graveyard for up to five Doctor cards, reveal them, and put them into your hand. If you search your library this way, shuffle. If this spell was kicked, put those cards onto the battlefield instead of putting them into your hand.
DeckNeeds:Type$Doctor DeckNeeds:Type$Doctor
DeckHas:Ability$Graveyard DeckHas:Ability$Graveyard
Oracle:Kicker {5} (You may pay an additional {5} as you cast this spell.)\nSearch your library and/or graveyard for up to five Doctor cards, reveal them, and put them into your hand. If you search your library this way, shuffle. If this spell was kicked, put those cards onto the battlefield instead of putting them into your hand. Oracle:Kicker {5} (You may pay an additional {5} as you cast this spell.)\nSearch your library and/or graveyard for up to five Doctor cards, reveal them, and put them into your hand. If you search your library this way, shuffle. If this spell was kicked, put those cards onto the battlefield instead of putting them into your hand.

View File

@@ -3,7 +3,7 @@ ManaCost:6 R
Types:Sorcery Types:Sorcery
A:SP$ GainControl | ValidTgts$ Opponent | AllValid$ Creature.TargetedPlayerCtrl | NewController$ You | LoseControl$ EOT | RememberControlled$ True | StackDescription$ REP You_{p:You} & target opponent_{p:Targeted} | SubAbility$ DBGainCtrlOpp | SpellDescription$ You and target opponent each gain control of all creatures the other controls until end of turn. Untap those creatures. Those creatures gain haste until end of turn. A:SP$ GainControl | ValidTgts$ Opponent | AllValid$ Creature.TargetedPlayerCtrl | NewController$ You | LoseControl$ EOT | RememberControlled$ True | StackDescription$ REP You_{p:You} & target opponent_{p:Targeted} | SubAbility$ DBGainCtrlOpp | SpellDescription$ You and target opponent each gain control of all creatures the other controls until end of turn. Untap those creatures. Those creatures gain haste until end of turn.
SVar:DBGainCtrlOpp:DB$ GainControl | AllValid$ Creature.IsNotRemembered+YouCtrl | NewController$ Targeted | LoseControl$ EOT | RememberControlled$ True | StackDescription$ None | SubAbility$ DBUntapAll SVar:DBGainCtrlOpp:DB$ GainControl | AllValid$ Creature.IsNotRemembered+YouCtrl | NewController$ Targeted | LoseControl$ EOT | RememberControlled$ True | StackDescription$ None | SubAbility$ DBUntapAll
SVar:DBDUntapAll:DB$ UntapAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBPumpAll SVar:DBUntapAll:DB$ UntapAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBPumpAll
SVar:PumpAll:DB$ PumpAll | ValidCards$ Creature.IsRemembered | KW$ Haste | SubAbility$ DBCleanup SVar:PumpAll:DB$ PumpAll | ValidCards$ Creature.IsRemembered | KW$ Haste | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All

View File

@@ -0,0 +1,11 @@
Name:Anthropede
ManaCost:3 G
Types:Creature Insect
PT:3/4
K:Reach
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoice | TriggerDescription$ When CARDNAME enters, you may discard a card or pay {2}. When you do, destroy target Room.
SVar:TrigChoice:DB$ GenericChoice | Choices$ PayDiscard,Pay2
SVar:Pay2:DB$ ImmediateTrigger | UnlessCost$ 2 | UnlessPayer$ You | UnlessSwitched$ True | Execute$ TrigDestroy | SpellDescription$ pay {2}: When you do, destroy target Room.
SVar:PayDiscard:DB$ ImmediateTrigger | UnlessCost$ Discard<1/Card> | UnlessPayer$ You | UnlessSwitched$ True | Execute$ TrigDestroy | SpellDescription$ discard a card: When you do, destroy target Room.
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Room | TgtPrompt$ Select target Room
Oracle:Reach\nWhen Anthropede enters, you may discard a card or pay {2}. When you do, destroy target Room.

View File

@@ -0,0 +1,16 @@
Name:Bottomless Pool
ManaCost:U
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigReturn | TriggerDescription$ When you unlock this door, return up to one target creature to its owner's hand.
SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature | Origin$ Battlefield | Destination$ Hand
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, return up to one target creature to its owner's hand.
ALTERNATE
Name:Locker Room
ManaCost:4 U
Types:Enchantment Room
T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.YouCtrl | TriggerZones$ Battlefield | ValidTarget$ Player | Execute$ TrigDraw | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, draw a card.
SVar:TrigDraw:DB$ Draw
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhenever one or more creatures you control deal combat damage to a player, draw a card.

View File

@@ -0,0 +1,18 @@
Name:Charred Foyer
ManaCost:3 R
Types:Enchantment Room
T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | ValidPlayer$ You | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, exile the top card of your library. You may play that card this turn.
SVar:TrigDig:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ MayPlay | SubAbility$ DBCleanup | ExileOnMoved$ Exile
SVar:MayPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play the exiled card this turn.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nAt the beginning of your upkeep, exile the top card of your library. You may play that card this turn.
ALTERNATE
Name:Warped Space
ManaCost:4 R R
Types:Enchantment Room
S:Mode$ Continuous | MayPlay$ True | MayPlayAltManaCost$ 0 | MayPlayLimit$ 1 | MayPlayDontGrantZonePermissions$ True | Affected$ Card.YouCtrl+nonLand | AffectedZone$ Exile| Description$ Once each turn, you may pay {0} rather than pay the mana cost for a spell you cast from exile.
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nOnce each turn, you may pay {0} rather than pay the mana cost for a spell you cast from exile.

View File

@@ -0,0 +1,16 @@
Name:Cramped Vents
ManaCost:3 B
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigDealDamage | TriggerDescription$ When you unlock this door, this Room deals 6 damage to target creature an opponent controls. You gain life equal to the excess damage dealt this way.
SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ 6 | ExcessSVar$ Excess | SubAbility$ DBGainLife
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ Excess
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, this Room deals 6 damage to target creature an opponent controls. You gain life equal to the excess damage dealt this way.
ALTERNATE
Name:Access Maze
ManaCost:5 B B
Types:Enchantment Room
S:Mode$ Continuous | Condition$ PlayerTurn | Affected$ Card.YouCtrl+nonLand | MayPlayLimit$ 1 | MayPlay$ True | MayPlayAltManaCost$ PayLife<ConvertedManaCost> | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand | Description$ Once during each of your turns, you may cast a spell from your hand by paying life equal to its mana value rather than paying its mana cost.
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nOnce during each of your turns, you may cast a spell from your hand by paying life equal to its mana value rather than paying its mana cost.

View File

@@ -0,0 +1,6 @@
Name:Creeping Peeper
ManaCost:1 U
Types:Creature Eye
PT:2/1
A:AB$ Mana | Cost$ T | Produced$ U | Amount$ 1 | RestrictValid$ Spell.Enchantment,Static.Unlock,Static.isTurnFaceUp | SpellDescription$ Add {U}. Spend this mana only to cast an enchantment spell, unlock a door, or turn a permanent face up.
Oracle:{T}: Add {U}. Spend this mana only to cast an enchantment spell, unlock a door, or turn a permanent face up.

View File

@@ -0,0 +1,14 @@
Name:Dazzling Theater
ManaCost:3 W
Types:Enchantment Room
S:Mode$ Continuous | Affected$ Card.Creature+YouCtrl+wasCast | AffectedZone$ Stack | AddKeyword$ Convoke | Description$ Creature spells you cast have convoke. (Your creatures can help cast those spells. Each creature you tap while casting a creature spell pays for {1} or one mana of that creature's color.)
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nCreature spells you cast have convoke. (Your creatures can help cast those spells. Each creature you tap while casting a creature spell pays for {1} or one mana of that creature's color.)
ALTERNATE
Name:Prop Room
ManaCost:2 W
Types:Enchantment Room
S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ CARDNAME untaps during each other player's untap step. | Description$ Untap each creature you control during each other player's untap step.
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nUntap each creature you control during each other player's untap step.

View File

@@ -0,0 +1,17 @@
Name:Defiled Crypt
ManaCost:3 B
Types:Enchantment Room
T:Mode$ ChangesZoneAll | ValidCards$ Card.YouOwn | Origin$ Graveyard | Destination$ Any | TriggerZones$ Battlefield | Execute$ TrigToken | ActivationLimit$ 1 | TriggerDescription$ Whenever one or more cards leave your graveyard, create a 2/2 black Horror enchantment creature token. This ability triggers only once each turn.
SVar:TrigToken:DB$ Token | TokenScript$ b_2_2_e_horror
AlternateMode:Split
DeckHas:Ability$Token
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhenever one or more cards leave your graveyard, create a 2/2 black Horror enchantment creature token. This ability triggers only once each turn.
ALTERNATE
Name:Cadaver Lab
ManaCost:B
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigChangeZone | TriggerDescription$ When you unlock this door, return target creature card from your graveyard to your hand.
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature | Origin$ Battlefield | Destination$ Hand
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, return target creature card from your graveyard to your hand.

View File

@@ -0,0 +1,14 @@
Name:Demonic Covenant
ManaCost:4 B B
Types:Kindred Enchantment Demon
T:Mode$ AttackersDeclaredOneTarget | AttackedTarget$ Player | ValidAttackers$ Creature.Demon+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDrawAndDamage | TriggerDescription$ Whenever one or more Demons you control attack a player, you draw a card and lose 1 life.
SVar:TrigDrawAndDamage:DB$ Draw | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 1
T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigCreateAndMill | TriggerDescription$ At the beginning of your end step, create a 5/5 black Demon creature token with flying, then mill two cards. If two cards that share all their card types were milled this way, sacrifice CARDNAME.
SVar:TrigCreateAndMill:DB$ Token | TokenAmount$ 1 | TokenScript$ b_5_5_demon_flying | TokenOwner$ You | SubAbility$ DBMill
SVar:DBMill:DB$ Mill | NumCards$ 2 | RememberMilled$ True | ShowMilledCards$ True | SubAbility$ DBSacrifice
SVar:DBSacrifice:DB$ Sacrifice | SacValid$ Self | ShowSacrificedCards$ True | ConditionCheckSVar$ MilledSharesAllTypes | ConditionSVarCompare$ GE2 | SubAbility$ Cleanup
SVar:MilledSharesAllTypes:Remembered$Valid Card.sharesAllCardTypesWithOther Remembered
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Token|Mill|Sacrifice
Oracle:Whenever one or more Demons you control attack a player, you draw a card and lose 1 life.\nAt the beginning of your end step, create a 5/5 black Demon creature token with flying, then mill two cards. If two cards that share all their card types were milled this way, sacrifice Demonic Covenant.

View File

@@ -0,0 +1,17 @@
Name:Derelict Attic
ManaCost:2 B
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigDraw | TriggerDescription$ When you unlock this door, you draw two cards and you lose 2 life.
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 2 | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 2
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, you draw two cards and you lose 2 life.
ALTERNATE
Name:Widow's Walk
ManaCost:3 B
Types:Enchantment Room
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control attacks alone, it gets +1/+0 and gains deathtouch until end of turn.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +1 | KW$ Deathtouch
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhenever a creature you control attacks alone, it gets +1/+0 and gains deathtouch until end of turn.

View File

@@ -0,0 +1,17 @@
Name:Funeral Room
ManaCost:2 B
Types:Enchantment Room
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever a creature you control dies, each opponent loses 1 life and you gain 1 life.
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhenever a creature you control dies, each opponent loses 1 life and you gain 1 life.
ALTERNATE
Name:Awakening Hall
ManaCost:6 B B
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigChangeZone | TriggerDescription$ When you unlock this door, return all creature cards from your graveyard to the battlefield.
SVar:TrigChangeZone:DB$ ChangeZoneAll | ChangeType$ Creature.YouOwn | Origin$ Graveyard | Destination$ Battlefield
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, return all creature cards from your graveyard to the battlefield.

View File

@@ -0,0 +1,16 @@
Name:Grand Entryway
ManaCost:1 W
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigToken | TriggerDescription$ When you unlock this door, create a 1/1 white Glimmer enchantment creature token.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_e_glimmer | TokenOwner$ You
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, create a 1/1 white Glimmer enchantment creature token.
ALTERNATE
Name:Elegant Rotunda
ManaCost:2 W
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigPutCounter | TriggerDescription$ When you unlock this door, put a +1/+1 counter on each of up to two target creatures.
SVar:TrigPutCounter:DB$ PutCounter | CounterNum$ 1 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select up to 2 target creatures
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, put a +1/+1 counter on each of up to two target creatures.

View File

@@ -0,0 +1,18 @@
Name:Greenhouse
ManaCost:2 G
Types:Enchantment Room
S:Mode$ Continuous | Affected$ Land.YouCtrl | AddAbility$ AnyMana | Description$ Lands you control have "{T}: Add one mana of any color."
SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color.
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nLands you control have "{T}: Add one mana of any color."
ALTERNATE
Name:Rickety Gazebo
ManaCost:3 G
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigMill | TriggerDescription$ When you unlock this door, mill four cards, then return up to two permanent cards from among them to your hand.
SVar:TrigMill:DB$ Mill | NumCards$ 4 | Defined$ You | RememberMilled$ True | SubAbility$ DBChangeZone
SVar:DBChangeZone:DB$ ChangeZone | Hidden$ True | Origin$ Graveyard,Exile | Destination$ Hand | ChangeType$ Permanent.IsRemembered | ChangeNum$ 2 | SelectPrompt$ You may select a permanent card milled this way | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, mill four cards, then return up to two permanent cards from among them to your hand.

View File

@@ -3,4 +3,4 @@ ManaCost:no cost
Types:Scheme Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DBCopyCommander | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, create a token that's a copy of your commander, except it's not legendary. T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DBCopyCommander | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, create a token that's a copy of your commander, except it's not legendary.
SVar:DBCopyCommander:DB$ CopyPermanent | Choices$ Card.IsCommander+YouOwn | Defined$ ValidAll Card.IsCommander+YouOwn | ChoiceTitle$ Choose a commander you own | NonLegendary$ True SVar:DBCopyCommander:DB$ CopyPermanent | Choices$ Card.IsCommander+YouOwn | Defined$ ValidAll Card.IsCommander+YouOwn | ChoiceTitle$ Choose a commander you own | NonLegendary$ True
Oracle:When you set this scheme in motion, create a token that's a copy of your commander, except it's not legendary.\n"This is but a pale shadow of my true form. Cower before it, and despair." Oracle:When you set this scheme in motion, create a token that's a copy of your commander, except it's not legendary.

View File

@@ -0,0 +1,9 @@
Name:Intruding Soulrager
ManaCost:U R
Types:Creature Spirit
PT:2/2
K:Vigilance
A:AB$ DealDamage | Cost$ T Sac<1/Room> | NumDmg$ 2 | Defined$ Opponent | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals 2 damage to each opponent. Draw a card.
SVar:DBDraw:DB$ Draw
DeckNeeds:Type$Room
Oracle:Vigilance\n{T}, Sacrifice a Room: Intruding Soulrager deals 2 damage to each opponent. Draw a card.

View File

@@ -0,0 +1,6 @@
Name:Keys to the House
ManaCost:1
Types:Artifact
A:AB$ ChangeZone | Cost$ 1 T Sac<1/CARDNAME> | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | SpellDescription$ Search your library for a basic land card, reveal it, put it into your hand, then shuffle.
A:AB$ UnlockDoor | Cost$ 3 T Sac<1/CARDNAME> | Mode$ LockOrUnlock | ValidTgts$ Room.YouCtrl | TgtPrompt$ Choose target Room you control | SorcerySpeed$ True | SpellDescription$ Lock or unlock a door of target Room you control. Activate only as a sorcery.
Oracle:{1}, {T}, Sacrifice Keys to the House: Search your library for a basic land card, reveal it, put it into your hand, then shuffle.\n{3}, {T}, Sacrifice Keys to the House: Lock or unlock a door of target Room you control. Activate only as a sorcery.

View File

@@ -0,0 +1,9 @@
Name:Marina Vendrell
ManaCost:W U B R G
Types:Legendary Creature Human Warlock
PT:3/5
K:Flying
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters, reveal the top seven cards of your library. Put all enchantment cards from among them into your hand and the rest on the bottom of your library in a random order.
SVar:TrigDig:DB$ Dig | DigNum$ 7 | Reveal$ True | ChangeNum$ All | ChangeValid$ Enchantment | RestRandomOrder$ True
A:AB$ UnlockDoor | Cost$ T | Mode$ LockOrUnlock | ValidTgts$ Room.YouCtrl | TgtPrompt$ Choose target Room you control | SorcerySpeed$ True | SpellDescription$ Lock or unlock a door of target Room you control. Activate only as a sorcery.
Oracle:When Marina Vendrell enters, reveal the top seven cards of your library. Put all enchantment cards from among them into your hand and the rest on the bottom of your library in a random order.\n{T}: Lock or unlock a door of target Room you control. Activate only as a sorcery.

View File

@@ -0,0 +1,9 @@
Name:Mine Is the Only Truth
ManaCost:no cost
Types:Ongoing Scheme
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigDrawCard | TriggerDescription$ Whenever a player casts a spell, you draw a card.
SVar:TrigDrawCard:DB$ Draw | Defined$ You | NumCards$ 1
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | CheckSVar$ DrewLastTurn | Execute$ DBAbandon | TriggerDescription$ At the beginning of your upkeep, if you drew a card last turn, abandon this scheme.
SVar:DBAbandon:DB$ Abandon
SVar:DrewLastTurn:Count$YouDrewLastTurn
Oracle:(An ongoing scheme remains face up until its abandoned.)\nWhenever a player casts a spell, you draw a card.\nAt the beginning of your upkeep, if you drew a card last turn, abandon this scheme.

View File

@@ -0,0 +1,13 @@
Name:Rendmaw, Creaking Nest
ManaCost:3 B G
Types:Legendary Artifact Creature Scarecrow
PT:5/5
K:Menace
K:Reach
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBTokens | TriggerDescription$ When CARDNAME enters and whenever you play a card with two or more card types, each player creates a tapped 2/2 black Bird creature token with flying. The tokens are goaded for the rest of the game.
T:Mode$ SpellCast | ValidCard$ Card.numTypesGE2 | Execute$ DBTokens | Secondary$ True | TriggerDescription$ When CARDNAME enters and whenever you play a card with two or more card types, each player creates a tapped 2/2 black Bird creature token with flying. The tokens are goaded for the rest of the game.
T:Mode$ LandPlayed | ValidCard$ Land.numTypesGE2 | Execute$ DBTokens | Secondary$ True | TriggerDescription$ When CARDNAME enters and whenever you play a card with two or more card types, each player creates a tapped 2/2 black Bird creature token with flying. The tokens are goaded for the rest of the game.
SVar:DBTokens:DB$ Token | TokenAmount$ 1 | TokenScript$ b_2_2_bird_flying | TokenTapped$ True | TokenOwner$ Player | RememberTokens$ True | SubAbility$ DBGoad
SVar:DBGoad:DB$ Goad | Defined$ Remembered | Duration$ Permanent | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Menace, reach\nWhen Rendmaw, Creaking Nest enters and whenever you play a card with two or more card types, each player creates a tapped 2/2 black Bird creature token with flying. The tokens are goaded for the rest of the game. (They attack each combat if able and attack a player other than you if able.)

View File

@@ -0,0 +1,7 @@
Name:Running Is Useless
ManaCost:no cost
Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DBDestroy | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, choose any number of creatures with different mana values. Destroy those creatures.
SVar:DBDestroy:DB$ Destroy | ValidTgts$ Creature | TargetsWithDifferentCMC$ True | TargetMax$ AmountToChoose | TargetMin$ 0 | TgtPrompt$ Choose any number of creatures with different mana values.
SVar:AmountToChoose:Count$Valid Creature
Oracle:When you set this scheme in motion, choose any number of creatures with different mana values. Destroy those creatures.

View File

@@ -0,0 +1,16 @@
Name:Secret Arcade
ManaCost:4 W
Types:Enchantment Room
S:Mode$ Continuous | Affected$ Permanent.nonLand+YouCtrl | AffectedZone$ Battlefield,Stack | AddType$ Enchantment | Description$ Nonland permanents you control and permanent spells you control are enchantments in addition to their other types.
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nNonland permanents you control and permanent spells you control are enchantments in addition to their other types.
ALTERNATE
Name:Dusty Parlor
ManaCost:2 W
Types:Enchantment Room
T:Mode$ SpellCast | ValidCard$ Enchantment | ValidActivatingPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast an enchantment spell, put a number of +1/+1 counters equal to that spell's mana value on up to one target creature.
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select up to one target creature | TargetMin$ 0 | TargetMax$ 1 | CounterType$ P1P1 | CounterNum$ X
SVar:X:TriggeredStackInstance$CardManaCostLKI
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhenever you cast an enchantment spell, put a number of +1/+1 counters equal to that spell's mana value on up to one target creature.

View File

@@ -0,0 +1,16 @@
Name:Spiked Corridor
ManaCost:3 R
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigToken | TriggerDescription$ When you unlock this door, create three 1/1 red Devil creature tokens with "When this creature dies, it deals 1 damage to any target."
SVar:TrigToken:DB$ Token | TokenAmount$ 3 | TokenScript$ r_1_1_devil_burn | TokenOwner$ You
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, create three 1/1 red Devil creature tokens with "When this creature dies, it deals 1 damage to any target."
ALTERNATE
Name:Torture Pit
ManaCost:3 R
Types:Enchantment Room
R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Opponent | IsCombat$ False | ReplaceWith$ DamageReplace | Description$ If a source you control would deal noncombat damage to an opponent, it deals that much damage plus 2 instead.
SVar:DamageReplace:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ ReplaceCount$DamageAmount/Plus.2
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nIf a source you control would deal noncombat damage to an opponent, it deals that much damage plus 2 instead.

View File

@@ -0,0 +1,22 @@
Name:Unholy Annex
ManaCost:2 B
Types:Enchantment Room
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ At the beginning of your end step, draw a card. If you control a Demon, each opponent loses 2 life and you gain 2 life. Otherwise, you lose 2 life.
SVar:TrigDraw:DB$ Draw | SubAbility$ DBBranch
SVar:TrigBranch:DB$ Branch | BranchConditionSVar$ X | BranchConditionSVarCompare$ GT0 | TrueSubAbility$ DBLoseLife1 | FalseSubAbility$ DBLoseLife2
SVar:DBLoseLife1:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 | SubAbility$ DBGainLife
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
SVar:DBLoseLife2:DB$ LoseLife | Defined$ You | LifeAmount$ 2
SVar:X:Count$Valid Demon.YouCtrl
DeckHas:Ability$LifeGain
AlternateMode:Split
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nAt the beginning of your end step, draw a card. If you control a Demon, each opponent loses 2 life and you gain 2 life. Otherwise, you lose 2 life.
ALTERNATE
Name:Ritual Chamber
ManaCost:3 B B
Types:Enchantment Room
T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigToken | TriggerDescription$ When you unlock this door, create a 6/6 black Demon creature token with flying.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_6_6_demon_flying | TokenOwner$ You
Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, create a 6/6 black Demon creature token with flying.

View File

@@ -0,0 +1,13 @@
Name:Your Plans Mean Nothing
ManaCost:no cost
Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DBChoosePlayer | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, any number of target players each discard their hands. Each opponent draws cards equal to the number of cards that player discarded minus one. Then if you discarded a card this way, draw seven cards.
SVar:DBChoosePlayer:DB$ Pump | ValidTgts$ Player | TargetMin$ 0 | TargetMax$ PlayerCount | TgtPrompt$ Choose any number of players | SubAbility$ DBRepeat
SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ Targeted | RepeatSubAbility$ DBDiscard | SubAbility$ DBYouDraw | SpellDescription$ Each opponent draws cards equal to the number of cards that player discarded minus one. Then if you discarded a card this way, draw seven cards.
SVar:DBDiscard:DB$ Discard | Defined$ Remembered | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ Player.Opponent+IsRemembered
SVar:DBYouDraw:DB$ Draw | Defined$ You | NumCards$ 7 | ConditionDefined$ Remembered | ConditionPresent$ Card.YouOwn | SubAbility$ DBClearRemembered
SVar:DBClearRemembered:DB$ Cleanup | ClearRemembered$ True
SVar:PlayerCount:PlayerCountPlayers$Amount
SVar:X:Remembered$Valid Card.RememberedPlayerOwn/Minus.1
Oracle:When you set this scheme in motion, any number of target players each discard their hands. Each opponent draws cards equal to the number of cards that player discarded minus one. Then if you discarded a card this way, draw seven cards.

View File

@@ -0,0 +1,16 @@
[metadata]
Name:Possibility Storm - Duskmourn: House of Horror #01
URL:https://i2.wp.com/www.possibilitystorm.com/wp-content/uploads/2024/09/latest-1-scaled.jpg?ssl=1
Goal:Win
Turns:1
Difficulty:Uncommon
Description:Win this turn. Ensure your solution satisfies all possible blocking conditions. Good luck!
[state]
turn=1
activeplayer=p0
activephase=MAIN1
p0life=20
p0hand=Pyroclasm;Screaming Nemesis;Nahiri's Sacrifice
p0battlefield=Fear of Being Hunted;Diversion Specialist;Chainsaw|Counters:REV=1;Mountain;Mountain;Mountain;Mountain;Mountain
p1life=8
p1battlefield=Shadow-Rite Priest;Resurrected Cultist;Grasping Longneck

View File

@@ -0,0 +1,7 @@
Name:Bird Token
ManaCost:no cost
Types:Creature Bird
Colors:black
PT:2/2
K:Flying
Oracle:Flying

View File

@@ -0,0 +1,7 @@
Name:Demon Token
ManaCost:no cost
Types:Creature Demon
Colors:black
PT:6/6
K:Flying
Oracle:Flying