mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Merge branch 'Card-Forge:master' into master
This commit is contained in:
@@ -1262,7 +1262,7 @@ public abstract class GameState {
|
||||
|
||||
for (final String info : cardinfo) {
|
||||
if (info.startsWith("Tapped")) {
|
||||
c.tap(false);
|
||||
c.tap(false, null, null);
|
||||
} else if (info.startsWith("Renowned")) {
|
||||
c.setRenowned(true);
|
||||
} else if (info.startsWith("Monstrous")) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package forge.ai.ability;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
@@ -23,6 +24,7 @@ import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardLists;
|
||||
import forge.game.card.CardPredicates;
|
||||
import forge.game.card.CardUtil;
|
||||
import forge.game.card.token.TokenInfo;
|
||||
import forge.game.combat.Combat;
|
||||
import forge.game.cost.CostPart;
|
||||
@@ -162,6 +164,11 @@ public class TokenAi extends SpellAbilityAi {
|
||||
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
||||
if (tgt != null) {
|
||||
sa.resetTargets();
|
||||
|
||||
if (actualToken.getType().hasSubtype("Role")) {
|
||||
return tgtRoleAura(ai, sa, actualToken, false);
|
||||
}
|
||||
|
||||
if (tgt.canOnlyTgtOpponent() || "Opponent".equals(sa.getParam("AITgts"))) {
|
||||
if (sa.canTarget(opp)) {
|
||||
sa.getTargets().add(opp);
|
||||
@@ -253,9 +260,16 @@ public class TokenAi extends SpellAbilityAi {
|
||||
|
||||
@Override
|
||||
protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) {
|
||||
Card actualToken = spawnToken(ai, sa);
|
||||
|
||||
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
||||
if (tgt != null) {
|
||||
sa.resetTargets();
|
||||
|
||||
if (actualToken.getType().hasSubtype("Role")) {
|
||||
return tgtRoleAura(ai, sa, actualToken, mandatory);
|
||||
}
|
||||
|
||||
if (tgt.canOnlyTgtOpponent()) {
|
||||
PlayerCollection targetableOpps = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa));
|
||||
if (mandatory && targetableOpps.isEmpty()) {
|
||||
@@ -268,7 +282,6 @@ public class TokenAi extends SpellAbilityAi {
|
||||
}
|
||||
}
|
||||
|
||||
Card actualToken = spawnToken(ai, sa);
|
||||
String tokenPower = sa.getParamOrDefault("TokenPower", actualToken.getBasePowerString());
|
||||
String tokenToughness = sa.getParamOrDefault("TokenToughness", actualToken.getBaseToughnessString());
|
||||
String tokenAmount = sa.getParamOrDefault("TokenAmount", "1");
|
||||
@@ -357,4 +370,43 @@ public class TokenAi extends SpellAbilityAi {
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean tgtRoleAura(final Player ai, final SpellAbility sa, final Card tok, final boolean mandatory) {
|
||||
boolean isCurse = "Curse".equals(sa.getParam("AILogic")) ||
|
||||
tok.getFirstAttachSpell().getParamOrDefault("AILogic", "").equals("Curse");
|
||||
List<Card> tgts = CardUtil.getValidCardsToTarget(sa);
|
||||
|
||||
// look for card without role from ai
|
||||
List<Card> prefListSBA = CardLists.filter(tgts, c ->
|
||||
!Iterables.any(c.getAttachedCards(), att -> att.getController() == ai && att.getType().hasSubtype("Role")));
|
||||
|
||||
List<Card> prefList;
|
||||
if (isCurse) {
|
||||
prefList = CardLists.filterControlledBy(prefListSBA, ai.getOpponents());
|
||||
} else {
|
||||
prefList = CardLists.filterControlledBy(prefListSBA, ai.getYourTeam());
|
||||
}
|
||||
|
||||
if (prefList.isEmpty()) {
|
||||
if (mandatory) {
|
||||
if (sa.isTargetNumberValid()) {
|
||||
// TODO try replace Curse <-> Pump depending on target controller
|
||||
return true;
|
||||
}
|
||||
if (!prefListSBA.isEmpty()) {
|
||||
sa.getTargets().add(ComputerUtilCard.getWorstCreatureAI(prefListSBA));
|
||||
return true;
|
||||
}
|
||||
if (!tgts.isEmpty()) {
|
||||
sa.getTargets().add(ComputerUtilCard.getWorstCreatureAI(tgts));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sa.getTargets().add(ComputerUtilCard.getBestCreatureAI(prefList));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1326,6 +1326,7 @@ public class GameAction {
|
||||
|
||||
checkAgainCard |= stateBasedAction_Saga(c, sacrificeList);
|
||||
checkAgainCard |= stateBasedAction_Battle(c, noRegCreats);
|
||||
checkAgainCard |= stateBasedAction_Role(c, unAttachList);
|
||||
checkAgainCard |= stateBasedAction704_attach(c, unAttachList); // Attachment
|
||||
|
||||
checkAgainCard |= stateBasedAction704_5r(c); // annihilate +1/+1 counters with -1/-1 ones
|
||||
@@ -1526,6 +1527,28 @@ public class GameAction {
|
||||
}
|
||||
return checkAgain;
|
||||
}
|
||||
private boolean stateBasedAction_Role(Card c, CardCollection removeList) {
|
||||
if (!c.hasCardAttachments()) {
|
||||
return false;
|
||||
}
|
||||
boolean checkAgain = false;
|
||||
CardCollection roles = CardLists.filter(c.getAttachedCards(), CardPredicates.isType("Role"));
|
||||
if (roles.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Player p : game.getPlayers()) {
|
||||
CardCollection rolesByPlayer = CardLists.filterControlledBy(roles, p);
|
||||
if (rolesByPlayer.size() <= 1) {
|
||||
continue;
|
||||
}
|
||||
// sort by game timestamp
|
||||
rolesByPlayer.sort(CardPredicates.compareByTimestamp());
|
||||
removeList.addAll(rolesByPlayer.subList(0, rolesByPlayer.size() - 1));
|
||||
checkAgain = true;
|
||||
}
|
||||
return checkAgain;
|
||||
}
|
||||
|
||||
private void stateBasedAction_Dungeon(Card c) {
|
||||
if (!c.getType().isDungeon() || !c.isInLastRoom()) {
|
||||
@@ -1541,7 +1564,8 @@ public class GameAction {
|
||||
|
||||
if (c.isAttachedToEntity()) {
|
||||
final GameEntity ge = c.getEntityAttachedTo();
|
||||
if (!ge.canBeAttached(c, null, true)) {
|
||||
// Rule 704.5q - Creature attached to an object or player, becomes unattached
|
||||
if (c.isCreature() || c.isBattle() || !ge.canBeAttached(c, null, true)) {
|
||||
unAttachList.add(c);
|
||||
checkAgain = true;
|
||||
}
|
||||
@@ -1555,10 +1579,7 @@ public class GameAction {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((c.isCreature() || c.isBattle()) && c.isAttachedToEntity()) { // Rule 704.5q - Creature attached to an object or player, becomes unattached
|
||||
unAttachList.add(c);
|
||||
checkAgain = true;
|
||||
}
|
||||
|
||||
return checkAgain;
|
||||
}
|
||||
|
||||
@@ -1869,7 +1890,7 @@ public class GameAction {
|
||||
|
||||
// Replacement effects
|
||||
final Map<AbilityKey, Object> repRunParams = AbilityKey.mapFromAffected(c);
|
||||
repRunParams.put(AbilityKey.Source, sa);
|
||||
repRunParams.put(AbilityKey.Cause, sa);
|
||||
repRunParams.put(AbilityKey.Regeneration, regenerate);
|
||||
if (params != null) {
|
||||
repRunParams.putAll(params);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import forge.game.Game;
|
||||
import forge.game.ability.AbilityKey;
|
||||
import forge.game.ability.SpellAbilityEffect;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.event.GameEventCardRegenerated;
|
||||
@@ -19,9 +20,11 @@ public class RegenerationEffect extends SpellAbilityEffect {
|
||||
for (Card c : getTargetCards(sa)) {
|
||||
// checks already done in ReplacementEffect
|
||||
|
||||
SpellAbility cause = (SpellAbility)sa.getReplacingObject(AbilityKey.Cause);
|
||||
|
||||
c.setDamage(0);
|
||||
c.setHasBeenDealtDeathtouchDamage(false);
|
||||
c.tap(true);
|
||||
c.tap(true, cause, cause == null ? null : cause.getActivatingPlayer());
|
||||
c.addRegeneratedThisTurn();
|
||||
|
||||
if (game.getCombat() != null) {
|
||||
|
||||
@@ -39,11 +39,16 @@ public class TapAllEffect extends SpellAbilityEffect {
|
||||
|
||||
cards = AbilityUtils.filterListByType(cards, sa.getParam("ValidCards"), sa);
|
||||
|
||||
Player tapper = activator;
|
||||
|
||||
for (final Card c : cards) {
|
||||
if (remTapped) {
|
||||
card.addRemembered(c);
|
||||
}
|
||||
c.tap(true);
|
||||
if (sa.hasParam("TapperController")) {
|
||||
tapper = c.getController();
|
||||
}
|
||||
c.tap(true, sa, tapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ public class TapEffect extends SpellAbilityEffect {
|
||||
*/
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
final Player activator = sa.getActivatingPlayer();
|
||||
final Card card = sa.getHostCard();
|
||||
final boolean remTapped = sa.hasParam("RememberTapped");
|
||||
final boolean alwaysRem = sa.hasParam("AlwaysRemember");
|
||||
@@ -28,7 +29,6 @@ public class TapEffect extends SpellAbilityEffect {
|
||||
Iterable<Card> toTap;
|
||||
|
||||
if (sa.hasParam("CardChoices")) { // choosing outside Defined/Targeted
|
||||
final Player activator = sa.getActivatingPlayer();
|
||||
CardCollection choices = CardLists.getValidCards(card.getGame().getCardsIn(ZoneType.Battlefield), sa.getParam("CardChoices"), activator, card, sa);
|
||||
int n = sa.hasParam("ChoiceAmount") ?
|
||||
AbilityUtils.calculateAmount(card, sa.getParam("ChoiceAmount"), sa) : 1;
|
||||
@@ -40,6 +40,11 @@ public class TapEffect extends SpellAbilityEffect {
|
||||
toTap = getTargetCards(sa);
|
||||
}
|
||||
|
||||
Player tapper = activator;
|
||||
if (sa.hasParam("Tapper")) {
|
||||
tapper = AbilityUtils.getDefinedPlayers(card, sa.getParam("Tapper"), sa).getFirst();
|
||||
}
|
||||
|
||||
for (final Card tgtC : toTap) {
|
||||
if (tgtC.isPhasedOut()) {
|
||||
continue;
|
||||
@@ -48,7 +53,7 @@ public class TapEffect extends SpellAbilityEffect {
|
||||
if (tgtC.isUntapped() && remTapped || alwaysRem) {
|
||||
card.addRemembered(tgtC);
|
||||
}
|
||||
tgtC.tap(true);
|
||||
tgtC.tap(true, sa, tapper);
|
||||
}
|
||||
if (sa.hasParam("ETB")) {
|
||||
// do not fire Taps triggers
|
||||
|
||||
@@ -65,7 +65,7 @@ public class TapOrUntapAllEffect extends SpellAbilityEffect {
|
||||
continue;
|
||||
}
|
||||
if (toTap) {
|
||||
tgtC.tap(true);
|
||||
tgtC.tap(true, sa, activator);
|
||||
} else {
|
||||
tgtC.untap(true);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import forge.game.ability.AbilityUtils;
|
||||
import forge.game.ability.SpellAbilityEffect;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerController;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.util.CardTranslation;
|
||||
@@ -29,10 +29,10 @@ public class TapOrUntapEffect extends SpellAbilityEffect {
|
||||
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
final List<Card> tgtCards = getTargetCards(sa);
|
||||
PlayerController pc = sa.getActivatingPlayer().getController();
|
||||
Player activator = sa.getActivatingPlayer();
|
||||
PlayerController pc = activator.getController();
|
||||
|
||||
for (final Card tgtC : tgtCards) {
|
||||
for (final Card tgtC : getTargetCards(sa)) {
|
||||
if (!tgtC.isInPlay()) {
|
||||
continue;
|
||||
}
|
||||
@@ -42,10 +42,15 @@ public class TapOrUntapEffect extends SpellAbilityEffect {
|
||||
|
||||
// If the effected card is controlled by the same controller of the SA, default to untap.
|
||||
boolean tap = pc.chooseBinary(sa, Localizer.getInstance().getMessage("lblTapOrUntapTarget", CardTranslation.getTranslatedName(tgtC.getName())), PlayerController.BinaryChoiceType.TapOrUntap,
|
||||
!tgtC.getController().equals(sa.getActivatingPlayer()) );
|
||||
!tgtC.getController().equals(activator) );
|
||||
|
||||
if (tap) {
|
||||
tgtC.tap(true);
|
||||
Player tapper = activator;
|
||||
if (sa.hasParam("Tapper")) {
|
||||
tapper = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Tapper"), sa).getFirst();
|
||||
}
|
||||
|
||||
tgtC.tap(true, sa, tapper);
|
||||
} else {
|
||||
tgtC.untap(true);
|
||||
}
|
||||
|
||||
@@ -4413,10 +4413,10 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
view.updateTapped(this);
|
||||
}
|
||||
|
||||
public final void tap(boolean tapAnimation) {
|
||||
tap(false, tapAnimation);
|
||||
public final void tap(boolean tapAnimation, SpellAbility cause, Player tapper) {
|
||||
tap(false, tapAnimation, cause, tapper);
|
||||
}
|
||||
public final void tap(boolean attacker, boolean tapAnimation) {
|
||||
public final void tap(boolean attacker, boolean tapAnimation, SpellAbility cause, Player tapper) {
|
||||
if (tapped) { return; }
|
||||
|
||||
// Run replacement effects
|
||||
@@ -4425,6 +4425,8 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
// Run triggers
|
||||
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromCard(this);
|
||||
runParams.put(AbilityKey.Attacker, attacker);
|
||||
runParams.put(AbilityKey.Cause, cause);
|
||||
runParams.put(AbilityKey.Player, tapper);
|
||||
getGame().getTriggerHandler().runTrigger(TriggerType.Taps, runParams, false);
|
||||
|
||||
setTapped(true);
|
||||
@@ -5983,11 +5985,14 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
}
|
||||
|
||||
public void exert() {
|
||||
exertedByPlayer.add(getController());
|
||||
exert(getController());
|
||||
}
|
||||
public void exert(Player p) {
|
||||
exertedByPlayer.add(p);
|
||||
exertThisTurn++;
|
||||
view.updateExertedThisTurn(this, true);
|
||||
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromCard(this);
|
||||
runParams.put(AbilityKey.Player, getController());
|
||||
runParams.put(AbilityKey.Player, p);
|
||||
game.getTriggerHandler().runTrigger(TriggerType.Exerted, runParams, false);
|
||||
}
|
||||
|
||||
@@ -6469,7 +6474,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
shieldCounterReplaceDamage.setOverridingAbility(AbilityFactory.getAbility(sa, this));
|
||||
}
|
||||
if (shieldCounterReplaceDestroy == null) {
|
||||
String reStr = "Event$ Destroy | ActiveZones$ Battlefield | ValidCard$ Card.Self | ValidSource$ SpellAbility | Secondary$ True "
|
||||
String reStr = "Event$ Destroy | ActiveZones$ Battlefield | ValidCard$ Card.Self | ValidCause$ SpellAbility | Secondary$ True "
|
||||
+ "| Description$ If this permanent would be destroyed as the result of an effect, instead remove a shield counter from it.";
|
||||
shieldCounterReplaceDestroy = ReplacementHandler.parseReplacement(reStr, this, false, null);
|
||||
shieldCounterReplaceDestroy.setOverridingAbility(AbilityFactory.getAbility(sa, this));
|
||||
|
||||
@@ -293,7 +293,7 @@ public class CostAdjustment {
|
||||
sa.addTappedForConvoke(conv.getKey());
|
||||
cost.decreaseShard(conv.getValue(), 1);
|
||||
if (!test) {
|
||||
conv.getKey().tap(true);
|
||||
conv.getKey().tap(true, sa, sa.getActivatingPlayer());
|
||||
if (!improvise) {
|
||||
sa.getHostCard().addConvoked(conv.getKey());
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ public class CostDiscard extends CostPartWithList {
|
||||
* @see forge.card.cost.CostPartWithList#executePayment(forge.card.spellability.SpellAbility, forge.Card)
|
||||
*/
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
||||
if (ability.isCycling() && targetCard.equals(ability.getHostCard())) {
|
||||
// discard itself for cycling cost
|
||||
@@ -203,7 +203,7 @@ public class CostDiscard extends CostPartWithList {
|
||||
}
|
||||
// if this is caused by 118.12 it's also an effect
|
||||
SpellAbility cause = targetCard.getGame().getStack().isResolving(ability.getHostCard()) ? ability : null;
|
||||
return targetCard.getController().discard(targetCard, cause, effect, null, runParams);
|
||||
return payer.discard(targetCard, cause, effect, null, runParams);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -73,8 +73,8 @@ public class CostEnlist extends CostPartWithTrigger {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.tap(true);
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.tap(true, ability, payer);
|
||||
// need to transfer info
|
||||
payTrig.addRemembered(targetCard);
|
||||
|
||||
|
||||
@@ -95,8 +95,8 @@ public class CostExert extends CostPartWithTrigger {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.exert();
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.exert(payer);
|
||||
return targetCard;
|
||||
}
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ public class CostExile extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
final Game game = targetCard.getGame();
|
||||
Card newCard = game.getAction().exile(targetCard, null);
|
||||
SpellAbilityEffect.handleExiledWith(newCard, ability);
|
||||
|
||||
@@ -83,7 +83,7 @@ public class CostExiledMoveToGrave extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
return targetCard.getGame().getAction().moveToGraveyard(targetCard, null);
|
||||
}
|
||||
|
||||
|
||||
@@ -86,8 +86,8 @@ public class CostGainControl extends CostPartWithList {
|
||||
* @see forge.card.cost.CostPartWithList#executePayment(forge.card.spellability.SpellAbility, forge.Card)
|
||||
*/
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.addTempController(ability.getActivatingPlayer(), ability.getActivatingPlayer().getGame().getNextTimestamp());
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.addTempController(payer, payer.getGame().getNextTimestamp());
|
||||
return targetCard;
|
||||
}
|
||||
|
||||
|
||||
@@ -107,10 +107,10 @@ public abstract class CostPartWithList extends CostPart {
|
||||
super(amount, type, description);
|
||||
}
|
||||
|
||||
public final boolean executePayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
public final boolean executePayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
lkiList.add(CardUtil.getLKICopy(targetCard));
|
||||
final Zone origin = targetCard.getZone();
|
||||
final Card newCard = doPayment(ability, targetCard, effect);
|
||||
final Card newCard = doPayment(payer, ability, targetCard, effect);
|
||||
|
||||
// need to update the LKI info to ensure correct interaction with cards which may trigger on this
|
||||
// (e.g. Necroskitter + a creature dying from a -1/-1 counter on a cost payment).
|
||||
@@ -134,10 +134,10 @@ public abstract class CostPartWithList extends CostPart {
|
||||
for (Card c: targetCards) {
|
||||
lkiList.add(CardUtil.getLKICopy(c));
|
||||
}
|
||||
cardList.addAll(doListPayment(ability, targetCards, effect));
|
||||
cardList.addAll(doListPayment(payer, ability, targetCards, effect));
|
||||
} else {
|
||||
for (Card c : targetCards) {
|
||||
executePayment(ability, c, effect);
|
||||
executePayment(payer, ability, c, effect);
|
||||
}
|
||||
}
|
||||
handleChangeZoneTrigger(payer, ability, targetCards);
|
||||
@@ -150,10 +150,10 @@ public abstract class CostPartWithList extends CostPart {
|
||||
* @param targetCard the {@link Card} to pay with.
|
||||
* @return The physical card after the payment.
|
||||
*/
|
||||
protected abstract Card doPayment(SpellAbility ability, Card targetCard, final boolean effect);
|
||||
protected abstract Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect);
|
||||
// Overload these two only together, set to true and perform payment on list
|
||||
protected boolean canPayListAtOnce() { return false; }
|
||||
protected CardCollectionView doListPayment(SpellAbility ability, CardCollectionView targetCards, final boolean effect) { return CardCollection.EMPTY; }
|
||||
protected CardCollectionView doListPayment(Player payer, SpellAbility ability, CardCollectionView targetCards, final boolean effect) { return CardCollection.EMPTY; }
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
@@ -163,13 +163,13 @@ public abstract class CostPartWithList extends CostPart {
|
||||
public abstract String getHashForCardList();
|
||||
|
||||
@Override
|
||||
public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability, final boolean effect) {
|
||||
executePayment(ai, ability, decision.cards, effect);
|
||||
public boolean payAsDecided(Player payer, PaymentDecision decision, SpellAbility ability, final boolean effect) {
|
||||
executePayment(payer, ability, decision.cards, effect);
|
||||
reportPaidCardsTo(ability);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void handleBeforePayment(Player ai, SpellAbility ability, CardCollectionView targetCards) {
|
||||
protected void handleBeforePayment(Player payer, SpellAbility ability, CardCollectionView targetCards) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ public class CostPutCardToLib extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
return targetCard.getGame().getAction().moveToLibrary(targetCard, Integer.parseInt(getLibPos()), null);
|
||||
}
|
||||
|
||||
|
||||
@@ -160,20 +160,20 @@ public class CostPutCounter extends CostPartWithList {
|
||||
* forge.Card, forge.card.cost.Cost_Payment)
|
||||
*/
|
||||
@Override
|
||||
public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability, final boolean effect) {
|
||||
public boolean payAsDecided(Player payer, PaymentDecision decision, SpellAbility ability, final boolean effect) {
|
||||
if (this.payCostFromSource()) {
|
||||
executePayment(ability, ability.getHostCard(), effect);
|
||||
executePayment(payer, ability, ability.getHostCard(), effect);
|
||||
} else {
|
||||
executePayment(ai, ability, decision.cards, effect);
|
||||
executePayment(payer, ability, decision.cards, effect);
|
||||
}
|
||||
triggerCounterPutAll(ability, effect);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
final int i = this.getAbilityAmount(ability);
|
||||
targetCard.addCounter(this.getCounter(), i, ability.getActivatingPlayer(), counterTable);
|
||||
targetCard.addCounter(this.getCounter(), i, payer, counterTable);
|
||||
return targetCard;
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@ public class CostReturn extends CostPartWithList {
|
||||
* @see forge.card.cost.CostPartWithList#executePayment(forge.card.spellability.SpellAbility, forge.Card)
|
||||
*/
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
return targetCard.getGame().getAction().moveToHand(targetCard, null);
|
||||
}
|
||||
|
||||
|
||||
@@ -140,8 +140,8 @@ public class CostReveal extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.getGame().getAction().reveal(new CardCollection(targetCard), ability.getActivatingPlayer());
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.getGame().getAction().reveal(new CardCollection(targetCard), payer);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(ability.getActivatingPlayer());
|
||||
if (targetCard.isInZone(ZoneType.Hand)) {
|
||||
@@ -161,8 +161,8 @@ public class CostReveal extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CardCollectionView doListPayment(SpellAbility ability, CardCollectionView targetCards, final boolean effect) {
|
||||
ability.getActivatingPlayer().getGame().getAction().reveal(targetCards, ability.getActivatingPlayer());
|
||||
protected CardCollectionView doListPayment(Player payer, SpellAbility ability, CardCollectionView targetCards, final boolean effect) {
|
||||
ability.getActivatingPlayer().getGame().getAction().reveal(targetCards, payer);
|
||||
return targetCards;
|
||||
}
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ public class CostSacrifice extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
final Game game = targetCard.getGame();
|
||||
// no table there, it is already handled by CostPartWithList
|
||||
Map<AbilityKey, Object> moveParams = AbilityKey.newMap();
|
||||
|
||||
@@ -65,8 +65,8 @@ public class CostTap extends CostPart {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean payAsDecided(Player ai, PaymentDecision decision, SpellAbility ability, final boolean effect) {
|
||||
ability.getHostCard().tap(true);
|
||||
public boolean payAsDecided(Player payer, PaymentDecision decision, SpellAbility ability, final boolean effect) {
|
||||
ability.getHostCard().tap(true, ability, payer);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -195,8 +195,8 @@ public class CostTapType extends CostPartWithList {
|
||||
* @see forge.card.cost.CostPartWithList#executePayment(forge.card.spellability.SpellAbility, forge.Card)
|
||||
*/
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.tap(true);
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.tap(true, ability, payer);
|
||||
return targetCard;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ public class CostUnattach extends CostPartWithList {
|
||||
* @see forge.card.cost.CostPartWithList#executePayment(forge.card.spellability.SpellAbility, forge.Card)
|
||||
*/
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.unattachFromEntity(targetCard.getEntityAttachedTo());
|
||||
return targetCard;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ public class CostUntapType extends CostPartWithList {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Card doPayment(SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
protected Card doPayment(Player payer, SpellAbility ability, Card targetCard, final boolean effect) {
|
||||
targetCard.untap(true);
|
||||
return targetCard;
|
||||
}
|
||||
|
||||
@@ -612,7 +612,7 @@ public class PhaseHandler implements java.io.Serializable {
|
||||
for (final Card attacker : combat.getAttackers()) {
|
||||
if (!attacker.attackVigilance()) {
|
||||
attacker.setTapped(false);
|
||||
attacker.tap(true, true);
|
||||
attacker.tap(true, true, null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,8 +62,7 @@ public class ReplaceDestroy extends ReplacementEffect {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!matchesValidParam("ValidSource", runParams.get(AbilityKey.Source))) {
|
||||
if (!matchesValidParam("ValidCause", runParams.get(AbilityKey.Cause))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -76,6 +75,7 @@ public class ReplaceDestroy extends ReplacementEffect {
|
||||
@Override
|
||||
public void setReplacingObjects(Map<AbilityKey, Object> runParams, SpellAbility sa) {
|
||||
sa.setReplacingObject(AbilityKey.Card, runParams.get(AbilityKey.Affected));
|
||||
sa.setReplacingObjectsFrom(runParams, AbilityKey.Cause);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,15 +57,15 @@ public class TriggerTaps extends Trigger {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!matchesValidParam("ValidCause", runParams.get(AbilityKey.Cause))) {
|
||||
return false;
|
||||
}
|
||||
if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) {
|
||||
return false;
|
||||
}
|
||||
if (hasParam("Attacker")) {
|
||||
if ("True".equalsIgnoreCase(getParam("Attacker"))) {
|
||||
if (!(Boolean) runParams.get(AbilityKey.Attacker)) {
|
||||
return false;
|
||||
}
|
||||
} else if ("False".equalsIgnoreCase(getParam("Attacker"))) {
|
||||
if ((Boolean) runParams.get(AbilityKey.Attacker)) {
|
||||
return false;
|
||||
}
|
||||
if (getParam("Attacker").equalsIgnoreCase("True") != (Boolean) runParams.get(AbilityKey.Attacker)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Name:Barrow-Blade
|
||||
ManaCost:1
|
||||
Types:Legendary Artifact Equipment
|
||||
Types:Artifact Equipment
|
||||
K:Equip:1
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 1 | Description$ Equipped creature gets +1/+1.
|
||||
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Creature.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigAnimateAttacker | TriggerDescription$ Whenever equipped creature blocks or becomes blocked by a creature, that creature loses all abilities until end of turn.
|
||||
|
||||
@@ -4,5 +4,5 @@ Types:Enchantment Aura Curse
|
||||
K:Enchant player
|
||||
A:SP$ Attach | Cost$ 2 U | ValidTgts$ Player | AILogic$ Curse
|
||||
T:Mode$ AttackersDeclared | Execute$ TrigTapOrUntap | TriggerZones$ Battlefield | AttackedTarget$ Player.EnchantedBy | TriggerDescription$ Whenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of their choice.
|
||||
SVar:TrigTapOrUntap:DB$ TapOrUntap | ValidTgts$ Permanent | TargetingPlayer$ TriggeredAttackingPlayer
|
||||
SVar:TrigTapOrUntap:DB$ TapOrUntap | ValidTgts$ Permanent | TargetingPlayer$ TriggeredAttackingPlayer | Tapper$ TriggeredAttackingPlayer
|
||||
Oracle:Enchant player\nWhenever a player attacks enchanted player with one or more creatures, that attacking player may tap or untap target permanent of their choice.
|
||||
|
||||
@@ -2,8 +2,8 @@ Name:Desecrate Reality
|
||||
ManaCost:7
|
||||
Types:Instant
|
||||
A:SP$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand+OppCtrl+cmcEven | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | TgtPrompt$ Select up to one target nonland permanent each opponent controls | SubAbility$ DBReturn | SpellDescription$ For each opponent, exile up to one target permanent that player controls with an even mana value. (Zero is even.)
|
||||
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Permanent.cmcOdd | Hidden$ True | Mandatory$ True | ChangeTypeDesc$ permanent card with an odd mana value | ChangeNum$ 1 | ConditionCheckSVar$ X | SpellDescription$ Adamant — If at least three colorless mana was spent to cast this spell, return a permanent card with an odd mana value from your graveyard to the battlefield.
|
||||
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Permanent.cmcOdd+YouOwn | Hidden$ True | Mandatory$ True | ChangeTypeDesc$ permanent card with an odd mana value | ChangeNum$ 1 | ConditionCheckSVar$ X | SpellDescription$ Adamant — If at least three colorless mana was spent to cast this spell, return a permanent card with an odd mana value from your graveyard to the battlefield.
|
||||
SVar:X:Count$Adamant.Colorless.1.0
|
||||
SVar:OneEach:PlayerCountOpponents$Amount
|
||||
DeckHas:Ability$Graveyard
|
||||
Oracle:For each opponent, exile up to one target permanent that player controls with an even mana value. (Zero is even.)\nAdamant — If at least three colorless mana was spent to cast this spell, return a permanent card with an odd mana value from your graveyard to the battlefield.
|
||||
Oracle:For each opponent, exile up to one target permanent that player controls with an even mana value. (Zero is even.)\nAdamant — If at least three colorless mana was spent to cast this spell, return a permanent card with an odd mana value from your graveyard to the battlefield.
|
||||
|
||||
@@ -2,7 +2,7 @@ Name:Power Sink
|
||||
ManaCost:X U
|
||||
Types:Instant
|
||||
A:SP$ Counter | Cost$ X U | UnlessCost$ X | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SubAbility$ TapLands | UnlessResolveSubs$ WhenNotPaid | SpellDescription$ Counter target spell unless its controller pays {X}. If that player doesn't, they tap all lands with mana abilities they control and lose all unspent mana. | StackDescription$ Countering [{s:Targeted}] unless {p:TargetedController} pays X.
|
||||
SVar:TapLands:DB$ TapAll | ValidCards$ Land.hasManaAbility | Defined$ TargetedController | SubAbility$ ManaLose | StackDescription$ If {p:TargetedController} doesn't, that player taps all lands with mana abilities they control and
|
||||
SVar:TapLands:DB$ TapAll | ValidCards$ Land.hasManaAbility | Defined$ TargetedController | TapperController$ True | SubAbility$ ManaLose | StackDescription$ If {p:TargetedController} doesn't, that player taps all lands with mana abilities they control and
|
||||
SVar:ManaLose:DB$ DrainMana | Defined$ TargetedController
|
||||
SVar:X:Count$xPaid
|
||||
Oracle:Counter target spell unless its controller pays {X}. If that player doesn't, they tap all lands with mana abilities they control and lose all unspent mana.
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:2 R
|
||||
Types:Enchantment
|
||||
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.White | Description$ CARDNAME can't be the target of white spells or abilities from white sources.
|
||||
A:AB$ RepeatEach | Cost$ Sac<1/Orc/Orc> | CostDesc$ Sacrifice an Orc: | RepeatPlayers$ Player | RepeatSubAbility$ DBTap | SubAbility$ DBDestroy | SpellDescription$ Each player may tap any number of untapped white creatures they control. For each creature tapped this way, that player chooses up to two Plains. Then destroy all Plains that weren't chosen this way by any player.
|
||||
SVar:DBTap:DB$ Tap | CardChoices$ Creature.untapped+White+RememberedPlayerCtrl | AnyNumber$ True | ChoiceAmount$ Count$Valid Creature.untapped+White+RememberedPlayerCtrl | RememberTapped$ True | SubAbility$ ChoosePlainsToSave
|
||||
SVar:DBTap:DB$ Tap | CardChoices$ Creature.untapped+White+RememberedPlayerCtrl | Tapper$ RememberedPlayer | AnyNumber$ True | ChoiceAmount$ Count$Valid Creature.untapped+White+RememberedPlayerCtrl | RememberTapped$ True | SubAbility$ ChoosePlainsToSave
|
||||
SVar:ChoosePlainsToSave:DB$ ChooseCard | Defined$ Remembered | MinAmount$ 0 | Amount$ TappedXTwo | Choices$ Plains | ChoiceTitle$ Choose up to two Plains for each creature tapped | ChoiceZone$ Battlefield | ImprintChosen$ True | AILogic$ OwnCard | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
|
||||
SVar:DBDestroy:DB$ DestroyAll | ValidCards$ Plains.IsNotImprinted | SubAbility$ DBCleanImp | AILogic$ RaidingParty | StackDescription$ None
|
||||
|
||||
@@ -9,7 +9,7 @@ SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creatu
|
||||
#Need to imprint all non remembered cards
|
||||
SVar:DBImprint:DB$ Pump | ImprintCards$ Valid Creature.IsNotRemembered+RememberedPlayerCtrl | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
|
||||
SVar:DBTapAll:DB$ TapAll | ValidCards$ Creature.IsImprinted | SubAbility$ DBCleanupAll
|
||||
SVar:DBTapAll:DB$ TapAll | ValidCards$ Creature.IsImprinted | TapperController$ True | SubAbility$ DBCleanupAll
|
||||
SVar:DBCleanupAll:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearChosenCard$ True
|
||||
SVar:NeedsToPlayVar:Z GE3
|
||||
SVar:Z:SVar$Z1/Plus.Z2
|
||||
|
||||
@@ -4,7 +4,7 @@ Types:Artifact
|
||||
R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Untap | Skip$ True | Description$ Each player skips their untap step.
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigSands | TriggerDescription$ At the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control.
|
||||
SVar:TrigSands:DB$ UntapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.tapped,Creature.tapped,Land.tapped | RememberUntapped$ True | SubAbility$ DBTap
|
||||
SVar:DBTap:DB$ TapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.untapped+IsNotRemembered,Creature.untapped+IsNotRemembered,Land.untapped+IsNotRemembered | SubAbility$ DBCleanup
|
||||
SVar:DBTap:DB$ TapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.untapped+IsNotRemembered,Creature.untapped+IsNotRemembered,Land.untapped+IsNotRemembered | TapperController$ True | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:Each player skips their untap step.\nAt the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control.
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:3
|
||||
Types:Artifact
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigChooseToTap | TriggerDescription$ At the beginning of each player's upkeep, that player taps an untapped artifact, creature, or land they control for each fade counter on CARDNAME.
|
||||
SVar:TrigChooseToTap:DB$ ChooseCard | Defined$ TriggeredPlayer | Choices$ Artifact.untapped+ActivePlayerCtrl,Creature.untapped+ActivePlayerCtrl,Land.untapped+ActivePlayerCtrl | Amount$ X | Mandatory$ True | AILogic$ TangleWire | SubAbility$ DBTap
|
||||
SVar:DBTap:DB$ Tap | Defined$ ChosenCard | SubAbility$ DBCleanup
|
||||
SVar:DBTap:DB$ Tap | Defined$ ChosenCard | Tapper$ TriggeredPlayer | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
|
||||
SVar:X:Count$CardCounters.FADE
|
||||
K:Fading:4
|
||||
|
||||
8
forge-gui/res/cardsfolder/upcoming/asinine_antics.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/asinine_antics.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Asinine Antics
|
||||
ManaCost:2 U U
|
||||
Types:Sorcery
|
||||
K:MayFlashCost:2
|
||||
A:SP$ RepeatEach | RepeatCards$ Creature.OppCtrl | Zone$ Battlefield | RepeatSubAbility$ DBToken | ChangeZoneTable$ True | SpellDescription$ For each creature your opponents control, create a Cursed Role token attached to that creature. (if you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1)
|
||||
SVar:DBToken:DB$ Token | TokenScript$ role_cursed | AttachedTo$ Remembered
|
||||
DeckHas:Type$Aura|Role & Ability$Token
|
||||
Oracle:You may cast Asinine Antics as though it had flash if you pay {2} more to cast it. \nFor each creature your opponents control, create a Cursed Role token attached to that creature. (if you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1)
|
||||
8
forge-gui/res/cardsfolder/upcoming/become_brutes.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/become_brutes.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Become Brutes
|
||||
ManaCost:1 R
|
||||
Types:Sorcery
|
||||
A:SP$ Pump | TargetMin$ 1 | KW$ Haste | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select one or two target creatures | SubAbility$ DBRepeat | SpellDescription$ One or two target creatures each gain haste until end of turn.
|
||||
SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Targeted | Zone$ Battlefield | RepeatSubAbility$ DBToken | ChangeZoneTable$ True | SpellDescription$ For each of those creatures, create a Monster Role token attached to it. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample.)
|
||||
SVar:DBToken:DB$ Token | TokenScript$ role_monster | AttachedTo$ Remembered
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:One or two target creatures each gain haste until end of turn. For each of those creatures, create a Monster Role token attached to it. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample.)
|
||||
@@ -0,0 +1,15 @@
|
||||
Name:Besotted Knight
|
||||
ManaCost:3 W
|
||||
Types:Creature Human Knight
|
||||
PT:3/3
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
AlternateMode:Adventure
|
||||
Oracle:
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Betroth the Beast
|
||||
ManaCost:G
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ Token | TokenAmount$ 1 | TokenScript$ role_royal | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a Royal Role token attached to target creature you control.
|
||||
Oracle:Create a Royal Role token attached to target creature you control. (Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
9
forge-gui/res/cardsfolder/upcoming/charmed_clothier.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/charmed_clothier.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Charmed Clothier
|
||||
ManaCost:4 W
|
||||
Types:Creature Faerie Advisor
|
||||
PT:3/3
|
||||
K:Flying
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Royal Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_royal | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Flying\nWhen Charmed Clothier enters the battlefield, create a Royal Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
13
forge-gui/res/cardsfolder/upcoming/charming_scoundrel.txt
Normal file
13
forge-gui/res/cardsfolder/upcoming/charming_scoundrel.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Charming Scoundrel
|
||||
ManaCost:1 R
|
||||
Types:Creature Human Rogue
|
||||
PT:1/1
|
||||
K:Haste
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY
|
||||
SVar:TrigCharm:DB$ Charm | Choices$ DBLoot,DBTreasure,DBToken
|
||||
SVar:DBLoot:DB$ Discard | Mode$ TgtChoose | SubAbility$ DBDraw | SpellDescription$ Discard a card, then draw a card.
|
||||
SVar:DBDraw:DB$ Draw
|
||||
SVar:DBTreasure:DB$ Token | TokenScript$ c_a_treasure_sac | SpellDescription$ Create a Treasure token.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a Wicked Role token attached to target creature you control.
|
||||
DeckHas:Ability$Token|Discard & Type$Aura|Enchantment|Role|Treasure
|
||||
Oracle:Haste\nWhen Charming Scoundrel enters the battlefield, choose one -\n• Discard a card, then draw a card.\n• Create a Treasure token.\n• Create a Wicked Role token attached to target creature you control.
|
||||
@@ -0,0 +1,16 @@
|
||||
Name:Conceited Witch
|
||||
ManaCost:2 B
|
||||
Types:Creature Human Warlock
|
||||
PT:2/3
|
||||
K:Menace
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
AlternateMode:Adventure
|
||||
Oracle:Menace (This creature can't be blocked except by two or more creatures.)
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Price of Beauty
|
||||
ManaCost:B
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a Wicked Role token attached to target creature you control. (Then exile this card. You may cast the creature later from exile.)
|
||||
Oracle:Create a Wicked Role token attached to target creature you control. (Then exile this card. You may cast the creature later from exile.)
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Curse of the Werefox
|
||||
ManaCost:2 G
|
||||
Types:Sorcery
|
||||
A:SP$ Token | TokenAmount$ 1 | TokenScript$ role_monster | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | RememberTokens$ True | SubAbility$ DBImmediateTrigger | SpellDescription$ Create a Monster Role token attached to target creature you control. When you do, that creature fights up to one target creature you don't control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample. Creatures that fight each deal damage equal to their power to the other.)
|
||||
SVar:DBImmediateTrigger:DB$ ImmediateTrigger | RememberObjects$ Targeted | Execute$ TrigFight | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup | TriggerDescription$ When you do, that creature fights up to one target creature you don't control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample. Creatures that fight each deal damage equal to their power to the other.)
|
||||
SVar:TrigFight:DB$ Fight | Defined$ DelayTriggerRemembered | ValidTgts$ Creature.YouDontCtrl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature you don't control
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Create a Monster Role token attached to target creature you control. When you do, that creature fights up to one target creature you don't control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample. Creatures that fight each deal damage equal to their power to the other.)
|
||||
9
forge-gui/res/cardsfolder/upcoming/cursed_courtier.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/cursed_courtier.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Cursed Courtier
|
||||
ManaCost:2 W
|
||||
Types:Creature Human Noble
|
||||
PT:3/3
|
||||
K:Lifelink
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Cursed Role token attached to it. (Enchanted creature is 1/1.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_cursed | AttachedTo$ Self
|
||||
DeckHas:Ability$Token|LifeGain & Type$Aura|Enchantment|Role
|
||||
Oracle:Lifelink\nWhen Cursed Courtier enters the battlefield, create a Cursed Role token attached to it. (Enchanted creature is 1/1.)
|
||||
7
forge-gui/res/cardsfolder/upcoming/cut_in.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/cut_in.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Cut In
|
||||
ManaCost:3 R
|
||||
Types:Sorcery
|
||||
A:SP$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 4 damage to target creature.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_young_hero | TargetMin$ 0 | TargetMax$ 1 | TokenOwner$ You | AttachedTo$ ThisTargetedCard | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you control | SpellDescription$ Create a Young Hero Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Cut In deals 4 damage to target creature.\nCreate a Young Hero Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
10
forge-gui/res/cardsfolder/upcoming/diminisher_witch.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/diminisher_witch.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Diminisher Witch
|
||||
ManaCost:2 U
|
||||
Types:Creature Human Warlock
|
||||
PT:3/2
|
||||
K:Bargain
|
||||
T:Mode$ ChangesZone | Origin$ Any | Condition$ Bargain | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, if it was bargained, create a Cursed Role token attached to target creature an opponent controls. (If you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_cursed | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls
|
||||
DeckHas:Ability$Token|Sacrifice & Type$Role|Aura
|
||||
DeckHints:Type$Enchantment|Artifact & Ability$Token
|
||||
Oracle:Bargain (You may sacrifice an artifact, enchantment, or token as you cast this spell.)\nWhen Diminisher Witch enters the battlefield, if it was bargained, create a Cursed Role token attached to target creature an opponent controls. (If you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1.)
|
||||
@@ -0,0 +1,13 @@
|
||||
Name:Ellivere of the Wild Court
|
||||
ManaCost:2 G W
|
||||
Types:Legendary Creature Human Knight
|
||||
PT:4/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, create a Virtuous Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 for each enchantment you control.)
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, create a Virtuous Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 for each enchantment you control.)
|
||||
SVar:TrigToken:DB$ Token | TokenScript$ role_virtuous | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other
|
||||
T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl+enchanted | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$Whenever an enchanted creature you control deals combat damage to a player, draw a card.
|
||||
SVar:TrigDraw:DB$ Draw
|
||||
DeckHas:Type$Aura|Role & Ability$Token
|
||||
DeckHints:Type$Aura
|
||||
SVar:HasAttackEffect:TRUE
|
||||
Oracle:Whenever Ellivere of the Wild Court enters the battlefield or attacks, create a Virtuous Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 for each enchantment you control.)\nWhenever an enchanted creature you control deals combat damage to a player, draw a card.
|
||||
7
forge-gui/res/cardsfolder/upcoming/embereth_veteran.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/embereth_veteran.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Embereth Veteran
|
||||
ManaCost:R
|
||||
Types:Creature Human Knight
|
||||
PT:2/1
|
||||
A:AB$ Token | Cost$ 1 Sac<1/CARDNAME> | TokenAmount$ 1 | TokenScript$ role_young_hero | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control | SpellDescription$ Create a Young Hero Role token attached to another target creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
DeckHas:Ability$Token|Sacrifice & Type$Aura|Enchantment|Role
|
||||
Oracle:{1}, Sacrifice Embereth Veteran: Create a Young Hero Role token attached to another target creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
7
forge-gui/res/cardsfolder/upcoming/eriettes_whisper.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/eriettes_whisper.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Eriette's Whisper
|
||||
ManaCost:3 B
|
||||
Types:Sorcery
|
||||
A:SP$ Discard | ValidTgts$ Opponent | NumCards$ 2 | Mode$ TgtChoose | SubAbility$ DBToken | SpellDescription$ Target opponent discards two cards.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TargetMin$ 0 | TargetMax$ 1 | TokenOwner$ You | AttachedTo$ ThisTargetedCard | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you control | SpellDescription$ Create a Wicked Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
DeckHas:Ability$Token|Discard & Type$Role|Aura
|
||||
Oracle:Target opponent discards two cards. Create a Wicked Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
9
forge-gui/res/cardsfolder/upcoming/faunsbane_troll.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/faunsbane_troll.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Faunsbane Troll
|
||||
ManaCost:2 B G
|
||||
Types:Creature Troll
|
||||
PT:4/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Monster Role token attached to it. (Enchanted creature gets +1/+1 and has trample.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_monster | AttachedTo$ Self
|
||||
A:AB$ Fight | Defined$ Self | Cost$ Sac<1/Aura.Attached> | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature you don't control | ReplaceDyingDefined$ Targeted | SorcerySpeed$ True | SpellDescription$ CARDNAME fights target creature you don't control. If that creature would die this turn, exile it instead. Activate only as a sorcery.
|
||||
DeckHas:Ability$Token|Sacrifice & Type$Aura|Enchantment|Role
|
||||
Oracle:When Faunsbane Troll enters the battlefield, create a Monster Role token attached to it. (Enchanted creature gets +1/+1 and has trample.)\n{1}, Sacrifice an Aura attached to Faunsbane Troll: Faunsbane Troll fights target creature you don't control. If that creature would die this turn, exile it instead. Activate only as a sorcery.
|
||||
@@ -0,0 +1,16 @@
|
||||
Name:Ferocious Werefox
|
||||
ManaCost:3 G
|
||||
Types:Creature Elf Fox Warrior
|
||||
PT:4/3
|
||||
K:Trample
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
AlternateMode:Adventure
|
||||
Oracle:Trample
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Guard Change
|
||||
ManaCost:1 G
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ Token | TokenAmount$ 1 | TokenScript$ role_monster | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a Monster Role token attached to target creature you control. (Enchanted creature gets +1/+1 and has trample.)
|
||||
Oracle:Create a Monster Role token attached to target creature you control. (Enchanted creature gets +1/+1 and has trample.)
|
||||
11
forge-gui/res/cardsfolder/upcoming/gadwicks_first_duel.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/gadwicks_first_duel.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Gadwick's First Duel
|
||||
ManaCost:1 U
|
||||
Types:Enchantment Saga
|
||||
K:Saga:3:DBToken,DBScry,DBCopy
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_cursed | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature | SpellDescription$ Create a Cursed Role token attached to up to one target creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1.)
|
||||
SVar:DBScry:DB$ Scry | ScryNum$ 2 | SpellDescription$ Scry 2.
|
||||
SVar:DBCopy:DB$ DelayedTrigger | AILogic$ SpellCopy | Execute$ EffTrigCopy | ThisTurn$ True | Mode$ SpellCast | ValidCard$ Instant.cmcLE3,Sorcery.cmcLE3 | ValidActivatingPlayer$ You | SpellDescription$ When you cast your next instant or sorcery spell with mana value 3 or less this turn, copy that spell. You may choose new targets for the copy.
|
||||
SVar:EffTrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True
|
||||
DeckHas:Ability$Token & Type$Aura|Role
|
||||
DeckHints:Type$Instant|Sorcery
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Create a Cursed Role token attached to up to one target creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1.)\nII — Scry 2.\nIII — When you cast your next instant or sorcery spell with mana value 3 or less this turn, copy that spell. You may choose new targets for the copy.
|
||||
13
forge-gui/res/cardsfolder/upcoming/giant_inheritance.txt
Normal file
13
forge-gui/res/cardsfolder/upcoming/giant_inheritance.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Giant Inheritance
|
||||
ManaCost:4 G
|
||||
Types:Enchantment Aura
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 4 G | ValidTgts$ Creature | AILogic$ Pump
|
||||
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddPower$ 5 | AddToughness$ 5 | AddTrigger$ AttackTrigger | Description$ Enchanted creature gets +5/+5 and has "Whenever this creature attacks, create a Monster Role token attached to up to one target attacking creature." (Enchanted creature gets +1/+1 and has trample.)
|
||||
SVar:AttackTrigger:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature attacks, create a Monster Role token attached to up to one target attacking creature." (Enchanted creature gets +1/+1 and has trample.
|
||||
SVar:TrigToken:DB$ Token | TokenScript$ role_monster | AttachedTo$ Targeted | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target attacking creature | ValidTgts$ Creature.attacking
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, return CARDNAME to its owner's hand.
|
||||
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ TriggeredNewCardLKICopy
|
||||
SVar:SacMe:2
|
||||
DeckHas:Type$Aura|Role & Ability$Token
|
||||
Oracle:Enchant creature\nEnchanted creature gets +5/+5 and has "Whenever this creature attacks, create a Monster Role token attached to up to one target attacking creature." (Enchanted creature gets +1/+1 and has trample.)\nWhen Giant Inheritance is put into a graveyard from the battlefield, return it to its owner's hand.
|
||||
@@ -0,0 +1,11 @@
|
||||
Name:Gylwain, Casting Director
|
||||
ManaCost:1 G W
|
||||
Types:Legendary Creature Human Bard
|
||||
PT:2/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Creature.nonToken+Other+YouCtrl | Execute$ TrigCharm | TriggerDescription$ Whenever CARDNAME or another nontoken creature enters the battlefield under your control, ABILITY
|
||||
SVar:TrigCharm:DB$ Charm | Choices$ DBRoyal,DBSorcerer,DBMonster
|
||||
SVar:DBRoyal:DB$ Token | TokenAmount$ 1 | TokenScript$ role_royal | TokenOwner$ You | AttachedTo$ TriggeredCard | SpellDescription$ Create a Royal Role token attached to that creature.
|
||||
SVar:DBSorcerer:DB$ Token | TokenAmount$ 1 | TokenScript$ role_sorcerer | TokenOwner$ You | AttachedTo$ TriggeredCard | SpellDescription$ Create a Sorcerer Role token attached to that creature.
|
||||
SVar:DBMonster:DB$ Token | TokenAmount$ 1 | TokenScript$ role_monster | TokenOwner$ You | AttachedTo$ TriggeredCard | SpellDescription$ Create a Monster Role token attached to that creature.
|
||||
DeckHas:Type$Aura|Role & Ability$Token
|
||||
Oracle:Whenever Gylwain, Casting Director or another nontoken creature enters the battlefield under your control, choose one —\n• Create a Royal Role token attached to that creature.\n• Create a Sorcerer Role token attached to that creature.\n• Create a Monster Role token attached to that creature.
|
||||
13
forge-gui/res/cardsfolder/upcoming/icewrought_sentry.txt
Normal file
13
forge-gui/res/cardsfolder/upcoming/icewrought_sentry.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Icewrought Sentry
|
||||
ManaCost:2 U
|
||||
Types:Creature Elemental Soldier
|
||||
PT:2/3
|
||||
K:Vigilance
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTrigger | TriggerDescription$ Whenever CARDNAME attacks, you may pay {1}{U}. When you do, tap target creature an opponent controls.
|
||||
SVar:TrigTrigger:AB$ ImmediateTrigger | Cost$ 1 U | Execute$ TrigTap | SpellDescription$ When you do, tap target creature an opponent controls.
|
||||
SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls
|
||||
T:Mode$ Taps | ValidCard$ Creature.OppCtrl | ValidPlayer$ You | Execute$ TrigPump | TriggerDescription$ Whenever you tap an untapped creature an opponent controls, CARDNAME gets +2/+1 until end of turn.
|
||||
SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ 2 | NumDef$ 1
|
||||
SVar:HasAttackEffect:TRUE
|
||||
Oracle:Vigilance\nWhenever Icewrought Sentry attacks, you may pay {1}{U}. When you do, tap target creature an opponent controls.\nWhenever you tap an untapped creature an opponent controls, Icewrought Sentry gets +2/+1 until end of turn.
|
||||
|
||||
8
forge-gui/res/cardsfolder/upcoming/living_lectern.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/living_lectern.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Living Lectern
|
||||
ManaCost:1 U
|
||||
Types:Artifact Creature Construct
|
||||
PT:0/4
|
||||
A:AB$ Draw | SorcerySpeed$ True | Cost$ 1 Sac<1/CARDNAME> | SubAbility$ DBToken | SpellDescription$ Draw a card. Create a Sorcerer Role token attached to up to one other target creature you control. Activate only as a sorcery. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has “Whenever this creature attacks, scry 1.”)
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TargetMin$ 0 | TargetMax$ 1 | TokenScript$ role_sorcerer | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select up to one other target creature you control
|
||||
DeckHas:Ability$Token|Sacrifice & Type$Aura|Enchantment|Role
|
||||
Oracle:{1}, Sacrifice Living Lectern: Draw a card. Create a Sorcerer Role token attached to up to one other target creature you control. Activate only as a sorcery. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
@@ -0,0 +1,11 @@
|
||||
Name:Lord Skitter's Blessing
|
||||
ManaCost:1 B
|
||||
Types:Enchantment
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Wicked Role token attached to target creature you control. (if you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control
|
||||
T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | IsPresent$ Creature.enchanted+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ At the beginning of your draw step, if you control an enchanted creature, you lose 1 life and you draw an additional card.
|
||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDraw
|
||||
SVar:DBDraw:DB$ Draw | NumCards$ 1 | Defined$ You
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
DeckHints:Type$Aura
|
||||
Oracle:When Lord Skitter's Blessing enters the battlefield, create a Wicked Role token attached to target creature you control. (if you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)\nAt the beginning of your draw step, if you control an enchanted creature, you lose 1 life and you draw an additional card.
|
||||
9
forge-gui/res/cardsfolder/upcoming/merry_bards.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/merry_bards.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Merry Bards
|
||||
ManaCost:2 R
|
||||
Types:Creature Human Bard
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigImmediate | TriggerDescription$ When CARDNAME enters the battlefield, you may pay {1}. When you do, create a Young Hero Role token attached to target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
SVar:TrigImmediate:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigToken | TriggerDescription$ When you do, create a Young Hero Role token attached to target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_young_hero | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:When Merry Bards enters the battlefield, you may pay {1}. When you do, create a Young Hero Role token attached to target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
7
forge-gui/res/cardsfolder/upcoming/monstrous_rage.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/monstrous_rage.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Monstrous Rage
|
||||
ManaCost:R
|
||||
Types:Instant
|
||||
A:SP$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 2 | SubAbility$ DBToken | SpellDescription$ Target creature gets +2/+0 until end of turn. Create a Monster Role token attached to it. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample.)
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_monster | TokenOwner$ You | AttachedTo$ Targeted
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Target creature gets +2/+0 until end of turn. Create a Monster Role token attached to it. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample.)
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Not Dead After All
|
||||
ManaCost:B
|
||||
Types:Instant
|
||||
A:SP$ Animate | Triggers$ TrigChangeZone | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Until end of turn, target creature you control gains "When this creature dies, return it to the battlefield tapped under its owner's control, then create a Wicked Role token attached to it." (Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
SVar:TrigChangeZone:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone2 | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, return it to the battlefield tapped under its owner's control, then create a Wicked Role token attached to it. (Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
SVar:TrigChangeZone2:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ TriggeredNewCardLKICopy | SubAbility$ DBToken
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | AttachedTo$ TriggeredNewCardLKICopy
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Until end of turn, target creature you control gains "When this creature dies, return it to the battlefield tapped under its owner's control, then create a Wicked Role token attached to it." (Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Protective Parents
|
||||
ManaCost:2 W
|
||||
Types:Creature Human Peasant
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME dies, create a Young Hero Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_young_hero | TokenOwner$ You | TargetMin$ 0 | TargetMax$ 1 | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
SVar:SacMe:2
|
||||
Oracle:When Protective Parents dies, create a Young Hero Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it.")
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Redtooth Genealogist
|
||||
ManaCost:2 G
|
||||
Types:Creature Elf Advisor
|
||||
PT:2/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Royal Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_royal | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:When CARDNAME enters the battlefield, create a Royal Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
7
forge-gui/res/cardsfolder/upcoming/return_triumphant.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/return_triumphant.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Return Triumphant
|
||||
ManaCost:1 W
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcLE3 | SubAbility$ DBToken | TgtPrompt$ Select target creature card from your graveyard with mana value 3 or less | SpellDescription$ Return target creature card with mana value 3 or less from your graveyard to the battlefield. Create a Young Hero Role token attached to it. (Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it." If you put another Role on the creature later, put this one into the graveyard.)
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_young_hero | TokenOwner$ You | AttachedTo$ Targeted
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Return target creature card with mana value 3 or less from your graveyard to the battlefield. Create a Young Hero Role token attached to it. (Enchanted creature has "Whenever this creature attacks, if its toughness is 3 or less, put a +1/+1 counter on it." If you put another Role on the creature later, put this one into the graveyard.)
|
||||
7
forge-gui/res/cardsfolder/upcoming/royal_treatment.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/royal_treatment.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Royal Treatment
|
||||
ManaCost:G
|
||||
Types:Instant
|
||||
A:SP$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | KW$ Hexproof | SubAbility$ DBToken | SpellDescription$ Target creature you control gains hexproof until end of turn. Create a Royal Role token attached to that creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_royal | TokenOwner$ You | AttachedTo$ Targeted
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Target creature you control gains hexproof until end of turn. Create a Royal Role token attached to that creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has ward {1}.)
|
||||
7
forge-gui/res/cardsfolder/upcoming/shatter_the_oath.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/shatter_the_oath.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Shatter the Oath
|
||||
ManaCost:3 B B
|
||||
Types:Sorcery
|
||||
A:SP$ Destroy | ValidTgts$ Enchantment,Creature | TgtPrompt$ Select enchantment or creature | SubAbility$ TrigToken | SpellDescription$ Destroy target creature or enchantment. Create a Wicked Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | TargetMin$ 0 | TargetMax$ 1 | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Destroy target creature or enchantment. Create a Wicked Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
12
forge-gui/res/cardsfolder/upcoming/sleep_cursed_faerie.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/sleep_cursed_faerie.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Name:Sleep-Cursed Faerie
|
||||
ManaCost:U
|
||||
Types:Creature Faerie Wizard
|
||||
PT:3/3
|
||||
K:Flying
|
||||
K:Ward:2
|
||||
K:ETBReplacement:Other:ETBTapped
|
||||
SVar:ETBTapped:DB$ Tap | Defined$ Self | SubAbility$ DBAddCounter | ETB$ True | SpellDescription$ CARDNAME enters the battlefield tapped with three stun counters on it. (If a permanent with a stun counter would become untapped, remove one from it instead.)
|
||||
SVar:DBAddCounter:DB$ PutCounter | Defined$ Self | ETB$ True | CounterType$ STUN | CounterNum$ 3
|
||||
A:AB$ Untap | Cost$ 1 U | SpellDescription$ Untap CARDNAME.
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Sleep-Cursed Faerie enters the battlefield tapped with three stun counters on it. (If a permanent with a stun counter would become untapped, remove one from it instead.)\n{1}{U}: Untap Sleep-Cursed Faerie.
|
||||
10
forge-gui/res/cardsfolder/upcoming/spellbook_vendor.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/spellbook_vendor.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Spellbook Vendor
|
||||
ManaCost:1 W
|
||||
Types:Creature Human Peasant
|
||||
PT:2/2
|
||||
K:Vigilance
|
||||
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigImmediate | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, you may pay {1}. When you do, create a Sorcerer Role token attached to target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
SVar:TrigImmediate:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigToken | TriggerDescription$ When you do, create a Sorcerer Role token attached to target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_sorcerer | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:Vigilance\nAt the beginning of combat on your turn, you may pay {1}. When you do, create a Sorcerer Role token attached to target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
8
forge-gui/res/cardsfolder/upcoming/spiteful_hexmage.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/spiteful_hexmage.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Spiteful Hexmage
|
||||
ManaCost:B
|
||||
Types:Creature Human Warlock
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Cursed Role token attached to target creature you control. (if you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_cursed | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | AILogic$ Curse | TgtPrompt$ Select target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
Oracle:When Spiteful Hexmage enters the battlefield, create a Cursed Role token attached to target creature you control. (if you control another Role on it, put that one into the graveyard. Enchanted creature is 1/1)
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Splashy Spellcaster
|
||||
ManaCost:3 U
|
||||
Types:Creature Elemental Wizard
|
||||
PT:2/4
|
||||
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you cast an instant or sorcery spell, create a Sorcerer Role token attached to up to one other target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_sorcerer | TargetMin$ 0 | TargetMax$ 1 | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select up to one other target creature you control
|
||||
DeckHas:Ability$Token & Type$Role|Aura
|
||||
DeckHints:Type$Instant|Sorcery
|
||||
Oracle:Whenever you cast an instant or sorcery spell, create a Sorcerer Role token attached to up to one other target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
@@ -0,0 +1,10 @@
|
||||
Name:Syr Armont, the Redeemer
|
||||
ManaCost:3 G W
|
||||
Types:Legendary Creature Human Knight
|
||||
PT:4/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a Monster Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_monster | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control
|
||||
S:Mode$ Continuous | Affected$ Creature.enchanted+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Enchanted creatures you control get +1/+1.
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
DeckHints:Type$Aura
|
||||
Oracle:When Syr Armont, the Redeemer enters the battlefield, create a Monster Role token attached to another target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1 and has trample.)\nEnchanted creatures you control get +1/+1.
|
||||
9
forge-gui/res/cardsfolder/upcoming/the_witchs_vanity.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/the_witchs_vanity.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:The Witch's Vanity
|
||||
ManaCost:1 B
|
||||
Types:Enchantment Saga
|
||||
K:Saga:3:DBDestroy,DBFood,DBRole
|
||||
SVar:DBDestroy:DB$ Destroy | ValidTgts$ Creature.OppCtrl+cmcLE2 | TgtPrompt$ Select target creature an opponent controls with mana value 2 or less | SpellDescription$ Destroy target creature an opponent controls with mana value 2 or less.
|
||||
SVar:DBFood:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | SpellDescription$ Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.")
|
||||
SVar:DBRole:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a Wicked Role token attached to target creature you control.
|
||||
DeckHas:Ability$Sacrifice|LifeGain|Token & Type$Food|Artifact|Role|Aura
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Destroy target creature an opponent controls with mana value 2 or less.\nII — Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.")\nIII — Create a Wicked Role token attached to target creature you control.
|
||||
7
forge-gui/res/cardsfolder/upcoming/twisted_fealty.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/twisted_fealty.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Twisted Fealty
|
||||
ManaCost:2 R
|
||||
Types:Sorcery
|
||||
A:SP$ GainControl |ValidTgts$ Creature | TgtPrompt$ Select target creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SubAbility$ DBToken | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TokenOwner$ You | AttachedTo$ ThisTargetedCard | ValidTgts$ Creature | TgtPrompt$ Select up to one target creature | TargetMin$ 0 | TargetMax$ 1 | SpellDescription$ Create a Wicked Role token attached to up to one target creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
Oracle:Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.\nCreate a Wicked Role token attached to up to one target creature. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
11
forge-gui/res/cardsfolder/upcoming/twisted_sewer_witch.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/twisted_sewer_witch.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Twisted Sewer-Witch
|
||||
ManaCost:3 B B
|
||||
Types:Creature Human Warlock
|
||||
PT:3/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 black Rat creature token with "This creature can't block."Then for each Rat you control, create a Wicked Role token attached to that Rat. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_rat_noblock | TokenOwner$ You | SubAbility$ DBRepeat
|
||||
SVar:DBRepeat:DB$ RepeatEach | RepeatCards$ Creature.Rat+YouCtrl | Zone$ Battlefield | RepeatSubAbility$ DBToken | ChangeZoneTable$ True
|
||||
SVar:DBToken:DB$ Token | TokenScript$ role_wicked | AttachedTo$ Remembered
|
||||
DeckNeeds:Type$Rat
|
||||
DeckHas:Ability$Token & Type$Role|Aura|Rat
|
||||
Oracle:When Twisted Sewer-Witch enters the battlefield, create a 1/1 black Rat creature token with "This creature can't block." Then for each Rat you control, create a Wicked Role token attached to that Rat. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
8
forge-gui/res/cardsfolder/upcoming/unassuming_sage.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/unassuming_sage.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Unassuming Sage
|
||||
ManaCost:1 W
|
||||
Types:Creature Human Peasant Wizard
|
||||
PT:2/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, you may pay {2}. If you do, create a Sorcerer Role token attached to it. (Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
SVar:TrigToken:AB$ Token | Cost$ 2 | TokenAmount$ 1 | TokenScript$ role_sorcerer | AttachedTo$ Self
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
Oracle:When Unassuming Sage enters the battlefield, you may pay {2}. If you do, create a Sorcerer Role token attached to it. (Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1.")
|
||||
16
forge-gui/res/cardsfolder/upcoming/vantress_transmuter.txt
Normal file
16
forge-gui/res/cardsfolder/upcoming/vantress_transmuter.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
Name:Vantress Transmuter
|
||||
ManaCost:3 U
|
||||
Types:Creature Human Wizard
|
||||
PT:3/4
|
||||
DeckHas:Ability$Token & Type$Aura|Enchantment|Role
|
||||
AlternateMode:Adventure
|
||||
Oracle:
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Croaking Curse
|
||||
ManaCost:1 U
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ Tap |ValidTgts$ Creature | SubAbility$ DBToken | SpellDescription$ Tap target creature. Create a Cursed Role token attached to it. (Enchanted creature is 1/1.)
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_cursed | TokenOwner$ You | AttachedTo$ Targeted
|
||||
Oracle:Tap target creature. Create a Cursed Role token attached to it. (Enchanted creature is 1/1.)
|
||||
7
forge-gui/res/cardsfolder/upcoming/witchs_mark.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/witchs_mark.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Witch's Mark
|
||||
ManaCost:1 R
|
||||
Types:Sorcery
|
||||
A:SP$ Draw | NumCards$ 2 | UnlessCost$ Discard<1/Card> | UnlessPayer$ You | UnlessSwitched$ True | SubAbility$ DBToken | SpellDescription$ You may discard a card. If you do, draw two cards.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ role_wicked | TargetMin$ 0 | TargetMax$ 1 | TokenOwner$ You | AttachedTo$ Targeted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to one target creature you control | SpellDescription$ Create a Wicked Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
DeckHas:Ability$Token|Discard & Type$Role|Aura
|
||||
Oracle:You may discard a card. If you do, draw two cards.\nCreate a Wicked Role token attached to up to one target creature you control. (If you control another Role on it, put that one into the graveyard. Enchanted creature gets +1/+1. When this Aura is put into a graveyard, each opponent loses 1 life.)
|
||||
@@ -417,7 +417,7 @@ ScryfallCode=SLD
|
||||
429 R Ryu, World Warrior @Jason Rainville
|
||||
430 R Ken, Burning Brawler @Yongjae Choi
|
||||
431 R Blanka, Ferocious Friend @David Rapoza
|
||||
432 R Chun-Li, Countless Kicks @Martina Fackova
|
||||
432 R Chun-Li, Countless Kicks @Martina Fačková
|
||||
433 R Dhalsim, Pliable Pacifist @Victor Adame Minguez
|
||||
434 R Guile, Sonic Soldier @Wesley Burt
|
||||
435 R Zangief, the Red Cyclone @Maria Zolotukhina
|
||||
@@ -699,6 +699,7 @@ ScryfallCode=SLD
|
||||
728 R Themberchaud @Yang Luo
|
||||
729 R Braid of Fire @Sam Burley
|
||||
730 R Cleansing Nova @Rebecca Guay
|
||||
731 R Sigarda's Aid @Scott M. Fischer
|
||||
732 R Selfless Savior @Randy Vargas
|
||||
733 R Seraph Sanctuary @Alayna Danner
|
||||
900 M The Scarab God @Barely Human
|
||||
@@ -867,6 +868,10 @@ ScryfallCode=SLD
|
||||
1170 R Dark Ritual @Frank Frazetta
|
||||
1171 R Midnight Reaper @Frank Frazetta
|
||||
1172 R Seize the Day @Frank Frazetta
|
||||
1173 R Faeburrow Elder @Kev Walker
|
||||
1174 M Carnage Tyrant @Kev Walker
|
||||
1175 R Fleshbag Marauder @Kev Walker
|
||||
1176 C It That Betrays @Kev Walker
|
||||
1177 R Forced Fruition @Ori Toor
|
||||
1178 R Future Sight @Ori Toor
|
||||
1179 R Mental Misstep @Ori Toor
|
||||
@@ -889,6 +894,10 @@ ScryfallCode=SLD
|
||||
1196 R Yisan, the Wanderer Bard @Wooden Cyclops
|
||||
1197 M Alela, Artful Provocateur @Alexis Ziritt
|
||||
1198 M Sen Triplets @TMRWLND
|
||||
1199 R Tevesh Szat, Doom of Fools @Mark Riddick
|
||||
1200 R Godo, Bandit Warlord @rishxxv
|
||||
1201 M Jeska, Thrice Reborn @WolfSkullJack
|
||||
1202 M Vial Smasher the Fierce @N.C. Winters
|
||||
1203 R Blighted Agent @Anthony Francisco
|
||||
1204 R K'rrik, Son of Yawgmoth @Chase Stone
|
||||
1205 R Glistener Elf @Steve Argyle
|
||||
@@ -941,9 +950,9 @@ ScryfallCode=SLD
|
||||
1252 M Serra the Benevolent @Rebecca Guay
|
||||
1253 R Stoneforge Mystic @Rebecca Guay
|
||||
1254 R Muddle the Mixture @Rebecca Guay
|
||||
1255 U Flamekin Harbinger @Yu Maeda
|
||||
1255 R Flamekin Harbinger @Yu Maeda
|
||||
1256 M Omnath, Locus of Rage @Yu Maeda
|
||||
1257 U Risen Reef @Yu Maeda
|
||||
1257 R Risen Reef @Yu Maeda
|
||||
1258 M Voice of Resurgence @Yu Maeda
|
||||
1262 R Wheel and Deal @Samy Halim
|
||||
1263 M Questing Beast @Omar Rayyan
|
||||
@@ -987,19 +996,33 @@ ScryfallCode=SLD
|
||||
1301 M Nekusar, the Mindrazer @Mark Riddick
|
||||
1302 R Nemesis of Reason @Ryan Alexander Lee
|
||||
1303 R Gaea's Blessing @Ryan Alexander Lee
|
||||
1304 R Twilight Prophet @Ryan Alexander Lee
|
||||
1304 M Twilight Prophet @Ryan Alexander Lee
|
||||
1305 M Worldspine Wurm @Ryan Alexander Lee
|
||||
1311 R Goblin Lackey @Wizard of Barge
|
||||
1311★ R Goblin Lackey @Wizard of Barge
|
||||
1312 R Goblin Matron @Wizard of Barge
|
||||
1312★ R Goblin Matron @Wizard of Barge
|
||||
1313 R Goblin Recruiter @Wizard of Barge
|
||||
1313★ R Goblin Recruiter @Wizard of Barge
|
||||
1314 R Muxus, Goblin Grandee @Wizard of Barge
|
||||
1314★ R Muxus, Goblin Grandee @Wizard of Barge
|
||||
1315 M Shattergang Brothers @Wizard of Barge
|
||||
1334 R Arden Angel @Greg Staples
|
||||
1315★ M Shattergang Brothers @Wizard of Barge
|
||||
1335 M Gisela, the Broken Blade @Scott M. Fischer
|
||||
1336 R Bruna, the Fading Light @Scott M. Fischer
|
||||
1337 M Archangel of Thune @Scott M. Fischer
|
||||
1338 R Court of Grace @Scott M. Fischer
|
||||
1339 M Commander's Plate @Scott M. Fischer
|
||||
1342 R Angel of Finality @Howard Lyon
|
||||
1343 R Angel of the Ruins @Viko Menezes
|
||||
1344 R Arden Angel @Greg Staples
|
||||
1345 R Breathkeeper Seraph @Alexander Mokhov
|
||||
1346 R Dawnbreak Reclaimer @Tyler Jacobson
|
||||
1347 R Valkyrie Harbinger @Tran Nguyen
|
||||
1348 C Plains @Rob Alexander
|
||||
1349 C Plains @Rob Alexander
|
||||
1350 C Plains @Rob Alexander
|
||||
1351 C Plains @Rob Alexander
|
||||
1358 R Mountain @Darrell Riche
|
||||
1359 R Mountain @Victor Adame Minguez
|
||||
1360 R Mountain @Mark Zug
|
||||
@@ -1010,11 +1033,41 @@ ScryfallCode=SLD
|
||||
1365 R Mountain @Fred Fields
|
||||
1366 R Mountain @Ron Spears
|
||||
1367 R Mountain @Erica Williams
|
||||
1368 R Rewind @Julie Dillon & Scott Okumura
|
||||
1369 M Food Chain @Chris Seaman & Scott Okumura
|
||||
1370 R Rampant Growth @David Robert Hovey & Scott Okumura
|
||||
1371 M The First Sliver @Svetlin Velinov & Scott Okumura
|
||||
1382 R Plains @Gary Baseman
|
||||
1383 R Island @Gary Baseman
|
||||
1384 R Swamp @Gary Baseman
|
||||
1385 R Mountain @Gary Baseman
|
||||
1386 R Forest @Gary Baseman
|
||||
1387 M Gisela, the Broken Blade @Scott M. Fischer
|
||||
1388 R Bruna, the Fading Light @Scott M. Fischer
|
||||
1404 R Bottomless Pit @Ryan Quickfall
|
||||
1405 R Necrogen Mists @Ryan Quickfall
|
||||
1406 U Reassembling Skeleton @Ryan Quickfall
|
||||
1406 R Reassembling Skeleton @Ryan Quickfall
|
||||
1407 M Tinybones, Trinket Thief @Ryan Quickfall
|
||||
1408 R Geier Reach Sanitarium @Ryan Quickfall
|
||||
1414 R Eldritch Evolution @Wooden Cyclops
|
||||
1415 R Giant Adephage @Wooden Cyclops
|
||||
1416 R Noxious Revival @Wooden Cyclops
|
||||
1417 M Grist, the Hunger Tide @Wooden Cyclops
|
||||
1418 R Mazirek, Kraul Death Priest @Wooden Cyclops
|
||||
1424 R Oppression @TOMO77
|
||||
1425 R Abrade @TOMO77
|
||||
1426 R Mass Hysteria @TOMO77
|
||||
1427 R Terminate @TOMO77
|
||||
1453 M Ajani Goldmane @Fay Dalton & Scott Okumura
|
||||
1453b M Ajani Goldmane @Fay Dalton & Scott Okumura
|
||||
1454 M Jace Beleren @Fay Dalton & Scott Okumura
|
||||
1454b M Jace Beleren @Fay Dalton & Scott Okumura
|
||||
1455 M Liliana Vess @Fay Dalton & Scott Okumura
|
||||
1455b M Liliana Vess @Fay Dalton & Scott Okumura
|
||||
1456 M Chandra Nalaar @Fay Dalton & Scott Okumura
|
||||
1456b M Chandra Nalaar @Fay Dalton & Scott Okumura
|
||||
1457 M Garruk Wildspeaker @Fay Dalton & Scott Okumura
|
||||
1457b M Garruk Wildspeaker @Fay Dalton & Scott Okumura
|
||||
8001 M Jace, the Mind Sculptor @Wizard of Barge
|
||||
9995 M Garruk, Caller of Beasts @Jesper Ejsing
|
||||
9996 R Rograkh, Son of Rohgahh @Andrew Mar
|
||||
|
||||
@@ -530,7 +530,7 @@ ScryfallCode=PLIST
|
||||
522 R Divining Witch @Donato Giancola
|
||||
523 R Graveborn Muse @Kev Walker
|
||||
524 R Gravespawn Sovereign @Adam Rex
|
||||
525 R Helldozer @Zoltan Boros
|
||||
525 R Helldozer @Zoltan Boros & Gabor Szikszai
|
||||
526 M Mikaeus, the Unhallowed @Chris Rahn
|
||||
527 C Rend Flesh @Stephen Tappin
|
||||
528 R Sidisi, Undead Vizier @Min Yum
|
||||
@@ -643,7 +643,7 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
||||
635 U Mistmeadow Witch @Greg Staples
|
||||
636 U Moonhold @Mike Dringenberg
|
||||
637 R Murkfiend Liege @Carl Critchlow
|
||||
638 R Wheel of Sun and Moon @Zoltan Boros
|
||||
638 R Wheel of Sun and Moon @Zoltan Boros & Gabor Szikszai
|
||||
639 R Flesh // Blood @Lucas Graciano
|
||||
640 R Blood Clock @Keith Garletts
|
||||
641 R Howling Mine @Ralph Horsley
|
||||
@@ -830,7 +830,7 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
||||
822 R Planar Collapse @Mark Zug
|
||||
823 R Rout @Ron Spencer
|
||||
824 C Teremko Griffin @Martin McKenna
|
||||
825 R Braids, Conjurer Adept @Zoltan Boros
|
||||
825 R Braids, Conjurer Adept @Zoltan Boros & Gabor Szikszai
|
||||
826 R Collective Restraint @Alan Rabinowitz
|
||||
827 R Empress Galina @Matt Cavotta
|
||||
828 R Ertai's Meddling @Steve Luke
|
||||
@@ -846,7 +846,7 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
||||
838 R Contamination @Stephen Daniele
|
||||
839 C Crypt Rats @Paul Lee
|
||||
840 C Dark Ritual @Tom Fleming
|
||||
841 C Dash Hopes @Zoltan Boros
|
||||
841 C Dash Hopes @Zoltan Boros & Gabor Szikszai
|
||||
842 R Doomsday @Adrian Smith
|
||||
843 U Hymn to Tourach @Greg Staples
|
||||
844 U Imps' Taunt @Colin MacNeil
|
||||
@@ -859,7 +859,7 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
||||
851 M Tourach, Dread Cantor @Greg Staples
|
||||
852 R Alpine Moon @Alayna Danner
|
||||
853 C Brightstone Ritual @Wayne England
|
||||
854 C Burning Inquiry @Zoltan Boros
|
||||
854 C Burning Inquiry @Zoltan Boros & Gabor Szikszai
|
||||
855 R Ghitu Fire @Glen Angus
|
||||
856 R Invasion Plans @Pete Venters
|
||||
857 R Jaya Ballard, Task Mage @Matt Cavotta
|
||||
@@ -1067,7 +1067,7 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
||||
1059 R Siege of Towers @Anthony S. Waters
|
||||
1060 R Slag Fiend @Mike Bierek
|
||||
1061 M Soul of Shandalar @Raymond Swanland
|
||||
1062 M Avenger of Zendikar @Zoltan Boros
|
||||
1062 M Avenger of Zendikar @Zoltan Boros & Gabor Szikszai
|
||||
1063 C Capenna Express @Viko Menezes
|
||||
1064 R Dig Up @Slawomir Maniak
|
||||
1065 R Ghalta, Primal Hunger @Chase Stone
|
||||
@@ -1170,3 +1170,128 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
||||
1162 R Tower of Fortunes @Matt Cavotta
|
||||
1163 R Wheel of Torture @Henry Van Der Linde
|
||||
1164 U Forbidding Watchtower @Aleksi Briclot
|
||||
1165 R Alliance of Arms @Johann Bodin
|
||||
1166 R Hanna's Custody @DiTerlizzi
|
||||
1167 R Hour of Reckoning @Randy Gallegos
|
||||
1168 R Knight Exemplar @Jason Chan
|
||||
1169 R Kor Spiritdancer @Scott Chou
|
||||
1170 R Nomad Mythmaker @Darrell Riche
|
||||
1171 R Oath of Lieges @Mark Zug
|
||||
1172 R Pariah @Jon J Muth
|
||||
1173 U Prison Term @Zoltan Boros & Gabor Szikszai
|
||||
1174 R Rune of Protection: Lands @Scott M. Fischer
|
||||
1175 R Sacred Mesa @Margaret Organ-Kean
|
||||
1176 R Storm Herd @Jim Nelson
|
||||
1177 C Whitemane Lion @Zoltan Boros & Gabor Szikszai
|
||||
1178 R Dreamborn Muse @Kev Walker
|
||||
1179 R Echo Mage @Matt Stewart
|
||||
1180 R Equilibrium @Jeff Miracola
|
||||
1181 R Flusterstorm @Erica Yang
|
||||
1182 R Jace's Archivist @James Ryman
|
||||
1183 C Leap @Kev Walker
|
||||
1184 R Scalpelexis @Mark Tedin
|
||||
1185 R Thing from the Deep @Paolo Parente
|
||||
1186 R Tradewind Rider @John Matson
|
||||
1187 R Trench Gorger @Hideaki Takamura
|
||||
1188 C Brain Weevil @Anthony Jones
|
||||
1189 U Consume Spirit @Matt Thompson
|
||||
1190 C Dirtwater Wraith @Steve Luke
|
||||
1191 U Fallen Ideal @Anson Maddocks
|
||||
1192 R Kels, Fight Fixer @Magali Villeneuve
|
||||
1193 R Netherborn Altar @Titus Lunter
|
||||
1194 R Oppression @Pete Venters
|
||||
1195 C Sadistic Augermage @Nick Percival
|
||||
1196 U Spined Fluke @Mark A. Nelson
|
||||
1197 U Throat Slitter @Paolo Parente
|
||||
1198 R Zombie Apocalypse @Volkan Baǵa
|
||||
1199 R Chaos Warp @Trevor Claxton
|
||||
1200 U Cinder Elemental @Svetlin Velinov
|
||||
1201 R Furnace of Rath @John Matson
|
||||
1202 U Initiate of Blood @Carl Critchlow
|
||||
1203 R Magmatic Force @Jung Park
|
||||
1204 C Rift Bolt @Michael Sutfin
|
||||
1205 R Ryusei, the Falling Star @Nottsuo
|
||||
1206 R Shocker @Thomas M. Baxa
|
||||
1207 R Taurean Mauler @Dominick Domingo
|
||||
1208 R Burgeoning @Randy Gallegos
|
||||
1209 R Collective Voyage @Charles Urbach
|
||||
1210 R Forgotten Ancient @Mark Tedin
|
||||
1211 C Giant Caterpillar @Zina Saunders
|
||||
1212 C Gleeful Sabotage @Todd Lockwood
|
||||
1213 R Hidden Herd @Andrew Robinson
|
||||
1214 R Magus of the Vineyard @Jim Murray
|
||||
1215 R Scavenging Ooze @Austin Hsu
|
||||
1216 R Spawnwrithe @Daarken
|
||||
1217 R Tornado Elemental @Alex Horley-Orlandelli
|
||||
1218 R Verdant Force @DiTerlizzi
|
||||
1219 R Vernal Bloom @Bob Eggleton
|
||||
1220 U Adeliz, the Cinder Wind @Zezhou Chen
|
||||
1221 M Aminatou, the Fateshifter @Seb McKinnon
|
||||
1222 U Bladewing the Risen @Seb McKinnon
|
||||
1223 U Bruenor Battlehammer @Wayne Reynolds
|
||||
1224 U Dina, Soul Steeper @Chris Rahn
|
||||
1225 U Elas il-Kor, Sadistic Pilgrim @G-host Lee
|
||||
1226 U Eutropia the Twice-Favored @Sara Winters
|
||||
1227 M Ghave, Guru of Spores @James Paick
|
||||
1228 U Grumgully, the Generous @Milivoj Ćeran
|
||||
1229 U Maja, Bretagard Protector @Lie Setiawan
|
||||
1230 U Narfi, Betrayer King @Daarken
|
||||
1231 U Rakdos Cackler @Ryan Barger
|
||||
1232 U Vega, the Watcher @Paul Scott Canavan
|
||||
1233 R Crystalline Crawler @Jason Felix
|
||||
1234 C Suntouched Myr @Greg Hildebrandt
|
||||
1235 R Flamekin Village @Ron Spears
|
||||
1236 U Nivix, Aerie of the Firemind @Martina Pilcerova
|
||||
1237 U Rix Maadi, Dungeon Palace @Martina Pilcerova
|
||||
1238 R Thespian's Stage @John Avon
|
||||
1239 C Warped Landscape @Cliff Childs
|
||||
1240 R Eldrazi Conscription @Jaime Jones
|
||||
1241 C Arcbound Mouser @Campbell White
|
||||
1242 U Changeling Hero @Jeff Miracola
|
||||
1243 R Charming Prince @Randy Vargas
|
||||
1244 R Giant Killer @Jesper Ejsing
|
||||
1245 U Rebuff the Wicked @Stephen Tappin
|
||||
1246 C Royal Trooper @Scott M. Fischer
|
||||
1247 U Auramancer's Guise @Greg Staples
|
||||
1248 U Counterbalance @John Zeleznik
|
||||
1249 R Faerie Artisans @Tony Foti
|
||||
1250 U Faerie Harbinger @Larry MacDougall
|
||||
1251 U Pemmin's Aura @Greg Staples
|
||||
1252 C Spellstutter Sprite @Rebecca Guay
|
||||
1253 C Bake into a Pie @Zoltan Boros
|
||||
1254 U Cauldron Familiar @Milivoj Ćeran
|
||||
1255 C Cursed Flesh @Ron Spencer
|
||||
1256 R Demonic Bargain @Sam Guay
|
||||
1257 U Foulmire Knight @Alex Brock
|
||||
1258 M The Meathook Massacre @Chris Seaman
|
||||
1259 R Mirri the Cursed @Filip Burburan
|
||||
1260 U No Rest for the Wicked @Carl Critchlow
|
||||
1261 U Aura Barbs @Aleksi Briclot
|
||||
1262 U Dwarven Recruiter @Ciruelo
|
||||
1263 M Embercleave @Joe Slucher
|
||||
1264 C Giant's Ire @Alex Horley-Orlandelli
|
||||
1265 U Mad Ratter @Johann Bodin
|
||||
1266 U Rust Monster @Simon Dominic
|
||||
1267 C Vulshok Sorcerer @rk post
|
||||
1268 U Warchief Giant @Slawomir Maniak
|
||||
1269 R Yidaro, Wandering Monster @Jesper Ejsing
|
||||
1270 M Cavalier of Thorns @Jehan Choo
|
||||
1271 C Echoing Courage @Greg Staples
|
||||
1272 U Fae Offering @Lucas Graciano
|
||||
1273 M Greensleeves, Maro-Sorcerer @Tuan Duong Chu
|
||||
1274 R Hungry Lynx @Shreya Shetty
|
||||
1275 R Once Upon a Time @Matt Stewart
|
||||
1276 M Questing Beast @Igor Kieryluk
|
||||
1277 R Return of the Wildspeaker @Chris Rallis
|
||||
1278 R Wolfcaller's Howl @Ralph Horsley
|
||||
1279 U Cunning Breezedancer @Todd Lockwood
|
||||
1280 U Maraleaf Pixie @Matt Cavotta
|
||||
1281 M Minsc & Boo, Timeless Heroes @Andreas Zafiratos
|
||||
1282 M Oko, the Trickster @Chris Rallis
|
||||
1283 M The Royal Scions @Paul Scott Canavan
|
||||
1284 R Sythis, Harvest's Hand @Ryan Yee
|
||||
1285 R Academy Manufactor @Campbell White
|
||||
1286 U Clock of Omens @Ryan Yee
|
||||
1287 U Enchanted Carriage @Zoltan Boros
|
||||
1288 R Stonecoil Serpent @Mark Poole
|
||||
1289 R Castle Garenbrig @Adam Paquette
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -315,6 +315,7 @@ Background
|
||||
Cartouche
|
||||
Class
|
||||
Curse
|
||||
Role
|
||||
Rune
|
||||
Saga
|
||||
Shrine
|
||||
|
||||
8
forge-gui/res/tokenscripts/role_cursed.txt
Normal file
8
forge-gui/res/tokenscripts/role_cursed.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Cursed
|
||||
ManaCost:no cost
|
||||
Types:Enchantment Aura Role
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature | AILogic$ Curse
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | SetPower$ 1 | SetToughness$ 1 | Description$ Enchanted creature is 1/1
|
||||
SVar:SacMe:2
|
||||
Oracle:Enchant Creature\nEnchanted creature is 1/1
|
||||
7
forge-gui/res/tokenscripts/role_monster.txt
Normal file
7
forge-gui/res/tokenscripts/role_monster.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Monster
|
||||
ManaCost:no cost
|
||||
Types:Enchantment Aura Role
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature | AILogic$ Pump
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Trample | Description$ Enchanted creature gets +1/+1 and has trample.
|
||||
Oracle:Enchant Creature\nEnchanted creature gets +1/+1 and has trample.
|
||||
7
forge-gui/res/tokenscripts/role_royal.txt
Normal file
7
forge-gui/res/tokenscripts/role_royal.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Royal
|
||||
ManaCost:no cost
|
||||
Types:Enchantment Aura Role
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature | AILogic$ Pump
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Ward:1 | Description$ Enchanted creature gets +1/+1 and has ward {1}. (Whenever enchanted creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.)
|
||||
Oracle:Enchant Creature\nEnchanted creature gets +1/+1 and has ward {1}. (Whenever enchanted creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.)
|
||||
9
forge-gui/res/tokenscripts/role_sorcerer.txt
Normal file
9
forge-gui/res/tokenscripts/role_sorcerer.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Sorcerer
|
||||
ManaCost:no cost
|
||||
Types:Enchantment Aura Role
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature | AILogic$ Pump
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddTrigger$ AttackTrig | Description$ Enchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1."
|
||||
SVar:AttackTrig:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ Whenever this creature attacks, scry 1.
|
||||
SVar:TrigScry:DB$ Scry | ScryNum$ 1
|
||||
Oracle:Enchant Creature\nEnchanted creature gets +1/+1 and has "Whenever this creature attacks, scry 1."
|
||||
8
forge-gui/res/tokenscripts/role_virtuous.txt
Normal file
8
forge-gui/res/tokenscripts/role_virtuous.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Virtuous
|
||||
ManaCost:no cost
|
||||
Types:Enchantment Aura Role
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature | AILogic$ Pump
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ X | AddToughness$ X | Description$ Enchanted creature gets +1/+1 for each enchantment you control.
|
||||
SVar:X:Count$Valid Enchantment.YouCtrl
|
||||
Oracle:Enchant Creature\nEnchanted creature gets +1/+1.\nEnchanted creature gets +1/+1 for each enchantment you control.
|
||||
9
forge-gui/res/tokenscripts/role_wicked.txt
Normal file
9
forge-gui/res/tokenscripts/role_wicked.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Wicked
|
||||
ManaCost:no cost
|
||||
Types:Enchantment Aura Role
|
||||
K:Enchant creature
|
||||
A:SP$ Attach | Cost$ 0 | ValidTgts$ Creature | AILogic$ Pump
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | Description$ Enchanted creature gets +1/+1
|
||||
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigDamage | TriggerDescription$ When this Aura is put into a graveyard, each opponent loses 1 life.
|
||||
SVar:TrigDamage:DB$ LoseLife | LifeAmount$ 1 | Defined$ Opponent
|
||||
Oracle:Enchant Creature\nEnchanted creature gets +1/+1.\nWhen this Aura is put into a graveyard, each opponent loses 1 life.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user