mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 17:58:01 +00:00
Merge remote-tracking branch 'upstream/master' into collector-number-in-card-list-and-card-db-refactoring
This commit is contained in:
@@ -63,7 +63,6 @@ public class ChooseCardNameAi extends SpellAbilityAi {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Card chooseSingleCard(final Player ai, SpellAbility sa, Iterable<Card> options, boolean isOptional, Player targetedPlayer, Map<String, Object> params) {
|
public Card chooseSingleCard(final Player ai, SpellAbility sa, Iterable<Card> options, boolean isOptional, Player targetedPlayer, Map<String, Object> params) {
|
||||||
|
|
||||||
return ComputerUtilCard.getBestAI(options);
|
return ComputerUtilCard.getBestAI(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ public final class GameActionUtil {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the cost to this directly to buypass non mana cost
|
// set the cost to this directly to bypass non mana cost
|
||||||
final SpellAbility newSA = sa.copyWithDefinedCost("Discard<1/CARDNAME>");
|
final SpellAbility newSA = sa.copyWithDefinedCost("Discard<1/CARDNAME>");
|
||||||
newSA.setActivatingPlayer(activator);
|
newSA.setActivatingPlayer(activator);
|
||||||
newSA.putParam("CostDesc", ManaCostParser.parse("0"));
|
newSA.putParam("CostDesc", ManaCostParser.parse("0"));
|
||||||
@@ -295,6 +295,32 @@ public final class GameActionUtil {
|
|||||||
alternatives.add(newSA);
|
alternatives.add(newSA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (sa.hasParam("Equip") && activator.hasKeyword("You may pay 0 rather than pay equip costs.")) {
|
||||||
|
for (final KeywordInterface inst : source.getKeywords()) {
|
||||||
|
// need to find the correct Keyword from which this Ability is from
|
||||||
|
if (!inst.getAbilities().contains(sa)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the cost to this directly to bypass non mana cost
|
||||||
|
SpellAbility newSA = sa.copyWithDefinedCost("0");
|
||||||
|
newSA.setActivatingPlayer(activator);
|
||||||
|
newSA.putParam("CostDesc", ManaCostParser.parse("0"));
|
||||||
|
|
||||||
|
// need to build a new Keyword to get better Reminder Text
|
||||||
|
String data[] = inst.getOriginal().split(":");
|
||||||
|
data[1] = "0";
|
||||||
|
KeywordInterface newKi = Keyword.getInstance(StringUtils.join(data, ":"));
|
||||||
|
|
||||||
|
// makes new SpellDescription
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(newSA.getCostDescription());
|
||||||
|
sb.append("(").append(newKi.getReminderText()).append(")");
|
||||||
|
newSA.setDescription(sb.toString());
|
||||||
|
|
||||||
|
alternatives.add(newSA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return alternatives;
|
return alternatives;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
this.name = fName;
|
this.name = fName;
|
||||||
this.effectiveDate = effectiveDate;
|
this.effectiveDate = effectiveDate;
|
||||||
|
|
||||||
if(sets != null) {
|
if (sets != null) {
|
||||||
StaticData data = StaticData.instance();
|
StaticData data = StaticData.instance();
|
||||||
Set<String> parsedSets = new HashSet<>();
|
Set<String> parsedSets = new HashSet<>();
|
||||||
for (String set : sets) {
|
for (String set : sets) {
|
||||||
@@ -129,10 +129,9 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
parsedSets.add(set);
|
parsedSets.add(set);
|
||||||
|
|
||||||
}
|
}
|
||||||
allowedSetCodes = Lists.newArrayList(parsedSets);
|
allowedSetCodes = Lists.newArrayList(parsedSets);
|
||||||
}else{
|
} else {
|
||||||
allowedSetCodes = new ArrayList<>();
|
allowedSetCodes = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,7 +182,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Date parseDate(String date) {
|
private static Date parseDate(String date) {
|
||||||
if( date.length() <= 7 )
|
if (date.length() <= 7)
|
||||||
date = date + "-01";
|
date = date + "-01";
|
||||||
try {
|
try {
|
||||||
return formatter.parse(date);
|
return formatter.parse(date);
|
||||||
@@ -192,7 +191,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getEffectiveDate() { return effectiveDate; }
|
public Date getEffectiveDate() { return effectiveDate; }
|
||||||
|
|
||||||
public FormatType getFormatType() {
|
public FormatType getFormatType() {
|
||||||
return this.formatType;
|
return this.formatType;
|
||||||
@@ -299,10 +298,9 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
|
|
||||||
if (other.formatType != formatType){
|
if (other.formatType != formatType){
|
||||||
return formatType.compareTo(other.formatType);
|
return formatType.compareTo(other.formatType);
|
||||||
}else{
|
}
|
||||||
if (other.formatSubType != formatSubType){
|
if (other.formatSubType != formatSubType){
|
||||||
return formatSubType.compareTo(other.formatSubType);
|
return formatSubType.compareTo(other.formatSubType);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (formatType.equals(FormatType.HISTORIC)){
|
if (formatType.equals(FormatType.HISTORIC)){
|
||||||
int compareDates = this.effectiveDate.compareTo(other.effectiveDate);
|
int compareDates = this.effectiveDate.compareTo(other.effectiveDate);
|
||||||
@@ -342,7 +340,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected GameFormat read(File file) {
|
protected GameFormat read(File file) {
|
||||||
if(!includeHistoric && !coreFormats.contains(file.getName())){
|
if (!includeHistoric && !coreFormats.contains(file.getName())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final Map<String, List<String>> contents = FileSection.parseSections(FileUtil.readFile(file));
|
final Map<String, List<String>> contents = FileSection.parseSections(FileUtil.readFile(file));
|
||||||
@@ -391,17 +389,17 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Boolean strRestrictedLegendary = section.getBoolean("restrictedlegendary");
|
Boolean strRestrictedLegendary = section.getBoolean("restrictedlegendary");
|
||||||
if ( strRestrictedLegendary != null ) {
|
if (strRestrictedLegendary != null) {
|
||||||
restrictedLegendary = strRestrictedLegendary;
|
restrictedLegendary = strRestrictedLegendary;
|
||||||
}
|
}
|
||||||
|
|
||||||
strCars = section.get("additional");
|
strCars = section.get("additional");
|
||||||
if ( strCars != null ) {
|
if (strCars != null) {
|
||||||
additionalCards = Arrays.asList(strCars.split("; "));
|
additionalCards = Arrays.asList(strCars.split("; "));
|
||||||
}
|
}
|
||||||
|
|
||||||
strCars = section.get("rarities");
|
strCars = section.get("rarities");
|
||||||
if ( strCars != null ) {
|
if (strCars != null) {
|
||||||
CardRarity cr;
|
CardRarity cr;
|
||||||
rarities = Lists.newArrayList();
|
rarities = Lists.newArrayList();
|
||||||
for (String s: strCars.split(", ")) {
|
for (String s: strCars.split(", ")) {
|
||||||
@@ -453,8 +451,8 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
|
|
||||||
public Iterable<GameFormat> getSanctionedList() {
|
public Iterable<GameFormat> getSanctionedList() {
|
||||||
List<GameFormat> coreList = new ArrayList<>();
|
List<GameFormat> coreList = new ArrayList<>();
|
||||||
for(GameFormat format: naturallyOrdered){
|
for (GameFormat format: naturallyOrdered) {
|
||||||
if(format.getFormatType().equals(FormatType.SANCTIONED)){
|
if (format.getFormatType().equals(FormatType.SANCTIONED)){
|
||||||
coreList.add(format);
|
coreList.add(format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -463,8 +461,8 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
|
|
||||||
public Iterable<GameFormat> getFilterList() {
|
public Iterable<GameFormat> getFilterList() {
|
||||||
List<GameFormat> coreList = new ArrayList<>();
|
List<GameFormat> coreList = new ArrayList<>();
|
||||||
for(GameFormat format: naturallyOrdered){
|
for (GameFormat format: naturallyOrdered) {
|
||||||
if(!format.getFormatType().equals(FormatType.HISTORIC)
|
if (!format.getFormatType().equals(FormatType.HISTORIC)
|
||||||
&&!format.getFormatType().equals(FormatType.DIGITAL)){
|
&&!format.getFormatType().equals(FormatType.DIGITAL)){
|
||||||
coreList.add(format);
|
coreList.add(format);
|
||||||
}
|
}
|
||||||
@@ -474,8 +472,8 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
|
|
||||||
public Iterable<GameFormat> getHistoricList() {
|
public Iterable<GameFormat> getHistoricList() {
|
||||||
List<GameFormat> coreList = new ArrayList<>();
|
List<GameFormat> coreList = new ArrayList<>();
|
||||||
for(GameFormat format: naturallyOrdered){
|
for (GameFormat format: naturallyOrdered) {
|
||||||
if(format.getFormatType().equals(FormatType.HISTORIC)){
|
if (format.getFormatType().equals(FormatType.HISTORIC)){
|
||||||
coreList.add(format);
|
coreList.add(format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -484,10 +482,10 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
|
|
||||||
public Map<String, List<GameFormat>> getHistoricMap() {
|
public Map<String, List<GameFormat>> getHistoricMap() {
|
||||||
Map<String, List<GameFormat>> coreList = new HashMap<>();
|
Map<String, List<GameFormat>> coreList = new HashMap<>();
|
||||||
for(GameFormat format: naturallyOrdered){
|
for (GameFormat format: naturallyOrdered){
|
||||||
if(format.getFormatType().equals(FormatType.HISTORIC)){
|
if (format.getFormatType().equals(FormatType.HISTORIC)){
|
||||||
String alpha = format.getName().substring(0,1);
|
String alpha = format.getName().substring(0,1);
|
||||||
if(!coreList.containsKey(alpha)){
|
if (!coreList.containsKey(alpha)) {
|
||||||
coreList.put(alpha,new ArrayList<>());
|
coreList.put(alpha,new ArrayList<>());
|
||||||
}
|
}
|
||||||
coreList.get(alpha).add(format);
|
coreList.get(alpha).add(format);
|
||||||
@@ -549,7 +547,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
SortedSet<GameFormat> result = new TreeSet<>();
|
SortedSet<GameFormat> result = new TreeSet<>();
|
||||||
Set<FormatSubType> coveredTypes = new HashSet<>();
|
Set<FormatSubType> coveredTypes = new HashSet<>();
|
||||||
CardPool allCards = deck.getAllCardsInASinglePool();
|
CardPool allCards = deck.getAllCardsInASinglePool();
|
||||||
for(GameFormat gf : reverseDateOrdered) {
|
for (GameFormat gf : reverseDateOrdered) {
|
||||||
if (gf.getFormatType().equals(FormatType.DIGITAL) && !exhaustive){
|
if (gf.getFormatType().equals(FormatType.DIGITAL) && !exhaustive){
|
||||||
//exclude Digital formats from lists for now
|
//exclude Digital formats from lists for now
|
||||||
continue;
|
continue;
|
||||||
@@ -587,13 +585,12 @@ public class GameFormat implements Comparable<GameFormat> {
|
|||||||
}
|
}
|
||||||
if (gf2.formatType != gf1.formatType){
|
if (gf2.formatType != gf1.formatType){
|
||||||
return gf1.formatType.compareTo(gf2.formatType);
|
return gf1.formatType.compareTo(gf2.formatType);
|
||||||
}else{
|
}
|
||||||
if (gf2.formatSubType != gf1.formatSubType){
|
if (gf2.formatSubType != gf1.formatSubType){
|
||||||
return gf1.formatSubType.compareTo(gf2.formatSubType);
|
return gf1.formatSubType.compareTo(gf2.formatSubType);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (gf1.formatType.equals(FormatType.HISTORIC)){
|
if (gf1.formatType.equals(FormatType.HISTORIC)){
|
||||||
if(gf1.effectiveDate!=gf2.effectiveDate) {//for matching dates or default dates default to name sorting
|
if (gf1.effectiveDate!=gf2.effectiveDate) {//for matching dates or default dates default to name sorting
|
||||||
return gf1.effectiveDate.compareTo(gf2.effectiveDate);
|
return gf1.effectiveDate.compareTo(gf2.effectiveDate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2200,6 +2200,10 @@ public class AbilityUtils {
|
|||||||
return doXMath(player.getCycledThisTurn(), expr, c, ctb);
|
return doXMath(player.getCycledThisTurn(), expr, c, ctb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sq[0].equals("YouEquippedThisTurn")) {
|
||||||
|
return doXMath(player.getEquippedThisTurn(), expr, c, ctb);
|
||||||
|
}
|
||||||
|
|
||||||
if (sq[0].equals("YouDrewThisTurn")) {
|
if (sq[0].equals("YouDrewThisTurn")) {
|
||||||
return doXMath(player.getNumDrawnThisTurn(), expr, c, ctb);
|
return doXMath(player.getNumDrawnThisTurn(), expr, c, ctb);
|
||||||
}
|
}
|
||||||
@@ -3372,6 +3376,18 @@ public class AbilityUtils {
|
|||||||
if (value.equals("DungeonsCompleted")) {
|
if (value.equals("DungeonsCompleted")) {
|
||||||
return doXMath(player.getCompletedDungeons().size(), m, source, ctb);
|
return doXMath(player.getCompletedDungeons().size(), m, source, ctb);
|
||||||
}
|
}
|
||||||
|
if (value.startsWith("DungeonCompletedNamed")) {
|
||||||
|
String [] full = value.split("_");
|
||||||
|
String name = full[1];
|
||||||
|
int completed = 0;
|
||||||
|
List<Card> dungeons = player.getCompletedDungeons();
|
||||||
|
for (Card c : dungeons) {
|
||||||
|
if (c.getName().equals(name)) {
|
||||||
|
++completed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return doXMath(completed, m, source, ctb);
|
||||||
|
}
|
||||||
if (value.equals("DifferentlyNamedDungeonsCompleted")) {
|
if (value.equals("DifferentlyNamedDungeonsCompleted")) {
|
||||||
int amount = 0;
|
int amount = 0;
|
||||||
List<Card> dungeons = player.getCompletedDungeons();
|
List<Card> dungeons = player.getCompletedDungeons();
|
||||||
|
|||||||
@@ -164,6 +164,14 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect {
|
|||||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(AbilityUtils.getSVar(sa, s), c, false, sa);
|
final Trigger parsedTrigger = TriggerHandler.parseTrigger(AbilityUtils.getSVar(sa, s), c, false, sa);
|
||||||
addedTriggers.add(parsedTrigger);
|
addedTriggers.add(parsedTrigger);
|
||||||
}
|
}
|
||||||
|
if (sa.hasParam("GainsTriggeredAbilitiesOf")) {
|
||||||
|
final List<Card> cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("GainsTriggeredAbilitiesOf"), sa);
|
||||||
|
for (final Card card : cards) {
|
||||||
|
for (Trigger t : card.getTriggers()) {
|
||||||
|
addedTriggers.add(t.copy(c, false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// give replacement effects
|
// give replacement effects
|
||||||
final List<ReplacementEffect> addedReplacements = Lists.newArrayList();
|
final List<ReplacementEffect> addedReplacements = Lists.newArrayList();
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
private int investigatedThisTurn = 0;
|
private int investigatedThisTurn = 0;
|
||||||
private int surveilThisTurn = 0;
|
private int surveilThisTurn = 0;
|
||||||
private int cycledThisTurn = 0;
|
private int cycledThisTurn = 0;
|
||||||
|
private int equippedThisTurn = 0;
|
||||||
private int lifeLostThisTurn = 0;
|
private int lifeLostThisTurn = 0;
|
||||||
private int lifeLostLastTurn = 0;
|
private int lifeLostLastTurn = 0;
|
||||||
private int lifeGainedThisTurn = 0;
|
private int lifeGainedThisTurn = 0;
|
||||||
@@ -2498,6 +2499,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
resetInvestigatedThisTurn();
|
resetInvestigatedThisTurn();
|
||||||
resetSurveilThisTurn();
|
resetSurveilThisTurn();
|
||||||
resetCycledThisTurn();
|
resetCycledThisTurn();
|
||||||
|
resetEquippedThisTurn();
|
||||||
resetSacrificedThisTurn();
|
resetSacrificedThisTurn();
|
||||||
clearAssignedDamage();
|
clearAssignedDamage();
|
||||||
resetAttackersDeclaredThisTurn();
|
resetAttackersDeclaredThisTurn();
|
||||||
@@ -3455,6 +3457,17 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
cycledThisTurn = 0;
|
cycledThisTurn = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addEquipped() { equippedThisTurn++; }
|
||||||
|
|
||||||
|
public int getEquippedThisTurn() {
|
||||||
|
return equippedThisTurn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetEquippedThisTurn() {
|
||||||
|
equippedThisTurn = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean hasUrzaLands() {
|
public boolean hasUrzaLands() {
|
||||||
final CardCollectionView landsControlled = getCardsIn(ZoneType.Battlefield);
|
final CardCollectionView landsControlled = getCardsIn(ZoneType.Battlefield);
|
||||||
return Iterables.any(landsControlled, Predicates.and(CardPredicates.isType("Urza's"), CardPredicates.isType("Mine")))
|
return Iterables.any(landsControlled, Predicates.and(CardPredicates.isType("Urza's"), CardPredicates.isType("Mine")))
|
||||||
|
|||||||
@@ -436,6 +436,13 @@ public class PlayerView extends GameEntityView {
|
|||||||
return getZoneSize(TrackableProperty.Library);
|
return getZoneSize(TrackableProperty.Library);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FCollectionView<CardView> getSideboard() {
|
||||||
|
return get(TrackableProperty.Sideboard);
|
||||||
|
}
|
||||||
|
public int getSideboardSize() {
|
||||||
|
return getZoneSize(TrackableProperty.Sideboard);
|
||||||
|
}
|
||||||
|
|
||||||
public FCollectionView<CardView> getCards(final ZoneType zone) {
|
public FCollectionView<CardView> getCards(final ZoneType zone) {
|
||||||
TrackableProperty prop = getZoneProp(zone);
|
TrackableProperty prop = getZoneProp(zone);
|
||||||
if (prop != null) {
|
if (prop != null) {
|
||||||
|
|||||||
@@ -326,6 +326,11 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
activator.addCycled(sp);
|
activator.addCycled(sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Log number of Equips
|
||||||
|
if (sp.hasParam("Equip")) {
|
||||||
|
activator.addEquipped();
|
||||||
|
}
|
||||||
|
|
||||||
if (sp.hasParam("Crew")) {
|
if (sp.hasParam("Crew")) {
|
||||||
// Trigger crews!
|
// Trigger crews!
|
||||||
runParams.put(AbilityKey.Vehicle, sp.getHostCard());
|
runParams.put(AbilityKey.Vehicle, sp.getHostCard());
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.itemmanager.filters;
|
|||||||
|
|
||||||
import forge.deck.DeckProxy;
|
import forge.deck.DeckProxy;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.item.PaperCard;
|
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
|
|
||||||
|
|||||||
@@ -481,7 +481,6 @@ public class DialogChooseSets {
|
|||||||
|
|
||||||
private int getMainDialogWidth() {
|
private int getMainDialogWidth() {
|
||||||
int winWidth = Singletons.getView().getFrame().getSize().width;
|
int winWidth = Singletons.getView().getFrame().getSize().width;
|
||||||
System.out.println("Win Width " + winWidth);
|
|
||||||
int[] sizeBoundaries = new int[] {800, 1024, 1280, 2048};
|
int[] sizeBoundaries = new int[] {800, 1024, 1280, 2048};
|
||||||
return calculateRelativePanelDimension(winWidth, 90, sizeBoundaries);
|
return calculateRelativePanelDimension(winWidth, 90, sizeBoundaries);
|
||||||
}
|
}
|
||||||
@@ -489,7 +488,6 @@ public class DialogChooseSets {
|
|||||||
// So far, not yet used, but left here just in case
|
// So far, not yet used, but left here just in case
|
||||||
private int getMainDialogHeight() {
|
private int getMainDialogHeight() {
|
||||||
int winHeight = Singletons.getView().getFrame().getSize().height;
|
int winHeight = Singletons.getView().getFrame().getSize().height;
|
||||||
System.out.println("Win Height " + winHeight);
|
|
||||||
int[] sizeBoundaries = new int[] {600, 720, 780, 1024};
|
int[] sizeBoundaries = new int[] {600, 720, 780, 1024};
|
||||||
return calculateRelativePanelDimension(winHeight, 40, sizeBoundaries);
|
return calculateRelativePanelDimension(winHeight, 40, sizeBoundaries);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,6 +485,7 @@ public final class CMatchUI
|
|||||||
case Exile:
|
case Exile:
|
||||||
case Flashback:
|
case Flashback:
|
||||||
case Command:
|
case Command:
|
||||||
|
case Ante:
|
||||||
case Sideboard:
|
case Sideboard:
|
||||||
if (FloatingZone.show(this,player,zone)) {
|
if (FloatingZone.show(this,player,zone)) {
|
||||||
updatedPlayerZones.add(update);
|
updatedPlayerZones.add(update);
|
||||||
@@ -513,6 +514,8 @@ public final class CMatchUI
|
|||||||
case Exile:
|
case Exile:
|
||||||
case Flashback:
|
case Flashback:
|
||||||
case Command:
|
case Command:
|
||||||
|
case Ante:
|
||||||
|
case Sideboard:
|
||||||
FloatingZone.hide(this,player,zone);
|
FloatingZone.hide(this,player,zone);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ public class CField implements ICDoc {
|
|||||||
final ZoneAction graveAction = new ZoneAction(matchUI, player, ZoneType.Graveyard);
|
final ZoneAction graveAction = new ZoneAction(matchUI, player, ZoneType.Graveyard);
|
||||||
final ZoneAction flashBackAction = new ZoneAction(matchUI, player, ZoneType.Flashback);
|
final ZoneAction flashBackAction = new ZoneAction(matchUI, player, ZoneType.Flashback);
|
||||||
final ZoneAction commandAction = new ZoneAction(matchUI, player, ZoneType.Command);
|
final ZoneAction commandAction = new ZoneAction(matchUI, player, ZoneType.Command);
|
||||||
|
final ZoneAction anteAction = new ZoneAction(matchUI, player, ZoneType.Ante);
|
||||||
|
final ZoneAction sideboardAction = new ZoneAction(matchUI, player, ZoneType.Sideboard);
|
||||||
|
|
||||||
final Function<Byte, Boolean> manaAction = new Function<Byte, Boolean>() {
|
final Function<Byte, Boolean> manaAction = new Function<Byte, Boolean>() {
|
||||||
@Override public final Boolean apply(final Byte colorCode) {
|
@Override public final Boolean apply(final Byte colorCode) {
|
||||||
@@ -85,7 +87,8 @@ public class CField implements ICDoc {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
view.getDetailsPanel().setupMouseActions(handAction, libraryAction, exileAction, graveAction, flashBackAction, commandAction, manaAction);
|
view.getDetailsPanel().setupMouseActions(handAction, libraryAction, exileAction, graveAction, flashBackAction,
|
||||||
|
commandAction, anteAction, sideboardAction, manaAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final CMatchUI getMatchUI() {
|
public final CMatchUI getMatchUI() {
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
private final DetailLabel lblExile = new DetailLabel(FSkinProp.IMG_ZONE_EXILE, Localizer.getInstance().getMessage("lblExileNCards", "%s"));
|
private final DetailLabel lblExile = new DetailLabel(FSkinProp.IMG_ZONE_EXILE, Localizer.getInstance().getMessage("lblExileNCards", "%s"));
|
||||||
private final DetailLabel lblFlashback = new DetailLabel(FSkinProp.IMG_ZONE_FLASHBACK, Localizer.getInstance().getMessage("lblFlashbackNCards", "%s"));
|
private final DetailLabel lblFlashback = new DetailLabel(FSkinProp.IMG_ZONE_FLASHBACK, Localizer.getInstance().getMessage("lblFlashbackNCards", "%s"));
|
||||||
private final DetailLabel lblCommand = new DetailLabel(FSkinProp.IMG_PLANESWALKER, Localizer.getInstance().getMessage("lblCommandZoneNCards", "%s"));
|
private final DetailLabel lblCommand = new DetailLabel(FSkinProp.IMG_PLANESWALKER, Localizer.getInstance().getMessage("lblCommandZoneNCards", "%s"));
|
||||||
|
private final DetailLabel lblAnte = new DetailLabel(FSkinProp.IMG_ZONE_ANTE, Localizer.getInstance().getMessage("lblAnteZoneNCards", "%s"));
|
||||||
|
private final DetailLabel lblSideboard = new DetailLabel(FSkinProp.IMG_ZONE_SIDEBOARD, Localizer.getInstance().getMessage("lblSideboardNCards", "%s"));
|
||||||
private final List<Pair<DetailLabel, Byte>> manaLabels = new ArrayList<>();
|
private final List<Pair<DetailLabel, Byte>> manaLabels = new ArrayList<>();
|
||||||
|
|
||||||
public PlayerDetailsPanel(final PlayerView player0) {
|
public PlayerDetailsPanel(final PlayerView player0) {
|
||||||
@@ -67,6 +69,7 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
final SkinnedPanel row4 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
final SkinnedPanel row4 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
||||||
final SkinnedPanel row5 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
final SkinnedPanel row5 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
||||||
final SkinnedPanel row6 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
final SkinnedPanel row6 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
||||||
|
final SkinnedPanel row7 = new SkinnedPanel(new MigLayout("insets 0, gap 0"));
|
||||||
|
|
||||||
row1.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
row1.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
||||||
row2.setOpaque(false);
|
row2.setOpaque(false);
|
||||||
@@ -74,6 +77,7 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
row4.setOpaque(false);
|
row4.setOpaque(false);
|
||||||
row5.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
row5.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
||||||
row6.setOpaque(false);
|
row6.setOpaque(false);
|
||||||
|
row7.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
||||||
|
|
||||||
// Hand, library, graveyard, exile, flashback, command
|
// Hand, library, graveyard, exile, flashback, command
|
||||||
final String constraintsCell = "w 50%-4px!, h 100%!, gapleft 2px, gapright 2px";
|
final String constraintsCell = "w 50%-4px!, h 100%!, gapleft 2px, gapright 2px";
|
||||||
@@ -87,22 +91,26 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
row3.add(lblFlashback, constraintsCell);
|
row3.add(lblFlashback, constraintsCell);
|
||||||
row3.add(lblCommand, constraintsCell);
|
row3.add(lblCommand, constraintsCell);
|
||||||
|
|
||||||
row4.add(manaLabels.get(0).getLeft(), constraintsCell);
|
row4.add(lblAnte, constraintsCell);
|
||||||
row4.add(manaLabels.get(1).getLeft(), constraintsCell);
|
row4.add(lblSideboard, constraintsCell);
|
||||||
|
|
||||||
row5.add(manaLabels.get(2).getLeft(), constraintsCell);
|
row5.add(manaLabels.get(0).getLeft(), constraintsCell);
|
||||||
row5.add(manaLabels.get(3).getLeft(), constraintsCell);
|
row5.add(manaLabels.get(1).getLeft(), constraintsCell);
|
||||||
|
|
||||||
row6.add(manaLabels.get(4).getLeft(), constraintsCell);
|
row6.add(manaLabels.get(2).getLeft(), constraintsCell);
|
||||||
row6.add(manaLabels.get(5).getLeft(), constraintsCell);
|
row6.add(manaLabels.get(3).getLeft(), constraintsCell);
|
||||||
|
|
||||||
final String constraintsRow = "w 100%!, h 16%!";
|
row7.add(manaLabels.get(4).getLeft(), constraintsCell);
|
||||||
|
row7.add(manaLabels.get(5).getLeft(), constraintsCell);
|
||||||
|
|
||||||
|
final String constraintsRow = "w 100%!, h 14%!";
|
||||||
add(row1, constraintsRow + ", gap 0 0 2% 0");
|
add(row1, constraintsRow + ", gap 0 0 2% 0");
|
||||||
add(row2, constraintsRow);
|
add(row2, constraintsRow);
|
||||||
add(row3, constraintsRow);
|
add(row3, constraintsRow);
|
||||||
add(row4, constraintsRow);
|
add(row4, constraintsRow);
|
||||||
add(row5, constraintsRow);
|
add(row5, constraintsRow);
|
||||||
add(row6, constraintsRow);
|
add(row6, constraintsRow);
|
||||||
|
add(row7, constraintsRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Component getLblLibrary() {
|
public Component getLblLibrary() {
|
||||||
@@ -119,7 +127,9 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
librarySize = String.valueOf(player.getLibrarySize()),
|
librarySize = String.valueOf(player.getLibrarySize()),
|
||||||
flashbackSize = String.valueOf(player.getFlashbackSize()),
|
flashbackSize = String.valueOf(player.getFlashbackSize()),
|
||||||
exileSize = String.valueOf(player.getExileSize()),
|
exileSize = String.valueOf(player.getExileSize()),
|
||||||
commandSize = String.valueOf(player.getCommandSize());
|
commandSize = String.valueOf(player.getCommandSize()),
|
||||||
|
anteSize = String.valueOf(player.getAnteSize()),
|
||||||
|
sideboardSize = String.valueOf(player.getSideboardSize());
|
||||||
|
|
||||||
lblHand.setText(handSize);
|
lblHand.setText(handSize);
|
||||||
lblHand.setToolTip(handSize, player.getMaxHandString());
|
lblHand.setToolTip(handSize, player.getMaxHandString());
|
||||||
@@ -133,6 +143,10 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
lblExile.setToolTip(exileSize);
|
lblExile.setToolTip(exileSize);
|
||||||
lblCommand.setText(commandSize);
|
lblCommand.setText(commandSize);
|
||||||
lblCommand.setToolTip(commandSize);
|
lblCommand.setToolTip(commandSize);
|
||||||
|
lblAnte.setText(anteSize);
|
||||||
|
lblAnte.setToolTip(anteSize);
|
||||||
|
lblSideboard.setText(sideboardSize);
|
||||||
|
lblSideboard.setToolTip(sideboardSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -147,7 +161,7 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setupMouseActions(final Runnable handAction, final Runnable libraryAction, final Runnable exileAction,
|
public void setupMouseActions(final Runnable handAction, final Runnable libraryAction, final Runnable exileAction,
|
||||||
final Runnable graveAction, final Runnable flashBackAction, final Runnable commandAction,
|
final Runnable graveAction, final Runnable flashBackAction, final Runnable commandAction, final Runnable anteAction, final Runnable sideboardAction,
|
||||||
final Function<Byte, Boolean> manaAction) {
|
final Function<Byte, Boolean> manaAction) {
|
||||||
// Detail label listeners
|
// Detail label listeners
|
||||||
lblGraveyard.addMouseListener(new FMouseAdapter() {
|
lblGraveyard.addMouseListener(new FMouseAdapter() {
|
||||||
@@ -180,6 +194,16 @@ public class PlayerDetailsPanel extends JPanel {
|
|||||||
commandAction.run();
|
commandAction.run();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
lblAnte.addMouseListener(new FMouseAdapter() {
|
||||||
|
@Override public void onLeftClick(final MouseEvent e) {
|
||||||
|
anteAction.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
lblSideboard.addMouseListener(new FMouseAdapter() {
|
||||||
|
@Override public void onLeftClick(final MouseEvent e) {
|
||||||
|
sideboardAction.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
for (final Pair<DetailLabel, Byte> labelPair : manaLabels) {
|
for (final Pair<DetailLabel, Byte> labelPair : manaLabels) {
|
||||||
labelPair.getLeft().addMouseListener(new FMouseAdapter() {
|
labelPair.getLeft().addMouseListener(new FMouseAdapter() {
|
||||||
|
|||||||
@@ -188,6 +188,15 @@ public class FloatingZone extends FloatingCardArea {
|
|||||||
case Flashback:
|
case Flashback:
|
||||||
window.setIconImage(FSkin.getImage(FSkinProp.IMG_ZONE_FLASHBACK));
|
window.setIconImage(FSkin.getImage(FSkinProp.IMG_ZONE_FLASHBACK));
|
||||||
break;
|
break;
|
||||||
|
case Command:
|
||||||
|
window.setIconImage(FSkin.getImage(FSkinProp.IMG_PLANESWALKER));
|
||||||
|
break;
|
||||||
|
case Ante:
|
||||||
|
window.setIconImage(FSkin.getImage(FSkinProp.IMG_ZONE_ANTE));
|
||||||
|
break;
|
||||||
|
case Sideboard:
|
||||||
|
window.setIconImage(FSkin.getImage(FSkinProp.IMG_ZONE_SIDEBOARD));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
locPref = null;
|
locPref = null;
|
||||||
break;
|
break;
|
||||||
@@ -247,6 +256,15 @@ public class FloatingZone extends FloatingCardArea {
|
|||||||
case Flashback:
|
case Flashback:
|
||||||
locPref = isAi ? FPref.ZONE_LOC_AI_FLASHBACK : FPref.ZONE_LOC_HUMAN_FLASHBACK;
|
locPref = isAi ? FPref.ZONE_LOC_AI_FLASHBACK : FPref.ZONE_LOC_HUMAN_FLASHBACK;
|
||||||
break;
|
break;
|
||||||
|
case Command:
|
||||||
|
locPref = isAi ? FPref.ZONE_LOC_AI_COMMAND : FPref.ZONE_LOC_HUMAN_COMMAND;
|
||||||
|
break;
|
||||||
|
case Ante:
|
||||||
|
locPref = isAi ? FPref.ZONE_LOC_AI_ANTE : FPref.ZONE_LOC_HUMAN_ANTE;
|
||||||
|
break;
|
||||||
|
case Sideboard:
|
||||||
|
locPref = isAi ? FPref.ZONE_LOC_AI_SIDEBOARD : FPref.ZONE_LOC_HUMAN_SIDEBOARD;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
locPref = null;
|
locPref = null;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ public enum FSkinImage implements FImage {
|
|||||||
GRAVEYARD (FSkinProp.IMG_ZONE_GRAVEYARD, SourceFile.ICONS),
|
GRAVEYARD (FSkinProp.IMG_ZONE_GRAVEYARD, SourceFile.ICONS),
|
||||||
HDGRAVEYARD (FSkinProp.IMG_HDZONE_GRAVEYARD, SourceFile.BUTTONS),
|
HDGRAVEYARD (FSkinProp.IMG_HDZONE_GRAVEYARD, SourceFile.BUTTONS),
|
||||||
|
|
||||||
|
SIDEBOARD (FSkinProp.IMG_ZONE_SIDEBOARD, SourceFile.ICONS),
|
||||||
|
|
||||||
HDMANAPOOL (FSkinProp.IMG_HDZONE_MANAPOOL, SourceFile.BUTTONS),
|
HDMANAPOOL (FSkinProp.IMG_HDZONE_MANAPOOL, SourceFile.BUTTONS),
|
||||||
|
|
||||||
POISON (FSkinProp.IMG_ZONE_POISON, SourceFile.ICONS),
|
POISON (FSkinProp.IMG_ZONE_POISON, SourceFile.ICONS),
|
||||||
@@ -482,7 +484,7 @@ public enum FSkinImage implements FImage {
|
|||||||
// If any return true, image exists.
|
// If any return true, image exists.
|
||||||
int x0 = 0, y0 = 0;
|
int x0 = 0, y0 = 0;
|
||||||
Color c;
|
Color c;
|
||||||
|
|
||||||
// Center
|
// Center
|
||||||
x0 = (x + w / 2);
|
x0 = (x + w / 2);
|
||||||
y0 = (y + h / 2);
|
y0 = (y + h / 2);
|
||||||
@@ -491,7 +493,7 @@ public enum FSkinImage implements FImage {
|
|||||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
x0 += 2;
|
x0 += 2;
|
||||||
y0 += 2;
|
y0 += 2;
|
||||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||||
@@ -499,21 +501,21 @@ public enum FSkinImage implements FImage {
|
|||||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
x0 -= 4;
|
x0 -= 4;
|
||||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||||
if (c.a != 0) {
|
if (c.a != 0) {
|
||||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
y0 -= 4;
|
y0 -= 4;
|
||||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||||
if (c.a != 0) {
|
if (c.a != 0) {
|
||||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
x0 += 4;
|
x0 += 4;
|
||||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||||
if (c.a != 0) {
|
if (c.a != 0) {
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ public class VPlayerPanel extends FContainer {
|
|||||||
tabs.add(tabManaPool);
|
tabs.add(tabManaPool);
|
||||||
|
|
||||||
addZoneDisplay(ZoneType.Exile, Forge.hdbuttons ? FSkinImage.HDEXILE : FSkinImage.EXILE);
|
addZoneDisplay(ZoneType.Exile, Forge.hdbuttons ? FSkinImage.HDEXILE : FSkinImage.EXILE);
|
||||||
|
addZoneDisplay(ZoneType.Sideboard, Forge.hdbuttons ? FSkinImage.HDSIDEBOARD :FSkinImage.SIDEBOARD);
|
||||||
|
|
||||||
commandZone = add(new CommandZoneDisplay(player));
|
commandZone = add(new CommandZoneDisplay(player));
|
||||||
|
|
||||||
@@ -441,7 +442,7 @@ public class VPlayerPanel extends FContainer {
|
|||||||
if (vibrateDuration > 0 && MatchController.instance.isLocalPlayer(player) &&
|
if (vibrateDuration > 0 && MatchController.instance.isLocalPlayer(player) &&
|
||||||
FModel.getPreferences().getPrefBoolean(FPref.UI_VIBRATE_ON_LIFE_LOSS)) {
|
FModel.getPreferences().getPrefBoolean(FPref.UI_VIBRATE_ON_LIFE_LOSS)) {
|
||||||
//never vibrate more than two seconds regardless of life lost or poison counters gained
|
//never vibrate more than two seconds regardless of life lost or poison counters gained
|
||||||
Gdx.input.vibrate(Math.min(vibrateDuration, 2000));
|
Gdx.input.vibrate(Math.min(vibrateDuration, 2000));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ Name:Frontier Explorer
|
|||||||
ManaCost:W
|
ManaCost:W
|
||||||
Types:Creature Cat Scout
|
Types:Creature Cat Scout
|
||||||
PT:2/1
|
PT:2/1
|
||||||
A:AB$ Effect | Cost$ 3 T | Name$ Play a Plains | Abilities$ PlayLand | EffectOwner$ You | SpellDescription$ Until end of turn, you may play one basic Plains card from outside the game.
|
A:AB$ Effect | Cost$ 3 T | StaticAbilities$ PlaySideboard | EffectOwner$ You | SpellDescription$ Until end of turn, you may play one basic Plains card from outside the game.
|
||||||
SVar:PlayLand:ST$ Play | Cost$ 0 | ActivationZone$ Command | SorcerySpeed$ True | ValidZone$ Sideboard | Valid$ Land.Plains+Basic | SubAbility$ ExileEffect | SpellDescription$ Play a basic Plains card from outside the game.
|
SVar:PlaySideboard:Mode$ Continuous | Affected$ Land.Plains+Basic | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Command | AffectedZone$ Sideboard | Description$ Until end of turn, you may play one basic Plains card from outside the game.
|
||||||
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
|
||||||
Oracle:{3}, {T}: Until end of turn, you may play one basic Plains card from outside the game.
|
Oracle:{3}, {T}: Until end of turn, you may play one basic Plains card from outside the game.
|
||||||
|
|||||||
13
forge-gui/res/cardsfolder/t/the_cinematic_phoenix.txt
Normal file
13
forge-gui/res/cardsfolder/t/the_cinematic_phoenix.txt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Name:The Cinematic Phoenix
|
||||||
|
ManaCost:3 B R
|
||||||
|
Types:Legendary Creature Phoenix
|
||||||
|
PT:4/4
|
||||||
|
K:Flying
|
||||||
|
K:Haste
|
||||||
|
K:Protection from red
|
||||||
|
A:AB$ ChangeZone | Cost$ 1 T | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.Legendary+YouCtrl | TgtPrompt$ Select target legendary creature in your graveyard | GainControl$ True | SpellDescription$ Return target legendary creature card from your graveyard to the battlefield.
|
||||||
|
A:AB$ ChangeZone | Cost$ tapXType<6/Creature> | RememberCostCards$ True | Origin$ Graveyard | Destination$ Battlefield | ActivationZone$ Graveyard | SubAbility$ CheckWin | SpellDescription$ Return CARDNAME from your graveyard to the battlefield. If you tapped six legendary creatures this way, you win the game.
|
||||||
|
SVar:CheckWin:DB$ WinsGame | Defined$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ6 | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
SVar:X:Remembered$Valid Creature.Legendary
|
||||||
|
Oracle:Flying, haste, protection from red\n{1}, {T}: Return target legendary creature card from your graveyard to the battlefield.\nTap six untapped creatures you control: Return The Cinematic Phoenix from your graveyard to the battlefield. If you tapped six legendary creatures this way, you win the game.
|
||||||
15
forge-gui/res/cardsfolder/upcoming/acererak_the_archlich.txt
Normal file
15
forge-gui/res/cardsfolder/upcoming/acererak_the_archlich.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Name:Acererak the Archlich
|
||||||
|
ManaCost:2 B
|
||||||
|
Types:Legendary Creature Zombie Wizard
|
||||||
|
PT:5/5
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ LT1 | Execute$ TrigBounce | TriggerDescription$ When CARDNAME enters the battlefield, if you haven't completed Tomb of Annihilation, return CARDNAME to its owner's hand and venture into the dungeon.
|
||||||
|
SVar:TrigBounce:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBVenture
|
||||||
|
SVar:DBVenture:DB$ Venture
|
||||||
|
SVar:X:PlayerCountPropertyYou$DungeonCompletedNamed_Tomb of Annihilation
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ Whenever CARDNAME attacks, for each opponent, you create a 2/2 black Zombie creature token unless that player sacrifices a creature.
|
||||||
|
SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Opponent | RepeatSubAbility$ DBToken
|
||||||
|
SVar:DBToken:DB$ Token | TokenScript$ b_2_2_zombie | UnlessCost$ Sac<1/Creature> | UnlessPayer$ Player.IsRemembered
|
||||||
|
SVar:HasAttackEffect:TRUE
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
DeckHints:Type$Zombie
|
||||||
|
Oracle:When Acererak the Archlich enters the battlefield, if you haven't completed Tomb of Annihilation, return Acererak the Archlich to its owner's hand and venture into the dungeon.\nWhenever Acererak the Archlich attacks, for each opponent, you create a 2/2 black Zombie creature token unless that player sacrifices a creature.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Arcane Investigator
|
||||||
|
ManaCost:1 U
|
||||||
|
Types:Creature Elf Wizard
|
||||||
|
PT:2/1
|
||||||
|
A:AB$ RollDice | Cost$ 5 U | Sides$ 20 | ResultSubAbilities$ 1-9:DBDraw,10-20:DBDig | PrecostDesc$ Search the Room — | SpellDescription$ Roll a d20.
|
||||||
|
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ 1-9 VERT Draw a card.
|
||||||
|
SVar:DBDig:DB$ Dig | DigNum$ 3 | ChangeNum$ 1 | SpellDescription$ 10-20 VERT Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
|
||||||
|
Oracle:Search the Room — {5}{U}: Roll a d20.\n1-9 | Draw a card.\n10-20 | Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
Name:Asmodeus the Archfiend
|
||||||
|
ManaCost:4 B B
|
||||||
|
Types:Legendary Creature Devil God
|
||||||
|
PT:6/6
|
||||||
|
R:Event$ Draw | ActiveZones$ Battlefield | ValidPlayer$ You | ReplaceWith$ ExileTop | Description$ Binding Contract — If you would draw a card, exile the top card of your library face down instead.
|
||||||
|
SVar:ExileTop:DB$ ChangeZone | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True
|
||||||
|
A:AB$ Draw | Cost$ B B B | NumCards$ 3 | SpellDescription$ Draw three cards.
|
||||||
|
A:AB$ ChangeZoneAll | Cost$ B | ChangeType$ Card.ExiledWithSource | Origin$ Exile | Destination$ Hand | RememberChanged$ True | SubAbility$ DBLoseLife | SpellDescription$ Return all cards exiled with CARDNAME to their owner’s hand and you lose that much life.
|
||||||
|
SVar:DBLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ X | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
SVar:X:Remembered$Amount
|
||||||
|
Oracle:Binding Contract — If you would draw a card, exile the top card of your library face down instead.\n{B}{B}{B}: Draw seven cards.\n{B}: Return all cards exiled with Asmodeus the Archfiend to their owner's hand and you lose that much life.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/battle_cry_goblin.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/battle_cry_goblin.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Battle Cry Goblin
|
||||||
|
ManaCost:1 R
|
||||||
|
Types:Creature Goblin
|
||||||
|
PT:2/2
|
||||||
|
A:AB$ PumpAll | Cost$ 1 R | ValidCards$ Creature.Goblin+YouCtrl | NumAtt$ +1 | KW$ Haste | SpellDescription$ Goblins you control get +1/+0 and gain haste until end of turn.
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, create a 1/1 red Goblin creature token that's tapped and attacking.
|
||||||
|
SVar:TrigToken:DB$Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ You | TokenTapped$ True | TokenAttacking$ True
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
Oracle:{1}{R}: Goblins you control get +1/+0 and gain haste until end of turn.\nPack tactics — Whenever Battle Cry Goblin attacks, if you attacked with creatures with total power 6 or greater this combat, create a 1/1 red Goblin creature token that’s tapped and attacking.
|
||||||
7
forge-gui/res/cardsfolder/upcoming/blink_dog.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/blink_dog.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Blink Dog
|
||||||
|
ManaCost:2 W
|
||||||
|
Types:Creature Dog
|
||||||
|
PT:1/1
|
||||||
|
K:Double Strike
|
||||||
|
A:AB$ Phases | Cost$ 3 W | Defined$ Self | SpellDescription$ Teleport — CARDNAME phases out.
|
||||||
|
Oracle:Double strike\nTeleport — {3}{W}: Blink Dog phases out. (Treat it and anything attached to it as though they don't exist until your next turn.)
|
||||||
12
forge-gui/res/cardsfolder/upcoming/blue_dragon.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/blue_dragon.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Name:Blue Dragon
|
||||||
|
ManaCost:5 U U
|
||||||
|
Types:Creature Dragon
|
||||||
|
PT:5/5
|
||||||
|
K:Flying
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Lightning Breath — When CARDNAME enters the battlefield, until your next turn, target creature an opponent controls gets -3/-0, up to one other target creature gets -2/-0, and up to one other target creature gets -1/-0.
|
||||||
|
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose target creature an opponent controls (-3/-0) | NumAtt$ -3 | Duration$ UntilYourNextTurn | SubAbility$ DBPump
|
||||||
|
SVar:DBPump:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one other target creature an opponent controls (-2/-0) | TargetMin$ 0 | TargetMax$ 1 | NumAtt$ -2 | TargetUnique$ True | Duration$ UntilYourNextTurn | SubAbility$ DBPump2
|
||||||
|
SVar:DBPump2:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one other target creature an opponent controls (-1/-0) | TargetMin$ 0 | TargetMax$ 1 | NumAtt$ -1 | TargetUnique$ True | Duration$ UntilYourNextTurn
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
SVar:PlayMain1:TRUE
|
||||||
|
Oracle:Flying\nLightning Breath — When Blue Dragon enters the battlefield, until your next turn, target creature an opponent controls gets -3/-0, up to one other target creature gets -2/-0, and up to one other target creature gets -1/-0.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Bruenor Battlehammer
|
||||||
|
ManaCost:2 R W
|
||||||
|
Types:Legendary Creature Dwarf Warrior
|
||||||
|
PT:5/3
|
||||||
|
S:Mode$ Continuous | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddPower$ AffectedX | Description$ Each creature you control gets +2/+0 for each Equipment attached to it.
|
||||||
|
SVar:AffectedX:Count$Valid Equipment.Attached/Times.2
|
||||||
|
S:Mode$ Continuous | Affected$ You | AddKeyword$ You may pay 0 rather than pay equip costs. | CheckSVar$ X | SVarCompare$ LT1 | Description$ You may pay {0} rather than pay the equip cost of the first equip ability you activate each turn.
|
||||||
|
SVar:X:Count$YouEquippedThisTurn
|
||||||
|
Oracle:Each creature you control gets +2/+0 for each Equipment attached to it.\nYou may pay {0} rather than pay the equip cost of the first equip ability you activate each turn.
|
||||||
9
forge-gui/res/cardsfolder/upcoming/check_for_traps.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/check_for_traps.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Check for Traps
|
||||||
|
ManaCost:1 B
|
||||||
|
Types:Sorcery
|
||||||
|
A:SP$ ChangeZone | Cost$ 1 B | Origin$ Hand | Destination$ Exile | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | DefinedPlayer$ Targeted | Chooser$ You | ChangeType$ Card.nonLand | ChangeNum$ 1 | IsCurse$ True | Mandatory$ True | RememberChanged$ True | SubAbility$ TheyLose | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from it. Exile that card. If an instant card or a card with flash is exiled this way, they lose 1 life. Otherwise, you lose 1 life.
|
||||||
|
SVar:TheyLose:DB$ LoseLife | Defined$ RememberedOwner | LifeAmount$ 1 | ConditionCheckSVar$ X | SubAbility$ YouLose
|
||||||
|
SVar:YouLose:DB$ LoseLife | LifeAmount$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
SVar:X:Remembered$Valid Instant,Card.withFlash
|
||||||
|
Oracle:Target opponent reveals their hand. You choose a nonland card from it. Exile that card. If an instant card or a card with flash is exiled this way, they lose 1 life. Otherwise, you lose 1 life.
|
||||||
11
forge-gui/res/cardsfolder/upcoming/djinni_windseer.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/djinni_windseer.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Name:Djinni Windseer
|
||||||
|
ManaCost:3 U
|
||||||
|
Types:Creature Djinn
|
||||||
|
PT:3/3
|
||||||
|
K:Flying
|
||||||
|
T:Mode$ ChangesZone | ValidCard$ Card.Self | Destination$ Battlefield | Execute$ TrigRollDice | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY
|
||||||
|
SVar:TrigRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:Scry1,10-19:Scry2,20:Scry3 | SpellDescription$ roll a d20.
|
||||||
|
SVar:Scry1:DB$ Scry | ScryNum$ 1 | SpellDescription$ 1-9 VERT Scry 1.
|
||||||
|
SVar:Scry2:DB$ Scry | ScryNum$ 2 | SpellDescription$ 10-19 VERT Scry 2.
|
||||||
|
SVar:Scry3:DB$ Scry | ScryNum$ 3 | SpellDescription$ 20 VERT Scry 3.
|
||||||
|
Oracle:Flying\nWhen Djinni Windseer enters the battlefield, roll a d20.\n1-9 | Scry 1.\n10-19 | Scry 2.\n20 | Scry 3.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/eye_of_vecna.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/eye_of_vecna.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Eye of Vecna
|
||||||
|
ManaCost:2
|
||||||
|
Types:Legendary Artifact
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, you draw a card and you lose 2 life.
|
||||||
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | OptionalDecider$ You | Execute$ TrigDrawUpkeep | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you may pay {2}. If you do, you draw a card and you lose 2 life.
|
||||||
|
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBLoseLife
|
||||||
|
SVar:TrigDrawUpkeep:AB$ Draw | Cost$ 2 | Defined$ You | NumCards$ 1 | SubAbility$ DBLoseLife
|
||||||
|
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 2
|
||||||
|
DeckHints:Name$Hand of Vecna|The Book of Vile Darkness
|
||||||
|
Oracle:When Eye of Vecna enters the battlefield, you draw a card and you lose 2 life.\nAt the beginning of your upkeep, you may pay {2}. If you do, you draw a card and you lose 2 life.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
Name:Eyes of the Beholder
|
||||||
|
ManaCost:4 B B
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Pump | Cost$ 4 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -11 | NumDef$ -11 | IsCurse$ True | SpellDescription$ Target creature gets -11/-11 until end of turn.
|
||||||
|
Oracle:Target creature gets -11/-11 until end of turn.
|
||||||
14
forge-gui/res/cardsfolder/upcoming/flameskull.txt
Normal file
14
forge-gui/res/cardsfolder/upcoming/flameskull.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Name:Flameskull
|
||||||
|
ManaCost:1 R R
|
||||||
|
Types:Creature Skeleton
|
||||||
|
PT:3/1
|
||||||
|
K:Flying
|
||||||
|
K:CARDNAME can't block.
|
||||||
|
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigExile | TriggerDescription$ Rejuvenation – When CARDNAME dies, exile it. If you do, exile the top card of your library. Until the end of your next turn, you may play one of those cards. (If you cast CARDNAME this way, you can't play the other card, and vice versa.)
|
||||||
|
SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredNewCardLKICopy | Origin$ Graveyard | Destination$ Exile | RememberChanged$ True | SubAbility$ DBExile
|
||||||
|
SVar:DBExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect
|
||||||
|
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ MayPlay | Duration$ UntilTheEndOfYourNextTurn | ForgetOnMoved$ Exile | SubAbility$ DBCleanup
|
||||||
|
SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Command | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play one of these cards. (If you cast EFFECTSOURCE this way, you can't play the other card, and vice versa.)
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
SVar:SacMe:3
|
||||||
|
Oracle:Flying\nFlameskull can’t block.\nRejuvenation — When Flameskull dies, exile it. If you do, exile the top card of your library. Until the end of your next turn, you may play one of those cards. (If you cast Flameskull this way, you can't play the other card, and vice versa.)
|
||||||
16
forge-gui/res/cardsfolder/upcoming/froghemoth.txt
Normal file
16
forge-gui/res/cardsfolder/upcoming/froghemoth.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
Name:Froghemoth
|
||||||
|
ManaCost:3 G G
|
||||||
|
Types:Creature Frog Horror
|
||||||
|
PT:4/4
|
||||||
|
K:Trample
|
||||||
|
K:Haste
|
||||||
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, exile up to that many target cards from their graveyard. Put a +1/+1 counter on CARDNAME for each creature exiled this way. You gain 1 life for each noncreature card exiled this way.
|
||||||
|
SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card.DefenderCtrl | ChangeNum$ X | Hidden$ True | RememberChanged$ True | SubAbility$ DBPutCounter
|
||||||
|
SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ Y | SubAbility$ DBGainLife
|
||||||
|
SVar:DBGainLife:DB$ GainLife | LifeAmount$ Z | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
SVar:X:TriggerCount$DamageAmount
|
||||||
|
SVar:Y:Remembered$Valid Creature
|
||||||
|
SVar:Z:Remembered$Valid Card.nonCreature
|
||||||
|
DeckHas:Ability$LifeGain & Ability$Counters
|
||||||
|
Oracle:Trample, haste\nWhenever Froghemoth deals combat damage to a player, exile up to that many target cards from their graveyard. Put a +1/+1 counter on Froghemoth for each creature exiled this way. You gain 1 life for each noncreature card exiled this way.
|
||||||
9
forge-gui/res/cardsfolder/upcoming/gnoll_hunter.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/gnoll_hunter.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Gnoll Hunter
|
||||||
|
ManaCost:1 G
|
||||||
|
Types:Creature Gnoll
|
||||||
|
PT:2/2
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, put a +1/+1 counter on CARDNAME.
|
||||||
|
SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
DeckHas:Ability$Counters
|
||||||
|
Oracle:Pack tactics — Whenever Gnoll Hunter attacks, if you attacked with creatures with total power 6 or greater this combat, put a +1/+1 counter on Gnoll Hunter.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/goblin_javelineer.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/goblin_javelineer.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Goblin Javelineer
|
||||||
|
ManaCost:R
|
||||||
|
Types:Creature Goblin Warrior
|
||||||
|
PT:1/1
|
||||||
|
K:Haste
|
||||||
|
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME becomes blocked, it deals 1 damage to target creature blocking it.
|
||||||
|
SVar:TrigDealDamage:DB$ DealDamage | DamageSource$ TriggeredAttacker | NumDmg$ 1 | Defined$ TriggeredBlockers
|
||||||
|
Oracle:Haste\nWhenever Goblin Javelineer becomes blocked, it deals 1 damage to target creature blocking it.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Grand Master of Flowers
|
||||||
|
ManaCost:2 W W
|
||||||
|
Types:Legendary Planeswalker Bahamut
|
||||||
|
Loyalty:3
|
||||||
|
S:Mode$ Continuous | Affected$ Card.Self | CheckSVar$ X | SVarCompare$ GE7 | AddKeyword$ Flying & Indestructible | AddType$ Creature & Dragon & God | SetPower$ 7 | SetToughness$ 7 | RemoveCardTypes$ True | CharacteristicDefining$ True | Description$ As long as CARDNAME has seven or more loyalty counters on him, he's a 7/7 Dragon God creature with flying and indestructible.
|
||||||
|
SVar:X:Count$CardCounters.LOYALTY
|
||||||
|
A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.withoutFirst Strike+withoutDouble Strike+withoutVigilance | KW$ HIDDEN CARDNAME can't attack or block. | IsCurse$ True | Duration$ UntilYourNextTurn | AILogic$ DetainNonLand | SpellDescription$ Target creature without first strike, double strike, or vigilance can't attack or block until your next turn.
|
||||||
|
A:AB$ ChangeZone | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Hand | ChangeType$ Card.namedMonk of the Open Hand | ChangeNum$ 1 | Optional$ True | SpellDescription$ Search your library and/or graveyard for a card named Monk of the Open Hand, reveal it, and put it into your hand. If you search your library this way, shuffle.
|
||||||
|
Oracle:As long as Grand Master of Flowers has seven or more loyalty counters on him, he’s a 7/7 Dragon God creature with flying and indestructible.\n[+1]: Target creature without first strike, double strike, or vigilance can't attack or block until your next turn.\n[+1]: Search your library and/or graveyard for a card named Monk of the Open Hand, reveal it, and put it into your hand. If you search your library this way, shuffle.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Gretchen Titchwillow
|
||||||
|
ManaCost:G U
|
||||||
|
Types:Legendary Creature Halfling Druid
|
||||||
|
PT:0/4
|
||||||
|
A:AB$ Draw | Cost$ 2 G U | Defined$ You | NumCards$ 1 | SubAbility$ DBChangeZone | SpellDescription$ Draw a card.
|
||||||
|
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | ChangeType$ Land | ChangeNum$ 1 | SpellDescription$ You may put a land card from your hand onto the battlefield.
|
||||||
|
Oracle:{2}{G}{U}: Draw a card. You may put a land card from your hand onto the battlefield.
|
||||||
12
forge-gui/res/cardsfolder/upcoming/hand_of_vecna.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/hand_of_vecna.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Name:Hand of Vecna
|
||||||
|
ManaCost:3
|
||||||
|
Types:Legendary Artifact Equipment
|
||||||
|
T:Mode$Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, equipped creature or a creature you control named Vecna gets +X/+X until end of turn, where X is the number of cards in your hand.
|
||||||
|
SVar:TrigChoose:DB$ ChooseCard | Choices$ Creature.EquippedBy,Creature.YouCtrl+namedVecna | SubAbility$ DBPump
|
||||||
|
SVar:DBPump:DB$ Pump | Defined$ ChosenCard | NumAtt$ +X | NumDef$ +X | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
|
||||||
|
K:Equip:PayLife<X>
|
||||||
|
K:Equip:2
|
||||||
|
SVar:X:Count$CardsInYourHand
|
||||||
|
DeckHints:Name$Eye of Vecna|The Book of Vile Darkness
|
||||||
|
Oracle:At the beginning of combat on your turn, equipped creature or a creature you control named Vecna gets +X/+X until end of turn, where X is the number of cards in your hand.\nEquip—Pay 1 life for each card in your hand.\nEquip {2}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Hobgoblin Bandit Lord
|
||||||
|
ManaCost:1 R R
|
||||||
|
Types:Creature Goblin Rogue
|
||||||
|
PT:2/3
|
||||||
|
S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Goblin.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Goblins you control get +1/+1.
|
||||||
|
A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SpellDescription$ CARDNAME deals damage equal to the number of Goblins that entered the battlefield under your control this turn to any target.
|
||||||
|
SVar:X:Count$Valid Goblin.ThisTurnEntered+EnteredUnder You
|
||||||
|
DeckNeeds:Type$Goblin
|
||||||
|
Oracle:Other Goblins you control get +1/+1.\n{R}, {T}: Hobgoblin Bandit Lord deals damage equal to the number of Goblins that entered the battlefield under your control this turn to any target.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/hobgoblin_captain.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/hobgoblin_captain.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Hobgoblin Captain
|
||||||
|
ManaCost:1 R
|
||||||
|
Types:Creature Goblin Barbarian
|
||||||
|
PT:3/1
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, CARDNAME gains first strike until end of turn.
|
||||||
|
SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ First Strike
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
Oracle:Pack tactics — Whenever Hobgoblin Captain attacks, if you attacked with creatures with total power 6 or greater this combat, Hobgoblin Captain gains first strike until end of turn.
|
||||||
6
forge-gui/res/cardsfolder/upcoming/hulking_bugbear.txt
Normal file
6
forge-gui/res/cardsfolder/upcoming/hulking_bugbear.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Name:Hulking Bugbear
|
||||||
|
ManaCost:1 R R
|
||||||
|
Types:Creature Goblin
|
||||||
|
PT:3/3
|
||||||
|
K:Haste
|
||||||
|
Oracle:Haste
|
||||||
11
forge-gui/res/cardsfolder/upcoming/ingenious_smith.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/ingenious_smith.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Name:Ingenious Smith
|
||||||
|
ManaCost:1 W
|
||||||
|
Types:Creature Human Artificer
|
||||||
|
PT:1/1
|
||||||
|
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top four cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||||
|
SVar:TrigDig:DB$ Dig | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Artifact | RestRandomOrder$ True
|
||||||
|
T:Mode$ ChangesZoneAll | ValidCards$ Artifact.YouCtrl | Destination$ Battlefield | TriggerZones$ Battlefield | ActivationLimit$ 1 | Execute$ TrigPutCounter | TriggerDescription$ Whenever one or more artifacts enter the battlefield under your control, put a +1/+1 counter on CARDNAME. This ability triggers only once each turn.
|
||||||
|
SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
|
||||||
|
DeckHints:Type$Artifact
|
||||||
|
DeckHas:Ability$Counters
|
||||||
|
Oracle:When Ingenious Smith enters the battlefield, look at the top four cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nWhenever one or more artifacts enter the battlefield under your control, put a +1/+1 counter on Ingenious Smith. This ability triggers only once each turn.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Intrepid Outlander
|
||||||
|
ManaCost:1 G
|
||||||
|
Types:Creature Orc Ranger
|
||||||
|
PT:2/3
|
||||||
|
K:Reach
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigVenture | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, venture into the dungeon. (Enter the first room or advance to the next room.)
|
||||||
|
SVar:TrigVenture:DB$ Venture
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
Oracle:Reach\nPack tactics — Whenever Intrepid Outlander attacks, if you attacked with creatures with total power 6 or greater this combat, venture into the dungeon. (Enter the first room or advance to the next room.)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
Name:Krydle of Baldur's Gate
|
||||||
|
ManaCost:U B
|
||||||
|
Types:Legendary Creature Human Elf Rogue
|
||||||
|
PT:1/3
|
||||||
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player loses 1 life and mills a card, then you gain 1 life and scry 1.
|
||||||
|
SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredTarget | LifeAmount$ 1 | SubAbility$ DBMill
|
||||||
|
SVar:DBMill:DB$ Mill | Defined$ TriggeredTarget | NumCards$ 1 | SubAbility$ DBGainLife
|
||||||
|
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 | SubAbility$ DBScry
|
||||||
|
SVar:DBScry:DB$ Scry | Defined$ You | ScryNum$ 1
|
||||||
|
T:Mode$ AttackersDeclared | AttackingPlayer$ You | OptionalDecider$ You | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, you may pay {2}. If you do, target creature can’t be blocked this turn.
|
||||||
|
SVar:TrigPump:AB$ Pump | Cost$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN Unblockable
|
||||||
|
DeckHas:Ability$LifeGain
|
||||||
|
Oracle:Whenever Krydle of Baldur's Gate deals combat damage to a player, that player loses 1 life and mills a card, then you gain 1 life and scry 1.\nWhenever you attack, you may pay {2}. If you do, target creature can't be blocked this turn.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/lair_of_the_hydra.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/lair_of_the_hydra.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Lair of the Hydra
|
||||||
|
ManaCost:no cost
|
||||||
|
Types:Land
|
||||||
|
K:ETBReplacement:Other:LandTapped
|
||||||
|
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionCheckSVar$ ETBCheckSVar2 | ConditionSVarCompare$ GT1 | SpellDescription$ If you control two or more other lands, CARDNAME enters the battlefield tapped.
|
||||||
|
SVar:ETBCheckSVar2:Count$LastStateBattlefield Land.YouCtrl
|
||||||
|
A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}.
|
||||||
|
A:AB$ Animate | Cost$ X G XCantBe0 | Defined$ Self | Power$ X | Toughness$ X | Types$ Creature,Hydra | Colors$ Green | SpellDescription$ Until end of turn, CARDNAME becomes an X/X green Hydra creature. It's still a land. X can't be 0.
|
||||||
|
SVar:X:Count$xPaid
|
||||||
|
Oracle:If you control two or more other lands, Lair of the Hydra enters the battlefield tapped.\n{T}: Add {G}.\n{X}{G}: Until end of turn, Lair of the Hydra becomes an X/X green Hydra creature. It's still a land. X can't be 0.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/loyal_warhound.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/loyal_warhound.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Loyal Warhound
|
||||||
|
ManaCost:1 W
|
||||||
|
Types:Creature Dog
|
||||||
|
PT:3/1
|
||||||
|
K:Vigilance
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | CheckSVar$ Y | SVarCompare$ GTX | TriggerDescription$ When CARDNAME enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle.
|
||||||
|
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Plains.Basic | ChangeNum$ 1 | Mandatory$ True
|
||||||
|
SVar:X:Count$Valid Land.YouCtrl
|
||||||
|
SVar:Y:PlayerCountOpponents$HighestValid Land.YouCtrl
|
||||||
|
Oracle:Vigilance\nWhen Loyal Warhound enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/mind_flayer.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/mind_flayer.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Mind Flayer
|
||||||
|
ManaCost:3 U U
|
||||||
|
Types:Creature Horror
|
||||||
|
PT:3/3
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ Dominate Monster – When CARDNAME enters the battlefield, gain control of target creature for as long as you control CARDNAME.
|
||||||
|
SVar:TrigChange:DB$ GainControl | TgtPrompt$ Choose target creature | ValidTgts$ Creature | LoseControl$ LeavesPlay,LoseControl
|
||||||
|
SVar:PlayMain1:TRUE
|
||||||
|
Oracle:Dominate Monster — When Mind Flayer enters the battlefield, gain control of target creature for as long as you control Mind Flayer.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Minimus Containment
|
||||||
|
ManaCost:2 W
|
||||||
|
Types:Enchantment Aura
|
||||||
|
K:Enchant nonland permanent
|
||||||
|
A:SP$ Attach | Cost$ 2 W | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | AILogic$ Curse
|
||||||
|
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddType$ Artifact & Treasure | RemoveCardTypes$ True | AddAbility$ TreasureSac | RemoveAllAbilities$ True | Description$ Enchanted permanent is a Treasure artifact with "{T}, Sacrifice this artifact: Add one mana of any color," and it loses all other abilities. (If it was a creature, it's no longer a creature.)
|
||||||
|
SVar:TreasureSac:AB$ Mana | Cost$ T Sac<1/CARDNAME> | Produced$ Any | SpellDescription$ Add one mana of any color.
|
||||||
|
Oracle:Enchant nonland permanent\nEnchanted permanent is a Treasure artifact with "{T}, Sacrifice this artifact: Add one mana of any color," and it loses all other abilities. (If it was a creature, it's no longer a creature.)
|
||||||
10
forge-gui/res/cardsfolder/upcoming/minion_of_the_mighty.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/minion_of_the_mighty.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Minion of the Mighty
|
||||||
|
ManaCost:R
|
||||||
|
Types:Creature Kobold
|
||||||
|
PT:0/1
|
||||||
|
K:Menace
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChange | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures wih total power 6 or greater this combat, you may put a Dragon creature card from your hand onto the battlefield tapped and attacking.
|
||||||
|
SVar:TrigChange:DB$ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.Dragon+YouCtrl | Tapped$ True | Attacking$ True
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
DeckHints:Type$Dragon
|
||||||
|
Oracle:Menace\nPack tactics — Whenever Minion of the Mighty attacks, if you attacked with creatures wih total power 6 or greater this combat, you may put a Dragon creature card from your hand onto the battlefield tapped and attacking.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/minsc_beloved_ranger.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/minsc_beloved_ranger.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Minsc, Beloved Ranger
|
||||||
|
ManaCost:R G W
|
||||||
|
Types:Legendary Creature Human Ranger
|
||||||
|
PT:3/3
|
||||||
|
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigMinsc | TriggerDescription$ When CARDNAME enters the battlefield, create Boo, a legendary 1/1 red Hamster creature token with trample and haste.
|
||||||
|
SVar:TrigMinsc:DB$ Token | TokenAmount$ 1 | TokenScript$ boo | TokenOwner$ You
|
||||||
|
A:AB$ Animate | Cost$ X | Power$ X | Toughness$ X | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Types$ Giant | SorcerySpeed$ True | SpellDescription$ Until end of turn, target creature you control has base power and toughness X/X and becomes a Giant in addition to its other types. Activate only a sorcery.
|
||||||
|
SVar:X:Count$xPaid
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
Oracle:When Minsc, Beloved Ranger enters the battlefield, create Boo, a legendary 1/1 red Hamster creature token with trample and haste.\n{X}: Until end of turn, target creature you control has base power and toughness X/X and becomes a Giant in addition to its other types. Activate only a sorcery.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/monk_of_the_open_hand.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/monk_of_the_open_hand.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Monk of the Open Hand
|
||||||
|
ManaCost:W
|
||||||
|
Types:Creature Elf Monk
|
||||||
|
PT:1/1
|
||||||
|
T:Mode$ SpellCast | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | CheckSVar$ YouCastThisTurn | SVarCompare$ EQ2 | NoResolvingCheck$ True | TriggerDescription$ Whenever you cast your second spell each turn, put a +1/+1 counter on CARDNAME.
|
||||||
|
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
|
||||||
|
SVar:YouCastThisTurn:Count$ThisTurnCast_Card.YouCtrl
|
||||||
|
SVar:BuffedBy:Card
|
||||||
|
DeckHas:Ability$Counters
|
||||||
|
Oracle:Whenever you cast your second spell each turn, put a +1/+1 counter on Monk of the Open Hand.
|
||||||
15
forge-gui/res/cardsfolder/upcoming/mordenkainen.txt
Normal file
15
forge-gui/res/cardsfolder/upcoming/mordenkainen.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Name:Mordenkainen
|
||||||
|
ManaCost:4 U U
|
||||||
|
Types:Legendary Planeswalker Mordenkainen
|
||||||
|
Loyalty:5
|
||||||
|
A:AB$ Draw | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | NumCards$ 2 | SubAbility$ DBBottom | SpellDescription$ Draw two cards, then put a card from your hand on the bottom of your library.
|
||||||
|
SVar:DBBottom:DB$ ChangeZone | Origin$ Hand | Destination$ Library | Hand$ Library | LibraryPosition$ -1 | ChangeNum$ 1
|
||||||
|
A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | TokenOwner$ You | TokenScript$ u_x_x_dog_illusion_cardsinhand | TokenAmount$ 1 | SpellDescription$ Create a blue Dog Illusion creature token with "This creature's power and toughness are each equal to twice the number of cards in your hand."
|
||||||
|
A:AB$ ChangeZoneAll | Cost$ SubCounter<10/LOYALTY> | Planeswalker$ True | Ultimate$ True | ChangeType$ Card.YouCtrl | Origin$ Hand | Destination$ Library | RememberChanged$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Exchange your hand and library, then shuffle. You get an emblem with "You have no maximum hand size."
|
||||||
|
SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Card.YouCtrl+IsNotRemembered | Origin$ Library | Destination$ Hand | SubAbility$ DBShuffle
|
||||||
|
SVar:DBShuffle:DB$ Shuffle | Defined$ You | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBEmblem
|
||||||
|
SVar:DBEmblem:DB$ Effect | Name$ Emblem - Mordenkainen | Image$ emblem_mordenkainen | StaticAbilities$ UnlimitedHand | Stackable$ False | Duration$ Permanent | AILogic$ Always
|
||||||
|
SVar:UnlimitedHand:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size.
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
Oracle:[+2]: Draw two cards, then put a card from your hand on the bottom of your library.\n[-2]: Create a blue Dog Illusion creature token with "This creature's power and toughness are each equal to twice the number of cards in your hand."\n[-10]: Exchange your hand and library, then shuffle. You get an emblem with "You have no maximum hand size."
|
||||||
8
forge-gui/res/cardsfolder/upcoming/orb_of_dragonkind.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/orb_of_dragonkind.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Orb of Dragonkind
|
||||||
|
ManaCost:1 R
|
||||||
|
Types:Artifact
|
||||||
|
A:AB$ Mana | Cost$ 1 T | Produced$ Combo W U B R G | Amount$ 2 | RestrictValid$ Card.Dragon,Activated.Dragon | SpellDescription$ Add two mana in any combination of colors. Spend this mana only to cast Dragon spells or to activate abilities of Dragons.
|
||||||
|
A:AB$ Dig | Cost$ R T Sac<1/CARDNAME> | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Dragon | RestRandomOrder$ True | SpellDescription$ Look at the top seven cards of your library. You may reveal a Dragon card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||||
|
SVar:BuffedBy:Dragon
|
||||||
|
DeckHints:Type$Dragon
|
||||||
|
Oracle:{1}, {T}: Add two mana in any combination of colors. Spend this mana only to cast Dragon spells or to activate abilities of Dragons.\n{R}, {T}, Sacrifice Orb of Dragonkind: Look at the top seven cards of your library. You may reveal a Dragon card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/oswald_fiddlebender.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/oswald_fiddlebender.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Oswald Fiddlebender
|
||||||
|
ManaCost:1 W
|
||||||
|
Types:Legendary Creature Gnome Artificer
|
||||||
|
PT:2/2
|
||||||
|
A:AB$ ChangeZone | Cost$ W T Sac<1/Artifact> | Origin$ Library | Destination$ Battlefield | ChangeType$ Artifact.cmcEQX | ChangeNum$ 1 | SorcerySpeed$ True | AILogic$ SacAndUpgrade | SpellDescription$ Search your library for an artifact card with mana value equal to 1 plus the sacrificed artifact's mana value, put that card onto the battlefield, then shuffle. Activate only as a sorcery.
|
||||||
|
SVar:X:Sacrificed$CardManaCost/Plus.1
|
||||||
|
SVar:AIPreference:SacCost$Artifact
|
||||||
|
DeckHas:Ability$Sacrifice
|
||||||
|
DeckHints:Type$Artifact
|
||||||
|
Oracle:{T}, Sacrifice an artifact: Search your library for an artifact card with mana value equal to 1 plus the sacrificed artifact's mana value, put that card onto the battlefield, then shuffle. Activate only as a sorcery.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Priest of Ancient Lore
|
||||||
|
ManaCost:2 W
|
||||||
|
Types:Creature Dwarf Cleric
|
||||||
|
PT:2/1
|
||||||
|
T:Mode$ ChangesZone | ValidCard$ Card.Self | Destination$ Battlefield | Execute$ TrigLife | TriggerDescription$ When CARDNAME enters the battlefield, you gain 1 life and draw a card.
|
||||||
|
SVar:TrigLife:DB$ GainLife | LifeAmount$ 1 | SubAbility$ DBDraw
|
||||||
|
SVar:DBDraw:DB$ Draw
|
||||||
|
DeckHas:Ability$LifeGain
|
||||||
|
Oracle:When Priest of Ancient Lore enters the battlefield, you gain 1 life and draw a card.
|
||||||
15
forge-gui/res/cardsfolder/upcoming/prosper_tome_bound.txt
Normal file
15
forge-gui/res/cardsfolder/upcoming/prosper_tome_bound.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Name:Prosper, Tome-Bound
|
||||||
|
ManaCost:2 B R
|
||||||
|
Types:Legendary Creature Tiefling Warlock
|
||||||
|
PT:1/4
|
||||||
|
K:Deathtouch
|
||||||
|
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Mystic Arcanum — At the beginning of your end step, exile the top card of your library. Until the end of your next turn, you may play that card.
|
||||||
|
SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. Until the end of your next turn, you may play that card.
|
||||||
|
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | Duration$ UntilTheEndOfYourNextTurn | SubAbility$ DBCleanup | ForgetOnMoved$ Exile
|
||||||
|
SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play that card.
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
T:Mode$ SpellCast | ValidCard$ Card.wasCastFromExile | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Pact Boon — Whenever you play a card from exile, create a Treasure token.
|
||||||
|
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | Secondary$ True | TriggerDescription$ Pact Boon — Whenever you play a card from exile, create a Treasure token.
|
||||||
|
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | LegacyImage$ c a treasure sac afr
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
Oracle:Deathtouch\nMystic Arcanum — At the beginning of your end step, exile the top card of your library. Until the end of your next turn, you may play that card.\nPact Boon — Whenever you play a card from exile, create a Treasure token.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Ray of Enfeeblement
|
||||||
|
ManaCost:B
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | NumAtt$ -4 | NumDef$ -X | SpellDescription$ Target creature gets -4/-1 until end of turn. If that creature is white, it gets -4/-4 until end of turn instead.
|
||||||
|
SVar:X:Count$Compare Y GE1.4.1
|
||||||
|
SVar:Y:Targeted$Valid Creature.White
|
||||||
|
Oracle:Target creature gets -4/-1 until end of turn. If that creature is white, it gets -4/-4 until end of turn instead.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/red_dragon.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/red_dragon.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Red Dragon
|
||||||
|
ManaCost:4 R R
|
||||||
|
Types:Creature Dragon
|
||||||
|
PT:4/4
|
||||||
|
K:Flying
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Fire Breath — When CARDNAME enters the battlefield, it deals 4 damage to each opponent.
|
||||||
|
SVar:TrigDealDamage:DB$ DealDamage | NumDmg$ 4 | Defined$ Player.Opponent
|
||||||
|
Oracle:Flying\nFire Breath — When Red Dragon enters the battlefield, it deals 4 damage to each opponent.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
Name:Rimeshield Frost Giant
|
||||||
|
ManaCost:3 U U
|
||||||
|
Types:Creature Giant Warrior
|
||||||
|
PT:4/5
|
||||||
|
K:Ward:3
|
||||||
|
Oracle:Ward {3} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {3}.)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Shessra, Death's Whisper
|
||||||
|
ManaCost:2 B G
|
||||||
|
Types:Legendary Creature Human Elf Warlock
|
||||||
|
PT:1/3
|
||||||
|
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigProvoke | TriggerDescription$ Bewitching Whispers — When CARDNAME enters the battlefield, target creature blocks this turn if able.
|
||||||
|
SVar:TrigProvoke:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME blocks each combat if able.
|
||||||
|
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE1 | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whispers of the Grave — At the beginning of your end step, if a creature died this turn, you may pay 2 life. If you do, draw a card.
|
||||||
|
SVar:TrigDraw:AB$ Draw | Cost$ PayLife<2> | NumCards$ 1
|
||||||
|
SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature
|
||||||
|
Oracle:Bewitching Whispers — When Shessra, Death’s Whisper enters the battlefield, target creature blocks this turn if able.\nWhispers of the Grave — At the beginning of your end step, if a creature died this turn, you may pay 2 life. If you do, draw a card.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/silver_raven.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/silver_raven.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Silver Raven
|
||||||
|
ManaCost:U
|
||||||
|
Types:Artifact Creature Bird
|
||||||
|
PT:1/1
|
||||||
|
K:Flying
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters the battlefield, scry 1.
|
||||||
|
SVar:TrigScry:DB$ Scry | ScryNum$ 1
|
||||||
|
Oracle:Flying\nWhen Silver Raven enters the battlefield, scry 1.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
Name:Targ Nar, Demon-Fang Gnoll
|
||||||
|
ManaCost:R G
|
||||||
|
Types:Legendary Creature Gnoll
|
||||||
|
PT:2/2
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, attacking creatures get +1/+0 until end of turn.
|
||||||
|
A:AB$ Pump | Cost$ 2 R G | NumAtt$ +X | NumDef$ +Y | SpellDescription$ Double CARDNAME’s power and toughness until end of turn.
|
||||||
|
SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.attacking | NumAtt$ 1
|
||||||
|
SVar:X:Count$CardPower
|
||||||
|
SVar:Y:Count$CardToughness
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
Oracle:Pack tactics — Whenever Targ Nar, Demon-Fang Gnoll attacks, if you attacked with creatures with total power 6 or greater this combat, attacking creatures get +1/+0 until end of turn.\n{2}{R}{G}: Double Targ Nar’s power and toughness until end of turn.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Teleportation Circle
|
||||||
|
ManaCost:3 W
|
||||||
|
Types:Enchantment
|
||||||
|
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ At the beginning of your end step, exile up to one target artifact or creature you control, then return that card to the battlefield under its owner's control.
|
||||||
|
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | ValidTgts$ Artifact.YouCtrl,Creature.YouCtrl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target artifact or creature | SubAbility$ DBReturn
|
||||||
|
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
Oracle:At the beginning of your end step, exile up to one target artifact or creature you control, then return that card to the battlefield under its owner's control.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
Name:The Book of Vile Darkness
|
||||||
|
ManaCost:B B B
|
||||||
|
Types:Legendary Artifact
|
||||||
|
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | CheckSVar$ X | SVarCompare$ GE2 | TriggerDescription$ At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token.
|
||||||
|
SVar:TrigToken:DB$ Token | TokenScript$ b_2_2_zombie
|
||||||
|
SVar:X:PlayerCountPropertyYou$LifeLostThisTurn
|
||||||
|
A:AB$ Token | Cost$ T Exile<1/CARDNAME> Exile<1/Artifact.YouCtrl+namedEye of Vecna> Exile<1/Artifact.YouCtrl+namedHand of Vecna> | RememberCostCards$ True | ImprintTokens$ True | CostDesc$ {T}, Exile CARDNAME and artifacts you control named Eye of Vecna and Hand of Vecna: | TokenScript$ vecna | SubAbility$ DBAnimate | SpellDescription$ Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible. It gains all triggered abilities of the exiled cards.
|
||||||
|
SVar:DBAnimate:DB$ Animate | Defined$ Imprinted | Duration$ Permanent | GainsTriggeredAbilitiesOf$ Remembered
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
DeckHints:Type$Zombie
|
||||||
|
DeckHints:Name$Eye of Vecna|Hand of Vecna
|
||||||
|
Oracle:At the beginning of your end step, if you lost 2 or more life this turn, create a 2/2 black Zombie creature token.\n{T}, Exile The Book of Vile Darkness and artifacts you control named Eye of Vecna and Hand of Vecna: Create Vecna, a legendary 8/8 black Zombie God creature token with indestructible. It gains all triggered abilities of the exiled cards.
|
||||||
12
forge-gui/res/cardsfolder/upcoming/tiger_tribe_hunter.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/tiger_tribe_hunter.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Name:Tiger-Tribe Hunter
|
||||||
|
ManaCost:3 R R
|
||||||
|
Types:Creature Human Barbarian
|
||||||
|
PT:4/4
|
||||||
|
K:Trample
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigImmediate | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, you may sacrifice another creature. If you do, CARDNAME deals damage equal to the sacrificed creature's power to target creature.
|
||||||
|
SVar:TrigImmediate:AB$ ImmediateTrigger | Cost$ Sac<1/Creature.Other/another creature> | RememberObjects$ Sacrificed | Execute$ TrigDamage | TriggerDescription$ If you do, CARDNAME deals damage equal to the sacrificed creature's power to target creature.
|
||||||
|
SVar:TrigDamage:DB$ DealDamage | ConditionDefined$ DelayTriggerRememberedLKI | ValidTgts$ Creature | TgtPrompt$ Select any target | NumDmg$ X
|
||||||
|
SVar:X:TriggerRemembered$CardPower
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
DeckHas:Ability$Sacrifice
|
||||||
|
Oracle:Trample\nPack tactics — Whenever Tiger-Tribe Hunter attacks, if you attacked with creatures with total power 6 or greater this combat, you may sacrifice another creature. If you do, Tiger-Tribe Hunter deals damage equal to the sacrificed creature's power to target creature.
|
||||||
15
forge-gui/res/cardsfolder/upcoming/treasure_chest.txt
Normal file
15
forge-gui/res/cardsfolder/upcoming/treasure_chest.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Name:Treasure Chest
|
||||||
|
ManaCost:3
|
||||||
|
Types:Artifact
|
||||||
|
A:AB$ RollDice | Cost$ Sac<1/CARDNAME> | Sides$ 20 | ResultSubAbilities$ 1:Trapped,2-9:DBToken,10-19:DBGainLife,20:DBChangeZone | SpellDescription$ Roll a d20.
|
||||||
|
SVar:Trapped:DB$ LoseLife | Defined$ You | LifeAmount$ 3 | SpellDescription$ 1 VERT Trapped! — You lose 3 life.
|
||||||
|
SVar:DBToken:DB$ Token | TokenAmount$ 5 | TokenScript$ c_a_treasure_sac | SpellDescription$ 2-9 VERT Create five Treasure tokens.
|
||||||
|
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 | SubAbility$ DBDraw | SpellDescription$ 10-19 VERT You gain 3 life and draw three cards.
|
||||||
|
SVar:DBDraw:DB$ Draw | NumCards$ 3
|
||||||
|
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 1 | Shuffle$ False | RememberChanged$ True | SubAbility$ DBChangeZone1 | SpellDescription$ 20 VERT Search your library for a card. If it’s an artifact card, you may put it onto the battlefield. Otherwise, put that card into your hand. Then shuffle.
|
||||||
|
SVar:DBChangeZone1:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Battlefield | ConditionDefined$ Remembered | ConditionPresent$ Artifact | Optional$ True | ForgetChanged$ True | SubAbility$ DBChangeZone2
|
||||||
|
SVar:DBChangeZone2:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Hand | SubAbility$ DBShuffle
|
||||||
|
SVar:DBShuffle:DB$ Shuffle | Defined$ You | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
DeckHas:Ability$Token & Ability$Sacrifice & Ability$LifeGain
|
||||||
|
Oracle:{4}, Sacrifice Treasure Chest: Roll a d20.\n1 | Trapped! — You lose 3 life.\n2-9 | Create five Treasure tokens.\n10-19 | You gain 3 life and draw three cards.\n20 | Search your library for a card. If it’s an artifact card, you may put it onto the battlefield. Otherwise, put that card into your hand. Then shuffle.
|
||||||
8
forge-gui/res/cardsfolder/upcoming/treasure_vault.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/treasure_vault.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Treasure Vault
|
||||||
|
ManaCost:no cost
|
||||||
|
Types:Artifact Land
|
||||||
|
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
|
||||||
|
A:AB$ Token | Cost$ X X T Sac<1/CARDNAME> | TokenAmount$ X | TokenScript$ c_a_treasure_sac | SpellDescription$ Create X Treasure tokens.
|
||||||
|
SVar:X:Count$xPaid
|
||||||
|
DeckHas:Ability$Token & Ability$Sacrifice
|
||||||
|
Oracle:{T}: Add {C}.\n{X}{X}, {T}, Sacrifice Treasure Vault: Create X Treasure tokens.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Trelasarra, Moon Dancer
|
||||||
|
ManaCost:G W
|
||||||
|
Types:Legendary Creature Elf Cleric
|
||||||
|
PT:2/2
|
||||||
|
T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you gain life, put a +1/+1 counter on CARDNAME and scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.)
|
||||||
|
SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBScry
|
||||||
|
SVar:DBScry:DB$ Scry | ScryNum$ 1
|
||||||
|
DeckHints:Ability$LifeGain
|
||||||
|
DeckHas:Ability$Counters
|
||||||
|
Oracle:Whenever you gain life, put a +1/+1 counter on Trelasarra, Moon Dancer and scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.)
|
||||||
7
forge-gui/res/cardsfolder/upcoming/true_polymorph.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/true_polymorph.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Name:True Polymorph
|
||||||
|
ManaCost:4 U U
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Pump | ValidTgts$ Artifact,Creature | TgtPrompt$ Select target artifact or creature to polymorph | SubAbility$ DBClone | StackDescription$ {c:ThisTargetedCard} | SpellDescription$ Target artifact or creature becomes a copy of another target artifact or creature.
|
||||||
|
SVar:DBClone:DB$ Clone | CloneTarget$ ParentTarget | ValidTgts$ Artifact,Creature | TgtPrompt$ Select another target artifact or creature to copy | TargetUnique$ True | StackDescription$ becomes a copy of {c:ThisTargetedCard}.
|
||||||
|
AI:RemoveDeck:Random
|
||||||
|
Oracle:Target artifact or creature becomes a copy of another target artifact or creature.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Unexpected Windfall
|
||||||
|
ManaCost:2 R R
|
||||||
|
Types:Sorcery
|
||||||
|
A:SP$ Draw | Cost$ 3 R Discard<1/Card/card> | CostDesc$ As an additional cost to cast this spell, discard a card. | NumCards$ 2 | Defined$ You | SubAbility$ DBToken | SpellDescription$ Draw two cards and create two Treasure tokens. (They're artifacts with "{T}, Sacrifice this artifact: Add one mana of any color.")
|
||||||
|
SVar:DBToken:DB$ Token | TokenAmount$ 2 | TokenScript$ c_a_treasure_sac | TokenOwner$ You
|
||||||
|
DeckHas:Ability$Discard
|
||||||
|
DeckHints:Keyword$Madness & Ability$Delirium
|
||||||
|
DeckHas:Ability$Token
|
||||||
|
Oracle:As an additional cost to cast this spell, discard a card.\nDraw two cards and create two Treasure tokens. (They're artifacts with "{T}, Sacrifice this artifact: Add one mana of any color.")
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Werewolf Pack Leader
|
||||||
|
ManaCost:G G
|
||||||
|
Types:Creature Human Werewolf
|
||||||
|
PT:3/3
|
||||||
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, draw a card.
|
||||||
|
A:AB$ Animate | Cost$ 3 G | ValidCard$ Card.Self | Power$ 5 | Toughness$ 3 | Keywords$ Trample | RemoveTypes$ Human | SpellDescription$ Until end of turn, CARDNAME has base power and toughness 5/3, gains trample, and isn't a Human.
|
||||||
|
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1
|
||||||
|
SVar:PackTactics:Count$SumPower_Creature.attacking
|
||||||
|
Oracle:Pack tactics — Whenever Werewolf Pack Leader attacks, if you attacked with creatures with total power 6 or greater this combat, draw a card.\n{3}{G}: Until end of turn, Werewolf Pack Leader has base power and toughness 5/3, gains trample, and isn't a Human.
|
||||||
11
forge-gui/res/cardsfolder/upcoming/westgate_regent.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/westgate_regent.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Name:Westgate Regent
|
||||||
|
ManaCost:3 B B
|
||||||
|
Types:Creature Vampire
|
||||||
|
PT:4/4
|
||||||
|
K:Flying
|
||||||
|
K:Ward:Discard<1/Card>
|
||||||
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigPutCounter | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, put that many +1/+1 counters on it.
|
||||||
|
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ X
|
||||||
|
SVar:X:TriggerCount$DamageAmount
|
||||||
|
DeckHas:Ability$Counters
|
||||||
|
Oracle:Flying\nWard — Discard a card. (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player discards a card.)\nWhenever Westgate Regent deals combat damage to a player, put that many +1/+1 counters on it.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/white_dragon.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/white_dragon.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:White Dragon
|
||||||
|
ManaCost:4 W W
|
||||||
|
Types:Creature Dragon
|
||||||
|
PT:4/4
|
||||||
|
K:Flying
|
||||||
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ Cold Breath — When CARDNAME enters the battlefield, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
|
||||||
|
SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose target creature an opponent controls. | SubAbility$ DBPump
|
||||||
|
SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent
|
||||||
|
SVar:PlayMain1:TRUE
|
||||||
|
Oracle:Flying\nCold Breath — When White Dragon enters the battlefield, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
|
||||||
6
forge-gui/res/cardsfolder/upcoming/wish.txt
Normal file
6
forge-gui/res/cardsfolder/upcoming/wish.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Name:Wish
|
||||||
|
ManaCost:2 R
|
||||||
|
Types:Sorcery
|
||||||
|
A:SP$ Effect | StaticAbilities$ PlaySideboard | SpellDescription$ You may play a card you own from outside the game this turn.
|
||||||
|
SVar:PlaySideboard:Mode$ Continuous | Affected$ Card.YouOwn | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Command | AffectedZone$ Sideboard | Description$ You may play a card you own from outside the game this turn.
|
||||||
|
Oracle:You may play a card you own from outside the game this turn.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/xorn.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/xorn.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Xorn
|
||||||
|
ManaCost:2 R
|
||||||
|
Types:Creature Elemental
|
||||||
|
PT:3/2
|
||||||
|
R:Event$ CreateToken | ValidPlayer$ You | ValidToken$ Treasure | ReplaceWith$ AdditionalToken | Description$ If you would create one or more Treasure tokens, instead create those tokens plus an additional Treasure token.
|
||||||
|
SVar:AdditionalToken:DB$ ReplaceEffect | VarName$ TokenNum | VarValue$ X
|
||||||
|
SVar:X:ReplaceCount$TokenNum/Plus.1
|
||||||
|
DeckNeeds:Type$Token
|
||||||
|
AI:RemoveDeck:Random
|
||||||
|
Oracle:If you would create one or more Treasure tokens, instead create those tokens plus an additional Treasure token.
|
||||||
15
forge-gui/res/cardsfolder/w/war_of_the_spark.txt
Normal file
15
forge-gui/res/cardsfolder/w/war_of_the_spark.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Name:War of the Spark
|
||||||
|
ManaCost:3 B
|
||||||
|
Types:Enchantment Saga
|
||||||
|
K:Saga:3:TrigChangeZone,TrigSac,TrigExile
|
||||||
|
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand,Graveyard | Destination$ Battlefield | ChangeType$ Creature.Zombie+setWAR,Planeswalker.setWAR | DefinedPlayer$ Player | ChangeNum$ 1 | SpellDescription$ Each player may put a planeswalker or Zombie card from War of the Spark from their hand or graveyard onto the battlefield.
|
||||||
|
SVar:TrigSac:DB$ Sacrifice | Defined$ You | Amount$ SacX | SacValid$ Creature,Planeswalker | RememberSacrificed$ True | Optional$ True | SubAbility$ DBEdict | SpellDescription$ Sacrifice any number of creatures and/or planeswalkers. Each opponent sacrifices that many creatures and/or planeswalkers.
|
||||||
|
SVar:DBEdict:DB$ Sacrifice | Defined$ Player.Opponent | SacValid$ Creature,Planeswalker | SacMessage$ Creature,Planeswalker | Amount$ EdictX
|
||||||
|
SVar:TrigExile:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.Bolas,Planeswalker.Bolas | TgtPrompt$ Select up to one target Bolas | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBProliferate | SpellDescription$ Exile up to one target Bolas. Proliferate three times.
|
||||||
|
SVar:DBProliferate:DB$ Proliferate | SubAbility$ DBProliferate2 | SpellDescription$ Proliferate three times.
|
||||||
|
SVar:DBProliferate2:DB$ Proliferate | SubAbility$ DBProliferate3
|
||||||
|
SVar:DBProliferate3:DB$ Proliferate
|
||||||
|
SVar:SacX:Count$Valid Creature.YouCtrl/Plus.SacPlanes
|
||||||
|
SVar:SacPlanes:Count$Valid Planeswalker.YouCtrl
|
||||||
|
SVar:EdictX:Remembered$Amount
|
||||||
|
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Each player may put a planeswalker or Zombie card from War of the Spark from their hand or graveyard onto the battlefield.\nII — Sacrifice any number of creatures and/or planeswalkers. Each opponent sacrifices that many creatures and/or planeswalkers.\nIII — Exile up to one target Bolas. Proliferate three times.
|
||||||
17
forge-gui/res/editions/2019 Heroes of the Realm.txt
Normal file
17
forge-gui/res/editions/2019 Heroes of the Realm.txt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[metadata]
|
||||||
|
Code=HTR19
|
||||||
|
Date=2020-08-01
|
||||||
|
Name=2019 Heroes of the Realm
|
||||||
|
Code2=HTR19
|
||||||
|
MciCode=htr19
|
||||||
|
Type=Funny
|
||||||
|
ScryfallCode=HTR19
|
||||||
|
|
||||||
|
[cards]
|
||||||
|
1 M Collectigull
|
||||||
|
2 M Keeper of the Secret Lair
|
||||||
|
3 M War of the Spark
|
||||||
|
4 M Champions of Archery
|
||||||
|
5 M Myntasha, Honored One
|
||||||
|
6 M The Cinematic Phoenix
|
||||||
|
7 M Fabled Path of Searo Point
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
[metadata]
|
||||||
|
Code=AFC
|
||||||
|
Date=2021-07-23
|
||||||
|
Name=Dungeons & Dragons: Adventures in the Forgotten Realms Commander
|
||||||
|
Type=Commander
|
||||||
|
ScryfallCode=AFC
|
||||||
|
|
||||||
|
[cards]
|
||||||
|
1 M Galea, Kindler of Hope
|
||||||
|
2 M Prosper, Tome-Bound
|
||||||
|
3 M Sefris of the Hidden Ways
|
||||||
|
4 M Vrondiss, Rage of Ancients
|
||||||
|
317 M Galea, Kindler of Hope
|
||||||
|
324 M Prosper, Tome-Bound
|
||||||
|
326 M Sefris of the Hidden Ways
|
||||||
|
328 M Vrondiss, Rage of Ancients
|
||||||
@@ -9,34 +9,54 @@ ScryfallCode=AFR
|
|||||||
|
|
||||||
[cards]
|
[cards]
|
||||||
1 C +2 Mace
|
1 C +2 Mace
|
||||||
|
2 C Arborea Pegasus
|
||||||
|
3 U Blink Dog
|
||||||
|
4 M The Book of Exalted Deeds
|
||||||
5 C Celestial Unicorn
|
5 C Celestial Unicorn
|
||||||
6 U Cleric Class
|
6 U Cleric Class
|
||||||
7 U Cloister Gargoyle
|
7 U Cloister Gargoyle
|
||||||
|
8 R Dancing Sword
|
||||||
9 C Dawnbringer Cleric
|
9 C Dawnbringer Cleric
|
||||||
10 C Delver's Torch
|
10 C Delver's Torch
|
||||||
11 C Devoted Paladin
|
11 C Devoted Paladin
|
||||||
|
12 U Divine Smite
|
||||||
13 U Dragon's Disciple
|
13 U Dragon's Disciple
|
||||||
14 C Dwarfhold Champion
|
14 C Dwarfhold Champion
|
||||||
15 R Flumph
|
15 R Flumph
|
||||||
16 C Gloom Stalker
|
16 C Gloom Stalker
|
||||||
|
17 M Grand Master of Flowers
|
||||||
18 R Guardian of Faith
|
18 R Guardian of Faith
|
||||||
19 C Half-Elf Monk
|
19 C Half-Elf Monk
|
||||||
20 M Icingdeath, Frost Tyrant
|
20 M Icingdeath, Frost Tyrant
|
||||||
|
21 U Ingenious Smith
|
||||||
22 U Keen-Eared Sentry
|
22 U Keen-Eared Sentry
|
||||||
|
23 R Loyal Warhound
|
||||||
24 C Minimus Containment
|
24 C Minimus Containment
|
||||||
|
25 U Monk of the Open Hand
|
||||||
26 U Moon-Blessed Cleric
|
26 U Moon-Blessed Cleric
|
||||||
27 R Nadaar, Selfless Paladin
|
27 R Nadaar, Selfless Paladin
|
||||||
28 R Oswald Fiddlebender
|
28 R Oswald Fiddlebender
|
||||||
|
29 R Paladin Class
|
||||||
|
30 C Paladin's Shield
|
||||||
31 C Planar Ally
|
31 C Planar Ally
|
||||||
|
32 U Plate Armor
|
||||||
33 U Portable Hole
|
33 U Portable Hole
|
||||||
|
34 C Potion of Healing
|
||||||
|
35 C Priest of Ancient Lore
|
||||||
|
36 U Rally Maneuver
|
||||||
37 C Ranger's Hawk
|
37 C Ranger's Hawk
|
||||||
|
38 C Steadfast Paladin
|
||||||
|
39 R Teleportation Circle
|
||||||
40 C Veteran Dungeoneer
|
40 C Veteran Dungeoneer
|
||||||
|
41 U White Dragon
|
||||||
42 C You Hear Something on Watch
|
42 C You Hear Something on Watch
|
||||||
43 C You're Ambushed on the Road
|
43 C You're Ambushed on the Road
|
||||||
|
44 U Aberrant Mind Sorcerer
|
||||||
45 C Air-Cult Elemental
|
45 C Air-Cult Elemental
|
||||||
46 C Arcane Investigator
|
46 C Arcane Investigator
|
||||||
47 C Bar the Gate
|
47 C Bar the Gate
|
||||||
48 R The Blackstaff of Waterdeep
|
48 R The Blackstaff of Waterdeep
|
||||||
|
49 U Blue Dragon
|
||||||
50 C Charmed Sleep
|
50 C Charmed Sleep
|
||||||
51 C Clever Conjurer
|
51 C Clever Conjurer
|
||||||
52 C Contact Other Plane
|
52 C Contact Other Plane
|
||||||
@@ -49,6 +69,9 @@ ScryfallCode=AFR
|
|||||||
59 U Fly
|
59 U Fly
|
||||||
60 R Grazilaxx, Illithid Scholar
|
60 R Grazilaxx, Illithid Scholar
|
||||||
61 U Guild Thief
|
61 U Guild Thief
|
||||||
|
62 M Iymrith, Desert Doom
|
||||||
|
63 R Mind Flayer
|
||||||
|
64 M Mordenkainen
|
||||||
65 C Mordenkainen's Polymorph
|
65 C Mordenkainen's Polymorph
|
||||||
66 C Pixie Guide
|
66 C Pixie Guide
|
||||||
67 U Power of Persuasion
|
67 U Power of Persuasion
|
||||||
@@ -58,45 +81,72 @@ ScryfallCode=AFR
|
|||||||
71 C Secret Door
|
71 C Secret Door
|
||||||
72 C Shocking Grasp
|
72 C Shocking Grasp
|
||||||
73 C Shortcut Seeker
|
73 C Shortcut Seeker
|
||||||
|
74 C Silver Raven
|
||||||
|
75 C Soulknife Spy
|
||||||
|
76 U Split the Party
|
||||||
|
77 U Sudden Insight
|
||||||
78 R Tasha's Hideous Laughter
|
78 R Tasha's Hideous Laughter
|
||||||
|
79 U Trickster's Talisman
|
||||||
|
80 R True Polymorph
|
||||||
|
81 U Wizard Class
|
||||||
82 R Wizard's Spellbook
|
82 R Wizard's Spellbook
|
||||||
83 C You Come to a River
|
83 C You Come to a River
|
||||||
84 C You Find the Villains' Lair
|
84 C You Find the Villains' Lair
|
||||||
85 C You See a Guard Approach
|
85 C You See a Guard Approach
|
||||||
86 R Yuan-Ti Malison
|
86 R Yuan-Ti Malison
|
||||||
|
87 M Acererak the Archlich
|
||||||
|
88 R Asmodeus the Archfiend
|
||||||
89 C Baleful Beholder
|
89 C Baleful Beholder
|
||||||
90 U Black Dragon
|
90 U Black Dragon
|
||||||
91 M The Book of Vile Darkness
|
91 M The Book of Vile Darkness
|
||||||
|
92 U Check for Traps
|
||||||
93 C Clattering Skeletons
|
93 C Clattering Skeletons
|
||||||
|
94 C Deadly Dispute
|
||||||
95 U Death-Priest of Myrkul
|
95 U Death-Priest of Myrkul
|
||||||
|
96 U Demogorgon's Clutches
|
||||||
97 C Devour Intellect
|
97 C Devour Intellect
|
||||||
98 U Drider
|
98 U Drider
|
||||||
99 U Dungeon Crawler
|
99 U Dungeon Crawler
|
||||||
100 M Ebondeath, Dracolich
|
100 M Ebondeath, Dracolich
|
||||||
|
101 C Eyes of the Beholder
|
||||||
102 C Fates' Reversal
|
102 C Fates' Reversal
|
||||||
103 C Feign Death
|
103 C Feign Death
|
||||||
|
104 R Forsworn Paladin
|
||||||
105 R Gelatinous Cube
|
105 R Gelatinous Cube
|
||||||
|
106 C Grim Bounty
|
||||||
107 U Grim Wanderer
|
107 U Grim Wanderer
|
||||||
108 C Herald of Hadar
|
108 C Herald of Hadar
|
||||||
109 C Hired Hexblade
|
109 C Hired Hexblade
|
||||||
|
110 C Hoard Robber
|
||||||
111 U Lightfoot Rogue
|
111 U Lightfoot Rogue
|
||||||
112 M Lolth, Spider Queen
|
112 M Lolth, Spider Queen
|
||||||
113 C Manticore
|
113 C Manticore
|
||||||
114 U Power Word Kill
|
114 U Power Word Kill
|
||||||
115 C Precipitous Drop
|
115 C Precipitous Drop
|
||||||
|
116 U Ray of Enfeeblement
|
||||||
|
117 U Reaper's Talisman
|
||||||
|
118 C Sepulcher Ghoul
|
||||||
119 C Shambling Ghast
|
119 C Shambling Ghast
|
||||||
120 U Skullport Merchant
|
120 U Skullport Merchant
|
||||||
121 R Sphere of Annihilation
|
121 R Sphere of Annihilation
|
||||||
|
122 C Thieves' Tools
|
||||||
|
123 C Vampire Spawn
|
||||||
124 R Vorpal Sword
|
124 R Vorpal Sword
|
||||||
125 U Warlock Class
|
125 U Warlock Class
|
||||||
|
126 R Westgate Regent
|
||||||
127 R Wight
|
127 R Wight
|
||||||
128 C Yuan-Ti Fang-Blade
|
128 C Yuan-Ti Fang-Blade
|
||||||
129 C Zombie Ogre
|
129 C Zombie Ogre
|
||||||
|
130 C Armory Veteran
|
||||||
|
131 U Barbarian Class
|
||||||
132 U Battle Cry Goblin
|
132 U Battle Cry Goblin
|
||||||
|
133 C Boots of Speed
|
||||||
134 C Brazen Dwarf
|
134 C Brazen Dwarf
|
||||||
|
135 U Burning Hands
|
||||||
136 U Chaos Channeler
|
136 U Chaos Channeler
|
||||||
137 U Critical Hit
|
137 U Critical Hit
|
||||||
138 R Delina, Wild Mage
|
138 R Delina, Wild Mage
|
||||||
|
139 C Dragon's Fire
|
||||||
140 C Dueling Rapier
|
140 C Dueling Rapier
|
||||||
141 C Earth-Cult Elemental
|
141 C Earth-Cult Elemental
|
||||||
142 C Farideh's Fireball
|
142 C Farideh's Fireball
|
||||||
@@ -104,20 +154,27 @@ ScryfallCode=AFR
|
|||||||
144 C Goblin Javelineer
|
144 C Goblin Javelineer
|
||||||
145 U Goblin Morningstar
|
145 U Goblin Morningstar
|
||||||
146 C Hoarding Ogre
|
146 C Hoarding Ogre
|
||||||
|
147 R Hobgoblin Bandit Lord
|
||||||
148 C Hobgoblin Captain
|
148 C Hobgoblin Captain
|
||||||
149 U Hulking Bugbear
|
149 U Hulking Bugbear
|
||||||
150 C Improvised Weaponry
|
150 C Improvised Weaponry
|
||||||
|
151 M Inferno of the Star Mounts
|
||||||
152 C Jaded Sell-Sword
|
152 C Jaded Sell-Sword
|
||||||
153 C Kick in the Door
|
153 C Kick in the Door
|
||||||
|
154 U Magic Missile
|
||||||
155 R Meteor Swarm
|
155 R Meteor Swarm
|
||||||
156 R Minion of the Mighty
|
156 R Minion of the Mighty
|
||||||
157 R Orb of Dragonkind
|
157 R Orb of Dragonkind
|
||||||
158 C Plundering Barbarian
|
158 C Plundering Barbarian
|
||||||
|
159 C Price of Loyalty
|
||||||
160 U Red Dragon
|
160 U Red Dragon
|
||||||
|
161 U Rust Monster
|
||||||
162 C Swarming Goblins
|
162 C Swarming Goblins
|
||||||
163 U Tiger-Tribe Hunter
|
163 U Tiger-Tribe Hunter
|
||||||
|
164 C Unexpected Windfall
|
||||||
165 C Valor Singer
|
165 C Valor Singer
|
||||||
166 R Wish
|
166 R Wish
|
||||||
|
167 R Xorn
|
||||||
168 C You Come to the Gnoll Camp
|
168 C You Come to the Gnoll Camp
|
||||||
169 U You Find Some Prisoners
|
169 U You Find Some Prisoners
|
||||||
170 U You See a Pair of Goblins
|
170 U You See a Pair of Goblins
|
||||||
@@ -127,28 +184,42 @@ ScryfallCode=AFR
|
|||||||
174 C Bull's Strength
|
174 C Bull's Strength
|
||||||
175 U Choose Your Weapon
|
175 U Choose Your Weapon
|
||||||
176 R Circle of Dreams Druid
|
176 R Circle of Dreams Druid
|
||||||
|
177 C Circle of the Moon Druid
|
||||||
|
178 C Compelled Duel
|
||||||
|
179 C Dire Wolf Prowler
|
||||||
|
180 U Druid Class
|
||||||
181 M Ellywick Tumblestrum
|
181 M Ellywick Tumblestrum
|
||||||
182 C Elturgard Ranger
|
182 C Elturgard Ranger
|
||||||
183 C Find the Path
|
183 C Find the Path
|
||||||
184 R Froghemoth
|
184 R Froghemoth
|
||||||
185 C Gnoll Hunter
|
185 C Gnoll Hunter
|
||||||
186 U Green Dragon
|
186 U Green Dragon
|
||||||
186 U Hunter's Mark
|
|
||||||
187 C Hill Giant Herdgorger
|
187 C Hill Giant Herdgorger
|
||||||
|
188 U Hunter's Mark
|
||||||
189 C Inspiring Bard
|
189 C Inspiring Bard
|
||||||
190 R Instrument of the Bards
|
190 R Instrument of the Bards
|
||||||
191 U Intrepid Outlander
|
191 U Intrepid Outlander
|
||||||
192 U Loathsome Troll
|
192 U Loathsome Troll
|
||||||
|
193 R Long Rest
|
||||||
194 U Lurking Roper
|
194 U Lurking Roper
|
||||||
|
195 C Neverwinter Dryad
|
||||||
196 R Ochre Jelly
|
196 R Ochre Jelly
|
||||||
|
197 M Old Gnawbone
|
||||||
198 C Owlbear
|
198 C Owlbear
|
||||||
|
199 C Plummet
|
||||||
200 U Prosperous Innkeeper
|
200 U Prosperous Innkeeper
|
||||||
201 U Purple Worm
|
201 U Purple Worm
|
||||||
|
202 R Ranger Class
|
||||||
|
203 C Ranger's Longbow
|
||||||
|
204 C Scaled Herbalist
|
||||||
|
205 C Spoils of the Hunt
|
||||||
206 C Sylvan Shepherd
|
206 C Sylvan Shepherd
|
||||||
207 M The Tarrasque
|
207 M The Tarrasque
|
||||||
|
208 C Underdark Basilisk
|
||||||
209 R Varis, Silverymoon Ranger
|
209 R Varis, Silverymoon Ranger
|
||||||
210 U Wandering Troubadour
|
210 U Wandering Troubadour
|
||||||
211 R Werewolf Pack Leader
|
211 R Werewolf Pack Leader
|
||||||
|
212 U Wild Shape
|
||||||
213 C You Find a Cursed Idol
|
213 C You Find a Cursed Idol
|
||||||
214 U You Happen On a Glade
|
214 U You Happen On a Glade
|
||||||
215 U You Meet in a Tavern
|
215 U You Meet in a Tavern
|
||||||
@@ -158,12 +229,18 @@ ScryfallCode=AFR
|
|||||||
219 U Bruenor Battlehammer
|
219 U Bruenor Battlehammer
|
||||||
220 R Drizzt Do'Urden
|
220 R Drizzt Do'Urden
|
||||||
221 U Farideh, Devil's Chosen
|
221 U Farideh, Devil's Chosen
|
||||||
|
222 R Fighter Class
|
||||||
223 U Gretchen Titchwillow
|
223 U Gretchen Titchwillow
|
||||||
224 U Hama Pashar, Ruin Seeker
|
224 U Hama Pashar, Ruin Seeker
|
||||||
225 U Kalain, Reclusive Painter
|
225 U Kalain, Reclusive Painter
|
||||||
226 U Krydle of Baldur's Gate
|
226 U Krydle of Baldur's Gate
|
||||||
|
227 M Minsc, Beloved Ranger
|
||||||
|
228 R Monk Class
|
||||||
229 R Orcus, Prince of Undeath
|
229 R Orcus, Prince of Undeath
|
||||||
|
230 R Rogue Class
|
||||||
231 U Shessra, Death's Whisper
|
231 U Shessra, Death's Whisper
|
||||||
|
232 R Skeletal Swarming
|
||||||
|
233 R Sorcerer Class
|
||||||
234 U Targ Nar, Demon-Fang Gnoll
|
234 U Targ Nar, Demon-Fang Gnoll
|
||||||
235 M Tiamat
|
235 M Tiamat
|
||||||
236 U Trelasarra, Moon Dancer
|
236 U Trelasarra, Moon Dancer
|
||||||
@@ -173,8 +250,14 @@ ScryfallCode=AFR
|
|||||||
240 U Bag of Holding
|
240 U Bag of Holding
|
||||||
241 M The Deck of Many Things
|
241 M The Deck of Many Things
|
||||||
242 U Dungeon Map
|
242 U Dungeon Map
|
||||||
|
243 R Eye of Vecna
|
||||||
244 U Fifty Feet of Rope
|
244 U Fifty Feet of Rope
|
||||||
|
245 C Greataxe
|
||||||
|
246 R Hand of Vecna
|
||||||
|
247 U Iron Golem
|
||||||
|
248 C Leather Armor
|
||||||
249 C Mimic
|
249 C Mimic
|
||||||
|
250 C Spare Dagger
|
||||||
251 C Spiked Pit Trap
|
251 C Spiked Pit Trap
|
||||||
252 R Treasure Chest
|
252 R Treasure Chest
|
||||||
253 R Cave of the Frost Dragon
|
253 R Cave of the Frost Dragon
|
||||||
@@ -183,36 +266,52 @@ ScryfallCode=AFR
|
|||||||
256 C Evolving Wilds
|
256 C Evolving Wilds
|
||||||
257 R Hall of Storm Giants
|
257 R Hall of Storm Giants
|
||||||
258 R Hive of the Eye Tyrant
|
258 R Hive of the Eye Tyrant
|
||||||
262 L Plains
|
259 R Lair of the Hydra
|
||||||
263 L Plains
|
260 U Temple of the Dragon Queen
|
||||||
264 L Plains
|
261 R Treasure Vault
|
||||||
265 L Plains
|
262 C Plains
|
||||||
266 L Island
|
263 C Plains
|
||||||
267 L Island
|
264 C Plains
|
||||||
268 L Island
|
265 C Plains
|
||||||
269 L Island
|
266 C Island
|
||||||
270 L Swamp
|
267 C Island
|
||||||
271 L Swamp
|
268 C Island
|
||||||
272 L Swamp
|
269 C Island
|
||||||
273 L Swamp
|
270 C Swamp
|
||||||
274 L Mountain
|
271 C Swamp
|
||||||
275 L Mountain
|
272 C Swamp
|
||||||
276 L Mountain
|
273 C Swamp
|
||||||
277 L Mountain
|
274 C Mountain
|
||||||
278 L Forest
|
275 C Mountain
|
||||||
279 L Forest
|
276 C Mountain
|
||||||
280 L Forest
|
277 C Mountain
|
||||||
281 L Forest
|
278 C Forest
|
||||||
|
279 C Forest
|
||||||
|
280 C Forest
|
||||||
|
281 C Forest
|
||||||
|
|
||||||
|
[borderless]
|
||||||
|
282 M Grand Master of Flowers
|
||||||
|
283 M Mordenkainen
|
||||||
284 M Lolth, Spider Queen
|
284 M Lolth, Spider Queen
|
||||||
285 M Zariel, Archduke of Avernus
|
285 M Zariel, Archduke of Avernus
|
||||||
286 M Ellywick Tumblestrum
|
286 M Ellywick Tumblestrum
|
||||||
287 M Icingdeath, Frost Tyrant
|
287 M Icingdeath, Frost Tyrant
|
||||||
|
288 U White Dragon
|
||||||
|
289 U Blue Dragon
|
||||||
|
290 M Iymrith, Desert Doom
|
||||||
291 U Black Dragon
|
291 U Black Dragon
|
||||||
292 M Ebondeath, Dracolich
|
292 M Ebondeath, Dracolich
|
||||||
|
293 M Inferno of the Star Mounts
|
||||||
294 U Red Dragon
|
294 U Red Dragon
|
||||||
295 U Green Dragon
|
295 U Green Dragon
|
||||||
|
296 M Old Gnawbone
|
||||||
297 R Adult Gold Dragon
|
297 R Adult Gold Dragon
|
||||||
298 M Tiamat
|
298 M Tiamat
|
||||||
|
|
||||||
|
[showcase]
|
||||||
|
299 C Arborea Pegasus
|
||||||
|
300 U Blink Dog
|
||||||
301 C Celestial Unicorn
|
301 C Celestial Unicorn
|
||||||
302 U Cloister Gargoyle
|
302 U Cloister Gargoyle
|
||||||
303 R Nadaar, Selfless Paladin
|
303 R Nadaar, Selfless Paladin
|
||||||
@@ -220,26 +319,33 @@ ScryfallCode=AFR
|
|||||||
305 U Displacer Beast
|
305 U Displacer Beast
|
||||||
306 C Djinni Windseer
|
306 C Djinni Windseer
|
||||||
307 R Dragon Turtle
|
307 R Dragon Turtle
|
||||||
|
308 R Mind Flayer
|
||||||
309 C Pixie Guide
|
309 C Pixie Guide
|
||||||
310 C Rimeshield Frost Giant
|
310 C Rimeshield Frost Giant
|
||||||
311 C Baleful Beholder
|
311 C Baleful Beholder
|
||||||
312 C Clattering Skeletons
|
312 C Clattering Skeletons
|
||||||
313 R Gelatinous Cube
|
313 R Gelatinous Cube
|
||||||
314 C Manticore
|
314 C Manticore
|
||||||
|
315 R Westgate Regent
|
||||||
316 R Wight
|
316 R Wight
|
||||||
317 R Delina, Wild Mage
|
317 R Delina, Wild Mage
|
||||||
318 C Goblin Javelineer
|
318 C Goblin Javelineer
|
||||||
319 U Hulking Bugbear
|
319 U Hulking Bugbear
|
||||||
320 R Minion of the Mighty
|
320 R Minion of the Mighty
|
||||||
|
321 U Rust Monster
|
||||||
|
322 R Xorn
|
||||||
323 R Zalto, Fire Giant Duke
|
323 R Zalto, Fire Giant Duke
|
||||||
324 C Bulette
|
324 C Bulette
|
||||||
|
325 C Dire Wolf Prowler
|
||||||
326 C Gnoll Hunter
|
326 C Gnoll Hunter
|
||||||
327 U Loathsome Troll
|
327 U Loathsome Troll
|
||||||
328 U Lurking Roper
|
328 U Lurking Roper
|
||||||
|
329 C Neverwinter Dryad
|
||||||
330 R Ochre Jelly
|
330 R Ochre Jelly
|
||||||
331 C Owlbear
|
331 C Owlbear
|
||||||
332 U Purple Worm
|
332 U Purple Worm
|
||||||
333 M The Tarrasque
|
333 M The Tarrasque
|
||||||
|
334 C Underdark Basilisk
|
||||||
335 R Varis, Silverymoon Ranger
|
335 R Varis, Silverymoon Ranger
|
||||||
336 U Barrowin of Clan Undurr
|
336 U Barrowin of Clan Undurr
|
||||||
337 U Bruenor Battlehammer
|
337 U Bruenor Battlehammer
|
||||||
@@ -249,9 +355,11 @@ ScryfallCode=AFR
|
|||||||
341 U Hama Pashar, Ruin Seeker
|
341 U Hama Pashar, Ruin Seeker
|
||||||
342 U Kalain, Reclusive Painter
|
342 U Kalain, Reclusive Painter
|
||||||
343 U Krydle of Baldur's Gate
|
343 U Krydle of Baldur's Gate
|
||||||
|
344 M Minsc, Beloved Ranger
|
||||||
345 U Shessra, Death's Whisper
|
345 U Shessra, Death's Whisper
|
||||||
346 U Trelasarra, Moon Dancer
|
346 U Trelasarra, Moon Dancer
|
||||||
347 R Volo, Guide to Monsters
|
347 R Volo, Guide to Monsters
|
||||||
|
348 U Iron Golem
|
||||||
349 C Mimic
|
349 C Mimic
|
||||||
350 R Cave of the Frost Dragon
|
350 R Cave of the Frost Dragon
|
||||||
351 R Den of the Bugbear
|
351 R Den of the Bugbear
|
||||||
@@ -259,35 +367,58 @@ ScryfallCode=AFR
|
|||||||
353 C Evolving Wilds
|
353 C Evolving Wilds
|
||||||
354 R Hall of Storm Giants
|
354 R Hall of Storm Giants
|
||||||
355 R Hive of the Eye Tyrant
|
355 R Hive of the Eye Tyrant
|
||||||
|
356 R Lair of the Hydra
|
||||||
|
357 U Temple of the Dragon Queen
|
||||||
|
358 R Treasure Vault
|
||||||
|
|
||||||
|
[extended art]
|
||||||
|
359 M The Book of Exalted Deeds
|
||||||
|
360 R Dancing Sword
|
||||||
361 R Flumph
|
361 R Flumph
|
||||||
362 R Guardian of Faith
|
362 R Guardian of Faith
|
||||||
|
363 R Loyal Warhound
|
||||||
|
364 R Teleportation Circle
|
||||||
365 R The Blackstaff of Waterdeep
|
365 R The Blackstaff of Waterdeep
|
||||||
366 M Demilich
|
366 M Demilich
|
||||||
367 R Grazilaxx, Illithid Scholar
|
367 R Grazilaxx, Illithid Scholar
|
||||||
368 R Tasha's Hideous Laughter
|
368 R Tasha's Hideous Laughter
|
||||||
|
369 R True Polymorph
|
||||||
370 R Wizard's Spellbook
|
370 R Wizard's Spellbook
|
||||||
371 R Yuan-Ti Malison
|
371 R Yuan-Ti Malison
|
||||||
|
372 M Acererak the Archlich
|
||||||
|
373 R Asmodeus the Archfiend
|
||||||
374 M The Book of Vile Darkness
|
374 M The Book of Vile Darkness
|
||||||
|
375 R Forsworn Paladin
|
||||||
376 R Sphere of Annihilation
|
376 R Sphere of Annihilation
|
||||||
377 R Vorpal Sword
|
377 R Vorpal Sword
|
||||||
378 M Flameskull
|
378 M Flameskull
|
||||||
|
379 R Hobgoblin Bandit Lord
|
||||||
380 R Meteor Swarm
|
380 R Meteor Swarm
|
||||||
381 R Orb of Dragonkind
|
381 R Orb of Dragonkind
|
||||||
382 R Wish
|
382 R Wish
|
||||||
383 R Circle of Dreams Druid
|
383 R Circle of Dreams Druid
|
||||||
384 R Froghemoth
|
384 R Froghemoth
|
||||||
385 R Instrument of the Bards
|
385 R Instrument of the Bards
|
||||||
|
386 R Long Rest
|
||||||
387 R Werewolf Pack Leader
|
387 R Werewolf Pack Leader
|
||||||
388 R Orcus, Prince of Undeath
|
388 R Orcus, Prince of Undeath
|
||||||
|
389 R Skeletal Swarming
|
||||||
390 R Triumphant Adventurer
|
390 R Triumphant Adventurer
|
||||||
391 M Xanathar, Guild Kingpin
|
391 M Xanathar, Guild Kingpin
|
||||||
392 M The Deck of Many Things
|
392 M The Deck of Many Things
|
||||||
|
393 R Eye of Vecna
|
||||||
|
394 R Hand of Vecna
|
||||||
395 R Treasure Chest
|
395 R Treasure Chest
|
||||||
|
|
||||||
|
[buy a box]
|
||||||
396 R Vorpal Sword
|
396 R Vorpal Sword
|
||||||
|
|
||||||
|
[promo]
|
||||||
397 R Treasure Chest
|
397 R Treasure Chest
|
||||||
398 U Portable Hole
|
398 U Portable Hole
|
||||||
399 C You Find the Villains' Lair
|
399 C You Find the Villains' Lair
|
||||||
400 U Power Word Kill
|
400 U Power Word Kill
|
||||||
|
401 U Magic Missile
|
||||||
402 U Prosperous Innkeeper
|
402 U Prosperous Innkeeper
|
||||||
|
|
||||||
[dungeons]
|
[dungeons]
|
||||||
|
|||||||
@@ -887,7 +887,7 @@ lblSet=Auflage
|
|||||||
#Set word has different meanings in other languages
|
#Set word has different meanings in other languages
|
||||||
lblDefault=Standard
|
lblDefault=Standard
|
||||||
lblType=Typ
|
lblType=Typ
|
||||||
lblPlaneswalkerDeckSort=Planeswalker Deck
|
lblPlaneswalkerDeckSort=Planeswalker-Deck
|
||||||
lblRarity=Seltenheit
|
lblRarity=Seltenheit
|
||||||
lblConvertToFoil=Foil
|
lblConvertToFoil=Foil
|
||||||
lblMulticolor=Mehrfarbig
|
lblMulticolor=Mehrfarbig
|
||||||
@@ -904,6 +904,7 @@ lblCard=Karte
|
|||||||
lblFormat=Format
|
lblFormat=Format
|
||||||
lblFormats=Formate
|
lblFormats=Formate
|
||||||
lblQuestWorld=Quest-Welt
|
lblQuestWorld=Quest-Welt
|
||||||
|
lblBlock=Block
|
||||||
lblSets=Sets
|
lblSets=Sets
|
||||||
lblTypes=Typen
|
lblTypes=Typen
|
||||||
lblConvertedManaCosts=umgewandelte Manakosten
|
lblConvertedManaCosts=umgewandelte Manakosten
|
||||||
@@ -2558,6 +2559,8 @@ lblLibraryNCards=Bibliothek ({0})
|
|||||||
lblExileNCards=Exil ({0})
|
lblExileNCards=Exil ({0})
|
||||||
lblFlashbackNCards=Rückblende-Karten ({0})
|
lblFlashbackNCards=Rückblende-Karten ({0})
|
||||||
lblCommandZoneNCards=Komandozone ({0})
|
lblCommandZoneNCards=Komandozone ({0})
|
||||||
|
lblAnteZoneNCards=Ante zone ({0})
|
||||||
|
lblSideboardNCards=Sideboard ({0})
|
||||||
lblWhiteManaOfN=Weißes Mana ({0})
|
lblWhiteManaOfN=Weißes Mana ({0})
|
||||||
lblBlueManaOfN=Blaues Mana ({0})
|
lblBlueManaOfN=Blaues Mana ({0})
|
||||||
lblBlackManaOfN=Schwarzes Mana ({0})
|
lblBlackManaOfN=Schwarzes Mana ({0})
|
||||||
|
|||||||
@@ -2558,6 +2558,8 @@ lblLibraryNCards=Library ({0})
|
|||||||
lblExileNCards=Exile ({0})
|
lblExileNCards=Exile ({0})
|
||||||
lblFlashbackNCards=Flashback cards ({0})
|
lblFlashbackNCards=Flashback cards ({0})
|
||||||
lblCommandZoneNCards=Command zone ({0})
|
lblCommandZoneNCards=Command zone ({0})
|
||||||
|
lblAnteZoneNCards=Ante zone ({0})
|
||||||
|
lblSideboardNCards=Sideboard ({0})
|
||||||
lblWhiteManaOfN=White mana ({0})
|
lblWhiteManaOfN=White mana ({0})
|
||||||
lblBlueManaOfN=Blue mana ({0})
|
lblBlueManaOfN=Blue mana ({0})
|
||||||
lblBlackManaOfN=Black mana ({0})
|
lblBlackManaOfN=Black mana ({0})
|
||||||
|
|||||||
@@ -2557,6 +2557,8 @@ lblLibraryNCards=Biblioteca ({0})
|
|||||||
lblExileNCards=Exilio ({0})
|
lblExileNCards=Exilio ({0})
|
||||||
lblFlashbackNCards=Cartas con retrospectiva ({0})
|
lblFlashbackNCards=Cartas con retrospectiva ({0})
|
||||||
lblCommandZoneNCards=Zona de comando ({0})
|
lblCommandZoneNCards=Zona de comando ({0})
|
||||||
|
lblAnteZoneNCards=Ante zone ({0})
|
||||||
|
lblSideboardNCards=Sideboard ({0})
|
||||||
lblWhiteManaOfN=Maná blanco ({0})
|
lblWhiteManaOfN=Maná blanco ({0})
|
||||||
lblBlueManaOfN=Maná azul ({0})
|
lblBlueManaOfN=Maná azul ({0})
|
||||||
lblBlackManaOfN=Maná negro ({0})
|
lblBlackManaOfN=Maná negro ({0})
|
||||||
|
|||||||
@@ -2557,6 +2557,8 @@ lblLibraryNCards=Grimorio ({0})
|
|||||||
lblExileNCards=Esilio ({0})
|
lblExileNCards=Esilio ({0})
|
||||||
lblFlashbackNCards=Carte Flashback ({0})
|
lblFlashbackNCards=Carte Flashback ({0})
|
||||||
lblCommandZoneNCards=Zona di Comando ({0})
|
lblCommandZoneNCards=Zona di Comando ({0})
|
||||||
|
lblAnteZoneNCards=Ante zone ({0})
|
||||||
|
lblSideboardNCards=Sideboard ({0})
|
||||||
lblWhiteManaOfN=Mana Bianco ({0})
|
lblWhiteManaOfN=Mana Bianco ({0})
|
||||||
lblBlueManaOfN=Mana Blu ({0})
|
lblBlueManaOfN=Mana Blu ({0})
|
||||||
lblBlackManaOfN=Mana Nero ({0})
|
lblBlackManaOfN=Mana Nero ({0})
|
||||||
|
|||||||
@@ -2558,6 +2558,8 @@ lblLibraryNCards=ライブラリー ({0})
|
|||||||
lblExileNCards=追放 ({0})
|
lblExileNCards=追放 ({0})
|
||||||
lblFlashbackNCards=フラッシュバックカード ({0})
|
lblFlashbackNCards=フラッシュバックカード ({0})
|
||||||
lblCommandZoneNCards=統率領域 ({0})
|
lblCommandZoneNCards=統率領域 ({0})
|
||||||
|
lblAnteZoneNCards=アンティ領域 ({0})
|
||||||
|
lblSideboardNCards=サイドボード ({0})
|
||||||
lblWhiteManaOfN=白マナ ({0})
|
lblWhiteManaOfN=白マナ ({0})
|
||||||
lblBlueManaOfN=青マナ ({0})
|
lblBlueManaOfN=青マナ ({0})
|
||||||
lblBlackManaOfN=黒マナ ({0})
|
lblBlackManaOfN=黒マナ ({0})
|
||||||
|
|||||||
@@ -2558,6 +2558,8 @@ lblLibraryNCards=牌库 ({0})
|
|||||||
lblExileNCards=放逐区 ({0})
|
lblExileNCards=放逐区 ({0})
|
||||||
lblFlashbackNCards=可返照 ({0})
|
lblFlashbackNCards=可返照 ({0})
|
||||||
lblCommandZoneNCards=指挥官区 ({0})
|
lblCommandZoneNCards=指挥官区 ({0})
|
||||||
|
lblAnteZoneNCards=Ante zone ({0})
|
||||||
|
lblSideboardNCards=Sideboard ({0})
|
||||||
lblWhiteManaOfN=白色法术力 ({0})
|
lblWhiteManaOfN=白色法术力 ({0})
|
||||||
lblBlueManaOfN=蓝色法术力 ({0})
|
lblBlueManaOfN=蓝色法术力 ({0})
|
||||||
lblBlackManaOfN=黑色法术力 ({0})
|
lblBlackManaOfN=黑色法术力 ({0})
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ Gamer:Gamers
|
|||||||
Gargoyle:Gargoyles
|
Gargoyle:Gargoyles
|
||||||
Germ:Germs
|
Germ:Germs
|
||||||
Giant:Giants
|
Giant:Giants
|
||||||
|
Gnoll:Gnolls
|
||||||
Gnome:Gnomes
|
Gnome:Gnomes
|
||||||
Goat:Goats
|
Goat:Goats
|
||||||
Goblin:Goblins
|
Goblin:Goblins
|
||||||
@@ -113,6 +114,7 @@ Gremlin:Gremlins
|
|||||||
Griffin:Griffins
|
Griffin:Griffins
|
||||||
Hag:Hags
|
Hag:Hags
|
||||||
Halfling:Halflings
|
Halfling:Halflings
|
||||||
|
Hamster:Hamsters
|
||||||
Harpy:Harpies
|
Harpy:Harpies
|
||||||
Hellion:Hellions
|
Hellion:Hellions
|
||||||
Hippo:Hippos
|
Hippo:Hippos
|
||||||
@@ -314,6 +316,7 @@ Angrath
|
|||||||
Arlinn
|
Arlinn
|
||||||
Ashiok
|
Ashiok
|
||||||
B.O.B.
|
B.O.B.
|
||||||
|
Bahamut
|
||||||
Basri
|
Basri
|
||||||
Bolas
|
Bolas
|
||||||
Calix
|
Calix
|
||||||
@@ -347,6 +350,7 @@ Koth
|
|||||||
Liliana
|
Liliana
|
||||||
Lolth
|
Lolth
|
||||||
Lukka
|
Lukka
|
||||||
|
Mordenkainen
|
||||||
Nahiri
|
Nahiri
|
||||||
Narset
|
Narset
|
||||||
Niko
|
Niko
|
||||||
@@ -378,3 +382,4 @@ Wrenn
|
|||||||
Xenagos
|
Xenagos
|
||||||
Yanggu
|
Yanggu
|
||||||
Yanling
|
Yanling
|
||||||
|
Zariel
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 328 KiB After Width: | Height: | Size: 306 KiB |
8
forge-gui/res/tokenscripts/boo.txt
Normal file
8
forge-gui/res/tokenscripts/boo.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Boo
|
||||||
|
ManaCost:no cost
|
||||||
|
Types:Legendary Creature Hamster
|
||||||
|
Colors:red
|
||||||
|
PT:1/1
|
||||||
|
K:Trample
|
||||||
|
K:Haste
|
||||||
|
Oracle:Trample, haste
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Dog Illusion
|
||||||
|
ManaCost:no cost
|
||||||
|
Types:Creature Dog Illusion
|
||||||
|
Colors:blue
|
||||||
|
PT:*/*
|
||||||
|
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ This creature's power and toughness are each equal to twice the number of cards in your hand.
|
||||||
|
SVar:X:Count$InYourHand/Times.2
|
||||||
|
Oracle:This creature's power and toughness are each equal to twice the number of cards in your hand.
|
||||||
7
forge-gui/res/tokenscripts/vecna.txt
Normal file
7
forge-gui/res/tokenscripts/vecna.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Vecna
|
||||||
|
ManaCost:no cost
|
||||||
|
Types:Legendary Creature Zombie God
|
||||||
|
Colors:black
|
||||||
|
PT:8/8
|
||||||
|
K:Indestructible
|
||||||
|
Oracle:Indestructible
|
||||||
@@ -86,7 +86,7 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
|||||||
UI_IMAGE_CACHE_MAXIMUM("400"),
|
UI_IMAGE_CACHE_MAXIMUM("400"),
|
||||||
UI_OVERLAY_FOIL_EFFECT ("true"),
|
UI_OVERLAY_FOIL_EFFECT ("true"),
|
||||||
UI_HIDE_REMINDER_TEXT ("false"),
|
UI_HIDE_REMINDER_TEXT ("false"),
|
||||||
UI_SR_OPTIMIZE ("false"),
|
UI_SR_OPTIMIZE ("false"),
|
||||||
UI_OPEN_PACKS_INDIV ("false"),
|
UI_OPEN_PACKS_INDIV ("false"),
|
||||||
UI_STACK_CREATURES ("false"),
|
UI_STACK_CREATURES ("false"),
|
||||||
UI_UPLOAD_DRAFT ("false"),
|
UI_UPLOAD_DRAFT ("false"),
|
||||||
@@ -238,12 +238,18 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
|||||||
ZONE_LOC_HUMAN_GRAVEYARD(""),
|
ZONE_LOC_HUMAN_GRAVEYARD(""),
|
||||||
ZONE_LOC_HUMAN_EXILE(""),
|
ZONE_LOC_HUMAN_EXILE(""),
|
||||||
ZONE_LOC_HUMAN_FLASHBACK(""),
|
ZONE_LOC_HUMAN_FLASHBACK(""),
|
||||||
|
ZONE_LOC_HUMAN_COMMAND(""),
|
||||||
|
ZONE_LOC_HUMAN_ANTE(""),
|
||||||
|
ZONE_LOC_HUMAN_SIDEBOARD(""),
|
||||||
|
|
||||||
ZONE_LOC_AI_HAND(""),
|
ZONE_LOC_AI_HAND(""),
|
||||||
ZONE_LOC_AI_LIBRARY(""),
|
ZONE_LOC_AI_LIBRARY(""),
|
||||||
ZONE_LOC_AI_GRAVEYARD(""),
|
ZONE_LOC_AI_GRAVEYARD(""),
|
||||||
ZONE_LOC_AI_EXILE(""),
|
ZONE_LOC_AI_EXILE(""),
|
||||||
ZONE_LOC_AI_FLASHBACK(""),
|
ZONE_LOC_AI_FLASHBACK(""),
|
||||||
|
ZONE_LOC_AI_COMMAND(""),
|
||||||
|
ZONE_LOC_AI_ANTE(""),
|
||||||
|
ZONE_LOC_AI_SIDEBOARD(""),
|
||||||
|
|
||||||
CHAT_WINDOW_LOC(""),
|
CHAT_WINDOW_LOC(""),
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ package forge.localinstance.skin;
|
|||||||
/**
|
/**
|
||||||
* Assembles settings from selected or default theme as appropriate. Saves in a
|
* Assembles settings from selected or default theme as appropriate. Saves in a
|
||||||
* hashtable, access using .get(settingName) method.
|
* hashtable, access using .get(settingName) method.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public enum FSkinProp {
|
public enum FSkinProp {
|
||||||
//backgrounds
|
//backgrounds
|
||||||
@@ -62,6 +62,11 @@ public enum FSkinProp {
|
|||||||
IMG_ZONE_GRAVEYARD (new int[] {320, 0, 40, 40}, PropType.IMAGE),
|
IMG_ZONE_GRAVEYARD (new int[] {320, 0, 40, 40}, PropType.IMAGE),
|
||||||
IMG_HDZONE_GRAVEYARD (new int[] {132, 6, 128, 128}, PropType.BUTTONS),
|
IMG_HDZONE_GRAVEYARD (new int[] {132, 6, 128, 128}, PropType.BUTTONS),
|
||||||
|
|
||||||
|
IMG_ZONE_ANTE (new int[] {360, 0, 40, 40}, PropType.IMAGE),
|
||||||
|
|
||||||
|
IMG_ZONE_SIDEBOARD (new int[] {360, 40, 40, 40}, PropType.IMAGE),
|
||||||
|
IMG_HDZONE_SIDEBOARD (new int[] {132, 1792, 128, 128}, PropType.BUTTONS),
|
||||||
|
|
||||||
IMG_HDZONE_MANAPOOL (new int[] {2, 6, 128, 128}, PropType.BUTTONS),
|
IMG_HDZONE_MANAPOOL (new int[] {2, 6, 128, 128}, PropType.BUTTONS),
|
||||||
|
|
||||||
IMG_ZONE_POISON (new int[] {320, 80, 40, 40}, PropType.IMAGE),
|
IMG_ZONE_POISON (new int[] {320, 80, 40, 40}, PropType.IMAGE),
|
||||||
@@ -143,7 +148,7 @@ public enum FSkinProp {
|
|||||||
IMG_COUNTERS_MULTI (new int[] {80, 400, 80, 80}, PropType.IMAGE),
|
IMG_COUNTERS_MULTI (new int[] {80, 400, 80, 80}, PropType.IMAGE),
|
||||||
IMG_ENERGY (new int[] {320, 120, 40, 40}, PropType.IMAGE),
|
IMG_ENERGY (new int[] {320, 120, 40, 40}, PropType.IMAGE),
|
||||||
IMG_EXPERIENCE (new int[] {280, 120, 40, 30}, PropType.IMAGE),
|
IMG_EXPERIENCE (new int[] {280, 120, 40, 30}, PropType.IMAGE),
|
||||||
|
|
||||||
//foils
|
//foils
|
||||||
FOIL_01 (new int[] {0, 0, 400, 570}, PropType.FOIL),
|
FOIL_01 (new int[] {0, 0, 400, 570}, PropType.FOIL),
|
||||||
FOIL_02 (new int[] {400, 0, 400, 570}, PropType.FOIL),
|
FOIL_02 (new int[] {400, 0, 400, 570}, PropType.FOIL),
|
||||||
@@ -395,7 +400,7 @@ public enum FSkinProp {
|
|||||||
IMG_FAV4 (new int[] {300, 0, 100, 100}, PropType.FAVICON),
|
IMG_FAV4 (new int[] {300, 0, 100, 100}, PropType.FAVICON),
|
||||||
IMG_FAV5 (new int[] {400, 0, 100, 100}, PropType.FAVICON),
|
IMG_FAV5 (new int[] {400, 0, 100, 100}, PropType.FAVICON),
|
||||||
IMG_FAVNONE (new int[] {500, 0, 100, 100}, PropType.FAVICON),
|
IMG_FAVNONE (new int[] {500, 0, 100, 100}, PropType.FAVICON),
|
||||||
|
|
||||||
IMG_QUEST_DRAFT_DECK (new int[] {0, 0, 680, 475}, PropType.IMAGE),
|
IMG_QUEST_DRAFT_DECK (new int[] {0, 0, 680, 475}, PropType.IMAGE),
|
||||||
//COMMANDER
|
//COMMANDER
|
||||||
IMG_ABILITY_COMMANDER (new int[] {330, 576, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_COMMANDER (new int[] {330, 576, 80, 80}, PropType.ABILITY),
|
||||||
@@ -452,7 +457,7 @@ public enum FSkinProp {
|
|||||||
IMG_ABILITY_PROTECT_U (new int[] {2, 330, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_PROTECT_U (new int[] {2, 330, 80, 80}, PropType.ABILITY),
|
||||||
IMG_ABILITY_PROTECT_UW (new int[] {84, 330, 80, 80}, PropType.ABILITY),
|
IMG_ABILITY_PROTECT_UW (new int[] {84, 330, 80, 80}, PropType.ABILITY),
|
||||||
IMG_ABILITY_PROTECT_W (new int[] {166, 330, 80, 80}, PropType.ABILITY);
|
IMG_ABILITY_PROTECT_W (new int[] {166, 330, 80, 80}, PropType.ABILITY);
|
||||||
|
|
||||||
private int[] coords;
|
private int[] coords;
|
||||||
private PropType type;
|
private PropType type;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user