mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 01:38:13 +00:00
Ring tempts you (#3453)
* Ring tempts you WIP * add ring triggers * Update RingTemptsYouEffect.java * Add files via upload * Update TriggerRingbearerChosen.java * Update token-images.txt * Update TrackableProperty.java * Update CardView.java * Update CardRenderer.java * Update RingTemptsYouEffect.java fix crash * Update Card.java * Update CardView.java * Update TrackableProperty.java * Update StaticAbilityContinuous.java * Update StaticEffect.java * Update RingTemptsYouEffect.java * update sprite_manaicons.png * Update FSkinProp.java * Update FSkinImage.java * Update CardFaceSymbols.java * Update CardRenderer.java * update trigger * update desktop symbol, add aragorn company leader * update cleanup, add bilbo, add birthday escape * update cleanup * add 3 cards * add five cards * add two cards * update aragorn,update bombadil, add two cards * add ten cards * Update horses_of_the_bruinen.txt * add dunedain rangers + cleanup * Update gollums_bite.txt * update cleanup * add six cards * delete unnecessary file * Update rangers_firebrand.txt * add two cards, add RingTemptedYou playerproperty * update frodo, add three cards * update sauron, samwise, add two cards * Update sauron_the_dark_lord.txt * update validplayer * add six cards * update smeagol * update sauron ransom two piles * add four cards * add three cards * update card scripts * Update war_of_the_last_alliance.txt * update scripts, update ringbearer * update CardDetailUtil * remove unused param * Update affected * remove unnecesary variables * update * update scripts * update RingTemptsYouEffect * fix cantblockby RingTemptsYouEffect.java * The Ring: use numTemptYou for RingLevel * Update dunedain_rangers.txt * Update jaces_defeat.txt * update lord of the nazgul * fix theRing CardView * update ringEffect, update translation * update translation * update gamestate * replace switch with if else * fix effect * update gamestate, translation * update restartgameeffect, remove unneeded clearRingBearer --------- Co-authored-by: Anthony Calosa <anthonycalosa@gmail.com> Co-authored-by: tool4ever <therealtoolkit@hotmail.com> Co-authored-by: Hans Mackowiak <hanmac@gmx.de>
This commit is contained in:
@@ -59,6 +59,7 @@ public abstract class GameState {
|
||||
private String persistentMana = "";
|
||||
private int landsPlayed = 0;
|
||||
private int landsPlayedLastTurn = 0;
|
||||
private int numRingTemptedYou = 0;
|
||||
private String precast = null;
|
||||
private String putOnStack = null;
|
||||
private final Map<ZoneType, String> cardTexts = new EnumMap<>(ZoneType.class);
|
||||
@@ -135,6 +136,7 @@ public abstract class GameState {
|
||||
sb.append(TextUtil.concatNoSpace(prefix + "life=", String.valueOf(p.life), "\n"));
|
||||
sb.append(TextUtil.concatNoSpace(prefix + "landsplayed=", String.valueOf(p.landsPlayed), "\n"));
|
||||
sb.append(TextUtil.concatNoSpace(prefix + "landsplayedlastturn=", String.valueOf(p.landsPlayedLastTurn), "\n"));
|
||||
sb.append(TextUtil.concatNoSpace(prefix + "numringtemptedyou=", String.valueOf(p.numRingTemptedYou), "\n"));
|
||||
if (!p.counters.isEmpty()) {
|
||||
sb.append(TextUtil.concatNoSpace(prefix + "counters=", p.counters, "\n"));
|
||||
}
|
||||
@@ -164,6 +166,7 @@ public abstract class GameState {
|
||||
p.landsPlayedLastTurn = player.getLandsPlayedLastTurn();
|
||||
p.counters = countersToString(player.getCounters());
|
||||
p.manaPool = processManaPool(player.getManaPool());
|
||||
p.numRingTemptedYou = player.getNumRingTemptedYou();
|
||||
playerStates.add(p);
|
||||
}
|
||||
|
||||
@@ -269,6 +272,9 @@ public abstract class GameState {
|
||||
if (c.isCommander()) {
|
||||
newText.append("|IsCommander");
|
||||
}
|
||||
if (c.isRingBearer()) {
|
||||
newText.append("|IsRingBearer");
|
||||
}
|
||||
|
||||
if (cardsReferencedByID.contains(c)) {
|
||||
newText.append("|Id:").append(c.getId());
|
||||
@@ -518,6 +524,8 @@ public abstract class GameState {
|
||||
getPlayerState(categoryName).landsPlayed = Integer.parseInt(categoryValue);
|
||||
} else if (categoryName.endsWith("landsplayedlastturn")) {
|
||||
getPlayerState(categoryName).landsPlayedLastTurn = Integer.parseInt(categoryValue);
|
||||
} else if (categoryName.endsWith("numringtemptedyou")) {
|
||||
getPlayerState(categoryName).numRingTemptedYou = Integer.parseInt(categoryValue);
|
||||
} else if (categoryName.endsWith("play") || categoryName.endsWith("battlefield")) {
|
||||
getPlayerState(categoryName).cardTexts.put(ZoneType.Battlefield, categoryValue);
|
||||
} else if (categoryName.endsWith("hand")) {
|
||||
@@ -1110,6 +1118,7 @@ public abstract class GameState {
|
||||
}
|
||||
|
||||
p.setCommanders(Lists.newArrayList());
|
||||
p.clearTheRing();
|
||||
|
||||
Map<ZoneType, CardCollectionView> playerCards = new EnumMap<>(ZoneType.class);
|
||||
for (Entry<ZoneType, String> kv : state.cardTexts.entrySet()) {
|
||||
@@ -1120,6 +1129,7 @@ public abstract class GameState {
|
||||
if (state.life >= 0) p.setLife(state.life, null);
|
||||
p.setLandsPlayedThisTurn(state.landsPlayed);
|
||||
p.setLandsPlayedLastTurn(state.landsPlayedLastTurn);
|
||||
p.setNumRingTemptedYou(state.numRingTemptedYou);
|
||||
|
||||
p.clearPaidForSA();
|
||||
|
||||
@@ -1175,6 +1185,14 @@ public abstract class GameState {
|
||||
if (!state.counters.isEmpty()) {
|
||||
applyCountersToGameEntity(p, state.counters);
|
||||
}
|
||||
if (state.numRingTemptedYou > 0) {
|
||||
//setup all levels
|
||||
for (int i = 1; i <= state.numRingTemptedYou; i++) {
|
||||
if (i > 4)
|
||||
break;
|
||||
p.setRingLevel(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1300,6 +1318,9 @@ public abstract class GameState {
|
||||
List<Card> cmd = Lists.newArrayList(player.getCommanders());
|
||||
cmd.add(c);
|
||||
player.setCommanders(cmd);
|
||||
} else if (info.startsWith("IsRingBearer")) {
|
||||
c.setRingBearer(true);
|
||||
player.setRingBearer(c);
|
||||
} else if (info.startsWith("Id:")) {
|
||||
int id = Integer.parseInt(info.substring(3));
|
||||
idToCard.put(id, c);
|
||||
|
||||
@@ -159,6 +159,7 @@ public enum SpellApiToAi {
|
||||
.put(ApiType.Reveal, RevealAi.class)
|
||||
.put(ApiType.RevealHand, RevealHandAi.class)
|
||||
.put(ApiType.ReverseTurnOrder, AlwaysPlayAi.class)
|
||||
.put(ApiType.RingTemptsYou, AlwaysPlayAi.class)
|
||||
.put(ApiType.RollDice, RollDiceAi.class)
|
||||
.put(ApiType.RollPlanarDice, RollPlanarDiceAi.class)
|
||||
.put(ApiType.RunChaos, AlwaysPlayAi.class)
|
||||
|
||||
@@ -1012,6 +1012,9 @@ public class GameAction {
|
||||
partner.updateStateForView();
|
||||
}
|
||||
|
||||
// run Game Commands early
|
||||
c.runChangeControllerCommands();
|
||||
|
||||
game.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
|
||||
|
||||
oldBattlefield.remove(c);
|
||||
@@ -1027,7 +1030,7 @@ public class GameAction {
|
||||
game.getTriggerHandler().runTrigger(TriggerType.ChangesController, runParams, false);
|
||||
|
||||
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
||||
c.runChangeControllerCommands();
|
||||
|
||||
}
|
||||
|
||||
// Temporarily disable (if mode = true) actively checking static abilities.
|
||||
|
||||
@@ -3501,6 +3501,10 @@ public class AbilityUtils {
|
||||
if (value.equals("DungeonsCompleted")) {
|
||||
return doXMath(player.getCompletedDungeons().size(), m, source, ctb);
|
||||
}
|
||||
|
||||
if (value.equals("RingTemptedYou")) {
|
||||
return doXMath(player.getNumRingTemptedYou(), m, source, ctb);
|
||||
}
|
||||
if (value.startsWith("DungeonCompletedNamed")) {
|
||||
String [] full = value.split("_");
|
||||
String name = full[1];
|
||||
|
||||
@@ -158,6 +158,8 @@ public enum ApiType {
|
||||
Reveal (RevealEffect.class),
|
||||
RevealHand (RevealHandEffect.class),
|
||||
ReverseTurnOrder (ReverseTurnOrderEffect.class),
|
||||
|
||||
RingTemptsYou (RingTemptsYouEffect.class),
|
||||
RollDice (RollDiceEffect.class),
|
||||
RollPlanarDice (RollPlanarDiceEffect.class),
|
||||
RunChaos (RunChaosEffect.class),
|
||||
|
||||
@@ -587,11 +587,15 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
||||
GameEntityCounterTable table = new GameEntityCounterTable();
|
||||
|
||||
if (sa.hasParam("TriggeredCounterMap")) {
|
||||
Integer counterMapValue = null;
|
||||
if (sa.hasParam("CounterMapValues")) {
|
||||
counterMapValue = Integer.valueOf(sa.getParam("CounterMapValues"));
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<CounterType, Integer> counterMap = (Map<CounterType, Integer>) sa
|
||||
.getTriggeringObject(AbilityKey.CounterMap);
|
||||
for (Map.Entry<CounterType, Integer> e : counterMap.entrySet()) {
|
||||
resolvePerType(sa, placer, e.getKey(), e.getValue(), table, false);
|
||||
resolvePerType(sa, placer, e.getKey(), counterMapValue == null ? e.getValue() : counterMapValue, table, false);
|
||||
}
|
||||
} else if (sa.hasParam("SharedKeywords")) {
|
||||
List<String> keywords = Arrays.asList(sa.getParam("SharedKeywords").split(" & "));
|
||||
|
||||
@@ -20,12 +20,13 @@ import forge.game.zone.ZoneType;
|
||||
import forge.util.Lang;
|
||||
import forge.util.Localizer;
|
||||
import forge.util.MyRandom;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class DigUntilEffect extends SpellAbilityEffect {
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.card.abilityfactory.SpellEffect#getStackDescription(java.util.Map, forge.card.spellability.SpellAbility)
|
||||
*/
|
||||
* @see forge.card.abilityfactory.SpellEffect#getStackDescription(java.util.Map, forge.card.spellability.SpellAbility)
|
||||
*/
|
||||
@Override
|
||||
protected String getStackDescription(SpellAbility sa) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
@@ -33,7 +34,9 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
||||
String desc = sa.getParamOrDefault("ValidDescription", "Card");
|
||||
|
||||
int untilAmount = 1;
|
||||
boolean isNumeric = true;
|
||||
if (sa.hasParam("Amount")) {
|
||||
isNumeric = StringUtils.isNumeric(sa.getParam("Amount"));
|
||||
untilAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa);
|
||||
}
|
||||
|
||||
@@ -42,7 +45,8 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
||||
final ZoneType revealed = ZoneType.smartValueOf(sa.getParam("RevealedDestination"));
|
||||
sb.append(ZoneType.Exile.equals(revealed) ? "exiles cards from their library until they exile " :
|
||||
"reveals cards from their library until revealing ");
|
||||
sb.append(Lang.nounWithNumeralExceptOne(untilAmount, desc + " card"));
|
||||
String noun = "Card".equals(desc) ? " card" : desc + " card";
|
||||
sb.append(isNumeric ? Lang.nounWithNumeralExceptOne(untilAmount, noun) : "X " + noun);
|
||||
if (untilAmount != 1) {
|
||||
sb.append("s");
|
||||
}
|
||||
@@ -57,19 +61,30 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
||||
|
||||
final ZoneType found = ZoneType.smartValueOf(sa.getParam("FoundDestination"));
|
||||
if (found != null) {
|
||||
sb.append(untilAmount > 1 ? "those cards" : "that card");
|
||||
sb.append(untilAmount > 1 || !isNumeric ? "those cards" : "that card");
|
||||
sb.append(" ");
|
||||
|
||||
if (ZoneType.Hand.equals(found)) {
|
||||
sb.append("into their hand ");
|
||||
}
|
||||
|
||||
if (ZoneType.Battlefield.equals(found)) {
|
||||
sb.append("onto the battlefield ");
|
||||
if (sa.hasParam("Tapped"))
|
||||
sb.append("tapped ");
|
||||
}
|
||||
|
||||
if (ZoneType.Graveyard.equals(revealed)) {
|
||||
sb.append("and all other cards into their graveyard.");
|
||||
}
|
||||
if (ZoneType.Exile.equals(revealed)) {
|
||||
sb.append("and exile all other cards revealed this way.");
|
||||
}
|
||||
if (ZoneType.Library.equals(revealed)) {
|
||||
int revealedLibPos = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("RevealedLibraryPosition"), sa);
|
||||
sb.append("and the rest on ").append(revealedLibPos < 0 ? "the bottom " : "on top ");
|
||||
sb.append("of their library").append(sa.hasParam("RevealRandomOrder") ? " in a random order." : ".");
|
||||
}
|
||||
} else if (revealed != null) {
|
||||
if (ZoneType.Hand.equals(revealed)) {
|
||||
sb.append("all cards revealed this way into their hand");
|
||||
|
||||
@@ -70,6 +70,9 @@ public class RestartGameEffect extends SpellAbilityEffect {
|
||||
p.setLifeLostLastTurn(0);
|
||||
p.resetCommanderStats();
|
||||
p.resetCompletedDungeons();
|
||||
p.resetRingTemptedYou();
|
||||
p.clearRingBearer();
|
||||
p.clearTheRing();
|
||||
p.setBlessing(false);
|
||||
p.clearController();
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import forge.GameCommand;
|
||||
import forge.game.Game;
|
||||
import forge.game.ability.AbilityKey;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.trigger.TriggerType;
|
||||
import forge.util.Localizer;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class RingTemptsYouEffect extends EffectEffect {
|
||||
|
||||
@Override
|
||||
protected String getStackDescription(SpellAbility sa) {
|
||||
return Localizer.getInstance().getMessage("lblTheRingTempts", sa.getActivatingPlayer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
Player p = sa.getActivatingPlayer();
|
||||
Game game = p.getGame();
|
||||
Card card = sa.getHostCard();
|
||||
|
||||
if (p.getTheRing() == null)
|
||||
p.createTheRing(card);
|
||||
|
||||
//increment ring tempted you for property
|
||||
p.incrementRingTemptedYou();
|
||||
p.setRingLevel(p.getNumRingTemptedYou());
|
||||
|
||||
// Then choose a ring-bearer (You may keep the same one). Auto pick if <2 choices.
|
||||
CardCollection creatures = p.getCreaturesInPlay();
|
||||
Card ringBearer = p.getController().chooseSingleEntityForEffect(creatures, sa, Localizer.getInstance().getMessageorUseDefault("lblChooseRingBearer", "Choose your Ring-bearer"), false, null);
|
||||
p.setRingBearer(ringBearer);
|
||||
|
||||
// 701.52a That creature becomes your Ring-bearer until another player gains control of it.
|
||||
if (ringBearer != null) {
|
||||
GameCommand loseCommand = new GameCommand() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void run() {
|
||||
if (ringBearer.isRingBearer()) {
|
||||
p.clearRingBearer();
|
||||
}
|
||||
}
|
||||
};
|
||||
ringBearer.addChangeControllerCommand(loseCommand);
|
||||
ringBearer.addLeavesPlayCommand(loseCommand);
|
||||
}
|
||||
|
||||
// Run triggers
|
||||
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPlayer(p);
|
||||
runParams.put(AbilityKey.Card, ringBearer);
|
||||
game.getTriggerHandler().runTrigger(TriggerType.RingTemptsYou, runParams, false);
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public class TwoPilesEffect extends SpellAbilityEffect {
|
||||
sb.append("Separate all ").append(valid).append(" cards ");
|
||||
|
||||
sb.append(Lang.joinHomogenous(getTargetPlayers(sa)));
|
||||
sb.append("controls into two piles.");
|
||||
sb.append(" controls into two piles.");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -209,7 +209,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
private boolean copiedSpell = false;
|
||||
|
||||
private boolean unearthed;
|
||||
|
||||
private boolean ringbearer;
|
||||
private boolean monstrous;
|
||||
|
||||
private boolean renowned;
|
||||
@@ -225,7 +225,6 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
private int timesCrewedThisTurn = 0;
|
||||
|
||||
private int classLevel = 1;
|
||||
|
||||
private long bestowTimestamp = -1;
|
||||
private long transformedTimestamp = 0;
|
||||
private long mutatedTimestamp = -1;
|
||||
@@ -6032,6 +6031,16 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
public boolean wasDiscarded() { return discarded; }
|
||||
public void setDiscarded(boolean state) { discarded = state; }
|
||||
|
||||
public final boolean isRingBearer() {
|
||||
return ringbearer;
|
||||
}
|
||||
public final void setRingBearer(final boolean ringbearer0) {
|
||||
ringbearer = ringbearer0;
|
||||
view.updateRingBearer(this);
|
||||
}
|
||||
public final void clearRingBearer() {
|
||||
setRingBearer(false);
|
||||
}
|
||||
public final boolean isMonstrous() {
|
||||
return monstrous;
|
||||
}
|
||||
|
||||
@@ -167,6 +167,10 @@ public class CardProperty {
|
||||
if (!card.isAdventureCard()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.equals("IsRingbearer")) {
|
||||
if (!card.isRingBearer()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.equals("IsTriggerRemembered")) {
|
||||
boolean found = false;
|
||||
for (Object o : spellAbility.getTriggerRemembered()) {
|
||||
|
||||
@@ -466,6 +466,15 @@ public class CardView extends GameEntityView {
|
||||
set(TrackableProperty.ClassLevel, c.getClassLevel());
|
||||
}
|
||||
|
||||
public int getRingLevel() {
|
||||
return get(TrackableProperty.RingLevel);
|
||||
}
|
||||
void updateRingLevel(Card c) {
|
||||
Player p = c.getController();
|
||||
if (p != null && p.getTheRing() == c)
|
||||
set(TrackableProperty.RingLevel, p.getNumRingTemptedYou());
|
||||
}
|
||||
|
||||
private String getRemembered() {
|
||||
return get(TrackableProperty.Remembered);
|
||||
}
|
||||
@@ -925,6 +934,7 @@ public class CardView extends GameEntityView {
|
||||
updateZoneText(c);
|
||||
updateDamage(c);
|
||||
updateSpecialize(c);
|
||||
updateRingLevel(c);
|
||||
|
||||
if (c.getIntensity(false) > 0) {
|
||||
updateIntensity(c);
|
||||
@@ -1064,6 +1074,14 @@ public class CardView extends GameEntityView {
|
||||
set(TrackableProperty.BlockAny, c.canBlockAny());
|
||||
}
|
||||
|
||||
public boolean isRingBearer() {
|
||||
return get(TrackableProperty.IsRingBearer);
|
||||
}
|
||||
|
||||
void updateRingBearer(Card c) {
|
||||
set(TrackableProperty.IsRingBearer, c.isRingBearer());
|
||||
}
|
||||
|
||||
Set<String> getCantHaveKeyword() {
|
||||
return get(TrackableProperty.CantHaveKeyword);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import forge.game.event.*;
|
||||
import forge.game.spellability.AbilitySub;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
@@ -166,12 +167,14 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
private int startingHandSize = 7;
|
||||
private boolean unlimitedHandSize = false;
|
||||
private Card lastDrawnCard;
|
||||
private Card ringBearer, theRing;
|
||||
private String namedCard = "";
|
||||
private String namedCard2 = "";
|
||||
|
||||
private int simultaneousDamage = 0;
|
||||
|
||||
private int lastTurnNr = 0;
|
||||
private int numRingTemptedYou = 0;
|
||||
|
||||
private final Map<String, FCollection<String>> notes = Maps.newHashMap();
|
||||
private final Map<String, Integer> notedNum = Maps.newHashMap();
|
||||
@@ -1829,7 +1832,28 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
lastDrawnCard = c;
|
||||
return lastDrawnCard;
|
||||
}
|
||||
|
||||
public final Card getRingBearer() {
|
||||
return ringBearer;
|
||||
}
|
||||
public final Card getTheRing() {
|
||||
return theRing;
|
||||
}
|
||||
public final void clearTheRing() {
|
||||
theRing = null;
|
||||
}
|
||||
public final void setRingBearer(Card bearer) {
|
||||
if (bearer == null)
|
||||
return;
|
||||
clearRingBearer();
|
||||
ringBearer = bearer;
|
||||
ringBearer.setRingBearer(true);
|
||||
}
|
||||
public void clearRingBearer() {
|
||||
if (ringBearer == null)
|
||||
return;
|
||||
ringBearer.setRingBearer(false);
|
||||
ringBearer = null;
|
||||
}
|
||||
public final String getNamedCard() {
|
||||
return namedCard;
|
||||
}
|
||||
@@ -1927,6 +1951,19 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
completedDungeons.clear();
|
||||
}
|
||||
|
||||
public final int getNumRingTemptedYou() {
|
||||
return numRingTemptedYou;
|
||||
}
|
||||
public final void incrementRingTemptedYou() {
|
||||
numRingTemptedYou++;
|
||||
}
|
||||
public final void setNumRingTemptedYou(int value) {
|
||||
numRingTemptedYou = value;
|
||||
}
|
||||
public final void resetRingTemptedYou() {
|
||||
numRingTemptedYou = 0;
|
||||
}
|
||||
|
||||
public final List<Card> getPlaneswalkedToThisTurn() {
|
||||
return planeswalkedToThisTurn;
|
||||
}
|
||||
@@ -3116,7 +3153,72 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
eff.addStaticAbility(mayBePlayedAbility);
|
||||
return eff;
|
||||
}
|
||||
public void createTheRing(Card host) {
|
||||
final PlayerZone com = getZone(ZoneType.Command);
|
||||
if (theRing == null) {
|
||||
theRing = new Card(game.nextCardId(), null, game);
|
||||
theRing.setOwner(this);
|
||||
theRing.setImmutable(true);
|
||||
String image = ImageKeys.getTokenKey("the_ring");
|
||||
if (host != null) {
|
||||
theRing.setImageKey("t:the_ring_" + host.getSetCode().toLowerCase());
|
||||
theRing.setSetCode(host.getSetCode());
|
||||
} else {
|
||||
theRing.setImageKey(image);
|
||||
}
|
||||
theRing.setName("The Ring");
|
||||
theRing.updateStateForView();
|
||||
com.add(theRing);
|
||||
this.updateZoneForView(com);
|
||||
}
|
||||
}
|
||||
public void setRingLevel(int level) {
|
||||
if (getTheRing() == null)
|
||||
createTheRing(null);
|
||||
if (level == 1) {
|
||||
String legendary = "Mode$ Continuous | EffectZone$ Command | Affected$ Card.YouCtrl+IsRingbearer | AddType$ Legendary | Description$ Your Ring-bearer is legendary.";
|
||||
String cantBeBlocked = "Mode$ CantBlockBy | EffectZone$ Command | ValidAttacker$ Card.YouCtrl+IsRingbearer | ValidBlockerRelative$ Creature.powerGTX | Description$ Your Ring-bearer can't be blocked by creatures with greater power.";
|
||||
getTheRing().addStaticAbility(legendary);
|
||||
StaticAbility st = getTheRing().addStaticAbility(cantBeBlocked);
|
||||
st.setSVar("X", "Count$CardPower");
|
||||
} else if (level == 2) {
|
||||
final String attackTrig = "Mode$ Attacks | ValidCard$ Card.YouCtrl+IsRingbearer | TriggerDescription$ Whenever your ring-bearer attacks, draw a card, then discard a card. | TriggerZones$ Command";
|
||||
final String drawEffect = "DB$ Draw | Defined$ You | NumCards$ 1";
|
||||
final String discardEffect = "DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose";
|
||||
|
||||
final Trigger attackTrigger = TriggerHandler.parseTrigger(attackTrig, getTheRing(), true);
|
||||
|
||||
SpellAbility drawExecute = AbilityFactory.getAbility(drawEffect, getTheRing());
|
||||
AbilitySub discardExecute = (AbilitySub) AbilityFactory.getAbility(discardEffect, getTheRing());
|
||||
|
||||
drawExecute.setSubAbility(discardExecute);
|
||||
attackTrigger.setOverridingAbility(drawExecute);
|
||||
getTheRing().addTrigger(attackTrigger);
|
||||
} else if (level == 3) {
|
||||
final String becomesBlockedTrig = "Mode$ AttackerBlockedByCreature | ValidCard$ Card.YouCtrl+IsRingbearer| ValidBlocker$ Creature | TriggerZones$ Command | TriggerDescription$ Whenever your Ring-bearer becomes blocked a creature, that creature's controller sacrifices it at the end of combat.";
|
||||
final String endOfCombatTrig = "DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | RememberObjects$ TriggeredBlockerLKICopy | TriggerDescription$ At end of combat, the controller of the creature that blocked CARDNAME sacrifices that creature.";
|
||||
final String sacBlockerEffect = "DB$ Destroy | Defined$ DelayTriggerRememberedLKI | Sacrifice$ True";
|
||||
|
||||
final Trigger becomesBlockedTrigger = TriggerHandler.parseTrigger(becomesBlockedTrig, getTheRing(), true);
|
||||
|
||||
SpellAbility endCombatExecute = AbilityFactory.getAbility(endOfCombatTrig, getTheRing());
|
||||
AbilitySub sacExecute = (AbilitySub) AbilityFactory.getAbility(sacBlockerEffect, getTheRing());
|
||||
|
||||
endCombatExecute.setAdditionalAbility("Execute", sacExecute);
|
||||
becomesBlockedTrigger.setOverridingAbility(endCombatExecute);
|
||||
getTheRing().addTrigger(becomesBlockedTrigger);
|
||||
} else if (level == 4) {
|
||||
final String damageTrig = "Mode$ DamageDone | ValidSource$ Card.YouCtrl+IsRingbearer | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Command | TriggerDescription$ Whenever your Ring-bearer deals combat damage to a player, each opponent loses 3 life.";
|
||||
final String loseEffect = "DB$ LoseLife | Defined$ Opponent | LifeAmount$ 3";
|
||||
|
||||
final Trigger damageTrigger = TriggerHandler.parseTrigger(damageTrig, getTheRing(), true);
|
||||
SpellAbility loseExecute = AbilityFactory.getAbility(loseEffect, getTheRing());
|
||||
|
||||
damageTrigger.setOverridingAbility(loseExecute);
|
||||
getTheRing().addTrigger(damageTrigger);
|
||||
}
|
||||
getTheRing().updateStateForView();
|
||||
}
|
||||
public void changeOwnership(Card card) {
|
||||
// If lost then gained, just clear out of lost.
|
||||
// If gained then lost, just clear out of gained.
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package forge.game.trigger;
|
||||
|
||||
import forge.game.ability.AbilityKey;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.util.Localizer;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class TriggerRingTemptsYou extends Trigger {
|
||||
|
||||
public TriggerRingTemptsYou(Map<String, String> params, Card host, boolean intrinsic) {
|
||||
super(params, host, intrinsic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performTest(Map<AbilityKey, Object> runParams) {
|
||||
|
||||
if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||
sa.setTriggeringObjectsFrom(runParams, AbilityKey.Player, AbilityKey.Card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getImportantStackObjects(SpellAbility sa) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": ");
|
||||
sb.append(sa.getTriggeringObject(AbilityKey.Player)).append(", ");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -1,183 +1,184 @@
|
||||
package forge.game.trigger;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.game.card.Card;
|
||||
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public enum TriggerType {
|
||||
Abandoned(TriggerAbandoned.class),
|
||||
AbilityCast(TriggerSpellAbilityCastOrCopy.class),
|
||||
AbilityResolves(TriggerAbilityResolves.class),
|
||||
AbilityTriggered(TriggerAbilityTriggered.class),
|
||||
Adapt(TriggerAdapt.class),
|
||||
Always(TriggerAlways.class),
|
||||
Attached(TriggerAttached.class),
|
||||
AttackerBlocked(TriggerAttackerBlocked.class),
|
||||
AttackerBlockedOnce(TriggerAttackerBlockedOnce.class),
|
||||
AttackerBlockedByCreature(TriggerAttackerBlockedByCreature.class),
|
||||
AttackersDeclared(TriggerAttackersDeclared.class),
|
||||
AttackersDeclaredOneTarget(TriggerAttackersDeclared.class),
|
||||
AttackerUnblocked(TriggerAttackerUnblocked.class),
|
||||
AttackerUnblockedOnce(TriggerAttackerUnblockedOnce.class),
|
||||
Attacks(TriggerAttacks.class),
|
||||
BecomeMonarch(TriggerBecomeMonarch.class),
|
||||
BecomeMonstrous(TriggerBecomeMonstrous.class),
|
||||
BecomeRenowned(TriggerBecomeRenowned.class),
|
||||
BecomesCrewed(TriggerBecomesCrewed.class),
|
||||
BecomesTarget(TriggerBecomesTarget.class),
|
||||
BecomesTargetOnce(TriggerBecomesTargetOnce.class),
|
||||
BlockersDeclared(TriggerBlockersDeclared.class),
|
||||
Blocks(TriggerBlocks.class),
|
||||
Championed(TriggerChampioned.class),
|
||||
ChangesController(TriggerChangesController.class),
|
||||
ChangesZone(TriggerChangesZone.class),
|
||||
ChangesZoneAll(TriggerChangesZoneAll.class),
|
||||
ChaosEnsues(TriggerChaosEnsues.class),
|
||||
Clashed(TriggerClashed.class),
|
||||
ClassLevelGained(TriggerClassLevelGained.class),
|
||||
ConjureAll(TriggerConjureAll.class),
|
||||
CounterAdded(TriggerCounterAdded.class),
|
||||
CounterAddedOnce(TriggerCounterAddedOnce.class),
|
||||
CounterPlayerAddedAll(TriggerCounterPlayerAddedAll.class),
|
||||
CounterAddedAll(TriggerCounterAddedAll.class),
|
||||
Countered(TriggerCountered.class),
|
||||
CounterRemoved(TriggerCounterRemoved.class),
|
||||
CounterRemovedOnce(TriggerCounterRemovedOnce.class),
|
||||
Crewed(TriggerCrewed.class),
|
||||
Cycled(TriggerCycled.class),
|
||||
DamageAll(TriggerDamageAll.class),
|
||||
DamageDealtOnce(TriggerDamageDealtOnce.class),
|
||||
DamageDone(TriggerDamageDone.class),
|
||||
DamageDoneOnce(TriggerDamageDoneOnce.class),
|
||||
DamageDoneOnceByController(TriggerDamageDoneOnceByController.class),
|
||||
DamagePrevented(TriggerDamagePrevented.class),
|
||||
DamagePreventedOnce(TriggerDamagePreventedOnce.class),
|
||||
DayTimeChanges (TriggerDayTimeChanges.class),
|
||||
Destroyed(TriggerDestroyed.class),
|
||||
Devoured(TriggerDevoured.class),
|
||||
Discarded(TriggerDiscarded.class),
|
||||
DiscardedAll(TriggerDiscardedAll.class),
|
||||
Drawn(TriggerDrawn.class),
|
||||
DungeonCompleted(TriggerCompletedDungeon.class),
|
||||
Evolved(TriggerEvolved.class),
|
||||
ExcessDamage(TriggerExcessDamage.class),
|
||||
Enlisted(TriggerEnlisted.class),
|
||||
Exerted(TriggerExerted.class),
|
||||
Exiled(TriggerExiled.class),
|
||||
Exploited(TriggerExploited.class),
|
||||
Explores(TriggerExplores.class),
|
||||
Fight(TriggerFight.class),
|
||||
FightOnce(TriggerFightOnce.class),
|
||||
FlippedCoin(TriggerFlippedCoin.class),
|
||||
Foretell(TriggerForetell.class),
|
||||
Immediate(TriggerImmediate.class),
|
||||
Investigated(TriggerInvestigated.class),
|
||||
IsForetold(TriggerIsForetold.class),
|
||||
LandPlayed(TriggerLandPlayed.class),
|
||||
LifeGained(TriggerLifeGained.class),
|
||||
LifeLost(TriggerLifeLost.class),
|
||||
LifeLostAll(TriggerLifeLostAll.class),
|
||||
LosesGame(TriggerLosesGame.class),
|
||||
ManaAdded(TriggerManaAdded.class),
|
||||
MilledAll(TriggerMilledAll.class),
|
||||
Mutates(TriggerMutates.class),
|
||||
NewGame(TriggerNewGame.class),
|
||||
PayCumulativeUpkeep(TriggerPayCumulativeUpkeep.class),
|
||||
PayEcho(TriggerPayEcho.class),
|
||||
PayLife(TriggerPayLife.class),
|
||||
Phase(TriggerPhase.class),
|
||||
PhaseIn(TriggerPhaseIn.class),
|
||||
PhaseOut(TriggerPhaseOut.class),
|
||||
PlanarDice(TriggerPlanarDice.class),
|
||||
PlaneswalkedFrom(TriggerPlaneswalkedFrom.class),
|
||||
PlaneswalkedTo(TriggerPlaneswalkedTo.class),
|
||||
Proliferate(TriggerProliferate.class),
|
||||
Regenerated(TriggerRegenerated.class),
|
||||
Revealed(TriggerRevealed.class),
|
||||
RolledDie(TriggerRolledDie.class),
|
||||
RolledDieOnce(TriggerRolledDieOnce.class),
|
||||
RoomEntered(TriggerEnteredRoom.class),
|
||||
Sacrificed(TriggerSacrificed.class),
|
||||
Scry(TriggerScry.class),
|
||||
SearchedLibrary(TriggerSearchedLibrary.class),
|
||||
SeekAll(TriggerSeekAll.class),
|
||||
SetInMotion(TriggerSetInMotion.class),
|
||||
Shuffled(TriggerShuffled.class),
|
||||
Specializes(TriggerSpecializes.class),
|
||||
SpellAbilityCast(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellAbilityCopy(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellCast(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellCastOrCopy(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellCopy(TriggerSpellAbilityCastOrCopy.class),
|
||||
Surveil(TriggerSurveil.class),
|
||||
TakesInitiative(TriggerTakesInitiative.class),
|
||||
Taps(TriggerTaps.class),
|
||||
TapsForMana(TriggerTapsForMana.class),
|
||||
TokenCreated(TriggerTokenCreated.class),
|
||||
TokenCreatedOnce(TriggerTokenCreatedOnce.class),
|
||||
Trains(TriggerTrains.class),
|
||||
Transformed(TriggerTransformed.class),
|
||||
TurnBegin(TriggerTurnBegin.class),
|
||||
TurnFaceUp(TriggerTurnFaceUp.class),
|
||||
Unattach(TriggerUnattach.class),
|
||||
Untaps(TriggerUntaps.class),
|
||||
Vote(TriggerVote.class);
|
||||
|
||||
private final Constructor<? extends Trigger> constructor;
|
||||
|
||||
TriggerType(Class<? extends Trigger> clasz) {
|
||||
constructor = findConstructor(clasz);
|
||||
}
|
||||
|
||||
private static Constructor<? extends Trigger> findConstructor(Class<? extends Trigger> clasz) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Constructor<? extends Trigger>[] cc = (Constructor<? extends Trigger>[]) clasz.getDeclaredConstructors();
|
||||
for (Constructor<? extends Trigger> c : cc) {
|
||||
Class<?>[] pp = c.getParameterTypes();
|
||||
if (pp[0].isAssignableFrom(Map.class)) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
throw new RuntimeException("No constructor found that would take Map as 1st parameter in class " + clasz.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static TriggerType smartValueOf(String value) {
|
||||
final String valToCompate = value.trim();
|
||||
for (final TriggerType v : TriggerType.values()) {
|
||||
if (v.name().compareToIgnoreCase(valToCompate) == 0) {
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
||||
throw new RuntimeException("Element " + value + " not found in TriggerType enum");
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param mapParams
|
||||
* @param host
|
||||
* @param intrinsic
|
||||
* @return
|
||||
*/
|
||||
public Trigger createTrigger(Map<String, String> mapParams, Card host, boolean intrinsic) {
|
||||
try {
|
||||
Trigger res = constructor.newInstance(mapParams, host, intrinsic);
|
||||
res.setMode(this);
|
||||
return res;
|
||||
} catch (IllegalArgumentException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
package forge.game.trigger;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.game.card.Card;
|
||||
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public enum TriggerType {
|
||||
Abandoned(TriggerAbandoned.class),
|
||||
AbilityCast(TriggerSpellAbilityCastOrCopy.class),
|
||||
AbilityResolves(TriggerAbilityResolves.class),
|
||||
AbilityTriggered(TriggerAbilityTriggered.class),
|
||||
Adapt(TriggerAdapt.class),
|
||||
Always(TriggerAlways.class),
|
||||
Attached(TriggerAttached.class),
|
||||
AttackerBlocked(TriggerAttackerBlocked.class),
|
||||
AttackerBlockedOnce(TriggerAttackerBlockedOnce.class),
|
||||
AttackerBlockedByCreature(TriggerAttackerBlockedByCreature.class),
|
||||
AttackersDeclared(TriggerAttackersDeclared.class),
|
||||
AttackersDeclaredOneTarget(TriggerAttackersDeclared.class),
|
||||
AttackerUnblocked(TriggerAttackerUnblocked.class),
|
||||
AttackerUnblockedOnce(TriggerAttackerUnblockedOnce.class),
|
||||
Attacks(TriggerAttacks.class),
|
||||
BecomeMonarch(TriggerBecomeMonarch.class),
|
||||
BecomeMonstrous(TriggerBecomeMonstrous.class),
|
||||
BecomeRenowned(TriggerBecomeRenowned.class),
|
||||
BecomesCrewed(TriggerBecomesCrewed.class),
|
||||
BecomesTarget(TriggerBecomesTarget.class),
|
||||
BecomesTargetOnce(TriggerBecomesTargetOnce.class),
|
||||
BlockersDeclared(TriggerBlockersDeclared.class),
|
||||
Blocks(TriggerBlocks.class),
|
||||
Championed(TriggerChampioned.class),
|
||||
ChangesController(TriggerChangesController.class),
|
||||
ChangesZone(TriggerChangesZone.class),
|
||||
ChangesZoneAll(TriggerChangesZoneAll.class),
|
||||
ChaosEnsues(TriggerChaosEnsues.class),
|
||||
Clashed(TriggerClashed.class),
|
||||
ClassLevelGained(TriggerClassLevelGained.class),
|
||||
ConjureAll(TriggerConjureAll.class),
|
||||
CounterAdded(TriggerCounterAdded.class),
|
||||
CounterAddedOnce(TriggerCounterAddedOnce.class),
|
||||
CounterPlayerAddedAll(TriggerCounterPlayerAddedAll.class),
|
||||
CounterAddedAll(TriggerCounterAddedAll.class),
|
||||
Countered(TriggerCountered.class),
|
||||
CounterRemoved(TriggerCounterRemoved.class),
|
||||
CounterRemovedOnce(TriggerCounterRemovedOnce.class),
|
||||
Crewed(TriggerCrewed.class),
|
||||
Cycled(TriggerCycled.class),
|
||||
DamageAll(TriggerDamageAll.class),
|
||||
DamageDealtOnce(TriggerDamageDealtOnce.class),
|
||||
DamageDone(TriggerDamageDone.class),
|
||||
DamageDoneOnce(TriggerDamageDoneOnce.class),
|
||||
DamageDoneOnceByController(TriggerDamageDoneOnceByController.class),
|
||||
DamagePrevented(TriggerDamagePrevented.class),
|
||||
DamagePreventedOnce(TriggerDamagePreventedOnce.class),
|
||||
DayTimeChanges (TriggerDayTimeChanges.class),
|
||||
Destroyed(TriggerDestroyed.class),
|
||||
Devoured(TriggerDevoured.class),
|
||||
Discarded(TriggerDiscarded.class),
|
||||
DiscardedAll(TriggerDiscardedAll.class),
|
||||
Drawn(TriggerDrawn.class),
|
||||
DungeonCompleted(TriggerCompletedDungeon.class),
|
||||
Evolved(TriggerEvolved.class),
|
||||
ExcessDamage(TriggerExcessDamage.class),
|
||||
Enlisted(TriggerEnlisted.class),
|
||||
Exerted(TriggerExerted.class),
|
||||
Exiled(TriggerExiled.class),
|
||||
Exploited(TriggerExploited.class),
|
||||
Explores(TriggerExplores.class),
|
||||
Fight(TriggerFight.class),
|
||||
FightOnce(TriggerFightOnce.class),
|
||||
FlippedCoin(TriggerFlippedCoin.class),
|
||||
Foretell(TriggerForetell.class),
|
||||
Immediate(TriggerImmediate.class),
|
||||
Investigated(TriggerInvestigated.class),
|
||||
IsForetold(TriggerIsForetold.class),
|
||||
LandPlayed(TriggerLandPlayed.class),
|
||||
LifeGained(TriggerLifeGained.class),
|
||||
LifeLost(TriggerLifeLost.class),
|
||||
LifeLostAll(TriggerLifeLostAll.class),
|
||||
LosesGame(TriggerLosesGame.class),
|
||||
ManaAdded(TriggerManaAdded.class),
|
||||
MilledAll(TriggerMilledAll.class),
|
||||
Mutates(TriggerMutates.class),
|
||||
NewGame(TriggerNewGame.class),
|
||||
PayCumulativeUpkeep(TriggerPayCumulativeUpkeep.class),
|
||||
PayEcho(TriggerPayEcho.class),
|
||||
PayLife(TriggerPayLife.class),
|
||||
Phase(TriggerPhase.class),
|
||||
PhaseIn(TriggerPhaseIn.class),
|
||||
PhaseOut(TriggerPhaseOut.class),
|
||||
PlanarDice(TriggerPlanarDice.class),
|
||||
PlaneswalkedFrom(TriggerPlaneswalkedFrom.class),
|
||||
PlaneswalkedTo(TriggerPlaneswalkedTo.class),
|
||||
Proliferate(TriggerProliferate.class),
|
||||
Regenerated(TriggerRegenerated.class),
|
||||
Revealed(TriggerRevealed.class),
|
||||
RingTemptsYou(TriggerRingTemptsYou.class),
|
||||
RolledDie(TriggerRolledDie.class),
|
||||
RolledDieOnce(TriggerRolledDieOnce.class),
|
||||
RoomEntered(TriggerEnteredRoom.class),
|
||||
Sacrificed(TriggerSacrificed.class),
|
||||
Scry(TriggerScry.class),
|
||||
SearchedLibrary(TriggerSearchedLibrary.class),
|
||||
SeekAll(TriggerSeekAll.class),
|
||||
SetInMotion(TriggerSetInMotion.class),
|
||||
Shuffled(TriggerShuffled.class),
|
||||
Specializes(TriggerSpecializes.class),
|
||||
SpellAbilityCast(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellAbilityCopy(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellCast(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellCastOrCopy(TriggerSpellAbilityCastOrCopy.class),
|
||||
SpellCopy(TriggerSpellAbilityCastOrCopy.class),
|
||||
Surveil(TriggerSurveil.class),
|
||||
TakesInitiative(TriggerTakesInitiative.class),
|
||||
Taps(TriggerTaps.class),
|
||||
TapsForMana(TriggerTapsForMana.class),
|
||||
TokenCreated(TriggerTokenCreated.class),
|
||||
TokenCreatedOnce(TriggerTokenCreatedOnce.class),
|
||||
Trains(TriggerTrains.class),
|
||||
Transformed(TriggerTransformed.class),
|
||||
TurnBegin(TriggerTurnBegin.class),
|
||||
TurnFaceUp(TriggerTurnFaceUp.class),
|
||||
Unattach(TriggerUnattach.class),
|
||||
Untaps(TriggerUntaps.class),
|
||||
Vote(TriggerVote.class);
|
||||
|
||||
private final Constructor<? extends Trigger> constructor;
|
||||
|
||||
TriggerType(Class<? extends Trigger> clasz) {
|
||||
constructor = findConstructor(clasz);
|
||||
}
|
||||
|
||||
private static Constructor<? extends Trigger> findConstructor(Class<? extends Trigger> clasz) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Constructor<? extends Trigger>[] cc = (Constructor<? extends Trigger>[]) clasz.getDeclaredConstructors();
|
||||
for (Constructor<? extends Trigger> c : cc) {
|
||||
Class<?>[] pp = c.getParameterTypes();
|
||||
if (pp[0].isAssignableFrom(Map.class)) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
throw new RuntimeException("No constructor found that would take Map as 1st parameter in class " + clasz.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static TriggerType smartValueOf(String value) {
|
||||
final String valToCompate = value.trim();
|
||||
for (final TriggerType v : TriggerType.values()) {
|
||||
if (v.name().compareToIgnoreCase(valToCompate) == 0) {
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
||||
throw new RuntimeException("Element " + value + " not found in TriggerType enum");
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param mapParams
|
||||
* @param host
|
||||
* @param intrinsic
|
||||
* @return
|
||||
*/
|
||||
public Trigger createTrigger(Map<String, String> mapParams, Card host, boolean intrinsic) {
|
||||
try {
|
||||
Trigger res = constructor.newInstance(mapParams, host, intrinsic);
|
||||
res.setMode(this);
|
||||
return res;
|
||||
} catch (IllegalArgumentException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ public enum TrackableProperty {
|
||||
Token(TrackableTypes.BooleanType),
|
||||
TokenCard(TrackableTypes.BooleanType),
|
||||
IsCommander(TrackableTypes.BooleanType),
|
||||
IsRingBearer(TrackableTypes.BooleanType),
|
||||
CommanderAltType(TrackableTypes.StringType),
|
||||
Damage(TrackableTypes.IntegerType),
|
||||
AssignedDamage(TrackableTypes.IntegerType),
|
||||
@@ -74,6 +75,7 @@ public enum TrackableProperty {
|
||||
ChosenSector(TrackableTypes.StringType),
|
||||
Sector(TrackableTypes.StringType),
|
||||
ClassLevel(TrackableTypes.IntegerType),
|
||||
RingLevel(TrackableTypes.IntegerType),
|
||||
CurrentRoom(TrackableTypes.StringType),
|
||||
Intensity(TrackableTypes.IntegerType),
|
||||
Remembered(TrackableTypes.StringType),
|
||||
|
||||
@@ -152,6 +152,7 @@ public class CardFaceSymbols {
|
||||
|
||||
//ability icons
|
||||
MANA_IMAGES.put("commander", FSkin.getImage(FSkinProp.IMG_ABILITY_COMMANDER));
|
||||
MANA_IMAGES.put("ringbearer", FSkin.getImage(FSkinProp.IMG_ABILITY_RINGBEARER));
|
||||
MANA_IMAGES.put("toxic", FSkin.getImage(FSkinProp.IMG_ABILITY_TOXIC));
|
||||
MANA_IMAGES.put("deathtouch", FSkin.getImage(FSkinProp.IMG_ABILITY_DEATHTOUCH));
|
||||
MANA_IMAGES.put("defender", FSkin.getImage(FSkinProp.IMG_ABILITY_DEFENDER));
|
||||
|
||||
@@ -555,6 +555,10 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
CardFaceSymbols.drawAbilitySymbol("commander", g, abiX, abiY, abiScale, abiScale);
|
||||
abiY += abiSpace;
|
||||
}
|
||||
if (card.isRingBearer()) {
|
||||
CardFaceSymbols.drawAbilitySymbol("ringbearer", g, abiX, abiY, abiScale, abiScale);
|
||||
abiY += abiSpace;
|
||||
}
|
||||
if (card.getCurrentState().hasFlying()) {
|
||||
CardFaceSymbols.drawAbilitySymbol("flying", g, abiX, abiY, abiScale, abiScale);
|
||||
abiY += abiSpace;
|
||||
|
||||
@@ -420,6 +420,7 @@ public enum FSkinImage implements FImage {
|
||||
|
||||
//COMMANDER
|
||||
IMG_ABILITY_COMMANDER (FSkinProp.IMG_ABILITY_COMMANDER, SourceFile.ABILITIES),
|
||||
IMG_ABILITY_RINGBEARER (FSkinProp.IMG_ABILITY_RINGBEARER, SourceFile.MANAICONS),
|
||||
|
||||
//TOXIC
|
||||
IMG_ABILITY_TOXIC (FSkinProp.IMG_ABILITY_TOXIC, SourceFile.ICONS),
|
||||
|
||||
@@ -129,6 +129,7 @@ public class CardFaceSymbols {
|
||||
Forge.getAssets().manaImages().put("foil20", FSkinImage.FOIL_20);
|
||||
|
||||
Forge.getAssets().manaImages().put("commander", FSkinImage.IMG_ABILITY_COMMANDER);
|
||||
Forge.getAssets().manaImages().put("ringbearer", FSkinImage.IMG_ABILITY_RINGBEARER);
|
||||
Forge.getAssets().manaImages().put("toxic", FSkinImage.IMG_ABILITY_TOXIC);
|
||||
Forge.getAssets().manaImages().put("deathtouch", FSkinImage.IMG_ABILITY_DEATHTOUCH);
|
||||
Forge.getAssets().manaImages().put("defender", FSkinImage.IMG_ABILITY_DEFENDER);
|
||||
|
||||
@@ -756,7 +756,13 @@ public class CardRenderer {
|
||||
//Class level
|
||||
if (card.getCurrentState().getType().hasStringType("Class") && ZoneType.Battlefield.equals(card.getZone())) {
|
||||
List<String> markers = new ArrayList<>();
|
||||
markers.add("LV:" + card.getClassLevel());
|
||||
markers.add("CL:" + card.getClassLevel());
|
||||
drawMarkersTabs(markers, g, x, y - markersHeight, w, h, true);
|
||||
}
|
||||
//Ring level
|
||||
if (card.getRingLevel() > 0) {
|
||||
List<String> markers = new ArrayList<>();
|
||||
markers.add("RL:" + card.getRingLevel());
|
||||
drawMarkersTabs(markers, g, x, y - markersHeight, w, h, true);
|
||||
}
|
||||
|
||||
@@ -872,6 +878,11 @@ public class CardRenderer {
|
||||
abiY += abiSpace;
|
||||
abiCount += 1;
|
||||
}
|
||||
if (card.isRingBearer()) {
|
||||
CardFaceSymbols.drawSymbol("ringbearer", g, abiX, abiY, abiScale, abiScale);
|
||||
abiY += abiSpace;
|
||||
abiCount += 1;
|
||||
}
|
||||
if (card.getCurrentState().hasFlying()) {
|
||||
CardFaceSymbols.drawSymbol("flying", g, abiX, abiY, abiScale, abiScale);
|
||||
abiY += abiSpace;
|
||||
|
||||
10
forge-gui/res/cardsfolder/a/aragorn_company_leader.txt
Normal file
10
forge-gui/res/cardsfolder/a/aragorn_company_leader.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Aragorn, Company Leader
|
||||
ManaCost:1 G U
|
||||
Types:Legendary Creature Human Ranger
|
||||
PT:3/3
|
||||
T:Mode$ RingTemptsYou | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounters | TriggerDescription$ Whenever the Ring tempts you, if you chose a creature other than CARDNAME as your Ring-bearer, put your choice of a counter from among first strike, vigilance, deathtouch, and lifelink on NICKNAME.
|
||||
SVar:TrigPutCounters:DB$ PutCounter | CounterType$ First Strike,Vigilance,Deathtouch,Lifelink | Defined$ Self
|
||||
T:Mode$ CounterPlayerAddedAll | ValidObject$ Card.Self+inRealZoneBattlefield | TriggerZones$ Battlefield | ValidSource$ You | Execute$ TrigPutCountersOther | TriggerDescription$ Whenever you put one or more counters on NICKNAME, put one of each of those kinds of counters on up to one other target creature.
|
||||
SVar:TrigPutCountersOther:DB$ PutCounter | Placer$ TriggeredSource | TriggeredCounterMap$ True | CounterMapValues$ 1 | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target other creature | ValidTgts$ Creature.Other
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Whenever the Ring tempts you, if you chose a creature other than Aragorn, Company Leader as your Ring-bearer, put your choice of a counter from among first strike, vigilance, deathtouch, and lifelink on Aragorn.\nWhenever you put one or more counters on Aragorn, put one of each of those kinds of counters on up to one other target creature.
|
||||
11
forge-gui/res/cardsfolder/b/bilbo_retired_burglar.txt
Normal file
11
forge-gui/res/cardsfolder/b/bilbo_retired_burglar.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Bilbo, Retired Burglar
|
||||
ManaCost:1 U R
|
||||
Types:Legendary Creature Halfling Rogue
|
||||
PT:1/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters or leaves the battlefield, the Ring tempts you.
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigTempt | Secondary$ True | TriggerDescription$ When CARDNAME enters or leaves the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigTreasure | TriggerDescription$ Whenever NICKNAME deals combat damage to a player, create a Treasure token.
|
||||
SVar:TrigTreasure:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You
|
||||
DeckHas:Ability$Counters|Token
|
||||
Oracle:When Bilbo, Retired Burglar enters or leaves the battlefield, the Ring tempts you.\nWhenever Bilbo deals combat damage to a player, create a Treasure token.
|
||||
6
forge-gui/res/cardsfolder/b/birthday_escape.txt
Normal file
6
forge-gui/res/cardsfolder/b/birthday_escape.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Birthday Escape
|
||||
ManaCost:U
|
||||
Types:Sorcery
|
||||
A:SP$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ TrigTempt | StackDescription$ SpellDescription | SpellDescription$ Draw a card. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Draw a card. The Ring tempts you.
|
||||
@@ -4,7 +4,7 @@ Types:Plane Equilor
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | ValidCard$ Creature | Execute$ TrigPump | TriggerDescription$ Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.
|
||||
SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Double Strike & Haste
|
||||
T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control.
|
||||
SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.nonToken+YouCtrl | TgtPrompt$ Select target non-Token creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ RestorationReturn
|
||||
SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.nonToken+YouCtrl | TgtPrompt$ Select target nontoken creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ RestorationReturn
|
||||
SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | GainControl$ True
|
||||
SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True
|
||||
Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control.
|
||||
|
||||
7
forge-gui/res/cardsfolder/b/bombadils_song.txt
Normal file
7
forge-gui/res/cardsfolder/b/bombadils_song.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Bombadil's Song
|
||||
ManaCost:1 G
|
||||
Types:Instant
|
||||
A:SP$ Pump | ValidTgts$ Creature.YouCtrl | NumAtt$ 1 | NumDef$ 1 | TgtPrompt$ Select target creature you control | KW$ Hexproof | SubAbility$ TrigTempt | SpellDescription$ Target creature you control gets +1/+1 and gains hexproof until end of turn. The Ring tempts you. (A creature with hexproof can't be the target of spells or abilities your opponents control.)
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
DeckHas:Keyword$Hexproof
|
||||
Oracle:Target creature you control gets +1/+1 and gains hexproof until end of turn. The Ring tempts you. (A creature with hexproof can't be the target of spells or abilities your opponents control.)
|
||||
@@ -8,4 +8,4 @@ K:Flying
|
||||
K:First Strike
|
||||
K:Lifelink
|
||||
DeckHas:Ability$Counters|LifeGain
|
||||
Oracle:Backup 1 (When this creature enters the battlefield, put a +1/+1 counter on target creature. If that’s another creature, it gains the following abilities until end of turn.)\nFlying, first strike, lifelink
|
||||
Oracle:Backup 1 (When this creature enters the battlefield, put a +1/+1 counter on target creature. If that's another creature, it gains the following abilities until end of turn.)\nFlying, first strike, lifelink
|
||||
|
||||
@@ -13,4 +13,4 @@ SVar:X:Count$RememberedSize/Twice
|
||||
A:AB$ ChangeZone | Cost$ 1 U | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 2 | SpellDescription$ Put CARDNAME into its owner's library third from the top.
|
||||
DeckHas:Ability$Discard
|
||||
SVar:HasAttackEffect:TRUE
|
||||
Oracle:Whenever Borborygmos and Fblthp enters the battlefield or attacks, draw a card, then you may discard any number of land cards. When you discard one or more cards this way, Borborygmos and Fblthp deals twice that much damage to target creature.\n{1}{U}: Put Borborygmos and Fblthp into its owner’s library third from the top.
|
||||
Oracle:Whenever Borborygmos and Fblthp enters the battlefield or attacks, draw a card, then you may discard any number of land cards. When you discard one or more cards this way, Borborygmos and Fblthp deals twice that much damage to target creature.\n{1}{U}: Put Borborygmos and Fblthp into its owner's library third from the top.
|
||||
|
||||
10
forge-gui/res/cardsfolder/b/boromir_warden_of_the_tower.txt
Normal file
10
forge-gui/res/cardsfolder/b/boromir_warden_of_the_tower.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Boromir, Warden of the Tower
|
||||
ManaCost:2 W
|
||||
Types:Legendary Creature Human Soldier
|
||||
PT:3/3
|
||||
K:Vigilance
|
||||
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigCounter | ValidSA$ Spell.ManaSpent EQ0 | TriggerDescription$ Whenever an opponent casts a spell, if no mana was spent to cast it, counter that spell.
|
||||
SVar:TrigCounter:DB$ Counter | Defined$ TriggeredSpellAbility
|
||||
A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Indestructible | SubAbility$ TrigTempt | SpellDescription$ Creatures you control gain indestructible until end of turn. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Vigilance\nWhenever an opponent casts a spell, if no mana was spent to cast it, counter that spell.\nSacrifice Boromir, Warden of the Tower: Creatures you control gain indestructible until end of turn. The Ring tempts you.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Breaking of the Fellowship
|
||||
ManaCost:1 R
|
||||
Types:Sorcery
|
||||
A:SP$ Pump | Cost$ R | ValidTgts$ Creature.OppCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature an opponent controls | SubAbility$ MutinyDamage | StackDescription$ None | SpellDescription$ Target creature an opponent controls deals damage equal to its power to another target creature that player controls. The Ring tempts you.
|
||||
SVar:MutinyDamage:DB$ DealDamage | ValidTgts$ Creature | TargetUnique$ True | TargetsWithDefinedController$ ParentTargetedController | AILogic$ PowerDmg | NumDmg$ X | DamageSource$ ParentTarget | SubAbility$ TrigTempt
|
||||
SVar:X:ParentTargeted$CardPower
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Target creature an opponent controls deals damage equal to its power to another target creature that player controls. The Ring tempts you.
|
||||
8
forge-gui/res/cardsfolder/c/call_of_the_ring.txt
Normal file
8
forge-gui/res/cardsfolder/c/call_of_the_ring.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Call of the Ring
|
||||
ManaCost:1 B
|
||||
Types:Enchantment
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigTempt | TriggerDescription$ At the beginning of your upkeep, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ RingTemptsYou | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you choose a creature as your Ring-bearer, you may pay 2 life. If you do, draw a card.
|
||||
SVar:TrigDraw:AB$ Draw | Cost$ PayLife<2>
|
||||
Oracle:At the beginning of your upkeep, the Ring tempts you.\nWhenever you choose a creature as your Ring-bearer, you may pay 2 life. If you do, draw a card.
|
||||
6
forge-gui/res/cardsfolder/c/claim_the_precious.txt
Normal file
6
forge-gui/res/cardsfolder/c/claim_the_precious.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Claim the Precious
|
||||
ManaCost:1 B B
|
||||
Types:Sorcery
|
||||
A:SP$ Destroy | Cost$ 1 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ TrigTempt | SpellDescription$ Destroy target creature. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Destroy target creature. The Ring tempts you.
|
||||
@@ -3,4 +3,4 @@ ManaCost:2 B
|
||||
Types:Instant
|
||||
K:Convoke
|
||||
A:SP$ Pump | ValidTgts$ Creature | NumAtt$ -3 | NumDef$ -3 | IsCurse$ True | SpellDescription$ Target creature gets -3/-3 until end of turn.
|
||||
Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature’s color.)\nTarget creature gets -3/-3 until end of turn.
|
||||
Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nTarget creature gets -3/-3 until end of turn.
|
||||
@@ -4,4 +4,4 @@ Types:Creature Phyrexian Bear Rhino
|
||||
PT:8/8
|
||||
K:Trample
|
||||
K:Hexproof
|
||||
Oracle:Trample\nHexproof (This creature can’t be the target of spells or abilities your opponents control.)
|
||||
Oracle:Trample\nHexproof (This creature can't be the target of spells or abilities your opponents control.)
|
||||
6
forge-gui/res/cardsfolder/d/dreadful_as_the_storm.txt
Normal file
6
forge-gui/res/cardsfolder/d/dreadful_as_the_storm.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Dreadful as the Storm
|
||||
ManaCost:2 U
|
||||
Types:Instant
|
||||
A:SP$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Power$ 5 | Toughness$ 5 | SubAbility$ TrigTempt | SpellDescription$ Target creature has base power and toughness 5/5 until end of turn. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Target creature has base power and toughness 5/5 until end of turn. The Ring tempts you.
|
||||
7
forge-gui/res/cardsfolder/d/dunedain_rangers.txt
Normal file
7
forge-gui/res/cardsfolder/d/dunedain_rangers.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Dunedain Rangers
|
||||
ManaCost:3 G
|
||||
Types:Creature Human Ranger
|
||||
PT:4/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | IsPresent$ Card.YouCtrl+IsRingbearer | PresentCompare$ EQ0 | Execute$ TrigTempt | TriggerDescription$ Landfall — Whenever a land enters the battlefield under your control, if you don't control a Ring-bearer, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Landfall — Whenever a land enters the battlefield under your control, if you don't control a Ring-bearer, the Ring tempts you.
|
||||
9
forge-gui/res/cardsfolder/e/elrond_lord_of_rivendell.txt
Normal file
9
forge-gui/res/cardsfolder/e/elrond_lord_of_rivendell.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Elrond, Lord of Rivendell
|
||||
ManaCost:2 U
|
||||
Types:Legendary Creature Elf Noble
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | ValidCard$ Card.Self,Creature.YouCtrl+Other | Origin$ Any | Destination$ Battlefield | Execute$ TrigScry | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield under your control, scry 1. If this is the second time this ability has resolved this turn, the Ring tempts you.
|
||||
SVar:TrigScry:DB$ Scry | ScryNum$ 1 | SubAbility$ TrigTempt
|
||||
SVar:TrigTempt:DB$ RingTemptsYou | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ2
|
||||
SVar:Resolved:Count$ResolvedThisTurn
|
||||
Oracle:Whenever Elrond, Lord of Rivendell or another creature enters the battlefield under your control, scry 1. If this is the second time this ability has resolved this turn, the Ring tempts you.
|
||||
8
forge-gui/res/cardsfolder/e/enraged_huorn.txt
Normal file
8
forge-gui/res/cardsfolder/e/enraged_huorn.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Enraged Huorn
|
||||
ManaCost:4 G
|
||||
Types:Creature Treefolk
|
||||
PT:4/5
|
||||
K:Trample
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Trample\nWhen Enraged Huorn enters the battlefield, the Ring tempts you.
|
||||
@@ -4,7 +4,7 @@ Types:Creature Vampire Knight
|
||||
PT:2/3
|
||||
K:Menace
|
||||
K:Lifelink
|
||||
T:Mode$ DamageDone | ValidSource$ Knight.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Knight you control deals combat damage to a player, put a +1/+1 counter on that creature and create a Blood token. (It’s an artifact with “{1}, {T}, Discard a card, Sacrifice this artifact: Draw a card.”)
|
||||
T:Mode$ DamageDone | ValidSource$ Knight.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Knight you control deals combat damage to a player, put a +1/+1 counter on that creature and create a Blood token. (It's an artifact with "{1}, {T}, Discard a card, Sacrifice this artifact: Draw a card.")
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ TriggeredSourceLKICopy | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBToken
|
||||
SVar:DBToken:DB$ Token | TokenScript$ c_a_blood_draw
|
||||
DeckHas:Ability$LifeGain|Token|Counters & Type$Blood|Artifact
|
||||
|
||||
11
forge-gui/res/cardsfolder/f/faramir_field_commander.txt
Normal file
11
forge-gui/res/cardsfolder/f/faramir_field_commander.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Faramir, Field Commander
|
||||
ManaCost:3 W
|
||||
Types:Legendary Creature Human Soldier
|
||||
PT:3/3
|
||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | CheckSVar$ X | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ At the beginning of your end step, if a creature died under your control this turn, draw a card.
|
||||
T:Mode$ RingTemptsYou | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever the Ring tempts you, if you chose a creature other than CARDNAME as your Ring-bearer, create a 1/1 white Human Soldier creature token.
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_human_soldier | TokenOwner$ You
|
||||
SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature.YouCtrl
|
||||
SVar:TrigDraw:DB$ Draw | NumCards$ 1
|
||||
DeckHas:Ability$Token
|
||||
Oracle:At the beginning of your end step, if a creature died under your control this turn, draw a card.\nWhenever the Ring tempts you, if you chose a creature other than Faramir, Field Commander as your Ring-bearer, create a 1/1 white Human Soldier creature token.
|
||||
9
forge-gui/res/cardsfolder/f/fiery_inscription.txt
Normal file
9
forge-gui/res/cardsfolder/f/fiery_inscription.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Fiery Inscription
|
||||
ManaCost:2 R
|
||||
Types:Enchantment
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to each opponent.
|
||||
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2
|
||||
DeckHints:Type$Instant|Sorcery
|
||||
Oracle:When Fiery Inscription enters the battlefield, the Ring tempts you.\nWhenever you cast an instant or sorcery spell, Fiery Inscription deals 2 damage to each opponent.
|
||||
12
forge-gui/res/cardsfolder/f/frodo_adventurous_hobbit.txt
Normal file
12
forge-gui/res/cardsfolder/f/frodo_adventurous_hobbit.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Name:Frodo, Adventurous Hobbit
|
||||
ManaCost:W B
|
||||
Types:Legendary Creature Halfling Scout
|
||||
PT:1/3
|
||||
K:Partner:Sam, Loyal Attendant:Sam
|
||||
K:Vigilance
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTempt | CheckSVar$ YouLifeGained | SVarCompare$ GE3 | TriggerDescription$ Whenever CARDNAME attacks, if you gained 3 or more life this turn, the Ring tempts you. Then if NICKNAME is your Ring-bearer and the Ring has tempted you two or more times this game, draw a card.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou | SubAbility$ DBDraw
|
||||
SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionCheckSVar$ NumRingTempted | ConditionSVarCompare$ GE2 | ConditionPresent$ Card.Self+IsRingbearer | ConditionCompare$ GE1
|
||||
SVar:YouLifeGained:Count$LifeYouGainedThisTurn
|
||||
SVar:NumRingTempted:PlayerCountPropertyYou$RingTemptedYou
|
||||
Oracle:Partner with Sam, Loyal Attendant\nVigilance\nWhenever Frodo, Adventurous Hobbit attacks, if you gained 3 or more life this turn, the Ring tempts you. Then if Frodo is your Ring-bearer and the Ring has tempted you two or more times this game, draw a card.
|
||||
8
forge-gui/res/cardsfolder/f/frodo_baggins.txt
Normal file
8
forge-gui/res/cardsfolder/f/frodo_baggins.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Frodo Baggins
|
||||
ManaCost:G W
|
||||
Types:Legendary Creature Halfling Scout
|
||||
PT:1/3
|
||||
T:Mode$ ChangesZone | ValidCard$ Card.Self,Creature.Other+Legendary+YouCtrl | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigTempt | TriggerDescription$ Whenever CARDNAME or another legendary creature enters the battlefield under your control, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
S:Mode$ Continuous | Affected$ Card.Self+IsRingbearer | AddHiddenKeyword$ CARDNAME must be blocked if able. | Description$ As long as NICKNAME is your Ring-bearer, it must be blocked if able.
|
||||
Oracle:Whenever Frodo Baggins or another legendary creature enters the battlefield under your control, the Ring tempts you.\nAs long as Frodo is your Ring-bearer, it must be blocked if able.
|
||||
13
forge-gui/res/cardsfolder/f/frodo_saurons_bane.txt
Normal file
13
forge-gui/res/cardsfolder/f/frodo_saurons_bane.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Frodo, Sauron's Bane
|
||||
ManaCost:W
|
||||
Types:Legendary Creature Halfling Citizen
|
||||
PT:1/2
|
||||
A:AB$ Animate | Cost$ WB WB | ConditionPresent$ Card.Self+Citizen | Types$ Halfling,Scout | RemoveCreatureTypes$ True | Duration$ Permanent | Power$ 2 | Toughness$ 3 | Keywords$ Lifelink | SpellDescription$ If CARDNAME is a Citizen, it becomes a Halfling Scout with base power and toughness 2/3 and lifelink.
|
||||
A:AB$ Animate | Cost$ B B B | ConditionPresent$ Card.Self+Scout | Types$ Halfling,Rogue | RemoveCreatureTypes$ True | Duration$ Permanent | Triggers$ TrigDamageDone | SpellDescription$ If NICKNAME is a Scout, it becomes a Halfling Rogue with "Whenever this creature deals combat damage to a player, that player loses the game if the Ring has tempted you four or more times this game. Otherwise, the Ring tempts you."
|
||||
SVar:TrigDamageDone:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigBranch | TriggerDescription$ Whenever this creature deals combat damage to a player, that player loses the game if the Ring has tempted you four or more times this game. Otherwise, the Ring tempts you.
|
||||
SVar:TrigBranch:DB$ Branch | BranchConditionSVar$ NumRingTempted | BranchConditionSVarCompare$ GE4 | TrueSubAbility$ TrigTheyLose | FalseSubAbility$ TrigTempt
|
||||
SVar:TrigTheyLose:DB$ LosesGame | Defined$ TriggeredTarget
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
SVar:NumRingTempted:PlayerCountPropertyYou$RingTemptedYou
|
||||
DeckHas:Ability$LifeGain
|
||||
Oracle:{W/B}{W/B}: If Frodo, Sauron's Bane is a Citizen, it becomes a Halfling Scout with base power and toughness 2/3 and lifelink.\n{B}{B}{B}: If Frodo is a Scout, it becomes a Halfling Rogue with "Whenever this creature deals combat damage to a player, that player loses the game if the Ring has tempted you four or more times this game. Otherwise, the Ring tempts you."
|
||||
9
forge-gui/res/cardsfolder/g/galadriel_of_lothlorien.txt
Normal file
9
forge-gui/res/cardsfolder/g/galadriel_of_lothlorien.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Galadriel of Lothlorien
|
||||
ManaCost:1 G U
|
||||
Types:Legendary Creature Elf Noble
|
||||
PT:3/3
|
||||
T:Mode$ RingTemptsYou | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigScry | TriggerDescription$ Whenever the Ring tempts you, if you chose a creature other than CARDNAME as your Ring-bearer, scry 3.
|
||||
SVar:TrigScry:DB$ Scry | ScryNum$ 3
|
||||
T:Mode$ Scry | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBReveal | TriggerDescription$ Whenever you scry, you may reveal the top card of your library. If a land card is revealed this way, put it onto the battlefield tapped.
|
||||
SVar:DBReveal:DB$ Dig | DigNum$ 1 | Reveal$ True | Optional$ True | ChangeNum$ 1 | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | DestinationZone2$ Library | LibraryPosition2$ 0
|
||||
Oracle:Whenever the Ring tempts you, if you chose a creature other than Galadriel of Lothlorien as your Ring-bearer, scry 3.\nWhenever you scry, you may reveal the top card of your library. If a land card is revealed this way, put it onto the battlefield tapped.
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Gandalf, Friend of the Shire
|
||||
ManaCost:3 U
|
||||
Types:Legendary Creature Avatar Wizard
|
||||
PT:2/4
|
||||
K:Flash
|
||||
S:Mode$ CastWithFlash | ValidCard$ Sorcery | ValidSA$ Spell | Caster$ You | Description$ You may cast sorcery spells as though they had flash.
|
||||
T:Mode$ RingTemptsYou | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever the Ring tempts you, if you chose a creature other than CARDNAME as your Ring-bearer, draw a card.
|
||||
SVar:TrigDraw:DB$ Draw | NumCards$ 1
|
||||
Oracle:Flash\nYou may cast sorcery spells as though they had flash.\nWhenever the Ring tempts you, if you chose a creature other than Gandalf, Friend of the Shire as your Ring-bearer, draw a card.
|
||||
6
forge-gui/res/cardsfolder/g/glorious_gale.txt
Normal file
6
forge-gui/res/cardsfolder/g/glorious_gale.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Glorious Gale
|
||||
ManaCost:1 U
|
||||
Types:Instant
|
||||
A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | TgtPrompt$ Select target creature spell | RememberCountered$ True | ValidTgts$ Card.Creature | SubAbility$ TrigTempt | SpellDescription$ Counter target creature spell. If it was a legendary spell, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou | ConditionDefined$ Targeted | ConditionPresent$ Spell.Legendary
|
||||
Oracle:Counter target creature spell. If it was a legendary spell, the Ring tempts you.
|
||||
9
forge-gui/res/cardsfolder/g/gollum_patient_plotter.txt
Normal file
9
forge-gui/res/cardsfolder/g/gollum_patient_plotter.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Gollum, Patient Plotter
|
||||
ManaCost:1 B
|
||||
Types:Legendary Creature Halfling Horror
|
||||
PT:3/1
|
||||
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Execute$ TrigTempt | TriggerDescription$ When CARDNAME leaves the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
A:AB$ ChangeZone | Cost$ B Sac<1/Creature> | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SorcerySpeed$ True | SpellDescription$ Return NICKNAME from your graveyard to your hand. Activate only as a sorcery. | CostDesc$ Sacrifice a creature:
|
||||
SVar:AIPreference:SacCost$Creature.token,Creature.cmcLE1
|
||||
Oracle:When Gollum, Patient Plotter leaves the battlefield, the Ring tempts you.\n{B}, Sacrifice a creature: Return Gollum from your graveyard to your hand. Activate only as a sorcery.
|
||||
6
forge-gui/res/cardsfolder/g/gollums_bite.txt
Normal file
6
forge-gui/res/cardsfolder/g/gollums_bite.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Gollum's Bite
|
||||
ManaCost:B
|
||||
Types:Instant
|
||||
A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | SpellDescription$ Target creature gets -2/-2 until end of turn.
|
||||
A:AB$ RingTemptsYou | Cost$ 3 B ExileFromGrave<1/CARDNAME> | SorcerySpeed$ True | ActivationZone$ Graveyard | SpellDescription$ The Ring tempts you. Activate only as a sorcery.
|
||||
Oracle:Target creature gets -2/-2 until end of turn.\n{3}{B}, Exile Gollum's Bite from your graveyard: The Ring tempts you. Activate only as a sorcery.
|
||||
7
forge-gui/res/cardsfolder/h/horses_of_the_bruinen.txt
Normal file
7
forge-gui/res/cardsfolder/h/horses_of_the_bruinen.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Horses of the Bruinen
|
||||
ManaCost:3 U U
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ 3 U U | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBScry | SpellDescription$ Return up to two target creatures to their owners' hands.
|
||||
SVar:DBScry:DB$ Scry | ScryNum$ 1 | SubAbility$ TrigTempt
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Return up to two target creatures to their owners' hands. Scry 1. The Ring tempts you.
|
||||
10
forge-gui/res/cardsfolder/i/in_the_darkness_bind_them.txt
Normal file
10
forge-gui/res/cardsfolder/i/in_the_darkness_bind_them.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:In the Darkness Bind Them
|
||||
ManaCost:2 U B R
|
||||
Types:Enchantment Saga
|
||||
K:Saga:4:DBToken,DBToken,DBToken,DBGainControl
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_3_3_wraith_menace | TokenOwner$ You | SubAbility$ TrigTempt | SpellDescription$ Create a 3/3 black Wraith creature token with menace. The Ring tempts you.
|
||||
SVar:DBGainControl:DB$ GainControl | ValidTgts$ Creature.OppCtrl | SubAbility$ TrigTempt | TgtPrompt$ Select target creature an opponent controls to gain control of. | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ For each opponent, gain control of up to one target creature that player controls until end of turn. Untap those creatures. They gain haste until end of turn. The Ring tempts you.
|
||||
SVar:OneEach:PlayerCountOpponents$Amount
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
DeckHas:Ability$Token
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after IV.)\nI, II, III — Create a 3/3 black Wraith creature token with menace. The Ring tempts you.\nIV — For each opponent, gain control of up to one target creature that player controls until end of turn. Untap those creatures. They gain haste until end of turn. The Ring tempts you.
|
||||
7
forge-gui/res/cardsfolder/i/inherited_envelope.txt
Normal file
7
forge-gui/res/cardsfolder/i/inherited_envelope.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Inherited Envelope
|
||||
ManaCost:3
|
||||
Types:Artifact
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color.
|
||||
Oracle:When Inherited Envelope enters the battlefield, the Ring tempts you.\n{T}: Add one mana of any color.
|
||||
@@ -2,6 +2,6 @@ Name:Jace's Defeat
|
||||
ManaCost:1 U
|
||||
Types:Instant
|
||||
A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | TgtPrompt$ Select target Blue spell | ValidTgts$ Card.Blue | SubAbility$ DBScry | SpellDescription$ Counter target blue spell. If it was a Jace planeswalker spell, scry 2.
|
||||
SVar:DBScry:DB$ Scry | ScryNum$ 2 | ConditionDefined$ Targeted | ConditionPresent$ Planeswalker.Jace
|
||||
SVar:DBScry:DB$ Scry | ScryNum$ 2 | ConditionDefined$ Targeted | ConditionPresent$ Spell.Jace+Planeswalker
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:Counter target blue spell. If it was a Jace planeswalker spell, scry 2.
|
||||
|
||||
7
forge-gui/res/cardsfolder/m/mirrormere_guardian.txt
Normal file
7
forge-gui/res/cardsfolder/m/mirrormere_guardian.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Mirrormere Guardian
|
||||
ManaCost:2 G
|
||||
Types:Creature Dwarf Soldier
|
||||
PT:4/2
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME dies, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:When Mirrormere Guardian dies, the Ring tempts you.
|
||||
13
forge-gui/res/cardsfolder/n/nazgul.txt
Normal file
13
forge-gui/res/cardsfolder/n/nazgul.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Nazgul
|
||||
ManaCost:2 B
|
||||
Types:Creature Wraith Knight
|
||||
PT:1/2
|
||||
K:Deathtouch
|
||||
K:DeckLimit:9:A deck can have up to nine cards named CARDNAME.
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ RingTemptsYou | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCounters | TriggerDescription$ Whenever the Ring tempts you, put a +1/+1 counter on each Wraith you control.
|
||||
SVar:TrigCounters:DB$ PutCounterAll | ValidCards$ Creature.Wraith+YouCtrl | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckNeeds:Name$Nazgul
|
||||
DeckHas:Ability$Token
|
||||
Oracle:Deathtouch\nWhen Nazgul enters the battlefield, the Ring tempts you.\nWhenever the Ring tempts you, put a +1/+1 counter on each Wraith you control.\nA deck can have up to nine cards named Nazgul.
|
||||
@@ -5,7 +5,6 @@ PT:2/4
|
||||
K:Transmute:1 B B
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEachOpp | TriggerDescription$ When CARDNAME enters the battlefield, each opponent loses 1 life for each creature they control.
|
||||
SVar:TrigEachOpp:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ TrigLoseLife
|
||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X
|
||||
SVar:X:Count$Valid Creature.RememberedPlayerCtrl
|
||||
Oracle:When Netherborn Phalanx enters the battlefield, each opponent loses 1 life for each creature they control.\nTransmute {1}{B}{B} ({1}{B}{B}, Discard this card: Search your library for a card with the same mana value as this card, reveal it, put it into your hand, then then shuffle. Transmute only as a sorcery.)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Now for Wrath, Now for Ruin!
|
||||
ManaCost:3 W
|
||||
Types:Sorcery
|
||||
A:SP$ PutCounterAll | Cost$ 3 W | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPumpAll | SpellDescription$ Put a +1/+1 counter on each creature you control. They gain vigilance until end of turn. The Ring tempts you.
|
||||
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Vigilance | SubAbility$ TrigTempt
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
SVar:PlayMain1:TRUE
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Put a +1/+1 counter on each creature you control. They gain vigilance until end of turn. The Ring tempts you.
|
||||
12
forge-gui/res/cardsfolder/o/one_ring_to_rule_them_all.txt
Normal file
12
forge-gui/res/cardsfolder/o/one_ring_to_rule_them_all.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Name:One Ring to Rule Them All
|
||||
ManaCost:2 B B
|
||||
Types:Enchantment Saga
|
||||
K:Saga:3:DBTempt,DBDestroy,DBEachOpp
|
||||
SVar:DBTempt:DB$ RingTemptsYou | SubAbility$ DBMill | SpellDescription$ The Ring tempts you, then each player mills cards equal to your Ring-bearer's power.
|
||||
SVar:DBMill:DB$ Mill | NumCards$ X | Defined$ Player
|
||||
SVar:X:Count$Valid Creature.YouCtrl+IsRingbearer$CardPower
|
||||
SVar:DBDestroy:DB$ DestroyAll | ValidCards$ Creature.nonLegendary | SpellDescription$ Destroy all nonlegendary creatures.
|
||||
SVar:DBEachOpp:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ TrigLoseLife | SpellDescription$ Each opponent loses 1 life for each creature card in that player's graveyard.
|
||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ Y
|
||||
SVar:Y:Count$ValidGraveyard Creature.RememberedPlayerCtrl
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — The Ring tempts you, then each player mills cards equal to your Ring-bearer's power.\nII — Destroy all nonlegendary creatures.\nIII — Each opponent loses 1 life for each creature card in that player's graveyard.
|
||||
@@ -4,4 +4,4 @@ Types:Artifact Equipment
|
||||
K:Convoke
|
||||
K:Equip:2
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddToughness$ 1 | AddKeyword$ Trample | Description$ Equipped creature gets +3/+1 and has trample.
|
||||
Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for 1 or one mana of that creature’s color.)\nEquipped creature gets +3/+1 and has trample.\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.)
|
||||
Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for 1 or one mana of that creature's color.)\nEquipped creature gets +3/+1 and has trample.\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.)
|
||||
6
forge-gui/res/cardsfolder/r/rangers_firebrand.txt
Normal file
6
forge-gui/res/cardsfolder/r/rangers_firebrand.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Ranger's Firebrand
|
||||
ManaCost:R
|
||||
Types:Sorcery
|
||||
A:SP$ DealDamage | Cost$ R | ValidTgts$ Any | NumDmg$ 2 | SubAbility$ TrigTempt | SpellDescription$ CARDNAME deals 2 damage to any target. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Ranger's Firebrand deals 2 damage to any target. The Ring tempts you.
|
||||
10
forge-gui/res/cardsfolder/r/rangers_of_Ithilien.txt
Normal file
10
forge-gui/res/cardsfolder/r/rangers_of_Ithilien.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Rangers of Ithilien
|
||||
ManaCost:2 U U
|
||||
Types:Creature Human Ranger
|
||||
PT:3/3
|
||||
K:Vigilance
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, gain control of up to one target creature with lesser power for as long as you control CARDNAME. Then the Ring tempts you.
|
||||
SVar:TrigChange:DB$ GainControl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target creature | ValidTgts$ Creature.powerLTZ | SubAbility$ TrigTempt | LoseControl$ LeavesPlay,LoseControl | SpellDescription$ Gain control of up to one target creature with lesser power for as long as you control CARDNAME. Then the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
SVar:Z:Count$CardPower
|
||||
Oracle:Vigilance\nWhen Rangers of Ithilien enters the battlefield, gain control of up to one target creature with lesser power for as long as you control Rangers of Ithilien. Then the Ring tempts you.
|
||||
7
forge-gui/res/cardsfolder/r/relentless_rohirrim.txt
Normal file
7
forge-gui/res/cardsfolder/r/relentless_rohirrim.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Relentless Rohirrim
|
||||
ManaCost:3 R
|
||||
Types:Creature Human Knight
|
||||
PT:4/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:When Relentless Rohirrim enters the battlefield, the Ring tempts you.
|
||||
6
forge-gui/res/cardsfolder/r/ringsight.txt
Normal file
6
forge-gui/res/cardsfolder/r/ringsight.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Ringsight
|
||||
ManaCost:1 U B
|
||||
Types:Sorcery
|
||||
A:SP$ RingTemptsYou | SubAbility$ TrigSearch | SpellDescription$ The Ring tempts you. Search your library for a card that shares a color with a legendary creature you control, reveal it, put it into your hand, then shuffle.
|
||||
SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card.SharesColorWith Creature.Legendary+YouCtrl
|
||||
Oracle:The Ring tempts you. Search your library for a card that shares a color with a legendary creature you control, reveal it, put it into your hand, then shuffle.
|
||||
10
forge-gui/res/cardsfolder/r/ringwraiths.txt
Normal file
10
forge-gui/res/cardsfolder/r/ringwraiths.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Ringwraiths
|
||||
ManaCost:4 B B
|
||||
Types:Creature Wraith Knight
|
||||
PT:5/5
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature an opponent controls gets -3/-3 until end of turn. If that creature is legendary, its controller loses 3 life.
|
||||
SVar:TrigPump:DB$ Pump | NumAtt$ -3 | NumDef$ -3 | IsCurse$ True | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature | SubAbility$ TrigLose
|
||||
SVar:TrigLose:DB$ LoseLife | Defined$ TargetedController | LifeAmount$ 3 | ConditionDefined$ Targeted | ConditionPresent$ Legendary
|
||||
T:Mode$ RingTemptsYou | Execute$ TrigReturn | TriggerZones$ Graveyard | TriggerDescription$ When the Ring tempts you, return CARDNAME from your graveyard to your hand.
|
||||
SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ Self
|
||||
Oracle:When Ringwraiths enters the battlefield, target creature an opponent controls gets -3/-3 until end of turn. If that creature is legendary, its controller loses 3 life.\nWhen the Ring tempts you, return Ringwraiths from your graveyard to your hand.
|
||||
8
forge-gui/res/cardsfolder/r/rohirrim_lancer.txt
Normal file
8
forge-gui/res/cardsfolder/r/rohirrim_lancer.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Rohirrim Lancer
|
||||
ManaCost:R
|
||||
Types:Creature Human Knight
|
||||
PT:1/1
|
||||
K:Menace
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME dies, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Menace (This creature can’t be blocked except by two or more creatures.)\nWhen Rohirrim Lancer dies, the Ring tempts you.
|
||||
@@ -2,7 +2,7 @@ Name:Saint Traft and Rem Karolus
|
||||
ManaCost:U R W
|
||||
Types:Legendary Creature Spirit Human
|
||||
PT:3/4
|
||||
T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME becomes tapped, create a 1/1 red Human creature token if this is the first time this ability has resolved this turn. If it’s the second time, create a 1/1 blue Spirit creature token with flying. If it’s the third time, create a 4/4 white Angel creature token with flying.
|
||||
T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME becomes tapped, create a 1/1 red Human creature token if this is the first time this ability has resolved this turn. If it's the second time, create a 1/1 blue Spirit creature token with flying. If it's the third time, create a 4/4 white Angel creature token with flying.
|
||||
SVar:TrigToken:DB$ Token | TokenScript$ r_1_1_human | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ1 | SubAbility$ DBTokenBis
|
||||
SVar:DBTokenBis:DB$ Token | TokenScript$ u_1_1_spirit_flying | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ2 | SubAbility$ DBTokenTrice
|
||||
SVar:DBTokenTrice:DB$ Token | TokenScript$w_4_4_angel_flying | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ3
|
||||
|
||||
6
forge-gui/res/cardsfolder/s/sams_desperate_rescue.txt
Normal file
6
forge-gui/res/cardsfolder/s/sams_desperate_rescue.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Sam's Desperate Rescue
|
||||
ManaCost:B
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Cost$ B | Origin$ Graveyard | Destination$ Hand | SubAbility$ TrigTempt | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to your hand. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Return target creature card from your graveyard to your hand. The Ring tempts you.
|
||||
10
forge-gui/res/cardsfolder/s/samwise_the_stouthearted.txt
Normal file
10
forge-gui/res/cardsfolder/s/samwise_the_stouthearted.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Samwise the Stouthearted
|
||||
ManaCost:1 W
|
||||
Types:Legendary Creature Halfling Peasant
|
||||
PT:2/1
|
||||
K:Flash
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, choose up to one target permanent card in your graveyard that was put there from the battlefield this turn. Return it to your hand. Then the Ring tempts you.
|
||||
SVar:TrigChangeZone:DB$ ChangeZone | ValidTgts$ Permanent.YouOwn+ThisTurnEnteredFrom_Battlefield | Origin$ Graveyard | Destination$ Hand | SubAbility$ TrigTempt | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target permanent card in your graveyard that was put there from the battlefield this turn
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
DeckHas:Ability$Graveyard
|
||||
Oracle:Flash\nWhen Samwise the Stouthearted enters the battlefield, choose up to one target permanent card in your graveyard that was put there from the battlefield this turn. Return it to your hand. Then the Ring tempts you.
|
||||
13
forge-gui/res/cardsfolder/s/sauron_lord_of_the_rings.txt
Normal file
13
forge-gui/res/cardsfolder/s/sauron_lord_of_the_rings.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Sauron, Lord of the Rings
|
||||
ManaCost:5 U B R
|
||||
Types:Legendary Creature Avatar Horror
|
||||
PT:9/9
|
||||
K:Trample
|
||||
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigAmass | TriggerDescription$ When you cast this spell, amass Orcs 5, mill five cards, then return a creature card from your graveyard to the battlefield.
|
||||
SVar:TrigAmass:DB$ Amass | Type$ Orc | Num$ 5 | SubAbility$ TrigMill
|
||||
SVar:TrigMill:DB$ Mill | Defined$ You | NumCards$ 5 | SubAbility$ DBReturn
|
||||
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Mandatory$ True | ChangeType$ Creature.YouOwn | ChangeNum$ 1 | Hidden$ True
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.OppCtrl+IsCommander | TriggerZones$ Battlefield | Execute$ TrigTempt | TriggerDescription$ Whenever a commander an opponent controls dies, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
DeckHas:Ability$Token|Graveyard
|
||||
Oracle:When you cast this spell, amass Orcs 5, mill five cards, then return a creature card from your graveyard to the battlefield.\nTrample\nWhenever a commander an opponent controls dies, the Ring tempts you.
|
||||
13
forge-gui/res/cardsfolder/s/sauron_the_dark_lord.txt
Normal file
13
forge-gui/res/cardsfolder/s/sauron_the_dark_lord.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Sauron, the Dark Lord
|
||||
ManaCost:3 U B R
|
||||
Types:Legendary Creature Avatar Horror
|
||||
PT:7/6
|
||||
K:Ward:Sac<1/Artifact.Legendary;Creature.Legendary/legendary artifact or legendary creature>
|
||||
T:Mode$ SpellCast | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigAmass | TriggerDescription$ Whenever an opponent casts a spell, amass Orcs 1.
|
||||
SVar:TrigAmass:DB$ Amass | Type$ Orc | Num$ 1
|
||||
T:Mode$ DamageDone | ValidSource$ Army.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigTempt | TriggerZones$ Battlefield | TriggerDescription$ Whenever an Army you control deals combat damage to a player, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ RingTemptsYou | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever the Ring tempts you, you may discard your hand. If you do, draw four cards.
|
||||
SVar:TrigDraw:AB$ Draw | Cost$ Discard<1/Hand> | NumCards$ 4
|
||||
DeckHas:Ability$Token
|
||||
Oracle:Ward—Sacrifice a legendary artifact or legendary creature.\nWhenever an opponent casts a spell, amass Orcs 1.\nWhenever an Army you control deals combat damage to a player, the Ring tempts you.\nWhenever the Ring tempts you, you may discard your hand. If you do, draw four cards.
|
||||
8
forge-gui/res/cardsfolder/s/saurons_ransom.txt
Normal file
8
forge-gui/res/cardsfolder/s/saurons_ransom.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Sauron's Ransom
|
||||
ManaCost:1 U B
|
||||
Types:Instant
|
||||
A:SP$ TwoPiles | Defined$ You | Separator$ Opponent | Chooser$ You | DefinedCards$ Top_4_OfLibrary | ChosenPile$ DBHand | UnchosenPile$ DBGrave | FaceDown$ One | SubAbility$ TrigTempt | SpellDescription$ Choose an opponent. They look at the top four cards of your library and separate them into a face-down pile and a face-up pile. Put one pile into your hand and the other into your graveyard. The Ring tempts you.
|
||||
SVar:DBHand:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Hand
|
||||
SVar:DBGrave:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Graveyard
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Choose an opponent. They look at the top four cards of your library and separate them into a face-down pile and a face-up pile. Put one pile into your hand and the other into your graveyard. The Ring tempts you.
|
||||
@@ -6,4 +6,4 @@ K:Flying
|
||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, create a token that's a copy of target artifact that player controls.
|
||||
SVar:TrigToken:DB$ CopyPermanent | ValidTgts$ Artifact.ControlledBy TriggeredTarget | Defined$ Targeted
|
||||
DeckHas:Ability$Token
|
||||
Oracle:Flying\nWhenever Schema Thief deals combat damage to a player, create a token that’s a copy of target artifact that player controls.
|
||||
Oracle:Flying\nWhenever Schema Thief deals combat damage to a player, create a token that's a copy of target artifact that player controls.
|
||||
12
forge-gui/res/cardsfolder/s/scroll_of_isildur.txt
Normal file
12
forge-gui/res/cardsfolder/s/scroll_of_isildur.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Name:Scroll of Isildur
|
||||
ManaCost:2 U
|
||||
Types:Enchantment Saga
|
||||
K:Saga:3:DBGainControl,DBTap,DBDraw
|
||||
SVar:DBGainControl:DB$ GainControl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target artifact | ValidTgts$ Artifact | SubAbility$ TrigTempt | LoseControl$ LeavesPlay,LoseControl | SpellDescription$ Gain control of up to one target artifact for as long as you control CARDNAME. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
SVar:DBTap:DB$ Tap | ValidTgts$ Creature | SubAbility$ DBCounter | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select up to two target creatures | SpellDescription$ Tap up to two target creatures. Put a stun counter on each of them.
|
||||
SVar:DBCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ Stun | CounterNum$ 1
|
||||
SVar:DBDraw:DB$ Draw | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Defined$ You | NumCards$ X | SpellDescription$ Draw a card for each tapped creature target opponent controls.
|
||||
SVar:X:Count$Valid Creature.tapped+TargetedPlayerCtrl
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Gain control of up to one target artifact for as long as you control Scroll of Isildur. The Ring tempts you.\nII — Tap up to two target creatures. Put a stun counter on each of them.\nIII — Draw a card for each tapped creature target opponent controls.
|
||||
9
forge-gui/res/cardsfolder/s/shortcut_to_mushrooms.txt
Normal file
9
forge-gui/res/cardsfolder/s/shortcut_to_mushrooms.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Shortcut to Mushrooms
|
||||
ManaCost:1 G
|
||||
Types:Enchantment
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Revolt$ True | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a +1/+1 counter on target creature you control.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:When Shortcut to Mushrooms enters the battlefield, the Ring tempts you.\nAt the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a +1/+1 counter on target creature you control.
|
||||
8
forge-gui/res/cardsfolder/s/slip_on_the_ring.txt
Normal file
8
forge-gui/res/cardsfolder/s/slip_on_the_ring.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Slip On the Ring
|
||||
ManaCost:1 W
|
||||
Types:Instant
|
||||
A:SP$ ChangeZone | Cost$ 1 W | ValidTgts$ Creature.YouOwn | Origin$ Battlefield | Destination$ Exile | TgtPrompt$ Select target creature you own | RememberTargets$ True | SubAbility$ DBReturn | SpellDescription$ Exile target creature you own, then return it to the battlefield under your control. The Ring tempts you.
|
||||
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ TrigTempt
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Exile target creature you own, then return it to the battlefield under your control. The Ring tempts you.
|
||||
10
forge-gui/res/cardsfolder/s/smeagol_helpful_guide.txt
Normal file
10
forge-gui/res/cardsfolder/s/smeagol_helpful_guide.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Smeagol, Helpful Guide
|
||||
ManaCost:1 B G
|
||||
Types:Legendary Creature Halfling Horror
|
||||
PT:4/2
|
||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | CheckSVar$ X | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigTempt | TriggerDescription$ At the beginning of your end step, if a creature died under your control this turn, the Ring tempts you.
|
||||
SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature.YouCtrl
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ RingTemptsYou | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDigUntil | TriggerDescription$ Whenever the Ring tempts you, target opponent reveals cards from the top of their library until they reveal a land card. Put that card onto the battlefield tapped under your control and the rest into their graveyard.
|
||||
SVar:TrigDigUntil:DB$ DigUntil | Reveal$ True | ValidTgts$ Opponent | IsCurse$ True | Valid$ Land | ValidDescription$ land card | FoundDestination$ Battlefield | GainControl$ True | Tapped$ True | RevealedDestination$ Graveyard
|
||||
Oracle:At the beginning of your end step, if a creature died under your control this turn, the Ring tempts you.\nWhenever the Ring tempts you, target opponent reveals cards from the top of their library until they reveal a land card. Put that card onto the battlefield tapped under your control and the rest into their graveyard.
|
||||
6
forge-gui/res/cardsfolder/s/soothing_of_smeagol.txt
Normal file
6
forge-gui/res/cardsfolder/s/soothing_of_smeagol.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:Soothing of Smeagol
|
||||
ManaCost:1 U
|
||||
Types:Instant
|
||||
A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Creature.nonToken | TgtPrompt$ Select target nontoken creature | Origin$ Battlefield | Destination$ Hand | SubAbility$ TrigTempt | SpellDescription$ Return target nontoken creature to its owner's hand. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Return target nontoken creature to its owner's hand. The Ring tempts you.
|
||||
10
forge-gui/res/cardsfolder/s/stalwarts_of_osgiliath.txt
Normal file
10
forge-gui/res/cardsfolder/s/stalwarts_of_osgiliath.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Stalwarts of Osgiliath
|
||||
ManaCost:4 W
|
||||
Types:Creature Human Soldier
|
||||
PT:4/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw your second card each turn, put a +1/+1 counter on CARDNAME.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:When Stalwarts of Osgiliath enters the battlefield, the Ring tempts you.\nWhenever you draw your second card each turn, put a +1/+1 counter on Stalwarts of Osgiliath.
|
||||
6
forge-gui/res/cardsfolder/t/the_black_breath.txt
Normal file
6
forge-gui/res/cardsfolder/t/the_black_breath.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Name:The Black Breath
|
||||
ManaCost:2 B
|
||||
Types:Sorcery
|
||||
A:SP$ PumpAll | Cost$ 2 B | ValidCards$ Creature.OppCtrl | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True | SubAbility$ TrigTempt | SpellDescription$ Creatures your opponents control get -1/-1 until end of turn. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:Creatures your opponents control get -1/-1 until end of turn. The Ring tempts you.
|
||||
7
forge-gui/res/cardsfolder/t/the_ring_goes_south.txt
Normal file
7
forge-gui/res/cardsfolder/t/the_ring_goes_south.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:The Ring Goes South
|
||||
ManaCost:3 G
|
||||
Types:Sorcery
|
||||
A:SP$ RingTemptsYou | SubAbility$ DBDigUntil | SpellDescription$ The Ring tempts you. Then reveal cards from the top of your library until you reveal X land cards, where X is the number of legendary creatures you control. Put those land cards onto the battlefield tapped and the rest on the bottom of your library in a random order.
|
||||
SVar:DBDigUntil:DB$ DigUntil | Amount$ X | Valid$ Land | ValidDescription$ land | FoundDestination$ Battlefield | Tapped$ True | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True
|
||||
SVar:X:Count$Valid Creature.Legendary+YouCtrl
|
||||
Oracle:The Ring tempts you. Then reveal cards from the top of your library until you reveal X land cards, where X is the number of legendary creatures you control. Put those land cards onto the battlefield tapped and the rest on the bottom of your library in a random order.
|
||||
10
forge-gui/res/cardsfolder/t/there_and_back_again.txt
Normal file
10
forge-gui/res/cardsfolder/t/there_and_back_again.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:There and Back Again
|
||||
ManaCost:3 R R
|
||||
Types:Enchantment Saga
|
||||
K:Saga:3:DBCantBlock,DBSearch,DBToken
|
||||
SVar:DBCantBlock:DB$ Pump | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target creature | KW$ HIDDEN CARDNAME can't block. | SubAbility$ TrigTempt | IsCurse$ True | Duration$ UntilLoseControlOfHost | SpellDescription$ Up to one target creature can't block for as long as you control CARDNAME. The Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Mountain | SpellDescription$ Search your library for a Mountain card, put it onto the battlefield, then shuffle.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ smaug | SpellDescription$ Create Smaug, a legendary 6/6 red Dragon creature token with flying, haste, and "When this creature dies, create fourteen Treasure tokens."
|
||||
DeckHas:Ability$Token
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Up to one target creature can't block for as long as you control There and Back Again. The Ring tempts you.\nII — Search your library for a Mountain card, put it onto the battlefield, then shuffle.\nIII — Create Smaug, a legendary 6/6 red Dragon creature token with flying, haste, and "When this creature dies, create fourteen Treasure tokens."
|
||||
7
forge-gui/res/cardsfolder/t/took_reaper.txt
Normal file
7
forge-gui/res/cardsfolder/t/took_reaper.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Took Reaper
|
||||
ManaCost:1 W
|
||||
Types:Creature Halfling Peasant
|
||||
PT:2/1
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME dies, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:When Took Reaper dies, the Ring tempts you.
|
||||
7
forge-gui/res/cardsfolder/u/uruk_hai_berserker.txt
Normal file
7
forge-gui/res/cardsfolder/u/uruk_hai_berserker.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Uruk-hai Berserker
|
||||
ManaCost:2 B
|
||||
Types:Creature Orc Berserker
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME enters the battlefield, the Ring tempts you.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
Oracle:When Uruk-hai Berserker enters the battlefield, the Ring tempts you.
|
||||
@@ -2,7 +2,7 @@ Name:Bill the Pony
|
||||
ManaCost:3 W
|
||||
Types:Legendary Creature Horse
|
||||
PT:1/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFood | TriggerDescription$ When CARDNAME enters the battlefield, create two Food tokens. (They’re artifacts with "{2}, Sacrifice this artifact: You gain 3 life.")
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFood | TriggerDescription$ When CARDNAME enters the battlefield, create two Food tokens. (They're artifacts with "{2}, Sacrifice this artifact: You gain 3 life.")
|
||||
SVar:TrigFood:DB$ Token | TokenAmount$ 2 | TokenScript$ c_a_food_sac | TokenOwner$ You
|
||||
A:AB$ Effect | Cost$ Sac<1/Food> | ValidTgts$ Creature.YouCtrl | RememberObjects$ Targeted | StaticAbilities$ CombatDamageToughness | ForgetOnMoved$ Battlefield | TgtPrompt$ Select target creature you control | SpellDescription$ Until end of turn, target creature you control assigns combat damage equal to its toughness rather than its power.
|
||||
SVar:CombatDamageToughness:Mode$ CombatDamageToughness | ValidCard$ Card.IsRemembered | Description$ This creature assigns combat damage equal to its toughness rather than its power.
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:3 U B
|
||||
Types:Legendary Creature Wraith Noble
|
||||
PT:4/4
|
||||
K:Flying
|
||||
S:Mode$ Continuous | Affected$ Creature.Wraith+YouCtrl | AddKeyword$ Protection from Ringbearers | Description$ Wraiths you control have protection from Ring-bearers.
|
||||
S:Mode$ Continuous | Affected$ Creature.Wraith+YouCtrl | AddKeyword$ Protection:Card.IsRingbearer:Protection from Ring-bearers | Description$ Wraiths you control have protection from Ring-bearers.
|
||||
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you cast an instant or sorcery spell, create a 3/3 black Wraith creature token with menace. Then if you control nine or more Wraiths, Wraiths you control have base power and toughness 9/9 until end of turn.
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_3_3_wraith_menace | TokenOwner$ You | SubAbility$ DBAnimateAll
|
||||
SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Wraith.YouCtrl | Power$ 9 | Toughness$ 9 | ConditionPresent$ Card.Wraith+YouCtrl | ConditionCompare$ GE9
|
||||
|
||||
@@ -8,4 +8,4 @@ SVar:X:TriggeredStackInstance$CardManaCostLKI
|
||||
S:Mode$ Continuous | Affected$ Goblin.YouCtrl,Orc.YouCtrl | AddKeyword$ Ward:2 | Description$ Goblins and Orcs you control have ward {2}.
|
||||
DeckHas:Ability$Token|Counters & Type$Orc|Army
|
||||
DeckHints:Type$Goblin|Orc
|
||||
Oracle:Whenever you cast a noncreature spell, amass Orcs X, where X is that spell’s mana value. (Put X +1/+1 counters on an Army you control. It’s also an Orc. If you don’t control an Army, create a 0/0 black Orc Army creature token first.)\nGoblins and Orcs you control have ward {2}.
|
||||
Oracle:Whenever you cast a noncreature spell, amass Orcs X, where X is that spell's mana value. (Put X +1/+1 counters on an Army you control. It's also an Orc. If you don't control an Army, create a 0/0 black Orc Army creature token first.)\nGoblins and Orcs you control have ward {2}.
|
||||
@@ -5,5 +5,5 @@ K:Equip:2
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Haste | Description$ Equipped creature gets +1/+1 and has haste.
|
||||
T:Mode$ Phase | Phase$ BeginCombat | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ At the beginning of each combat, untap equipped creature.
|
||||
SVar:TrigUntap:DB$ Untap | Defined$ Equipped
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ First Strike | IsPresent$ Creature.EquippedBy+blockingValid Goblin,Creature.EquippedBy+blockingValid Orc,Goblin.blockingValid Creature.EquippedBy,Orc.blockingValid Creature.EquippedBy | Description$ Equipped creature has first strike as long as it’s blocking or blocked by a Goblin or Orc.
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ First Strike | IsPresent$ Creature.EquippedBy+blockingValid Goblin,Creature.EquippedBy+blockingValid Orc,Goblin.blockingValid Creature.EquippedBy,Orc.blockingValid Creature.EquippedBy | Description$ Equipped creature has first strike as long as it's blocking or blocked by a Goblin or Orc.
|
||||
Oracle:Equipped creature gets +1/+1 and has haste.\nAt the beginning of each combat, untap equipped creature.\nEquipped creature has first strike as long as it's blocking or blocked by a Goblin or Orc.\nEquip {2}
|
||||
@@ -6,4 +6,4 @@ SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | De
|
||||
A:AB$ ChangeZoneAll | Cost$ 2 T Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Select target player | ChangeType$ Card | SubAbility$ DBDraw | SpellDescription$ Exile target player's graveyard. Draw a card.
|
||||
SVar:DBDraw:DB$ Draw
|
||||
DeckHas:Ability$Graveyard|Sacrifice
|
||||
Oracle:If a creature an opponent controls would die, exile it instead.\n{2}, {T}, Sacrifice Stone of Erech: Exile target player’s graveyard. Draw a card.
|
||||
Oracle:If a creature an opponent controls would die, exile it instead.\n{2}, {T}, Sacrifice Stone of Erech: Exile target player's graveyard. Draw a card.
|
||||
|
||||
@@ -8,7 +8,7 @@ K:Trample
|
||||
K:Reach
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, search your library for up to two Forest cards, reveal them, put them into your hand, then shuffle.
|
||||
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Forest | ChangeNum$ 2
|
||||
A:AB$ ChangeZone | Cost$ 6 G G | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner’s control. Activate only as a sorcery.
|
||||
A:AB$ ChangeZone | Cost$ 6 G G | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery.
|
||||
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
AlternateMode:DoubleFaced
|
||||
|
||||
9
forge-gui/res/cardsfolder/w/war_of_the_last_alliance.txt
Normal file
9
forge-gui/res/cardsfolder/w/war_of_the_last_alliance.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:War of the Last Alliance
|
||||
ManaCost:3 W
|
||||
Types:Enchantment Saga
|
||||
K:Saga:3:DBSearch,DBSearch,DBPump
|
||||
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Creature.Legendary | ChangeNum$ 1 | SpellDescription$ Search your library for a legendary creature card, reveal it, put it into your hand, then shuffle.
|
||||
SVar:DBPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Double Strike | SubAbility$ TrigTempt | SpellDescription$ Creatures you control gain double strike until end of turn.
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
DeckNeeds:Type$Legendary & Type$Creature
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Search your library for a legendary creature card, reveal it, put it into your hand, then shuffle.\nIII — Creatures you control gain double strike until end of turn. The Ring tempts you.
|
||||
11
forge-gui/res/cardsfolder/w/witchking_of_angmar.txt
Normal file
11
forge-gui/res/cardsfolder/w/witchking_of_angmar.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Witch-king of Angmar
|
||||
ManaCost:3 B B
|
||||
Types:Legendary Creature Wraith Noble
|
||||
PT:5/3
|
||||
K:Flying
|
||||
T:Mode$ DamageDoneOnce | ValidSource$ Creature | TriggerZones$ Battlefield | ValidTarget$ You | CombatDamage$ True | Execute$ TrigSac | TriggerDescription$ Whenever one or more creatures deal combat damage to you, each opponent sacrifices a creature that dealt combat damage to you this turn. The Ring tempts you.
|
||||
SVar:TrigSac:DB$ Sacrifice | SacValid$ Creature.dealtCombatDamage You | Defined$ Player.Opponent | SubAbility$ TrigTempt
|
||||
SVar:TrigTempt:DB$ RingTemptsYou
|
||||
A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | KW$ Indestructible | SubAbility$ DBTap | SpellDescription$ CARDNAME gains indestructible until end of turn. Tap it.
|
||||
SVar:DBTap:DB$ Tap | Defined$ Self
|
||||
Oracle:Flying\nWhenever one or more creatures deal combat damage to you, each opponent sacrifices a creature that dealt combat damage to you this turn. The Ring tempts you.\nDiscard a card: Witch-king of Angmar gains indestructible until end of turn. Tap it.
|
||||
@@ -11,4 +11,4 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Wrenn and Realmbreaker | Image$ emblem_wrenn_and_realmbreaker | StaticAbilities$ PermanentRecycle | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may play lands and cast permanent spells from your graveyard."
|
||||
SVar:PermanentRecycle:Mode$ Continuous | EffectZone$ Command | Affected$ Card.Permanent+YouOwn | MayPlay$ True | AffectedZone$ Graveyard | Description$ You may play lands and cast permanent spells from your graveyard.
|
||||
DeckHas:Ability$Graveyard
|
||||
Oracle:Lands you control have "{T}: Add one mana of any color."\n[+1]: Up to one target land you control becomes a 3/3 Elemental creature with vigilance, hexproof, and haste until your next turn. It’s still a land.\n[−2]: Mill three cards. You may put a permanent card from among the milled cards into your hand.\n[−7]: You get an emblem with "You may play lands and cast permanent spells from your graveyard."
|
||||
Oracle:Lands you control have "{T}: Add one mana of any color."\n[+1]: Up to one target land you control becomes a 3/3 Elemental creature with vigilance, hexproof, and haste until your next turn. It's still a land.\n[−2]: Mill three cards. You may put a permanent card from among the milled cards into your hand.\n[−7]: You get an emblem with "You may play lands and cast permanent spells from your graveyard."
|
||||
|
||||
@@ -1355,6 +1355,8 @@ lblGraveyard=Friedhof
|
||||
lblAssignSectorCreature=Weise {0} einem Bereich zu
|
||||
lblChooseSectorEffect=Wähle Bereich
|
||||
lblChooseRollIgnore=Welchen Wurf ignorieren?
|
||||
lblChooseRingBearer=Wählen Sie Ihren Ringträger
|
||||
lblTheRingTempts=Der Ring verführt {0}
|
||||
lblTop=Oben drauf
|
||||
lblBottom=Unten drunter
|
||||
lblNColorManaFromCard={0} {1} Mana von {2}
|
||||
|
||||
@@ -1360,6 +1360,8 @@ lblGraveyard=Graveyard
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblChooseRingBearer=Choose your Ring-bearer
|
||||
lblTheRingTempts=The Ring tempts {0}
|
||||
lblTop=Top
|
||||
lblBottom=Bottom
|
||||
lblNColorManaFromCard={0} {1} mana from {2}
|
||||
|
||||
@@ -1353,9 +1353,11 @@ lblThereNoCardInPlayerZone=No hay cartas en {0} {1}
|
||||
lblPutCardsOnTheTopLibraryOrGraveyard=¿Poner {0} en la parte superior de la biblioteca o en el cementerio?
|
||||
lblLibrary=Biblioteca
|
||||
lblGraveyard=Cementerio
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblAssignSectorCreature=Asignar {0} a un sector
|
||||
lblChooseSectorEffect=Elija un sector
|
||||
lblChooseRollIgnore=Elija un rollo para ignorar
|
||||
lblChooseRingBearer=Elige a tu portador de anillo
|
||||
lblTheRingTempts=El anillo tienta {0}
|
||||
lblTop=Superior
|
||||
lblBottom=Fondo
|
||||
lblNColorManaFromCard={0} {1} maná de {2}
|
||||
|
||||
@@ -1356,8 +1356,11 @@ lblThereNoCardInPlayerZone=Il n''y a pas de cartes dans {0} {1}
|
||||
lblPutCardsOnTheTopLibraryOrGraveyard=Placer {0} au-dessus de la bibliothèque ou du cimetière ?
|
||||
lblLibrary=Bibliothèque
|
||||
lblGraveyard=Cimetière
|
||||
lblAssignSectorCreature=Assign {0} to a sectorlblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblAssignSectorCreature=Attribuer {0} à un secteur
|
||||
lblChooseSectorEffect=Choisissez un secteur
|
||||
lblChooseRollIgnore=Choisissez un rouleau pour ignorer
|
||||
lblChooseRingBearer=Choisissez votre porte-anneau
|
||||
lblTheRingTempts=L''anneau tente {0}
|
||||
lblTop=Haut
|
||||
lblBottom=Bas
|
||||
lblNColorManaFromCard={0} {1} mana de {2}
|
||||
@@ -2115,7 +2118,7 @@ lblRemoveFromGame=Supprimer la carte du jeu
|
||||
lblRiggedRoll=Roll planaire gréé
|
||||
lblWalkTo=Transplaner vers
|
||||
lblAskAI=Demander une suggestion à l''IA
|
||||
lblAskSimulationAI=Demander à l'IA de simulation une suggestion
|
||||
lblAskSimulationAI=Demander à l''IA de simulation une suggestion
|
||||
#PhaseType.java
|
||||
lblUntapStep=Étape de dégagement
|
||||
lblUpkeepStep=Étape d''entretien
|
||||
@@ -2984,9 +2987,9 @@ lblToken=Jeton
|
||||
lblBackToAdventure=Retour à l'aventure
|
||||
lblDisableWinLose=Désactiver la superposition Winlose
|
||||
lblExitToWoldMap=Sortir sur la carte du monde?
|
||||
lblStartArena=Voulez-vous entrer dans l'arène?
|
||||
lblStartArena=Voulez-vous entrer dans l''arène?
|
||||
lblWouldYouLikeDestroy=Souhaitez-vous détruire {0}?
|
||||
lblAdventureDescription=Le mode aventure est l'endroit où vous explorez le paysage en constante évolution de Shandalar, et des créatures duel pour gagner de l'or, des éclats, de l'équipement et de nouvelles cartes pour devenir les meilleurs et les récupérer tous!
|
||||
lblAdventureDescription=Le mode aventure est l''endroit où vous explorez le paysage en constante évolution de Shandalar, et des créatures duel pour gagner de l'or, des éclats, de l'équipement et de nouvelles cartes pour devenir les meilleurs et les récupérer tous!
|
||||
lblEmptyDeck=Jeu de cartes vide
|
||||
lblNoAvailableSlots=Aucune fente disponible
|
||||
lblAdventure=Aventure
|
||||
|
||||
@@ -1353,9 +1353,11 @@ lblThereNoCardInPlayerZone=Non ci sono carte in {0} {1}
|
||||
lblPutCardsOnTheTopLibraryOrGraveyard=Metti {0} in cima al grimorio o nel cimitero?
|
||||
lblLibrary=Grimorio
|
||||
lblGraveyard=Cimitero
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblAssignSectorCreature=Assegna {0} a un settore
|
||||
lblChooseSectorEffect=Scegli un settore
|
||||
lblChooseRollIgnore=Scegli un tiro per ignorare
|
||||
lblChooseRingBearer=Scegli il tuo anello
|
||||
lblTheRingTempts=L''anello tenta {0}
|
||||
lblTop=Cima
|
||||
lblBottom=Fondo
|
||||
lblNColorManaFromCard={0} {1} mana da {2}
|
||||
@@ -2983,7 +2985,7 @@ lblToken=Gettone
|
||||
lblBackToAdventure=Torna all'avventura
|
||||
lblDisableWinLose=Disabilita overlay winlose
|
||||
lblExitToWoldMap=Esci alla mappa del mondo?
|
||||
lblStartArena=Vuoi andare nell'arena?
|
||||
lblStartArena=Vuoi andare nell''arena?
|
||||
lblWouldYouLikeDestroy=Vorresti distruggere {0}?
|
||||
lblAdventureDescription=La modalità Adventure è dove esplori il paesaggio in continua evoluzione di Shandalar e le creature di duello per guadagnare oro, frammenti, attrezzature e nuove carte per diventare i migliori e raccoglierle tutte!
|
||||
lblEmptyDeck=Mazzo di carte vuoto
|
||||
|
||||
@@ -1354,9 +1354,11 @@ lblThereNoCardInPlayerZone={0} {1}にカードがありません
|
||||
lblPutCardsOnTheTopLibraryOrGraveyard=ライブラリまたは墓地の一番上に{0}を置きますか?
|
||||
lblLibrary=ライブラリー
|
||||
lblGraveyard=墓地
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblAssignSectorCreature={0}をセクターに割り当てます
|
||||
lblChooseSectorEffect=セクターを選択してください
|
||||
lblChooseRollIgnore=無視するロールを選択してください
|
||||
lblChooseRingBearer=リングベアラーを選択してください
|
||||
lblTheRingTempts=リングが誘惑されます {0}
|
||||
lblTop=タップ
|
||||
lblBottom=ボトム
|
||||
lblNColorManaFromCard={2}から {0} {1} のマナ
|
||||
|
||||
@@ -1384,9 +1384,11 @@ lblThereNoCardInPlayerZone=Sem cartas em {0} {1}
|
||||
lblPutCardsOnTheTopLibraryOrGraveyard=Colocar {0} no topo do grimório ou cemitério?
|
||||
lblLibrary=Grimório
|
||||
lblGraveyard=Cemitério
|
||||
lblAssignSectorCreature=Assign {0} to a sector
|
||||
lblChooseSectorEffect=Choose a sector
|
||||
lblChooseRollIgnore=Choose a roll to ignore
|
||||
lblAssignSectorCreature=Atribuir {0} a um setor
|
||||
lblChooseSectorEffect=Escolha um setor
|
||||
lblChooseRollIgnore=Escolha um rolo para ignorar
|
||||
lblChooseRingBearer=Escolha o seu portador de anel
|
||||
lblTheRingTempts=O anel tenta {0}
|
||||
lblTop=Topo
|
||||
lblBottom=Fundo
|
||||
lblNColorManaFromCard={0} {1} mana de {2}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user