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
|
||||
public Card chooseSingleCard(final Player ai, SpellAbility sa, Iterable<Card> options, boolean isOptional, Player targetedPlayer, Map<String, Object> params) {
|
||||
|
||||
return ComputerUtilCard.getBestAI(options);
|
||||
}
|
||||
|
||||
|
||||
@@ -276,7 +276,7 @@ public final class GameActionUtil {
|
||||
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>");
|
||||
newSA.setActivatingPlayer(activator);
|
||||
newSA.putParam("CostDesc", ManaCostParser.parse("0"));
|
||||
@@ -295,6 +295,32 @@ public final class GameActionUtil {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
this.name = fName;
|
||||
this.effectiveDate = effectiveDate;
|
||||
|
||||
if(sets != null) {
|
||||
if (sets != null) {
|
||||
StaticData data = StaticData.instance();
|
||||
Set<String> parsedSets = new HashSet<>();
|
||||
for (String set : sets) {
|
||||
@@ -129,10 +129,9 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
continue;
|
||||
}
|
||||
parsedSets.add(set);
|
||||
|
||||
}
|
||||
allowedSetCodes = Lists.newArrayList(parsedSets);
|
||||
}else{
|
||||
} else {
|
||||
allowedSetCodes = new ArrayList<>();
|
||||
}
|
||||
|
||||
@@ -183,7 +182,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
}
|
||||
|
||||
private static Date parseDate(String date) {
|
||||
if( date.length() <= 7 )
|
||||
if (date.length() <= 7)
|
||||
date = date + "-01";
|
||||
try {
|
||||
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() {
|
||||
return this.formatType;
|
||||
@@ -299,10 +298,9 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
|
||||
if (other.formatType != formatType){
|
||||
return formatType.compareTo(other.formatType);
|
||||
}else{
|
||||
if (other.formatSubType != formatSubType){
|
||||
return formatSubType.compareTo(other.formatSubType);
|
||||
}
|
||||
}
|
||||
if (other.formatSubType != formatSubType){
|
||||
return formatSubType.compareTo(other.formatSubType);
|
||||
}
|
||||
if (formatType.equals(FormatType.HISTORIC)){
|
||||
int compareDates = this.effectiveDate.compareTo(other.effectiveDate);
|
||||
@@ -342,7 +340,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
|
||||
@Override
|
||||
protected GameFormat read(File file) {
|
||||
if(!includeHistoric && !coreFormats.contains(file.getName())){
|
||||
if (!includeHistoric && !coreFormats.contains(file.getName())) {
|
||||
return null;
|
||||
}
|
||||
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");
|
||||
if ( strRestrictedLegendary != null ) {
|
||||
if (strRestrictedLegendary != null) {
|
||||
restrictedLegendary = strRestrictedLegendary;
|
||||
}
|
||||
|
||||
strCars = section.get("additional");
|
||||
if ( strCars != null ) {
|
||||
if (strCars != null) {
|
||||
additionalCards = Arrays.asList(strCars.split("; "));
|
||||
}
|
||||
|
||||
strCars = section.get("rarities");
|
||||
if ( strCars != null ) {
|
||||
if (strCars != null) {
|
||||
CardRarity cr;
|
||||
rarities = Lists.newArrayList();
|
||||
for (String s: strCars.split(", ")) {
|
||||
@@ -453,8 +451,8 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
|
||||
public Iterable<GameFormat> getSanctionedList() {
|
||||
List<GameFormat> coreList = new ArrayList<>();
|
||||
for(GameFormat format: naturallyOrdered){
|
||||
if(format.getFormatType().equals(FormatType.SANCTIONED)){
|
||||
for (GameFormat format: naturallyOrdered) {
|
||||
if (format.getFormatType().equals(FormatType.SANCTIONED)){
|
||||
coreList.add(format);
|
||||
}
|
||||
}
|
||||
@@ -463,8 +461,8 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
|
||||
public Iterable<GameFormat> getFilterList() {
|
||||
List<GameFormat> coreList = new ArrayList<>();
|
||||
for(GameFormat format: naturallyOrdered){
|
||||
if(!format.getFormatType().equals(FormatType.HISTORIC)
|
||||
for (GameFormat format: naturallyOrdered) {
|
||||
if (!format.getFormatType().equals(FormatType.HISTORIC)
|
||||
&&!format.getFormatType().equals(FormatType.DIGITAL)){
|
||||
coreList.add(format);
|
||||
}
|
||||
@@ -474,8 +472,8 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
|
||||
public Iterable<GameFormat> getHistoricList() {
|
||||
List<GameFormat> coreList = new ArrayList<>();
|
||||
for(GameFormat format: naturallyOrdered){
|
||||
if(format.getFormatType().equals(FormatType.HISTORIC)){
|
||||
for (GameFormat format: naturallyOrdered) {
|
||||
if (format.getFormatType().equals(FormatType.HISTORIC)){
|
||||
coreList.add(format);
|
||||
}
|
||||
}
|
||||
@@ -484,10 +482,10 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
|
||||
public Map<String, List<GameFormat>> getHistoricMap() {
|
||||
Map<String, List<GameFormat>> coreList = new HashMap<>();
|
||||
for(GameFormat format: naturallyOrdered){
|
||||
if(format.getFormatType().equals(FormatType.HISTORIC)){
|
||||
for (GameFormat format: naturallyOrdered){
|
||||
if (format.getFormatType().equals(FormatType.HISTORIC)){
|
||||
String alpha = format.getName().substring(0,1);
|
||||
if(!coreList.containsKey(alpha)){
|
||||
if (!coreList.containsKey(alpha)) {
|
||||
coreList.put(alpha,new ArrayList<>());
|
||||
}
|
||||
coreList.get(alpha).add(format);
|
||||
@@ -549,7 +547,7 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
SortedSet<GameFormat> result = new TreeSet<>();
|
||||
Set<FormatSubType> coveredTypes = new HashSet<>();
|
||||
CardPool allCards = deck.getAllCardsInASinglePool();
|
||||
for(GameFormat gf : reverseDateOrdered) {
|
||||
for (GameFormat gf : reverseDateOrdered) {
|
||||
if (gf.getFormatType().equals(FormatType.DIGITAL) && !exhaustive){
|
||||
//exclude Digital formats from lists for now
|
||||
continue;
|
||||
@@ -587,13 +585,12 @@ public class GameFormat implements Comparable<GameFormat> {
|
||||
}
|
||||
if (gf2.formatType != gf1.formatType){
|
||||
return gf1.formatType.compareTo(gf2.formatType);
|
||||
}else{
|
||||
if (gf2.formatSubType != gf1.formatSubType){
|
||||
return gf1.formatSubType.compareTo(gf2.formatSubType);
|
||||
}
|
||||
}
|
||||
if (gf2.formatSubType != gf1.formatSubType){
|
||||
return gf1.formatSubType.compareTo(gf2.formatSubType);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2200,6 +2200,10 @@ public class AbilityUtils {
|
||||
return doXMath(player.getCycledThisTurn(), expr, c, ctb);
|
||||
}
|
||||
|
||||
if (sq[0].equals("YouEquippedThisTurn")) {
|
||||
return doXMath(player.getEquippedThisTurn(), expr, c, ctb);
|
||||
}
|
||||
|
||||
if (sq[0].equals("YouDrewThisTurn")) {
|
||||
return doXMath(player.getNumDrawnThisTurn(), expr, c, ctb);
|
||||
}
|
||||
@@ -3372,6 +3376,18 @@ public class AbilityUtils {
|
||||
if (value.equals("DungeonsCompleted")) {
|
||||
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")) {
|
||||
int amount = 0;
|
||||
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);
|
||||
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
|
||||
final List<ReplacementEffect> addedReplacements = Lists.newArrayList();
|
||||
|
||||
@@ -148,6 +148,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
private int investigatedThisTurn = 0;
|
||||
private int surveilThisTurn = 0;
|
||||
private int cycledThisTurn = 0;
|
||||
private int equippedThisTurn = 0;
|
||||
private int lifeLostThisTurn = 0;
|
||||
private int lifeLostLastTurn = 0;
|
||||
private int lifeGainedThisTurn = 0;
|
||||
@@ -2498,6 +2499,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
resetInvestigatedThisTurn();
|
||||
resetSurveilThisTurn();
|
||||
resetCycledThisTurn();
|
||||
resetEquippedThisTurn();
|
||||
resetSacrificedThisTurn();
|
||||
clearAssignedDamage();
|
||||
resetAttackersDeclaredThisTurn();
|
||||
@@ -3455,6 +3457,17 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
cycledThisTurn = 0;
|
||||
}
|
||||
|
||||
public void addEquipped() { equippedThisTurn++; }
|
||||
|
||||
public int getEquippedThisTurn() {
|
||||
return equippedThisTurn;
|
||||
}
|
||||
|
||||
public void resetEquippedThisTurn() {
|
||||
equippedThisTurn = 0;
|
||||
}
|
||||
|
||||
|
||||
public boolean hasUrzaLands() {
|
||||
final CardCollectionView landsControlled = getCardsIn(ZoneType.Battlefield);
|
||||
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);
|
||||
}
|
||||
|
||||
public FCollectionView<CardView> getSideboard() {
|
||||
return get(TrackableProperty.Sideboard);
|
||||
}
|
||||
public int getSideboardSize() {
|
||||
return getZoneSize(TrackableProperty.Sideboard);
|
||||
}
|
||||
|
||||
public FCollectionView<CardView> getCards(final ZoneType zone) {
|
||||
TrackableProperty prop = getZoneProp(zone);
|
||||
if (prop != null) {
|
||||
|
||||
@@ -326,6 +326,11 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
||||
activator.addCycled(sp);
|
||||
}
|
||||
|
||||
// Log number of Equips
|
||||
if (sp.hasParam("Equip")) {
|
||||
activator.addEquipped();
|
||||
}
|
||||
|
||||
if (sp.hasParam("Crew")) {
|
||||
// Trigger crews!
|
||||
runParams.put(AbilityKey.Vehicle, sp.getHostCard());
|
||||
|
||||
@@ -2,7 +2,6 @@ package forge.itemmanager.filters;
|
||||
|
||||
import forge.deck.DeckProxy;
|
||||
import forge.game.GameFormat;
|
||||
import forge.item.PaperCard;
|
||||
import forge.itemmanager.ItemManager;
|
||||
import forge.model.FModel;
|
||||
|
||||
|
||||
@@ -481,7 +481,6 @@ public class DialogChooseSets {
|
||||
|
||||
private int getMainDialogWidth() {
|
||||
int winWidth = Singletons.getView().getFrame().getSize().width;
|
||||
System.out.println("Win Width " + winWidth);
|
||||
int[] sizeBoundaries = new int[] {800, 1024, 1280, 2048};
|
||||
return calculateRelativePanelDimension(winWidth, 90, sizeBoundaries);
|
||||
}
|
||||
@@ -489,7 +488,6 @@ public class DialogChooseSets {
|
||||
// So far, not yet used, but left here just in case
|
||||
private int getMainDialogHeight() {
|
||||
int winHeight = Singletons.getView().getFrame().getSize().height;
|
||||
System.out.println("Win Height " + winHeight);
|
||||
int[] sizeBoundaries = new int[] {600, 720, 780, 1024};
|
||||
return calculateRelativePanelDimension(winHeight, 40, sizeBoundaries);
|
||||
}
|
||||
|
||||
@@ -485,6 +485,7 @@ public final class CMatchUI
|
||||
case Exile:
|
||||
case Flashback:
|
||||
case Command:
|
||||
case Ante:
|
||||
case Sideboard:
|
||||
if (FloatingZone.show(this,player,zone)) {
|
||||
updatedPlayerZones.add(update);
|
||||
@@ -513,6 +514,8 @@ public final class CMatchUI
|
||||
case Exile:
|
||||
case Flashback:
|
||||
case Command:
|
||||
case Ante:
|
||||
case Sideboard:
|
||||
FloatingZone.hide(this,player,zone);
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -69,6 +69,8 @@ public class CField implements ICDoc {
|
||||
final ZoneAction graveAction = new ZoneAction(matchUI, player, ZoneType.Graveyard);
|
||||
final ZoneAction flashBackAction = new ZoneAction(matchUI, player, ZoneType.Flashback);
|
||||
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>() {
|
||||
@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() {
|
||||
|
||||
@@ -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 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 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<>();
|
||||
|
||||
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 row5 = 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));
|
||||
row2.setOpaque(false);
|
||||
@@ -74,6 +77,7 @@ public class PlayerDetailsPanel extends JPanel {
|
||||
row4.setOpaque(false);
|
||||
row5.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
||||
row6.setOpaque(false);
|
||||
row7.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA));
|
||||
|
||||
// Hand, library, graveyard, exile, flashback, command
|
||||
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(lblCommand, constraintsCell);
|
||||
|
||||
row4.add(manaLabels.get(0).getLeft(), constraintsCell);
|
||||
row4.add(manaLabels.get(1).getLeft(), constraintsCell);
|
||||
row4.add(lblAnte, constraintsCell);
|
||||
row4.add(lblSideboard, constraintsCell);
|
||||
|
||||
row5.add(manaLabels.get(2).getLeft(), constraintsCell);
|
||||
row5.add(manaLabels.get(3).getLeft(), constraintsCell);
|
||||
row5.add(manaLabels.get(0).getLeft(), constraintsCell);
|
||||
row5.add(manaLabels.get(1).getLeft(), constraintsCell);
|
||||
|
||||
row6.add(manaLabels.get(4).getLeft(), constraintsCell);
|
||||
row6.add(manaLabels.get(5).getLeft(), constraintsCell);
|
||||
row6.add(manaLabels.get(2).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(row2, constraintsRow);
|
||||
add(row3, constraintsRow);
|
||||
add(row4, constraintsRow);
|
||||
add(row5, constraintsRow);
|
||||
add(row6, constraintsRow);
|
||||
add(row7, constraintsRow);
|
||||
}
|
||||
|
||||
public Component getLblLibrary() {
|
||||
@@ -119,7 +127,9 @@ public class PlayerDetailsPanel extends JPanel {
|
||||
librarySize = String.valueOf(player.getLibrarySize()),
|
||||
flashbackSize = String.valueOf(player.getFlashbackSize()),
|
||||
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.setToolTip(handSize, player.getMaxHandString());
|
||||
@@ -133,6 +143,10 @@ public class PlayerDetailsPanel extends JPanel {
|
||||
lblExile.setToolTip(exileSize);
|
||||
lblCommand.setText(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,
|
||||
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) {
|
||||
// Detail label listeners
|
||||
lblGraveyard.addMouseListener(new FMouseAdapter() {
|
||||
@@ -180,6 +194,16 @@ public class PlayerDetailsPanel extends JPanel {
|
||||
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) {
|
||||
labelPair.getLeft().addMouseListener(new FMouseAdapter() {
|
||||
|
||||
@@ -188,6 +188,15 @@ public class FloatingZone extends FloatingCardArea {
|
||||
case Flashback:
|
||||
window.setIconImage(FSkin.getImage(FSkinProp.IMG_ZONE_FLASHBACK));
|
||||
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:
|
||||
locPref = null;
|
||||
break;
|
||||
@@ -247,6 +256,15 @@ public class FloatingZone extends FloatingCardArea {
|
||||
case Flashback:
|
||||
locPref = isAi ? FPref.ZONE_LOC_AI_FLASHBACK : FPref.ZONE_LOC_HUMAN_FLASHBACK;
|
||||
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:
|
||||
locPref = null;
|
||||
break;
|
||||
|
||||
@@ -34,6 +34,8 @@ public enum FSkinImage implements FImage {
|
||||
GRAVEYARD (FSkinProp.IMG_ZONE_GRAVEYARD, SourceFile.ICONS),
|
||||
HDGRAVEYARD (FSkinProp.IMG_HDZONE_GRAVEYARD, SourceFile.BUTTONS),
|
||||
|
||||
SIDEBOARD (FSkinProp.IMG_ZONE_SIDEBOARD, SourceFile.ICONS),
|
||||
|
||||
HDMANAPOOL (FSkinProp.IMG_HDZONE_MANAPOOL, SourceFile.BUTTONS),
|
||||
|
||||
POISON (FSkinProp.IMG_ZONE_POISON, SourceFile.ICONS),
|
||||
@@ -482,7 +484,7 @@ public enum FSkinImage implements FImage {
|
||||
// If any return true, image exists.
|
||||
int x0 = 0, y0 = 0;
|
||||
Color c;
|
||||
|
||||
|
||||
// Center
|
||||
x0 = (x + w / 2);
|
||||
y0 = (y + h / 2);
|
||||
@@ -491,7 +493,7 @@ public enum FSkinImage implements FImage {
|
||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
x0 += 2;
|
||||
y0 += 2;
|
||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||
@@ -499,21 +501,21 @@ public enum FSkinImage implements FImage {
|
||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
x0 -= 4;
|
||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||
if (c.a != 0) {
|
||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
y0 -= 4;
|
||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||
if (c.a != 0) {
|
||||
textureRegion = new TextureRegion(texture, x, y, w, h);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
x0 += 4;
|
||||
c = new Color(preferredIcons.getPixel(x0, y0));
|
||||
if (c.a != 0) {
|
||||
|
||||
@@ -76,6 +76,7 @@ public class VPlayerPanel extends FContainer {
|
||||
tabs.add(tabManaPool);
|
||||
|
||||
addZoneDisplay(ZoneType.Exile, Forge.hdbuttons ? FSkinImage.HDEXILE : FSkinImage.EXILE);
|
||||
addZoneDisplay(ZoneType.Sideboard, Forge.hdbuttons ? FSkinImage.HDSIDEBOARD :FSkinImage.SIDEBOARD);
|
||||
|
||||
commandZone = add(new CommandZoneDisplay(player));
|
||||
|
||||
@@ -441,7 +442,7 @@ public class VPlayerPanel extends FContainer {
|
||||
if (vibrateDuration > 0 && MatchController.instance.isLocalPlayer(player) &&
|
||||
FModel.getPreferences().getPrefBoolean(FPref.UI_VIBRATE_ON_LIFE_LOSS)) {
|
||||
//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
|
||||
Types:Creature Cat Scout
|
||||
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.
|
||||
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:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||
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: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.
|
||||
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]
|
||||
1 C +2 Mace
|
||||
2 C Arborea Pegasus
|
||||
3 U Blink Dog
|
||||
4 M The Book of Exalted Deeds
|
||||
5 C Celestial Unicorn
|
||||
6 U Cleric Class
|
||||
7 U Cloister Gargoyle
|
||||
8 R Dancing Sword
|
||||
9 C Dawnbringer Cleric
|
||||
10 C Delver's Torch
|
||||
11 C Devoted Paladin
|
||||
12 U Divine Smite
|
||||
13 U Dragon's Disciple
|
||||
14 C Dwarfhold Champion
|
||||
15 R Flumph
|
||||
16 C Gloom Stalker
|
||||
17 M Grand Master of Flowers
|
||||
18 R Guardian of Faith
|
||||
19 C Half-Elf Monk
|
||||
20 M Icingdeath, Frost Tyrant
|
||||
21 U Ingenious Smith
|
||||
22 U Keen-Eared Sentry
|
||||
23 R Loyal Warhound
|
||||
24 C Minimus Containment
|
||||
25 U Monk of the Open Hand
|
||||
26 U Moon-Blessed Cleric
|
||||
27 R Nadaar, Selfless Paladin
|
||||
28 R Oswald Fiddlebender
|
||||
29 R Paladin Class
|
||||
30 C Paladin's Shield
|
||||
31 C Planar Ally
|
||||
32 U Plate Armor
|
||||
33 U Portable Hole
|
||||
34 C Potion of Healing
|
||||
35 C Priest of Ancient Lore
|
||||
36 U Rally Maneuver
|
||||
37 C Ranger's Hawk
|
||||
38 C Steadfast Paladin
|
||||
39 R Teleportation Circle
|
||||
40 C Veteran Dungeoneer
|
||||
41 U White Dragon
|
||||
42 C You Hear Something on Watch
|
||||
43 C You're Ambushed on the Road
|
||||
44 U Aberrant Mind Sorcerer
|
||||
45 C Air-Cult Elemental
|
||||
46 C Arcane Investigator
|
||||
47 C Bar the Gate
|
||||
48 R The Blackstaff of Waterdeep
|
||||
49 U Blue Dragon
|
||||
50 C Charmed Sleep
|
||||
51 C Clever Conjurer
|
||||
52 C Contact Other Plane
|
||||
@@ -49,6 +69,9 @@ ScryfallCode=AFR
|
||||
59 U Fly
|
||||
60 R Grazilaxx, Illithid Scholar
|
||||
61 U Guild Thief
|
||||
62 M Iymrith, Desert Doom
|
||||
63 R Mind Flayer
|
||||
64 M Mordenkainen
|
||||
65 C Mordenkainen's Polymorph
|
||||
66 C Pixie Guide
|
||||
67 U Power of Persuasion
|
||||
@@ -58,45 +81,72 @@ ScryfallCode=AFR
|
||||
71 C Secret Door
|
||||
72 C Shocking Grasp
|
||||
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
|
||||
79 U Trickster's Talisman
|
||||
80 R True Polymorph
|
||||
81 U Wizard Class
|
||||
82 R Wizard's Spellbook
|
||||
83 C You Come to a River
|
||||
84 C You Find the Villains' Lair
|
||||
85 C You See a Guard Approach
|
||||
86 R Yuan-Ti Malison
|
||||
87 M Acererak the Archlich
|
||||
88 R Asmodeus the Archfiend
|
||||
89 C Baleful Beholder
|
||||
90 U Black Dragon
|
||||
91 M The Book of Vile Darkness
|
||||
92 U Check for Traps
|
||||
93 C Clattering Skeletons
|
||||
94 C Deadly Dispute
|
||||
95 U Death-Priest of Myrkul
|
||||
96 U Demogorgon's Clutches
|
||||
97 C Devour Intellect
|
||||
98 U Drider
|
||||
99 U Dungeon Crawler
|
||||
100 M Ebondeath, Dracolich
|
||||
101 C Eyes of the Beholder
|
||||
102 C Fates' Reversal
|
||||
103 C Feign Death
|
||||
104 R Forsworn Paladin
|
||||
105 R Gelatinous Cube
|
||||
106 C Grim Bounty
|
||||
107 U Grim Wanderer
|
||||
108 C Herald of Hadar
|
||||
109 C Hired Hexblade
|
||||
110 C Hoard Robber
|
||||
111 U Lightfoot Rogue
|
||||
112 M Lolth, Spider Queen
|
||||
113 C Manticore
|
||||
114 U Power Word Kill
|
||||
115 C Precipitous Drop
|
||||
116 U Ray of Enfeeblement
|
||||
117 U Reaper's Talisman
|
||||
118 C Sepulcher Ghoul
|
||||
119 C Shambling Ghast
|
||||
120 U Skullport Merchant
|
||||
121 R Sphere of Annihilation
|
||||
122 C Thieves' Tools
|
||||
123 C Vampire Spawn
|
||||
124 R Vorpal Sword
|
||||
125 U Warlock Class
|
||||
126 R Westgate Regent
|
||||
127 R Wight
|
||||
128 C Yuan-Ti Fang-Blade
|
||||
129 C Zombie Ogre
|
||||
130 C Armory Veteran
|
||||
131 U Barbarian Class
|
||||
132 U Battle Cry Goblin
|
||||
133 C Boots of Speed
|
||||
134 C Brazen Dwarf
|
||||
135 U Burning Hands
|
||||
136 U Chaos Channeler
|
||||
137 U Critical Hit
|
||||
138 R Delina, Wild Mage
|
||||
139 C Dragon's Fire
|
||||
140 C Dueling Rapier
|
||||
141 C Earth-Cult Elemental
|
||||
142 C Farideh's Fireball
|
||||
@@ -104,20 +154,27 @@ ScryfallCode=AFR
|
||||
144 C Goblin Javelineer
|
||||
145 U Goblin Morningstar
|
||||
146 C Hoarding Ogre
|
||||
147 R Hobgoblin Bandit Lord
|
||||
148 C Hobgoblin Captain
|
||||
149 U Hulking Bugbear
|
||||
150 C Improvised Weaponry
|
||||
151 M Inferno of the Star Mounts
|
||||
152 C Jaded Sell-Sword
|
||||
153 C Kick in the Door
|
||||
154 U Magic Missile
|
||||
155 R Meteor Swarm
|
||||
156 R Minion of the Mighty
|
||||
157 R Orb of Dragonkind
|
||||
158 C Plundering Barbarian
|
||||
159 C Price of Loyalty
|
||||
160 U Red Dragon
|
||||
161 U Rust Monster
|
||||
162 C Swarming Goblins
|
||||
163 U Tiger-Tribe Hunter
|
||||
164 C Unexpected Windfall
|
||||
165 C Valor Singer
|
||||
166 R Wish
|
||||
167 R Xorn
|
||||
168 C You Come to the Gnoll Camp
|
||||
169 U You Find Some Prisoners
|
||||
170 U You See a Pair of Goblins
|
||||
@@ -127,28 +184,42 @@ ScryfallCode=AFR
|
||||
174 C Bull's Strength
|
||||
175 U Choose Your Weapon
|
||||
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
|
||||
182 C Elturgard Ranger
|
||||
183 C Find the Path
|
||||
184 R Froghemoth
|
||||
185 C Gnoll Hunter
|
||||
186 U Green Dragon
|
||||
186 U Hunter's Mark
|
||||
187 C Hill Giant Herdgorger
|
||||
188 U Hunter's Mark
|
||||
189 C Inspiring Bard
|
||||
190 R Instrument of the Bards
|
||||
191 U Intrepid Outlander
|
||||
192 U Loathsome Troll
|
||||
193 R Long Rest
|
||||
194 U Lurking Roper
|
||||
195 C Neverwinter Dryad
|
||||
196 R Ochre Jelly
|
||||
197 M Old Gnawbone
|
||||
198 C Owlbear
|
||||
199 C Plummet
|
||||
200 U Prosperous Innkeeper
|
||||
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
|
||||
207 M The Tarrasque
|
||||
208 C Underdark Basilisk
|
||||
209 R Varis, Silverymoon Ranger
|
||||
210 U Wandering Troubadour
|
||||
211 R Werewolf Pack Leader
|
||||
212 U Wild Shape
|
||||
213 C You Find a Cursed Idol
|
||||
214 U You Happen On a Glade
|
||||
215 U You Meet in a Tavern
|
||||
@@ -158,12 +229,18 @@ ScryfallCode=AFR
|
||||
219 U Bruenor Battlehammer
|
||||
220 R Drizzt Do'Urden
|
||||
221 U Farideh, Devil's Chosen
|
||||
222 R Fighter Class
|
||||
223 U Gretchen Titchwillow
|
||||
224 U Hama Pashar, Ruin Seeker
|
||||
225 U Kalain, Reclusive Painter
|
||||
226 U Krydle of Baldur's Gate
|
||||
227 M Minsc, Beloved Ranger
|
||||
228 R Monk Class
|
||||
229 R Orcus, Prince of Undeath
|
||||
230 R Rogue Class
|
||||
231 U Shessra, Death's Whisper
|
||||
232 R Skeletal Swarming
|
||||
233 R Sorcerer Class
|
||||
234 U Targ Nar, Demon-Fang Gnoll
|
||||
235 M Tiamat
|
||||
236 U Trelasarra, Moon Dancer
|
||||
@@ -173,8 +250,14 @@ ScryfallCode=AFR
|
||||
240 U Bag of Holding
|
||||
241 M The Deck of Many Things
|
||||
242 U Dungeon Map
|
||||
243 R Eye of Vecna
|
||||
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
|
||||
250 C Spare Dagger
|
||||
251 C Spiked Pit Trap
|
||||
252 R Treasure Chest
|
||||
253 R Cave of the Frost Dragon
|
||||
@@ -183,36 +266,52 @@ ScryfallCode=AFR
|
||||
256 C Evolving Wilds
|
||||
257 R Hall of Storm Giants
|
||||
258 R Hive of the Eye Tyrant
|
||||
262 L Plains
|
||||
263 L Plains
|
||||
264 L Plains
|
||||
265 L Plains
|
||||
266 L Island
|
||||
267 L Island
|
||||
268 L Island
|
||||
269 L Island
|
||||
270 L Swamp
|
||||
271 L Swamp
|
||||
272 L Swamp
|
||||
273 L Swamp
|
||||
274 L Mountain
|
||||
275 L Mountain
|
||||
276 L Mountain
|
||||
277 L Mountain
|
||||
278 L Forest
|
||||
279 L Forest
|
||||
280 L Forest
|
||||
281 L Forest
|
||||
259 R Lair of the Hydra
|
||||
260 U Temple of the Dragon Queen
|
||||
261 R Treasure Vault
|
||||
262 C Plains
|
||||
263 C Plains
|
||||
264 C Plains
|
||||
265 C Plains
|
||||
266 C Island
|
||||
267 C Island
|
||||
268 C Island
|
||||
269 C Island
|
||||
270 C Swamp
|
||||
271 C Swamp
|
||||
272 C Swamp
|
||||
273 C Swamp
|
||||
274 C Mountain
|
||||
275 C Mountain
|
||||
276 C Mountain
|
||||
277 C Mountain
|
||||
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
|
||||
285 M Zariel, Archduke of Avernus
|
||||
286 M Ellywick Tumblestrum
|
||||
287 M Icingdeath, Frost Tyrant
|
||||
288 U White Dragon
|
||||
289 U Blue Dragon
|
||||
290 M Iymrith, Desert Doom
|
||||
291 U Black Dragon
|
||||
292 M Ebondeath, Dracolich
|
||||
293 M Inferno of the Star Mounts
|
||||
294 U Red Dragon
|
||||
295 U Green Dragon
|
||||
296 M Old Gnawbone
|
||||
297 R Adult Gold Dragon
|
||||
298 M Tiamat
|
||||
|
||||
[showcase]
|
||||
299 C Arborea Pegasus
|
||||
300 U Blink Dog
|
||||
301 C Celestial Unicorn
|
||||
302 U Cloister Gargoyle
|
||||
303 R Nadaar, Selfless Paladin
|
||||
@@ -220,26 +319,33 @@ ScryfallCode=AFR
|
||||
305 U Displacer Beast
|
||||
306 C Djinni Windseer
|
||||
307 R Dragon Turtle
|
||||
308 R Mind Flayer
|
||||
309 C Pixie Guide
|
||||
310 C Rimeshield Frost Giant
|
||||
311 C Baleful Beholder
|
||||
312 C Clattering Skeletons
|
||||
313 R Gelatinous Cube
|
||||
314 C Manticore
|
||||
315 R Westgate Regent
|
||||
316 R Wight
|
||||
317 R Delina, Wild Mage
|
||||
318 C Goblin Javelineer
|
||||
319 U Hulking Bugbear
|
||||
320 R Minion of the Mighty
|
||||
321 U Rust Monster
|
||||
322 R Xorn
|
||||
323 R Zalto, Fire Giant Duke
|
||||
324 C Bulette
|
||||
325 C Dire Wolf Prowler
|
||||
326 C Gnoll Hunter
|
||||
327 U Loathsome Troll
|
||||
328 U Lurking Roper
|
||||
329 C Neverwinter Dryad
|
||||
330 R Ochre Jelly
|
||||
331 C Owlbear
|
||||
332 U Purple Worm
|
||||
333 M The Tarrasque
|
||||
334 C Underdark Basilisk
|
||||
335 R Varis, Silverymoon Ranger
|
||||
336 U Barrowin of Clan Undurr
|
||||
337 U Bruenor Battlehammer
|
||||
@@ -249,9 +355,11 @@ ScryfallCode=AFR
|
||||
341 U Hama Pashar, Ruin Seeker
|
||||
342 U Kalain, Reclusive Painter
|
||||
343 U Krydle of Baldur's Gate
|
||||
344 M Minsc, Beloved Ranger
|
||||
345 U Shessra, Death's Whisper
|
||||
346 U Trelasarra, Moon Dancer
|
||||
347 R Volo, Guide to Monsters
|
||||
348 U Iron Golem
|
||||
349 C Mimic
|
||||
350 R Cave of the Frost Dragon
|
||||
351 R Den of the Bugbear
|
||||
@@ -259,35 +367,58 @@ ScryfallCode=AFR
|
||||
353 C Evolving Wilds
|
||||
354 R Hall of Storm Giants
|
||||
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
|
||||
362 R Guardian of Faith
|
||||
363 R Loyal Warhound
|
||||
364 R Teleportation Circle
|
||||
365 R The Blackstaff of Waterdeep
|
||||
366 M Demilich
|
||||
367 R Grazilaxx, Illithid Scholar
|
||||
368 R Tasha's Hideous Laughter
|
||||
369 R True Polymorph
|
||||
370 R Wizard's Spellbook
|
||||
371 R Yuan-Ti Malison
|
||||
372 M Acererak the Archlich
|
||||
373 R Asmodeus the Archfiend
|
||||
374 M The Book of Vile Darkness
|
||||
375 R Forsworn Paladin
|
||||
376 R Sphere of Annihilation
|
||||
377 R Vorpal Sword
|
||||
378 M Flameskull
|
||||
379 R Hobgoblin Bandit Lord
|
||||
380 R Meteor Swarm
|
||||
381 R Orb of Dragonkind
|
||||
382 R Wish
|
||||
383 R Circle of Dreams Druid
|
||||
384 R Froghemoth
|
||||
385 R Instrument of the Bards
|
||||
386 R Long Rest
|
||||
387 R Werewolf Pack Leader
|
||||
388 R Orcus, Prince of Undeath
|
||||
389 R Skeletal Swarming
|
||||
390 R Triumphant Adventurer
|
||||
391 M Xanathar, Guild Kingpin
|
||||
392 M The Deck of Many Things
|
||||
393 R Eye of Vecna
|
||||
394 R Hand of Vecna
|
||||
395 R Treasure Chest
|
||||
|
||||
[buy a box]
|
||||
396 R Vorpal Sword
|
||||
|
||||
[promo]
|
||||
397 R Treasure Chest
|
||||
398 U Portable Hole
|
||||
399 C You Find the Villains' Lair
|
||||
400 U Power Word Kill
|
||||
401 U Magic Missile
|
||||
402 U Prosperous Innkeeper
|
||||
|
||||
[dungeons]
|
||||
|
||||
@@ -887,7 +887,7 @@ lblSet=Auflage
|
||||
#Set word has different meanings in other languages
|
||||
lblDefault=Standard
|
||||
lblType=Typ
|
||||
lblPlaneswalkerDeckSort=Planeswalker Deck
|
||||
lblPlaneswalkerDeckSort=Planeswalker-Deck
|
||||
lblRarity=Seltenheit
|
||||
lblConvertToFoil=Foil
|
||||
lblMulticolor=Mehrfarbig
|
||||
@@ -904,6 +904,7 @@ lblCard=Karte
|
||||
lblFormat=Format
|
||||
lblFormats=Formate
|
||||
lblQuestWorld=Quest-Welt
|
||||
lblBlock=Block
|
||||
lblSets=Sets
|
||||
lblTypes=Typen
|
||||
lblConvertedManaCosts=umgewandelte Manakosten
|
||||
@@ -2558,6 +2559,8 @@ lblLibraryNCards=Bibliothek ({0})
|
||||
lblExileNCards=Exil ({0})
|
||||
lblFlashbackNCards=Rückblende-Karten ({0})
|
||||
lblCommandZoneNCards=Komandozone ({0})
|
||||
lblAnteZoneNCards=Ante zone ({0})
|
||||
lblSideboardNCards=Sideboard ({0})
|
||||
lblWhiteManaOfN=Weißes Mana ({0})
|
||||
lblBlueManaOfN=Blaues Mana ({0})
|
||||
lblBlackManaOfN=Schwarzes Mana ({0})
|
||||
|
||||
@@ -2558,6 +2558,8 @@ lblLibraryNCards=Library ({0})
|
||||
lblExileNCards=Exile ({0})
|
||||
lblFlashbackNCards=Flashback cards ({0})
|
||||
lblCommandZoneNCards=Command zone ({0})
|
||||
lblAnteZoneNCards=Ante zone ({0})
|
||||
lblSideboardNCards=Sideboard ({0})
|
||||
lblWhiteManaOfN=White mana ({0})
|
||||
lblBlueManaOfN=Blue mana ({0})
|
||||
lblBlackManaOfN=Black mana ({0})
|
||||
|
||||
@@ -2557,6 +2557,8 @@ lblLibraryNCards=Biblioteca ({0})
|
||||
lblExileNCards=Exilio ({0})
|
||||
lblFlashbackNCards=Cartas con retrospectiva ({0})
|
||||
lblCommandZoneNCards=Zona de comando ({0})
|
||||
lblAnteZoneNCards=Ante zone ({0})
|
||||
lblSideboardNCards=Sideboard ({0})
|
||||
lblWhiteManaOfN=Maná blanco ({0})
|
||||
lblBlueManaOfN=Maná azul ({0})
|
||||
lblBlackManaOfN=Maná negro ({0})
|
||||
|
||||
@@ -2557,6 +2557,8 @@ lblLibraryNCards=Grimorio ({0})
|
||||
lblExileNCards=Esilio ({0})
|
||||
lblFlashbackNCards=Carte Flashback ({0})
|
||||
lblCommandZoneNCards=Zona di Comando ({0})
|
||||
lblAnteZoneNCards=Ante zone ({0})
|
||||
lblSideboardNCards=Sideboard ({0})
|
||||
lblWhiteManaOfN=Mana Bianco ({0})
|
||||
lblBlueManaOfN=Mana Blu ({0})
|
||||
lblBlackManaOfN=Mana Nero ({0})
|
||||
|
||||
@@ -2558,6 +2558,8 @@ lblLibraryNCards=ライブラリー ({0})
|
||||
lblExileNCards=追放 ({0})
|
||||
lblFlashbackNCards=フラッシュバックカード ({0})
|
||||
lblCommandZoneNCards=統率領域 ({0})
|
||||
lblAnteZoneNCards=アンティ領域 ({0})
|
||||
lblSideboardNCards=サイドボード ({0})
|
||||
lblWhiteManaOfN=白マナ ({0})
|
||||
lblBlueManaOfN=青マナ ({0})
|
||||
lblBlackManaOfN=黒マナ ({0})
|
||||
|
||||
@@ -2558,6 +2558,8 @@ lblLibraryNCards=牌库 ({0})
|
||||
lblExileNCards=放逐区 ({0})
|
||||
lblFlashbackNCards=可返照 ({0})
|
||||
lblCommandZoneNCards=指挥官区 ({0})
|
||||
lblAnteZoneNCards=Ante zone ({0})
|
||||
lblSideboardNCards=Sideboard ({0})
|
||||
lblWhiteManaOfN=白色法术力 ({0})
|
||||
lblBlueManaOfN=蓝色法术力 ({0})
|
||||
lblBlackManaOfN=黑色法术力 ({0})
|
||||
|
||||
@@ -102,6 +102,7 @@ Gamer:Gamers
|
||||
Gargoyle:Gargoyles
|
||||
Germ:Germs
|
||||
Giant:Giants
|
||||
Gnoll:Gnolls
|
||||
Gnome:Gnomes
|
||||
Goat:Goats
|
||||
Goblin:Goblins
|
||||
@@ -113,6 +114,7 @@ Gremlin:Gremlins
|
||||
Griffin:Griffins
|
||||
Hag:Hags
|
||||
Halfling:Halflings
|
||||
Hamster:Hamsters
|
||||
Harpy:Harpies
|
||||
Hellion:Hellions
|
||||
Hippo:Hippos
|
||||
@@ -314,6 +316,7 @@ Angrath
|
||||
Arlinn
|
||||
Ashiok
|
||||
B.O.B.
|
||||
Bahamut
|
||||
Basri
|
||||
Bolas
|
||||
Calix
|
||||
@@ -347,6 +350,7 @@ Koth
|
||||
Liliana
|
||||
Lolth
|
||||
Lukka
|
||||
Mordenkainen
|
||||
Nahiri
|
||||
Narset
|
||||
Niko
|
||||
@@ -378,3 +382,4 @@ Wrenn
|
||||
Xenagos
|
||||
Yanggu
|
||||
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_OVERLAY_FOIL_EFFECT ("true"),
|
||||
UI_HIDE_REMINDER_TEXT ("false"),
|
||||
UI_SR_OPTIMIZE ("false"),
|
||||
UI_SR_OPTIMIZE ("false"),
|
||||
UI_OPEN_PACKS_INDIV ("false"),
|
||||
UI_STACK_CREATURES ("false"),
|
||||
UI_UPLOAD_DRAFT ("false"),
|
||||
@@ -238,12 +238,18 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
|
||||
ZONE_LOC_HUMAN_GRAVEYARD(""),
|
||||
ZONE_LOC_HUMAN_EXILE(""),
|
||||
ZONE_LOC_HUMAN_FLASHBACK(""),
|
||||
ZONE_LOC_HUMAN_COMMAND(""),
|
||||
ZONE_LOC_HUMAN_ANTE(""),
|
||||
ZONE_LOC_HUMAN_SIDEBOARD(""),
|
||||
|
||||
ZONE_LOC_AI_HAND(""),
|
||||
ZONE_LOC_AI_LIBRARY(""),
|
||||
ZONE_LOC_AI_GRAVEYARD(""),
|
||||
ZONE_LOC_AI_EXILE(""),
|
||||
ZONE_LOC_AI_FLASHBACK(""),
|
||||
ZONE_LOC_AI_COMMAND(""),
|
||||
ZONE_LOC_AI_ANTE(""),
|
||||
ZONE_LOC_AI_SIDEBOARD(""),
|
||||
|
||||
CHAT_WINDOW_LOC(""),
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ package forge.localinstance.skin;
|
||||
/**
|
||||
* Assembles settings from selected or default theme as appropriate. Saves in a
|
||||
* hashtable, access using .get(settingName) method.
|
||||
*
|
||||
*
|
||||
*/
|
||||
public enum FSkinProp {
|
||||
//backgrounds
|
||||
@@ -62,6 +62,11 @@ public enum FSkinProp {
|
||||
IMG_ZONE_GRAVEYARD (new int[] {320, 0, 40, 40}, PropType.IMAGE),
|
||||
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_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_ENERGY (new int[] {320, 120, 40, 40}, PropType.IMAGE),
|
||||
IMG_EXPERIENCE (new int[] {280, 120, 40, 30}, PropType.IMAGE),
|
||||
|
||||
|
||||
//foils
|
||||
FOIL_01 (new int[] {0, 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_FAV5 (new int[] {400, 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),
|
||||
//COMMANDER
|
||||
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_UW (new int[] {84, 330, 80, 80}, PropType.ABILITY),
|
||||
IMG_ABILITY_PROTECT_W (new int[] {166, 330, 80, 80}, PropType.ABILITY);
|
||||
|
||||
|
||||
private int[] coords;
|
||||
private PropType type;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user