mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Merge remote-tracking branch 'upstream/master' into deck-importer-decks-file-format
This commit is contained in:
@@ -18,15 +18,11 @@
|
||||
package forge.game;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.Table;
|
||||
import com.google.common.collect.TreeBasedTable;
|
||||
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.card.mana.ManaCostParser;
|
||||
@@ -233,21 +229,23 @@ public final class GameActionUtil {
|
||||
if (keyword.contains(":")) {
|
||||
final String[] k = keyword.split(":");
|
||||
flashback.setPayCosts(new Cost(k[1], false));
|
||||
String extra = k.length > 2 ? k[2] : "";
|
||||
if (!extra.isEmpty()) {
|
||||
String[] parts = extra.split("\\$");
|
||||
String key = parts[0];
|
||||
String value = parts[1];
|
||||
flashback.putParam(key, value);
|
||||
String extraParams = k.length > 2 ? k[2] : "";
|
||||
if (!extraParams.isEmpty()) {
|
||||
Map<String, String> extraParamMap =
|
||||
Maps.newHashMap(AbilityFactory.getMapParams(extraParams));
|
||||
for (Map.Entry<String, String> param : extraParamMap.entrySet()) {
|
||||
flashback.putParam(param.getKey(), param.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
alternatives.add(flashback);
|
||||
} else if (keyword.startsWith("Foretell")) {
|
||||
// Foretell cast only from Exile
|
||||
if (!source.isInZone(ZoneType.Exile) || !source.isForetold() || source.isForetoldThisTurn() || !activator.equals(source.getOwner())) {
|
||||
if (!source.isInZone(ZoneType.Exile) || !source.isForetold() || source.isForetoldThisTurn() ||
|
||||
!activator.equals(source.getOwner())) {
|
||||
continue;
|
||||
}
|
||||
// skip this part for fortell by external source
|
||||
// skip this part for foretell by external source
|
||||
if (keyword.equals("Foretell")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -2531,7 +2531,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
sbx.append(" (").append(inst.getReminderText()).append(")");
|
||||
sbBefore.append(sbx).append("\r\n");
|
||||
}
|
||||
}else if (keyword.startsWith("AlternateAdditionalCost")) {
|
||||
} else if (keyword.startsWith("AlternateAdditionalCost")) {
|
||||
final String[] k = keyword.split(":");
|
||||
final Cost cost1 = new Cost(k[1], false);
|
||||
final Cost cost2 = new Cost(k[2], false);
|
||||
|
||||
@@ -2169,8 +2169,10 @@ public class CardFactoryUtil {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Event$ Moved | ValidCard$ Card.Self | Origin$ Stack | ExcludeDestination$ Exile ");
|
||||
sb.append("| ValidStackSa$ Spell.Flashback | Description$ Flashback");
|
||||
String reminderInsert = "";
|
||||
|
||||
if (keyword.contains(":")) { // K:Flashback:Cost:ExtraParam(Key$Value):ExtraDescription:Cost(for formatting)
|
||||
// K:Flashback:Cost:ExtraParams:ExtraDescription:cost for display:reminder text insert
|
||||
if (keyword.contains(":")) {
|
||||
final String[] k = keyword.split(":");
|
||||
final Cost cost = new Cost(k[1], false);
|
||||
sb.append(cost.isOnlyManaCost() ? " " : "—");
|
||||
@@ -2193,10 +2195,17 @@ public class CardFactoryUtil {
|
||||
sb.append(". ").append(extraDesc);
|
||||
}
|
||||
}
|
||||
reminderInsert = k.length > 5 ? k[5] : "";
|
||||
}
|
||||
|
||||
sb.append(" (");
|
||||
sb.append(inst.getReminderText());
|
||||
if (!reminderInsert.isEmpty()) {
|
||||
String reminder = inst.getReminderText();
|
||||
sb.append(reminder, 0, 65).append(" ");
|
||||
sb.append(reminderInsert).append(reminder, 65, 81);
|
||||
} else {
|
||||
sb.append(inst.getReminderText());
|
||||
}
|
||||
sb.append(")");
|
||||
|
||||
String repeffstr = sb.toString();
|
||||
|
||||
@@ -1492,6 +1492,11 @@ public class CardView extends GameEntityView {
|
||||
public boolean isArtifact() {
|
||||
return getType().isArtifact();
|
||||
}
|
||||
public boolean isNyx() {
|
||||
if (!getType().isEnchantment() || getType().getCoreTypes() == null)
|
||||
return false;
|
||||
return Iterables.size(getType().getCoreTypes()) > 1;
|
||||
}
|
||||
}
|
||||
|
||||
//special methods for updating card and player properties as needed and returning the new collection
|
||||
|
||||
@@ -74,10 +74,17 @@ public class CostSacrifice extends CostPartWithList {
|
||||
@Override
|
||||
public final String toString() {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("Sacrifice ");
|
||||
if (getAmount().equals("X")) {
|
||||
sb.append("You may sacrifice ");
|
||||
} else {
|
||||
sb.append("Sacrifice ");
|
||||
}
|
||||
|
||||
if (payCostFromSource()) {
|
||||
sb.append(getType());
|
||||
} else if (getAmount().equals("X")) {
|
||||
String typeDesc = getType().toLowerCase().replace(";","s and/or ");
|
||||
sb.append("any number of ").append(typeDesc).append("s");
|
||||
} else {
|
||||
final String desc = ObjectUtils.firstNonNull(getTypeDescription(), getType());
|
||||
sb.append(Cost.convertAmountTypeToWords(convertAmount(), getAmount(), desc));
|
||||
|
||||
@@ -136,6 +136,31 @@ public enum FSkinImage implements FImage {
|
||||
CARDBG_WG (FSkinProp.IMG_CARDBG_WG, SourceFile.CARDBG),
|
||||
CARDBG_WR (FSkinProp.IMG_CARDBG_WR, SourceFile.CARDBG),
|
||||
CARDBG_WU (FSkinProp.IMG_CARDBG_WU, SourceFile.CARDBG),
|
||||
//PWBG
|
||||
PWBG_B (FSkinProp.IMG_PWBG_B, SourceFile.CARDBG),
|
||||
PWBG_BG (FSkinProp.IMG_PWBG_BG, SourceFile.CARDBG),
|
||||
PWBG_BR (FSkinProp.IMG_PWBG_BR, SourceFile.CARDBG),
|
||||
PWBG_C (FSkinProp.IMG_PWBG_C, SourceFile.CARDBG),
|
||||
PWBG_G (FSkinProp.IMG_PWBG_G, SourceFile.CARDBG),
|
||||
PWBG_M (FSkinProp.IMG_PWBG_M, SourceFile.CARDBG),
|
||||
PWBG_R (FSkinProp.IMG_PWBG_R, SourceFile.CARDBG),
|
||||
PWBG_RG (FSkinProp.IMG_PWBG_RG, SourceFile.CARDBG),
|
||||
PWBG_U (FSkinProp.IMG_PWBG_U, SourceFile.CARDBG),
|
||||
PWBG_UB (FSkinProp.IMG_PWBG_UB, SourceFile.CARDBG),
|
||||
PWBG_UG (FSkinProp.IMG_PWBG_UG, SourceFile.CARDBG),
|
||||
PWBG_UR (FSkinProp.IMG_PWBG_UR, SourceFile.CARDBG),
|
||||
PWBG_W (FSkinProp.IMG_PWBG_W, SourceFile.CARDBG),
|
||||
PWBG_WB (FSkinProp.IMG_PWBG_WB, SourceFile.CARDBG),
|
||||
PWBG_WG (FSkinProp.IMG_PWBG_WG, SourceFile.CARDBG),
|
||||
PWBG_WR (FSkinProp.IMG_PWBG_WR, SourceFile.CARDBG),
|
||||
PWBG_WU (FSkinProp.IMG_PWBG_WU, SourceFile.CARDBG),
|
||||
//NYX OVERLAY
|
||||
NYX_B (FSkinProp.IMG_NYX_B, SourceFile.CARDBG),
|
||||
NYX_G (FSkinProp.IMG_NYX_G, SourceFile.CARDBG),
|
||||
NYX_M (FSkinProp.IMG_NYX_M, SourceFile.CARDBG),
|
||||
NYX_R (FSkinProp.IMG_NYX_R, SourceFile.CARDBG),
|
||||
NYX_U (FSkinProp.IMG_NYX_U, SourceFile.CARDBG),
|
||||
NYX_W (FSkinProp.IMG_NYX_W, SourceFile.CARDBG),
|
||||
|
||||
//Gameplay
|
||||
TAP (FSkinProp.IMG_TAP, SourceFile.MANAICONS),
|
||||
|
||||
@@ -815,6 +815,8 @@ public class CardImageRenderer {
|
||||
}
|
||||
public static Color[] drawCardBackgroundTexture(CardStateView state, Graphics g, List<DetailColors> backColors, float x, float y, float w, float h) {
|
||||
boolean isHybrid = state.getManaCost().hasHybrid();
|
||||
boolean isPW = state.isPlaneswalker();
|
||||
boolean isNyx = state.isNyx();
|
||||
Color[] colors = new Color[backColors.size()];
|
||||
for (int i = 0; i < colors.length; i++) {
|
||||
DetailColors dc = backColors.get(i);
|
||||
@@ -825,58 +827,77 @@ public class CardImageRenderer {
|
||||
if (backColors.get(0) == DetailColors.FACE_DOWN) {
|
||||
g.drawImage(FSkinImage.CARDBG_C, x, y, w,h);
|
||||
} else if (backColors.get(0) == DetailColors.LAND) {
|
||||
g.drawImage(FSkinImage.CARDBG_L, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_C : FSkinImage.CARDBG_L, x, y, w,h);
|
||||
}else if (backColors.get(0) == DetailColors.MULTICOLOR) {
|
||||
g.drawImage(FSkinImage.CARDBG_M, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_M : FSkinImage.CARDBG_M, x, y, w,h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_M, x, y, w, (h/2)+(h/5));
|
||||
} else if (backColors.get(0) == DetailColors.COLORLESS) {
|
||||
if (state.isVehicle())
|
||||
if (isPW)
|
||||
g.drawImage(FSkinImage.PWBG_C, x, y, w,h);
|
||||
else if (state.isVehicle())
|
||||
g.drawImage(FSkinImage.CARDBG_V, x, y, w,h);
|
||||
else if (state.isArtifact())
|
||||
g.drawImage(FSkinImage.CARDBG_A, x, y, w,h);
|
||||
else
|
||||
g.drawImage(FSkinImage.CARDBG_C, x, y, w,h);
|
||||
//todo add NYX for colorless?
|
||||
} else if (backColors.get(0) == DetailColors.GREEN) {
|
||||
g.drawImage(FSkinImage.CARDBG_G, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_G : FSkinImage.CARDBG_G, x, y, w,h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_G, x, y, w, (h/2)+(h/5));
|
||||
} else if (backColors.get(0) == DetailColors.RED) {
|
||||
g.drawImage(FSkinImage.CARDBG_R, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_R : FSkinImage.CARDBG_R, x, y, w,h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_R, x, y, w, (h/2)+(h/5));
|
||||
} else if (backColors.get(0) == DetailColors.BLACK) {
|
||||
g.drawImage(FSkinImage.CARDBG_B, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_B : FSkinImage.CARDBG_B, x, y, w,h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_B, x, y, w, (h/2)+(h/5));
|
||||
} else if (backColors.get(0) == DetailColors.BLUE) {
|
||||
g.drawImage(FSkinImage.CARDBG_U, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_U : FSkinImage.CARDBG_U, x, y, w,h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_U, x, y, w, (h/2)+(h/5));
|
||||
} else if (backColors.get(0) == DetailColors.WHITE) {
|
||||
g.drawImage(FSkinImage.CARDBG_W, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_W : FSkinImage.CARDBG_W, x, y, w,h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_W, x, y, w, (h/2)+(h/5));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!isHybrid) {
|
||||
g.drawImage(FSkinImage.CARDBG_M, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_M : FSkinImage.CARDBG_M, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.BLUE)) {
|
||||
g.drawImage(FSkinImage.CARDBG_WU, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_WU : FSkinImage.CARDBG_WU, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.BLACK)) {
|
||||
g.drawImage(FSkinImage.CARDBG_WB, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_WB : FSkinImage.CARDBG_WB, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.RED)) {
|
||||
g.drawImage(FSkinImage.CARDBG_WR, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_WR : FSkinImage.CARDBG_WR, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.GREEN)) {
|
||||
g.drawImage(FSkinImage.CARDBG_WG, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_WG : FSkinImage.CARDBG_WG, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.BLUE) && backColors.contains(DetailColors.BLACK)) {
|
||||
g.drawImage(FSkinImage.CARDBG_UB, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_UB : FSkinImage.CARDBG_UB, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.BLUE) && backColors.contains(DetailColors.RED)) {
|
||||
g.drawImage(FSkinImage.CARDBG_UR, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_UR : FSkinImage.CARDBG_UR, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.BLUE) && backColors.contains(DetailColors.GREEN)) {
|
||||
g.drawImage(FSkinImage.CARDBG_UG, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_UG : FSkinImage.CARDBG_UG, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.BLACK) && backColors.contains(DetailColors.RED)) {
|
||||
g.drawImage(FSkinImage.CARDBG_BR, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_BR : FSkinImage.CARDBG_BR, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.BLACK) && backColors.contains(DetailColors.GREEN)) {
|
||||
g.drawImage(FSkinImage.CARDBG_BG, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_BG : FSkinImage.CARDBG_BG, x, y, w, h);
|
||||
} else if (backColors.contains(DetailColors.RED) && backColors.contains(DetailColors.GREEN)) {
|
||||
g.drawImage(FSkinImage.CARDBG_RG, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_RG : FSkinImage.CARDBG_RG, x, y, w, h);
|
||||
}
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_M, x, y, w, (h/2)+(h/5));
|
||||
break;
|
||||
case 3:
|
||||
g.drawImage(FSkinImage.CARDBG_M, x, y, w, h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_M : FSkinImage.CARDBG_M, x, y, w, h);
|
||||
if (isNyx)
|
||||
g.drawImage(FSkinImage.NYX_M, x, y, w, (h/2)+(h/5));
|
||||
break;
|
||||
default:
|
||||
g.drawImage(FSkinImage.CARDBG_C, x, y, w,h);
|
||||
g.drawImage(isPW ? FSkinImage.PWBG_C : FSkinImage.CARDBG_C, x, y, w,h);
|
||||
break;
|
||||
}
|
||||
return colors;
|
||||
|
||||
@@ -2,7 +2,7 @@ Name:Dargo, the Shipwrecker
|
||||
ManaCost:6 R
|
||||
Types:Legendary Creature Giant Pirate
|
||||
PT:7/5
|
||||
A:SP$ PermanentCreature | Cost$ 6 R Sac<X/Artifact;Creature/artifacts or creatures> | AILogic$ SacToReduceCost | CostDesc$ As an additional cost to cast this spell, you may sacrifice any number of artifacts and/or creatures. | SpellDescription$
|
||||
A:SP$ PermanentCreature | Cost$ 6 R Sac<X/Artifact;Creature/artifact or creature> | AILogic$ SacToReduceCost | CostDesc$ As an additional cost to cast this spell, you may sacrifice any number of artifacts and/or creatures. | SpellDescription$
|
||||
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Y | EffectZone$ All | Relative$ True | Description$ This spell costs {2} less to cast for each permanent sacrificed this way and {2} less to cast for each other artifact or creature you've sacrificed this turn.
|
||||
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Secondary$ True | Description$ This spell costs {2} less to cast for each permanent sacrificed this way and {2} less to cast for each other artifact or creature you've sacrificed this turn.
|
||||
SVar:X:Count$xPaid
|
||||
|
||||
@@ -6,7 +6,7 @@ K:Delve
|
||||
K:Flying
|
||||
K:etbCounter:P1P1:X:no Condition:CARDNAME enters the battlefield with a +1/+1 counter on it for each instant and sorcery card exiled with it.
|
||||
SVar:X:Count$ValidExile Instant.ExiledWithSource,Sorcery.ExiledWithSource
|
||||
T:Mode$ ChangesZone | ValidCard$ Instant,Sorcery | Origin$ Graveyard | Destination$ Any | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever an instant or sorcery card leaves your graveyard, put a +1/+1 counter on CARDNAME.
|
||||
T:Mode$ ChangesZone | ValidCard$ Instant.YouOwn,Sorcery.YouOwn | Origin$ Graveyard | Destination$ Any | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever an instant or sorcery card leaves your graveyard, put a +1/+1 counter on CARDNAME.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckNeeds:Type$Instant|Sorcery
|
||||
DeckHas:Ability$Counters
|
||||
|
||||
10
forge-gui/res/cardsfolder/upcoming/arrogant_outlaw.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/arrogant_outlaw.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Arrogant Outlaw
|
||||
ManaCost:2 B
|
||||
Types:Creature Vampire Noble
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ GE1 | Execute$ TrigDrain | TriggerDescription$ When CARDNAME enters the battlefield, if an opponent lost life this turn, each opponent loses 2 life and you gain 2 life.
|
||||
SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 | SubAbility$ DBGainLife
|
||||
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
|
||||
DeckHas:Ability$LifeGain
|
||||
SVar:X:Count$LifeOppsLostThisTurn
|
||||
Oracle:When Arrogant Outlaw enters the battlefield, if an opponent lost life this turn, each opponent loses 2 life and you gain 2 life.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Bladestitched Skaab
|
||||
ManaCost:U B
|
||||
Types:Creature Zombie Soldier
|
||||
PT:2/3
|
||||
S:Mode$ Continuous | Affected$ Zombie.Other+YouCtrl | AddPower$ 1 | Description$ Other Zombies you control get +1/+0.
|
||||
SVar:PlayMain1:TRUE
|
||||
DeckHints:Type$Zombie
|
||||
Oracle:Other Zombies you control get +1/+0.
|
||||
10
forge-gui/res/cardsfolder/upcoming/cant_stay_away.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/cant_stay_away.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Can't Stay Away
|
||||
ManaCost:W B
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcLE3 | TgtPrompt$ Select target creature card in your graveyard with mana value 3 or less | SubAbility$ DBAnimate | StackDescription$ Return {c:Targeted} from your graveyard to the battlefield. | SpellDescription$ Return target creature card with mana value 3 or less from your graveyard to the battlefield. It gains "If this creature would die, exile it instead."
|
||||
SVar:DBAnimate:DB$ Animate | Replacements$ ReplaceDies | Defined$ ParentTarget | Duration$ Permanent | StackDescription$ It gains "If this creature would die, exile it instead."
|
||||
SVar:ReplaceDies:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | ReplaceWith$ Exile | Description$ If this creature would die, exile it instead.
|
||||
SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ReplacedCard
|
||||
K:Flashback:3 W B
|
||||
DeckHas:Ability$Graveyard
|
||||
Oracle:Return target creature card with mana value 3 or less from your graveyard to the battlefield. It gains "If this creature would die, exile it instead."\nFlashback {3}{W}{B}
|
||||
11
forge-gui/res/cardsfolder/upcoming/corpse_cobble.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/corpse_cobble.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Corpse Cobble
|
||||
ManaCost:U B
|
||||
Types:Instant
|
||||
#Text:As an additional cost to cast this spell, sacrifice any number of creatures.
|
||||
A:SP$ Token | Cost$ U B Sac<X/Creature/creature> | RememberCostCards$ True | TokenScript$ ub_x_x_zombie_menace | TokenPower$ Y | TokenToughness$ Y | SubAbility$ DBCleanup | SpellDescription$ Create an X/X blue and black Zombie creature token with menace, where X is the total power of the sacrificed creatures.
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
K:Flashback:3 U B Sac<X/Creature>:::{3}{U}{B}:and any additional costs
|
||||
SVar:X:Count$xPaid
|
||||
SVar:Y:RememberedLKI$CardPower
|
||||
DeckHas:Ability$Sacrifice & Ability$Token
|
||||
Oracle:As an additional cost to cast this spell, sacrifice any number of creatures.\nCreate an X/X blue and black Zombie creature token with menace, where X is the total power of the sacrificed creatures.\nFlashback {3}{U}{B} (You may cast this card from your graveyard for its flashback cost and any additional costs. Then exile it.)
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Curse of Shaken Faith
|
||||
ManaCost:1 R
|
||||
Types:Enchantment Aura Curse
|
||||
K:Enchant player
|
||||
A:SP$ Attach | Cost$ 1 R | ValidTgts$ Player | AILogic$ Curse
|
||||
T:Mode$ SpellCast | ValidActivatingPlayer$ Player.EnchantedBy | ActivatorThisTurnCast$ GT1 | NoResolvingCheck$ True | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever enchanted player casts a spell other than the first spell they cast each turn or copies a spell, CARDNAME deals 2 damage to them.
|
||||
T:Mode$ SpellCopy | ValidActivatingPlayer$ Player.EnchantedBy | NoResolvingCheck$ True | TriggerZones$ Battlefield | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Whenever enchanted player casts a spell other than the first spell they cast each turn or copies a spell, CARDNAME deals 2 damage to them.
|
||||
SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ 2
|
||||
Oracle:Enchant player\nWhenever enchanted player casts a spell other than the first spell they cast each turn or copies a spell, Curse of Shaken Faith deals 2 damage to them.
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Dawnhart Rejuvenator
|
||||
ManaCost:3 G
|
||||
Types:Creature Human Warlock
|
||||
PT:2/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, you gain 3 life.
|
||||
SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 3
|
||||
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color.
|
||||
DeckHas:Ability$LifeGain
|
||||
Oracle:When Dawnhart Rejuvenator enters the battlefield, you gain 3 life.\n{T}: Add one mana of any color.
|
||||
10
forge-gui/res/cardsfolder/upcoming/famished_foragers.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/famished_foragers.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Famished Foragers
|
||||
ManaCost:3 R
|
||||
Types:Creature Vampire
|
||||
PT:4/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ GE1 | Execute$ TrigMana | TriggerDescription$ When CARDNAME enters the battlefield, if an opponent lost life this turn, add {R}{R}{R}.
|
||||
SVar:TrigMana:DB$ Mana | Produced$ R | Amount$ 3
|
||||
A:AB$ Draw | Cost$ 2 R Discard<1/Card> | NumCards$ 1 | SpellDescription$ Draw a card.
|
||||
SVar:X:Count$LifeOppsLostThisTurn
|
||||
DeckHas:Ability$Discard
|
||||
Oracle:When Famished Foragers enters the battlefield, if an opponent lost life this turn, add {R}{R}{R}.\n{2}{R}, Discard a card: Draw a card.
|
||||
@@ -0,0 +1,24 @@
|
||||
Name:Flame Channeler
|
||||
ManaCost:1 R
|
||||
Types:Creature Human Wizard
|
||||
PT:2/2
|
||||
T:Mode$ DamageDoneOnce | ValidSource$ Spell.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ When a spell you control deals damage, transform CARDNAME.
|
||||
SVar:TrigTransform:DB$ SetState | Defined$ Self | Mode$ Transform
|
||||
AlternateMode:DoubleFaced
|
||||
Oracle:When a spell you control deals damage, transform Flame Channeler.
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Embodiment of Flame
|
||||
ManaCost:no cost
|
||||
Colors:red
|
||||
Types:Creature Elemental Wizard
|
||||
PT:3/3
|
||||
T:Mode$ DamageDoneOnce | ValidSource$ Spell.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a spell you control deals damage, put a flame counter on CARDNAME.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ FLAME | CounterNum$ 1
|
||||
A:AB$ Dig | Cost$ 1 SubCounter<1/FLAME> | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | Defined$ You | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. You may play that card this turn.
|
||||
SVar:DBEffect:DB$ Effect | StaticAbilities$ EffSModeContinuous | ExileOnMoved$ Exile | RememberObjects$ Remembered | SubAbility$ DBCleanup
|
||||
SVar:EffSModeContinuous:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | AffectedZone$ Exile | Description$ You may play that card this turn.
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Whenever a spell you control deals damage, put a flame counter on Embodiment of Flame.\n{1}, Remove a flame counter from Embodiment of Flame: Exile the top card of your library. You may play that card this turn.
|
||||
7
forge-gui/res/cardsfolder/upcoming/foul_play.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/foul_play.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Foul Play
|
||||
ManaCost:1 B
|
||||
Types:Sorcery
|
||||
A:SP$ Destroy | ValidTgts$ Creature.powerLE2 | TgtPrompt$ Select target creature with power 2 or less | SubAbility$ DBInvestigate | SpellDescription$ Destroy target creature with power 2 or less. Investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")
|
||||
SVar:DBInvestigate:DB$ Investigate
|
||||
DeckHas:Ability$Token & Ability$Sacrifice
|
||||
Oracle:Destroy target creature with power 2 or less. Investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")
|
||||
@@ -2,7 +2,7 @@ Name:Gisa, Glorious Resurrector
|
||||
ManaCost:2 B B
|
||||
Types:Legendary Creature Human Wizard
|
||||
PT:4/4
|
||||
R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.OppCtrl | ReplaceWith$ Exile | Description$ If a creature an opponent controls would die, exile it instead.
|
||||
R:Event$ Moved | ActiveZones$ Battlefield | CheckSelfLKIZone$ True | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.OppCtrl | ReplaceWith$ Exile | Description$ If a creature an opponent controls would die, exile it instead.
|
||||
SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.ExiledWithSource | PresentZone$ Exile | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, put all creature cards exiled with CARDNAME onto the battlefield under your control. They gain decayed. (A creature with decayed can't block. When it attacks, sacrifice it at end of combat.)
|
||||
SVar:TrigChange:DB$ ChangeZoneAll | ChangeType$ Card.ExiledWithSource | Origin$ Exile | Destination$ Battlefield | GainControl$ True | RememberChanged$ True | SubAbility$ DBPump
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
Name:Liesa, Forgotten Archangel
|
||||
ManaCost:2 W W B
|
||||
Types:Legendary Creature Angel
|
||||
PT:4/5
|
||||
K:Flying
|
||||
K:Lifelink
|
||||
T:Mode$ ChangesZone | ValidCard$ Creature.Other+nonToken+YouCtrl | Origin$ Battlefield | Destination$ Graveyard | Execute$ DelTrigReturn | TriggerZones$ Battlefield | TriggerDescription$ Whenever another nontoken creature you control dies, return that card to its owner's hand at the beginning of the next end step.
|
||||
SVar:DelTrigReturn:DB$ DelayedTrigger | Mode$ Phase | Phase$ End Of Turn | Execute$ DBReturn | RememberObjects$ TriggeredNewCardLKICopy
|
||||
SVar:DBReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Graveyard | Destination$ Hand
|
||||
R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidLKI$ Creature.OppCtrl | ReplaceWith$ Exile | CheckSelfLKIZone$ True | Description$ If a creature an opponent controls would die, exile it instead.
|
||||
SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ReplacedCard
|
||||
DeckHas:Ability$LifeGain
|
||||
Oracle:Flying, lifelink\nWhenever another nontoken creature you control dies, return that card to its owner's hand at the beginning of the next end step.\nIf a creature an opponent controls would die, exile it instead.
|
||||
6
forge-gui/res/cardsfolder/upcoming/lunar_frenzy.txt
Normal file
6
forge-gui/res/cardsfolder/upcoming/lunar_frenzy.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Lunar Frenzy
|
||||
ManaCost:X R
|
||||
Types:Instant
|
||||
A:SP$ Pump | Cost$ X R | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature | NumAtt$ +X | KW$ First Strike & Trample | StackDescription$ {c:Targeted} gets +X/+0 and gains first strike and trample until end of turn. | SpellDescription$ Target creature you control gets +X/+0 and gains first strike and trample until end of turn.
|
||||
SVar:X:Count$xPaid
|
||||
Oracle:Target creature you control gets +X/+0 and gains first strike and trample until end of turn.
|
||||
9
forge-gui/res/cardsfolder/upcoming/ominous_roost.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/ominous_roost.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Ominous Roost
|
||||
ManaCost:2 U
|
||||
Types:Enchantment
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield or whenever you cast a spell from your graveyard, create a 1/1 blue Bird creature token with flying and "This creature can block only creatures with flying."
|
||||
T:Mode$ SpellCast | ValidCard$ Card.wasCastFromGraveyard | ValidActivatingPlayer$ You | Execute$ TrigToken | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ When CARDNAME enters the battlefield or whenever you cast a spell from your graveyard, create a 1/1 blue Bird creature token with flying and "This creature can block only creatures with flying."
|
||||
SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ u_1_1_bird_flying_blockflying
|
||||
DeckHas:Ability$Token
|
||||
DeckHints:Ability$Graveyard
|
||||
Oracle:When Ominous Roost enters the battlefield or whenever you cast a spell from your graveyard, create a 1/1 blue Bird creature token with flying and "This creature can block only creatures with flying."
|
||||
7
forge-gui/res/cardsfolder/upcoming/stormrider_spirit.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/stormrider_spirit.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Stormrider Spirit
|
||||
ManaCost:4 U
|
||||
Types:Creature Spirit
|
||||
PT:3/3
|
||||
K:Flash
|
||||
K:Flying
|
||||
Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFlying
|
||||
@@ -3,7 +3,7 @@ ManaCost:2 G
|
||||
Types:Sorcery
|
||||
A:SP$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | SubAbility$ DBPump | StackDescription$ Put a +1/+1 counter on {c:Targeted}, then double the number of +1/+1 counters on it. | SpellDescription$ Put a +1/+1 counter on target creature, then double the number of +1/+1 counters on it.
|
||||
SVar:DBPump:DB$ MultiplyCounter | Defined$ Targeted | CounterType$ P1P1 | StackDescription$ None
|
||||
K:Flashback:8 G G:ReduceCost$X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
K:Flashback:8 G G:ReduceCost$ X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
SVar:X:Count$HighestCMC_Card.IsCommander+YouOwn+inZoneBattlefield,Card.IsCommander+YouOwn+inZoneCommand
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Put a +1/+1 counter on target creature, then double the number of +1/+1 counters on it.\nFlashback {8}{G}{G}. This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:2 B
|
||||
Types:Sorcery
|
||||
A:SP$ ChooseCard | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Choices$ Creature.TargetedPlayerOwn | ChoiceZone$ Graveyard | AILogic$ WorstCard | Amount$ 1 | SubAbility$ DBChangeZone | Mandatory$ True | StackDescription$ SpellDescription | SpellDescription$ Target opponent puts a creature card of their choice from their graveyard onto the battlefield under your control.
|
||||
SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | GainControl$ True | Destination$ Battlefield | StackDescription$ None
|
||||
K:Flashback:8 B B:ReduceCost$X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
K:Flashback:8 B B:ReduceCost$ X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
SVar:X:Count$HighestCMC_Card.IsCommander+YouOwn+inZoneBattlefield,Card.IsCommander+YouOwn+inZoneCommand
|
||||
DeckHas:Ability$Graveyard
|
||||
Oracle:Target opponent puts a creature card of their choice from their graveyard onto the battlefield under your control.\nFlashback {8}{B}{B}. This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:2 U
|
||||
Types:Sorcery
|
||||
A:SP$ ExchangeControl | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature you don't control | TargetMin$ 2 | TargetMax$ 2 | TargetUnique$ True | StackDescription$ SpellDescription | SpellDescription$ Exchange control of two target creatures you don't control.
|
||||
SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | GainControl$ True | Destination$ Battlefield
|
||||
K:Flashback:8 U U:ReduceCost$X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
K:Flashback:8 U U:ReduceCost$ X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
SVar:X:Count$HighestCMC_Card.IsCommander+YouOwn+inZoneBattlefield,Card.IsCommander+YouOwn+inZoneCommand
|
||||
AI:RemoveDeck:All
|
||||
Oracle:Exchange control of two target creatures you don't control.\nFlashback {8}{U}{U}. This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:4 W
|
||||
Types:Sorcery
|
||||
A:SP$ Token | TokenScript$ w_1_1_human | TokenAmount$ Y | SpellDescription$ Create a 1/1 white Human creature token for each creature you control.
|
||||
SVar:Y:Count$TypeYouCtrl.Creature
|
||||
K:Flashback:8 W W:ReduceCost$X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
K:Flashback:8 W W:ReduceCost$ X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
SVar:X:Count$HighestCMC_Card.IsCommander+YouOwn+inZoneBattlefield,Card.IsCommander+YouOwn+inZoneCommand
|
||||
DeckHas:Ability$Token
|
||||
Oracle:Create a 1/1 white Human creature token for each creature you control.\nFlashback {8}{W}{W}. This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
|
||||
|
||||
@@ -5,7 +5,7 @@ A:SP$ Sacrifice | Defined$ Player.Opponent | SacValid$ Artifact | SacMessage$ ar
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ Y | TokenScript$ c_a_treasure_sac | SubAbility$ DBCleanup | SpellDescription$ For each artifact sacrificed this way, you create a Treasure token.
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
SVar:Y:Count$RememberedSize
|
||||
K:Flashback:8 R R:ReduceCost$X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
K:Flashback:8 R R:ReduceCost$ X:This spell costs {X} less to cast this way, where X is the greatest mana value of a commander you own on the battlefield or in the command zone.
|
||||
SVar:X:Count$HighestCMC_Card.IsCommander+YouOwn+inZoneBattlefield,Card.IsCommander+YouOwn+inZoneCommand
|
||||
DeckHas:Ability$Token & Ability$Sacrifice
|
||||
AI:RemoveDeck:Random
|
||||
|
||||
@@ -15,4 +15,12 @@ ScryfallCode=MIC
|
||||
35 R Curse of Obsession @Irvin Rodriguez
|
||||
36 R Visions of Ruin @Andrew Mar
|
||||
37 R Visions of Dominance @Andrew Mar
|
||||
39 M Leinore, Autumn Sovereign @Fariba Khamseh
|
||||
40 R Wilhelt, the Rotcleaver @Chris Rallis
|
||||
69 M Avacyn's Memorial @Kasia 'Kafis' Zielińska
|
||||
70 R Visions of Glory @Alexander Mokhov
|
||||
71 R Visions of Duplicity @Alexander Mokhov
|
||||
72 R Visions of Dread @Andrew Mar
|
||||
73 R Curse of Obsession @Irvin Rodriguez
|
||||
74 R Visions of Ruin @Andrew Mar
|
||||
75 R Visions of Dominance @Andrew Mar
|
||||
|
||||
@@ -12,43 +12,81 @@ Prerelease=6 Boosters, 1 RareMythic+
|
||||
[cards]
|
||||
3 U Beloved Beggar @Francisco Miyara
|
||||
7 R Brutal Cathar @Karl Kopinski
|
||||
8 C Candlegrove Witch @Anna Christenson
|
||||
9 C Candletrap @Manuel Castañón
|
||||
12 C Celestus Sanctifier @Irina Nordsol
|
||||
17 M Enduring Angel @Irina Nordsol
|
||||
20 U Gavony Dawnguard @Micah Epstein
|
||||
23 C Hedgewitch's Mask @Ovidio Cartagena
|
||||
30 C Ritual Guardian @Denman Rooke
|
||||
36 C Sungold Barrage @Leanna Crossan
|
||||
40 C Unruly Mob @Ryan Pancoast
|
||||
42 C Baithook Angler @Uriah Voth
|
||||
44 C Consider @Zezhou Chen
|
||||
49 U Dissipate @David Palumbo
|
||||
65 U Ominous Roost @Josu Hernaiz
|
||||
71 M Poppet Stitcher @Simon Dominic
|
||||
73 C Secrets of the Key @Alix Branwyn
|
||||
76 R Sludge Monster @Svetlin Velinov
|
||||
79 C Stormrider Spirit @Lake Hurwitz
|
||||
81 R Triskaidekaphile @Slawomir Maniak
|
||||
84 C Arrogant Outlaw @Aurore Folny
|
||||
91 R Champion of the Perished @Kekai Kotaki
|
||||
94 R Curse of Leeches @Uriah Voth
|
||||
95 C Defenestrate @Darek Zabrocki
|
||||
101 U Foul Play @Campbell White
|
||||
103 R Gisa, Glorious Resurrector @Yongjae Choi
|
||||
104 R Graveyard Trespasser @Chris Rallis
|
||||
106 C Hobbling Zombie @Josh Hass
|
||||
107 U Infernal Grasp @Naomi Baker
|
||||
108 R Jadar, Ghoulcaller of Nephalia @Yongjae Choi
|
||||
130 C Brimstone Vandal @Andreas Zafiratos
|
||||
134 R Curse of Shaken Faith
|
||||
134 R Curse of Shaken Faith @Campbell White
|
||||
138 C Famished Foragers @Lorenzo Mastroianni
|
||||
140 C Festival Crasher @Milivoj Ćeran
|
||||
142 R Giestflame Reservoir @Anna Christenson
|
||||
141 U Flame Channeler @Véronique Meignaud
|
||||
142 R Geistflame Reservoir @Anna Christenson
|
||||
144 C Immolation @Olena Richards
|
||||
146 R Light Up the Night @Wei Wei
|
||||
147 U Lunar Frenzy @Alix Branwyn
|
||||
154 U Play with Fire @Svetlin Velinov
|
||||
163 C Tavern Ruffian @Zoltan Boros
|
||||
164 C Thermo-Alchemist @Raymond Swanland
|
||||
164 U Thermo-Alchemist @Raymond Swanland
|
||||
165 U Village Watch @Nestor Ossandon Leal
|
||||
166 U Voldaren Ambusher @Evyn Fong
|
||||
168 R Augur of Autumn @Billy Christian
|
||||
175 C Candlelit Cavalry @Viko Menezes
|
||||
176 U Clear Shot @Craig J Spearing
|
||||
178 U Contortionist Troupe @Jesper Ejsing
|
||||
180 C Dawnhart Rejuvenator @Darren Tan
|
||||
182 U Defend the Celestus @Andrey Kuzinskiy
|
||||
188 C Howl of the Hunt @Josu Hernaiz
|
||||
189 C Might of the Old Ways @Zezhou Chen
|
||||
192 C Pestilent Wolf @Oriana Menendez
|
||||
197 R Saryth, the Viper's Fang @Igor Kieryluk
|
||||
199 C Snarling Wolf @Ilse Gort
|
||||
205 U Turn the Earth @Alayna Danner
|
||||
206 R Unnatural Growth @Svetlin Velinov
|
||||
208 M Wrenn and Seven @Heonhwa Choe
|
||||
211 M Arlinn, the Pack's Hope @Anna Steinbauer
|
||||
212 U Bladestitched Skaab @Dave Kendall
|
||||
214 U Corpse Cobble @Ravenna Tran
|
||||
215 R Croaking Counterpart @Yeong-Hao Han
|
||||
218 U Devoted Grafkeeper @Raoul Vitale
|
||||
220 U Diregraf Rebirth @Irina Nordsol
|
||||
221 U Faithful Mending @Caroline Gariba
|
||||
222 U Fleshtaker @Kev Walker
|
||||
224 R Galvanic Iteration @Johann Bodin
|
||||
225 R Ghoulcaller's Harvest @Anna Steinbauer
|
||||
229 U Join the Dance @Raoul Vitale
|
||||
231 U Kessig Naturalist @Johan Grenier
|
||||
232 R Liesa, Forgotten Archangel @Dmitry Burmak
|
||||
236 R Rite of Harmony @Rovina Cai
|
||||
240 M Sigarda, Champion of Light @Howard Lyon
|
||||
246 R Tovolar, Dire Overlord @Chris Rahn
|
||||
249 U Vampire Socialite @Suzanne Helmigh
|
||||
252 R The Celestus @Jonas De Ro
|
||||
257 R Pithing Needle @Ovidio Cartagena
|
||||
260 R Deserted Beach @Jonas De Ro
|
||||
263 R Haunted Ridge @Jonas De Ro
|
||||
265 R Overgrown Farmland @Jonas De Ro
|
||||
@@ -71,18 +109,34 @@ Prerelease=6 Boosters, 1 RareMythic+
|
||||
283 R Overgrown Farmland @Donato Giancola
|
||||
284 R Rockfall Vale @Piotr Dura
|
||||
285 R Shipwreck Marsh @Steven Belledin
|
||||
286 R Brutal Cathar @Steve Ellis
|
||||
287 C Candlegrove Witch @Brigitte Roka
|
||||
290 R Graveyard Trespasser @Tyler Crook
|
||||
296 C Tavern Ruffian @Michael Walsh
|
||||
297 U Village Watch @Andrea De Dominicis
|
||||
304 R Saryth, the Viper's Fang
|
||||
301 C Dawnhart Rejuvenator @Cabrol
|
||||
304 R Saryth, the Viper's Fang @Tyler Crook
|
||||
307 M Arlinn, the Pack's Hope @Emma Rios
|
||||
310 U Kessig Naturalist @Rafael Albuquerque
|
||||
311 R Tovolar, Dire Overlord @Michael Walsh
|
||||
314 R Gisa, Glorious Resurrector @Cabrol
|
||||
315 R Jadar, Ghoulcaller of Nephalia @DZO
|
||||
319 R Liesa, Forgotten Archangel @Evan Cagle
|
||||
323 M Sigarda, Champion of Light @N.C. Winters
|
||||
355 R Giestflame Reservoir @Anna Christenson
|
||||
326 R Curse of Silence @Irina Nordsol
|
||||
327 M Enduring Angel @Irina Nordsol
|
||||
344 R Champion of the Perished @Kekai Kotaki
|
||||
345 R Curse of Leeches @Uriah Voth
|
||||
355 R Geistflame Reservoir @Anna Christenson
|
||||
356 R Light Up the Night @Wei Wei
|
||||
365 R Unnatural Growth @Svetlin Velinov
|
||||
368 R Can't Stay Away @Milivoj Ćeran
|
||||
369 R Croaking Counterpart @Yeong-Hao Han
|
||||
371 R Galvanic Iteration @Johann Bodin
|
||||
374 R Rite of Harmony
|
||||
372 R Ghoulcaller's Harvest @Anna Steinbauer
|
||||
374 R Rite of Harmony @Rovina Cai
|
||||
377 R The Celestus @Jonas De Ro
|
||||
378 R Pithing Needle @Ovidio Cartagena
|
||||
380 L Plains @Andreas Rocha
|
||||
381 L Island @Andreas Rocha
|
||||
382 L Swamp @Kasia 'Kafis' Zielińska
|
||||
@@ -90,6 +144,7 @@ Prerelease=6 Boosters, 1 RareMythic+
|
||||
384 L Forest @Andreas Rocha
|
||||
385 R Champion of the Perished @Daarken
|
||||
386 R Triskaidekaphile @Mathias Kollros
|
||||
387 U Gavony Dawnguard @Micah Epstein
|
||||
388 C Consider @Zezhou Chen
|
||||
389 U Infernal Grasp @Naomi Baker
|
||||
390 U Play with Fire @Svetlin Velinov
|
||||
|
||||
@@ -2328,7 +2328,7 @@ lblRemoveAllCountersConfirm=Remove all counters?
|
||||
lblRemoveNTargetCounterFromCardPayCostConfirm=Pay Cost: Remove {0} {1} counter from {2}?
|
||||
lblRemoveCountersFromAInZoneCard=Remove counter(s) from a card in {0}
|
||||
lblSacrificeCardConfirm=Sacrifice {0}?
|
||||
lblSelectATargetToSacrifice=Select a {0} to sacrifice ({1} left)
|
||||
lblSelectATargetToSacrifice=Select {0} to sacrifice ({1} left)
|
||||
lblSelectOneOfCardsToTapAlreadyChosen=Select one of the cards to tap. Already chosen:
|
||||
lblSelectACreatureToTap=Select a creature to tap.
|
||||
lblEnoughValidCardNotToPayTheCost=Not enough valid cards left to tap to pay the cost.
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 2.8 MiB |
@@ -0,0 +1,8 @@
|
||||
Name:Bird
|
||||
ManaCost:no cost
|
||||
Types:Creature Bird
|
||||
Colors:blue
|
||||
PT:1/1
|
||||
K:Flying
|
||||
S:Mode$ CantBlockBy | ValidAttacker$ Creature.withoutFlying | ValidBlocker$ Creature.Self | Description$ This creature can block only creatures with flying.
|
||||
Oracle:Flying\nThis creature can block only creatures with flying.
|
||||
7
forge-gui/res/tokenscripts/ub_x_x_zombie_menace.txt
Normal file
7
forge-gui/res/tokenscripts/ub_x_x_zombie_menace.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Zombie
|
||||
ManaCost:no cost
|
||||
Types:Creature Zombie
|
||||
Colors:blue,black
|
||||
PT:*/*
|
||||
K:Menace
|
||||
Oracle:Menace
|
||||
@@ -431,6 +431,31 @@ public enum FSkinProp {
|
||||
IMG_CARDBG_WG (new int[] {684, 1496, 339, 496}, PropType.CARDBG),
|
||||
IMG_CARDBG_WR (new int[] {1025, 1496, 339, 496}, PropType.CARDBG),
|
||||
IMG_CARDBG_WU (new int[] {1366, 1496, 339, 496}, PropType.CARDBG),
|
||||
//FOR PW BG
|
||||
IMG_PWBG_B (new int[] {2, 1994, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_BG (new int[] {343, 1994, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_BR (new int[] {684, 1994, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_C (new int[] {1025, 1994, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_G (new int[] {1366, 1994, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_M (new int[] {2, 2492, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_R (new int[] {343, 2492, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_RG (new int[] {684, 2492, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_U (new int[] {1025, 2492, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_UB (new int[] {1366, 2492, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_UG (new int[] {2, 2990, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_UR (new int[] {343, 2990, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_W (new int[] {684, 2990, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_WB (new int[] {1025, 2990, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_WG (new int[] {1366, 2990, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_WR (new int[] {2, 3488, 339, 496}, PropType.CARDBG),
|
||||
IMG_PWBG_WU (new int[] {343, 3488, 339, 496}, PropType.CARDBG),
|
||||
//NYX OVERLAY
|
||||
IMG_NYX_B (new int[] {684, 3488, 339, 248}, PropType.CARDBG),
|
||||
IMG_NYX_G (new int[] {1025, 3488, 339, 248}, PropType.CARDBG),
|
||||
IMG_NYX_M (new int[] {1366, 3488, 339, 248}, PropType.CARDBG),
|
||||
IMG_NYX_R (new int[] {684, 3736, 339, 248}, PropType.CARDBG),
|
||||
IMG_NYX_U (new int[] {1025, 3736, 339, 248}, PropType.CARDBG),
|
||||
IMG_NYX_W (new int[] {1366, 3736, 339, 248}, PropType.CARDBG),
|
||||
|
||||
IMG_FAV1 (new int[] {0, 0, 100, 100}, PropType.FAVICON),
|
||||
IMG_FAV2 (new int[] {100, 0, 100, 100}, PropType.FAVICON),
|
||||
|
||||
Reference in New Issue
Block a user