mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Merge branch 'master' of git.cardforge.org:core-developers/forge into push_down_toStringMap_part_3
This commit is contained in:
@@ -8,7 +8,8 @@ public enum CardSplitType
|
||||
Transform(FaceSelectionMethod.USE_ACTIVE_FACE, CardStateName.Transformed),
|
||||
Meld(FaceSelectionMethod.USE_ACTIVE_FACE, CardStateName.Meld),
|
||||
Split(FaceSelectionMethod.COMBINE, CardStateName.RightSplit),
|
||||
Flip(FaceSelectionMethod.USE_PRIMARY_FACE, CardStateName.Flipped);
|
||||
Flip(FaceSelectionMethod.USE_PRIMARY_FACE, CardStateName.Flipped),
|
||||
Adventure(FaceSelectionMethod.USE_PRIMARY_FACE, CardStateName.Adventure);
|
||||
|
||||
CardSplitType(FaceSelectionMethod calcMode, CardStateName stateName) {
|
||||
method = calcMode;
|
||||
|
||||
@@ -9,6 +9,7 @@ public enum CardStateName {
|
||||
Meld,
|
||||
LeftSplit,
|
||||
RightSplit,
|
||||
Adventure,
|
||||
|
||||
;
|
||||
|
||||
|
||||
@@ -146,6 +146,10 @@ public class GameAction {
|
||||
}
|
||||
}
|
||||
|
||||
// if an adventureCard is put from Stack somewhere else, need to reset to Original State
|
||||
if (c.isAdventureCard() && (zoneFrom.is(ZoneType.Stack) || !zoneTo.is(ZoneType.Stack))) {
|
||||
c.setState(CardStateName.Original, true);
|
||||
}
|
||||
|
||||
// Clean up the temporary Dash SVar when the Dashed card leaves the battlefield
|
||||
// Clean up the temporary AtEOT SVar
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import forge.card.CardStateName;
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.card.mana.ManaCostParser;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
@@ -101,6 +102,45 @@ public final class GameActionUtil {
|
||||
}
|
||||
source.turnFaceDownNoUpdate();
|
||||
lkicheck = true;
|
||||
} else if (sa.isAdventure() && !source.isInZone(ZoneType.Battlefield)) {
|
||||
if (!source.isLKI()) {
|
||||
source = CardUtil.getLKICopy(source);
|
||||
}
|
||||
|
||||
source.setState(CardStateName.Adventure, false);
|
||||
|
||||
// need to reset CMC
|
||||
source.setLKICMC(-1);
|
||||
source.setLKICMC(source.getCMC());
|
||||
lkicheck = true;
|
||||
} else if (source.isSplitCard() && (sa.isLeftSplit() || sa.isRightSplit())) {
|
||||
if (!source.isLKI()) {
|
||||
source = CardUtil.getLKICopy(source);
|
||||
}
|
||||
if (sa.isLeftSplit()) {
|
||||
if (!source.hasState(CardStateName.LeftSplit)) {
|
||||
source.addAlternateState(CardStateName.LeftSplit, false);
|
||||
source.getState(CardStateName.LeftSplit).copyFrom(
|
||||
sa.getHostCard().getState(CardStateName.LeftSplit), true);
|
||||
}
|
||||
|
||||
source.setState(CardStateName.LeftSplit, false);
|
||||
}
|
||||
|
||||
if (sa.isRightSplit()) {
|
||||
if (!source.hasState(CardStateName.RightSplit)) {
|
||||
source.addAlternateState(CardStateName.RightSplit, false);
|
||||
source.getState(CardStateName.RightSplit).copyFrom(
|
||||
sa.getHostCard().getState(CardStateName.RightSplit), true);
|
||||
}
|
||||
|
||||
source.setState(CardStateName.RightSplit, false);
|
||||
}
|
||||
|
||||
// need to reset CMC
|
||||
source.setLKICMC(-1);
|
||||
source.setLKICMC(source.getCMC());
|
||||
lkicheck = true;
|
||||
}
|
||||
|
||||
if (lkicheck) {
|
||||
@@ -132,20 +172,6 @@ public final class GameActionUtil {
|
||||
newSA = sa.copyWithManaCostReplaced(activator, o.getAltManaCost());
|
||||
newSA.setBasicSpell(false);
|
||||
changedManaCost = true;
|
||||
if (host.hasSVar("AsForetoldSplitCMCHack")) {
|
||||
// TODO: This is a temporary workaround for As Foretold interaction with split cards, better solution needed.
|
||||
if (sa.isLeftSplit()) {
|
||||
int leftCMC = sa.getHostCard().getCMC(Card.SplitCMCMode.LeftSplitCMC);
|
||||
if (leftCMC > host.getCounters(CounterType.TIME)) {
|
||||
continue;
|
||||
}
|
||||
} else if (sa.isRightSplit()) {
|
||||
int rightCMC = sa.getHostCard().getCMC(Card.SplitCMCMode.RightSplitCMC);
|
||||
if (rightCMC > host.getCounters(CounterType.TIME)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
newSA = sa.copy(activator);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ public enum GlobalRuleChange {
|
||||
manapoolsDontEmpty ("Mana pools don't empty as steps and phases end."),
|
||||
noCycling ("Players can't cycle cards."),
|
||||
noCreatureETBTriggers ("Creatures entering the battlefield don't cause abilities to trigger."),
|
||||
noCreatureDyingTriggers ("Creatures dying don't cause abilities to trigger."),
|
||||
noLegendRule ("The legend rule doesn't apply."),
|
||||
noPrevention ("Damage can't be prevented."),
|
||||
/* onlyOneAttackerATurn ("No more than one creature can attack each turn."), */
|
||||
|
||||
@@ -351,9 +351,12 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
else if (isDoubleFaced() && currentStateName != CardStateName.Transformed) {
|
||||
return CardStateName.Transformed;
|
||||
}
|
||||
else if (this.isMeldable() && currentStateName != CardStateName.Meld) {
|
||||
else if (isMeldable() && currentStateName != CardStateName.Meld) {
|
||||
return CardStateName.Meld;
|
||||
}
|
||||
else if (this.isAdventureCard() && currentStateName != CardStateName.Adventure) {
|
||||
return CardStateName.Adventure;
|
||||
}
|
||||
else {
|
||||
return CardStateName.Original;
|
||||
}
|
||||
@@ -803,6 +806,10 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
return getRules() != null && getRules().getSplitType() == CardSplitType.Split;
|
||||
}
|
||||
|
||||
public final boolean isAdventureCard() {
|
||||
return hasState(CardStateName.Adventure);
|
||||
}
|
||||
|
||||
public final boolean isBackSide() {
|
||||
return backside;
|
||||
}
|
||||
@@ -1989,7 +1996,19 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
continue;
|
||||
}
|
||||
|
||||
final String sAbility = formatSpellAbility(sa);
|
||||
String sAbility = formatSpellAbility(sa);
|
||||
|
||||
// add Adventure to AbilityText
|
||||
if (sa.isAdventure() && state.getView().getState().equals(CardStateName.Original)) {
|
||||
StringBuilder sbSA = new StringBuilder();
|
||||
sbSA.append("Adventure — ").append(getState(CardStateName.Adventure).getName());
|
||||
if (sa.getPayCosts() != null) {
|
||||
sbSA.append(" ").append(sa.getPayCosts().toSimpleString());
|
||||
}
|
||||
sbSA.append(": ");
|
||||
sbSA.append(sAbility);
|
||||
sAbility = sbSA.toString();
|
||||
}
|
||||
|
||||
if (sa.getManaPart() != null) {
|
||||
if (addedManaStrings.contains(sAbility)) {
|
||||
@@ -2397,10 +2416,21 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
|
||||
// add Facedown abilities from Original state but only if this state is face down
|
||||
// need CardStateView#getState or might crash in StackOverflow
|
||||
if ((mana == null || mana == false) && isFaceDown() && state.getView().getState() == CardStateName.FaceDown) {
|
||||
for (SpellAbility sa : getState(CardStateName.Original).getNonManaAbilities()) {
|
||||
if (sa.isManifestUp() || sa.isMorphUp()) {
|
||||
list.add(sa);
|
||||
if (isInZone(ZoneType.Battlefield)) {
|
||||
if ((mana == null || mana == false) && isFaceDown() && state.getView().getState() == CardStateName.FaceDown) {
|
||||
for (SpellAbility sa : getState(CardStateName.Original).getNonManaAbilities()) {
|
||||
if (sa.isManifestUp() || sa.isMorphUp()) {
|
||||
list.add(sa);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Adenture may only be cast not from Battlefield
|
||||
if (isAdventureCard() && state.getView().getState() == CardStateName.Original) {
|
||||
for (SpellAbility sa : getState(CardStateName.Adventure).getSpellAbilities()) {
|
||||
if (mana == null || mana == sa.isManaAbility()) {
|
||||
list.add(sa);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5731,6 +5761,12 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
}
|
||||
|
||||
public void setSplitStateToPlayAbility(final SpellAbility sa) {
|
||||
if (isAdventureCard()) {
|
||||
if (sa.isAdventure()) {
|
||||
setState(CardStateName.Adventure, true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!isSplitCard()) {
|
||||
return; // just in case
|
||||
}
|
||||
|
||||
@@ -305,6 +305,11 @@ public class CardFactory {
|
||||
} else if (c.isMeldable() && cp instanceof PaperCard) {
|
||||
c.setState(CardStateName.Meld, false);
|
||||
c.setImageKey(cp.getImageKey(true));
|
||||
} else if (c.isAdventureCard()) {
|
||||
c.setState(CardStateName.Adventure, false);
|
||||
c.setImageKey(originalPicture);
|
||||
c.setSetCode(cp.getEdition());
|
||||
c.setRarity(cp.getRarity());
|
||||
}
|
||||
|
||||
c.setSetCode(cp.getEdition());
|
||||
@@ -325,7 +330,6 @@ public class CardFactory {
|
||||
|
||||
// ******************************************************************
|
||||
// ************** Link to different CardFactories *******************
|
||||
|
||||
if (state == CardStateName.LeftSplit || state == CardStateName.RightSplit) {
|
||||
for (final SpellAbility sa : card.getSpellAbilities()) {
|
||||
if (state == CardStateName.LeftSplit) {
|
||||
@@ -342,6 +346,9 @@ public class CardFactory {
|
||||
} else if (state != CardStateName.Original){
|
||||
CardFactoryUtil.setupKeywordedAbilities(card);
|
||||
}
|
||||
if (state == CardStateName.Adventure) {
|
||||
CardFactoryUtil.setupAdventureAbility(card);
|
||||
}
|
||||
}
|
||||
|
||||
card.setState(CardStateName.Original, false);
|
||||
@@ -728,6 +735,14 @@ public class CardFactory {
|
||||
final CardState ret2 = new CardState(out, CardStateName.Flipped);
|
||||
ret2.copyFrom(in.getState(CardStateName.Flipped, true), false);
|
||||
result.put(CardStateName.Flipped, ret2);
|
||||
} else if (in.isAdventureCard()) {
|
||||
final CardState ret1 = new CardState(out, CardStateName.Original);
|
||||
ret1.copyFrom(in.getState(CardStateName.Original, true), false);
|
||||
result.put(CardStateName.Original, ret1);
|
||||
|
||||
final CardState ret2 = new CardState(out, CardStateName.Adventure);
|
||||
ret2.copyFrom(in.getState(CardStateName.Adventure, true), false);
|
||||
result.put(CardStateName.Adventure, ret2);
|
||||
} else {
|
||||
// in all other cases just copy the current state to original
|
||||
final CardState ret = new CardState(out, CardStateName.Original);
|
||||
|
||||
@@ -4738,4 +4738,30 @@ public class CardFactoryUtil {
|
||||
}
|
||||
return byClause + StringUtils.join(orClauses, " or ") + ".";
|
||||
}
|
||||
|
||||
public static void setupAdventureAbility(Card card) {
|
||||
if (card.getCurrentStateName() != CardStateName.Adventure) {
|
||||
return;
|
||||
}
|
||||
SpellAbility sa = card.getFirstSpellAbility();
|
||||
if (sa == null) {
|
||||
return;
|
||||
}
|
||||
sa.setAdventure(true);
|
||||
|
||||
String abExile = "DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Exile | StackDescription$ None";
|
||||
|
||||
AbilitySub saExile = (AbilitySub)AbilityFactory.getAbility(abExile, card);
|
||||
|
||||
String abEffect = "DB$ Effect | RememberObjects$ Self | StaticAbilities$ Play | ExileOnMoved$ Exile | Duration$ Permanent | ConditionDefined$ Self | ConditionPresent$ Card.nonCopiedSpell";
|
||||
AbilitySub saEffect = (AbilitySub)AbilityFactory.getAbility(abEffect, card);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonAdventure");
|
||||
sb.append(" | AffectedZone$ Exile | Description$ You may cast the card.");
|
||||
saEffect.setSVar("Play", sb.toString());
|
||||
|
||||
saExile.setSubAbility(saEffect);
|
||||
sa.appendSubAbility(saExile);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,26 +107,8 @@ public class CardProperty {
|
||||
if (card.isSplitCard()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("leftcmc") || property.startsWith("rightcmc")) {
|
||||
int x;
|
||||
int y = 0;
|
||||
String rhs = "";
|
||||
|
||||
if (property.startsWith("leftcmc")) {
|
||||
rhs = property.substring(9);
|
||||
y = card.getCMC(Card.SplitCMCMode.LeftSplitCMC);
|
||||
} else if (property.startsWith("rightcmc")) {
|
||||
rhs = property.substring(10);
|
||||
y = card.getCMC(Card.SplitCMCMode.RightSplitCMC);
|
||||
}
|
||||
|
||||
try {
|
||||
x = Integer.parseInt(rhs);
|
||||
} catch (final NumberFormatException e) {
|
||||
x = AbilityUtils.calculateAmount(source, rhs, spellAbility);
|
||||
}
|
||||
|
||||
if (!Expressions.compare(y, property, x)) {
|
||||
} else if (property.equals("AdventureCard")) {
|
||||
if (!card.isAdventureCard()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("YouCtrl")) {
|
||||
@@ -1358,6 +1340,14 @@ public class CardProperty {
|
||||
if (card.isToken()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("copiedSpell")) {
|
||||
if (!card.isCopiedSpell()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("nonCopiedSpell")) {
|
||||
if (card.isCopiedSpell()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("hasXCost")) {
|
||||
SpellAbility sa1 = card.getFirstSpellAbility();
|
||||
if (sa1 != null && !sa1.isXCost()) {
|
||||
|
||||
@@ -225,6 +225,11 @@ public final class CardUtil {
|
||||
newCopy.turnFaceDownNoUpdate();
|
||||
}
|
||||
|
||||
if (in.isAdventureCard() && in.getFaceupCardStateName().equals(CardStateName.Original)) {
|
||||
newCopy.addAlternateState(CardStateName.Adventure, false);
|
||||
newCopy.getState(CardStateName.Adventure).copyFrom(in.getState(CardStateName.Adventure), true);
|
||||
}
|
||||
|
||||
/*
|
||||
if (in.isCloned()) {
|
||||
newCopy.addAlternateState(CardStateName.Cloner, false);
|
||||
|
||||
@@ -100,6 +100,10 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable
|
||||
if (card.isSplitCard()) {
|
||||
CardStateName name = isLeftSplit() ? CardStateName.LeftSplit : CardStateName.RightSplit;
|
||||
isInstant = card.getState(name).getType().isInstant();
|
||||
} else if (isAdventure()) {
|
||||
if (card.hasState(CardStateName.Adventure)) {
|
||||
isInstant = card.getState(CardStateName.Adventure).getType().isInstant();
|
||||
}
|
||||
}
|
||||
|
||||
boolean lkicheck = false;
|
||||
@@ -130,6 +134,13 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable
|
||||
}
|
||||
card.turnFaceDownNoUpdate();
|
||||
lkicheck = true;
|
||||
} else if (isAdventure()) {
|
||||
if (!card.isLKI()) {
|
||||
card = CardUtil.getLKICopy(card);
|
||||
}
|
||||
|
||||
card.setState(CardStateName.Adventure, false);
|
||||
lkicheck = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -118,6 +118,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
||||
|
||||
private boolean basicLandAbility = false;
|
||||
|
||||
private boolean adventure = false;
|
||||
private SplitSide splitSide = null;
|
||||
enum SplitSide { LEFT, RIGHT }
|
||||
|
||||
@@ -861,6 +862,12 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
||||
public void setRightSplit() {
|
||||
splitSide = SplitSide.RIGHT;
|
||||
}
|
||||
public boolean isAdventure() {
|
||||
return this.adventure;
|
||||
}
|
||||
public void setAdventure(boolean adventure) {
|
||||
this.adventure = adventure;
|
||||
}
|
||||
|
||||
public SpellAbility copy() {
|
||||
return copy(hostCard, false);
|
||||
|
||||
@@ -538,6 +538,20 @@ public class TriggerHandler {
|
||||
}
|
||||
}
|
||||
} // Torpor Orb check
|
||||
|
||||
if (game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.noCreatureDyingTriggers)
|
||||
&& !regtrig.isStatic() && mode.equals(TriggerType.ChangesZone)) {
|
||||
if (runParams.get(AbilityKey.Destination) instanceof String && runParams.get(AbilityKey.Origin) instanceof String) {
|
||||
final String dest = (String) runParams.get(AbilityKey.Destination);
|
||||
final String origin = (String) runParams.get(AbilityKey.Origin);
|
||||
if (dest.equals("Graveyard") && origin.equals("Battlefield") && runParams.get(AbilityKey.Card) instanceof Card) {
|
||||
final Card card = (Card) runParams.get(AbilityKey.Card);
|
||||
if (card.isCreature()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,7 @@ ManaCost:2 U
|
||||
Types:Enchantment
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, put a time counter on CARDNAME.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ TIME | CounterNum$ 1
|
||||
S:Mode$ Continuous | MayPlay$ True | MayPlayAltManaCost$ 0 | MayPlayLimit$ 1 | MayPlayDontGrantZonePermissions$ True | Affected$ Card.YouCtrl+NotSplit+nonLand+cmcLEX | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ Once each turn, you may pay {0} rather than pay the mana cost for a spell you cast with converted mana cost X or less, where X is the number of time counters on CARDNAME.
|
||||
S:Mode$ Continuous | MayPlay$ True | MayPlayAltManaCost$ 0 | MayPlayLimit$ 1 | MayPlayDontGrantZonePermissions$ True | Affected$ Card.YouCtrl+Split+nonLand+leftcmcLEX,Card.YouCtrl+Split+nonLand+rightcmcLEX | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Secondary$ True
|
||||
S:Mode$ Continuous | MayPlay$ True | MayPlayAltManaCost$ 0 | MayPlayLimit$ 1 | MayPlayDontGrantZonePermissions$ True | Affected$ Card.YouCtrl+nonLand+cmcLEX | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ Once each turn, you may pay {0} rather than pay the mana cost for a spell you cast with converted mana cost X or less, where X is the number of time counters on CARDNAME.
|
||||
SVar:X:Count$CardCounters.TIME
|
||||
SVar:AsForetoldSplitCMCHack:TRUE
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/as_foretold.jpg
|
||||
Oracle:At the beginning of your upkeep, put a time counter on As Foretold.\nOnce each turn, you may pay {0} rather than pay the mana cost for a spell you cast with converted mana cost X or less, where X is the number of time counters on As Foretold.
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
Name:Animating Faerie
|
||||
ManaCost:2 U
|
||||
Types:Creature Faerie
|
||||
PT:2/2
|
||||
K:Flying
|
||||
Oracle:Flying
|
||||
AlternateMode:Adventure
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Bring to Life
|
||||
ManaCost:2 U
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ Animate | Cost$ 2 U | ValidTgts$ Artifact.nonCreature+YouCtrl | TgtPrompt$ Select noncreature artifact | Power$ 0 | Toughness$ 0 | Types$ Artifact,Creature | RemoveCardTypes$ True | Permanent$ True | SubAbility$ DBPutCounter | SpellDescription$ Target noncreature artifact you control becomes a 0/0 artifact creature. Put four +1/+1 counters on it.
|
||||
SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | CounterNum$ 4
|
||||
Oracle:Target noncreature artifact you control becomes a 0/0 artifact creature. Put four +1/+1 counters on it.
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Bloodhaze Wolverine
|
||||
ManaCost:1 R
|
||||
Types:Creature Wolverine
|
||||
PT:2/1
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever you draw your second card each turn, CARDNAME gets +1/+1 and gains first strike until end of turn.
|
||||
SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ 1 | NumDef$ 1 | KW$ First Strike
|
||||
Oracle:Whenever you draw your second card each turn, Bloodhaze Wolverine gets +1/+1 and gains first strike until end of turn.
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Edgewall Innkeeper
|
||||
ManaCost:G
|
||||
Types:Creature Human Peasant
|
||||
PT:1/1
|
||||
T:Mode$ SpellCast | ValidCard$ Creature.AdventureCard | ValidActivatingPlayer$ You | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell that has an Adventure, draw a card.
|
||||
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1
|
||||
Oracle:Whenever you cast a creature spell that has an Adventure, draw a card.
|
||||
7
forge-gui/res/cardsfolder/upcoming/fabled_passage.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/fabled_passage.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Fabled Passage
|
||||
ManaCost:no cost
|
||||
Types:Land
|
||||
A:AB$ ChangeZone | Cost$ T Sac<1/CARDNAME> | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | RememerChanged$ True | SubAbility$ DBUntap | SpellDescription$ Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. Then if you control four or more lands, untap that land.
|
||||
SVar:DBUntap:DB$ Untap | Defined$ Remembered | ConditionPresent$ Land.YouCtrl | ConditionCompare$ GE4 | ConditionDescription$ If you control four or more lands, untap that land. | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
Oracle:{T}, Sacrifice Fabled Passage: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. Then if you control four or more lands, untap that land.
|
||||
6
forge-gui/res/cardsfolder/upcoming/festive_funeral.txt
Normal file
6
forge-gui/res/cardsfolder/upcoming/festive_funeral.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Festive Funeral
|
||||
ManaCost:4 B
|
||||
Types:Instant
|
||||
A:SP$ Pump | Cost$ 4 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -X | NumDef$ -X | IsCurse$ True | References$ X | SpellDescription$ Target creature gets -X/-X until end of turn, where X is the number of cards in your graveyard.
|
||||
SVar:X:Count$InYourYard
|
||||
Oracle:Target creature gets -X/-X until end of turn, where X is the number of cards in your graveyard.
|
||||
8
forge-gui/res/cardsfolder/upcoming/foreboding_fruit.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/foreboding_fruit.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Foreboding Fruit
|
||||
ManaCost:2 B
|
||||
Types:Sorcery
|
||||
A:SP$ Draw | Cost$ 2 B | NumCards$ 2 | ValidTgts$ Player | TgtPrompt$ Choose a player | SubAbility$ DBLoseLife | SpellDescription$ Target player draws two cards and loses 2 life. Adamant — If at least three black mana was spent to cast this spell, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 2 life.")
|
||||
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 2 | Defined$ Targeted | SubAbility$ DBToken
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ X | TokenScript$ c_a_food_sac | TokenOwner$ You | LegacyImage$ c a food sac eld | References$ X
|
||||
SVar:X:Count$Adamant.Black.1.0
|
||||
Oracle:Target player draws two cards and loses 2 life.\nAdamant — If at least three black mana was spent to cast this spell, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 2 life.")
|
||||
@@ -0,0 +1,16 @@
|
||||
Name:Foulmire Knight
|
||||
ManaCost:B
|
||||
Types:Creature Zombie Knight
|
||||
PT:1/1
|
||||
K:Deathtouch
|
||||
Oracle:Deathtouch
|
||||
AlternateMode:Adventure
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Profane Insight
|
||||
ManaCost:2 B
|
||||
Types:Instant Adventure
|
||||
A:SP$ Draw | Cost$ 2 B | Defined$ You | NumCards$ 1 | SubAbility$ DBLoseLife | SpellDescription$ You draw a card and you lose 1 life.
|
||||
SVar:DBLoseLife:DB$LoseLife | Defined$ You | LifeAmount$ 1
|
||||
Oracle:You draw a card and you lose 1 life.
|
||||
10
forge-gui/res/cardsfolder/upcoming/hushbringer.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/hushbringer.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Hushbringer
|
||||
ManaCost:1 W
|
||||
Types:Creature Faerie
|
||||
PT:1/2
|
||||
K:Flying
|
||||
K:Lifelink
|
||||
S:Mode$ Continuous | GlobalRule$ Creatures entering the battlefield don't cause abilities to trigger. | Description$ Creatures entering the battlefield or dying don't cause abilities to trigger.
|
||||
S:Mode$ Continuous | GlobalRule$ Creatures dying don't cause abilities to trigger. | Secondary$ True | Description$ Creatures entering the battlefield or dying don't cause abilities to trigger.
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:Flying, lifelink\nCreatures entering the battlefield or dying don't cause abilities to trigger.
|
||||
@@ -2,9 +2,8 @@ Name:Idyllic Grange
|
||||
ManaCost:no cost
|
||||
Types:Land Plains
|
||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ LandTapped | Description$ CARDNAME enters the battlefield tapped unless you control three or more other Plains.
|
||||
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionCheckSVar$ ETBCheckSVar | ConditionSVarCompare$ LT3 | References$ ETBCheckSVar | SubAbility$ MoveToPlay
|
||||
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionPresent$ Plains.YouCtrl+Other | ConditionCompare$ LT3 | SubAbility$ MoveToPlay
|
||||
SVar:MoveToPlay:DB$ ChangeZone | Defined$ Self | Origin$ All | Destination$ Battlefield
|
||||
SVar:ETBCheckSVar:Count$Valid Plains.YouCtrl+Other
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+untapped | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield untapped, put a +1/+1 counter on target creature you control.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1
|
||||
Oracle:({T}: Add {W}.)\nIdyllic Grange enters the battlefield tapped unless you control three or more other Plains.\nWhen Idyllic Grange enters the battlefield untapped, put a +1/+1 counter on target creature you control.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Improbable Alliance
|
||||
ManaCost:U R
|
||||
Types:Enchantment
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you draw your second card each turn, create a 1/1 blue Faerie creature token with flying.
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ u_1_1_faerie_flying | TokenOwner$ You | LegacyImage$ u 1 1 faerie flying eld
|
||||
A:AB$ Draw | Cost$ 4 U R | NumCards$ 1 | SpellDescription$ Draw a card, then discard a card. | SubAbility$ DBDiscard
|
||||
SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose
|
||||
AI:RemoveDeck:All
|
||||
Oracle:Whenever you draw your second card each turn, create a 1/1 blue Faerie creature token with flying.\n{4}{U}{R}: Draw a card, then discard a card.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Irencrag Pyromancer
|
||||
ManaCost:2 R
|
||||
Types:Creature Human Wizard
|
||||
PT:0/4
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever you draw your second card each turn, CARDNAME deals 3 damage to any target.
|
||||
SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:Whenever you draw your second card each turn, Irencrag Pyromancer deals 3 damage to any target.
|
||||
7
forge-gui/res/cardsfolder/upcoming/locthwain_paladin.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/locthwain_paladin.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Locthwain Paladin
|
||||
ManaCost:3 B
|
||||
Types:Creature Human Knight
|
||||
PT:3/2
|
||||
K:Menace
|
||||
K:etbCounter:P1P1:1:Adamant$ Black:Adamant — If at least three black mana was spent to cast this spell, CARDNAME enters the battlefield with a +1/+1 counter on it.
|
||||
Oracle:Menace (This creature can't be blocked except by two or more creatures.)\nAdamant — If at least three black mana was spent to cast this spell, Locthwain Paladin enters the battlefield with a +1/+1 counter on it.
|
||||
8
forge-gui/res/cardsfolder/upcoming/mad_ratter.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/mad_ratter.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Mad Ratter
|
||||
ManaCost:3 R
|
||||
Types:Creature Goblin
|
||||
PT:1/2
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you draw your second card each turn, create two 1/1 black Rat creature tokens.
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ b_1_1_rat | TokenOwner$ You | LegacyImage$ b 1 1 rat eld
|
||||
SVar:PlayMain1:TRUE
|
||||
Oracle:Whenever you draw your second card each turn, create two 1/1 black Rat creature tokens.
|
||||
9
forge-gui/res/cardsfolder/upcoming/mantle_of_tides.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/mantle_of_tides.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Mantle of Tides
|
||||
ManaCost:U
|
||||
Types:Artifact Equipment
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 2 | Description$ Equipped creature gets +1/+2.
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigAttach | TriggerDescription$ Whenever you draw your second card each turn, attach CARDNAME to target creature you control.
|
||||
SVar:TrigAttach:DB$ Attach | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control
|
||||
SVar:PlayMain1:TRUE
|
||||
K:Equip:3
|
||||
Oracle:Equipped creature gets +1/+2.\nWhenever you draw your second card each turn, attach Mantle of Tides to target creature you control.\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.)
|
||||
@@ -0,0 +1,17 @@
|
||||
Name:Merchant of the Vale
|
||||
ManaCost:2 R
|
||||
Types:Creature Human Peasant
|
||||
PT:2/3
|
||||
A:AB$ Draw | Cost$ 2 R Discard<1/Card> | NumCards$ 1 | Defined$ You | SpellDescription$ Draw a card.
|
||||
Oracle:{2}{R}, Discard a card: Draw a card.
|
||||
AlternateMode:Adventure
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Haggle
|
||||
ManaCost:R
|
||||
Types:Instant Adventure
|
||||
A:SP$ Discard | Cost$ R | NumCards$ 1 | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ You may discard a card. If you do, draw a card.
|
||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
Oracle:You may discard a card. If you do, draw a card. (Then exile this card. You may cast the creature later from exile.)
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Mysterious Pathlighter
|
||||
ManaCost:2 W
|
||||
Types:Creature Faerie
|
||||
PT:2/2
|
||||
K:Flying
|
||||
K:ETBReplacement:Other:AddExtraCounter:Mandatory:Battlefield:Creature.YouCtrl+AdventureCard
|
||||
SVar:AddExtraCounter:DB$ PutCounter | ETB$ True | Defined$ ReplacedCard | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Each creature you control that has an Adventure enters the battlefield with an additional +1/+1 counter on it.
|
||||
Oracle:Flying\nEach creature you control that has an Adventure enters the battlefield with an additional +1/+1 counter on it.
|
||||
9
forge-gui/res/cardsfolder/upcoming/mystic_sanctuary.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/mystic_sanctuary.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Mystic Sanctuary
|
||||
ManaCost:no cost
|
||||
Types:Land Island
|
||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ LandTapped | Description$ CARDNAME enters the battlefield tapped unless you control three or more other Islands.
|
||||
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionPresent$ Island.YouCtrl+Other | ConditionCompare$ LT3 | SubAbility$ MoveToPlay
|
||||
SVar:MoveToPlay:DB$ ChangeZone | Defined$ Self | Origin$ All | Destination$ Battlefield
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+untapped | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may put target instant or sorcery card from your graveyard on top of your library.
|
||||
SVar:TrigChange:DB$ ChangeZone | TgtPrompt$ Choose target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | Origin$ Graveyard | Destination$ Library
|
||||
Oracle:({T}: Add {U}.)\nMystic Sanctuary enters the battlefield tapped unless you control three or more other Islands.\nWhen Mystic Sanctuary enters the battlefield untapped, you may put target instant or sorcery card from your graveyard on top of your library.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Return of the Wildspeaker
|
||||
ManaCost:4 G
|
||||
Types:Instant
|
||||
A:SP$ Charm | Cost$ 4 G | Choices$ DBDraw,DBPumpAll
|
||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X | SpellDescription$ Draw cards equal to the greatest power among non-Human creatures you control.
|
||||
SVar:X:Count$GreatestPower_Creature.YouCtrl+nonHuman
|
||||
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl+nonHuman | NumAtt$ 3 | NumDef$ 3 | SpellDescription$ Non-Human creatures you control get +3/+3 until end of turn.
|
||||
Oracle:Choose one —\n• Draw cards equal to the greatest power among non-Human creatures you control.\n• Non-Human creatures you control get +3/+3 until end of turn.
|
||||
8
forge-gui/res/cardsfolder/upcoming/rosethorn_halberd.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/rosethorn_halberd.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Rosethorn Halberd
|
||||
ManaCost:G
|
||||
Types:Artifact Equipment
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAttach | TriggerDescription$ When CARDNAME enters the battlefield, attach it to target non-Human creature you control.
|
||||
SVar:TrigAttach:DB$ Attach | ValidTgts$ Creature.nonHuman+YouCtrl | TgtPrompt$ Select target non-Human creature you control
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 1 | Description$ Equipped creature gets +2/+1.
|
||||
K:Equip:5
|
||||
Oracle:When Rosethorn Halberd enters the battlefield, attach it to target non-Human creature you control.\nEquipped creature gets +2/+1.\nEquip {5} ({5}: Attach to target creature you control. Equip only as a sorcery.)
|
||||
9
forge-gui/res/cardsfolder/upcoming/sage_of_the_falls.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/sage_of_the_falls.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Sage of the Falls
|
||||
ManaCost:4 U
|
||||
Types:Creature Merfolk Wizard
|
||||
PT:2/5
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigLoot | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME or another non-Human creature enters the battlefield under you control, you may draw a card. If you do, discard a card.
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonHuman+Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoot | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another non-Human creature enters the battlefield under you control, you may draw a card. If you do, discard a card.
|
||||
SVar:TrigLoot:DB$ Draw | NumCards$ 1 | SubAbility$ DBDiscard
|
||||
SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1
|
||||
Oracle:Whenever Sage of the Falls or another non-Human creature enters the battlefield under you control, you may draw a card. If you do, discard a card.
|
||||
10
forge-gui/res/cardsfolder/upcoming/so_tiny.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/so_tiny.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:So Tiny
|
||||
ManaCost:U
|
||||
Types:Enchantment Aura
|
||||
K:Flash
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ U | ValidTgts$ Creature | AILogic$ Curse
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ -X | References$ X,Y | Description$ Enchanted creature gets -2/-0. It gets -6/-0 instead as long as its controller has seven or more cards in their graveyard.
|
||||
SVar:X:Count$Compare Y GE7.6.2
|
||||
SVar:Y:Count$ValidGraveyard Card.EnchantedControllerCtrl
|
||||
Oracle:Flash\nEnchant creature\nEnchanted creature gets -2/-0. It gets -6/-0 instead as long as its controller has seven or more cards in their graveyard.
|
||||
9
forge-gui/res/cardsfolder/upcoming/steelgaze_griffin.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/steelgaze_griffin.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Steelgaze Griffin
|
||||
ManaCost:4 U
|
||||
Types:Creature Griffin
|
||||
PT:2/4
|
||||
K:Flying
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ When you draw your second card each turn, CARDNAME gets +2/+0 until end of turn.
|
||||
SVar:TrigPump:DB$ Pump | NumAtt$ +2 | NumDef$ +0 | Defined$ Self
|
||||
SVar:PlayMain1:TRUE
|
||||
Oracle:Flying\nWhen you draw your second card each turn, Steelgaze Griffin gets +2/+0 until end of turn.
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Thrill of Possibility
|
||||
ManaCost:1 R
|
||||
Types:Instant
|
||||
A:SP$ Draw | Cost$ 1 R Discard<1/Card> | Defined$ You | NumCards$ 2 | SpellDescription$ Draw two cards.
|
||||
DeckHas:Ability$Discard
|
||||
DeckHints:Keyword$Madness & Ability$Delirium
|
||||
Oracle:As an additional cost to cast this spell, discard a card.\nDraw two cards.
|
||||
8
forge-gui/res/cardsfolder/upcoming/wandermare.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/wandermare.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Wandermare
|
||||
ManaCost:1 G W
|
||||
Types:Creature Horse
|
||||
PT:3/3
|
||||
T:Mode$ SpellCast | ValidCard$ Creature.AdventureCard | ValidActivatingPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell that has an Adventure, put a +1/+1 counter on CARDNAME.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Whenever you cast a creature spell that has an Adventure, put a +1/+1 counter on Wandermare. (It doesn’t need to have gone on the adventure first.)
|
||||
@@ -2,9 +2,8 @@ Name:Witch's Cottage
|
||||
ManaCost:no cost
|
||||
Types:Land Swamp
|
||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ LandTapped | Description$ CARDNAME enters the battlefield tapped unless you control three or more other Swamps.
|
||||
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionCheckSVar$ ETBCheckSVar | ConditionSVarCompare$ LT3 | References$ ETBCheckSVar | SubAbility$ MoveToPlay
|
||||
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionPresent$ Swamp.YouCtrl+Other | ConditionCompare$ LT3 | SubAbility$ MoveToPlay
|
||||
SVar:MoveToPlay:DB$ ChangeZone | Defined$ Self | Origin$ All | Destination$ Battlefield
|
||||
SVar:ETBCheckSVar:Count$Valid Swamp.YouCtrl+Other
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+untapped | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield untapped, you may put target creature card from your graveyard on top of your library.
|
||||
SVar:TrigChange:DB$ ChangeZone | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | Origin$ Graveyard | Destination$ Library
|
||||
Oracle:({T}: Add {B}.)\nWitch's Cottage enters the battlefield tapped unless you control three or more other Swamps.\nWhen Witch's Cottage enters the battlefield untapped, you may put target creature card from your graveyard on top of your library.
|
||||
|
||||
@@ -179,8 +179,8 @@ KeyboardShortcuts=Tastenkombinationen
|
||||
lblAchievements=Errungenschaften
|
||||
# VSubmenuDownloaders.java
|
||||
btnDownloadSetPics=Bilder(LQ) Sets herunterladen
|
||||
btnDownloadPicsHQ=Bilder(HQ Karten herunterladen (Sehr langsam!)
|
||||
btnDownloadPics=Bilder(LQ) Karten herunterladen
|
||||
btnDownloadPicsHQ=Bilder(HQ) Karten herunterladen (Sehr langsam!)
|
||||
btnDownloadQuestImages=Bilder für Quests herunterladen
|
||||
btnDownloadAchievementImages=Bilder für Erfolge herunterladen
|
||||
btnReportBug=Einen Fehler melden
|
||||
@@ -389,7 +389,7 @@ lblVanguardDesc=Jeder Spieler hat eine eigene spielbeeinflussende \"Avatar\"-Kar
|
||||
lblCommander=Commander
|
||||
lblCommanderDesc=Jeder Spieler hat eine legendäre \"General\"-Karte, welche (fast) jederzeit gespielt werden kann und die Farben des Decks bestimmt.
|
||||
lblOathbreaker=Eidbrecher
|
||||
lblOathbreakerDesc=Jeder Spieler hat eine Plainswalker-Karte als seinen "Eidbrecher", welche jederzeit gespielt werdeb kann und die Farben des Decks festlegt. Jeder Spieler hat außerdem noch einnen "Signatur"-Spruch, welcher gespielt werden kann, solange der Eidbrecher im Spiel ist.
|
||||
lblOathbreakerDesc=Jeder Spieler hat eine Planeswalker-Karte als seinen "Eidbrecher", welche jederzeit gespielt werden kann und die Farben des Decks festlegt. Jeder Spieler hat außerdem noch einen "Signatur"-Spruch, welcher gespielt werden kann, solange der Eidbrecher im Spiel ist.
|
||||
lblTinyLeaders=Kleine Anführer
|
||||
lblTinyLeadersDesc=Jeder Spieler hat eine legendäre \"General\"-Karte, welche (fast) jederzeit gespielt werden kann und die Farben des Decks bestimmt. Alle Karten haben umgewandelte Manakosten von max. 3.
|
||||
lblBrawl=Brawl
|
||||
@@ -528,7 +528,7 @@ lblConstructedDecks=Konstruierte Decks
|
||||
lblCommanderDecks=Commander Decks
|
||||
lblRandomCommanderDecks=Zufälliges Commander Deck
|
||||
lblRandomCommanderCard-basedDecks=Zufälliges Commander Deck (kartenbasiert)
|
||||
lblOathbreakerDecks=Oathbreaker-Decks
|
||||
lblOathbreakerDecks=Eidbrecher-Decks
|
||||
lblTinyLeadersDecks=Kleine-Anführer-Decks
|
||||
lblBrawlDecks=Brawl Decks
|
||||
lblSchemeDecks=Komplott-Decks
|
||||
@@ -796,7 +796,7 @@ lbltoplanardeck=zum Weltendeck
|
||||
lbltoconspiracydeck=zum Verschwörungsdeck
|
||||
lblMove=Verschieben
|
||||
#VDock.java
|
||||
lblDock=Anhängen
|
||||
lblDock=Symbolleiste
|
||||
lblViewDeckList=Zeige Deckliste
|
||||
lblRevertLayout=Layout zurücksetzen
|
||||
lblOpenLayout=Lade Layout
|
||||
@@ -849,8 +849,8 @@ ttbtnRandDeck5=Erzeugt konstuiertes Deck in fünf Farben
|
||||
lblCurrentDeck2=aktuelles Deck
|
||||
lblUntitled=Unbenannt
|
||||
#VPrompt.java
|
||||
lblPrompt=Abfrage
|
||||
lblGameSetup=Spielaufbau
|
||||
lblPrompt=Meldungen
|
||||
lblGameSetup=Spielvorbereitung
|
||||
#ColumnDef.java
|
||||
lblAIStatus=KI-Status
|
||||
lblCMC=UMK
|
||||
@@ -891,13 +891,13 @@ lblSettings=Einstellungen
|
||||
#SettingsPage.java
|
||||
lblAutomaticBugReports=Automatischer Fehlerbericht
|
||||
lblBattlefieldTextureFiltering=Texturenfilter Spielfeld
|
||||
lblCompactListItems=kompakte Liste
|
||||
lblCompactTabs=kompakte Tabs
|
||||
lblCompactListItems=Kompakte Liste
|
||||
lblCompactTabs=Kompakte Tabs
|
||||
lblCardOverlays=Karten-Overlays
|
||||
lblDisableCardEffect=Karten-"Effekt"-Anzeige abschalten
|
||||
lblDynamicBackgroundPlanechase=Weltenjagd dynamischer Hintergrund
|
||||
lblGameplayOptions=Spiel-Optionen
|
||||
lblGeneralSettings=allgem. Einstellungen
|
||||
lblGeneralSettings=Allgem. Einstellungen
|
||||
lblHotSeatMode=Hot-Seat-Modus
|
||||
lblLandscapeMode=Querformat
|
||||
lblLater=Später
|
||||
@@ -912,7 +912,7 @@ lblShowCardManaCostOverlays=Blende die Manakosten der Karten ein
|
||||
lblShowCardNameOverlays=Blende den Namen der Karten ein
|
||||
lblShowCardOverlays=Zeige Karten-Einblendungen an
|
||||
lblShowCardPTOverlays=Blende Stärke und Widerstand ein
|
||||
lblShowMatchBackground=Zeige Duell hintergund an
|
||||
lblShowMatchBackground=Zeige Duell-Hintergund an
|
||||
lblVibrateAfterLongPress=Vibieren nach langem Tastendruck
|
||||
lblVibrateWhenLosingLife=Vibrieren nach Lebenspunktverlust
|
||||
lblVibrationOptions=Vibrationsoptionen
|
||||
@@ -971,6 +971,6 @@ lblCatalog=Katalog
|
||||
lblCommanders=Komandeure
|
||||
lblOathbreakers=Eidbrecher
|
||||
#Forge.java
|
||||
lblLoadingFonts=Loading fonts...
|
||||
lblLoadingCardTranslations=Loading card translations...
|
||||
lblFinishingStartup=Finishing startup...
|
||||
lblLoadingFonts=Lade Schriften...
|
||||
lblLoadingCardTranslations=Lade Kartenübersetzungen...
|
||||
lblFinishingStartup=Abschliessen...
|
||||
|
||||
6
forge-gui/res/tokenscripts/r_1_1_dwarf.txt
Normal file
6
forge-gui/res/tokenscripts/r_1_1_dwarf.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Dwarf
|
||||
ManaCost:no cost
|
||||
Types:Creature Dwarf
|
||||
Colors:red
|
||||
PT:1/1
|
||||
Oracle:
|
||||
Reference in New Issue
Block a user