From 358c6986e050fdb7feef8c017842fd626bcff59f Mon Sep 17 00:00:00 2001 From: Bug Hunter Date: Fri, 30 Jul 2021 04:24:48 +0000 Subject: [PATCH] Fix failing triggers when removed from combat --- .../java/forge/game/GameLogFormatter.java | 3 +- .../ability/effects/RegenerateAllEffect.java | 2 +- .../ability/effects/RegenerateBaseEffect.java | 2 +- .../ability/effects/RegenerateEffect.java | 4 +- .../ability/effects/RegenerationEffect.java | 1 + .../effects/RemoveFromCombatEffect.java | 1 + .../src/main/java/forge/game/card/Card.java | 18 ++++++++ .../java/forge/game/card/CardFactoryUtil.java | 4 +- .../java/forge/game/card/CardProperty.java | 11 ++--- .../main/java/forge/game/card/CardUtil.java | 4 ++ .../main/java/forge/game/combat/Combat.java | 44 +++++++++++-------- .../event/GameEventAnteCardsSelected.java | 3 +- .../event/GameEventAttackersDeclared.java | 2 +- .../game/event/GameEventBlockersDeclared.java | 2 +- .../game/event/GameEventCardAttachment.java | 4 +- .../game/event/GameEventCardChangeZone.java | 9 ++-- .../game/event/GameEventCardCounters.java | 2 +- .../game/event/GameEventCardDamaged.java | 2 +- .../game/event/GameEventCardDestroyed.java | 2 +- .../game/event/GameEventCardModeChosen.java | 6 +-- .../forge/game/event/GameEventCardPhased.java | 4 +- .../game/event/GameEventCardRegenerated.java | 2 +- .../game/event/GameEventCardSacrificed.java | 2 +- .../game/event/GameEventCardStatsChanged.java | 8 ++-- .../forge/game/event/GameEventCardTapped.java | 3 +- .../game/event/GameEventCombatEnded.java | 2 +- .../forge/game/event/GameEventFlipCoin.java | 3 +- .../game/event/GameEventGameOutcome.java | 3 +- .../game/event/GameEventGameRestarted.java | 3 +- .../game/event/GameEventGameStarted.java | 3 +- .../forge/game/event/GameEventLandPlayed.java | 1 - .../forge/game/event/GameEventManaBurn.java | 6 +-- .../forge/game/event/GameEventManaPool.java | 2 +- .../forge/game/event/GameEventMulligan.java | 3 +- .../event/GameEventPlayerLivesChanged.java | 6 +-- .../game/event/GameEventPlayerPoisoned.java | 3 +- .../game/event/GameEventPlayerPriority.java | 3 +- .../java/forge/game/event/GameEventScry.java | 5 +-- .../forge/game/event/GameEventShuffle.java | 6 +-- .../game/event/GameEventSpellAbilityCast.java | 2 +- .../game/event/GameEventSpellResolved.java | 2 - .../forge/game/event/GameEventSurveil.java | 5 +-- .../game/event/GameEventTokenCreated.java | 3 +- .../forge/game/event/GameEventTurnBegan.java | 6 +-- .../forge/game/event/GameEventTurnEnded.java | 3 +- .../forge/game/event/IGameEventVisitor.java | 1 - .../forge/game/trigger/TriggerAbandoned.java | 3 -- .../forge/game/trigger/TriggerAttached.java | 1 - .../trigger/TriggerAttackerUnblocked.java | 1 - .../forge/game/trigger/TriggerAttacks.java | 1 - .../forge/game/trigger/TriggerChampioned.java | 1 - .../forge/game/trigger/TriggerDamageAll.java | 1 - .../game/trigger/TriggerDamageDealtOnce.java | 1 - .../game/trigger/TriggerDamageDoneOnce.java | 1 - .../game/trigger/TriggerDamagePrevented.java | 1 - .../trigger/TriggerDamagePreventedOnce.java | 1 - .../game/trigger/TriggerExcessDamage.java | 1 - .../forge/game/trigger/TriggerExploited.java | 1 - .../forge/game/trigger/TriggerExplores.java | 1 - .../forge/game/trigger/TriggerFightOnce.java | 1 - .../trigger/TriggerPayCumulativeUpkeep.java | 1 - .../forge/game/trigger/TriggerPayEcho.java | 1 - .../forge/game/trigger/TriggerPhaseOut.java | 1 - .../forge/game/trigger/TriggerSacrificed.java | 1 - .../java/forge/game/trigger/TriggerScry.java | 1 - .../game/trigger/TriggerSearchedLibrary.java | 1 - .../game/trigger/TriggerSetInMotion.java | 1 - .../forge/game/trigger/TriggerShuffled.java | 1 - .../TriggerSpellAbilityCastOrCopy.java | 1 - .../java/forge/game/trigger/TriggerTaps.java | 2 - .../game/trigger/TriggerTapsForMana.java | 4 +- .../game/trigger/TriggerTransformed.java | 1 - .../java/forge/game/trigger/TriggerType.java | 1 - .../forge/game/trigger/TriggerUnattach.java | 1 - .../java/forge/game/trigger/TriggerVote.java | 1 - .../cardsfolder/a/abyssal_nightstalker.txt | 2 +- .../res/cardsfolder/a/aetherstorm_roc.txt | 2 +- .../res/cardsfolder/a/alley_grifters.txt | 2 +- .../a/ashling_the_extinguisher.txt | 2 +- .../res/cardsfolder/b/balefire_dragon.txt | 2 +- .../res/cardsfolder/b/bane_of_bala_ged.txt | 2 +- forge-gui/res/cardsfolder/b/blind_zealot.txt | 2 +- forge-gui/res/cardsfolder/c/caustic_wasps.txt | 2 +- .../cardsfolder/c/celestine_cave_witch.txt | 2 +- .../res/cardsfolder/c/cephalid_constable.txt | 2 +- forge-gui/res/cardsfolder/c/commando_raid.txt | 2 +- .../res/cardsfolder/c/coral_fighters.txt | 2 +- .../res/cardsfolder/c/corrupt_official.txt | 2 +- .../res/cardsfolder/c/coveted_peacock.txt | 2 +- .../res/cardsfolder/c/crashing_boars.txt | 2 +- forge-gui/res/cardsfolder/c/crypt_cobra.txt | 2 +- .../res/cardsfolder/c/cyclops_gladiator.txt | 4 +- .../res/cardsfolder/d/dauthi_mindripper.txt | 2 +- .../res/cardsfolder/d/dawning_purist.txt | 2 +- .../d/drana_the_last_bloodchief.txt | 2 +- .../res/cardsfolder/e/emissary_of_despair.txt | 4 +- .../res/cardsfolder/e/emissary_of_hope.txt | 2 +- forge-gui/res/cardsfolder/e/erithizon.txt | 2 +- .../res/cardsfolder/e/etrata_the_silencer.txt | 4 +- forge-gui/res/cardsfolder/f/fiend_binder.txt | 2 +- forge-gui/res/cardsfolder/f/flint_golem.txt | 2 +- .../res/cardsfolder/f/floral_spuzzem.txt | 2 +- forge-gui/res/cardsfolder/g/goblin_guide.txt | 2 +- .../res/cardsfolder/g/goblin_racketeer.txt | 2 +- forge-gui/res/cardsfolder/g/goblin_vandal.txt | 2 +- .../res/cardsfolder/g/graven_abomination.txt | 2 +- .../cardsfolder/g/grimgrin_corpse_born.txt | 2 +- forge-gui/res/cardsfolder/g/guiltfeeder.txt | 2 +- .../res/cardsfolder/h/hammer_of_ruin.txt | 2 +- .../res/cardsfolder/h/harbor_guardian.txt | 2 +- .../res/cardsfolder/h/heart_piercer_bow.txt | 2 +- .../res/cardsfolder/h/hellkite_tyrant.txt | 2 +- .../res/cardsfolder/h/hellkite_whelp.txt | 2 +- forge-gui/res/cardsfolder/h/hellrider.txt | 2 +- .../res/cardsfolder/j/jangling_automaton.txt | 2 +- .../res/cardsfolder/k/kardur_doomscourge.txt | 2 +- .../cardsfolder/k/keeper_of_tresserhorn.txt | 2 +- .../res/cardsfolder/k/kithkin_mourncaller.txt | 2 +- .../res/cardsfolder/k/kogla_the_titan_ape.txt | 2 +- .../res/cardsfolder/k/kukemssa_pirates.txt | 2 +- .../res/cardsfolder/l/latullas_orders.txt | 2 +- .../cardsfolder/l/lightwielder_paladin.txt | 2 +- .../res/cardsfolder/l/lim_duls_paladin.txt | 2 +- forge-gui/res/cardsfolder/m/mage_slayer.txt | 2 +- .../res/cardsfolder/m/master_of_diversion.txt | 2 +- .../res/cardsfolder/m/mindleech_mass.txt | 2 +- .../res/cardsfolder/m/mistblade_shinobi.txt | 2 +- .../res/cardsfolder/m/mordant_dragon.txt | 2 +- forge-gui/res/cardsfolder/m/mtenda_lion.txt | 2 +- forge-gui/res/cardsfolder/n/necrite.txt | 2 +- .../n/nefarox_overlord_of_grixis.txt | 2 +- .../res/cardsfolder/n/nemesis_of_reason.txt | 2 +- .../cardsfolder/o/o_kagachi_vengeful_kami.txt | 2 +- .../res/cardsfolder/p/port_inspector.txt | 2 +- .../res/cardsfolder/p/pretenders_claim.txt | 2 +- .../res/cardsfolder/r/riptide_entrancer.txt | 2 +- forge-gui/res/cardsfolder/r/robber_fly.txt | 4 +- .../res/cardsfolder/r/ronin_cliffrider.txt | 2 +- forge-gui/res/cardsfolder/r/rust_scarab.txt | 2 +- .../res/cardsfolder/r/rustmouth_ogre.txt | 2 +- .../res/cardsfolder/s/scalding_salamander.txt | 2 +- .../res/cardsfolder/s/shockmaw_dragon.txt | 2 +- .../res/cardsfolder/s/shrieking_specter.txt | 2 +- .../res/cardsfolder/s/shrouded_serpent.txt | 2 +- .../res/cardsfolder/s/sibilant_spirit.txt | 2 +- forge-gui/res/cardsfolder/s/sidar_jabari.txt | 2 +- .../s/silumgar_the_drifting_death.txt | 2 +- .../res/cardsfolder/s/skirk_commando.txt | 2 +- forge-gui/res/cardsfolder/s/skymark_roc.txt | 2 +- .../cardsfolder/s/slate_street_ruffian.txt | 2 +- .../res/cardsfolder/s/snapping_thragg.txt | 2 +- .../s/soul_seizer_ghastly_haunting.txt | 2 +- forge-gui/res/cardsfolder/s/spark_mage.txt | 2 +- .../res/cardsfolder/s/sphinx_ambassador.txt | 6 +-- .../res/cardsfolder/s/star_crowned_stag.txt | 2 +- forge-gui/res/cardsfolder/s/sunder_shaman.txt | 2 +- .../res/cardsfolder/s/suqata_assassin.txt | 2 +- .../res/cardsfolder/s/swamp_mosquito.txt | 2 +- .../res/cardsfolder/s/swathcutter_giant.txt | 2 +- forge-gui/res/cardsfolder/t/terra_ravager.txt | 2 +- .../cardsfolder/t/the_haunt_of_hightower.txt | 2 +- forge-gui/res/cardsfolder/t/thraximundar.txt | 2 +- .../res/cardsfolder/t/thresher_beast.txt | 2 +- .../res/cardsfolder/t/throat_slitter.txt | 2 +- .../res/cardsfolder/t/tormentors_helm.txt | 2 +- .../res/cardsfolder/t/torrent_elemental.txt | 2 +- .../res/cardsfolder/t/trepanation_blade.txt | 2 +- .../res/cardsfolder/t/trygon_predator.txt | 2 +- .../res/cardsfolder/t/tyrants_familiar.txt | 2 +- .../res/cardsfolder/upcoming/death_tyrant.txt | 2 +- .../res/cardsfolder/v/vedalken_ghoul.txt | 2 +- forge-gui/res/cardsfolder/x/xantid_swarm.txt | 2 +- .../tokenscripts/icingdeath_frost_tongue.txt | 2 +- 173 files changed, 217 insertions(+), 242 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameLogFormatter.java b/forge-game/src/main/java/forge/game/GameLogFormatter.java index 7cb50d14fa8..12cd7450824 100644 --- a/forge-game/src/main/java/forge/game/GameLogFormatter.java +++ b/forge-game/src/main/java/forge/game/GameLogFormatter.java @@ -274,8 +274,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base { blockers = att.getValue(); if (blockers.isEmpty()) { sb.append(Localizer.getInstance().getMessage("lblLogPlayerDidntBlockAttacker", controllerName, att.getKey())); - } - else { + } else { sb.append(Localizer.getInstance().getMessage("lblLogPlayerAssignedBlockerToBlockAttacker", controllerName, Lang.joinHomogenous(blockers), att.getKey())); } firstAttacker = false; diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java index 626568be339..c25f9239760 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerateAllEffect.java @@ -36,7 +36,7 @@ public class RegenerateAllEffect extends RegenerateBaseEffect { list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard, sa); // create Effect for Regeneration - createRengenerationEffect(sa, list); + createRegenerationEffect(sa, list); } // regenerateAllResolve } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerateBaseEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerateBaseEffect.java index 2429a660154..adcb187be84 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerateBaseEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerateBaseEffect.java @@ -17,7 +17,7 @@ import forge.game.zone.ZoneType; public abstract class RegenerateBaseEffect extends SpellAbilityEffect { - public void createRengenerationEffect(SpellAbility sa, final Iterable list) { + public void createRegenerationEffect(SpellAbility sa, final Iterable list) { final Card hostCard = sa.getHostCard(); final Game game = hostCard.getGame(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java index 5eca60660f9..8a9541342f7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java @@ -46,7 +46,7 @@ public class RegenerateEffect extends RegenerateBaseEffect { @Override public void resolve(SpellAbility sa) { // create Effect for Regeneration - createRengenerationEffect(sa, getTargetCards(sa)); - } // regenerateResolve + createRegenerationEffect(sa, getTargetCards(sa)); + } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java index f96ad2a2ead..b107e531166 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerationEffect.java @@ -31,6 +31,7 @@ public class RegenerationEffect extends SpellAbilityEffect { c.addRegeneratedThisTurn(); if (game.getCombat() != null) { + game.getCombat().saveLKI(c); game.getCombat().removeFromCombat(c); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java index 9778b854703..82a377a84f6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RemoveFromCombatEffect.java @@ -59,6 +59,7 @@ public class RemoveFromCombatEffect extends SpellAbilityEffect { } } + game.getCombat().saveLKI(c); combat.removeFromCombat(c); if (rem) { diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index ad445fd87dd..39dd00484d7 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -77,6 +77,7 @@ import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; import forge.game.combat.Combat; +import forge.game.combat.CombatLki; import forge.game.cost.Cost; import forge.game.cost.CostSacrifice; import forge.game.event.GameEventCardAttachment; @@ -353,6 +354,8 @@ public class Card extends GameEntity implements Comparable, IHasSVars { private final Table> chosenModesTurnStatic = HashBasedTable.create(); private final Table> chosenModesGameStatic = HashBasedTable.create(); + private CombatLki combatLKI = null; + // Enumeration for CMC request types public enum SplitCMCMode { CurrentSideCMC, @@ -4728,6 +4731,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars { setPhasedOut(!phasedOut); final Combat combat = getGame().getPhaseHandler().getCombat(); if (combat != null && phasedOut) { + combat.saveLKI(this); combat.removeFromCombat(this); } @@ -6982,4 +6986,18 @@ public class Card extends GameEntity implements Comparable, IHasSVars { public final void clearUntilLeavesBattlefield() { 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); + } } diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 2c10561077f..790eb54da79 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -781,7 +781,7 @@ public class CardFactoryUtil { + "TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ " + "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); trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); @@ -1516,7 +1516,7 @@ public class CardFactoryUtil { } else if (keyword.equals("Provoke")) { final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Secondary$ True" + " | 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"; SpellAbility blockSA = AbilityFactory.getAbility(blockStr, card); diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index e71521d81a2..deed3ca72d2 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -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) else if (property.startsWith("attacking")) { if (null == combat) return false; - if (property.equals("attacking")) return combat.isAttacking(card); - if (property.equals("attackingLKI")) return combat.isLKIAttacking(card); + if (property.equals("attacking")) return card.isAttacking(); if (property.equals("attackingYou")) return combat.isAttacking(card, sourceController); if (property.equals("attackingSame")) { final GameEntity attacked = combat.getDefenderByAttacker(source); @@ -1521,12 +1520,10 @@ public class CardProperty { return false; } String valid = property.split(" ")[1]; - for(Card c : blocked) { - if (c.isValid(valid, card.getController(), source, spellAbility)) { - return true; - } + if (Iterables.any(blocked, CardPredicates.restriction(valid, card.getController(), source, spellAbility))) { + return true; } - for(Card c : AbilityUtils.getDefinedCards(source, valid, spellAbility)) { + for (Card c : AbilityUtils.getDefinedCards(source, valid, spellAbility)) { if (blocked.contains(c)) { return true; } diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index b5c8cf23516..bb57f0115a5 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -323,6 +323,10 @@ public final class CardUtil { newCopy.setExiledWith(getLKICopy(in.getExiledWith(), cachedMap)); + if (in.getGame().getCombat() != null) { + newCopy.setCombatLKI(in.getGame().getCombat().saveLKI(newCopy)); + } + return newCopy; } diff --git a/forge-game/src/main/java/forge/game/combat/Combat.java b/forge-game/src/main/java/forge/game/combat/Combat.java index 857b0738076..27fe236bf35 100644 --- a/forge-game/src/main/java/forge/game/combat/Combat.java +++ b/forge-game/src/main/java/forge/game/combat/Combat.java @@ -45,6 +45,7 @@ import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CardCollectionView; import forge.game.card.CardDamageMap; +import forge.game.card.CardUtil; import forge.game.keyword.Keyword; import forge.game.player.Player; import forge.game.replacement.ReplacementType; @@ -75,7 +76,7 @@ public class Combat { private Map attackersOrderedForDamageAssignment = Maps.newHashMap(); private Map blockersOrderedForDamageAssignment = Maps.newHashMap(); - private Map lkiCache = Maps.newHashMap(); + private CardCollection lkiCache = new CardCollection(); 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) @@ -300,7 +301,7 @@ public class Combat { return ab; } } - CombatLki lki = lkiCache.get(c); + CombatLki lki = lkiCache.get(c).getCombatLKI(); return lki == null || !lki.isAttacker ? null : lki.getFirstBand(); } @@ -316,14 +317,6 @@ public class Combat { 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) { AttackingBand ab = getBandOfAttacker(card); for (Entry ee : attackedByBands.entries()) { @@ -918,7 +911,7 @@ public class Combat { return false; } - CombatLki lki = lkiCache.get(blocker); + CombatLki lki = lkiCache.get(blocker).getCombatLKI(); return null != lki && !lki.isAttacker; // was blocking something anyway } @@ -933,21 +926,36 @@ public class Combat { 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 } - public void saveLKI(Card lastKnownInfo) { + public CombatLki saveLKI(Card lki) { + if (!lki.isLKI()) { + lki = CardUtil.getLKICopy(lki); + } FCollectionView attackersBlocked = null; - final AttackingBand attackingBand = getBandOfAttacker(lastKnownInfo); + final AttackingBand attackingBand = getBandOfAttacker(lki); final boolean isAttacker = attackingBand != null; - if (!isAttacker) { - attackersBlocked = getAttackingBandsBlockedBy(lastKnownInfo); + if (isAttacker) { + 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()) { - return; // card was not even in combat + return null; // card was not even in combat } } + lkiCache.add(lki); final FCollectionView relatedBands = isAttacker ? new FCollection<>(attackingBand) : attackersBlocked; - lkiCache.put(lastKnownInfo, new CombatLki(isAttacker, relatedBands)); + return new CombatLki(isAttacker, relatedBands); } } diff --git a/forge-game/src/main/java/forge/game/event/GameEventAnteCardsSelected.java b/forge-game/src/main/java/forge/game/event/GameEventAnteCardsSelected.java index de91fa47733..1b9c06ece6e 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventAnteCardsSelected.java +++ b/forge-game/src/main/java/forge/game/event/GameEventAnteCardsSelected.java @@ -10,8 +10,7 @@ public class GameEventAnteCardsSelected extends GameEvent { public GameEventAnteCardsSelected(Multimap list) { cards = list; } - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventAttackersDeclared.java b/forge-game/src/main/java/forge/game/event/GameEventAttackersDeclared.java index 561598eaac1..09ef47c0a43 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventAttackersDeclared.java +++ b/forge-game/src/main/java/forge/game/event/GameEventAttackersDeclared.java @@ -14,7 +14,7 @@ public class GameEventAttackersDeclared extends GameEvent { public final Player player; public final Multimap attackersMap; - + public GameEventAttackersDeclared(Player playerTurn, Multimap attackersMap) { this.player = playerTurn; this.attackersMap = attackersMap; diff --git a/forge-game/src/main/java/forge/game/event/GameEventBlockersDeclared.java b/forge-game/src/main/java/forge/game/event/GameEventBlockersDeclared.java index 87a78679c28..810c727b87c 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventBlockersDeclared.java +++ b/forge-game/src/main/java/forge/game/event/GameEventBlockersDeclared.java @@ -20,7 +20,7 @@ public class GameEventBlockersDeclared extends GameEvent { public final Map> blockers; public final Player defendingPlayer; - + public GameEventBlockersDeclared(Player who, Map> blockers) { this.blockers = blockers; defendingPlayer = who; diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardAttachment.java b/forge-game/src/main/java/forge/game/event/GameEventCardAttachment.java index 567e9208d48..1653c15777e 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardAttachment.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardAttachment.java @@ -8,13 +8,13 @@ public class GameEventCardAttachment extends GameEvent { public final Card equipment; public final GameEntity newTarget; // can enchant player, I'm ssaving a class to enchants - it could be incorrect. public final GameEntity oldEntiy; - + public GameEventCardAttachment(Card attachment, GameEntity formerEntity, GameEntity newEntity) { this.equipment = attachment; this.newTarget = newEntity; this.oldEntiy = formerEntity; } - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardChangeZone.java b/forge-game/src/main/java/forge/game/event/GameEventCardChangeZone.java index 42cbde5dd20..12bb68655b4 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardChangeZone.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardChangeZone.java @@ -6,11 +6,10 @@ import forge.util.TextUtil; public class GameEventCardChangeZone extends GameEvent { + public final Card card; + public final Zone from; + public final Zone to; - public final Card card; - public final Zone from; - public final Zone to; - public GameEventCardChangeZone(Card c, Zone zoneFrom, Zone zoneTo) { card = c; from = zoneFrom; @@ -21,7 +20,7 @@ public class GameEventCardChangeZone extends GameEvent { public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardCounters.java b/forge-game/src/main/java/forge/game/event/GameEventCardCounters.java index 45284d863db..31c09db1b7e 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardCounters.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardCounters.java @@ -15,7 +15,7 @@ public class GameEventCardCounters extends GameEvent { this.oldValue = old; this.newValue = newValue; } - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardDamaged.java b/forge-game/src/main/java/forge/game/event/GameEventCardDamaged.java index 149cf8e3ea9..69a4c156205 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardDamaged.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardDamaged.java @@ -3,7 +3,7 @@ package forge.game.event; import forge.game.card.Card; public class GameEventCardDamaged extends GameEvent { - + public enum DamageType { Normal, M1M1Counters, diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardDestroyed.java b/forge-game/src/main/java/forge/game/event/GameEventCardDestroyed.java index c990b0df78a..bfb0d0590cf 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardDestroyed.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardDestroyed.java @@ -1,7 +1,7 @@ package forge.game.event; public class GameEventCardDestroyed extends GameEvent { - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardModeChosen.java b/forge-game/src/main/java/forge/game/event/GameEventCardModeChosen.java index 634b78a0cdb..24ce0c5f1bb 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardModeChosen.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardModeChosen.java @@ -3,12 +3,12 @@ package forge.game.event; import forge.game.player.Player; public class GameEventCardModeChosen extends GameEvent { - + public final Player player; public final String cardName; public final String mode; public final boolean log; - + public GameEventCardModeChosen(Player player, String cardName, String mode, boolean log) { this.player = player; this.cardName = cardName; @@ -21,5 +21,3 @@ public class GameEventCardModeChosen extends GameEvent { return visitor.visit(this); } } - - diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardPhased.java b/forge-game/src/main/java/forge/game/event/GameEventCardPhased.java index f637301e1a4..132aae4bce7 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardPhased.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardPhased.java @@ -10,7 +10,7 @@ public class GameEventCardPhased extends GameEvent { public final Card card; public final boolean phaseState; - + public GameEventCardPhased(Card card, boolean state) { this.card = card; phaseState = state; @@ -20,7 +20,7 @@ public class GameEventCardPhased extends GameEvent { public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardRegenerated.java b/forge-game/src/main/java/forge/game/event/GameEventCardRegenerated.java index 55fb988fe64..45a84360374 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardRegenerated.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardRegenerated.java @@ -1,7 +1,7 @@ package forge.game.event; public class GameEventCardRegenerated extends GameEvent { - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardSacrificed.java b/forge-game/src/main/java/forge/game/event/GameEventCardSacrificed.java index fdd36b17ff1..105d9d1724c 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardSacrificed.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardSacrificed.java @@ -1,7 +1,7 @@ package forge.game.event; public class GameEventCardSacrificed extends GameEvent { - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java b/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java index b2e16e6e347..140e3a2ef00 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java @@ -18,7 +18,7 @@ public class GameEventCardStatsChanged extends GameEvent { public GameEventCardStatsChanged(Card affected) { cards = Arrays.asList(affected); } - + public GameEventCardStatsChanged(Collection affected) { cards = affected; } @@ -31,13 +31,13 @@ public class GameEventCardStatsChanged extends GameEvent { // TODO Auto-generated method stub return visitor.visit(this); } - + @Override public String toString() { Card card = Iterables.getFirst(cards, null); - if ( null == card ) + if (null == card) return "Card state changes: (empty list)"; - if( cards.size() == 1) + if (cards.size() == 1) return "Card state changes: " + card.getName() + " (" + StringUtils.join(card.getType(), ' ') + ") " + card.getNetPower() + "/" + card.getNetToughness(); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardTapped.java b/forge-game/src/main/java/forge/game/event/GameEventCardTapped.java index 21e84f6ce2b..993e1cda1db 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardTapped.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardTapped.java @@ -10,8 +10,7 @@ public class GameEventCardTapped extends GameEvent { this.tapped = tapped; this.card = card; } - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventCombatEnded.java b/forge-game/src/main/java/forge/game/event/GameEventCombatEnded.java index b3f45a44280..db7b42e3de4 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCombatEnded.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCombatEnded.java @@ -8,7 +8,7 @@ public class GameEventCombatEnded extends GameEvent { public final List attackers; public final List blockers; - + public GameEventCombatEnded(List attackers, List blockers) { this.attackers = attackers; this.blockers = blockers; diff --git a/forge-game/src/main/java/forge/game/event/GameEventFlipCoin.java b/forge-game/src/main/java/forge/game/event/GameEventFlipCoin.java index 02d05b6cabb..a28dc4ed16e 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventFlipCoin.java +++ b/forge-game/src/main/java/forge/game/event/GameEventFlipCoin.java @@ -1,8 +1,7 @@ package forge.game.event; public class GameEventFlipCoin extends GameEvent { - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventGameOutcome.java b/forge-game/src/main/java/forge/game/event/GameEventGameOutcome.java index 3d9210555fa..4a675c05881 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventGameOutcome.java +++ b/forge-game/src/main/java/forge/game/event/GameEventGameOutcome.java @@ -12,8 +12,7 @@ public class GameEventGameOutcome extends GameEvent { this.result = lastOne; this.history = history; } - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventGameRestarted.java b/forge-game/src/main/java/forge/game/event/GameEventGameRestarted.java index dacc7c0c539..e997831a714 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventGameRestarted.java +++ b/forge-game/src/main/java/forge/game/event/GameEventGameRestarted.java @@ -9,12 +9,11 @@ import forge.game.player.Player; public class GameEventGameRestarted extends GameEvent { public final Player whoRestarted; - + public GameEventGameRestarted(Player playerTurn) { whoRestarted = playerTurn; } - @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventGameStarted.java b/forge-game/src/main/java/forge/game/event/GameEventGameStarted.java index b3da3b48099..550a439d5e5 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventGameStarted.java +++ b/forge-game/src/main/java/forge/game/event/GameEventGameStarted.java @@ -22,12 +22,11 @@ public class GameEventGameStarted extends GameEvent { this.players = players; } - @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventLandPlayed.java b/forge-game/src/main/java/forge/game/event/GameEventLandPlayed.java index a1b00918cc3..595bf9783c9 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventLandPlayed.java +++ b/forge-game/src/main/java/forge/game/event/GameEventLandPlayed.java @@ -14,7 +14,6 @@ public class GameEventLandPlayed extends GameEvent { } - @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventManaBurn.java b/forge-game/src/main/java/forge/game/event/GameEventManaBurn.java index 30c5a9b5bbf..5b9a06367f1 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventManaBurn.java +++ b/forge-game/src/main/java/forge/game/event/GameEventManaBurn.java @@ -4,11 +4,11 @@ import forge.game.player.Player; // This special event denotes loss of mana due to phase end public class GameEventManaBurn extends GameEvent { - + public final Player player; public final boolean causedLifeLoss; public final int amount; - + /** * TODO: Write javadoc for Constructor. * @param dealDamage @@ -19,7 +19,7 @@ public class GameEventManaBurn extends GameEvent { amount = burn; causedLifeLoss = dealDamage; } - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventManaPool.java b/forge-game/src/main/java/forge/game/event/GameEventManaPool.java index 003006ad4c8..1d37a832e42 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventManaPool.java +++ b/forge-game/src/main/java/forge/game/event/GameEventManaPool.java @@ -24,7 +24,7 @@ public class GameEventManaPool extends GameEvent { public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventMulligan.java b/forge-game/src/main/java/forge/game/event/GameEventMulligan.java index 9260d09e022..30dcd25391b 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventMulligan.java +++ b/forge-game/src/main/java/forge/game/event/GameEventMulligan.java @@ -12,8 +12,7 @@ public class GameEventMulligan extends GameEvent { public GameEventMulligan(Player p) { player = p; } - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventPlayerLivesChanged.java b/forge-game/src/main/java/forge/game/event/GameEventPlayerLivesChanged.java index 7b303ead7ab..c84ab7edea5 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventPlayerLivesChanged.java +++ b/forge-game/src/main/java/forge/game/event/GameEventPlayerLivesChanged.java @@ -8,18 +8,18 @@ public class GameEventPlayerLivesChanged extends GameEvent { public final Player player; public final int oldLives; public final int newLives; - + public GameEventPlayerLivesChanged(Player who, int oldValue, int newValue) { player = who; oldLives = oldValue; newLives = newValue; } - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + @Override public String toString() { return TextUtil.concatWithSpace(Lang.getInstance().getPossesive(player.getName()),"lives changed:", String.valueOf(oldLives),"->", String.valueOf(newLives)); diff --git a/forge-game/src/main/java/forge/game/event/GameEventPlayerPoisoned.java b/forge-game/src/main/java/forge/game/event/GameEventPlayerPoisoned.java index aa79ef66aa9..6adcebeb9e2 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventPlayerPoisoned.java +++ b/forge-game/src/main/java/forge/game/event/GameEventPlayerPoisoned.java @@ -19,8 +19,7 @@ public class GameEventPlayerPoisoned extends GameEvent { oldValue = old; amount = num; } - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventPlayerPriority.java b/forge-game/src/main/java/forge/game/event/GameEventPlayerPriority.java index 8ea6d8a3fbb..0a748996269 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventPlayerPriority.java +++ b/forge-game/src/main/java/forge/game/event/GameEventPlayerPriority.java @@ -13,7 +13,7 @@ public class GameEventPlayerPriority extends GameEvent { public final Player turn; public final PhaseType phase; public final Player priority; - + public GameEventPlayerPriority(Player playerTurn, PhaseType phase, Player priorityPlayer) { turn = playerTurn; this.phase = phase; @@ -25,7 +25,6 @@ public class GameEventPlayerPriority extends GameEvent { return visitor.visit(this); } - /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventScry.java b/forge-game/src/main/java/forge/game/event/GameEventScry.java index 18ec8b70dba..624de741bf2 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventScry.java +++ b/forge-game/src/main/java/forge/game/event/GameEventScry.java @@ -3,10 +3,10 @@ package forge.game.event; import forge.game.player.Player; public class GameEventScry extends GameEvent { - + public final Player player; public final int toTop, toBottom; - + public GameEventScry(Player player, int toTop, int toBottom) { this.player = player; this.toTop = toTop; @@ -18,4 +18,3 @@ public class GameEventScry extends GameEvent { return visitor.visit(this); } } - diff --git a/forge-game/src/main/java/forge/game/event/GameEventShuffle.java b/forge-game/src/main/java/forge/game/event/GameEventShuffle.java index fbc8d923757..893d617fe16 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventShuffle.java +++ b/forge-game/src/main/java/forge/game/event/GameEventShuffle.java @@ -5,9 +5,9 @@ import forge.util.Lang; import forge.util.TextUtil; public class GameEventShuffle extends GameEvent { - + public final Player player; - + public GameEventShuffle(Player player) { this.player = player; } @@ -16,7 +16,7 @@ public class GameEventShuffle extends GameEvent { public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java b/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java index c65b6823a78..54e075c63c7 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java +++ b/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java @@ -13,7 +13,7 @@ public class GameEventSpellAbilityCast extends GameEvent { public final SpellAbilityStackInstance si; public final boolean replicate; public final int stackIndex; - + public GameEventSpellAbilityCast(SpellAbility sp, SpellAbilityStackInstance si, int stackIndex, boolean replicate) { sa = sp; this.si = si; diff --git a/forge-game/src/main/java/forge/game/event/GameEventSpellResolved.java b/forge-game/src/main/java/forge/game/event/GameEventSpellResolved.java index f4c5e0fb592..af97226fcfb 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventSpellResolved.java +++ b/forge-game/src/main/java/forge/game/event/GameEventSpellResolved.java @@ -23,8 +23,6 @@ public class GameEventSpellResolved extends GameEvent { this.hasFizzled = hasFizzled; } - - @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventSurveil.java b/forge-game/src/main/java/forge/game/event/GameEventSurveil.java index db003097bb1..8ef9e8710f9 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventSurveil.java +++ b/forge-game/src/main/java/forge/game/event/GameEventSurveil.java @@ -3,10 +3,10 @@ package forge.game.event; import forge.game.player.Player; public class GameEventSurveil extends GameEvent { - + public final Player player; public final int toLibrary, toGraveyard; - + public GameEventSurveil(Player player, int toLibrary, int toGraveyard) { this.player = player; this.toLibrary = toLibrary; @@ -18,4 +18,3 @@ public class GameEventSurveil extends GameEvent { return visitor.visit(this); } } - diff --git a/forge-game/src/main/java/forge/game/event/GameEventTokenCreated.java b/forge-game/src/main/java/forge/game/event/GameEventTokenCreated.java index aa1e651bbc0..9cae6830b1f 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventTokenCreated.java +++ b/forge-game/src/main/java/forge/game/event/GameEventTokenCreated.java @@ -1,8 +1,7 @@ package forge.game.event; public class GameEventTokenCreated extends GameEvent { - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/GameEventTurnBegan.java b/forge-game/src/main/java/forge/game/event/GameEventTurnBegan.java index 8247f100712..198e4c86614 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventTurnBegan.java +++ b/forge-game/src/main/java/forge/game/event/GameEventTurnBegan.java @@ -4,10 +4,10 @@ import forge.game.player.Player; import forge.util.TextUtil; public class GameEventTurnBegan extends GameEvent { - + public final Player turnOwner; public final int turnNumber; - + public GameEventTurnBegan(Player turnOwner, int turnNumber) { super(); this.turnOwner = turnOwner; @@ -18,7 +18,7 @@ public class GameEventTurnBegan extends GameEvent { public T visit(IGameEventVisitor visitor) { return visitor.visit(this); } - + /* (non-Javadoc) * @see java.lang.Object#toString() */ diff --git a/forge-game/src/main/java/forge/game/event/GameEventTurnEnded.java b/forge-game/src/main/java/forge/game/event/GameEventTurnEnded.java index d3f7c7eadb9..04e3fc22c30 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventTurnEnded.java +++ b/forge-game/src/main/java/forge/game/event/GameEventTurnEnded.java @@ -1,8 +1,7 @@ package forge.game.event; public class GameEventTurnEnded extends GameEvent { - - + @Override public T visit(IGameEventVisitor visitor) { return visitor.visit(this); diff --git a/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java b/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java index 0041e7545fc..c0aba8f84ad 100644 --- a/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java +++ b/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java @@ -105,4 +105,3 @@ public interface IGameEventVisitor { public T visit(GameEventZone event) { return null; } } } - diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java b/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java index 6c03e890194..a7c6edf2e7b 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java @@ -52,7 +52,6 @@ public class TriggerAbandoned extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Scheme))) { return false; } @@ -60,7 +59,6 @@ public class TriggerAbandoned extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { @@ -72,4 +70,3 @@ public class TriggerAbandoned extends Trigger { return ""; } } - diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java index 568913463c4..0fbf5446dcf 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java @@ -63,7 +63,6 @@ public class TriggerAttached extends Trigger { return true; } - /** {@inheritDoc} */ @Override diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java index 0e468764b8f..1ea62c1d70f 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java @@ -54,7 +54,6 @@ public class TriggerAttackerUnblocked extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Attacker))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java index a5f47ed9b62..061a23fab37 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java @@ -57,7 +57,6 @@ public class TriggerAttacks extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Attacker))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java b/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java index 1715c54f476..2c6e438af3e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java @@ -55,7 +55,6 @@ public class TriggerChampioned extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Championed))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageAll.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageAll.java index 12c64f89130..cbdb908480a 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageAll.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageAll.java @@ -16,7 +16,6 @@ public class TriggerDamageAll extends Trigger { @Override public boolean performTest(Map runParams) { - if (hasParam("CombatDamage")) { if (getParam("CombatDamage").equals("True")) { if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java index a82453ec549..bab0dc829bf 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java @@ -59,7 +59,6 @@ public class TriggerDamageDealtOnce extends Trigger { @SuppressWarnings("unchecked") @Override public final boolean performTest(final Map runParams) { - if (hasParam("CombatDamage")) { if (getParam("CombatDamage").equals("True")) { if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java index 9e07ed4790d..dca1a23fbd2 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java @@ -21,7 +21,6 @@ public class TriggerDamageDoneOnce extends Trigger { @SuppressWarnings("unchecked") @Override public boolean performTest(Map runParams) { - if (hasParam("CombatDamage")) { if (getParam("CombatDamage").equals("True")) { if (!((Boolean) runParams.get(AbilityKey.IsCombatDamage))) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamagePrevented.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamagePrevented.java index f6efcb04573..3686a45805e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamagePrevented.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamagePrevented.java @@ -56,7 +56,6 @@ public class TriggerDamagePrevented extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidSource", runParams.get(AbilityKey.DamageSource))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamagePreventedOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamagePreventedOnce.java index 561da606f08..d64c2ca41f6 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamagePreventedOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamagePreventedOnce.java @@ -55,7 +55,6 @@ public class TriggerDamagePreventedOnce extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidTarget", runParams.get(AbilityKey.DamageTarget))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerExcessDamage.java b/forge-game/src/main/java/forge/game/trigger/TriggerExcessDamage.java index 51e19158d22..51df52b3dc9 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerExcessDamage.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerExcessDamage.java @@ -82,4 +82,3 @@ public class TriggerExcessDamage extends Trigger { return sb.toString(); } } - diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java b/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java index 5a351753a90..4568e59ecd1 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java @@ -55,7 +55,6 @@ public class TriggerExploited extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Exploited))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerExplores.java b/forge-game/src/main/java/forge/game/trigger/TriggerExplores.java index bc4b3c2a2e8..191c3c2cdee 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerExplores.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerExplores.java @@ -73,4 +73,3 @@ public class TriggerExplores extends Trigger { return sb.toString(); } } - diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerFightOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerFightOnce.java index 255a1f5127a..8bf5bb440df 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerFightOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerFightOnce.java @@ -70,4 +70,3 @@ public class TriggerFightOnce extends Trigger { return sb.toString(); } } - diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java b/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java index 29f168f8559..f155e5019ea 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java @@ -67,7 +67,6 @@ public class TriggerPayCumulativeUpkeep extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java b/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java index 96c49439e9d..e32e91f840d 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java @@ -66,7 +66,6 @@ public class TriggerPayEcho extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java b/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java index dbe7c1714ea..cc4474c049f 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java @@ -17,7 +17,6 @@ public class TriggerPhaseOut extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java b/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java index 9ad3b9d8a61..45ef6af9d44 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java @@ -116,7 +116,6 @@ public class TriggerSacrificed extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerScry.java b/forge-game/src/main/java/forge/game/trigger/TriggerScry.java index d1da154b9f6..4cba3657554 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerScry.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerScry.java @@ -61,7 +61,6 @@ public class TriggerScry extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java b/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java index 4c371fe28dd..026aa9bce8e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java @@ -70,7 +70,6 @@ public class TriggerSearchedLibrary extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java b/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java index c83f4d7535c..aeb8bc58cd6 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java @@ -73,7 +73,6 @@ public class TriggerSetInMotion extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java b/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java index 793e79a9fb3..d68aced30c6 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java @@ -72,7 +72,6 @@ public class TriggerShuffled extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java index ca3b10d4a12..5ab0e6a2cd5 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java @@ -279,7 +279,6 @@ public class TriggerSpellAbilityCastOrCopy extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java b/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java index 6351abfab30..816d8ea51d4 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java @@ -53,7 +53,6 @@ public class TriggerTaps extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) { return false; } @@ -73,7 +72,6 @@ public class TriggerTaps extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java b/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java index e786c869b37..94f3165ad72 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java @@ -56,8 +56,7 @@ public class TriggerTapsForMana extends Trigger { /** {@inheritDoc} * @param runParams*/ @Override - public final boolean performTest(final Map runParams) { - + public final boolean performTest(final Map runParams) { //Check for tapping if (!hasParam("NoTapCheck")) { final SpellAbility manaAbility = (SpellAbility) runParams.get(AbilityKey.AbilityMana); @@ -94,7 +93,6 @@ public class TriggerTapsForMana extends Trigger { return true; } - /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerTransformed.java b/forge-game/src/main/java/forge/game/trigger/TriggerTransformed.java index 0c6cd7309a6..f2fcb6084ab 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerTransformed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerTransformed.java @@ -65,5 +65,4 @@ public class TriggerTransformed extends Trigger { return sb.toString(); } - } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index f97a099e0a2..9329d34d685 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -137,7 +137,6 @@ public enum TriggerType { * @return */ public static TriggerType smartValueOf(String value) { - final String valToCompate = value.trim(); for (final TriggerType v : TriggerType.values()) { if (v.name().compareToIgnoreCase(valToCompate) == 0) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java b/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java index 332309d01a8..fd9bd6dd875 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java @@ -53,7 +53,6 @@ public class TriggerUnattach extends Trigger { * @param runParams*/ @Override public final boolean performTest(final Map runParams) { - if (!matchesValidParam("ValidObject", runParams.get(AbilityKey.Object))) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerVote.java b/forge-game/src/main/java/forge/game/trigger/TriggerVote.java index c97bd048b26..1e81a355ec6 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerVote.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerVote.java @@ -82,7 +82,6 @@ public class TriggerVote extends Trigger { return sb.toString(); } - private static FCollection getVoters(final Player player, final ListMultimap votes, final boolean isOpponent, final boolean votedOtherchoice) { diff --git a/forge-gui/res/cardsfolder/a/abyssal_nightstalker.txt b/forge-gui/res/cardsfolder/a/abyssal_nightstalker.txt index 11dee7ae759..a2c0b57f404 100644 --- a/forge-gui/res/cardsfolder/a/abyssal_nightstalker.txt +++ b/forge-gui/res/cardsfolder/a/abyssal_nightstalker.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Creature Nightstalker 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. -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 Oracle:Whenever Abyssal Nightstalker attacks and isn't blocked, defending player discards a card. diff --git a/forge-gui/res/cardsfolder/a/aetherstorm_roc.txt b/forge-gui/res/cardsfolder/a/aetherstorm_roc.txt index 09153fd7ac2..4bfbe71de88 100644 --- a/forge-gui/res/cardsfolder/a/aetherstorm_roc.txt +++ b/forge-gui/res/cardsfolder/a/aetherstorm_roc.txt @@ -8,6 +8,6 @@ T:Mode$ ChangesZone | ValidCard$ Creature.Other+YouCtrl | Origin$ Any | Destinat SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it and tap up to one target creature defending player controls. SVar:TrigPutCounter:AB$ PutCounter | Cost$ PayEnergy<2> | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBTap -SVar:DBTap:DB$Tap | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredDefendingPlayer | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature defending player controls +SVar:DBTap:DB$ Tap | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredDefendingPlayer | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature defending player controls SVar:Picture:http://www.wizards.com/global/images/magic/general/aetherstorm_roc.jpg Oracle:Flying\nWhenever Aetherstorm Roc or another creature enters the battlefield under your control, you get {E} (an energy counter).\nWhenever Aetherstorm Roc attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it and tap up to one target creature defending player controls. diff --git a/forge-gui/res/cardsfolder/a/alley_grifters.txt b/forge-gui/res/cardsfolder/a/alley_grifters.txt index 9c983aa034a..a6c1d4e8947 100644 --- a/forge-gui/res/cardsfolder/a/alley_grifters.txt +++ b/forge-gui/res/cardsfolder/a/alley_grifters.txt @@ -3,7 +3,7 @@ ManaCost:1 B B Types:Creature Human Mercenary PT:2/2 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:Picture:http://www.wizards.com/global/images/magic/general/alley_grifters.jpg Oracle:Whenever Alley Grifters becomes blocked, defending player discards a card. diff --git a/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt b/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt index eb12d9da248..4338eb4e460 100644 --- a/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt +++ b/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt @@ -3,7 +3,7 @@ ManaCost:2 B B Types:Legendary Creature Elemental Shaman 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. -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: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. diff --git a/forge-gui/res/cardsfolder/b/balefire_dragon.txt b/forge-gui/res/cardsfolder/b/balefire_dragon.txt index cbf83007cb0..bef43c2af05 100644 --- a/forge-gui/res/cardsfolder/b/balefire_dragon.txt +++ b/forge-gui/res/cardsfolder/b/balefire_dragon.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:6/6 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. -SVar:TrigDamage:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.DefenderCtrl +SVar:TrigDamage:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer SVar:X:TriggerCount$DamageAmount SVar:MustBeBlocked:True SVar:Picture:http://www.wizards.com/global/images/magic/general/balefire_dragon.jpg diff --git a/forge-gui/res/cardsfolder/b/bane_of_bala_ged.txt b/forge-gui/res/cardsfolder/b/bane_of_bala_ged.txt index 6e409ea672a..093bf8ce71d 100644 --- a/forge-gui/res/cardsfolder/b/bane_of_bala_ged.txt +++ b/forge-gui/res/cardsfolder/b/bane_of_bala_ged.txt @@ -3,7 +3,7 @@ ManaCost:7 Types:Creature Eldrazi PT:7/5 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: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. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/blind_zealot.txt b/forge-gui/res/cardsfolder/b/blind_zealot.txt index 2903abe0dc1..53cb9863f43 100644 --- a/forge-gui/res/cardsfolder/b/blind_zealot.txt +++ b/forge-gui/res/cardsfolder/b/blind_zealot.txt @@ -4,6 +4,6 @@ Types:Creature Phyrexian Human Cleric PT:2/2 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. -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 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. diff --git a/forge-gui/res/cardsfolder/c/caustic_wasps.txt b/forge-gui/res/cardsfolder/c/caustic_wasps.txt index 7ed8815a0f1..fa8d467de24 100644 --- a/forge-gui/res/cardsfolder/c/caustic_wasps.txt +++ b/forge-gui/res/cardsfolder/c/caustic_wasps.txt @@ -4,6 +4,6 @@ Types:Creature Insect PT:1/1 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. -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 Oracle:Flying\nWhenever Caustic Wasps deals combat damage to a player, you may destroy target artifact that player controls. diff --git a/forge-gui/res/cardsfolder/c/celestine_cave_witch.txt b/forge-gui/res/cardsfolder/c/celestine_cave_witch.txt index 6c41e91645a..b21a05fdd9c 100644 --- a/forge-gui/res/cardsfolder/c/celestine_cave_witch.txt +++ b/forge-gui/res/cardsfolder/c/celestine_cave_witch.txt @@ -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. 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.") -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 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.") diff --git a/forge-gui/res/cardsfolder/c/cephalid_constable.txt b/forge-gui/res/cardsfolder/c/cephalid_constable.txt index 5ea8e2cc28b..6eea7573df9 100644 --- a/forge-gui/res/cardsfolder/c/cephalid_constable.txt +++ b/forge-gui/res/cardsfolder/c/cephalid_constable.txt @@ -3,7 +3,7 @@ ManaCost:1 U U Types:Creature Cephalid Wizard 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. -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: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. diff --git a/forge-gui/res/cardsfolder/c/commando_raid.txt b/forge-gui/res/cardsfolder/c/commando_raid.txt index 1f4ad9c32cc..e9ffc5aa963 100644 --- a/forge-gui/res/cardsfolder/c/commando_raid.txt +++ b/forge-gui/res/cardsfolder/c/commando_raid.txt @@ -3,7 +3,7 @@ ManaCost:2 R 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." 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: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." diff --git a/forge-gui/res/cardsfolder/c/coral_fighters.txt b/forge-gui/res/cardsfolder/c/coral_fighters.txt index ed5bda97282..ee7f2aeae7d 100644 --- a/forge-gui/res/cardsfolder/c/coral_fighters.txt +++ b/forge-gui/res/cardsfolder/c/coral_fighters.txt @@ -3,7 +3,7 @@ ManaCost:1 U Types:Creature Merfolk Soldier 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. -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 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. diff --git a/forge-gui/res/cardsfolder/c/corrupt_official.txt b/forge-gui/res/cardsfolder/c/corrupt_official.txt index 13322567abc..1e0e034bc00 100644 --- a/forge-gui/res/cardsfolder/c/corrupt_official.txt +++ b/forge-gui/res/cardsfolder/c/corrupt_official.txt @@ -4,6 +4,6 @@ Types:Creature Human Minion PT:3/1 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. -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 Oracle:{2}{B}: Regenerate Corrupt Official.\nWhenever Corrupt Official becomes blocked, defending player discards a card at random. diff --git a/forge-gui/res/cardsfolder/c/coveted_peacock.txt b/forge-gui/res/cardsfolder/c/coveted_peacock.txt index 0cb3ff999b5..ea5f9de51c0 100644 --- a/forge-gui/res/cardsfolder/c/coveted_peacock.txt +++ b/forge-gui/res/cardsfolder/c/coveted_peacock.txt @@ -4,6 +4,6 @@ Types:Creature Bird PT:3/4 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.) -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 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.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/crashing_boars.txt b/forge-gui/res/cardsfolder/c/crashing_boars.txt index 11e5e01f776..4c33f9202dc 100644 --- a/forge-gui/res/cardsfolder/c/crashing_boars.txt +++ b/forge-gui/res/cardsfolder/c/crashing_boars.txt @@ -3,5 +3,5 @@ ManaCost:3 G G Types:Creature Boar 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. -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. diff --git a/forge-gui/res/cardsfolder/c/crypt_cobra.txt b/forge-gui/res/cardsfolder/c/crypt_cobra.txt index ea71f5917bc..e198fce1335 100644 --- a/forge-gui/res/cardsfolder/c/crypt_cobra.txt +++ b/forge-gui/res/cardsfolder/c/crypt_cobra.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Creature Snake 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.) -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 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.) diff --git a/forge-gui/res/cardsfolder/c/cyclops_gladiator.txt b/forge-gui/res/cardsfolder/c/cyclops_gladiator.txt index 755e73d41df..575e82ceea1 100644 --- a/forge-gui/res/cardsfolder/c/cyclops_gladiator.txt +++ b/forge-gui/res/cardsfolder/c/cyclops_gladiator.txt @@ -3,8 +3,8 @@ ManaCost:1 R R R Types:Creature Cyclops Warrior 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. -SVar:TrigExchangeDamage:DB$DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls. | NumDmg$ MyX | SubAbility$ ReturnDmg -SVar:ReturnDmg:DB$DealDamage | DamageSource$ Targeted | NumDmg$ TheirX +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:MyX:Count$CardPower SVar:TheirX:Targeted$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/cyclops_gladiator.jpg diff --git a/forge-gui/res/cardsfolder/d/dauthi_mindripper.txt b/forge-gui/res/cardsfolder/d/dauthi_mindripper.txt index 5c7e2a02080..eea01cc7f14 100644 --- a/forge-gui/res/cardsfolder/d/dauthi_mindripper.txt +++ b/forge-gui/res/cardsfolder/d/dauthi_mindripper.txt @@ -4,6 +4,6 @@ Types:Creature Dauthi Minion PT:2/1 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. -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 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. diff --git a/forge-gui/res/cardsfolder/d/dawning_purist.txt b/forge-gui/res/cardsfolder/d/dawning_purist.txt index 5cd0b5d8ca2..18b4a228b63 100644 --- a/forge-gui/res/cardsfolder/d/dawning_purist.txt +++ b/forge-gui/res/cardsfolder/d/dawning_purist.txt @@ -4,6 +4,6 @@ Types:Creature Human Cleric PT:2/2 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. -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 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.) diff --git a/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt b/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt index c51e75fec6a..e7f7cd18dd1 100755 --- a/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt +++ b/forge-gui/res/cardsfolder/d/drana_the_last_bloodchief.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Vampire Cleric PT:4/4 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. -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:DBAnimate:DB$ Animate | Defined$ ChosenCard | Types$ Vampire | Duration$ Permanent DeckHas:Ability$Graveyard & Ability$Counters diff --git a/forge-gui/res/cardsfolder/e/emissary_of_despair.txt b/forge-gui/res/cardsfolder/e/emissary_of_despair.txt index e59a53a3f57..3476544e68f 100644 --- a/forge-gui/res/cardsfolder/e/emissary_of_despair.txt +++ b/forge-gui/res/cardsfolder/e/emissary_of_despair.txt @@ -4,7 +4,7 @@ Types:Creature Spirit PT:2/1 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. -SVar:TrigLoseLife:DB$LoseLife | Defined$ TriggeredTarget | LifeAmount$ X -SVar:X:Count$Valid Artifact.DefenderCtrl +SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredTarget | LifeAmount$ X +SVar:X:Count$Valid Artifact.ControlledBy TriggeredDefendingPlayer 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. diff --git a/forge-gui/res/cardsfolder/e/emissary_of_hope.txt b/forge-gui/res/cardsfolder/e/emissary_of_hope.txt index f04ffaa5ab3..3893077fbb7 100644 --- a/forge-gui/res/cardsfolder/e/emissary_of_hope.txt +++ b/forge-gui/res/cardsfolder/e/emissary_of_hope.txt @@ -5,6 +5,6 @@ PT:2/1 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. 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 Oracle:Flying\nWhenever Emissary of Hope deals combat damage to a player, you gain 1 life for each artifact that player controls. diff --git a/forge-gui/res/cardsfolder/e/erithizon.txt b/forge-gui/res/cardsfolder/e/erithizon.txt index fcc8e558a20..2c677ccabe2 100644 --- a/forge-gui/res/cardsfolder/e/erithizon.txt +++ b/forge-gui/res/cardsfolder/e/erithizon.txt @@ -3,7 +3,7 @@ ManaCost:2 G G Types:Creature Beast 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. -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 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. diff --git a/forge-gui/res/cardsfolder/e/etrata_the_silencer.txt b/forge-gui/res/cardsfolder/e/etrata_the_silencer.txt index c4c14654ca4..6d539647fb4 100644 --- a/forge-gui/res/cardsfolder/e/etrata_the_silencer.txt +++ b/forge-gui/res/cardsfolder/e/etrata_the_silencer.txt @@ -4,10 +4,10 @@ Types:Legendary Creature Vampire Assassin PT:3/5 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. -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:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBLose 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 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. diff --git a/forge-gui/res/cardsfolder/f/fiend_binder.txt b/forge-gui/res/cardsfolder/f/fiend_binder.txt index a148854d1a3..b10c22a739a 100644 --- a/forge-gui/res/cardsfolder/f/fiend_binder.txt +++ b/forge-gui/res/cardsfolder/f/fiend_binder.txt @@ -3,7 +3,7 @@ ManaCost:3 W Types:Creature Human Soldier PT:3/2 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:Picture:http://www.wizards.com/global/images/magic/general/fiend_binder.jpg Oracle:Whenever Fiend Binder attacks, tap target creature defending player controls. diff --git a/forge-gui/res/cardsfolder/f/flint_golem.txt b/forge-gui/res/cardsfolder/f/flint_golem.txt index a9f27848f25..25d21bb9ddd 100644 --- a/forge-gui/res/cardsfolder/f/flint_golem.txt +++ b/forge-gui/res/cardsfolder/f/flint_golem.txt @@ -3,5 +3,5 @@ ManaCost:4 Types:Artifact Creature Golem PT:2/3 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. diff --git a/forge-gui/res/cardsfolder/f/floral_spuzzem.txt b/forge-gui/res/cardsfolder/f/floral_spuzzem.txt index f0b7466813f..752bb98e35e 100644 --- a/forge-gui/res/cardsfolder/f/floral_spuzzem.txt +++ b/forge-gui/res/cardsfolder/f/floral_spuzzem.txt @@ -3,6 +3,6 @@ ManaCost:3 G Types:Creature Elemental 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. -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 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. diff --git a/forge-gui/res/cardsfolder/g/goblin_guide.txt b/forge-gui/res/cardsfolder/g/goblin_guide.txt index 3b7f250d6c7..65e261ccd78 100644 --- a/forge-gui/res/cardsfolder/g/goblin_guide.txt +++ b/forge-gui/res/cardsfolder/g/goblin_guide.txt @@ -4,6 +4,6 @@ Types:Creature Goblin Scout PT:2/2 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. -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 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. diff --git a/forge-gui/res/cardsfolder/g/goblin_racketeer.txt b/forge-gui/res/cardsfolder/g/goblin_racketeer.txt index 07095f2fb97..a9792f1a006 100644 --- a/forge-gui/res/cardsfolder/g/goblin_racketeer.txt +++ b/forge-gui/res/cardsfolder/g/goblin_racketeer.txt @@ -3,6 +3,6 @@ ManaCost:3 R Types:Creature Goblin Rogue 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.) -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 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.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/goblin_vandal.txt b/forge-gui/res/cardsfolder/g/goblin_vandal.txt index f0aec5ccb84..bdbd8674ba3 100644 --- a/forge-gui/res/cardsfolder/g/goblin_vandal.txt +++ b/forge-gui/res/cardsfolder/g/goblin_vandal.txt @@ -3,6 +3,6 @@ ManaCost:R Types:Creature Goblin Rogue 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. -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 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. diff --git a/forge-gui/res/cardsfolder/g/graven_abomination.txt b/forge-gui/res/cardsfolder/g/graven_abomination.txt index 8d928443977..d9d4e43839e 100644 --- a/forge-gui/res/cardsfolder/g/graven_abomination.txt +++ b/forge-gui/res/cardsfolder/g/graven_abomination.txt @@ -3,6 +3,6 @@ ManaCost:3 Types:Artifact Creature Horror PT:3/1 T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME attacks, exile target card from defending player's graveyard. -SVar:TrigExile:DB$ChangeZone | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in defending player's graveyard | ValidTgts$ Card | TargetsWithDefinedController$ TriggeredDefendingPlayer +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in defending player's graveyard | ValidTgts$ Card | TargetsWithDefinedController$ TriggeredDefendingPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/graven_abomination.jpg Oracle:Whenever Graven Abomination attacks, exile target card from defending player's graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/grimgrin_corpse_born.txt b/forge-gui/res/cardsfolder/g/grimgrin_corpse_born.txt index e4fe5ff7979..919c1f9a306 100644 --- a/forge-gui/res/cardsfolder/g/grimgrin_corpse_born.txt +++ b/forge-gui/res/cardsfolder/g/grimgrin_corpse_born.txt @@ -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. 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. -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 AI:RemoveDeck:Random SVar:HasAttackEffect:TRUE diff --git a/forge-gui/res/cardsfolder/g/guiltfeeder.txt b/forge-gui/res/cardsfolder/g/guiltfeeder.txt index d2812b1a309..68d16f39ab5 100644 --- a/forge-gui/res/cardsfolder/g/guiltfeeder.txt +++ b/forge-gui/res/cardsfolder/g/guiltfeeder.txt @@ -4,7 +4,7 @@ Types:Creature Horror PT:0/4 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. -SVar:TrigLoseLife:DB$ LoseLife | Defined$ DefendingPlayer | LifeAmount$ X +SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ X SVar:X:Count$ValidGraveyard Card.DefenderCtrl 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. diff --git a/forge-gui/res/cardsfolder/h/hammer_of_ruin.txt b/forge-gui/res/cardsfolder/h/hammer_of_ruin.txt index d3619e7fa36..313cffd2407 100644 --- a/forge-gui/res/cardsfolder/h/hammer_of_ruin.txt +++ b/forge-gui/res/cardsfolder/h/hammer_of_ruin.txt @@ -4,6 +4,6 @@ Types:Artifact Equipment K:Equip:2 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. -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 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} diff --git a/forge-gui/res/cardsfolder/h/harbor_guardian.txt b/forge-gui/res/cardsfolder/h/harbor_guardian.txt index 1fad2d3112e..719eab92337 100644 --- a/forge-gui/res/cardsfolder/h/harbor_guardian.txt +++ b/forge-gui/res/cardsfolder/h/harbor_guardian.txt @@ -4,6 +4,6 @@ Types:Creature Gargoyle PT:3/4 K:Reach 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 Oracle:Reach (This creature can block creatures with flying.)\nWhenever Harbor Guardian attacks, defending player may draw a card. diff --git a/forge-gui/res/cardsfolder/h/heart_piercer_bow.txt b/forge-gui/res/cardsfolder/h/heart_piercer_bow.txt index 04125019c14..f1d77fd073d 100644 --- a/forge-gui/res/cardsfolder/h/heart_piercer_bow.txt +++ b/forge-gui/res/cardsfolder/h/heart_piercer_bow.txt @@ -3,7 +3,7 @@ ManaCost:2 Types:Artifact Equipment 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. -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 SVar:AE:SVar:HasAttackEffect:TRUE DeckHints:Name$Renowned Weaponsmith diff --git a/forge-gui/res/cardsfolder/h/hellkite_tyrant.txt b/forge-gui/res/cardsfolder/h/hellkite_tyrant.txt index 192f200d2fa..da88c300f09 100644 --- a/forge-gui/res/cardsfolder/h/hellkite_tyrant.txt +++ b/forge-gui/res/cardsfolder/h/hellkite_tyrant.txt @@ -5,7 +5,7 @@ PT:6/5 K:Flying 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. -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. SVar:WinGame:DB$ WinsGame | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/hellkite_tyrant.jpg diff --git a/forge-gui/res/cardsfolder/h/hellkite_whelp.txt b/forge-gui/res/cardsfolder/h/hellkite_whelp.txt index 2b162c06070..d651d6f5735 100644 --- a/forge-gui/res/cardsfolder/h/hellkite_whelp.txt +++ b/forge-gui/res/cardsfolder/h/hellkite_whelp.txt @@ -4,5 +4,5 @@ Types:Creature Dragon PT:3/3 K:Flying 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. diff --git a/forge-gui/res/cardsfolder/h/hellrider.txt b/forge-gui/res/cardsfolder/h/hellrider.txt index c41f3fca069..06ce5e8e0bc 100644 --- a/forge-gui/res/cardsfolder/h/hellrider.txt +++ b/forge-gui/res/cardsfolder/h/hellrider.txt @@ -4,7 +4,7 @@ Types:Creature Devil PT:3/3 K:Haste T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Execute$ TrigDealDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature you control attacks, CARDNAME deals 1 damage to the player or planeswalker it's attacking. -SVar:TrigDealDamage:DB$DealDamage | Defined$ TriggeredDefendingPlayer| NumDmg$ 1 +SVar:TrigDealDamage:DB$DealDamage | Defined$ TriggeredDefendingPlayer | NumDmg$ 1 SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/hellrider.jpg Oracle:Haste\nWhenever a creature you control attacks, Hellrider deals 1 damage to the player or planeswalker it's attacking. diff --git a/forge-gui/res/cardsfolder/j/jangling_automaton.txt b/forge-gui/res/cardsfolder/j/jangling_automaton.txt index 1c87c49b082..da8cc3164af 100644 --- a/forge-gui/res/cardsfolder/j/jangling_automaton.txt +++ b/forge-gui/res/cardsfolder/j/jangling_automaton.txt @@ -3,7 +3,7 @@ ManaCost:3 Types:Artifact Creature Construct PT:3/2 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 SVar:Picture:http://www.wizards.com/global/images/magic/general/jangling_automaton.jpg Oracle:Whenever Jangling Automaton attacks, untap all creatures defending player controls. diff --git a/forge-gui/res/cardsfolder/k/kardur_doomscourge.txt b/forge-gui/res/cardsfolder/k/kardur_doomscourge.txt index c6335c453d3..75a79b37f2f 100644 --- a/forge-gui/res/cardsfolder/k/kardur_doomscourge.txt +++ b/forge-gui/res/cardsfolder/k/kardur_doomscourge.txt @@ -6,7 +6,7 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S 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: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:DBGainOneLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 DeckHas:Ability$LifeGain diff --git a/forge-gui/res/cardsfolder/k/keeper_of_tresserhorn.txt b/forge-gui/res/cardsfolder/k/keeper_of_tresserhorn.txt index 87b1770280c..952f234abdb 100644 --- a/forge-gui/res/cardsfolder/k/keeper_of_tresserhorn.txt +++ b/forge-gui/res/cardsfolder/k/keeper_of_tresserhorn.txt @@ -4,5 +4,5 @@ Types:Creature Avatar 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. 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. diff --git a/forge-gui/res/cardsfolder/k/kithkin_mourncaller.txt b/forge-gui/res/cardsfolder/k/kithkin_mourncaller.txt index 3106b291a04..206251bdd84 100644 --- a/forge-gui/res/cardsfolder/k/kithkin_mourncaller.txt +++ b/forge-gui/res/cardsfolder/k/kithkin_mourncaller.txt @@ -2,7 +2,7 @@ Name:Kithkin Mourncaller ManaCost:2 G Types:Creature Kithkin Scout 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 AI:RemoveDeck:Random SVar:Picture:http://www.wizards.com/global/images/magic/general/kithkin_mourncaller.jpg diff --git a/forge-gui/res/cardsfolder/k/kogla_the_titan_ape.txt b/forge-gui/res/cardsfolder/k/kogla_the_titan_ape.txt index 5f368e332b8..739ef9e656b 100644 --- a/forge-gui/res/cardsfolder/k/kogla_the_titan_ape.txt +++ b/forge-gui/res/cardsfolder/k/kogla_the_titan_ape.txt @@ -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. 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. -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. 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. diff --git a/forge-gui/res/cardsfolder/k/kukemssa_pirates.txt b/forge-gui/res/cardsfolder/k/kukemssa_pirates.txt index 83d76500e53..3a4e65519fb 100644 --- a/forge-gui/res/cardsfolder/k/kukemssa_pirates.txt +++ b/forge-gui/res/cardsfolder/k/kukemssa_pirates.txt @@ -3,7 +3,7 @@ ManaCost:3 U Types:Creature Human Pirate 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. -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: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. diff --git a/forge-gui/res/cardsfolder/l/latullas_orders.txt b/forge-gui/res/cardsfolder/l/latullas_orders.txt index 5ffcc17a9b4..9d96ea6a3b9 100644 --- a/forge-gui/res/cardsfolder/l/latullas_orders.txt +++ b/forge-gui/res/cardsfolder/l/latullas_orders.txt @@ -5,6 +5,6 @@ K:Flash K:Enchant creature A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AITgts$ Card.powerGE1 | AILogic$ Pump T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDestroy | OptionalDecider$ You | TriggerDescription$ Whenever enchanted creature deals combat damage to defending player, you may destroy target artifact that player controls. -SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.DefenderCtrl | TgtPrompt$ Select target artifact +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact SVar:Picture:http://www.wizards.com/global/images/magic/general/latullas_orders.jpg Oracle:Flash\nEnchant creature\nWhenever enchanted creature deals combat damage to defending player, you may destroy target artifact that player controls. diff --git a/forge-gui/res/cardsfolder/l/lightwielder_paladin.txt b/forge-gui/res/cardsfolder/l/lightwielder_paladin.txt index 3dc5e51258b..f0e12c4058a 100644 --- a/forge-gui/res/cardsfolder/l/lightwielder_paladin.txt +++ b/forge-gui/res/cardsfolder/l/lightwielder_paladin.txt @@ -4,6 +4,6 @@ Types:Creature Human Knight PT:4/4 K:First Strike T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigExile | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may exile target black or red permanent that player controls. -SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.Black+DefenderCtrl,Permanent.Red+DefenderCtrl | TgtPrompt$ Choose target black or red permanent. | Origin$ Battlefield | Destination$ Exile | IsCurse$ True +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.Black+ControlledBy TriggeredDefendingPlayer,Permanent.Red+ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Choose target black or red permanent. | Origin$ Battlefield | Destination$ Exile | IsCurse$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/lightwielder_paladin.jpg Oracle:First strike (This creature deals combat damage before creatures without first strike.)\nWhenever Lightwielder Paladin deals combat damage to a player, you may exile target black or red permanent that player controls. diff --git a/forge-gui/res/cardsfolder/l/lim_duls_paladin.txt b/forge-gui/res/cardsfolder/l/lim_duls_paladin.txt index b8039c412b3..6a7a844ae38 100644 --- a/forge-gui/res/cardsfolder/l/lim_duls_paladin.txt +++ b/forge-gui/res/cardsfolder/l/lim_duls_paladin.txt @@ -12,7 +12,7 @@ T:Mode$ AttackerBlocked | ValidCard$ Card.Self | ValidBlocker$ Creature | Trigge SVar:TrigBlockedPump:DB$ Pump | Defined$ Self | NumAtt$ 6 | NumDef$ 3 T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigUnBlockedPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever Lim-Dûl's Paladin attacks and isn't blocked, it assigns no combat damage this turn and defending player loses 4 life. SVar:TrigUnBlockedPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME assigns no combat damage | SubAbility$ DBLoseLife -SVar:DBLoseLife:DB$ LoseLife | Defined$ DefendingPlayer | LifeAmount$ 4 +SVar:DBLoseLife:DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ 4 SVar:X:Remembered$Amount AI:RemoveDeck:All Oracle:Trample\nAt the beginning of your upkeep, you may discard a card. If you don't, sacrifice Lim-Dûl's Paladin and draw a card.\nWhenever Lim-Dûl's Paladin becomes blocked, it gets +6/+3 until end of turn.\nWhenever Lim-Dûl's Paladin attacks and isn't blocked, it assigns no combat damage this turn and defending player loses 4 life. diff --git a/forge-gui/res/cardsfolder/m/mage_slayer.txt b/forge-gui/res/cardsfolder/m/mage_slayer.txt index 07aee4965c4..921c76737a4 100644 --- a/forge-gui/res/cardsfolder/m/mage_slayer.txt +++ b/forge-gui/res/cardsfolder/m/mage_slayer.txt @@ -3,7 +3,7 @@ ManaCost:1 R G Types:Artifact Equipment K:Equip:3 T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDamage | TriggerDescription$ Whenever equipped creature attacks, it deals damage equal to its power to defending player. -SVar:TrigDamage:DB$ DealDamage | Defined$ DefendingPlayer | DamageSource$ TriggeredAttackerLKICopy | NumDmg$ X +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredDefendingPlayer | DamageSource$ TriggeredAttackerLKICopy | NumDmg$ X SVar:X:TriggeredAttacker$CardPower S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ AE SVar:AE:SVar:HasAttackEffect:TRUE diff --git a/forge-gui/res/cardsfolder/m/master_of_diversion.txt b/forge-gui/res/cardsfolder/m/master_of_diversion.txt index f88e20399d6..c1ab3b662f4 100644 --- a/forge-gui/res/cardsfolder/m/master_of_diversion.txt +++ b/forge-gui/res/cardsfolder/m/master_of_diversion.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Human Scout PT:2/2 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:Picture:http://www.wizards.com/global/images/magic/general/master_of_diversion.jpg Oracle:Whenever Master of Diversion attacks, tap target creature defending player controls. diff --git a/forge-gui/res/cardsfolder/m/mindleech_mass.txt b/forge-gui/res/cardsfolder/m/mindleech_mass.txt index fb07890fbc1..e1788f5ecc3 100644 --- a/forge-gui/res/cardsfolder/m/mindleech_mass.txt +++ b/forge-gui/res/cardsfolder/m/mindleech_mass.txt @@ -5,6 +5,6 @@ PT:6/6 K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigReveal | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may look at that player's hand. If you do, you may cast a spell from among those cards without paying its mana cost. SVar:TrigReveal:DB$ RevealHand | Defined$ TriggeredTarget | SubAbility$ TrigPlay -SVar:TrigPlay:DB$ Play | Valid$ Card.DefenderCtrl | ValidZone$ Hand | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True +SVar:TrigPlay:DB$ Play | Valid$ Card.ControlledBy TriggeredDefendingPlayer | ValidZone$ Hand | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/mindleech_mass.jpg Oracle:Trample\nWhenever Mindleech Mass deals combat damage to a player, you may look at that player's hand. If you do, you may cast a spell from among those cards without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mistblade_shinobi.txt b/forge-gui/res/cardsfolder/m/mistblade_shinobi.txt index 4c0eafd9067..b5b70cdb414 100644 --- a/forge-gui/res/cardsfolder/m/mistblade_shinobi.txt +++ b/forge-gui/res/cardsfolder/m/mistblade_shinobi.txt @@ -4,6 +4,6 @@ Types:Creature Human Ninja PT:1/1 K:Ninjutsu:U T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigBounce | OptionalDecider$ You | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may return target creature that player controls to its owner's hand. -SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Choose target creature your opponent controls. | Origin$ Battlefield | Destination$ Hand +SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Choose target creature your opponent controls. | Origin$ Battlefield | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/mistblade_shinobi.jpg Oracle:Ninjutsu {U} ({U}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nWhenever Mistblade Shinobi deals combat damage to a player, you may return target creature that player controls to its owner's hand. diff --git a/forge-gui/res/cardsfolder/m/mordant_dragon.txt b/forge-gui/res/cardsfolder/m/mordant_dragon.txt index 81c837bbf0c..137c79683b9 100644 --- a/forge-gui/res/cardsfolder/m/mordant_dragon.txt +++ b/forge-gui/res/cardsfolder/m/mordant_dragon.txt @@ -5,7 +5,7 @@ PT:5/5 K:Flying A:AB$ Pump | Cost$ 1 R | Defined$ Self | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may have it deal that much damage to target creature that player controls. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | NumDmg$ X | TgtPrompt$ Select target creature. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | NumDmg$ X | TgtPrompt$ Select target creature. SVar:X:Count$CardPower SVar:MustBeBlocked:True Oracle:Flying\n{1}{R}: Mordant Dragon gets +1/+0 until end of turn.\nWhenever Mordant Dragon deals combat damage to a player, you may have it deal that much damage to target creature that player controls. diff --git a/forge-gui/res/cardsfolder/m/mtenda_lion.txt b/forge-gui/res/cardsfolder/m/mtenda_lion.txt index eb6ec899e03..ab693e6172e 100644 --- a/forge-gui/res/cardsfolder/m/mtenda_lion.txt +++ b/forge-gui/res/cardsfolder/m/mtenda_lion.txt @@ -3,5 +3,5 @@ ManaCost:G Types:Creature Cat PT:2/1 T:Mode$ Attacks | ValidCard$ Creature.Self | Execute$ MtendaLionPump | TriggerDescription$ Whenever CARDNAME attacks, defending player may pay {U}. If that player does, prevent all combat damage that would be dealt by CARDNAME this turn. -SVar:MtendaLionPump:DB$ Pump | Defined$ Self | KW$ Prevent all combat damage that would be dealt by CARDNAME. | UnlessCost$ U | UnlessPayer$ DefendingPlayer | UnlessSwitched$ True +SVar:MtendaLionPump:DB$ Pump | Defined$ Self | KW$ Prevent all combat damage that would be dealt by CARDNAME. | UnlessCost$ U | UnlessPayer$ TriggeredDefendingPlayer | UnlessSwitched$ True Oracle:Whenever Mtenda Lion attacks, defending player may pay {U}. If that player does, prevent all combat damage that would be dealt by Mtenda Lion this turn. diff --git a/forge-gui/res/cardsfolder/n/necrite.txt b/forge-gui/res/cardsfolder/n/necrite.txt index 864340ced86..e35d5005552 100644 --- a/forge-gui/res/cardsfolder/n/necrite.txt +++ b/forge-gui/res/cardsfolder/n/necrite.txt @@ -3,6 +3,6 @@ ManaCost:1 B B Types:Creature Thrull PT:2/2 T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may sacrifice it. If you do, destroy target creature defending player controls. It can't be regenerated. -SVar:TrigDestroy:AB$ Destroy | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.DefenderCtrl | NoRegen$ True | AITgts$ BetterThanSource | TgtPrompt$ Select target creature defending player controls +SVar:TrigDestroy:AB$ Destroy | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | NoRegen$ True | AITgts$ BetterThanSource | TgtPrompt$ Select target creature defending player controls SVar:Picture:http://www.wizards.com/global/images/magic/general/necrite.jpg Oracle:Whenever Necrite attacks and isn't blocked, you may sacrifice it. If you do, destroy target creature defending player controls. It can't be regenerated. diff --git a/forge-gui/res/cardsfolder/n/nefarox_overlord_of_grixis.txt b/forge-gui/res/cardsfolder/n/nefarox_overlord_of_grixis.txt index f788a16c628..bb0629e2a3c 100644 --- a/forge-gui/res/cardsfolder/n/nefarox_overlord_of_grixis.txt +++ b/forge-gui/res/cardsfolder/n/nefarox_overlord_of_grixis.txt @@ -5,7 +5,7 @@ PT:5/5 K:Flying K:Exalted T:Mode$ Attacks | ValidCard$ Card.Self | Alone$ True | Execute$ TrigSac | TriggerDescription$ Whenever CARDNAME attacks alone, defending player sacrifices a creature. -SVar:TrigSac:DB$ Sacrifice | Defined$ DefendingPlayer | SacValid$ Creature +SVar:TrigSac:DB$ Sacrifice | Defined$ TriggeredDefendingPlayer | SacValid$ Creature SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/nefarox_overlord_of_grixis.jpg Oracle:Flying\nExalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)\nWhenever Nefarox, Overlord of Grixis attacks alone, defending player sacrifices a creature. diff --git a/forge-gui/res/cardsfolder/n/nemesis_of_reason.txt b/forge-gui/res/cardsfolder/n/nemesis_of_reason.txt index 9cb17a904e2..57f00b6610a 100644 --- a/forge-gui/res/cardsfolder/n/nemesis_of_reason.txt +++ b/forge-gui/res/cardsfolder/n/nemesis_of_reason.txt @@ -3,6 +3,6 @@ ManaCost:3 U B Types:Creature Leviathan Horror PT:3/7 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ Whenever CARDNAME attacks, defending player mills ten cards. -SVar:TrigMill:DB$ Mill | Defined$ DefendingPlayer | NumCards$ 10 +SVar:TrigMill:DB$ Mill | Defined$ TriggeredDefendingPlayer | NumCards$ 10 SVar:HasAttackEffect:TRUE Oracle:Whenever Nemesis of Reason attacks, defending player mills ten cards. diff --git a/forge-gui/res/cardsfolder/o/o_kagachi_vengeful_kami.txt b/forge-gui/res/cardsfolder/o/o_kagachi_vengeful_kami.txt index b0d35e4a809..c5ed01bf033 100644 --- a/forge-gui/res/cardsfolder/o/o_kagachi_vengeful_kami.txt +++ b/forge-gui/res/cardsfolder/o/o_kagachi_vengeful_kami.txt @@ -5,6 +5,6 @@ PT:6/6 K:Flying K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigExile | CombatDamage$ True | Condition$ AttackedPlayerWhoAttackedYouLastTurn | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, if that player attacked you during their last turn, exile target nonland permanent that player controls. -SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.nonLand+DefenderCtrl | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Exile +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.nonLand+ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Exile SVar:Picture:http://www.wizards.com/global/images/magic/general/o-kagachi_vengeful_kami.jpg Oracle:Flying, trample\nWhenever O-Kagachi, Vengeful Kami deals combat damage to a player, if that player attacked you during their last turn, exile target nonland permanent that player controls. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/p/port_inspector.txt b/forge-gui/res/cardsfolder/p/port_inspector.txt index df4d2e1c236..f762a9a2be2 100644 --- a/forge-gui/res/cardsfolder/p/port_inspector.txt +++ b/forge-gui/res/cardsfolder/p/port_inspector.txt @@ -3,6 +3,6 @@ ManaCost:1 U Types:Creature Human PT:1/2 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigPeek | TriggerDescription$ Whenever CARDNAME becomes blocked, you may look at defending player's hand. -SVar:TrigPeek:DB$RevealHand | Defined$ DefendingPlayer +SVar:TrigPeek:DB$ RevealHand | Defined$ TriggeredDefendingPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/port_inspector.jpg Oracle:Whenever Port Inspector becomes blocked, you may look at defending player's hand. diff --git a/forge-gui/res/cardsfolder/p/pretenders_claim.txt b/forge-gui/res/cardsfolder/p/pretenders_claim.txt index 31fb5334874..8e838e417ef 100644 --- a/forge-gui/res/cardsfolder/p/pretenders_claim.txt +++ b/forge-gui/res/cardsfolder/p/pretenders_claim.txt @@ -4,6 +4,6 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 B | ValidTgts$ Creature | AILogic$ Pump T:Mode$ AttackerBlocked | ValidCard$ Card.AttachedBy | Execute$ TrigTapAll | TriggerDescription$ Whenever enchanted creature becomes blocked, tap all lands defending player controls. -SVar:TrigTapAll:DB$TapAll | ValidCards$ Land.DefenderCtrl +SVar:TrigTapAll:DB$ TapAll | ValidCards$ Land.ControlledBy TriggeredDefendingPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/pretenders_claim.jpg Oracle:Enchant creature\nWhenever enchanted creature becomes blocked, tap all lands defending player controls. diff --git a/forge-gui/res/cardsfolder/r/riptide_entrancer.txt b/forge-gui/res/cardsfolder/r/riptide_entrancer.txt index 771e949af5a..eed0ef6c14b 100644 --- a/forge-gui/res/cardsfolder/r/riptide_entrancer.txt +++ b/forge-gui/res/cardsfolder/r/riptide_entrancer.txt @@ -3,7 +3,7 @@ ManaCost:1 U U Types:Creature Human Wizard PT:1/1 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigGainControl | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may sacrifice it. If you do, gain control of target creature that player controls. (This effect lasts indefinitely.) -SVar:TrigGainControl:AB$GainControl | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature that player controls +SVar:TrigGainControl:AB$GainControl | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature that player controls K:Morph:U U SVar:Picture:http://www.wizards.com/global/images/magic/general/riptide_entrancer.jpg Oracle:Whenever Riptide Entrancer deals combat damage to a player, you may sacrifice it. If you do, gain control of target creature that player controls. (This effect lasts indefinitely.)\nMorph {U}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/r/robber_fly.txt b/forge-gui/res/cardsfolder/r/robber_fly.txt index 9a177e9c9cf..4c4de9a64b2 100644 --- a/forge-gui/res/cardsfolder/r/robber_fly.txt +++ b/forge-gui/res/cardsfolder/r/robber_fly.txt @@ -4,8 +4,8 @@ Types:Creature Insect PT:1/1 K:Flying T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards all the cards in their hand, then draws that many cards. -SVar:TrigDiscard:DB$ Discard | Defined$ DefendingPlayer | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ DefendingPlayer | SubAbility$ DBCleanup +SVar:TrigDiscard:DB$ Discard | Defined$ TriggeredDefendingPlayer | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ TriggeredDefendingPlayer | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount SVar:Picture:http://www.wizards.com/global/images/magic/general/robber_fly.jpg diff --git a/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt b/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt index 4a6477fe794..4ccc689506a 100644 --- a/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt +++ b/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt @@ -4,7 +4,7 @@ Types:Creature Human Samurai PT:2/2 K:Bushido:1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You| TriggerDescription$ Whenever CARDNAME attacks, you may have it deal 1 damage to each creature defending player controls. -SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.DefenderCtrl | NumDmg$ 1| ValidDescription$ each creature defending player controls. +SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer | NumDmg$ 1| ValidDescription$ each creature defending player controls. SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/ronin_cliffrider.jpg Oracle:Bushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.)\nWhenever Ronin Cliffrider attacks, you may have it deal 1 damage to each creature defending player controls. diff --git a/forge-gui/res/cardsfolder/r/rust_scarab.txt b/forge-gui/res/cardsfolder/r/rust_scarab.txt index 384314f2c61..f3f16600034 100644 --- a/forge-gui/res/cardsfolder/r/rust_scarab.txt +++ b/forge-gui/res/cardsfolder/r/rust_scarab.txt @@ -3,7 +3,7 @@ ManaCost:4 G Types:Creature Insect PT:4/5 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME becomes blocked, you may 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 control +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer,Enchantment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact or enchantment defending player control SVar:HasAttackEffect:Blocked SVar:Picture:http://www.wizards.com/global/images/magic/general/rust_scarab.jpg Oracle:Whenever Rust Scarab becomes blocked, you may destroy target artifact or enchantment defending player controls. diff --git a/forge-gui/res/cardsfolder/r/rustmouth_ogre.txt b/forge-gui/res/cardsfolder/r/rustmouth_ogre.txt index d33722e223e..79f69e27191 100644 --- a/forge-gui/res/cardsfolder/r/rustmouth_ogre.txt +++ b/forge-gui/res/cardsfolder/r/rustmouth_ogre.txt @@ -3,6 +3,6 @@ ManaCost:4 R R Types:Creature Ogre PT:5/4 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/rustmouth_ogre.jpg Oracle:Whenever Rustmouth Ogre deals combat damage to a player, you may destroy target artifact that player controls. diff --git a/forge-gui/res/cardsfolder/s/scalding_salamander.txt b/forge-gui/res/cardsfolder/s/scalding_salamander.txt index 352bd59fa3f..d2ff089238c 100644 --- a/forge-gui/res/cardsfolder/s/scalding_salamander.txt +++ b/forge-gui/res/cardsfolder/s/scalding_salamander.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Creature Salamander PT:2/1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may have it deal 1 damage to each creature without flying defending player controls. -SVar:TrigDamage:DB$DamageAll | NumDmg$ 1 | ValidCards$ Creature.withoutFlying+DefenderCtrl +SVar:TrigDamage:DB$DamageAll | NumDmg$ 1 | ValidCards$ Creature.withoutFlying+ControlledBy TriggeredDefendingPlayer SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/scalding_salamander.jpg Oracle:Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls. diff --git a/forge-gui/res/cardsfolder/s/shockmaw_dragon.txt b/forge-gui/res/cardsfolder/s/shockmaw_dragon.txt index 794ed9682be..d1905954d68 100644 --- a/forge-gui/res/cardsfolder/s/shockmaw_dragon.txt +++ b/forge-gui/res/cardsfolder/s/shockmaw_dragon.txt @@ -4,6 +4,6 @@ Types:Creature Dragon PT:4/4 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 1 damage to each creature that player controls. -SVar:TrigDamage:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.DefenderCtrl +SVar:TrigDamage:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/shockmaw_dragon.jpg Oracle:Flying\nWhenever Shockmaw Dragon deals combat damage to a player, it deals 1 damage to each creature that player controls. diff --git a/forge-gui/res/cardsfolder/s/shrieking_specter.txt b/forge-gui/res/cardsfolder/s/shrieking_specter.txt index f0f56489460..dec7ff75b20 100644 --- a/forge-gui/res/cardsfolder/s/shrieking_specter.txt +++ b/forge-gui/res/cardsfolder/s/shrieking_specter.txt @@ -4,7 +4,7 @@ Types:Creature Specter PT:2/2 K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME attacks, 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:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/shrieking_specter.jpg Oracle:Flying\nWhenever Shrieking Specter attacks, defending player discards a card. diff --git a/forge-gui/res/cardsfolder/s/shrouded_serpent.txt b/forge-gui/res/cardsfolder/s/shrouded_serpent.txt index 4ccbf798dc0..c113084181b 100644 --- a/forge-gui/res/cardsfolder/s/shrouded_serpent.txt +++ b/forge-gui/res/cardsfolder/s/shrouded_serpent.txt @@ -3,6 +3,6 @@ ManaCost:4 U U U Types:Creature Serpent PT:4/4 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, defending player may pay {4}. If that player doesn't, CARDNAME can't be blocked this turn. -SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ HIDDEN Unblockable | UnlessCost$ 4 | UnlessPayer$ DefendingPlayer +SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ HIDDEN Unblockable | UnlessCost$ 4 | UnlessPayer$ TriggeredDefendingPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/shrouded_serpent.jpg Oracle:Whenever Shrouded Serpent attacks, defending player may pay {4}. If that player doesn't, Shrouded Serpent can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/s/sibilant_spirit.txt b/forge-gui/res/cardsfolder/s/sibilant_spirit.txt index 159ba733a36..0d80ad687a8 100644 --- a/forge-gui/res/cardsfolder/s/sibilant_spirit.txt +++ b/forge-gui/res/cardsfolder/s/sibilant_spirit.txt @@ -4,6 +4,6 @@ Types:Creature Spirit PT:5/6 K:Flying 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/sibilant_spirit.jpg Oracle:Flying\nWhenever Sibilant Spirit attacks, defending player may draw a card. diff --git a/forge-gui/res/cardsfolder/s/sidar_jabari.txt b/forge-gui/res/cardsfolder/s/sidar_jabari.txt index 032e78a1e6a..c353f58028d 100644 --- a/forge-gui/res/cardsfolder/s/sidar_jabari.txt +++ b/forge-gui/res/cardsfolder/s/sidar_jabari.txt @@ -4,6 +4,6 @@ Types:Legendary Creature Human Knight PT:2/2 K:Flanking 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:Picture:http://www.wizards.com/global/images/magic/general/sidar_jabari.jpg Oracle:Flanking (Whenever a creature without flanking blocks this creature, the blocking creature gets -1/-1 until end of turn.)\nWhenever Sidar Jabari attacks, tap target creature defending player controls. diff --git a/forge-gui/res/cardsfolder/s/silumgar_the_drifting_death.txt b/forge-gui/res/cardsfolder/s/silumgar_the_drifting_death.txt index 928faed1e54..093128c7eb6 100644 --- a/forge-gui/res/cardsfolder/s/silumgar_the_drifting_death.txt +++ b/forge-gui/res/cardsfolder/s/silumgar_the_drifting_death.txt @@ -5,7 +5,7 @@ PT:3/7 K:Flying K:Hexproof T:Mode$ Attacks | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigMassacre | TriggerDescription$ Whenever a Dragon you control attacks, creatures defending player control each get -1/-1 until end of turn. -SVar:TrigMassacre:DB$ PumpAll | NumAtt$ -1 | NumDef$ -1 | ValidCards$ TriggeredAttacker.Creature+DefenderCtrl | IsCurse$ True +SVar:TrigMassacre:DB$ PumpAll | NumAtt$ -1 | NumDef$ -1 | ValidCards$ TriggeredAttacker.Creature+ControlledBy TriggeredDefendingPlayer | IsCurse$ True SVar:BuffedBy:Dragon DeckHints:Type$Dragon SVar:Picture:http://www.wizards.com/global/images/magic/general/silumgar_the_drifting_death.jpg diff --git a/forge-gui/res/cardsfolder/s/skirk_commando.txt b/forge-gui/res/cardsfolder/s/skirk_commando.txt index a33ea651d41..86bd786c06a 100644 --- a/forge-gui/res/cardsfolder/s/skirk_commando.txt +++ b/forge-gui/res/cardsfolder/s/skirk_commando.txt @@ -4,6 +4,6 @@ Types:Creature Goblin PT:2/1 K:Morph:2 R T:Mode$ DamageDone | ValidSource$ Card.Self+faceUp | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may have it deal 2 damage to target creature that player controls. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature controlled by opponent | NumDmg$ 2 +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature controlled by opponent | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/skirk_commando.jpg Oracle:Whenever Skirk Commando deals combat damage to a player, you may have it deal 2 damage to target creature that player controls.\nMorph {2}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/s/skymark_roc.txt b/forge-gui/res/cardsfolder/s/skymark_roc.txt index 67e17b82b24..ff10f499c66 100644 --- a/forge-gui/res/cardsfolder/s/skymark_roc.txt +++ b/forge-gui/res/cardsfolder/s/skymark_roc.txt @@ -4,6 +4,6 @@ Types:Creature Bird PT:3/3 K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigBounce | TriggerDescription$ Whenever CARDNAME attacks, you may return target creature defending player controls with toughness 2 or less to its owner's hand. -SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Creature.DefenderCtrl+toughnessLE2 | TgtPrompt$ Choose creature defending player controls with toughness 2 or less | Origin$ Battlefield | Destination$ Hand +SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Creature.toughnessLE2+ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Choose creature defending player controls with toughness 2 or less | Origin$ Battlefield | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/skymark_roc.jpg Oracle:Flying\nWhenever Skymark Roc attacks, you may return target creature defending player controls with toughness 2 or less to its owner's hand. diff --git a/forge-gui/res/cardsfolder/s/slate_street_ruffian.txt b/forge-gui/res/cardsfolder/s/slate_street_ruffian.txt index 27ead4624fc..37ded5cccaa 100644 --- a/forge-gui/res/cardsfolder/s/slate_street_ruffian.txt +++ b/forge-gui/res/cardsfolder/s/slate_street_ruffian.txt @@ -3,7 +3,7 @@ ManaCost:2 B Types:Creature Human Warrior PT:2/2 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:Picture:http://www.wizards.com/global/images/magic/general/slate_street_ruffian.jpg Oracle:Whenever Slate Street Ruffian becomes blocked, defending player discards a card. diff --git a/forge-gui/res/cardsfolder/s/snapping_thragg.txt b/forge-gui/res/cardsfolder/s/snapping_thragg.txt index 797748b6ca4..9d119e010b2 100644 --- a/forge-gui/res/cardsfolder/s/snapping_thragg.txt +++ b/forge-gui/res/cardsfolder/s/snapping_thragg.txt @@ -4,6 +4,6 @@ Types:Creature Beast PT:3/3 K:Morph:4 R R T:Mode$ DamageDone | ValidSource$ Card.Self+faceUp | ValidTarget$ Player | Execute$ TrigDamage | TriggerZones$ Battlefield | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may have it deal 3 damage to target creature that player controls. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumDmg$ 3 +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/snapping_thragg.jpg Oracle:Whenever Snapping Thragg deals combat damage to a player, you may have it deal 3 damage to target creature that player controls.\nMorph {4}{R}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/s/soul_seizer_ghastly_haunting.txt b/forge-gui/res/cardsfolder/s/soul_seizer_ghastly_haunting.txt index 26b0fb3f09c..d7b8ebe6cb1 100644 --- a/forge-gui/res/cardsfolder/s/soul_seizer_ghastly_haunting.txt +++ b/forge-gui/res/cardsfolder/s/soul_seizer_ghastly_haunting.txt @@ -5,7 +5,7 @@ PT:1/3 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigTransform | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may transform it. If you do, attach it to target creature that player controls. SVar:TrigTransform:DB$ SetState | Defined$ Self | Mode$ Transform | SubAbility$ DBAttach -SVar:DBAttach:DB$ Attach | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature that damaged player controls | AILogic$ GainControl +SVar:DBAttach:DB$ Attach | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature that damaged player controls | AILogic$ GainControl SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_seizer.jpg AlternateMode:DoubleFaced Oracle:Flying\nWhen Soul Seizer deals combat damage to a player, you may transform it. If you do, attach it to target creature that player controls. diff --git a/forge-gui/res/cardsfolder/s/spark_mage.txt b/forge-gui/res/cardsfolder/s/spark_mage.txt index 7169d3176ce..bdb5a09f5eb 100644 --- a/forge-gui/res/cardsfolder/s/spark_mage.txt +++ b/forge-gui/res/cardsfolder/s/spark_mage.txt @@ -3,6 +3,6 @@ ManaCost:R Types:Creature Dwarf Wizard PT:1/1 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDamage | CombatDamage$ True | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may have CARDNAME deal 1 damage to target creature that player controls. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature | NumDmg$ 1 | OptionalDecider$ You +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature | NumDmg$ 1 | OptionalDecider$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/spark_mage.jpg Oracle:Whenever Spark Mage deals combat damage to a player, you may have Spark Mage deal 1 damage to target creature that player controls. diff --git a/forge-gui/res/cardsfolder/s/sphinx_ambassador.txt b/forge-gui/res/cardsfolder/s/sphinx_ambassador.txt index 599ee0049a0..46e79763006 100644 --- a/forge-gui/res/cardsfolder/s/sphinx_ambassador.txt +++ b/forge-gui/res/cardsfolder/s/sphinx_ambassador.txt @@ -4,10 +4,10 @@ Types:Creature Sphinx PT:5/5 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigSearch | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, search that player's library for a card, then that player chooses a card name. If you searched for a creature card that doesn't have that name, you may put it onto the battlefield under your control. Then that player shuffles. -SVar:TrigSearch:DB$ ChangeZone | ChangeType$ Card | Origin$ Library | Destination$ Library | DefinedPlayer$ DefendingPlayer | Chooser$ You | Shuffle$ False | RememberChanged$ True | SubAbility$ DBName -SVar:DBName:DB$ NameCard | Defined$ DefendingPlayer | SubAbility$ DBChangeZone | AILogic$ BestCreatureInComputerDeck +SVar:TrigSearch:DB$ ChangeZone | ChangeType$ Card | Origin$ Library | Destination$ Library | DefinedPlayer$ TriggeredDefendingPlayer | Chooser$ You | Shuffle$ False | RememberChanged$ True | SubAbility$ DBName +SVar:DBName:DB$ NameCard | Defined$ TriggeredDefendingPlayer | SubAbility$ DBChangeZone | AILogic$ BestCreatureInComputerDeck SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Battlefield | GainControl$ True | ConditionDefined$ Remembered | Shuffle$ False | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | Optional$ True | OptionalDecider$ You | SubAbility$ DBShuffle -SVar:DBShuffle:DB$ Shuffle | Defined$ DefendingPlayer | SubAbility$ DBCleanup +SVar:DBShuffle:DB$ Shuffle | Defined$ TriggeredDefendingPlayer | SubAbility$ DBCleanup SVar:X:Count$ValidLibrary Creature.IsRemembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/sphinx_ambassador.jpg diff --git a/forge-gui/res/cardsfolder/s/star_crowned_stag.txt b/forge-gui/res/cardsfolder/s/star_crowned_stag.txt index e343644108b..1ab0459f422 100644 --- a/forge-gui/res/cardsfolder/s/star_crowned_stag.txt +++ b/forge-gui/res/cardsfolder/s/star_crowned_stag.txt @@ -2,6 +2,6 @@ Name:Star-Crowned Stag ManaCost:3 W Types:Creature Elk T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTap | 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. Oracle:Whenever Star-Crowned Stag attacks, tap target creature defending player controls. PT:3/3 diff --git a/forge-gui/res/cardsfolder/s/sunder_shaman.txt b/forge-gui/res/cardsfolder/s/sunder_shaman.txt index 955f4d7deeb..0c16a979a37 100644 --- a/forge-gui/res/cardsfolder/s/sunder_shaman.txt +++ b/forge-gui/res/cardsfolder/s/sunder_shaman.txt @@ -4,5 +4,5 @@ Types:Creature Giant Shaman PT:5/5 K:CantBeBlockedByAmount GT1 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, destroy target artifact or enchantment that player controls. -SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.DefenderCtrl,Enchantment.DefenderCtrl | TgtPrompt$ Select target artifact or enchantment that player controls. +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer,Enchantment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact or enchantment that player controls. Oracle:Sunder Shaman can't be blocked by more than one creature.\nWhenever Sunder Shaman deals combat damage to a player, destroy target artifact or enchantment that player controls. diff --git a/forge-gui/res/cardsfolder/s/suqata_assassin.txt b/forge-gui/res/cardsfolder/s/suqata_assassin.txt index ac83d809cbd..76978802d43 100644 --- a/forge-gui/res/cardsfolder/s/suqata_assassin.txt +++ b/forge-gui/res/cardsfolder/s/suqata_assassin.txt @@ -4,6 +4,6 @@ Types:Creature Human Assassin PT:1/1 K:Fear 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/suqata_assassin.jpg Oracle:Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)\nWhenever Suq'Ata Assassin attacks and isn't blocked, defending player gets a poison counter. (A player with ten or more poison counters loses the game.) diff --git a/forge-gui/res/cardsfolder/s/swamp_mosquito.txt b/forge-gui/res/cardsfolder/s/swamp_mosquito.txt index 764b9b118df..1a3874548c2 100644 --- a/forge-gui/res/cardsfolder/s/swamp_mosquito.txt +++ b/forge-gui/res/cardsfolder/s/swamp_mosquito.txt @@ -4,6 +4,6 @@ Types:Creature Insect PT:0/1 K:Flying 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/swamp_mosquito.jpg Oracle:Flying\nWhenever Swamp Mosquito attacks and isn't blocked, defending player gets a poison counter. (A player with ten or more poison counters loses the game.) diff --git a/forge-gui/res/cardsfolder/s/swathcutter_giant.txt b/forge-gui/res/cardsfolder/s/swathcutter_giant.txt index 977d030b6fb..219a10f1bcf 100644 --- a/forge-gui/res/cardsfolder/s/swathcutter_giant.txt +++ b/forge-gui/res/cardsfolder/s/swathcutter_giant.txt @@ -4,6 +4,6 @@ Types:Creature Giant Soldier PT:5/5 K:Vigilance T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to each creature defending player controls. -SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.DefenderCtrl | NumDmg$ 1 | ValidDescription$ each creature defending player controls. +SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer | NumDmg$ 1 | ValidDescription$ each creature defending player controls. SVar:HasAttackEffect:TRUE Oracle:Vigilance\nWhenever Swathcutter Giant attacks, it deals 1 damage to each creature defending player controls. diff --git a/forge-gui/res/cardsfolder/t/terra_ravager.txt b/forge-gui/res/cardsfolder/t/terra_ravager.txt index 77c7a1dca0d..a10fef83ccc 100644 --- a/forge-gui/res/cardsfolder/t/terra_ravager.txt +++ b/forge-gui/res/cardsfolder/t/terra_ravager.txt @@ -4,6 +4,6 @@ Types:Creature Elemental Beast PT:0/4 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, it gets +X/+0 until end of turn, where X is the number of lands defending player controls. SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ X -SVar:X:Count$Valid Land.DefenderCtrl +SVar:X:Count$Valid Land.ControlledBy TriggeredDefendingPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/terra_ravager.jpg Oracle:Whenever Terra Ravager attacks, it gets +X/+0 until end of turn, where X is the number of lands defending player controls. diff --git a/forge-gui/res/cardsfolder/t/the_haunt_of_hightower.txt b/forge-gui/res/cardsfolder/t/the_haunt_of_hightower.txt index e05e9dca861..c9a2ad1f50d 100644 --- a/forge-gui/res/cardsfolder/t/the_haunt_of_hightower.txt +++ b/forge-gui/res/cardsfolder/t/the_haunt_of_hightower.txt @@ -5,7 +5,7 @@ PT:3/3 K:Flying K:Lifelink T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME attacks, 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:TRUE T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+OppOwn | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a card is put into an opponent's graveyard from anywhere, put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 diff --git a/forge-gui/res/cardsfolder/t/thraximundar.txt b/forge-gui/res/cardsfolder/t/thraximundar.txt index 6ce42d94781..013dda67f33 100644 --- a/forge-gui/res/cardsfolder/t/thraximundar.txt +++ b/forge-gui/res/cardsfolder/t/thraximundar.txt @@ -5,7 +5,7 @@ PT:6/6 K:Haste T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ Whenever Thraximundar attacks, defending player sacrifices a creature. T:Mode$ Sacrificed | ValidCard$ Creature | Execute$ TrigPutCounter | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever a player sacrifices a creature, you may put a +1/+1 counter on CARDNAME. -SVar:TrigSac:DB$ Sacrifice | Defined$ DefendingPlayer | SacValid$ Creature +SVar:TrigSac:DB$ Sacrifice | Defined$ TriggeredDefendingPlayer | SacValid$ Creature SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/thraximundar.jpg diff --git a/forge-gui/res/cardsfolder/t/thresher_beast.txt b/forge-gui/res/cardsfolder/t/thresher_beast.txt index 855e1ed66ed..701e76c1e53 100644 --- a/forge-gui/res/cardsfolder/t/thresher_beast.txt +++ b/forge-gui/res/cardsfolder/t/thresher_beast.txt @@ -3,7 +3,7 @@ ManaCost:3 G G Types:Creature Beast PT:4/4 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player sacrifices a land. -SVar:TrigSac:DB$ Sacrifice | SacValid$ Land | Defined$ DefendingPlayer | ChangeNum$ 1 +SVar:TrigSac:DB$ Sacrifice | SacValid$ Land | Defined$ TriggeredDefendingPlayer | ChangeNum$ 1 SVar:HasAttackEffect:Blocked SVar:Picture:http://www.wizards.com/global/images/magic/general/thresher_beast.jpg Oracle:Whenever Thresher Beast becomes blocked, defending player sacrifices a land. diff --git a/forge-gui/res/cardsfolder/t/throat_slitter.txt b/forge-gui/res/cardsfolder/t/throat_slitter.txt index d3aee044eba..2de5a88b742 100644 --- a/forge-gui/res/cardsfolder/t/throat_slitter.txt +++ b/forge-gui/res/cardsfolder/t/throat_slitter.txt @@ -4,7 +4,7 @@ Types:Creature Rat Ninja PT:2/2 K:Ninjutsu:2 B T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, destroy target nonblack creature that player controls. -SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.nonBlack+DefenderCtrl | TgtPrompt$ Select target nonblack creature defending player controls +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.nonBlack+ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target nonblack creature defending player controls SVar:MustBeBlocked:True SVar:Picture:http://www.wizards.com/global/images/magic/general/throat_slitter.jpg Oracle:Ninjutsu {2}{B} ({2}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nWhenever Throat Slitter deals combat damage to a player, destroy target nonblack creature that player controls. diff --git a/forge-gui/res/cardsfolder/t/tormentors_helm.txt b/forge-gui/res/cardsfolder/t/tormentors_helm.txt index 2aa6628c41f..1ca4d1e41dd 100644 --- a/forge-gui/res/cardsfolder/t/tormentors_helm.txt +++ b/forge-gui/res/cardsfolder/t/tormentors_helm.txt @@ -4,6 +4,6 @@ Types:Artifact Equipment K:Equip:1 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 1 | Description$ Equipped creature gets +1/+1. T:Mode$ AttackerBlocked | ValidCard$ Creature.EquippedBy | Execute$ TrigDealDamage | TriggerDescription$ Whenever equipped creature becomes blocked, it deals 1 damage to defending player. -SVar:TrigDealDamage:DB$DealDamage | Defined$ DefendingPlayer | NumDmg$ 1 +SVar:TrigDealDamage:DB$DealDamage | Defined$ TriggeredDefendingPlayer | NumDmg$ 1 SVar:HasAttackEffect:Blocked Oracle:Equipped creature gets +1/+1.\nWhenever equipped creature becomes blocked, it deals 1 damage to defending player.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/t/torrent_elemental.txt b/forge-gui/res/cardsfolder/t/torrent_elemental.txt index 074ad665672..550d395d35b 100644 --- a/forge-gui/res/cardsfolder/t/torrent_elemental.txt +++ b/forge-gui/res/cardsfolder/t/torrent_elemental.txt @@ -4,7 +4,7 @@ Types:Creature Elemental PT:3/5 K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ Whenever CARDNAME attacks, tap all creatures defending player controls. -SVar:TrigTap:DB$TapAll | ValidCards$ Creature.DefenderCtrl +SVar:TrigTap:DB$ TapAll | ValidCards$ Creature.ControlledBy TriggeredDefendingPlayer A:AB$ ChangeZone | Cost$ 3 BG BG | ActivationZone$ Exile | Origin$ Exile | Destination$ Battlefield | Tapped$ True | SorcerySpeed$ True | SpellDescription$ Put CARDNAME from exile onto the battlefield tapped. Activate only as a sorcery. SVar:Picture:http://www.wizards.com/global/images/magic/general/torrent_elemental.jpg Oracle:Flying\nWhenever Torrent Elemental attacks, tap all creatures defending player controls.\n{3}{B/G}{B/G}: Put Torrent Elemental from exile onto the battlefield tapped. Activate only as a sorcery. diff --git a/forge-gui/res/cardsfolder/t/trepanation_blade.txt b/forge-gui/res/cardsfolder/t/trepanation_blade.txt index b47e2aa4fba..1c561c114df 100644 --- a/forge-gui/res/cardsfolder/t/trepanation_blade.txt +++ b/forge-gui/res/cardsfolder/t/trepanation_blade.txt @@ -3,7 +3,7 @@ ManaCost:3 Types:Artifact Equipment K:Equip:2 T:Mode$ Attacks | ValidCard$ Card.EquippedBy | Execute$ TrigDig | TriggerDescription$ Whenever equipped creature attacks, defending player reveals cards from the top of their library until their reveals a land card. The creature gets +1/+0 until end of turn for each card revealed this way. That player puts the revealed cards into their graveyard. -SVar:TrigDig:DB$ DigUntil | Defined$ DefendingPlayer | Valid$ Land | ValidDescription$ land | RevealedDestination$ Graveyard | RememberRevealed$ True | SubAbility$ TrigPump +SVar:TrigDig:DB$ DigUntil | Defined$ TriggeredDefendingPlayer | Valid$ Land | ValidDescription$ land | RevealedDestination$ Graveyard | RememberRevealed$ True | SubAbility$ TrigPump SVar:TrigPump:DB$ Pump | Defined$ Equipped | NumAtt$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount diff --git a/forge-gui/res/cardsfolder/t/trygon_predator.txt b/forge-gui/res/cardsfolder/t/trygon_predator.txt index c455b9f497b..72f24720d56 100644 --- a/forge-gui/res/cardsfolder/t/trygon_predator.txt +++ b/forge-gui/res/cardsfolder/t/trygon_predator.txt @@ -4,6 +4,6 @@ Types:Creature Beast PT:2/3 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | OptionalDecider$ You | CombatDamage$ True | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may destroy target artifact or enchantment that player controls. -SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.DefenderCtrl,Enchantment.DefenderCtrl | TgtPrompt$ Select target artifact or enchantment you don't control. +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.ControlledBy TriggeredDefendingPlayer,Enchantment.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target artifact or enchantment you don't control. SVar:Picture:http://www.wizards.com/global/images/magic/general/trygon_predator.jpg Oracle:Flying\nWhenever Trygon Predator deals combat damage to a player, you may destroy target artifact or enchantment that player controls. diff --git a/forge-gui/res/cardsfolder/t/tyrants_familiar.txt b/forge-gui/res/cardsfolder/t/tyrants_familiar.txt index d8f2c3238f1..27f3885d973 100644 --- a/forge-gui/res/cardsfolder/t/tyrants_familiar.txt +++ b/forge-gui/res/cardsfolder/t/tyrants_familiar.txt @@ -6,7 +6,7 @@ K:Flying K:Haste S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 2 | AddToughness$ 2 | AddTrigger$ TrigAttacks | CheckSVar$ X | SVarCompare$ GE1 | Description$ Lieutenant — As long as you control your commander, CARDNAME gets +2/+2 and has "Whenever CARDNAME attacks, it deals 7 damage to target creature defending player controls." SVar:TrigAttacks:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 7 damage to target creature defending player controls. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumDmg$ 7 +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TriggeredDefendingPlayer | TgtPrompt$ Select target creature defending player controls | NumDmg$ 7 SVar:X:Count$Valid Card.IsCommander+YouOwn+YouCtrl SVar:BuffedBy:Card.IsCommander AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/upcoming/death_tyrant.txt b/forge-gui/res/cardsfolder/upcoming/death_tyrant.txt index 217710626c6..4f8ca93fcf7 100644 --- a/forge-gui/res/cardsfolder/upcoming/death_tyrant.txt +++ b/forge-gui/res/cardsfolder/upcoming/death_tyrant.txt @@ -3,7 +3,7 @@ ManaCost:4 B Types:Creature Beholder Skeleton PT:4/6 K:Menace -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.attackingLKI+YouCtrl,Creature.blocking+OppCtrl | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Negative Energy Cone — Whenever an attacking creature you control or a blocking creature an opponent controls dies, create a 2/2 black Zombie creature token. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.attacking+YouCtrl,Creature.blocking+OppCtrl | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Negative Energy Cone — Whenever an attacking creature you control or a blocking creature an opponent controls dies, create a 2/2 black Zombie creature token. SVar:TrigToken:DB$ Token | TokenScript$ b_2_2_zombie | TokenOwner$ You | TokenAmount$ 1 A:AB$ ChangeZone | Cost$ 5 B | Origin$ Graveyard | Destination$ Battlefield | ActivationZone$ Graveyard | Tapped$ True | SpellDescription$ Return CARDNAME from your graveyard to the battlefield tapped. DeckHas:Ability$Token diff --git a/forge-gui/res/cardsfolder/v/vedalken_ghoul.txt b/forge-gui/res/cardsfolder/v/vedalken_ghoul.txt index 511a1272c17..500a0cf1c17 100644 --- a/forge-gui/res/cardsfolder/v/vedalken_ghoul.txt +++ b/forge-gui/res/cardsfolder/v/vedalken_ghoul.txt @@ -3,7 +3,7 @@ ManaCost:U B Types:Creature Vedalken Zombie PT:1/1 T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player loses 4 life. -SVar:TrigDrain:DB$ LoseLife | Defined$ DefendingPlayer | LifeAmount$ 4 +SVar:TrigDrain:DB$ LoseLife | Defined$ TriggeredDefendingPlayer | LifeAmount$ 4 SVar:HasAttackEffect:Blocked SVar:Picture:http://www.wizards.com/global/images/magic/general/vedalken_ghoul.jpg Oracle:Whenever Vedalken Ghoul becomes blocked, defending player loses 4 life. diff --git a/forge-gui/res/cardsfolder/x/xantid_swarm.txt b/forge-gui/res/cardsfolder/x/xantid_swarm.txt index c0466ef809f..c0f71c1b640 100644 --- a/forge-gui/res/cardsfolder/x/xantid_swarm.txt +++ b/forge-gui/res/cardsfolder/x/xantid_swarm.txt @@ -4,7 +4,7 @@ Types:Creature Insect PT:0/1 K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ When CARDNAME attacks, defending player can't cast spells this turn. -SVar:TrigEffect:DB$ Effect | Name$ Xantid Swarm Effect | RememberObjects$ DefendingPlayer | StaticAbilities$ CantBeCast | SubAbility$ DBCleanup +SVar:TrigEffect:DB$ Effect | Name$ Xantid Swarm Effect | RememberObjects$ TriggeredDefendingPlayer | StaticAbilities$ CantBeCast | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Defending player can't cast spells. AI:RemoveDeck:Random diff --git a/forge-gui/res/tokenscripts/icingdeath_frost_tongue.txt b/forge-gui/res/tokenscripts/icingdeath_frost_tongue.txt index f1af5d331ae..5bf6a257a0e 100644 --- a/forge-gui/res/tokenscripts/icingdeath_frost_tongue.txt +++ b/forge-gui/res/tokenscripts/icingdeath_frost_tongue.txt @@ -4,6 +4,6 @@ Types:Legendary Artifact Equipment Colors:white S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 0 | Description$ Equipped creature gets +2/+0. T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigTap | TriggerDescription$ Whenever equipped creature 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 K:Equip:2 Oracle:Equipped creature gets +2/+0.\nWhenever equipped creature attacks, tap target creature defending player controls.\nEquip {2}