Merge branch 'unset-cards' into 'master'

Add dice rolling, and Waste Land

See merge request core-developers/forge!4067
This commit is contained in:
Michael Kamensky
2021-03-03 03:49:42 +00:00
46 changed files with 516 additions and 8 deletions

View File

@@ -115,8 +115,8 @@ public final class AbilityFactory {
* *
* @param abString * @param abString
* a {@link java.lang.String} object. * a {@link java.lang.String} object.
* @param hostCard * @param state
* a {@link forge.game.card.Card} object. * a {@link forge.game.card.CardState} object.
* @return a {@link forge.game.spellability.SpellAbility} object. * @return a {@link forge.game.spellability.SpellAbility} object.
*/ */
public static final SpellAbility getAbility(final String abString, final CardState state) { public static final SpellAbility getAbility(final String abString, final CardState state) {
@@ -282,6 +282,14 @@ public final class AbilityFactory {
} }
} }
if (api == ApiType.RollDice) {
for (String param : mapParams.keySet()) {
if (param.startsWith("On") || param.equals("Else")) {
spellAbility.setAdditionalAbility(param, getSubAbility(state, mapParams.get(param), sVarHolder));
}
}
}
if (spellAbility instanceof SpellApiBased && hostCard.isPermanent()) { if (spellAbility instanceof SpellApiBased && hostCard.isPermanent()) {
String desc = mapParams.containsKey("SpellDescription") ? mapParams.get("SpellDescription") String desc = mapParams.containsKey("SpellDescription") ? mapParams.get("SpellDescription")
: spellAbility.getHostCard().getName(); : spellAbility.getHostCard().getName();
@@ -386,7 +394,6 @@ public final class AbilityFactory {
* *
* @param sa * @param sa
* a {@link forge.game.spellability.SpellAbility} object. * a {@link forge.game.spellability.SpellAbility} object.
* @param mapParams
*/ */
private static final void initializeParams(final SpellAbility sa) { private static final void initializeParams(final SpellAbility sa) {
@@ -402,7 +409,6 @@ public final class AbilityFactory {
* *
* @param sa * @param sa
* a {@link forge.game.spellability.SpellAbility} object. * a {@link forge.game.spellability.SpellAbility} object.
* @param mapParams
*/ */
private static final void makeRestrictions(final SpellAbility sa) { private static final void makeRestrictions(final SpellAbility sa) {
// SpellAbilityRestrictions should be added in here // SpellAbilityRestrictions should be added in here
@@ -417,7 +423,6 @@ public final class AbilityFactory {
* *
* @param sa * @param sa
* a {@link forge.game.spellability.SpellAbility} object. * a {@link forge.game.spellability.SpellAbility} object.
* @param mapParams
*/ */
private static final void makeConditions(final SpellAbility sa) { private static final void makeConditions(final SpellAbility sa) {
// SpellAbilityRestrictions should be added in here // SpellAbilityRestrictions should be added in here

View File

@@ -143,6 +143,7 @@ public enum ApiType {
Reveal (RevealEffect.class), Reveal (RevealEffect.class),
RevealHand (RevealHandEffect.class), RevealHand (RevealHandEffect.class),
ReverseTurnOrder (ReverseTurnOrderEffect.class), ReverseTurnOrder (ReverseTurnOrderEffect.class),
RollDice (RollDiceEffect.class),
RollPlanarDice (RollPlanarDiceEffect.class), RollPlanarDice (RollPlanarDiceEffect.class),
RunChaos (RunChaosEffect.class), RunChaos (RunChaosEffect.class),
Sacrifice (SacrificeEffect.class), Sacrifice (SacrificeEffect.class),

View File

@@ -0,0 +1,87 @@
package forge.game.ability.effects;
import forge.game.ability.AbilityKey;
import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.player.PlayerCollection;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType;
import forge.util.Localizer;
import forge.util.MyRandom;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class RollDiceEffect extends SpellAbilityEffect {
/* (non-Javadoc)
* @see forge.card.abilityfactory.SpellEffect#getStackDescription(java.util.Map, forge.card.spellability.SpellAbility)
*/
@Override
protected String getStackDescription(SpellAbility sa) {
final PlayerCollection player = getTargetPlayers(sa);
StringBuilder stringBuilder = new StringBuilder();
if (player.size() == 1 && player.get(0).equals(sa.getActivatingPlayer())) {
stringBuilder.append("Roll ");
} else {
stringBuilder.append(player).append(" rolls ");
}
stringBuilder.append(sa.getParamOrDefault("Amt", "a")).append(" ");
stringBuilder.append(sa.getParamOrDefault("Sides", "6")).append("-sided ");
if (sa.getParamOrDefault("Amt", "1").equals("1")) {
stringBuilder.append("die.");
} else {
stringBuilder.append("dice.");
}
return stringBuilder.toString();
}
/* (non-Javadoc)
* @see forge.card.ability.SpellAbilityEffect#resolve(forge.card.spellability.SpellAbility)
*/
@Override
public void resolve(SpellAbility sa) {
final Card host = sa.getHostCard();
int amount = AbilityUtils.calculateAmount(host, sa.getParamOrDefault("Amt", "1"), sa);
int sides = AbilityUtils.calculateAmount(host, sa.getParamOrDefault("Sides", "6"), sa);
final PlayerCollection playersToRoll = getTargetPlayers(sa);
for(Player player : playersToRoll) {
int total = 0;
List<Integer> rolls = new ArrayList<>();
for (int i = 0; i < amount; i++) {
int roll = MyRandom.getRandom().nextInt(sides) + 1;
rolls.add(roll);
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
runParams.put(AbilityKey.Player, player);
runParams.put(AbilityKey.Result, roll);
player.getGame().getTriggerHandler().runTrigger(TriggerType.RolledDie, runParams, false);
total += roll;
}
String message = Localizer.getInstance().getMessage("lblPlayerRolledResult", player, StringUtils.join(rolls, ", "));
player.getGame().getAction().nofityOfValue(sa, player, message, null);
if (sa.hasParam("ResultSVar")) {
host.setSVar(sa.getParam("ResultSVar"), ""+total);
}
if (sa.hasAdditionalAbility("OnDoubles") && rolls.get(0).equals(rolls.get(1))) {
AbilityUtils.resolve(sa.getAdditionalAbility("OnDoubles"));
}
if (sa.hasAdditionalAbility("On"+total)) {
AbilityUtils.resolve(sa.getAdditionalAbility("On"+total));
} else if (sa.hasAdditionalAbility("Else")) {
AbilityUtils.resolve(sa.getAdditionalAbility("Else"));
}
}
}
}

View File

@@ -119,6 +119,8 @@ public enum CounterEnumType {
FUNGUS("FNGUS", 121, 219, 151), FUNGUS("FNGUS", 121, 219, 151),
FUNK("FUNK", 215, 24, 222),
FURY("FURY", 255, 120, 89), FURY("FURY", 255, 120, 89),
FUSE("FUSE", 255, 122, 85), FUSE("FUSE", 255, 122, 85),

View File

@@ -0,0 +1,56 @@
package forge.game.trigger;
import forge.game.ability.AbilityKey;
import forge.game.card.Card;
import forge.game.spellability.SpellAbility;
import forge.util.Expressions;
import forge.util.Localizer;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
public class TriggerRolledDie extends Trigger {
public TriggerRolledDie(final Map<String, String> params, final Card host, final boolean intrinsic) {
super(params, host, intrinsic);
}
/** {@inheritDoc}
* @param runParams*/
@Override
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
if (hasParam("ValidPlayer")) {
if (!matchesValid(runParams.get(AbilityKey.Player), getParam("ValidPlayer").split(","),
this.getHostCard())) {
return false;
}
}
if (hasParam("ValidResult")) {
String[] params = getParam("ValidResult").split(",");
final int result = (int) runParams.get(AbilityKey.Result);
for (String param : params) {
if (StringUtils.isNumeric(param)) {
if (param.equals("" + result)) return true;
} else {
final String comp = param.substring(0, 2);
final int rightSide = Integer.parseInt(param.substring(2));
if (Expressions.compare(result, comp, rightSide)) return true;
}
}
return false;
}
return true;
}
/** {@inheritDoc} */
@Override
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
sa.setTriggeringObjectsFrom(runParams, AbilityKey.Result, AbilityKey.Player);
}
@Override
public String getImportantStackObjects(SpellAbility sa) {
return Localizer.getInstance().getMessage("lblPlayer") + ": " + sa.getTriggeringObject(AbilityKey.Player) + ", " +
Localizer.getInstance().getMessage("lblResultIs", sa.getTriggeringObject(AbilityKey.Result));
}
}

View File

@@ -84,6 +84,7 @@ public enum TriggerType {
PlaneswalkedTo(TriggerPlaneswalkedTo.class), PlaneswalkedTo(TriggerPlaneswalkedTo.class),
Regenerated(TriggerRegenerated.class), Regenerated(TriggerRegenerated.class),
Revealed(TriggerRevealed.class), Revealed(TriggerRevealed.class),
RolledDie(TriggerRolledDie.class),
Sacrificed(TriggerSacrificed.class), Sacrificed(TriggerSacrificed.class),
Scry(TriggerScry.class), Scry(TriggerScry.class),
SearchedLibrary(TriggerSearchedLibrary.class), SearchedLibrary(TriggerSearchedLibrary.class),

View File

@@ -0,0 +1,9 @@
Name:As Luck Would Have It
ManaCost:G
Types:Enchantment
K:Hexproof
T:Mode$ RolledDie | Execute$ TrigCounters | ValidPlayer$ You | TriggerDescription$ Whenever you roll a die, put a number of luck counters on As Luck Would Have It equal to the result. Then if there are 100 or more luck counters on As Luck Would Have It, you win the game.
SVar:TrigCounters:DB$ PutCounter | Defined$ Self | CounterType$ LUCK | CounterNum$ X | SubAbility$ DBWin
SVar:DBWin:DB$ WinsGame | Defined$ You | ConditionPresent$ Card.Self+counters_GE100_LUCK
SVar:X:TriggerCount$Result
Oracle:Whenever you roll a die, put a number of luck counters on As Luck Would Have It equal to the result. Then if there are 100 or more luck counters on As Luck Would Have It, you win the game. (Count both rolls if you reroll a die.)

View File

@@ -0,0 +1,7 @@
Name:Box of Free-Range Goblins
ManaCost:4 R R
Types:Sorcery
A:SP$ RollDice | Cost$ 4 R R | ResultSVar$ Result | SubAbility$ Tokens
SVar:Tokens:DB$ Token | TokenAmount$ Result | TokenScript$ r_1_1_goblin | SpellDescription$ Create a number of 1/1 red Goblin creature tokens equal to the result.
DeckHas:Ability$Token
Oracle:Roll a six-sided die. Create a number of 1/1 red Goblin creature tokens equal to the result.

View File

@@ -0,0 +1,9 @@
Name:Chicken à la King
ManaCost:1 U U
Types:Creature Bird Noble
PT:2/2
T:Mode$ RolledDie | Execute$ TrigCounters | ValidResult$ 6 | TriggerDescription$ Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird.
SVar:TrigCounters:DB$ PutCounterAll | ValidCards$ Bird | CounterType$ P1P1 | CounterNum$ 1
A:AB$ RollDice | Cost$ tapXType<1/Bird> | SpellDescription$ Roll a six-sided die.
DeckHas:Ability$Counters
Oracle:Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird. (You may roll dice only when instructed to.)\nTap an untapped Bird you control: Roll a six-sided die. (Like now.)

View File

@@ -0,0 +1,10 @@
Name:Chicken Egg
ManaCost:1 R
Types:Creature Egg
PT:0/1
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRoll | TriggerDescription$ At the beginning of your upkeep, roll a six-sided die. If you roll a 6, sacrifice CARDNAME and create a 4/4 red Giant Bird creature token.
SVar:TrigRoll:DB$ RollDice | On6$ DBSac
SVar:DBSac:DB$ Sacrifice | Defined$ Self | SubAbility$ DBToken
SVar:DBToken:DB$ Token | TokenScript$ r_4_4_giant_chicken
DeckHas:Ability$Token
Oracle:At the beginning of your upkeep, roll a six-sided die. If you roll a 6, sacrifice Chicken Egg and create a 4/4 red Giant Bird creature token.

View File

@@ -0,0 +1,7 @@
Name:Chittering Doom
ManaCost:3 G
Types:Enchantment
T:Mode$ RolledDie | Execute$ TrigToken | ValidPlayer$ You | ValidResult$ GE4 | TriggerDescription$ Whenever you roll a 4 or higher on a die, create a 1/1 green Squirrel creature token.
SVar:TrigToken:DB$ Token | TokenScript$ g_1_1_squirrel
DeckHas:Ability$Token
Oracle:Whenever you roll a 4 or higher on a die, create a 1/1 green Squirrel creature token.

View File

@@ -0,0 +1,17 @@
Name:Dungeon Master
ManaCost:2 W U
Types:Legendary Planeswalker Dungeon-Master
Loyalty:1
K:ETBReplacement:Other:RollLoyal
SVar:RollLoyal:DB$ RollDice | Sides$ 4 | ResultSVar$ Result | SubAbility$ DBLoyalty | SpellDescription$ Add 1d4 loyalty counters to CARDNAME
SVar:DBLoyalty:DB$ PutCounter | Defined$ Self | CounterType$ LOYALTY | CounterNum$ Result | ETB$ True
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Opponent | TokenOwner$ Targeted | TokenScript$ b_1_1_skeleton_opp_life | Planeswalker$ True | SpellDescription$ Target opponent creates a 1/1 black Skeleton creature token with "When this creature dies, each opponent gains 2 life.""
A:AB$ RollDice | Cost$ AddCounter<1/LOYALTY> | Sides$ 2 | On1$ DBSkipTurn | ResultSVar$ Result | SubAbility$ DBDraw | SpellDescription$ Roll a d20. If you roll a 1, skip your next turn. If you roll a 12 or higher, draw a card.
SVar:DBSkipTurn:DB$ SkipTurn | Defined$ You | NumTurns$ 1
SVar:DBDraw:DB$ Draw | ConditionCheckSVar$ Result | ConditionSVarCompare$ GE12
A:AB$ Token | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | TokenScript$ r_3_3_fighter_first_strike | SubAbility$ DBCleric | SpellDescription$ You get an adventuring party. (Your party is a 3/3 red Fighter with first strike, a 1/1 white Cleric with lifelink, a 2/2 black Rogue with hexproof, and a 1/1 blue Wizard with flying.)
SVar:DBCleric:DB$ Token | TokenScript$ w_1_1_cleric_lifelink | SubAbility$ DBRogue
SVar:DBRogue:DB$ Token | TokenScript$ b_2_2_rogue_hexproof | SubAbility$ DBWizard
SVar:DBWizard:DB$ Token | TokenScript$ u_1_1_wizard_flying
DeckHas:Ability$Token
Oracle:[+1]: Target opponent creates a 1/1 black Skeleton creature token with “When this creature dies, each opponent gains 2 life.”\n[+1]: Roll a d20. If you roll a 1, skip your next turn. If you roll a 12 or higher, draw a card.\n[6]: You get an adventuring party. (Your party is a 3/3 red Fighter with first strike, a 1/1 white Cleric with lifelink, a 2/2 black Rogue with hexproof, and a 1/1 blue Wizard with flying.)

View File

@@ -0,0 +1,10 @@
Name:Elvish Impersonators
ManaCost:3 G
Types:Creature Elf
PT:*/*
K:Flying
K:ETBReplacement:Other:TrigRoll
SVar:TrigRoll:DB$ RollDice | ResultSVar$ SetPwr | SubAbility$ RollTough | SpellDescription$ As CARDNAME enters the battlefield, roll a six-sided die twice. Its base power becomes the first result and its base toughness becomes the second result.
SVar:RollTough:DB$ RollDice | ResultSVar$ SetTgn | SubAbility$ DBAnimate
SVar:DBAnimate:DB$ Animate | Defined$ Self | Power$ SetPwr | Toughness$ SetTgn
Oracle:As Elvish Impersonators enters the battlefield, roll a six-sided die twice. Its base power becomes the first result and its base toughness becomes the second result.

View File

@@ -0,0 +1,10 @@
Name:Goblin Tutor
ManaCost:R
Types:Instant
A:SP$ RollDice | Cost$ R | On2$ GetGobTut | On3$ GetEnch | On4$ GetArtif | On5$ GetCreat| On6$ GetSpell | SpellDescription$ Roll a six-sided die. Search your library for the indicated card, reveal it, put it into your hand, then shuffle your library.\n2 — A card named Goblin Tutor\n3 — An enchantment\n4 — An artifact\n5 — A creature\n6 — An instant or sorcery
SVar:GetGobTut:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card.namedGoblin Tutor | ChangeNum$ 1
SVar:GetEnch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Enchantment | ChangeNum$ 1
SVar:GetArtif:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Artifact | ChangeNum$ 1
SVar:GetCreat:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Creature | ChangeNum$ 1
SVar:GetSpell:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Instant,Sorcery | ChangeNum$ 1
Oracle:Roll a six-sided die. If you roll a 1, Goblin Tutor has no effect. Otherwise, search your library for the indicated card, reveal it, put it into your hand, then shuffle your library.\n2 — A card named Goblin Tutor\n3 — An enchantment\n4 — An artifact\n5 — A creature\n6 — An instant or sorcery

View File

@@ -0,0 +1,9 @@
Name:Ground Pounder
ManaCost:1 G
Types:Creature Goblin Warrior
PT:2/2
A:AB$ RollDice | Cost$ 3 G | ResultSVar$ X | SubAbility$ DBPump | SpellDescription$ Roll a six-sided die.
SVar:DBPump:DB$ Pump | Defined$ Self | NumAtt$ X | NumDef$ X | SpellDescription$ CARDNAME gets +X/+X until end of turn, where X is the result.
T:Mode$ RolledDie | Execute$ TrigTrample | ValidPlayer$ You | ValidResult$ GE5 | TriggerDescription$ Whenever you roll a 5 or higher on a die, CARDNAME gains trample until end of turn.
SVar:TrigTrample:DB$ Pump | Defined$ Self | KW$ Trample
Oracle:{3}{G}: Roll a six-sided die. Ground Pounder gets +X/+X until end of turn, where X is the result.\nWhenever you roll a 5 or higher on a die, Ground Pounder gains trample until end of turn.

View File

@@ -0,0 +1,6 @@
Name:Growth Spurt
ManaCost:1 G
Types:Instant
A:SP$ RollDice | Cost$ 1 G | ResultSVar$ X | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | ValidTgts$ Creature | NumAtt$ X | NumDef$ X | SpellDescription$ Target creature gets +X/+X until end of turn, where X is the result.
Oracle:Roll a six-sided die. Target creature gets +X/+X until end of turn, where X is the result.

View File

@@ -0,0 +1,7 @@
Name:Hammer Helper
ManaCost:3 R
Types:Sorcery
A:SP$ GainControl | Cost$ 3 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | Untap$ True | LoseControl$ EOT | SubAbility$ DBRoll | SpellDescription$ Gain control of target creature until end of turn. Untap that creature.
SVar:DBRoll:DB$ RollDice | ResultSVar$ X | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | Defined$ Targeted | NumAtt$ X | KW$ Haste | SpellDescription$ Until end of turn, it gains haste and gets +X/+0, where X is the result.
Oracle:Gain control of target creature until end of turn. Untap that creature and roll a six-sided die. Until end of turn, it gains haste and gets +X/+0, where X is the result.

View File

@@ -0,0 +1,13 @@
Name:Hammer Jammer
ManaCost:3 R
Types:Creature Goblin Warrior
PT:0/0
K:ETBReplacement:Other:RollCounters
SVar:RollCounters:DB$ RollDice | ResultSVar$ Result | SubAbility$ DBCounters | SpellDescription$ As CARDNAME enters the battlefield, roll a six-sided die. CARDNAME enters the battlefield with a number of +1/+1 counters on it equal to the total of those results.
SVar:DBCounters:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Result | ETB$ True
T:Mode$ RolledDie | Execute$ TrigRemove | ValidPlayer$ You | TriggerDescription$ Whenever you roll a die, remove all +1/+1 counters from CARDNAME, then put a number of +1/+1 counters on it equal to the result.
SVar:TrigRemove:DB$ RemoveCounterAll | ValidCards$ Card.Self | CounterType$ P1P1 | AllCounters$ True | SubAbility$ TrigCounters
SVar:X:TriggerCount$Result
SVar:TrigCounters:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ X
DeckHas:Ability$Counters
Oracle:As Hammer Jammer enters the battlefield, roll a six-sided die. Hammer Jammer enters the battlefield with a number of +1/+1 counters on it equal to the result.\nWhenever you roll a die, remove all +1/+1 counters from Hammer Jammer, then put a number of +1/+1 counters on it equal to the result.

View File

@@ -0,0 +1,12 @@
Name:Hydradoodle
ManaCost:X X G G
Types:Creature Hydra Dog
PT:0/0
K:ETBReplacement:Other:RollCounters
SVar:X:Count$xPaid
SVar:RollCounters:DB$ RollDice | Amt$ X | ResultSVar$ Result | SubAbility$ DBCounters | SpellDescription$ As CARDNAME enters the battlefield, roll X six-sided dice. CARDNAME enters the battlefield with a number of +1/+1 counters on it equal to the total of those results.
SVar:DBCounters:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Result | ETB$ True
K:Reach
K:Trample
DeckHas:Ability$Counters
Oracle:As Hydradoodle enters the battlefield, roll X six-sided dice. Hydradoodle enters the battlefield with a number of +1/+1 counters on it equal to the total of those results.\nReach, trample

View File

@@ -0,0 +1,11 @@
Name:Inhumaniac
ManaCost:1 B
Types:Creature Brainiac
PT:1/1
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRoll | TriggerDescription$ At the beginning of your upkeep, roll a six-sided die. On a 3 or 4, put a +1/+1 counter on Inhumaniac. On a 5 or higher, put two +1/+1 counters on it. On a 1, remove all +1/+1 counters from Inhumaniac.
SVar:TrigRoll:DB$ RollDice | On3$ DBOne | On4$ DBOne | On5$ DBTwo | On6$ DBTwo | On1$ DBRemove
SVar:DBOne:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
SVar:DBTwo:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 2
SVar:DBRemove:DB$ RemoveCounterAll | ValidCards$ Card.Self | CounterType$ P1P1 | AllCounters$ True
DeckHas:Ability$Counters
Oracle:At the beginning of your upkeep, roll a six-sided die. On a 3 or 4, put a +1/+1 counter on Inhumaniac. On a 5 or higher, put two +1/+1 counters on it. On a 1, remove all +1/+1 counters from Inhumaniac.

View File

@@ -0,0 +1,17 @@
Name:Jumbo Imp
ManaCost:2 B
Types:Creature Imp
PT:0/0
K:ETBReplacement:Other:RollCounters
SVar:X:Count$xPaid
SVar:RollCounters:DB$ RollDice | ResultSVar$ Result | SubAbility$ DBCountersETB | SpellDescription$ As Jumbo Imp enters the battlefield, roll a six-sided die. Jumbo Imp enters the battlefield with a number of +1/+1 counters on it equal to the result.
SVar:DBCountersETB:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Result | ETB$ True
K:Flying
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRollUpkeep | TriggerDescription$ At the beginning of your upkeep, roll a six-sided die and put a number of +1/+1 counters on CARDNAME equal to the result.
SVar:TrigRollUpkeep:DB$ RollDice | ResultSVar$ Result | SubAbility$ DBCountersUpkeep
SVar:DBCountersUpkeep:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Result
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRollEnd | TriggerDescription$ At the beginning of your end step, roll a six-sided die and remove a number of +1/+1 counters from Jumbo Imp equal to the result.
SVar:TrigRollEnd:DB$ RollDice | ResultSVar$ Result | SubAbility$ DBCountersEnd
SVar:DBCountersEnd:DB$ RemoveCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Result
DeckHas:Ability$Counters
Oracle:Flying\nAs Jumbo Imp enters the battlefield, roll a six-sided die. Jumbo Imp enters the battlefield with a number of +1/+1 counters on it equal to the result.\nAt the beginning of your upkeep, roll a six-sided die and put a number of +1/+1 counters on Jumbo Imp equal to the result.\nAt the beginning of your end step, roll a six-sided die and remove a number of +1/+1 counters from Jumbo Imp equal to the result.

View File

@@ -0,0 +1,9 @@
Name:Krazy Kow
ManaCost:3 R
Types:Creature Cow
PT:3/3
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRoll | TriggerDescription$ At the beginning of your upkeep, roll a six-sided die. If you a roll a 1, sacrifice Krazy Kow and it deals 3 damage to each creature and each player.
SVar:TrigRoll:DB$ RollDice | On1$ DBSac
SVar:DBSac:DB$ Sacrifice | Defined$ Self | SubAbility$ DBDamage
SVar:DBDamage:DB$ DamageAll | ValidCards$ Creature | ValidPlayers$ Player | NumDmg$ 3
Oracle:At the beginning of your upkeep, roll a six-sided die. If you a roll a 1, sacrifice Krazy Kow and it deals 3 damage to each creature and each player.

View File

@@ -0,0 +1,14 @@
Name:Jack-in-the-Mox
ManaCost:0
Types:Artifact
A:AB$ RollDice | Cost$ T | On1$ DBSac | On2$ AddW | On3$ AddU | On4$ AddB | On5$ AddR | On6$ AddG | InstantSpeed$ True | SubAbility$ Add0 | SpellDescription$ Roll a six-sided die. This ability has the indicated effect. 1—Sacrifice Jack-in-the-Mox and you lose 5 life. 2—Add {W}. 3—Add {U}. 4—Add {B}. 5-Add {R}. 6-Add {G}.
SVar:DBSac:DB$ Sacrifice | Defined$ Self | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 5
SVar:AddW:DB$ Mana | Produced$ W
SVar:AddU:DB$ Mana | Produced$ U
SVar:AddB:DB$ Mana | Produced$ B
SVar:AddR:DB$ Mana | Produced$ R
SVar:AddG:DB$ Mana | Produced$ G
SVar:Add0:DB$ Mana | Produced$ C | Amount$ 0
SVar:PlayMain1:TRUE
Oracle:{T}: Roll a six-sided die. This ability has the indicated effect.\n1 — Sacrifice Jack-in-the-Mox and you lose 5 life.\n2 — Add {W}.\n3 — Add {U}.\n4 — Add {B}.\n5 — Add {R}.\n6 — Add {G}.

View File

@@ -0,0 +1,9 @@
Name:Lobe Lobber
ManaCost:2
Types:Artifact Equipment
K:Equip:2
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ WandDamage | AddSVar$ DBWandDmg | Description$ Equipped creature has "{T}: This creature deals 1 damage to target player or planeswalker. Roll a six-sided die. On a 5 or higher, untap it."
SVar:WandDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Planeswalker,Player | TgtPrompt$ Select target Planeswalker or player | NumDmg$ 1 | SubAbility$ DBRoll | SpellDescription$ This creature deals 1 damage to target player or planeswalker. Roll a six-sided die. On a 5 or higher, untap it.
SVar:DBRoll:DB$ RollDice | On5$ DBUntap | On6$ DBUntap
SVar:DBUntap:DB$ Untap
Oracle:Equipped creature has “{T}: This creature deals 1 damage to target player or planeswalker. Roll a six-sided die. On a 5 or higher, untap it.”\nEquip {2}

View File

@@ -0,0 +1,9 @@
Name:Goblin Bowling Team
ManaCost:3 R
Types:Creature - Goblin
PT:1/1
R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.Self | ReplaceWith$ RollDamage | Description$ If CARDNAME would deal damage to a permanent or player, it deals that much damage plus the result of a six-sided die roll to that permanent or player instead.
SVar:RollDamage:DB$ RollDice | ResultSVar$ Result | SubAbility$ DmgPlus
SVar:DmgPlus:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X
SVar:X:ReplaceCount$DamageAmount/Plus.Result
Oracle:If Goblin Bowling Team would deal damage to a permanent or player, it deals that much damage plus the result of a six-sided die roll to that permanent or player instead.

View File

@@ -0,0 +1,9 @@
Name:Mad Science Fair Project
ManaCost:3
Types:Artifact
A:AB$ Pump | Cost$ T | ValidTgts$ Player | SubAbility$ DBRoll
SVar:DBRoll:DB$ RollDice | On1$ AddC | On2$ AddC | On3$ AddC | Else$ AddAny | SpellDescription$ {T}: Roll a six-sided die. On a 3 or lower, target player adds {C}. Otherwise, that player adds one mana of any color they choose.
SVar:AddC:DB$ Mana | Produced$ C | Defined$ Targeted
SVar:AddAny:DB$ Mana | Produced$ Any | Defined$ Targeted
SVar:PlayMain1:TRUE
Oracle:{T}: Roll a six-sided die. On a 3 or lower, target player adds {C}. Otherwise, that player adds one mana of any color they choose.

View File

@@ -0,0 +1,8 @@
Name:Painiac
ManaCost:2 R
Types:Creature Brainiac
PT:0/3
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRoll | TriggerDescription$ At the beginning of your upkeep, roll a six-sided die. CARDNAME gets +X/+0 until end of turn, where X is the result.
SVar:TrigRoll:DB$ RollDice | ResultSVar$ X | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | Defined$ Self | NumAtt$ X
Oracle:At the beginning of your upkeep, roll a six-sided die. Painiac gets +X/+0 until end of turn, where X is the result.

View File

@@ -0,0 +1,11 @@
Name:Poultrygeist
ManaCost:2 B
Types:Creature Bird Spirit
PT:1/1
K:Flying
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigRoll | TriggerDescription$ Whenever a creature dies, you may roll a six-sided die. If you roll a 1, sacrifice CARDNAME. Otherwise, put a +1/+1 counter on CARDNAME.
SVar:TrigRoll:DB$ RollDice | On1$ DBSac | Else$ DBCounter
SVar:DBSac:DB$ Sacrifice | Defined$ Self
SVar:DBCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
DeckHas:Ability$Counters
Oracle:Flying\nWhenever a creature dies, you may roll a six-sided die. If you roll a 1, sacrifice Poultrygeist. Otherwise, put a +1/+1 counter on Poultrygeist.

View File

@@ -0,0 +1,15 @@
Name:Spark Fiend
ManaCost:4 R
Types:Creature Beast
PT:5/6
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigRollETB | TriggerDescription$ When Spark Fiend enters the battlefield, roll two six-sided dice. If you rolled 2, 3, or 12, sacrifice Spark Fiend. If you rolled 7 or 11, dont roll dice for Spark Fiend during any of your following upkeeps. If you rolled any other total, note that total.
SVar:TrigRollETB:DB$ RollDice | Amt$ 2 | On2$ DBSac | On3$ DBSac | On12$ DBSac | On7$ DBSafe | Else$ DBNote | ResultSVar$ Result
SVar:DBSac:DB$ Sacrifice | Defined$ Self
SVar:Safe:Number$1
SVar:Noted:Number$0
SVar:DBSafe:DB$ StoreSVar | SVar$ Safe | Type$ Number | Expression$ 0
SVar:DBNote:DB$ StoreSVar | SVar$ Noted | Type$ CountSVar | Expression$ Result
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | CheckSVar$ Safe | SVarCompare$ NE0 | TriggerZones$ Battlefield | Execute$ TrigRoll | TriggerDescription$ At the beginning of your upkeep, roll two six-sided dice. If you rolled 7, sacrifice Spark Fiend. If you roll the noted total, dont roll dice for Spark Fiend during any of your following upkeeps. Otherwise, do nothing.
SVar:TrigRoll:DB$ RollDice | Amt$ 2 | On7$ DBSac | ResultSVar$ Result | SubAbility$ DBCheck
SVar:DBCheck:DB$ StoreSVar | SVar$ Safe | Type$ CountSVar | Expression$ Result/Minus.Noted
Oracle:When Spark Fiend enters the battlefield, roll two six-sided dice. If you rolled 2, 3, or 12, sacrifice Spark Fiend. If you rolled 7 or 11, dont roll dice for Spark Fiend during any of your following upkeeps. If you rolled any other total, note that total.\nAt the beginning of your upkeep, roll two six-sided dice. If you rolled 7, sacrifice Spark Fiend. If you roll the noted total, dont roll dice for Spark Fiend during any of your following upkeeps. Otherwise, do nothing.

View File

@@ -0,0 +1,9 @@
Name:Steel Squirrel
ManaCost:2
Types:Artifact Creature Squirrel
PT:1/1
T:Mode$ RolledDie | Execute$ TrigPump | ValidPlayer$ You | ValidResult$ GE5 | TriggerDescription$ Whenever you roll a 5 or higher on a die, CARDNAME gets +X/+X until end of turn, where X is the result.
SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ X | NumDef$ X
SVar:X:TriggerCount$Result
A:AB$ RollDice | Cost$ 6 | SpellDescription$ Roll a six-sided die.
Oracle:{3}{G}: Roll a six-sided die. Ground Pounder gets +X/+X until end of turn, where X is the result.\nWhenever you roll a 5 or higher on a die, Ground Pounder gains trample until end of turn.

View File

@@ -0,0 +1,14 @@
Name:Strategy, Schmategy
ManaCost:1 R
Types:Sorcery
A:SP$ StoreSVar | Cost$ 1 R | SVar$ Left | Type$ Number | Expression$ 1 | SubAbility$ DBRepeat
SVar:DBRepeat:DB$ Repeat | RepeatCheckSVar$ Left | RepeatSVarCompare$ GT0 | RepeatSubAbility$ Roll | StackDescription$ Roll a six-sided die. Strategy, Schmategy has the indicated effect. 1-Do nothing. 2-Destroy all artifacts. 3-Destroy all lands. 4-Strategy, Schmategy deals 3 damage to each creature and each player. 5-Each player discards their hand and draws seven cards. 6-Repeat this process two more times.
SVar:Roll:DB$ RollDice | On2$ DBArtif | On3$ DBLand | On4$ DBDamage | On5$ DBWheel | On6$ DBTwoMore | SubAbility$ DBDecr
SVar:DBArtif:DB$ DestroyAll | ValidCards$ Artifact
SVar:DBLand:DB$ DestroyAll | ValidCards$ Land
SVar:DBDamage:DB$ DamageAll | ValidCards$ Creature | ValidPlayers$ Player | NumDmg$ 3
SVar:DBWheel:DB$ Discard | Mode$ Hand | Defined$ Player | SubAbility$ DBEachDraw
SVar:DBEachDraw:DB$ Draw | Defined$ Player | NumCards$ 7
SVar:DBTwoMore:DB$ StoreSVar | SVar$ Left | Type$ CountSVar | Expression$ Left/Plus.2
SVar:DBDecr:DB$ StoreSVar | SVar$ Left | Type$ CountSVar | Expression$ Left/Minus.1
Oracle:Roll a six-sided die. Strategy, Schmategy has the indicated effect.\n1 — Do nothing.\n2 — Destroy all artifacts.\n3 — Destroy all lands.\n4 — Strategy, Schmategy deals 3 damage to each creature and each player.\n5 — Each player discards their hand and draws seven cards.\n6 — Repeat this process two more times.

View File

@@ -6,7 +6,7 @@ S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$
T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoop | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, create a 4/4 gold Dragon creature token with flying and roll a d20 (a twenty-sided die). If you roll a 20, repeat this process. T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoop | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, create a 4/4 gold Dragon creature token with flying and roll a d20 (a twenty-sided die). If you roll a 20, repeat this process.
SVar:TrigLoop:DB$ Repeat | RepeatCheckSVar$ RepeatCheck | RepeatSVarCompare$ GT0 | RepeatSubAbility$ TrigToken | StackDescription$ Create a 4/4 gold Dragon creature token with flying and roll a d20. If you roll a 20, repeat this process. SVar:TrigLoop:DB$ Repeat | RepeatCheckSVar$ RepeatCheck | RepeatSVarCompare$ GT0 | RepeatSubAbility$ TrigToken | StackDescription$ Create a 4/4 gold Dragon creature token with flying and roll a d20. If you roll a 20, repeat this process.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_4_4_dragon_flying | TokenOwner$ You | SubAbility$ RollDie SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_4_4_dragon_flying | TokenOwner$ You | SubAbility$ RollDie
SVar:RollDie:DB$ GenericChoice | Choices$ Win,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose,Lose | AtRandom$ True SVar:RollDie:DB$ RollDice | Sides$ 20 | On20$ Win | Else$ Lose
SVar:Win:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 1 SVar:Win:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 1
SVar:Lose:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 0 SVar:Lose:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 0
SVar:RepeatCheck:Number$ 1 SVar:RepeatCheck:Number$ 1

View File

@@ -0,0 +1,14 @@
Name:Temp of the Damned
ManaCost:2 B
Types:Creature Zombie
PT:3/3
K:ETBReplacement:Other:RollCounters
SVar:RollCounters:DB$ RollDice | ResultSVar$ Result | SubAbility$ DBCounters | SpellDescription$ As CARDNAME enters the battlefield, roll a six-sided die. CARDNAME enters the battlefield with a number of FUNK counters on it equal to the total of those results.
SVar:DBCounters:DB$ PutCounter | Defined$ Self | CounterType$ FUNK | CounterNum$ Result | ETB$ True
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your upkeep, remove a funk counter from CARDNAME. If you cant, sacrifice it.
SVar:TrigRemove:DB$ RemoveCounter | Defined$ Self | CounterType$ FUNK | CounterNum$ 1 | RememberRemoved$ True | SubAbility$ DBSac
SVar:DBSac:DB$ Sacrifice | SacValid$ Self | ConditionCheckSVar$ FadingCheckSVar | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup
SVar:FadingCheckSVar:Count$RememberedSize
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Counters
Oracle:As Temp of the Damned enters the battlefield, roll a six-sided die. Temp of the Damned enters the battlefield with a number of funk counters on it equal to the result.\nAt the beginning of your upkeep, remove a funk counter from Temp of the Damned. If you cant, sacrifice it.

View File

@@ -0,0 +1,6 @@
Name:Time Out
ManaCost:4 U
Types:Instant
A:SP$ RollDice | Cost$ 4 U | ResultSVar$ X | SubAbility$ Tuck
SVar:Tuck:DB$ ChangeZone | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ X | SpellDescription$ Put target nonland permanent into its owner's library just beneath the top X cards of that library.
Oracle:Roll a six-sided die. Put target nonland permanent into its owners library just beneath the top X cards of that library, where X is the result.

View File

@@ -0,0 +1,12 @@
Name:Urza's Science Fair Project
ManaCost:6
Types:Artifact Creature Construct
PT:4/4
A:AB$ RollDice | Cost$ 2 | On1$ M2 | On2$ Fog | On3$ Vig | On4$ FS | On5$ Fly | On6$ P2 | SpellDescription$ Roll a six-sided die. CARDNAME gets the indicated result: 1-It gets -2/-2 until end of turn. 2-Prevent all combat damage it would deal this turn. 3-It gains vigilance until end of turn. 4-It gains first strike until end of turn. 5-It gains flying until end of turn. 6-It gets +2/+2 until end of turn.
SVar:M2:DB$ Pump | Defined$ Self | NumAtt$ -2 | NumDef$ -2
SVar:Fog:DB$ Pump | Defined$ Self | KW$ Prevent all combat damage that would be dealt by CARDNAME.
SVar:Vig:DB$ Pump | Defined$ Self | KW$ Vigilance
SVar:FS:DB$ Pump | Defined$ Self | KW$ First Strike
SVar:Fly:DB$ Pump | Defined$ Self | KW$ Flying
SVar:P2:DB$ Pump | Defined$ Self | NumAtt$ 2 | NumDef$ 2
Oracle:{2}: Roll a six-sided die. Urzas Science Fair Project gets the indicated result.\n1 — It gets -2/-2 until end of turn.\n2 — Prevent all combat damage it would deal this turn.\n3 — It gains vigilance until end of turn.\n4 — It gains first strike until end of turn.\n5 — It gains flying until end of turn.\n6 — It gets +2/+2 until end of turn.

View File

@@ -0,0 +1,7 @@
Name:Waste Land
ManaCost:no cost
Types:Land
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
A:AB$ Destroy | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target land. | SubAbility$ DBToken | AILogic$ GhostQuarter | AITgts$ Land.nonBasic | SpellDescription$ Destroy target nonbasicland. That land's controller creates a Wastes land token. (It has {T}: Add {C}.)
SVar:DBToken:DB$ Token | TokenScript$ c_l_wastes | TokenOwner$ TargetedController
Oracle:{T}: Add {C}.\n{T}, Sacrifice Waste Land: Destroy target nonbasic land. That land's controller creates a Wastes land token. (It has {T}: Add {C}.)

View File

@@ -0,0 +1,10 @@
Name:Willing Test Subject
ManaCost:2 G
Types:Creature Spider Monkey Scientist
PT:2/2
K:Reach
T:Mode$ RolledDie | Execute$ TrigCounter | ValidPlayer$ You | ValidResult$ GE4 | TriggerDescription$ Whenever you roll a 4 or higher on a die, put a +1/+1 counter on CARDNAME.
SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
A:AB$ RollDice | Cost$ 6 | SpellDescription$ Roll a six-sided die.
DeckHas:Ability$Counters
Oracle:Reach\nWhenever you roll a 4 or higher on a die, put a +1/+1 counter on Willing Test Subject.\n{6}: Roll a six-sided die.

View File

@@ -5,5 +5,5 @@ PT:1/1
K:Shadow K:Shadow
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may have it deal 1 damage to target creature. If you do, prevent all combat damage CARDNAME would deal this turn. T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may have it deal 1 damage to target creature. If you do, prevent all combat damage CARDNAME would deal this turn.
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SubAbility$ DBPump SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | Defined$ Self KW$ Prevent all combat damage that would be dealt by CARDNAME. SVar:DBPump:DB$ Pump | Defined$ Self | KW$ Prevent all combat damage that would be dealt by CARDNAME.
Oracle:Shadow (This creature can block or be blocked by only creatures with shadow.)\nWhenever Zealot il-Vec attacks and isn't blocked, you may have it deal 1 damage to target creature. If you do, prevent all combat damage Zealot il-Vec would deal this turn. Oracle:Shadow (This creature can block or be blocked by only creatures with shadow.)\nWhenever Zealot il-Vec attacks and isn't blocked, you may have it deal 1 damage to target creature. If you do, prevent all combat damage Zealot il-Vec would deal this turn.

View File

@@ -42,6 +42,7 @@ Berserker:Berserkers
Bird:Birds Bird:Birds
Blinkmoth:Blinkmoths Blinkmoth:Blinkmoths
Boar:Boars Boar:Boars
Brainiac:Brainiacs
Bringer:Bringers Bringer:Bringers
Brushwagg:Brushwaggs Brushwagg:Brushwaggs
Camarid:Camarids Camarid:Camarids
@@ -89,6 +90,7 @@ Elk:Elks
Eye:Eyes Eye:Eyes
Faerie:Faeries Faerie:Faeries
Ferret:Ferrets Ferret:Ferrets
Fighter:Fighters
Fish:Fish Fish:Fish
Flagbearer:Flagbearers Flagbearer:Flagbearers
Fox:Foxes Fox:Foxes
@@ -209,6 +211,7 @@ Sand:Sands
Saproling:Saprolings Saproling:Saprolings
Satyr:Satyrs Satyr:Satyrs
Scarecrow:Scarecrows Scarecrow:Scarecrows
Scientist:Scientists
Scion:Scions Scion:Scions
Scorpion:Scorpions Scorpion:Scorpions
Scout:Scouts Scout:Scouts
@@ -313,6 +316,7 @@ Davriel
Domri Domri
Dovin Dovin
Duck Duck
Dungeon-Master
Elspeth Elspeth
Estrid Estrid
Freyalise Freyalise

View File

@@ -0,0 +1,8 @@
Name:Skeleton
ManaCost:no cost
Types:Creature Minion
Colors:black
PT:1/1
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, each opponent gains 2 life.
SVar:TrigGainLife:DB$ GainLife | Defined$ Player.Opponent | LifeAmount$ 2
Oracle:When this creature dies, each opponent gains 2 life.

View File

@@ -0,0 +1,7 @@
Name:Rogue
ManaCost:no cost
Types:Creature Rogue
Colors:black
PT:2/2
K:Hexproof
Oracle:Hexproof (This creature can't be the target of spells or abilities your opponents control.)

View File

@@ -0,0 +1,6 @@
Name:Wastes
ManaCost:no cost
Types:Land
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
DeckHas:Ability$Mana.Colorless
Oracle:{T}: Add {C}.

View File

@@ -0,0 +1,7 @@
Name:Fighter
ManaCost:no cost
Types:Creature Fighter
Colors:red
PT:3/3
K:First Strike
Oracle:First strike

View File

@@ -1,6 +1,6 @@
Name:Giant Chicken Name:Giant Chicken
ManaCost:no cost ManaCost:no cost
Types:Creature Giant Chicken Types:Creature Giant Bird
Colors:red Colors:red
PT:4/4 PT:4/4
Oracle: Oracle:

View File

@@ -0,0 +1,7 @@
Name:Wizard
ManaCost:no cost
Types:Creature Wizard
Colors:blue
PT:1/1
K:Flying
Oracle:Flying

View File

@@ -0,0 +1,7 @@
Name:Cleric
ManaCost:no cost
Types:Creature Cleric
Colors:white
PT:1/1
K:Lifelink
Oracle:Lifelink