mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Fix failing triggers when removed from combat
This commit is contained in:
committed by
Michael Kamensky
parent
788b34194a
commit
358c6986e0
@@ -274,8 +274,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
|
|||||||
blockers = att.getValue();
|
blockers = att.getValue();
|
||||||
if (blockers.isEmpty()) {
|
if (blockers.isEmpty()) {
|
||||||
sb.append(Localizer.getInstance().getMessage("lblLogPlayerDidntBlockAttacker", controllerName, att.getKey()));
|
sb.append(Localizer.getInstance().getMessage("lblLogPlayerDidntBlockAttacker", controllerName, att.getKey()));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
sb.append(Localizer.getInstance().getMessage("lblLogPlayerAssignedBlockerToBlockAttacker", controllerName, Lang.joinHomogenous(blockers), att.getKey()));
|
sb.append(Localizer.getInstance().getMessage("lblLogPlayerAssignedBlockerToBlockAttacker", controllerName, Lang.joinHomogenous(blockers), att.getKey()));
|
||||||
}
|
}
|
||||||
firstAttacker = false;
|
firstAttacker = false;
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class RegenerateAllEffect extends RegenerateBaseEffect {
|
|||||||
list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard, sa);
|
list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard, sa);
|
||||||
|
|
||||||
// create Effect for Regeneration
|
// create Effect for Regeneration
|
||||||
createRengenerationEffect(sa, list);
|
createRegenerationEffect(sa, list);
|
||||||
} // regenerateAllResolve
|
} // regenerateAllResolve
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import forge.game.zone.ZoneType;
|
|||||||
|
|
||||||
public abstract class RegenerateBaseEffect extends SpellAbilityEffect {
|
public abstract class RegenerateBaseEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
public void createRengenerationEffect(SpellAbility sa, final Iterable<Card> list) {
|
public void createRegenerationEffect(SpellAbility sa, final Iterable<Card> list) {
|
||||||
final Card hostCard = sa.getHostCard();
|
final Card hostCard = sa.getHostCard();
|
||||||
final Game game = hostCard.getGame();
|
final Game game = hostCard.getGame();
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class RegenerateEffect extends RegenerateBaseEffect {
|
|||||||
@Override
|
@Override
|
||||||
public void resolve(SpellAbility sa) {
|
public void resolve(SpellAbility sa) {
|
||||||
// create Effect for Regeneration
|
// create Effect for Regeneration
|
||||||
createRengenerationEffect(sa, getTargetCards(sa));
|
createRegenerationEffect(sa, getTargetCards(sa));
|
||||||
} // regenerateResolve
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public class RegenerationEffect extends SpellAbilityEffect {
|
|||||||
c.addRegeneratedThisTurn();
|
c.addRegeneratedThisTurn();
|
||||||
|
|
||||||
if (game.getCombat() != null) {
|
if (game.getCombat() != null) {
|
||||||
|
game.getCombat().saveLKI(c);
|
||||||
game.getCombat().removeFromCombat(c);
|
game.getCombat().removeFromCombat(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public class RemoveFromCombatEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
game.getCombat().saveLKI(c);
|
||||||
combat.removeFromCombat(c);
|
combat.removeFromCombat(c);
|
||||||
|
|
||||||
if (rem) {
|
if (rem) {
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ import forge.game.ability.AbilityKey;
|
|||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.ability.ApiType;
|
import forge.game.ability.ApiType;
|
||||||
import forge.game.combat.Combat;
|
import forge.game.combat.Combat;
|
||||||
|
import forge.game.combat.CombatLki;
|
||||||
import forge.game.cost.Cost;
|
import forge.game.cost.Cost;
|
||||||
import forge.game.cost.CostSacrifice;
|
import forge.game.cost.CostSacrifice;
|
||||||
import forge.game.event.GameEventCardAttachment;
|
import forge.game.event.GameEventCardAttachment;
|
||||||
@@ -353,6 +354,8 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
private final Table<SpellAbility, StaticAbility, List<String>> chosenModesTurnStatic = HashBasedTable.create();
|
private final Table<SpellAbility, StaticAbility, List<String>> chosenModesTurnStatic = HashBasedTable.create();
|
||||||
private final Table<SpellAbility, StaticAbility, List<String>> chosenModesGameStatic = HashBasedTable.create();
|
private final Table<SpellAbility, StaticAbility, List<String>> chosenModesGameStatic = HashBasedTable.create();
|
||||||
|
|
||||||
|
private CombatLki combatLKI = null;
|
||||||
|
|
||||||
// Enumeration for CMC request types
|
// Enumeration for CMC request types
|
||||||
public enum SplitCMCMode {
|
public enum SplitCMCMode {
|
||||||
CurrentSideCMC,
|
CurrentSideCMC,
|
||||||
@@ -4728,6 +4731,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
setPhasedOut(!phasedOut);
|
setPhasedOut(!phasedOut);
|
||||||
final Combat combat = getGame().getPhaseHandler().getCombat();
|
final Combat combat = getGame().getPhaseHandler().getCombat();
|
||||||
if (combat != null && phasedOut) {
|
if (combat != null && phasedOut) {
|
||||||
|
combat.saveLKI(this);
|
||||||
combat.removeFromCombat(this);
|
combat.removeFromCombat(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6982,4 +6986,18 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
public final void clearUntilLeavesBattlefield() {
|
public final void clearUntilLeavesBattlefield() {
|
||||||
untilLeavesBattlefield = view.clearCards(untilLeavesBattlefield, TrackableProperty.UntilLeavesBattlefield);
|
untilLeavesBattlefield = view.clearCards(untilLeavesBattlefield, TrackableProperty.UntilLeavesBattlefield);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CombatLki getCombatLKI() {
|
||||||
|
return combatLKI;
|
||||||
|
}
|
||||||
|
public void setCombatLKI(CombatLki combatLKI) {
|
||||||
|
this.combatLKI = combatLKI;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAttacking() {
|
||||||
|
if (getCombatLKI() != null) {
|
||||||
|
return getCombatLKI().isAttacker;
|
||||||
|
}
|
||||||
|
return getGame().getCombat().isAttacking(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -781,7 +781,7 @@ public class CardFactoryUtil {
|
|||||||
+ "TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ "
|
+ "TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ "
|
||||||
+ "Annihilator " + n + " (" + inst.getReminderText() + ")";
|
+ "Annihilator " + n + " (" + inst.getReminderText() + ")";
|
||||||
|
|
||||||
final String effect = "DB$ Sacrifice | Defined$ DefendingPlayer | SacValid$ Permanent | Amount$ " + k[1];
|
final String effect = "DB$ Sacrifice | Defined$ TriggeredDefendingPlayer | SacValid$ Permanent | Amount$ " + k[1];
|
||||||
|
|
||||||
final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic);
|
final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic);
|
||||||
trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card));
|
trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card));
|
||||||
@@ -1516,7 +1516,7 @@ public class CardFactoryUtil {
|
|||||||
} else if (keyword.equals("Provoke")) {
|
} else if (keyword.equals("Provoke")) {
|
||||||
final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Secondary$ True"
|
final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Secondary$ True"
|
||||||
+ " | TriggerDescription$ Provoke (" + inst.getReminderText() + ")";
|
+ " | TriggerDescription$ Provoke (" + inst.getReminderText() + ")";
|
||||||
final String blockStr = "DB$ MustBlock | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls";
|
final String blockStr = "DB$ MustBlock | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls";
|
||||||
final String untapStr = "DB$ Untap | Defined$ Targeted";
|
final String untapStr = "DB$ Untap | Defined$ Targeted";
|
||||||
|
|
||||||
SpellAbility blockSA = AbilityFactory.getAbility(blockStr, card);
|
SpellAbility blockSA = AbilityFactory.getAbility(blockStr, card);
|
||||||
|
|||||||
@@ -1419,8 +1419,7 @@ public class CardProperty {
|
|||||||
// These predicated refer to ongoing combat. If no combat happens, they'll return false (meaning not attacking/blocking ATM)
|
// These predicated refer to ongoing combat. If no combat happens, they'll return false (meaning not attacking/blocking ATM)
|
||||||
else if (property.startsWith("attacking")) {
|
else if (property.startsWith("attacking")) {
|
||||||
if (null == combat) return false;
|
if (null == combat) return false;
|
||||||
if (property.equals("attacking")) return combat.isAttacking(card);
|
if (property.equals("attacking")) return card.isAttacking();
|
||||||
if (property.equals("attackingLKI")) return combat.isLKIAttacking(card);
|
|
||||||
if (property.equals("attackingYou")) return combat.isAttacking(card, sourceController);
|
if (property.equals("attackingYou")) return combat.isAttacking(card, sourceController);
|
||||||
if (property.equals("attackingSame")) {
|
if (property.equals("attackingSame")) {
|
||||||
final GameEntity attacked = combat.getDefenderByAttacker(source);
|
final GameEntity attacked = combat.getDefenderByAttacker(source);
|
||||||
@@ -1521,11 +1520,9 @@ public class CardProperty {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String valid = property.split(" ")[1];
|
String valid = property.split(" ")[1];
|
||||||
for(Card c : blocked) {
|
if (Iterables.any(blocked, CardPredicates.restriction(valid, card.getController(), source, spellAbility))) {
|
||||||
if (c.isValid(valid, card.getController(), source, spellAbility)) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
for (Card c : AbilityUtils.getDefinedCards(source, valid, spellAbility)) {
|
for (Card c : AbilityUtils.getDefinedCards(source, valid, spellAbility)) {
|
||||||
if (blocked.contains(c)) {
|
if (blocked.contains(c)) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -323,6 +323,10 @@ public final class CardUtil {
|
|||||||
|
|
||||||
newCopy.setExiledWith(getLKICopy(in.getExiledWith(), cachedMap));
|
newCopy.setExiledWith(getLKICopy(in.getExiledWith(), cachedMap));
|
||||||
|
|
||||||
|
if (in.getGame().getCombat() != null) {
|
||||||
|
newCopy.setCombatLKI(in.getGame().getCombat().saveLKI(newCopy));
|
||||||
|
}
|
||||||
|
|
||||||
return newCopy;
|
return newCopy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import forge.game.card.Card;
|
|||||||
import forge.game.card.CardCollection;
|
import forge.game.card.CardCollection;
|
||||||
import forge.game.card.CardCollectionView;
|
import forge.game.card.CardCollectionView;
|
||||||
import forge.game.card.CardDamageMap;
|
import forge.game.card.CardDamageMap;
|
||||||
|
import forge.game.card.CardUtil;
|
||||||
import forge.game.keyword.Keyword;
|
import forge.game.keyword.Keyword;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.replacement.ReplacementType;
|
import forge.game.replacement.ReplacementType;
|
||||||
@@ -75,7 +76,7 @@ public class Combat {
|
|||||||
|
|
||||||
private Map<Card, CardCollection> attackersOrderedForDamageAssignment = Maps.newHashMap();
|
private Map<Card, CardCollection> attackersOrderedForDamageAssignment = Maps.newHashMap();
|
||||||
private Map<Card, CardCollection> blockersOrderedForDamageAssignment = Maps.newHashMap();
|
private Map<Card, CardCollection> blockersOrderedForDamageAssignment = Maps.newHashMap();
|
||||||
private Map<GameEntity, CombatLki> lkiCache = Maps.newHashMap();
|
private CardCollection lkiCache = new CardCollection();
|
||||||
private CardDamageMap damageMap = new CardDamageMap();
|
private CardDamageMap damageMap = new CardDamageMap();
|
||||||
|
|
||||||
// List holds creatures who have dealt 1st strike damage to disallow them deal damage on regular basis (unless they have double-strike KW)
|
// List holds creatures who have dealt 1st strike damage to disallow them deal damage on regular basis (unless they have double-strike KW)
|
||||||
@@ -300,7 +301,7 @@ public class Combat {
|
|||||||
return ab;
|
return ab;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CombatLki lki = lkiCache.get(c);
|
CombatLki lki = lkiCache.get(c).getCombatLKI();
|
||||||
return lki == null || !lki.isAttacker ? null : lki.getFirstBand();
|
return lki == null || !lki.isAttacker ? null : lki.getFirstBand();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,14 +317,6 @@ public class Combat {
|
|||||||
return Lists.newArrayList(attackedByBands.values());
|
return Lists.newArrayList(attackedByBands.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if a card is attacking, returns true if the card was attacking when it left the battlefield
|
|
||||||
*/
|
|
||||||
public final boolean isLKIAttacking(final Card c) {
|
|
||||||
AttackingBand ab = getBandOfAttacker(c);
|
|
||||||
return ab != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAttacking(Card card, GameEntity defender) {
|
public boolean isAttacking(Card card, GameEntity defender) {
|
||||||
AttackingBand ab = getBandOfAttacker(card);
|
AttackingBand ab = getBandOfAttacker(card);
|
||||||
for (Entry<GameEntity, AttackingBand> ee : attackedByBands.entries()) {
|
for (Entry<GameEntity, AttackingBand> ee : attackedByBands.entries()) {
|
||||||
@@ -918,7 +911,7 @@ public class Combat {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CombatLki lki = lkiCache.get(blocker);
|
CombatLki lki = lkiCache.get(blocker).getCombatLKI();
|
||||||
return null != lki && !lki.isAttacker; // was blocking something anyway
|
return null != lki && !lki.isAttacker; // was blocking something anyway
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -933,21 +926,36 @@ public class Combat {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CombatLki lki = lkiCache.get(blocker);
|
CombatLki lki = lkiCache.get(blocker).getCombatLKI();
|
||||||
return null != lki && !lki.isAttacker && lki.relatedBands.contains(ab); // was blocking that very band
|
return null != lki && !lki.isAttacker && lki.relatedBands.contains(ab); // was blocking that very band
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveLKI(Card lastKnownInfo) {
|
public CombatLki saveLKI(Card lki) {
|
||||||
|
if (!lki.isLKI()) {
|
||||||
|
lki = CardUtil.getLKICopy(lki);
|
||||||
|
}
|
||||||
FCollectionView<AttackingBand> attackersBlocked = null;
|
FCollectionView<AttackingBand> attackersBlocked = null;
|
||||||
final AttackingBand attackingBand = getBandOfAttacker(lastKnownInfo);
|
final AttackingBand attackingBand = getBandOfAttacker(lki);
|
||||||
final boolean isAttacker = attackingBand != null;
|
final boolean isAttacker = attackingBand != null;
|
||||||
if (!isAttacker) {
|
if (isAttacker) {
|
||||||
attackersBlocked = getAttackingBandsBlockedBy(lastKnownInfo);
|
boolean found = false;
|
||||||
|
for (AttackingBand ab : attackedByBands.values()) {
|
||||||
|
if (ab.contains(lki)) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
attackersBlocked = getAttackingBandsBlockedBy(lki);
|
||||||
if (attackersBlocked.isEmpty()) {
|
if (attackersBlocked.isEmpty()) {
|
||||||
return; // card was not even in combat
|
return null; // card was not even in combat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
lkiCache.add(lki);
|
||||||
final FCollectionView<AttackingBand> relatedBands = isAttacker ? new FCollection<>(attackingBand) : attackersBlocked;
|
final FCollectionView<AttackingBand> relatedBands = isAttacker ? new FCollection<>(attackingBand) : attackersBlocked;
|
||||||
lkiCache.put(lastKnownInfo, new CombatLki(isAttacker, relatedBands));
|
return new CombatLki(isAttacker, relatedBands);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ public class GameEventAnteCardsSelected extends GameEvent {
|
|||||||
cards = list;
|
cards = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import forge.util.TextUtil;
|
|||||||
|
|
||||||
public class GameEventCardChangeZone extends GameEvent {
|
public class GameEventCardChangeZone extends GameEvent {
|
||||||
|
|
||||||
|
|
||||||
public final Card card;
|
public final Card card;
|
||||||
public final Zone from;
|
public final Zone from;
|
||||||
public final Zone to;
|
public final Zone to;
|
||||||
|
|||||||
@@ -21,5 +21,3 @@ public class GameEventCardModeChosen extends GameEvent {
|
|||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ public class GameEventCardTapped extends GameEvent {
|
|||||||
this.card = card;
|
this.card = card;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.game.event;
|
|||||||
|
|
||||||
public class GameEventFlipCoin extends GameEvent {
|
public class GameEventFlipCoin extends GameEvent {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ public class GameEventGameOutcome extends GameEvent {
|
|||||||
this.history = history;
|
this.history = history;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ public class GameEventGameRestarted extends GameEvent {
|
|||||||
whoRestarted = playerTurn;
|
whoRestarted = playerTurn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ public class GameEventGameStarted extends GameEvent {
|
|||||||
this.players = players;
|
this.players = players;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ public class GameEventLandPlayed extends GameEvent {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ public class GameEventMulligan extends GameEvent {
|
|||||||
player = p;
|
player = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ public class GameEventPlayerPoisoned extends GameEvent {
|
|||||||
amount = num;
|
amount = num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ public class GameEventPlayerPriority extends GameEvent {
|
|||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#toString()
|
* @see java.lang.Object#toString()
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -18,4 +18,3 @@ public class GameEventScry extends GameEvent {
|
|||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ public class GameEventSpellResolved extends GameEvent {
|
|||||||
this.hasFizzled = hasFizzled;
|
this.hasFizzled = hasFizzled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -18,4 +18,3 @@ public class GameEventSurveil extends GameEvent {
|
|||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.game.event;
|
|||||||
|
|
||||||
public class GameEventTokenCreated extends GameEvent {
|
public class GameEventTokenCreated extends GameEvent {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.game.event;
|
|||||||
|
|
||||||
public class GameEventTurnEnded extends GameEvent {
|
public class GameEventTurnEnded extends GameEvent {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
|
|||||||
@@ -105,4 +105,3 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventZone event) { return null; }
|
public T visit(GameEventZone event) { return null; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ public class TriggerAbandoned extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Scheme))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Scheme))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -60,7 +59,6 @@ public class TriggerAbandoned extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
@@ -72,4 +70,3 @@ public class TriggerAbandoned extends Trigger {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public class TriggerAttached extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ public class TriggerAttackerUnblocked extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Attacker))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Attacker))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ public class TriggerAttacks extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Attacker))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Attacker))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ public class TriggerChampioned extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Championed))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Championed))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ public class TriggerDamageAll extends Trigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean performTest(Map<AbilityKey, Object> runParams) {
|
public boolean performTest(Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (hasParam("CombatDamage")) {
|
if (hasParam("CombatDamage")) {
|
||||||
if (getParam("CombatDamage").equals("True")) {
|
if (getParam("CombatDamage").equals("True")) {
|
||||||
if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) {
|
if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) {
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ public class TriggerDamageDealtOnce extends Trigger {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (hasParam("CombatDamage")) {
|
if (hasParam("CombatDamage")) {
|
||||||
if (getParam("CombatDamage").equals("True")) {
|
if (getParam("CombatDamage").equals("True")) {
|
||||||
if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) {
|
if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ public class TriggerDamageDoneOnce extends Trigger {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public boolean performTest(Map<AbilityKey, Object> runParams) {
|
public boolean performTest(Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (hasParam("CombatDamage")) {
|
if (hasParam("CombatDamage")) {
|
||||||
if (getParam("CombatDamage").equals("True")) {
|
if (getParam("CombatDamage").equals("True")) {
|
||||||
if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) {
|
if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) {
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ public class TriggerDamagePrevented extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidSource", runParams.get(AbilityKey.DamageSource))) {
|
if (!matchesValidParam("ValidSource", runParams.get(AbilityKey.DamageSource))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ public class TriggerDamagePreventedOnce extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidTarget", runParams.get(AbilityKey.DamageTarget))) {
|
if (!matchesValidParam("ValidTarget", runParams.get(AbilityKey.DamageTarget))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,4 +82,3 @@ public class TriggerExcessDamage extends Trigger {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ public class TriggerExploited extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Exploited))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Exploited))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,4 +73,3 @@ public class TriggerExplores extends Trigger {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,4 +70,3 @@ public class TriggerFightOnce extends Trigger {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ public class TriggerPayCumulativeUpkeep extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ public class TriggerPayEcho extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ public class TriggerPhaseOut extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,6 @@ public class TriggerSacrificed extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ public class TriggerScry extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ public class TriggerSearchedLibrary extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ public class TriggerSetInMotion extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ public class TriggerShuffled extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -279,7 +279,6 @@ public class TriggerSpellAbilityCastOrCopy extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ public class TriggerTaps extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) {
|
if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -73,7 +72,6 @@ public class TriggerTaps extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ public class TriggerTapsForMana extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
//Check for tapping
|
//Check for tapping
|
||||||
if (!hasParam("NoTapCheck")) {
|
if (!hasParam("NoTapCheck")) {
|
||||||
final SpellAbility manaAbility = (SpellAbility) runParams.get(AbilityKey.AbilityMana);
|
final SpellAbility manaAbility = (SpellAbility) runParams.get(AbilityKey.AbilityMana);
|
||||||
@@ -94,7 +93,6 @@ public class TriggerTapsForMana extends Trigger {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
|||||||
@@ -65,5 +65,4 @@ public class TriggerTransformed extends Trigger {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,6 @@ public enum TriggerType {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static TriggerType smartValueOf(String value) {
|
public static TriggerType smartValueOf(String value) {
|
||||||
|
|
||||||
final String valToCompate = value.trim();
|
final String valToCompate = value.trim();
|
||||||
for (final TriggerType v : TriggerType.values()) {
|
for (final TriggerType v : TriggerType.values()) {
|
||||||
if (v.name().compareToIgnoreCase(valToCompate) == 0) {
|
if (v.name().compareToIgnoreCase(valToCompate) == 0) {
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ public class TriggerUnattach extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
|
||||||
if (!matchesValidParam("ValidObject", runParams.get(AbilityKey.Object))) {
|
if (!matchesValidParam("ValidObject", runParams.get(AbilityKey.Object))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ public class TriggerVote extends Trigger {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static FCollection<Player> getVoters(final Player player,
|
private static FCollection<Player> getVoters(final Player player,
|
||||||
final ListMultimap<Object, Player> votes,
|
final ListMultimap<Object, Player> votes,
|
||||||
final boolean isOpponent, final boolean votedOtherchoice) {
|
final boolean isOpponent, final boolean votedOtherchoice) {
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3 B
|
|||||||
Types:Creature Nightstalker
|
Types:Creature Nightstalker
|
||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDiscards | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, defending player discards a card.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDiscards | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, defending player discards a card.
|
||||||
SVar:TrigDiscards:DB$ Discard | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
|
SVar:TrigDiscards:DB$ Discard | Defined$ TriggeredDefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
|
||||||
SVar:Picture:http://serv4.tcgimages.eu/img/cards/Portal_Second_Age/abyssal_nightstalker.jpg
|
SVar:Picture:http://serv4.tcgimages.eu/img/cards/Portal_Second_Age/abyssal_nightstalker.jpg
|
||||||
Oracle:Whenever Abyssal Nightstalker attacks and isn't blocked, defending player discards a card.
|
Oracle:Whenever Abyssal Nightstalker attacks and isn't blocked, defending player discards a card.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:1 B B
|
|||||||
Types:Creature Human Mercenary
|
Types:Creature Human Mercenary
|
||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards a card.
|
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards a card.
|
||||||
SVar:TrigDiscard:DB$ Discard | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
|
SVar:TrigDiscard:DB$ Discard | Defined$ TriggeredDefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
|
||||||
SVar:HasAttackEffect:Blocked
|
SVar:HasAttackEffect:Blocked
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/alley_grifters.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/alley_grifters.jpg
|
||||||
Oracle:Whenever Alley Grifters becomes blocked, defending player discards a card.
|
Oracle:Whenever Alley Grifters becomes blocked, defending player discards a card.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:2 B B
|
|||||||
Types:Legendary Creature Elemental Shaman
|
Types:Legendary Creature Elemental Shaman
|
||||||
PT:4/4
|
PT:4/4
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, choose target creature that player controls. The player sacrifices that creature.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, choose target creature that player controls. The player sacrifices that creature.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.DefenderCtrl | Sacrifice$ True | TgtPrompt$ Select target creature defending player controls
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | Sacrifice$ True | TgtPrompt$ Select target creature defending player controls
|
||||||
SVar:MustBeBlocked:True
|
SVar:MustBeBlocked:True
|
||||||
SVar:Picture:http://serv3.tcgimages.eu/img/cards/Eventide/ashling_the_extinguisher.jpg
|
SVar:Picture:http://serv3.tcgimages.eu/img/cards/Eventide/ashling_the_extinguisher.jpg
|
||||||
Oracle:Whenever Ashling, the Extinguisher deals combat damage to a player, choose target creature that player controls. The player sacrifices that creature.
|
Oracle:Whenever Ashling, the Extinguisher deals combat damage to a player, choose target creature that player controls. The player sacrifices that creature.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Creature Dragon
|
|||||||
PT:6/6
|
PT:6/6
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, it deals that much damage to each creature that player controls.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, it deals that much damage to each creature that player controls.
|
||||||
SVar:TrigDamage:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.DefenderCtrl
|
SVar:TrigDamage:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer
|
||||||
SVar:X:TriggerCount$DamageAmount
|
SVar:X:TriggerCount$DamageAmount
|
||||||
SVar:MustBeBlocked:True
|
SVar:MustBeBlocked:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/balefire_dragon.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/balefire_dragon.jpg
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:7
|
|||||||
Types:Creature Eldrazi
|
Types:Creature Eldrazi
|
||||||
PT:7/5
|
PT:7/5
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME attacks, defending player exiles two permanents they control.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME attacks, defending player exiles two permanents they control.
|
||||||
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | DefinedPlayer$ DefendingPlayer | Mandatory$ True | ChangeType$ Permanent | ChangeNum$ 2 | Chooser$ DefendingPlayer | Hidden$ True
|
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | DefinedPlayer$ TriggeredDefendingPlayer | Mandatory$ True | ChangeType$ Permanent | ChangeNum$ 2 | Chooser$ DefendingPlayer | Hidden$ True
|
||||||
SVar:HasAttackEffect:TRUE
|
SVar:HasAttackEffect:TRUE
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/bane_of_bala_ged.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/bane_of_bala_ged.jpg
|
||||||
Oracle:Whenever Bane of Bala Ged attacks, defending player exiles two permanents they control.
|
Oracle:Whenever Bane of Bala Ged attacks, defending player exiles two permanents they control.
|
||||||
@@ -4,6 +4,6 @@ Types:Creature Phyrexian Human Cleric
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
K:Intimidate
|
K:Intimidate
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may sacrifice it. If you do, destroy target creature that player controls.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may sacrifice it. If you do, destroy target creature that player controls.
|
||||||
SVar:TrigDestroy:AB$ Destroy | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.DefenderCtrl | AITgts$ BetterThanSource | TgtPrompt$ Select target creature defending player controls
|
SVar:TrigDestroy:AB$ Destroy | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | AITgts$ BetterThanSource | TgtPrompt$ Select target creature defending player controls
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/blind_zealot.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/blind_zealot.jpg
|
||||||
Oracle:Intimidate (This creature can't be blocked except by artifact creatures and/or creatures that share a color with it.)\nWhenever Blind Zealot deals combat damage to a player, you may sacrifice it. If you do, destroy target creature that player controls.
|
Oracle:Intimidate (This creature can't be blocked except by artifact creatures and/or creatures that share a color with it.)\nWhenever Blind Zealot deals combat damage to a player, you may sacrifice it. If you do, destroy target creature that player controls.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Insect
|
|||||||
PT:1/1
|
PT:1/1
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may destroy target artifact that player controls.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may destroy target artifact that player controls.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.DefenderCtrl | TgtPrompt$ Select an artifact your opponent controls.
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select an artifact your opponent controls.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/caustic_wasps.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/caustic_wasps.jpg
|
||||||
Oracle:Flying\nWhenever Caustic Wasps deals combat damage to a player, you may destroy target artifact that player controls.
|
Oracle:Flying\nWhenever Caustic Wasps deals combat damage to a player, you may destroy target artifact that player controls.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:2/3
|
|||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 black Insect creature tokens.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 black Insect creature tokens.
|
||||||
SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ b_1_1_insect | TokenOwner$ You
|
SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ b_1_1_insect | TokenOwner$ You
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigCurse | TriggerDescription$ Whenever CARDNAME attacks, you may sacrifice an Insect. When you do, curse defending player. (Create a black Aura Curse enchantment token that's attached to that player. It has enchant player and "At the beginning of your upkeep, you lose 1 life.")
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigCurse | TriggerDescription$ Whenever CARDNAME attacks, you may sacrifice an Insect. When you do, curse defending player. (Create a black Aura Curse enchantment token that's attached to that player. It has enchant player and "At the beginning of your upkeep, you lose 1 life.")
|
||||||
SVar:TrigCurse:AB$ Token | Cost$ Sac<1/Insect> | TokenAmount$ 1 | TokenScript$ b_aura_curse_life | TokenOwner$ You | AttachedTo$ DefendingPlayer
|
SVar:TrigCurse:AB$ Token | Cost$ Sac<1/Insect> | TokenAmount$ 1 | TokenScript$ b_aura_curse_life | TokenOwner$ You | AttachedTo$ TriggeredDefendingPlayer
|
||||||
SVar:HasAttackEffect:TRUE
|
SVar:HasAttackEffect:TRUE
|
||||||
DeckHas:Ability$Token
|
DeckHas:Ability$Token
|
||||||
Oracle:When Celestine Cave Witch enters the battlefield, create two 1/1 black Insect creature tokens.\nWhenever Celestine Cave Witch attacks, you may sacrifice an Insect. When you do, curse defending player. (Create a black Aura Curse enchantment token that's attached to that player. It has enchant player and "At the beginning of your upkeep, you lose 1 life.")
|
Oracle:When Celestine Cave Witch enters the battlefield, create two 1/1 black Insect creature tokens.\nWhenever Celestine Cave Witch attacks, you may sacrifice an Insect. When you do, curse defending player. (Create a black Aura Curse enchantment token that's attached to that player. It has enchant player and "At the beginning of your upkeep, you lose 1 life.")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:1 U U
|
|||||||
Types:Creature Cephalid Wizard
|
Types:Creature Cephalid Wizard
|
||||||
PT:1/1
|
PT:1/1
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigBounce | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return up to that many target permanents that player controls to their owner's hand.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigBounce | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return up to that many target permanents that player controls to their owner's hand.
|
||||||
SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Permanent.DefenderCtrl | TgtPrompt$ Select target permanent | TargetMin$ 0 | TargetMax$ X | Origin$ Battlefield | Destination$ Hand
|
SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Permanent.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target permanent | TargetMin$ 0 | TargetMax$ X | Origin$ Battlefield | Destination$ Hand
|
||||||
SVar:X:TriggeredSource$CardPower
|
SVar:X:TriggeredSource$CardPower
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/cephalid_constable.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/cephalid_constable.jpg
|
||||||
Oracle:Whenever Cephalid Constable deals combat damage to a player, return up to that many target permanents that player controls to their owner's hand.
|
Oracle:Whenever Cephalid Constable deals combat damage to a player, return up to that many target permanents that player controls to their owner's hand.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:2 R
|
|||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Animate | Cost$ 2 R | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Triggers$ TrigDamage | sVars$ Damage,CommandoRaidX | SpellDescription$ Until end of turn, target creature you control gains "When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls."
|
A:SP$ Animate | Cost$ 2 R | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Triggers$ TrigDamage | sVars$ Damage,CommandoRaidX | SpellDescription$ Until end of turn, target creature you control gains "When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls."
|
||||||
SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ Damage | OptionalDecider$ You | TriggerDescription$ When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls.
|
SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ Damage | OptionalDecider$ You | TriggerDescription$ When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls.
|
||||||
SVar:Damage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumDmg$ CommandoRaidX
|
SVar:Damage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls | NumDmg$ CommandoRaidX
|
||||||
SVar:CommandoRaidX:Count$CardPower
|
SVar:CommandoRaidX:Count$CardPower
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/commando_raid.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/commando_raid.jpg
|
||||||
Oracle:Until end of turn, target creature you control gains "When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls."
|
Oracle:Until end of turn, target creature you control gains "When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls."
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:1 U
|
|||||||
Types:Creature Merfolk Soldier
|
Types:Creature Merfolk Soldier
|
||||||
PT:1/1
|
PT:1/1
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, look at the top card of defending player's library. You may put that card on the bottom of that player's library.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, look at the top card of defending player's library. You may put that card on the bottom of that player's library.
|
||||||
SVar:TrigDig:DB$ Dig | Defined$ DefendingPlayer | DigNum$ 1 | AnyNumber$ True | DestinationZone$ Library | LibraryPosition2$ 0
|
SVar:TrigDig:DB$ Dig | Defined$ TriggeredDefendingPlayer | DigNum$ 1 | AnyNumber$ True | DestinationZone$ Library | LibraryPosition2$ 0
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/coral_fighters.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/coral_fighters.jpg
|
||||||
Oracle:Whenever Coral Fighters attacks and isn't blocked, look at the top card of defending player's library. You may put that card on the bottom of that player's library.
|
Oracle:Whenever Coral Fighters attacks and isn't blocked, look at the top card of defending player's library. You may put that card on the bottom of that player's library.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Human Minion
|
|||||||
PT:3/1
|
PT:3/1
|
||||||
A:AB$ Regenerate | Cost$ 2 B | SpellDescription$ Regenerate CARDNAME.
|
A:AB$ Regenerate | Cost$ 2 B | SpellDescription$ Regenerate CARDNAME.
|
||||||
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards a card at random.
|
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards a card at random.
|
||||||
SVar:TrigDiscard:DB$Discard | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ Random
|
SVar:TrigDiscard:DB$Discard | Defined$ TriggeredDefendingPlayer | NumCards$ 1 | Mode$ Random
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/corrupt_official.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/corrupt_official.jpg
|
||||||
Oracle:{2}{B}: Regenerate Corrupt Official.\nWhenever Corrupt Official becomes blocked, defending player discards a card at random.
|
Oracle:{2}{B}: Regenerate Corrupt Official.\nWhenever Corrupt Official becomes blocked, defending player discards a card at random.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Bird
|
|||||||
PT:3/4
|
PT:3/4
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigGoad | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigGoad | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
||||||
SVar:TrigGoad:DB$ Goad | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls.
|
SVar:TrigGoad:DB$ Goad | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/coveted_peacock.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/coveted_peacock.jpg
|
||||||
Oracle:Flying\nWhenever Coveted Peacock attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
Oracle:Flying\nWhenever Coveted Peacock attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
||||||
@@ -3,5 +3,5 @@ ManaCost:3 G G
|
|||||||
Types:Creature Boar
|
Types:Creature Boar
|
||||||
PT:4/4
|
PT:4/4
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DBMustBlock | TriggerDescription$ Whenever CARDNAME attacks, defending player chooses an untapped creature they control. That creature blocks CARDNAME this turn if able.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DBMustBlock | TriggerDescription$ Whenever CARDNAME attacks, defending player chooses an untapped creature they control. That creature blocks CARDNAME this turn if able.
|
||||||
SVar:DBMustBlock:DB$ MustBlock | Choices$ Creature.untapped+DefenderCtrl | Chooser$ DefendingPlayer
|
SVar:DBMustBlock:DB$ MustBlock | Choices$ Creature.untapped+DefenderCtrl | Chooser$ TriggeredDefendingPlayer
|
||||||
Oracle:Whenever Crashing Boars attacks, defending player chooses an untapped creature they control. That creature blocks Crashing Boars this turn if able.
|
Oracle:Whenever Crashing Boars attacks, defending player chooses an untapped creature they control. That creature blocks Crashing Boars this turn if able.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3 B
|
|||||||
Types:Creature Snake
|
Types:Creature Snake
|
||||||
PT:3/3
|
PT:3/3
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPoison | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, defending player gets a poison counter. (A player with ten or more poison counters loses the game.)
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPoison | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, defending player gets a poison counter. (A player with ten or more poison counters loses the game.)
|
||||||
SVar:TrigPoison:DB$Poison | Defined$ DefendingPlayer | Num$ 1
|
SVar:TrigPoison:DB$Poison | Defined$ TriggeredDefendingPlayer | Num$ 1
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/crypt_cobra.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/crypt_cobra.jpg
|
||||||
Oracle:Whenever Crypt Cobra attacks and isn't blocked, defending player gets a poison counter. (A player with ten or more poison counters loses the game.)
|
Oracle:Whenever Crypt Cobra attacks and isn't blocked, defending player gets a poison counter. (A player with ten or more poison counters loses the game.)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:1 R R R
|
|||||||
Types:Creature Cyclops Warrior
|
Types:Creature Cyclops Warrior
|
||||||
PT:4/4
|
PT:4/4
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExchangeDamage | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may have it deal damage equal to its power to target creature defending player controls. If you do, that creature deals damage equal to its power to CARDNAME.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExchangeDamage | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may have it deal damage equal to its power to target creature defending player controls. If you do, that creature deals damage equal to its power to CARDNAME.
|
||||||
SVar:TrigExchangeDamage:DB$DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls. | NumDmg$ MyX | SubAbility$ ReturnDmg
|
SVar:TrigExchangeDamage:DB$DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls. | NumDmg$ MyX | SubAbility$ ReturnDmg
|
||||||
SVar:ReturnDmg:DB$ DealDamage | DamageSource$ Targeted | NumDmg$ TheirX
|
SVar:ReturnDmg:DB$ DealDamage | DamageSource$ Targeted | NumDmg$ TheirX
|
||||||
SVar:MyX:Count$CardPower
|
SVar:MyX:Count$CardPower
|
||||||
SVar:TheirX:Targeted$CardPower
|
SVar:TheirX:Targeted$CardPower
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Dauthi Minion
|
|||||||
PT:2/1
|
PT:2/1
|
||||||
K:Shadow
|
K:Shadow
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may sacrifice it. If you do, defending player discards three cards.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may sacrifice it. If you do, defending player discards three cards.
|
||||||
SVar:TrigDiscard:AB$Discard | Cost$ Sac<1/CARDNAME> | Defined$ DefendingPlayer | NumCards$ 3 | AILogic$ AtLeast2 | Mode$ TgtChoose
|
SVar:TrigDiscard:AB$Discard | Cost$ Sac<1/CARDNAME> | Defined$ TriggeredDefendingPlayer | NumCards$ 3 | AILogic$ AtLeast2 | Mode$ TgtChoose
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/dauthi_mindripper.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/dauthi_mindripper.jpg
|
||||||
Oracle:Shadow (This creature can block or be blocked by only creatures with shadow.)\nWhenever Dauthi Mindripper attacks and isn't blocked, you may sacrifice it. If you do, defending player discards three cards.
|
Oracle:Shadow (This creature can block or be blocked by only creatures with shadow.)\nWhenever Dauthi Mindripper attacks and isn't blocked, you may sacrifice it. If you do, defending player discards three cards.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Human Cleric
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
K:Morph:1 W
|
K:Morph:1 W
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may destroy target enchantment that player controls.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may destroy target enchantment that player controls.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Enchantment.DefenderCtrl | TgtPrompt$ Select an enchantment your opponent controls.
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Enchantment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select an enchantment your opponent controls.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/dawning_purist.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/dawning_purist.jpg
|
||||||
Oracle:Whenever Dawning Purist deals combat damage to a player, you may destroy target enchantment that player controls.\nMorph {1}{W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)
|
Oracle:Whenever Dawning Purist deals combat damage to a player, you may destroy target enchantment that player controls.\nMorph {1}{W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Legendary Creature Vampire Cleric
|
|||||||
PT:4/4
|
PT:4/4
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME attacks, defending player chooses a nonlegendary creature card in your graveyard. You return that card to the battlefield with an additional +1/+1 counter on it. The creature is a Vampire in addition to its other types.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME attacks, defending player chooses a nonlegendary creature card in your graveyard. You return that card to the battlefield with an additional +1/+1 counter on it. The creature is a Vampire in addition to its other types.
|
||||||
SVar:TrigChoose:DB$ ChooseCard | Defined$ DefendingPlayer | Choices$ Creature.YouOwn+nonLegendary | Mandatory$ True | ChoiceZone$ Graveyard | AILogic$ WorstCard | RememberChosen$ True | SubAbility$ DBChangeZone
|
SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredDefendingPlayer | Choices$ Creature.YouOwn+nonLegendary | Mandatory$ True | ChoiceZone$ Graveyard | AILogic$ WorstCard | RememberChosen$ True | SubAbility$ DBChangeZone
|
||||||
SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | Destination$ Battlefield | WithCounters$ P1P1_1 | SubAbility$ DBAnimate
|
SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | Destination$ Battlefield | WithCounters$ P1P1_1 | SubAbility$ DBAnimate
|
||||||
SVar:DBAnimate:DB$ Animate | Defined$ ChosenCard | Types$ Vampire | Duration$ Permanent
|
SVar:DBAnimate:DB$ Animate | Defined$ ChosenCard | Types$ Vampire | Duration$ Permanent
|
||||||
DeckHas:Ability$Graveyard & Ability$Counters
|
DeckHas:Ability$Graveyard & Ability$Counters
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ PT:2/1
|
|||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player loses 1 life for each artifact they control.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player loses 1 life for each artifact they control.
|
||||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredTarget | LifeAmount$ X
|
SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredTarget | LifeAmount$ X
|
||||||
SVar:X:Count$Valid Artifact.DefenderCtrl
|
SVar:X:Count$Valid Artifact.ControlledBy TriggeredDefendingPlayer
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/emissary_of_despair.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/emissary_of_despair.jpg
|
||||||
Oracle:Flying\nWhenever Emissary of Despair deals combat damage to a player, that player loses 1 life for each artifact they control.
|
Oracle:Flying\nWhenever Emissary of Despair deals combat damage to a player, that player loses 1 life for each artifact they control.
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ PT:2/1
|
|||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you gain 1 life for each artifact that player controls.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you gain 1 life for each artifact that player controls.
|
||||||
SVar:TrigLoseLife:DB$ GainLife | Defined$ You | LifeAmount$ X
|
SVar:TrigLoseLife:DB$ GainLife | Defined$ You | LifeAmount$ X
|
||||||
SVar:X:Count$Valid Artifact.DefenderCtrl
|
SVar:X:Count$Valid Artifact.ControlledBy TriggeredDefendingPlayer
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/emissary_of_hope.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/emissary_of_hope.jpg
|
||||||
Oracle:Flying\nWhenever Emissary of Hope deals combat damage to a player, you gain 1 life for each artifact that player controls.
|
Oracle:Flying\nWhenever Emissary of Hope deals combat damage to a player, you gain 1 life for each artifact that player controls.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:2 G G
|
|||||||
Types:Creature Beast
|
Types:Creature Beast
|
||||||
PT:4/4
|
PT:4/4
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME attacks, put a +1/+1 counter on target creature of defending player's choice.
|
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME attacks, put a +1/+1 counter on target creature of defending player's choice.
|
||||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 | TargetingPlayer$ DefendingPlayer
|
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 | TargetingPlayer$ TriggeredDefendingPlayer
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/erithizon.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/erithizon.jpg
|
||||||
Oracle:Whenever Erithizon attacks, put a +1/+1 counter on target creature of defending player's choice.
|
Oracle:Whenever Erithizon attacks, put a +1/+1 counter on target creature of defending player's choice.
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ Types:Legendary Creature Vampire Assassin
|
|||||||
PT:3/5
|
PT:3/5
|
||||||
K:Unblockable
|
K:Unblockable
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, exile target creature that player controls and put a hit counter on that card. That player loses the game if they own three or more exiled card with counters on them. CARDNAME's owner shuffles CARDNAME into their library.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, exile target creature that player controls and put a hit counter on that card. That player loses the game if they own three or more exiled card with counters on them. CARDNAME's owner shuffles CARDNAME into their library.
|
||||||
SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Exile target creature that player controls | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ PutCounter
|
SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Exile target creature that player controls | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ PutCounter
|
||||||
SVar:PutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ HIT | CounterNum$ 1 | SubAbility$ DBCleanup
|
SVar:PutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ HIT | CounterNum$ 1 | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBLose
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBLose
|
||||||
SVar:DBLose:DB$ LosesGame | Defined$ TriggeredTarget | ConditionCheckSVar$ CheckExile | ConditionSVarCompare$ GE3 | SubAbility$ DBShuffle
|
SVar:DBLose:DB$ LosesGame | Defined$ TriggeredTarget | ConditionCheckSVar$ CheckExile | ConditionSVarCompare$ GE3 | SubAbility$ DBShuffle
|
||||||
SVar:CheckExile:Count$ValidExile Card.DefendingPlayerCtrl+counters_GE1_HIT
|
SVar:CheckExile:Count$ValidExile Card.counters_GE1_HIT+ControlledBy TriggeredDefendingPlayer
|
||||||
SVar:DBShuffle:DB$ ChangeZone | ConditionPresent$ Card.Self | ConditionCompare$ GE1 | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Library | Shuffle$ True
|
SVar:DBShuffle:DB$ ChangeZone | ConditionPresent$ Card.Self | ConditionCompare$ GE1 | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Library | Shuffle$ True
|
||||||
Oracle:Etrata, the Silencer can't be blocked.\nWhenever Etrata deals combat damage to a player, exile target creature that player controls and put a hit counter on that card. That player loses the game if they own three or more exiled cards with hit counters on them. Etrata's owner shuffles Etrata into their library.
|
Oracle:Etrata, the Silencer can't be blocked.\nWhenever Etrata deals combat damage to a player, exile target creature that player controls and put a hit counter on that card. That player loses the game if they own three or more exiled cards with hit counters on them. Etrata's owner shuffles Etrata into their library.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:3 W
|
|||||||
Types:Creature Human Soldier
|
Types:Creature Human Soldier
|
||||||
PT:3/2
|
PT:3/2
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTap | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, tap target creature defending player controls.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTap | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, tap target creature defending player controls.
|
||||||
SVar:TrigTap:DB$Tap | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls
|
SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls
|
||||||
SVar:HasAttackEffect:TRUE
|
SVar:HasAttackEffect:TRUE
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/fiend_binder.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/fiend_binder.jpg
|
||||||
Oracle:Whenever Fiend Binder attacks, tap target creature defending player controls.
|
Oracle:Whenever Fiend Binder attacks, tap target creature defending player controls.
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ ManaCost:4
|
|||||||
Types:Artifact Creature Golem
|
Types:Artifact Creature Golem
|
||||||
PT:2/3
|
PT:2/3
|
||||||
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player mills three cards.
|
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player mills three cards.
|
||||||
SVar:TrigMill:DB$ Mill | Defined$ DefendingPlayer | NumCards$ 3
|
SVar:TrigMill:DB$ Mill | Defined$ TriggeredDefendingPlayer | NumCards$ 3
|
||||||
Oracle:Whenever Flint Golem becomes blocked, defending player mills three cards.
|
Oracle:Whenever Flint Golem becomes blocked, defending player mills three cards.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3 G
|
|||||||
Types:Creature Elemental
|
Types:Creature Elemental
|
||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigDestroy | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may destroy target artifact defending player controls. If you do, CARDNAME assigns no combat damage this turn.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigDestroy | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may destroy target artifact defending player controls. If you do, CARDNAME assigns no combat damage this turn.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.DefenderCtrl | TgtPrompt$ Select target artifact | SubAbility$ DBPump
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact | SubAbility$ DBPump
|
||||||
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage
|
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage
|
||||||
Oracle:Whenever Floral Spuzzem attacks and isn't blocked, you may destroy target artifact defending player controls. If you do, Floral Spuzzem assigns no combat damage this turn.
|
Oracle:Whenever Floral Spuzzem attacks and isn't blocked, you may destroy target artifact defending player controls. If you do, Floral Spuzzem assigns no combat damage this turn.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Goblin Scout
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
K:Haste
|
K:Haste
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks, defending player reveals the top card of their library. If it's a land card, that player puts it into their hand.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks, defending player reveals the top card of their library. If it's a land card, that player puts it into their hand.
|
||||||
SVar:TrigDig:DB$ Dig | Defined$ DefendingPlayer | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | LibraryPosition2$ 0
|
SVar:TrigDig:DB$ Dig | Defined$ TriggeredDefendingPlayer | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | LibraryPosition2$ 0
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_guide.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_guide.jpg
|
||||||
Oracle:Haste\nWhenever Goblin Guide attacks, defending player reveals the top card of their library. If it's a land card, that player puts it into their hand.
|
Oracle:Haste\nWhenever Goblin Guide attacks, defending player reveals the top card of their library. If it's a land card, that player puts it into their hand.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3 R
|
|||||||
Types:Creature Goblin Rogue
|
Types:Creature Goblin Rogue
|
||||||
PT:4/2
|
PT:4/2
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigGoad | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigGoad | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
||||||
SVar:TrigGoad:DB$ Goad | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls.
|
SVar:TrigGoad:DB$ Goad | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_racketeer.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_racketeer.jpg
|
||||||
Oracle:Whenever Goblin Racketeer attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
Oracle:Whenever Goblin Racketeer attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
||||||
@@ -3,6 +3,6 @@ ManaCost:R
|
|||||||
Types:Creature Goblin Rogue
|
Types:Creature Goblin Rogue
|
||||||
PT:1/1
|
PT:1/1
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and CARDNAME assigns no combat damage this turn.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and CARDNAME assigns no combat damage this turn.
|
||||||
SVar:TrigDestroy:AB$ Destroy | Cost$ R | ValidTgts$ Artifact.DefenderCtrl | TgtPrompt$ Select target artifact defending player controls | SubAbility$ DBPump
|
SVar:TrigDestroy:AB$ Destroy | Cost$ R | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact defending player controls | SubAbility$ DBPump
|
||||||
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage
|
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage
|
||||||
Oracle:Whenever Goblin Vandal attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and Goblin Vandal assigns no combat damage this turn.
|
Oracle:Whenever Goblin Vandal attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and Goblin Vandal assigns no combat damage this turn.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ K:CARDNAME doesn't untap during your untap step.
|
|||||||
A:AB$ Untap | Cost$ Sac<1/Creature.Other/another creature> | SubAbility$ DBPutCounter | SpellDescription$ Untap CARDNAME and put a +1/+1 counter on it.
|
A:AB$ Untap | Cost$ Sac<1/Creature.Other/another creature> | SubAbility$ DBPutCounter | SpellDescription$ Untap CARDNAME and put a +1/+1 counter on it.
|
||||||
SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$1
|
SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$1
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks, destroy target creature defending player controls, then put a +1/+1 counter on CARDNAME.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks, destroy target creature defending player controls, then put a +1/+1 counter on CARDNAME.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter
|
||||||
SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$1
|
SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$1
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
SVar:HasAttackEffect:TRUE
|
SVar:HasAttackEffect:TRUE
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Creature Horror
|
|||||||
PT:0/4
|
PT:0/4
|
||||||
K:Fear
|
K:Fear
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, defending player loses 1 life for each card in their graveyard.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, defending player loses 1 life for each card in their graveyard.
|
||||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ DefendingPlayer | LifeAmount$ X
|
SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ X
|
||||||
SVar:X:Count$ValidGraveyard Card.DefenderCtrl
|
SVar:X:Count$ValidGraveyard Card.DefenderCtrl
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/guiltfeeder.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/guiltfeeder.jpg
|
||||||
Oracle:Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)\nWhenever Guiltfeeder attacks and isn't blocked, defending player loses 1 life for each card in their graveyard.
|
Oracle:Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)\nWhenever Guiltfeeder attacks and isn't blocked, defending player loses 1 life for each card in their graveyard.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Artifact Equipment
|
|||||||
K:Equip:2
|
K:Equip:2
|
||||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0.
|
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0.
|
||||||
T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may destroy target Equipment that player controls.
|
T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may destroy target Equipment that player controls.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Equipment.DefenderCtrl | TgtPrompt$ Select target equipment defending player controls
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Equipment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target equipment defending player controls
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/hammer_of_ruin.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/hammer_of_ruin.jpg
|
||||||
Oracle:Equipped creature gets +2/+0.\nWhenever equipped creature deals combat damage to a player, you may destroy target Equipment that player controls.\nEquip {2}
|
Oracle:Equipped creature gets +2/+0.\nWhenever equipped creature deals combat damage to a player, you may destroy target Equipment that player controls.\nEquip {2}
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Gargoyle
|
|||||||
PT:3/4
|
PT:3/4
|
||||||
K:Reach
|
K:Reach
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | OptionalDecider$ Opponent | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, defending player may draw a card.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | OptionalDecider$ Opponent | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, defending player may draw a card.
|
||||||
SVar:TrigDraw:DB$ Draw | Defined$ DefendingPlayer | NumCards$ 1
|
SVar:TrigDraw:DB$ Draw | Defined$ TriggeredDefendingPlayer | NumCards$ 1
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/harbor_guardian.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/harbor_guardian.jpg
|
||||||
Oracle:Reach (This creature can block creatures with flying.)\nWhenever Harbor Guardian attacks, defending player may draw a card.
|
Oracle:Reach (This creature can block creatures with flying.)\nWhenever Harbor Guardian attacks, defending player may draw a card.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:2
|
|||||||
Types:Artifact Equipment
|
Types:Artifact Equipment
|
||||||
K:Equip:1
|
K:Equip:1
|
||||||
T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDamage | TriggerDescription$ Whenever equipped creature attacks, CARDNAME deals 1 damage to target creature defending player controls.
|
T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDamage | TriggerDescription$ Whenever equipped creature attacks, CARDNAME deals 1 damage to target creature defending player controls.
|
||||||
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumDmg$ 1
|
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls | NumDmg$ 1
|
||||||
S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ AE
|
S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ AE
|
||||||
SVar:AE:SVar:HasAttackEffect:TRUE
|
SVar:AE:SVar:HasAttackEffect:TRUE
|
||||||
DeckHints:Name$Renowned Weaponsmith
|
DeckHints:Name$Renowned Weaponsmith
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:6/5
|
|||||||
K:Flying
|
K:Flying
|
||||||
K:Trample
|
K:Trample
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigGainControl | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, gain control of all artifacts that player controls.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigGainControl | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, gain control of all artifacts that player controls.
|
||||||
SVar:TrigGainControl:DB$ GainControl | AllValid$ Artifact.DefenderCtrl | NewController$ You
|
SVar:TrigGainControl:DB$ GainControl | AllValid$ Artifact.ControlledBy TriggeredDefendingPlayer | NewController$ You
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | PresentCompare$ GE20 | IsPresent$ Artifact.YouCtrl | Execute$ WinGame | TriggerDescription$ At the beginning of your upkeep, if you control twenty or more artifacts, you win the game.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | PresentCompare$ GE20 | IsPresent$ Artifact.YouCtrl | Execute$ WinGame | TriggerDescription$ At the beginning of your upkeep, if you control twenty or more artifacts, you win the game.
|
||||||
SVar:WinGame:DB$ WinsGame | Defined$ You
|
SVar:WinGame:DB$ WinsGame | Defined$ You
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/hellkite_tyrant.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/hellkite_tyrant.jpg
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ Types:Creature Dragon
|
|||||||
PT:3/3
|
PT:3/3
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to target creature defending player controls.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to target creature defending player controls.
|
||||||
SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumDmg$ 1
|
SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls | NumDmg$ 1
|
||||||
Oracle:Flying\nWhenever Hellkite Whelp attacks, it deals 1 damage to target creature defending player controls.
|
Oracle:Flying\nWhenever Hellkite Whelp attacks, it deals 1 damage to target creature defending player controls.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:3
|
|||||||
Types:Artifact Creature Construct
|
Types:Artifact Creature Construct
|
||||||
PT:3/2
|
PT:3/2
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigUntap | TriggerDescription$ Whenever CARDNAME attacks, untap all creatures defending player controls.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigUntap | TriggerDescription$ Whenever CARDNAME attacks, untap all creatures defending player controls.
|
||||||
SVar:TrigUntap:DB$UntapAll | ValidCards$ Creature.DefenderCtrl
|
SVar:TrigUntap:DB$ UntapAll | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/jangling_automaton.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/jangling_automaton.jpg
|
||||||
Oracle:Whenever Jangling Automaton attacks, untap all creatures defending player controls.
|
Oracle:Whenever Jangling Automaton attacks, untap all creatures defending player controls.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S
|
|||||||
SVar:TrigEffect:DB$ Effect | StaticAbilities$ AttackEach,AttackOther | Duration$ UntilYourNextTurn
|
SVar:TrigEffect:DB$ Effect | StaticAbilities$ AttackEach,AttackOther | Duration$ UntilYourNextTurn
|
||||||
SVar:AttackEach:Mode$ Continuous | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ Creatures your opponents control attack each combat if able and attack a player other than you if able.
|
SVar:AttackEach:Mode$ Continuous | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ Creatures your opponents control attack each combat if able and attack a player other than you if able.
|
||||||
SVar:AttackOther:Mode$ Continuous | Affected$ You | AddKeyword$ Creatures your opponents control attack a player other than you if able. | Secondary$ True | Description$ Creatures your opponents control attack each combat if able and attack a player other than you if able.
|
SVar:AttackOther:Mode$ Continuous | Affected$ You | AddKeyword$ Creatures your opponents control attack a player other than you if able. | Secondary$ True | Description$ Creatures your opponents control attack each combat if able and attack a player other than you if able.
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.attackingLKI | Execute$ TrigDrain | TriggerZones$ Battlefield | TriggerDescription$ Whenever an attacking creature dies, each opponent loses 1 life and you gain 1 life.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.attacking | Execute$ TrigDrain | TriggerZones$ Battlefield | TriggerDescription$ Whenever an attacking creature dies, each opponent loses 1 life and you gain 1 life.
|
||||||
SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainOneLife
|
SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainOneLife
|
||||||
SVar:DBGainOneLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
SVar:DBGainOneLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
||||||
DeckHas:Ability$LifeGain
|
DeckHas:Ability$LifeGain
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ Types:Creature Avatar
|
|||||||
PT:6/6
|
PT:6/6
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, it assigns no combat damage this turn and defending player loses 2 life.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, it assigns no combat damage this turn and defending player loses 2 life.
|
||||||
SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage | SubAbility$ DBLose
|
SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage | SubAbility$ DBLose
|
||||||
SVar:DBLose:DB$ LoseLife | Defined$ DefendingPlayer | LifeAmount$ 2
|
SVar:DBLose:DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ 2
|
||||||
Oracle:Whenever Keeper of Tresserhorn attacks and isn't blocked, it assigns no combat damage this turn and defending player loses 2 life.
|
Oracle:Whenever Keeper of Tresserhorn attacks and isn't blocked, it assigns no combat damage this turn and defending player loses 2 life.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Kithkin Mourncaller
|
|||||||
ManaCost:2 G
|
ManaCost:2 G
|
||||||
Types:Creature Kithkin Scout
|
Types:Creature Kithkin Scout
|
||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Kithkin+attackingLKI+YouOwn,Creature.Elf+attackingLKI+YouOwn | Execute$ TrigDraw | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever an attacking Kithkin or Elf is put into your graveyard from the battlefield, you may draw a card.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Kithkin+YouOwn+attacking,Creature.Elf+YouOwn+attacking | Execute$ TrigDraw | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever an attacking Kithkin or Elf is put into your graveyard from the battlefield, you may draw a card.
|
||||||
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1
|
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/kithkin_mourncaller.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/kithkin_mourncaller.jpg
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:7/6
|
|||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | TriggerDescription$ When CARDNAME enters the battlefield, it fights up to one target creature you don't control.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | TriggerDescription$ When CARDNAME enters the battlefield, it fights up to one target creature you don't control.
|
||||||
SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | TargetMin$ 0 | TargetMax$ 1
|
SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | TargetMin$ 0 | TargetMax$ 1
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks, destroy target artifact or enchantment defending player controls.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks, destroy target artifact or enchantment defending player controls.
|
||||||
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.DefenderCtrl,Enchantment.DefenderCtrl | TgtPrompt$ Select target artifact or enchantment defending player controls
|
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer,Enchantment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact or enchantment defending player controls
|
||||||
A:AB$ ChangeZone | Cost$ 1 G | ValidTgts$ Human.YouCtrl | TgtPrompt$ Choose target Human you control | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBPump | SpellDescription$ Return target Human you control to its owner's hand. CARDNAME gains indestructible until end of turn.
|
A:AB$ ChangeZone | Cost$ 1 G | ValidTgts$ Human.YouCtrl | TgtPrompt$ Choose target Human you control | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBPump | SpellDescription$ Return target Human you control to its owner's hand. CARDNAME gains indestructible until end of turn.
|
||||||
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ Indestructible
|
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ Indestructible
|
||||||
Oracle:When Kogla, the Titan Ape enters the battlefield, it fights up to one target creature you don't control.\nWhenever Kogla attacks, destroy target artifact or enchantment defending player controls.\n{1}{G}: Return target Human you control to its owner's hand. Kogla gains indestructible until end of turn.
|
Oracle:When Kogla, the Titan Ape enters the battlefield, it fights up to one target creature you don't control.\nWhenever Kogla attacks, destroy target artifact or enchantment defending player controls.\n{1}{G}: Return target Human you control to its owner's hand. Kogla gains indestructible until end of turn.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:3 U
|
|||||||
Types:Creature Human Pirate
|
Types:Creature Human Pirate
|
||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigGainControl | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may gain control of target artifact defending player controls. If you do, CARDNAME assigns no combat damage this turn.
|
T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigGainControl | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may gain control of target artifact defending player controls. If you do, CARDNAME assigns no combat damage this turn.
|
||||||
SVar:TrigGainControl:DB$ GainControl | ValidTgts$ Artifact.DefenderCtrl | TgtPrompt$ Select target artifact defending player controls | SubAbility$ DBNoCombatDamage
|
SVar:TrigGainControl:DB$ GainControl | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact defending player controls | SubAbility$ DBNoCombatDamage
|
||||||
SVar:DBNoCombatDamage:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage
|
SVar:DBNoCombatDamage:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/kukemssa_pirates.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/kukemssa_pirates.jpg
|
||||||
Oracle:Whenever Kukemssa Pirates attacks and isn't blocked, you may gain control of target artifact defending player controls. If you do, Kukemssa Pirates assigns no combat damage this turn.
|
Oracle:Whenever Kukemssa Pirates attacks and isn't blocked, you may gain control of target artifact defending player controls. If you do, Kukemssa Pirates assigns no combat damage this turn.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user