mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 17:58:01 +00:00
Merge branch 'master' into questMode_wildOpponents
This commit is contained in:
@@ -20,9 +20,12 @@ package forge.game;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.HashBasedTable;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Table;
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import forge.card.CardRarity;
|
||||
import forge.card.CardStateName;
|
||||
@@ -53,6 +56,8 @@ import forge.util.Visitor;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
/**
|
||||
* Represents the state of a <i>single game</i>, a new instance is created for each game.
|
||||
*/
|
||||
@@ -86,6 +91,8 @@ public class Game {
|
||||
private Map<Player, PlayerCollection> attackedThisTurn = Maps.newHashMap();
|
||||
private Map<Player, PlayerCollection> attackedLastTurn = Maps.newHashMap();
|
||||
|
||||
private Table<CounterType, Player, List<Pair<Card, Integer>>> countersAddedThisTurn = HashBasedTable.create();
|
||||
|
||||
private Player monarch = null;
|
||||
private Player monarchBeginTurn = null;
|
||||
|
||||
@@ -939,4 +946,46 @@ public class Game {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void onCleanupPhase() {
|
||||
clearCounterAddedThisTurn();
|
||||
for (Player player : getPlayers()) {
|
||||
player.onCleanupPhase();
|
||||
}
|
||||
}
|
||||
|
||||
public void addCounterAddedThisTurn(Player putter, CounterType cType, Card card, Integer value) {
|
||||
if (putter == null || card == null || value <= 0) {
|
||||
return;
|
||||
}
|
||||
List<Pair<Card, Integer>> result = countersAddedThisTurn.get(cType, putter);
|
||||
if (result == null) {
|
||||
result = Lists.newArrayList();
|
||||
}
|
||||
result.add(Pair.of(CardUtil.getLKICopy(card), value));
|
||||
if (!countersAddedThisTurn.contains(cType, putter)) {
|
||||
countersAddedThisTurn.put(cType, putter, result);
|
||||
}
|
||||
}
|
||||
|
||||
public int getCounterAddedThisTurn(CounterType cType, String validPlayer, String validCard, Card source, Player sourceController, SpellAbility spellAbility) {
|
||||
int result = 0;
|
||||
if (!countersAddedThisTurn.containsRow(cType)) {
|
||||
return result;
|
||||
}
|
||||
for (Map.Entry<Player, List<Pair<Card, Integer>>> e : countersAddedThisTurn.row(cType).entrySet()) {
|
||||
if (e.getKey().isValid(validPlayer.split(","), sourceController, source, spellAbility)) {
|
||||
for (Pair<Card, Integer> p : e.getValue()) {
|
||||
if (p.getKey().isValid(validCard.split(","), sourceController, source, spellAbility)) {
|
||||
result += p.getValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void clearCounterAddedThisTurn() {
|
||||
countersAddedThisTurn.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1593,6 +1593,8 @@ public class AbilityUtils {
|
||||
final String[] sq;
|
||||
sq = l[0].split("\\.");
|
||||
|
||||
final Game game = c.getGame();
|
||||
|
||||
if (ctb != null) {
|
||||
// Count$Compare <int comparator value>.<True>.<False>
|
||||
if (sq[0].startsWith("Compare")) {
|
||||
@@ -1776,6 +1778,13 @@ public class AbilityUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (l[0].startsWith("CountersAddedThisTurn")) {
|
||||
final String[] parts = l[0].split(" ");
|
||||
CounterType cType = CounterType.getType(parts[1]);
|
||||
|
||||
return CardFactoryUtil.doXMath(game.getCounterAddedThisTurn(cType, parts[2], parts[3], c, sa.getActivatingPlayer(), sa), expr, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
return CardFactoryUtil.xCount(c, s2);
|
||||
|
||||
@@ -201,6 +201,26 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
||||
}
|
||||
}
|
||||
sb.append(" Then shuffle that library.");
|
||||
} else if (origin.equals("Sideboard")) {
|
||||
sb.append(chooserNames);
|
||||
//currently Reveal is always True in ChangeZone
|
||||
if (sa.hasParam("Reveal")) {
|
||||
sb.append(" may reveal ").append(num).append(" ").append(type).append(" from outside the game and put ");
|
||||
if (num == 1) {
|
||||
sb.append("it ");
|
||||
} else {
|
||||
sb.append("them ");
|
||||
}
|
||||
sb.append("into their ").append(destination.toLowerCase()).append(".");
|
||||
} else {
|
||||
if (sa.hasParam("Mandatory")) {
|
||||
sb.append(" puts ");
|
||||
} else {
|
||||
sb.append(" may put ");
|
||||
}
|
||||
sb.append(num).append(" ").append(type).append(" from outside the game into their ");
|
||||
sb.append(destination.toLowerCase()).append(".");
|
||||
}
|
||||
} else if (origin.equals("Hand")) {
|
||||
sb.append(chooserNames);
|
||||
if (!chooserNames.equals(fetcherNames)) {
|
||||
|
||||
@@ -1239,7 +1239,7 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
final int loyaltyBefore = getCurrentLoyalty();
|
||||
|
||||
setCounters(counterType, newValue);
|
||||
getController().addCounterToPermThisTurn(counterType, addAmount);
|
||||
getGame().addCounterAddedThisTurn(source, counterType, this, addAmount);
|
||||
view.updateCounters(this);
|
||||
|
||||
//fire card stats changed event if p/t bonuses or loyalty changed from added counters
|
||||
@@ -1267,7 +1267,8 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
}
|
||||
} else {
|
||||
setCounters(counterType, newValue);
|
||||
getController().addCounterToPermThisTurn(counterType, addAmount);
|
||||
|
||||
getGame().addCounterAddedThisTurn(source, counterType, this, addAmount);
|
||||
view.updateCounters(this);
|
||||
}
|
||||
if (newValue <= 0) {
|
||||
|
||||
@@ -841,14 +841,6 @@ public class CardFactoryUtil {
|
||||
return doXMath(maxNum, m, c);
|
||||
}
|
||||
|
||||
// Count$CountersAddedToPermYouCtrl <CounterType>
|
||||
if (l[0].startsWith("CountersAddedToPermYouCtrl")) {
|
||||
final String[] components = l[0].split(" ", 2);
|
||||
final CounterType counterType = CounterType.getType(components[1]);
|
||||
int n = cc.getCounterToPermThisTurn(counterType);
|
||||
return doXMath(n, m, c);
|
||||
}
|
||||
|
||||
if (l[0].startsWith("CommanderCastFromCommandZone")) {
|
||||
// only used by Opal Palace, and it does add the trigger to the card
|
||||
return doXMath(cc.getCommanderCast(c), m, c);
|
||||
|
||||
@@ -501,9 +501,7 @@ public class PhaseHandler implements java.io.Serializable {
|
||||
bPreventCombatDamageThisTurn = false;
|
||||
if (!bRepeatCleanup) {
|
||||
// only call onCleanupPhase when Cleanup is not repeated
|
||||
for (Player player : game.getPlayers()) {
|
||||
player.onCleanupPhase();
|
||||
}
|
||||
game.onCleanupPhase();
|
||||
setPlayerTurn(handleNextTurn());
|
||||
// "Trigger" for begin turn to get around a phase skipping
|
||||
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
||||
|
||||
@@ -114,8 +114,6 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
|
||||
private CardCollection sacrificedThisTurn = new CardCollection();
|
||||
|
||||
private Map<CounterType, Integer> countersAddedtoPermThisTurn = Maps.newHashMap();
|
||||
|
||||
/** A list of tokens not in play, but on their way.
|
||||
* This list is kept in order to not break ETB-replacement
|
||||
* on tokens. */
|
||||
@@ -2289,20 +2287,6 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
sacrificedThisTurn.clear();
|
||||
}
|
||||
|
||||
public final void addCounterToPermThisTurn(final CounterType type, final int x) {
|
||||
countersAddedtoPermThisTurn.put(type, getCounterToPermThisTurn(type) + x);
|
||||
}
|
||||
|
||||
public final Integer getCounterToPermThisTurn(final CounterType type) {
|
||||
if (countersAddedtoPermThisTurn.containsKey(type))
|
||||
return countersAddedtoPermThisTurn.get(type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public final void resetCounterToPermThisTurn() {
|
||||
countersAddedtoPermThisTurn.clear();
|
||||
}
|
||||
|
||||
public final int getSpellsCastThisTurn() {
|
||||
return spellsCastThisTurn;
|
||||
}
|
||||
@@ -2521,7 +2505,6 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
resetSurveilThisTurn();
|
||||
resetCycledThisTurn();
|
||||
resetSacrificedThisTurn();
|
||||
resetCounterToPermThisTurn();
|
||||
clearAssignedDamage();
|
||||
resetAttackersDeclaredThisTurn();
|
||||
resetAttackedOpponentsThisTurn();
|
||||
|
||||
@@ -37,7 +37,6 @@ import forge.util.Localizer;
|
||||
import forge.util.Utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Deque;
|
||||
@@ -160,25 +159,17 @@ public class Forge implements ApplicationListener {
|
||||
private void preloadExtendedArt() {
|
||||
if (!enablePreloadExtendedArt)
|
||||
return;
|
||||
List<String> keys = new ArrayList<>();
|
||||
File[] directories = new File(ForgeConstants.CACHE_CARD_PICS_DIR).listFiles(new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File file) {
|
||||
if (!file.getName().startsWith("MPS_"))
|
||||
return false;
|
||||
return file.isDirectory();
|
||||
}
|
||||
});
|
||||
for (File folder : directories) {
|
||||
File[] files = new File(folder.toString()).listFiles();
|
||||
for (File file : files) {
|
||||
if (file.isFile()) {
|
||||
keys.add(folder.getName() + "/" +file.getName().replace(".jpg","").replace(".png",""));
|
||||
}
|
||||
}
|
||||
List<String> BorderlessCardlistkeys = FileUtil.readFile(ForgeConstants.BORDERLESS_CARD_LIST_FILE);
|
||||
if(BorderlessCardlistkeys.isEmpty())
|
||||
return;
|
||||
List<String> filteredkeys = new ArrayList<>();
|
||||
for (String cardname : BorderlessCardlistkeys){
|
||||
File image = new File(ForgeConstants.CACHE_CARD_PICS_DIR+"/"+cardname+".jpg");
|
||||
if (image.exists())
|
||||
filteredkeys.add(cardname);
|
||||
}
|
||||
if (!keys.isEmpty())
|
||||
ImageCache.preloadCache((Iterable<String>)keys);
|
||||
if (!filteredkeys.isEmpty())
|
||||
ImageCache.preloadCache(filteredkeys);
|
||||
}
|
||||
|
||||
private void afterDbLoaded() {
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.cache.RemovalCause;
|
||||
import com.google.common.cache.RemovalListener;
|
||||
import com.google.common.cache.RemovalNotification;
|
||||
import forge.Forge;
|
||||
import forge.ImageKeys;
|
||||
import forge.card.CardEdition;
|
||||
import forge.card.CardRenderer;
|
||||
@@ -106,6 +107,8 @@ public class ImageCache {
|
||||
}
|
||||
|
||||
public static void disposeTexture(){
|
||||
if (Forge.enablePreloadExtendedArt)
|
||||
return;
|
||||
for (Texture t: cache.asMap().values()) {
|
||||
if (!t.toString().contains("pics/icons")) //fixes quest avatars black texture. todo: filter textures that are safe to dispose...
|
||||
t.dispose();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package forge.assets;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
@@ -14,142 +14,14 @@ import forge.FThreads;
|
||||
|
||||
import forge.Forge;
|
||||
import forge.ImageKeys;
|
||||
import forge.properties.ForgeConstants;
|
||||
import forge.util.FileUtil;
|
||||
import forge.util.TextUtil;
|
||||
|
||||
import static forge.assets.ImageCache.croppedBorderImage;
|
||||
|
||||
final class ImageLoader extends CacheLoader<String, Texture> {
|
||||
private static ArrayList<String> borderlessCardlistKey = new ArrayList<String>() {
|
||||
{//TODO: load the values from text list instead of hardcoded
|
||||
add("2XM/Academy Ruins2.fullborder");
|
||||
add("2XM/Atraxa, Praetors' Voice2.fullborder");
|
||||
add("2XM/Avacyn, Angel of Hope2.fullborder");
|
||||
add("2XM/Batterskull2.fullborder");
|
||||
add("2XM/Blightsteel Colossus2.fullborder");
|
||||
add("2XM/Blood Moon2.fullborder");
|
||||
add("2XM/Brainstorm2.fullborder");
|
||||
add("2XM/Chrome Mox2.fullborder");
|
||||
add("2XM/Council's Judgment2.fullborder");
|
||||
add("2XM/Crop Rotation2.fullborder");
|
||||
add("2XM/Cyclonic Rift2.fullborder");
|
||||
add("2XM/Dark Confidant2.fullborder");
|
||||
add("2XM/Doubling Season2.fullborder");
|
||||
add("2XM/Expedition Map2.fullborder");
|
||||
add("2XM/Exploration2.fullborder");
|
||||
add("2XM/Fatal Push2.fullborder");
|
||||
add("2XM/Force of Will2.fullborder");
|
||||
add("2XM/Goblin Guide2.fullborder");
|
||||
add("2XM/Jace, the Mind Sculptor2.fullborder");
|
||||
add("2XM/Kaalia of the Vast2.fullborder");
|
||||
add("2XM/Karn Liberated2.fullborder");
|
||||
add("2XM/Lightning Greaves2.fullborder");
|
||||
add("2XM/Mana Crypt2.fullborder");
|
||||
add("2XM/Meddling Mage2.fullborder");
|
||||
add("2XM/Mox Opal2.fullborder");
|
||||
add("2XM/Noble Hierarch2.fullborder");
|
||||
add("2XM/Phyrexian Metamorph2.fullborder");
|
||||
add("2XM/Sneak Attack2.fullborder");
|
||||
add("2XM/Stoneforge Mystic2.fullborder");
|
||||
add("2XM/Sword of Body and Mind2.fullborder");
|
||||
add("2XM/Sword of Feast and Famine2.fullborder");
|
||||
add("2XM/Sword of Fire and Ice2.fullborder");
|
||||
add("2XM/Sword of Light and Shadow2.fullborder");
|
||||
add("2XM/Sword of War and Peace2.fullborder");
|
||||
add("2XM/Thoughtseize2.fullborder");
|
||||
add("2XM/Toxic Deluge2.fullborder");
|
||||
add("2XM/Urza's Mine2.fullborder");
|
||||
add("2XM/Urza's Power Plant2.fullborder");
|
||||
add("2XM/Urza's Tower2.fullborder");
|
||||
add("2XM/Wurmcoil Engine2.fullborder");
|
||||
add("ELD/Garruk, Cursed Huntsman2.fullborder");
|
||||
add("ELD/Oko, Thief of Crowns2.fullborder");
|
||||
add("ELD/The Royal Scions2.fullborder");
|
||||
add("IKO/Brokkos, Apex of Forever2.fullborder");
|
||||
add("IKO/Brokkos, Apex of Forever3.fullborder");
|
||||
add("IKO/Crystalline Giant3.fullborder");
|
||||
add("IKO/Cubwarden2.fullborder");
|
||||
add("IKO/Dirge Bat2.fullborder");
|
||||
add("IKO/Dirge Bat3.fullborder");
|
||||
add("IKO/Everquill Phoenix2.fullborder");
|
||||
add("IKO/Everquill Phoenix3.fullborder");
|
||||
add("IKO/Gemrazer2.fullborder");
|
||||
add("IKO/Gemrazer3.fullborder");
|
||||
add("IKO/Gyruda, Doom of Depths3.fullborder");
|
||||
add("IKO/Huntmaster Liger2.fullborder");
|
||||
add("IKO/Huntmaster Liger3.fullborder");
|
||||
add("IKO/Illuna, Apex of Wishes2.fullborder");
|
||||
add("IKO/Illuna, Apex of Wishes3.fullborder");
|
||||
add("IKO/Indatha Triome2.fullborder");
|
||||
add("IKO/Ketria Triome2.fullborder");
|
||||
add("IKO/Lukka, Coppercoat Outcast2.fullborder");
|
||||
add("IKO/Luminous Broodmoth3.fullborder");
|
||||
add("IKO/Mysterious Egg2.fullborder");
|
||||
add("IKO/Narset of the Ancient Way2.fullborder");
|
||||
add("IKO/Nethroi, Apex of Death2.fullborder");
|
||||
add("IKO/Nethroi, Apex of Death3.fullborder");
|
||||
add("IKO/Pollywog Symbiote2.fullborder");
|
||||
add("IKO/Raugrin Triome2.fullborder");
|
||||
add("IKO/Savai Triome2.fullborder");
|
||||
add("IKO/Sea-Dasher Octopus2.fullborder");
|
||||
add("IKO/Snapdax, Apex of the Hunt2.fullborder");
|
||||
add("IKO/Snapdax, Apex of the Hunt3.fullborder");
|
||||
add("IKO/Sprite Dragon3.fullborder");
|
||||
add("IKO/Titanoth Rex2.fullborder");
|
||||
add("IKO/Vadrok, Apex of Thunder2.fullborder");
|
||||
add("IKO/Vadrok, Apex of Thunder3.fullborder");
|
||||
add("IKO/Vivien, Monsters' Advocate2.fullborder");
|
||||
add("IKO/Void Beckoner2.fullborder");
|
||||
add("IKO/Yidaro, Wandering Monster3.fullborder");
|
||||
add("IKO/Zagoth Triome2.fullborder");
|
||||
add("IKO/Zilortha, Strength Incarnate.fullborder");
|
||||
add("M21/Basri Ket2.fullborder");
|
||||
add("M21/Chandra, Heart of Fire2.fullborder");
|
||||
add("M21/Containment Priest2.fullborder");
|
||||
add("M21/Cultivate2.fullborder");
|
||||
add("M21/Garruk, Unleashed2.fullborder");
|
||||
add("M21/Grim Tutor2.fullborder");
|
||||
add("M21/Liliana, Waker of the Dead2.fullborder");
|
||||
add("M21/Massacre Wurm2.fullborder");
|
||||
add("M21/Scavenging Ooze2.fullborder");
|
||||
add("M21/Solemn Simulacrum2.fullborder");
|
||||
add("M21/Teferi, Master of Time2.fullborder");
|
||||
add("M21/Ugin, the Spirit Dragon2.fullborder");
|
||||
add("M21/Ugin, the Spirit Dragon3.fullborder");
|
||||
add("PLGS/Hangarback Walker.fullborder");
|
||||
add("SLD/Acidic Slime.fullborder");
|
||||
add("SLD/Captain Sisay.fullborder");
|
||||
add("SLD/Meren of Clan Nel Toth.fullborder");
|
||||
add("SLD/Narset, Enlightened Master.fullborder");
|
||||
add("SLD/Necrotic Ooze.fullborder");
|
||||
add("SLD/Oona, Queen of the Fae.fullborder");
|
||||
add("SLD/Saskia the Unyielding.fullborder");
|
||||
add("SLD/The Mimeoplasm.fullborder");
|
||||
add("SLD/Voidslime.fullborder");
|
||||
add("THB/Ashiok, Nightmare Muse2.fullborder");
|
||||
add("THB/Calix, Destiny's Hand2.fullborder");
|
||||
add("THB/Elspeth, Sun's Nemesis2.fullborder");
|
||||
add("UST/Forest.fullborder");
|
||||
add("UST/Island.fullborder");
|
||||
add("UST/Mountain.fullborder");
|
||||
add("UST/Plains.fullborder");
|
||||
add("UST/Swamp.fullborder");
|
||||
add("ZNR/Boulderloft Pathway2.fullborder");
|
||||
add("ZNR/Branchloft Pathway2.fullborder");
|
||||
add("ZNR/Brightclimb Pathway2.fullborder");
|
||||
add("ZNR/Clearwater Pathway2.fullborder");
|
||||
add("ZNR/Cragcrown Pathway2.fullborder");
|
||||
add("ZNR/Grimclimb Pathway2.fullborder");
|
||||
add("ZNR/Jace, Mirror Mage2.fullborder");
|
||||
add("ZNR/Lavaglide Pathway2.fullborder");
|
||||
add("ZNR/Murkwater Pathway2.fullborder");
|
||||
add("ZNR/Nahiri, Heir of the Ancients2.fullborder");
|
||||
add("ZNR/Needleverge Pathway2.fullborder");
|
||||
add("ZNR/Nissa of Shadowed Boughs2.fullborder");
|
||||
add("ZNR/Pillarverge Pathway2.fullborder");
|
||||
add("ZNR/Riverglide Pathway2.fullborder");
|
||||
add("ZNR/Timbercrown Pathway2.fullborder");
|
||||
}
|
||||
};
|
||||
private static List<String> borderlessCardlistKey = FileUtil.readFile(ForgeConstants.BORDERLESS_CARD_LIST_FILE);
|
||||
|
||||
Texture n;
|
||||
@Override
|
||||
@@ -240,6 +112,8 @@ final class ImageLoader extends CacheLoader<String, Texture> {
|
||||
}
|
||||
|
||||
public boolean isBorderless(String imagekey) {
|
||||
if(borderlessCardlistKey.isEmpty())
|
||||
return false;
|
||||
if (imagekey.length() > 7) {
|
||||
if ((!imagekey.substring(0, 7).contains("MPS_KLD"))&&(imagekey.substring(0, 4).contains("MPS_"))) //MPS_ sets except MPD_KLD
|
||||
return true;
|
||||
@@ -248,6 +122,8 @@ final class ImageLoader extends CacheLoader<String, Texture> {
|
||||
}
|
||||
|
||||
public static boolean isBorderless(Texture t) {
|
||||
if(borderlessCardlistKey.isEmpty())
|
||||
return false;
|
||||
//generated texture/pixmap?
|
||||
if (t.toString().contains("com.badlogic.gdx.graphics.Texture@"))
|
||||
return true;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
Name:Burning Wish
|
||||
ManaCost:1 R
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ 1 R | Origin$ Sideboard | Destination$ Hand | ChangeType$ Sorcery.YouOwn | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ You may choose a sorcery card you own from outside the game, reveal that card, and put it into your hand. Exile CARDNAME.
|
||||
A:SP$ ChangeZone | Cost$ 1 R | Reveal$ True | Origin$ Sideboard | Destination$ Hand | ChangeType$ Sorcery.YouOwn | ChangeTypeDesc$ sorcery card they own | ChangeNum$ 1 | SubAbility$ DBChange | Hidden$ True | SpellDescription$ You may reveal a sorcery card you own from outside the game and put it into your hand. Exile CARDNAME.
|
||||
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_wish.jpg
|
||||
Oracle:You may choose a sorcery card you own from outside the game, reveal that card, and put it into your hand. Exile Burning Wish.
|
||||
Oracle:You may reveal a sorcery card you own from outside the game and put it into your hand. Exile Burning Wish.
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
Name:Coax from the Blind Eternities
|
||||
ManaCost:2 U
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ 2 U | Origin$ Sideboard,Exile | Destination$ Hand | ChangeType$ Card.Eldrazi+YouOwn | ChangeNum$ 1 | SpellDescription$ You may choose an Eldrazi card you own from outside the game or in exile, reveal that card, and put it into your hand.
|
||||
A:SP$ ChangeZone | Cost$ 2 U | Origin$ Sideboard,Exile | Destination$ Hand | ChangeType$ Card.Eldrazi+YouOwn | ChangeNum$ 1 | Hidden$ True | Reveal$ True | StackDescription$ {p:You} may reveal an Eldrazi card they own from outside the game or in exile and put it into their hand. | SpellDescription$ You may reveal an Eldrazi card you own from outside the game or in exile and put it into your hand.
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/coax_from_the_blind_eternities.jpg
|
||||
Oracle:You may choose an Eldrazi card you own from outside the game or in exile, reveal that card, and put it into your hand.
|
||||
Oracle:You may reveal an Eldrazi card you own from outside the game or in exile and put it into your hand.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
Name:Cunning Wish
|
||||
ManaCost:2 U
|
||||
Types:Instant
|
||||
A:SP$ ChangeZone | Cost$ 2 U | Origin$ Sideboard | Destination$ Hand | ChangeType$ Instant.YouOwn | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ You may choose an instant card you own from outside the game, reveal that card, and put it into your hand. Exile CARDNAME.
|
||||
A:SP$ ChangeZone | Cost$ 2 U | Reveal$ True | Origin$ Sideboard | Destination$ Hand | ChangeType$ Instant.YouOwn | ChangeTypeDesc$ instant card they own | ChangeNum$ 1 | SubAbility$ DBChange | Hidden$ True | SpellDescription$ You may reveal an instant card you own from outside the game and put it into your hand. Exile CARDNAME.
|
||||
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/cunning_wish.jpg
|
||||
Oracle:You may choose an instant card you own from outside the game, reveal that card, and put it into your hand. Exile Cunning Wish.
|
||||
Oracle:You may reveal an instant card you own from outside the game and put it into your hand. Exile Cunning Wish.
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
Name:Death Wish
|
||||
ManaCost:1 B B
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ 1 B B | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.YouOwn | ChangeNum$ 1 | SubAbility$ DBLoseLife | SpellDescription$ You may choose a card you own from outside the game and put it into your hand. You lose half your life, rounded up. Exile CARDNAME.
|
||||
A:SP$ ChangeZone | Cost$ 1 B B | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.YouOwn | ChangeTypeDesc$ card they own | ChangeNum$ 1 | SubAbility$ DBLoseLife | Hidden$ True | SpellDescription$ You may put a card you own from outside the game into your hand. You lose half your life, rounded up. Exile CARDNAME.
|
||||
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | References$ X | SubAbility$ DBChange
|
||||
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
||||
SVar:X:Count$YourLifeTotal/HalfUp
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/death_wish.jpg
|
||||
Oracle:You may choose a card you own from outside the game and put it into your hand. You lose half your life, rounded up. Exile Death Wish.
|
||||
Oracle:You may put a card you own from outside the game into your hand. You lose half your life, rounded up. Exile Death Wish.
|
||||
|
||||
@@ -12,5 +12,5 @@ ALTERNATE
|
||||
Name:Granted
|
||||
ManaCost:3 U
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ ChangeZone | Cost$ 3 U | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.nonCreature+YouOwn | ChangeNum$ 1 | SpellDescription$ You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
|
||||
Oracle:You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
|
||||
A:SP$ ChangeZone | Cost$ 3 U | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.nonCreature+YouOwn | ChangeTypeDesc$ noncreature card they own | ChangeNum$ 1 | Reveal$ True | Hidden$ True | SpellDescription$ You may reveal a noncreature card you own from outside the game and put it into your hand.
|
||||
Oracle:You may reveal a noncreature card you own from outside the game and put it into your hand.
|
||||
|
||||
@@ -5,6 +5,6 @@ PT:2/2
|
||||
T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | CheckSVar$ X | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of each end step, if a +1/+1 counter was put on a permanent under your control this turn, put a +1/+1 counter on CARDNAME.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckHints:Ability$Counters
|
||||
SVar:X:Count$CountersAddedToPermYouCtrl P1P1
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/fairgrounds_trumpeter.jpg
|
||||
DeckHas:Ability$Counters
|
||||
SVar:X:Count$CountersAddedThisTurn P1P1 Player Permanent.YouCtrl
|
||||
Oracle:At the beginning of each end step, if a +1/+1 counter was put on a permanent under your control this turn, put a +1/+1 counter on Fairgrounds Trumpeter.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
Name:Glittering Wish
|
||||
ManaCost:G W
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ G W | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.MultiColor+YouOwn | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ You may choose a multicolored card you own from outside the game, reveal that card, and put it into your hand. Exile CARDNAME.
|
||||
A:SP$ ChangeZone | Cost$ G W | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.MultiColor+YouOwn | ChangeTypeDesc$ multicolored card they own | ChangeNum$ 1 | Hidden$ True | Reveal$ True | SubAbility$ DBChange | SpellDescription$ You may reveal a multicolored card you own from outside the game and put it into your hand. Exile CARDNAME.
|
||||
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/glittering_wish.jpg
|
||||
Oracle:You may choose a multicolored card you own from outside the game, reveal that card, and put it into your hand. Exile Glittering Wish.
|
||||
Oracle:You may reveal a multicolored card you own from outside the game and put it into your hand. Exile Glittering Wish.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
Name:Golden Wish
|
||||
ManaCost:3 W W
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ 3 W W | Origin$ Sideboard | Destination$ Hand | ChangeType$ Artifact.YouOwn,Enchantment.YouOwn | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ You may choose an artifact or enchantment card you own from outside the game, reveal that card, and put it into your hand. Exile CARDNAME.
|
||||
A:SP$ ChangeZone | Cost$ 3 W W | Origin$ Sideboard | Destination$ Hand | ChangeType$ Artifact.YouOwn,Enchantment.YouOwn | ChangeTypeDesc$ artifact or enchantment they own | ChangeNum$ 1 | SubAbility$ DBChange | Hidden$ True | Reveal$ True | SpellDescription$ You may reveal an artifact or enchantment card you own from outside the game and put it into your hand. Exile CARDNAME.
|
||||
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/golden_wish.jpg
|
||||
Oracle:You may choose an artifact or enchantment card you own from outside the game, reveal that card, and put it into your hand. Exile Golden Wish.
|
||||
Oracle:You may reveal an artifact or enchantment card you own from outside the game and put it into your hand. Exile Golden Wish.
|
||||
|
||||
11
forge-gui/res/cardsfolder/i/iridescent_hornbeetle.txt
Normal file
11
forge-gui/res/cardsfolder/i/iridescent_hornbeetle.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Iridescent Hornbeetle
|
||||
ManaCost:4 G
|
||||
Types:Creature Insect
|
||||
PT:3/4
|
||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a 1/1 green Insect creature token for each +1/+1 counter you've put on creatures under your control this turn.
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ X | References$ X | TokenOwner$ You | TokenScript$ g_1_1_insect
|
||||
SVar:X:Count$CountersAddedThisTurn P1P1 You Creature.YouCtrl
|
||||
DeckNeeds:Ability$Counters
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:At the beginning of your end step, create a 1/1 green Insect creature token for each +1/+1 counter you've put on creatures under your control this turn.
|
||||
|
||||
@@ -6,6 +6,6 @@ S:Mode$ Continuous | Affected$ Artifact.OppCtrl | AddHiddenKeyword$ CARDNAME's a
|
||||
SVar:NonStackingEffect:True
|
||||
A:AB$ Animate | Cost$ AddCounter<1/LOYALTY> | TargetMin$ 0 | TargetMax$ 1 | Planeswalker$ True | ValidTgts$ Artifact.nonCreature | TgtPrompt$ Select target noncreature artifact | Power$ X | Toughness$ X | Types$ Artifact,Creature | References$ X | UntilYourNextTurn$ True | AILogic$ PTByCMC | SpellDescription$ Until your next turn, up to one target noncreature artifact becomes an artifact creature with power and toughness equal to its converted mana cost.
|
||||
SVar:X:Targeted$CardManaCost
|
||||
A:AB$ ChangeZone | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Origin$ Sideboard,Exile | Destination$ Hand | ChangeType$ Artifact.YouOwn | ChangeNum$ 1 | SpellDescription$ You may choose an artifact card you own from outside the game or in exile, reveal that card, and put it into your hand.
|
||||
A:AB$ ChangeZone | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Origin$ Sideboard,Exile | Destination$ Hand | ChangeType$ Artifact.YouOwn | ChangeTypeDesc$ artifact they own | ChangeNum$ 1 | Hidden$ True | Reveal$ True | StackDescription$ {p:You} may reveal an artifact card they own from outside the game or in exile and put it into their hand. | SpellDescription$ You may reveal an artifact card you own from outside the game or in exile and put it into your hand.
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:Activated abilities of artifacts your opponents control can't be activated.\n[+1]: Until your next turn, up to one target noncreature artifact becomes an artifact creature with power and toughness equal to its converted mana cost.\n[-2]: You may choose an artifact card you own from outside the game or in exile, reveal that card, and put it into your hand.
|
||||
Oracle:Activated abilities of artifacts your opponents control can't be activated.\n[+1]: Until your next turn, up to one target noncreature artifact becomes an artifact creature with power and toughness equal to its converted mana cost.\n[-2]: You may reveal an artifact card you own from outside the game or in exile and put it into your hand.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
Name:Living Wish
|
||||
ManaCost:1 G
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ 1 G | Origin$ Sideboard | Destination$ Hand | ChangeType$ Creature.YouOwn,Land.YouOwn | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ You may choose a creature or land card you own from outside the game, reveal that card, and put it into your hand. Exile CARDNAME.
|
||||
A:SP$ ChangeZone | Cost$ 1 G | Origin$ Sideboard | Destination$ Hand | ChangeType$ Creature.YouOwn,Land.YouOwn | ChangeTypeDesc$ creature or land card they own | ChangeNum$ 1 | Reveal$ True | Hidden$ True | SubAbility$ DBChange | SpellDescription$ You may reveal a creature or land card you own from outside the game and put it into your hand. Exile CARDNAME.
|
||||
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/living_wish.jpg
|
||||
Oracle:You may choose a creature or land card you own from outside the game, reveal that card, and put it into your hand. Exile Living Wish.
|
||||
Oracle:You may reveal a creature or land card you own from outside the game and put it into your hand. Exile Living Wish.
|
||||
|
||||
@@ -3,6 +3,5 @@ ManaCost:2 B B
|
||||
Types:Sorcery
|
||||
A:SP$ Charm | Cost$ 2 B B | Choices$ DBSearch,DBWish
|
||||
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | SpellDescription$ Search your library for a card, put it into your hand, then shuffle your library.
|
||||
SVar:DBWish:DB$ ChangeZone | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.YouOwn | ChangeNum$ 1 | Mandatory$ True | SpellDescription$ Choose a card you own from outside the game and put it into your hand.
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/masterminds_acquisition.jpg
|
||||
Oracle:Choose one —\n• Search your library for a card, put it into your hand, then shuffle your library.\n• Choose a card you own from outside the game and put it into your hand.
|
||||
SVar:DBWish:DB$ ChangeZone | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.YouOwn | ChangeNum$ 1 | Mandatory$ True | Hidden$ True | SpellDescription$ Put a card you own from outside the game into your hand.
|
||||
Oracle:Choose one —\n• Search your library for a card, put it into your hand, then shuffle your library.\n• Put a card you own from outside the game into your hand.
|
||||
|
||||
@@ -2,9 +2,9 @@ Name:Muldrotha, the Gravetide
|
||||
ManaCost: 3 B G U
|
||||
Types:Legendary Creature Elemental Avatar
|
||||
PT:6/6
|
||||
S:Mode$ Continuous | Affected$ Land.YouCtrl | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayText$ Land | EffectZone$ Battlefield | AffectedZone$ Graveyard | Description$ During each of your turns, you may play up to one permanent card of each permanent type from your graveyard. (If a card has multiple permanent types, choose one as you play it.)
|
||||
S:Mode$ Continuous | Affected$ Land.YouCtrl | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayText$ Land | EffectZone$ Battlefield | AffectedZone$ Graveyard | Description$ During each of your turns, you may play a land and cast a permanent spell of each permanent type from your graveyard. (If a card has multiple permanent types, choose one as you play it.)
|
||||
S:Mode$ Continuous | Affected$ Creature.YouCtrl | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayText$ Creature | EffectZone$ Battlefield | AffectedZone$ Graveyard
|
||||
S:Mode$ Continuous | Affected$ Planeswalker.YouCtrl | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayText$ Planeswalker | EffectZone$ Battlefield | AffectedZone$ Graveyard
|
||||
S:Mode$ Continuous | Affected$ Artifact.YouCtrl | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayText$ Artifact | EffectZone$ Battlefield | AffectedZone$ Graveyard
|
||||
S:Mode$ Continuous | Affected$ Enchantment.YouCtrl | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayText$ Enchantment | EffectZone$ Battlefield | AffectedZone$ Graveyard
|
||||
Oracle:During each of your turns, you may play up to one permanent card of each permanent type from your graveyard. (If a card has multiple permanent types, choose one as you play it.)
|
||||
Oracle:During each of your turns, you may play a land and cast a permanent spell of each permanent type from your graveyard. (If a card has multiple permanent types, choose one as you play it.)
|
||||
|
||||
@@ -2,10 +2,9 @@ Name:Research
|
||||
ManaCost:G U
|
||||
AlternateMode: Split
|
||||
Types:Instant
|
||||
A:SP$ ChangeZone | Cost$ G U | Origin$ Sideboard | Destination$ Library | Shuffle$ True | ChangeType$ Card.YouOwn | ChangeNum$ 4 | SpellDescription$ Choose up to four cards you own from outside the game and shuffle them into your library.
|
||||
A:SP$ ChangeZone | Cost$ G U | Origin$ Sideboard | Destination$ Library | Shuffle$ True | ChangeType$ Card.YouOwn | ChangeNum$ 4 | Hidden$ True | StackDescription$ {p:You} shuffles up to four cards they own from outside the game into their library. | SpellDescription$ Shuffle up to four cards you own from outside the game into your library.
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/researchdevelopment.jpg
|
||||
Oracle:Choose up to four cards you own from outside the game and shuffle them into your library.
|
||||
Oracle:Shuffle up to four cards you own from outside the game into your library.
|
||||
|
||||
ALTERNATE
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
Name:Ring of Ma'ruf
|
||||
ManaCost:5
|
||||
Types:Artifact
|
||||
A:AB$ Effect | Cost$ 5 T Exile<1/CARDNAME> | Name$ Ring of Ma'ruf Effect | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,TutorSideboard | SpellDescription$ The next time you would draw a card this turn, instead choose a card you own from outside the game and put it into your hand.
|
||||
SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ TutorSideboard | Description$ The next time you would draw a card this turn, instead choose a card you own from outside the game and put it into your hand.
|
||||
SVar:TutorSideboard:DB$ ChangeZone | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.YouOwn | ChangeNum$ 1 | Hidden$ True | SubAbility$ ExileEffect
|
||||
A:AB$ Effect | Cost$ 5 T Exile<1/CARDNAME> | Name$ Ring of Ma'ruf Effect | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,TutorSideboard | SpellDescription$ The next time you would draw a card this turn, instead put a card you own from outside the game into your hand.
|
||||
SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ TutorSideboard | Description$ The next time you would draw a card this turn, instead put a card you own from outside the game into your hand.
|
||||
SVar:TutorSideboard:DB$ ChangeZone | Origin$ Sideboard | Destination$ Hand | ChangeType$ Card.YouOwn | ChangeNum$ 1 | Hidden$ True | Mandatory$ True | SubAbility$ ExileEffect
|
||||
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||
AI:RemoveDeck:All
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/ring_of_maruf.jpg
|
||||
Oracle:{5}, {T}, Exile Ring of Ma'ruf: The next time you would draw a card this turn, instead choose a card you own from outside the game and put it into your hand.
|
||||
Oracle:{5}, {T}, Exile Ring of Ma'ruf: The next time you would draw a card this turn, instead put a card you own from outside the game into your hand.
|
||||
|
||||
@@ -3,10 +3,9 @@ ManaCost:10
|
||||
Types:Creature Eldrazi
|
||||
PT:7/11
|
||||
K:Annihilator:1
|
||||
A:AB$ Token | Cost$ 4 | TokenAmount$ 2 | TokenScript$ c_0_1_eldrazi_spawn_sac | TokenOwner$ You | LegacyImage$ c 0 1 eldrazi spawn sac roe | SpellDescription$ Create two 0/1 colorless Eldrazi Spawn creature tokens. They have "Sacrifice this creature: Add {C}."
|
||||
A:AB$ Play | Cost$ 20 | Valid$ Card.Eldrazi+YouOwn | ValidZone$ Sideboard | WithoutManaCost$ True | Amount$ SpawnsireX | Controller$ You | Optional$ True | References$ SpawnsireX | SpellDescription$ Cast any number of Eldrazi cards you own from outside the game without paying their mana costs.
|
||||
A:AB$ Token | Cost$ 4 | TokenAmount$ 2 | TokenScript$ c_0_1_eldrazi_spawn_sac | TokenOwner$ You | SpellDescription$ Create two 0/1 colorless Eldrazi Spawn creature tokens. They have "Sacrifice this creature: Add {C}."
|
||||
A:AB$ Play | Cost$ 20 | Valid$ Card.Eldrazi+YouOwn | ValidZone$ Sideboard | WithoutManaCost$ True | Amount$ SpawnsireX | Controller$ You | Optional$ True | References$ SpawnsireX | SpellDescription$ Cast any number of Eldrazi spells you own from outside the game without paying their mana costs.
|
||||
SVar:SpawnsireX:Count$TypeInYourSideboard.Eldrazi
|
||||
DeckHints:Type$Eldrazi
|
||||
DeckHas:Ability$Mana.Colorless & Ability$Token
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/spawnsire_of_ulamog.jpg
|
||||
Oracle:Annihilator 1 (Whenever this creature attacks, defending player sacrifices a permanent.)\n{4}: Create two 0/1 colorless Eldrazi Spawn creature tokens. They have "Sacrifice this creature: Add {C}."\n{20}: Cast any number of Eldrazi cards you own from outside the game without paying their mana costs.
|
||||
Oracle:Annihilator 1 (Whenever this creature attacks, defending player sacrifices a permanent.)\n{4}: Create two 0/1 colorless Eldrazi Spawn creature tokens. They have "Sacrifice this creature: Add {C}."\n{20}: Cast any number of Eldrazi spells you own from outside the game without paying their mana costs.
|
||||
|
||||
@@ -7,6 +7,6 @@ SVar:DBPumpAll:DB$ Pump | KW$ Trample | Defined$ Targeted
|
||||
A:AB$ Pump | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | AILogic$ Fight | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to target creature or planeswalker.
|
||||
SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | AILogic$ PowerDmg | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | References$ X | DamageSource$ ParentTarget
|
||||
SVar:X:ParentTargeted$CardPower
|
||||
A:AB$ ChangeZone | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | Origin$ Sideboard | Destination$ Hand | ChangeType$ Creature.YouOwn | ChangeNum$ 1 | SpellDescription$ You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
||||
A:AB$ ChangeZone | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | Origin$ Sideboard | Destination$ Hand | ChangeType$ Creature.YouOwn | ChangeTypeDesc$ creature card they own | ChangeNum$ 1 | Reveal$ True | Hidden$ True | SpellDescription$ You may reveal a creature card you own from outside the game and put it into your hand.
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:[+1]: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.\n[−3]: Target creature you control deals damage equal to its power to target creature or planeswalker.\n[−5]: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
|
||||
Oracle:[+1]: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn.\n[−3]: Target creature you control deals damage equal to its power to target creature or planeswalker.\n[−5]: You may reveal a creature card you own from outside the game and put it into your hand.
|
||||
|
||||
@@ -3,8 +3,7 @@ ManaCost:4 R
|
||||
Types:Creature Dog
|
||||
PT:4/3
|
||||
K:Monstrosity:1:5 R R
|
||||
T:Mode$ BecomeMonstrous | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDamageAll | TriggerDescription$ When CARDNAME becomes monstrous, it deals 2 damage to each opponent and each creature your opponents control.
|
||||
SVar:TrigDamageAll:DB$ DamageAll | ValidCards$ Creature.OppCtrl | ValidPlayers$ Player.Opponent | NumDmg$ 2 | ValidDescription$ each opponent and each creature your opponents control.
|
||||
T:Mode$ BecomeMonstrous | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDamageAll | TriggerDescription$ When CARDNAME becomes monstrous, it deals 2 damage to each opponent and each creature they control.
|
||||
SVar:TrigDamageAll:DB$ DamageAll | ValidCards$ Creature.OppCtrl | ValidPlayers$ Player.Opponent | NumDmg$ 2 | ValidDescription$ each opponent and each creature they control.
|
||||
DeckHas:Ability$Counters
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/wildfire_cerberus.jpg
|
||||
Oracle:{5}{R}{R}: Monstrosity 1. (If this creature isn't monstrous, put a +1/+1 counter on it and it becomes monstrous.)\nWhen Wildfire Cerberus becomes monstrous, it deals 2 damage to each opponent and each creature your opponents control.
|
||||
Oracle:{5}{R}{R}: Monstrosity 1. (If this creature isn't monstrous, put a +1/+1 counter on it and it becomes monstrous.)\nWhen Wildfire Cerberus becomes monstrous, it deals 2 damage to each opponent and each creature they control.
|
||||
|
||||
@@ -11,3 +11,140 @@ Type=Other
|
||||
4 R Enigma Thief
|
||||
5 R Whispersteel Dagger
|
||||
6 R Geode Rager
|
||||
7 M Anowon, the Ruin Thief
|
||||
8 M Obuun, Mul Daya Ancestor
|
||||
9 U Abzan Falconer
|
||||
10 M Admonition Angel
|
||||
11 U Banishing Light
|
||||
12 U Condemn
|
||||
13 U Crush Contraband
|
||||
14 U Elite Scaleguard
|
||||
15 R Emeria Angel
|
||||
16 R Emeria Shepherd
|
||||
17 R Hour of Revelation
|
||||
18 C Kor Cartographer
|
||||
19 R Planar Outburst
|
||||
20 U Retreat to Emeria
|
||||
21 M Sun Titan
|
||||
22 R Together Forever
|
||||
23 U Aetherize
|
||||
24 C Distant Melody
|
||||
25 U Fact or Fiction
|
||||
26 U Faerie Vandal
|
||||
27 U Invisible Stalker
|
||||
28 C Latchkey Faerie
|
||||
29 U Marang River Prowler
|
||||
30 U Master Thief
|
||||
31 U Military Intelligence
|
||||
32 U Nightveil Sprite
|
||||
33 R Notorious Throng
|
||||
34 U Open into Wonder
|
||||
35 R Scourge of Fleets
|
||||
36 C Slither Blade
|
||||
37 R Stolen Identity
|
||||
38 C Triton Shorestalker
|
||||
39 U Whirler Rogue
|
||||
40 C Changeling Outcast
|
||||
41 U Endless Obedience
|
||||
42 R Fated Return
|
||||
43 C Frogtosser Banneret
|
||||
44 R Gonti, Lord of Luxury
|
||||
45 R In Garruk's Wake
|
||||
46 U Marsh Flitter
|
||||
47 C Murder
|
||||
48 R Necromantic Selection
|
||||
49 R Nighthowler
|
||||
50 R Ogre Slumlord
|
||||
51 U Oona's Blackguard
|
||||
52 U Price of Fame
|
||||
53 U Rise from the Grave
|
||||
54 R Sepulchral Primordial
|
||||
55 U Stinkdrinker Bandit
|
||||
56 U Syr Konrad, the Grim
|
||||
57 U Zulaport Cutthroat
|
||||
58 R Abundance
|
||||
59 U Acidic Slime
|
||||
60 U Armorcraft Judge
|
||||
61 U Beanstalk Giant
|
||||
62 U Circuitous Route
|
||||
63 C Elvish Rejuvenator
|
||||
64 U Embodiment of Insight
|
||||
65 U Evolution Sage
|
||||
66 C Far Wanderings
|
||||
67 C Fertilid
|
||||
68 U Harmonize
|
||||
69 C Harrow
|
||||
70 U Inspiring Call
|
||||
71 U Keeper of Fables
|
||||
72 C Khalni Heart Expedition
|
||||
73 C Kodama's Reach
|
||||
74 R The Mending of Dominaria
|
||||
75 M Multani, Yavimaya's Avatar
|
||||
76 R Nissa's Renewal
|
||||
77 R Rampaging Baloths
|
||||
78 U Retreat to Kazandu
|
||||
79 R Return of the Wildspeaker
|
||||
80 R Rites of Flourishing
|
||||
81 C Satyr Wayfinder
|
||||
82 C Sporemound
|
||||
83 C Springbloom Druid
|
||||
84 R Sylvan Advocate
|
||||
85 U Tuskguard Captain
|
||||
86 R Waker of the Wilds
|
||||
87 C Yavimaya Elder
|
||||
88 U Zendikar's Roil
|
||||
89 R Consuming Aberration
|
||||
90 U Extract from Darkness
|
||||
91 U Ground Assault
|
||||
92 M Lazav, Dimir Mastermind
|
||||
93 R Living Twister
|
||||
94 R Mina and Denn, Wildborn
|
||||
95 U Naya Charm
|
||||
96 R Notion Thief
|
||||
97 M Omnath, Locus of Rage
|
||||
98 R Oona, Queen of the Fae
|
||||
99 R Silumgar's Command
|
||||
100 U Soul Manipulation
|
||||
101 R Spinal Embrace
|
||||
102 U Struggle // Survive
|
||||
103 R Sygg, River Cutthroat
|
||||
104 U Sylvan Reclamation
|
||||
105 U Treacherous Terrain
|
||||
106 C Arcane Signet
|
||||
107 R Blackblade Reforged
|
||||
108 R Bonehoard
|
||||
109 C Commander's Sphere
|
||||
110 U Dimir Keyrune
|
||||
111 C Dimir Locket
|
||||
112 U Dimir Signet
|
||||
113 U Heirloom Blade
|
||||
114 C Mind Stone
|
||||
115 R Obelisk of Urd
|
||||
116 U Sandstone Oracle
|
||||
117 C Scaretiller
|
||||
118 R Scytheclaw
|
||||
119 R Seer's Sundial
|
||||
120 U Sol Ring
|
||||
121 U Blighted Woodland
|
||||
122 C Boros Garrison
|
||||
123 C Boros Guildgate
|
||||
124 C Command Tower
|
||||
125 U Cryptic Caves
|
||||
126 U Dimir Aqueduct
|
||||
127 C Dimir Guildgate
|
||||
128 C Dismal Backwater
|
||||
129 C Evolving Wilds
|
||||
130 C Gruul Guildgate
|
||||
131 U Gruul Turf
|
||||
132 U Jungle Shrine
|
||||
133 U Jwar Isle Refuge
|
||||
134 U Krosan Verge
|
||||
135 U Myriad Landscape
|
||||
136 C Naya Panorama
|
||||
137 R Needle Spires
|
||||
138 U Rogue's Passage
|
||||
139 C Selesnya Guildgate
|
||||
140 C Selesnya Sanctuary
|
||||
141 U Submerged Boneyard
|
||||
142 C Terramorphic Expanse
|
||||
|
||||
|
||||
@@ -4,4 +4,4 @@ Order:101
|
||||
Subtype:Standard
|
||||
Type:Sanctioned
|
||||
Sets:ELD, THB, IKO, M21, ZNR
|
||||
Banned:Cauldron Familiar; Fires of Invention; Oko, Thief of Crowns; Once Upon a Time; Veil of Summer
|
||||
Banned:Cauldron Familiar; Fires of Invention; Oko, Thief of Crowns; Once Upon a Time; Uro, Titan of Nature's Wrath; Veil of Summer
|
||||
|
||||
@@ -981,7 +981,7 @@ nlVibrateWhenLosingLife=Aktiviert Vibration bei Lebenspunktverlust.
|
||||
lblEnableRoundBorder=Aktiviere Maske mit runden Ränder
|
||||
nlEnableRoundBorder=Wenn aktiviert, werden Kartenecken abgerundet. Vorzugsweise bei Karten mit vollem Rand.
|
||||
lblPreloadExtendedArtCards=Erw. Kartenbilder bei Start laden
|
||||
nlPreloadExtendedArtCards=Wenn aktiviert, werden erweiterte Kartenbilder bereits beim Start in den Speicher geladen.
|
||||
nlPreloadExtendedArtCards=Wenn aktiviert, werden erweiterte Kartenbilder bereits beim Start in den Speicher geladen (Hohe RAM-Auslastung).
|
||||
lblShowFPSDisplay=FPS-Anzeige
|
||||
nlShowFPSDisplay=Aktiviert die Frames-per-second-Anzeige (Experimentell).
|
||||
lblEnableUnknownCards=Erlaube unbekannte Karten
|
||||
|
||||
@@ -981,7 +981,7 @@ nlVibrateWhenLosingLife=Enable vibration when your player loses life or takes da
|
||||
lblEnableRoundBorder=Enable Round Border Mask
|
||||
nlEnableRoundBorder=When enabled, the card corners are rounded (Preferably Card with Full Borders).
|
||||
lblPreloadExtendedArtCards=Preload Extended Art Cards
|
||||
nlPreloadExtendedArtCards=When enabled, Preloads Extended Art Cards to Cache on Startup.
|
||||
nlPreloadExtendedArtCards=When enabled, Preloads Extended Art Cards to Cache on Startup (High RAM usage).
|
||||
lblShowFPSDisplay=Show FPS Display
|
||||
nlShowFPSDisplay=When enabled, show the FPS Display (Experimental).
|
||||
lblEnableUnknownCards=Enable Unknown Cards
|
||||
|
||||
@@ -981,7 +981,7 @@ nlVibrateWhenLosingLife=Habilita la vibración cuando tu jugador pierde vida o s
|
||||
lblEnableRoundBorder=Habilitar máscara de bordes redondeados
|
||||
nlEnableRoundBorder=Cuando está habilitado, las esquinas de las cartas se redondean (Preferiblemente Cartas con bordes completos).
|
||||
lblPreloadExtendedArtCards=Precargar Cartas de Arte Extendido
|
||||
nlPreloadExtendedArtCards=Cuando está habilitado, carga previamente las cartas de arte ampliadas en la caché al iniciar el programa.
|
||||
nlPreloadExtendedArtCards=Cuando está habilitado, carga previamente las cartas de arte ampliadas en la caché al iniciar el programa (Alto uso de RAM).
|
||||
lblShowFPSDisplay=Mostrar FPS
|
||||
nlShowFPSDisplay=Cuando está habilitado, muestra los FPS (Experimental).
|
||||
lblEnableUnknownCards=Enable Unknown Cards
|
||||
|
||||
@@ -981,7 +981,7 @@ nlVibrateWhenLosingLife=Attiva le vibrazioni quando il giocatore perde punti vit
|
||||
lblEnableRoundBorder=Abilita maschera bordo arrotondato
|
||||
nlEnableRoundBorder=Se abilitato, gli angoli delle carte sono arrotondati (preferibilmente Carta con bordi pieni).
|
||||
lblPreloadExtendedArtCards=Carte d''arte estese precaricate
|
||||
nlPreloadExtendedArtCards=Se abilitato, precarica le carte artistiche estese nella cache all''avvio.
|
||||
nlPreloadExtendedArtCards=Se abilitato, precarica le carte artistiche estese nella cache all''avvio (Utilizzo elevato della RAM).
|
||||
lblShowFPSDisplay=Mostra display FPS
|
||||
nlShowFPSDisplay=Se abilitato, mostra il display FPS (sperimentale).
|
||||
lblEnableUnknownCards=Enable Unknown Cards
|
||||
|
||||
@@ -981,7 +981,7 @@ nlVibrateWhenLosingLife=启用当玩家在游戏中失去生命或收到伤害
|
||||
lblEnableRoundBorder=启用圆角边框掩码
|
||||
nlEnableRoundBorder=启用后,卡牌边框会变成圆角(带有完整边框的卡牌图片效果最好)。
|
||||
lblPreloadExtendedArtCards=预加载拉伸卡图
|
||||
nlPreloadExtendedArtCards=启用后,拉伸卡图将在启动时加载到缓存。
|
||||
nlPreloadExtendedArtCards=启用后,拉伸卡图将在启动时加载到缓存(使用高内存)。
|
||||
lblShowFPSDisplay=显示当前的FPS值
|
||||
nlShowFPSDisplay=启用后,将在画面左上角显示当前Forge的FPS(实验性特性)。
|
||||
lblEnableUnknownCards=启用未知卡牌
|
||||
|
||||
127
forge-gui/res/lists/borderlessCardList.txt
Normal file
127
forge-gui/res/lists/borderlessCardList.txt
Normal file
@@ -0,0 +1,127 @@
|
||||
2XM/Academy Ruins2.fullborder
|
||||
2XM/Atraxa, Praetors' Voice2.fullborder
|
||||
2XM/Avacyn, Angel of Hope2.fullborder
|
||||
2XM/Batterskull2.fullborder
|
||||
2XM/Blightsteel Colossus2.fullborder
|
||||
2XM/Blood Moon2.fullborder
|
||||
2XM/Brainstorm2.fullborder
|
||||
2XM/Chrome Mox2.fullborder
|
||||
2XM/Council's Judgment2.fullborder
|
||||
2XM/Crop Rotation2.fullborder
|
||||
2XM/Cyclonic Rift2.fullborder
|
||||
2XM/Dark Confidant2.fullborder
|
||||
2XM/Doubling Season2.fullborder
|
||||
2XM/Expedition Map2.fullborder
|
||||
2XM/Exploration2.fullborder
|
||||
2XM/Fatal Push2.fullborder
|
||||
2XM/Force of Will2.fullborder
|
||||
2XM/Goblin Guide2.fullborder
|
||||
2XM/Jace, the Mind Sculptor2.fullborder
|
||||
2XM/Kaalia of the Vast2.fullborder
|
||||
2XM/Karn Liberated2.fullborder
|
||||
2XM/Lightning Greaves2.fullborder
|
||||
2XM/Mana Crypt2.fullborder
|
||||
2XM/Meddling Mage2.fullborder
|
||||
2XM/Mox Opal2.fullborder
|
||||
2XM/Noble Hierarch2.fullborder
|
||||
2XM/Phyrexian Metamorph2.fullborder
|
||||
2XM/Sneak Attack2.fullborder
|
||||
2XM/Stoneforge Mystic2.fullborder
|
||||
2XM/Sword of Body and Mind2.fullborder
|
||||
2XM/Sword of Feast and Famine2.fullborder
|
||||
2XM/Sword of Fire and Ice2.fullborder
|
||||
2XM/Sword of Light and Shadow2.fullborder
|
||||
2XM/Sword of War and Peace2.fullborder
|
||||
2XM/Thoughtseize2.fullborder
|
||||
2XM/Toxic Deluge2.fullborder
|
||||
2XM/Urza's Mine2.fullborder
|
||||
2XM/Urza's Power Plant2.fullborder
|
||||
2XM/Urza's Tower2.fullborder
|
||||
2XM/Wurmcoil Engine2.fullborder
|
||||
ELD/Garruk, Cursed Huntsman2.fullborder
|
||||
ELD/Oko, Thief of Crowns2.fullborder
|
||||
ELD/The Royal Scions2.fullborder
|
||||
IKO/Brokkos, Apex of Forever2.fullborder
|
||||
IKO/Brokkos, Apex of Forever3.fullborder
|
||||
IKO/Crystalline Giant3.fullborder
|
||||
IKO/Cubwarden2.fullborder
|
||||
IKO/Dirge Bat2.fullborder
|
||||
IKO/Dirge Bat3.fullborder
|
||||
IKO/Everquill Phoenix2.fullborder
|
||||
IKO/Everquill Phoenix3.fullborder
|
||||
IKO/Gemrazer2.fullborder
|
||||
IKO/Gemrazer3.fullborder
|
||||
IKO/Gyruda, Doom of Depths3.fullborder
|
||||
IKO/Huntmaster Liger2.fullborder
|
||||
IKO/Huntmaster Liger3.fullborder
|
||||
IKO/Illuna, Apex of Wishes2.fullborder
|
||||
IKO/Illuna, Apex of Wishes3.fullborder
|
||||
IKO/Indatha Triome2.fullborder
|
||||
IKO/Ketria Triome2.fullborder
|
||||
IKO/Lukka, Coppercoat Outcast2.fullborder
|
||||
IKO/Luminous Broodmoth3.fullborder
|
||||
IKO/Mysterious Egg2.fullborder
|
||||
IKO/Narset of the Ancient Way2.fullborder
|
||||
IKO/Nethroi, Apex of Death2.fullborder
|
||||
IKO/Nethroi, Apex of Death3.fullborder
|
||||
IKO/Pollywog Symbiote2.fullborder
|
||||
IKO/Raugrin Triome2.fullborder
|
||||
IKO/Savai Triome2.fullborder
|
||||
IKO/Sea-Dasher Octopus2.fullborder
|
||||
IKO/Snapdax, Apex of the Hunt2.fullborder
|
||||
IKO/Snapdax, Apex of the Hunt3.fullborder
|
||||
IKO/Sprite Dragon3.fullborder
|
||||
IKO/Titanoth Rex2.fullborder
|
||||
IKO/Vadrok, Apex of Thunder2.fullborder
|
||||
IKO/Vadrok, Apex of Thunder3.fullborder
|
||||
IKO/Vivien, Monsters' Advocate2.fullborder
|
||||
IKO/Void Beckoner2.fullborder
|
||||
IKO/Yidaro, Wandering Monster3.fullborder
|
||||
IKO/Zagoth Triome2.fullborder
|
||||
IKO/Zilortha, Strength Incarnate.fullborder
|
||||
M21/Basri Ket2.fullborder
|
||||
M21/Chandra, Heart of Fire2.fullborder
|
||||
M21/Containment Priest2.fullborder
|
||||
M21/Cultivate2.fullborder
|
||||
M21/Garruk, Unleashed2.fullborder
|
||||
M21/Grim Tutor2.fullborder
|
||||
M21/Liliana, Waker of the Dead2.fullborder
|
||||
M21/Massacre Wurm2.fullborder
|
||||
M21/Scavenging Ooze2.fullborder
|
||||
M21/Solemn Simulacrum2.fullborder
|
||||
M21/Teferi, Master of Time2.fullborder
|
||||
M21/Ugin, the Spirit Dragon2.fullborder
|
||||
M21/Ugin, the Spirit Dragon3.fullborder
|
||||
PLGS/Hangarback Walker.fullborder
|
||||
SLD/Acidic Slime.fullborder
|
||||
SLD/Captain Sisay.fullborder
|
||||
SLD/Meren of Clan Nel Toth.fullborder
|
||||
SLD/Narset, Enlightened Master.fullborder
|
||||
SLD/Necrotic Ooze.fullborder
|
||||
SLD/Oona, Queen of the Fae.fullborder
|
||||
SLD/Saskia the Unyielding.fullborder
|
||||
SLD/The Mimeoplasm.fullborder
|
||||
SLD/Voidslime.fullborder
|
||||
THB/Ashiok, Nightmare Muse2.fullborder
|
||||
THB/Calix, Destiny's Hand2.fullborder
|
||||
THB/Elspeth, Sun's Nemesis2.fullborder
|
||||
UST/Forest.fullborder
|
||||
UST/Island.fullborder
|
||||
UST/Mountain.fullborder
|
||||
UST/Plains.fullborder
|
||||
UST/Swamp.fullborder
|
||||
ZNR/Boulderloft Pathway2.fullborder
|
||||
ZNR/Branchloft Pathway2.fullborder
|
||||
ZNR/Brightclimb Pathway2.fullborder
|
||||
ZNR/Clearwater Pathway2.fullborder
|
||||
ZNR/Cragcrown Pathway2.fullborder
|
||||
ZNR/Grimclimb Pathway2.fullborder
|
||||
ZNR/Jace, Mirror Mage2.fullborder
|
||||
ZNR/Lavaglide Pathway2.fullborder
|
||||
ZNR/Murkwater Pathway2.fullborder
|
||||
ZNR/Nahiri, Heir of the Ancients2.fullborder
|
||||
ZNR/Needleverge Pathway2.fullborder
|
||||
ZNR/Nissa of Shadowed Boughs2.fullborder
|
||||
ZNR/Pillarverge Pathway2.fullborder
|
||||
ZNR/Riverglide Pathway2.fullborder
|
||||
ZNR/Timbercrown Pathway2.fullborder
|
||||
@@ -48,6 +48,7 @@ public final class ForgeConstants {
|
||||
public static final String NET_DECKS_LIST_FILE = LISTS_DIR + "net-decks.txt";
|
||||
public static final String NET_DECKS_COMMANDER_LIST_FILE = LISTS_DIR + "net-decks-commander.txt";
|
||||
public static final String NET_DECKS_BRAWL_LIST_FILE = LISTS_DIR + "net-decks-brawl.txt";
|
||||
public static final String BORDERLESS_CARD_LIST_FILE = LISTS_DIR + "borderlessCardList.txt";
|
||||
|
||||
|
||||
public static final String CHANGES_FILE = ASSETS_DIR + "README.txt";
|
||||
|
||||
Reference in New Issue
Block a user