diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java
index 54e43d95dfb..9bd7cf1b9ce 100644
--- a/forge-game/src/main/java/forge/game/card/CardFactory.java
+++ b/forge-game/src/main/java/forge/game/card/CardFactory.java
@@ -20,7 +20,6 @@ package forge.game.card;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-
import forge.ImageKeys;
import forge.StaticData;
import forge.card.*;
@@ -368,7 +367,7 @@ public class CardFactory {
triggerSB.append("that planar deck and turn it face up");
StringBuilder saSB = new StringBuilder();
- saSB.append("AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | AnyPlayer$ True | ActivationZone$ Command | ");
+ saSB.append("AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | Activator$ Player | ActivationZone$ Command | ");
saSB.append("SpellDescription$ Roll the planar dice. X is equal to the amount of times the planar die has been rolled this turn.");
card.setSVar("RolledWalk", "DB$ Planeswalk | Cost$ 0");
diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java
index 18593cbb8aa..16a68e6bfbe 100644
--- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java
+++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java
@@ -1,11 +1,5 @@
package forge.game.player;
-import java.util.ArrayList;
-import java.util.List;
-
-import forge.util.TextUtil;
-import org.apache.commons.lang3.StringUtils;
-
import forge.game.Game;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
@@ -16,6 +10,11 @@ import forge.game.card.CardPredicates.Presets;
import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
import forge.util.Expressions;
+import forge.util.TextUtil;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
public class PlayerProperty {
@@ -207,6 +206,11 @@ public class PlayerProperty {
if (!player.isEnchantedBy(source)) {
return false;
}
+ } else if (property.equals("EnchantedController")) {
+ Card enchanting = source.getEnchantingCard();
+ if (enchanting != null && !player.equals(enchanting.getController())) {
+ return false;
+ }
} else if (property.equals("Chosen")) {
if (source.getChosenPlayer() == null || !source.getChosenPlayer().equals(player)) {
return false;
diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java
index b481162c529..35a487c8878 100644
--- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java
+++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java
@@ -110,24 +110,8 @@ public class SpellAbilityRestriction extends SpellAbilityVariables {
this.setOpponentTurn(true);
}
- if (params.containsKey("AnyPlayer")) {
- this.setAnyPlayer(true);
- }
-
- if (params.containsKey("AnyOpponent")) {
- this.setOpponentOnly(true);
- }
-
- if (params.containsKey("EnchantedControllerActivator")) {
- this.setEnchantedControllerOnly(true);
- }
-
- if (params.containsKey("AttackedPlayerActivator")) {
- this.setAttackedPlayerOnly(true);
- }
-
- if (params.containsKey("OwnerOnly")) {
- this.setOwnerOnly(true);
+ if (params.containsKey("Activator")) {
+ this.setActivator(params.get("Activator"));
}
if (params.containsKey("ActivationLimit")) {
@@ -329,39 +313,16 @@ public class SpellAbilityRestriction extends SpellAbilityVariables {
final Game game = activator.getGame();
final Combat combat = game.getPhaseHandler().getCombat();
- if (this.isAnyPlayer()) {
- return true;
- }
-
- if (this.isOwnerOnly()) {
- return activator.equals(c.getOwner());
- }
-
- if (this.isAttackedPlayerOnly() && combat != null) {
- Player attacked = combat.getDefendingPlayerRelatedTo(c);
- return activator.equals(attacked);
- }
-
- if (activator.equals(c.getController()) && !this.isOpponentOnly() && !isEnchantedControllerOnly()) {
- return true;
- }
-
- if (activator.isOpponentOf(c.getController()) && this.isOpponentOnly()) {
- return true;
- }
-
- if (c.getEnchantingCard() != null && activator.equals(c.getEnchantingCard().getController()) && this.isEnchantedControllerOnly()) {
- return true;
- }
-
if (sa.isSpell()) {
+ // Spells should always default to "controller" but use mayPlay check.
final CardPlayOption o = c.mayPlay(sa.getMayPlay());
if (o != null && o.getPlayer() == activator) {
return true;
}
}
-
- return false;
+
+ String validPlayer = this.getActivator();
+ return activator.isValid(validPlayer, activator, c, sa);
}
public final boolean checkOtherRestrictions(final Card c, final SpellAbility sa, final Player activator) {
diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java
index c9579cf6f69..2ade34a0f00 100644
--- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java
+++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java
@@ -17,15 +17,14 @@
*/
package forge.game.spellability;
-import java.util.EnumSet;
-import java.util.Set;
-
import com.google.common.collect.Sets;
-
import forge.game.GameType;
import forge.game.phase.PhaseType;
import forge.game.zone.ZoneType;
+import java.util.EnumSet;
+import java.util.Set;
+
/**
*
* SpellAbilityVariables class.
@@ -61,11 +60,7 @@ public class SpellAbilityVariables implements Cloneable {
this.gameTypes = Sets.newEnumSet(sav.getGameTypes(), GameType.class);
this.sorcerySpeed = sav.isSorcerySpeed();
this.instantSpeed = sav.isInstantSpeed();
- this.anyPlayer = sav.isAnyPlayer();
- this.opponentOnly = sav.isOpponentOnly();
- this.enchantedControllerOnly = sav.isEnchantedControllerOnly();
- this.attackedPlayerOnly = sav.isAttackedPlayerOnly();
- this.ownerOnly = sav.isOwnerOnly();
+ this.activator = sav.getActivator();
this.opponentTurn = sav.isOpponentTurn();
this.playerTurn = sav.isPlayerTurn();
this.activationLimit = sav.getActivationLimit();
@@ -113,7 +108,7 @@ public class SpellAbilityVariables implements Cloneable {
private boolean instantSpeed = false;
/** The b any player. */
- private boolean anyPlayer = false;
+ private String activator = "Player.Controller";
/** The b opponent only. */
private boolean opponentOnly = false;
@@ -265,62 +260,28 @@ public class SpellAbilityVariables implements Cloneable {
return this.zone;
}
- /**
- *
- * setSorcerySpeed.
- *
- *
- * @param bSpeed
- * a boolean.
- */
public final void setSorcerySpeed(final boolean bSpeed) {
this.sorcerySpeed = bSpeed;
}
- /**
- *
- * getSorcerySpeed.
- *
- *
- * @return a boolean.
- */
public final boolean isSorcerySpeed() {
return this.sorcerySpeed;
}
- /**
- *
- * setInstantSpeed.
- *
- *
- * @param bSpeed
- * a boolean.
- */
public final void setInstantSpeed(final boolean bSpeed) {
this.instantSpeed = bSpeed;
}
- /**
- *
- * getInstantSpeed.
- *
- *
- * @return a boolean.
- */
public final boolean isInstantSpeed() {
return this.instantSpeed;
}
- /**
- *
- * setAnyPlayer.
- *
- *
- * @param anyPlayer
- * a boolean.
- */
- public final void setAnyPlayer(final boolean anyPlayer) {
- this.anyPlayer = anyPlayer;
+ public final void setActivator(final String player) {
+ this.activator = player;
+ }
+
+ public String getActivator() {
+ return this.activator;
}
/**
@@ -864,69 +825,6 @@ public class SpellAbilityVariables implements Cloneable {
return this.isPresent;
}
- /**
- * Checks if is any player.
- *
- * @return the anyPlayer
- */
- public final boolean isAnyPlayer() {
- return this.anyPlayer;
- }
-
- /**
- * @return the opponentOnly
- */
- public boolean isOpponentOnly() {
- return opponentOnly;
- }
-
- /**
- * @param opponentOnly the opponentOnly to set
- */
- public void setOpponentOnly(boolean opponentOnly) {
- this.opponentOnly = opponentOnly;
- }
-
- /**
- * @return the opponentOnly
- */
- public boolean isAttackedPlayerOnly() { return attackedPlayerOnly; }
-
- public void setAttackedPlayerOnly(boolean attackedPlayerOnly) {
- this.attackedPlayerOnly = attackedPlayerOnly;
- }
-
- /**
- * @return the opponentOnly
- */
- public boolean isEnchantedControllerOnly() {
- return enchantedControllerOnly;
- }
-
- public void setEnchantedControllerOnly(boolean enchantedControllerOnly) {
- this.enchantedControllerOnly = enchantedControllerOnly;
- }
- /**
- * @return the ownerOnly
- */
- public boolean isOwnerOnly() {
- return ownerOnly;
- }
-
- /**
- * @param ownerOnly the ownerOnly to set
- */
- public void setOwnerOnly(boolean ownerOnly) {
- this.ownerOnly = ownerOnly;
- }
- /**
- *
- * Setter for the field ColorToCheck.
- *
- *
- * @param s
- * a {@link java.lang.String} object.
- */
public final void setColorToCheck(final String s) {
this.chosenColors = s;
}
diff --git a/forge-gui/res/cardsfolder/a/aether_storm.txt b/forge-gui/res/cardsfolder/a/aether_storm.txt
index be348fb280a..d4f045f12d6 100644
--- a/forge-gui/res/cardsfolder/a/aether_storm.txt
+++ b/forge-gui/res/cardsfolder/a/aether_storm.txt
@@ -2,7 +2,7 @@ Name:Aether Storm
ManaCost:3 U
Types:Enchantment
S:Mode$ CantBeCast | ValidCard$ Creature | Description$ Creature spells can't be cast.
-A:AB$ Destroy | Cost$ PayLife<4> | Defined$ Self | NoReg$ True | AnyPlayer$ True | SpellDescription$ Destroy CARDNAME. It can't be regenerated. Any player may activate this ability.
+A:AB$ Destroy | Cost$ PayLife<4> | Defined$ Self | NoReg$ True | Activator$ Player | SpellDescription$ Destroy CARDNAME. It can't be regenerated. Any player may activate this ability.
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/aether_storm.jpg
Oracle:Creature spells can't be cast.\nPay 4 life: Destroy Aether Storm. It can't be regenerated. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/a/armageddon_clock.txt b/forge-gui/res/cardsfolder/a/armageddon_clock.txt
index 5ae083b0ebe..e2798f50f88 100644
--- a/forge-gui/res/cardsfolder/a/armageddon_clock.txt
+++ b/forge-gui/res/cardsfolder/a/armageddon_clock.txt
@@ -3,7 +3,7 @@ ManaCost:6
Types:Artifact
T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your draw step, CARDNAME deals damage equal to the number of doom counters on it to each player.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, put a doom counter on CARDNAME.
-A:AB$ RemoveCounter | Cost$ 4 | CounterType$ DOOM | CounterNum$ 1 | ActivationPhases$ Upkeep | AnyPlayer$ True | SpellDescription$ Remove a doom counter from CARDNAME. Any player may activate this ability but only during any upkeep step.
+A:AB$ RemoveCounter | Cost$ 4 | CounterType$ DOOM | CounterNum$ 1 | ActivationPhases$ Upkeep | Activator$ Player | SpellDescription$ Remove a doom counter from CARDNAME. Any player may activate this ability but only during any upkeep step.
SVar:TrigDealDamage:DB$DealDamage | Defined$ Player | NumDmg$ X | References$ X
SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ DOOM | CounterNum$ 1
SVar:X:Count$CardCounters.DOOM
diff --git a/forge-gui/res/cardsfolder/c/capricopian.txt b/forge-gui/res/cardsfolder/c/capricopian.txt
index 1da4a34bbca..0f465c0f297 100755
--- a/forge-gui/res/cardsfolder/c/capricopian.txt
+++ b/forge-gui/res/cardsfolder/c/capricopian.txt
@@ -4,7 +4,7 @@ Types:Creature Goat Hydra
PT:0/0
K:etbCounter:P1P1:X
SVar:X:Count$xPaid
-A:AB$ PutCounter | Cost$ 2 | AttackedPlayerActivator$ True | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBReselect | ActivationPhases$ Declare Attackers | AILogic$ AlwaysWithNoTgt | SpellDescription$ Put a +1/+1 counter on CARDNAME, then you may reselect which player CARDNAME is attacking. Only the player CARDNAME is attacking may activate this ability and only during the declare attackers step. (It can't attack its controller.)
+A:AB$ PutCounter | Cost$ 2 | Activator$ Player.attackedBySourceThisCombat | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBReselect | ActivationPhases$ Declare Attackers | AILogic$ AlwaysWithNoTgt | SpellDescription$ Put a +1/+1 counter on CARDNAME, then you may reselect which player CARDNAME is attacking. Only the player CARDNAME is attacking may activate this ability and only during the declare attackers step. (It can't attack its controller.)
SVar:DBReselect:DB$ ChangeCombatants | Defined$ Self | AILogic$ WeakestOppExceptCtrl
DeckHas:Ability$Counters
Oracle:Capricopian enters the battlefield with X +1/+1 counters on it.\n{2}: Put a +1/+1 counter on Capricopian, then you may reselect which player Capricopian is attacking. Only the player Capricopian is attacking may activate this ability and only during the declare attackers step. (It can't attack its controller.)
diff --git a/forge-gui/res/cardsfolder/c/clergy_of_the_holy_nimbus.txt b/forge-gui/res/cardsfolder/c/clergy_of_the_holy_nimbus.txt
index a3a78204c0d..1d73b141f44 100644
--- a/forge-gui/res/cardsfolder/c/clergy_of_the_holy_nimbus.txt
+++ b/forge-gui/res/cardsfolder/c/clergy_of_the_holy_nimbus.txt
@@ -3,6 +3,6 @@ ManaCost:W
Types:Creature Human Cleric
PT:1/1
K:If CARDNAME would be destroyed, regenerate it.
-A:AB$ Pump | Cost$ 1 | AnyOpponent$ True | Defined$ Self | KW$ HIDDEN CARDNAME can't be regenerated. | IsCurse$ True | SpellDescription$ CARDNAME can't be regenerated this turn. Only any opponent may activate this ability.
+A:AB$ Pump | Cost$ 1 | Activator$ Player.Opponent | Defined$ Self | KW$ HIDDEN CARDNAME can't be regenerated. | IsCurse$ True | SpellDescription$ CARDNAME can't be regenerated this turn. Only any opponent may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/clergy_of_the_holy_nimbus.jpg
Oracle:If Clergy of the Holy Nimbus would be destroyed, regenerate it.\n{1}: Clergy of the Holy Nimbus can't be regenerated this turn. Only any opponent may activate this ability.
diff --git a/forge-gui/res/cardsfolder/d/deadly_designs.txt b/forge-gui/res/cardsfolder/d/deadly_designs.txt
index d4ba465eaa7..2664a6ff96d 100644
--- a/forge-gui/res/cardsfolder/d/deadly_designs.txt
+++ b/forge-gui/res/cardsfolder/d/deadly_designs.txt
@@ -1,7 +1,7 @@
Name:Deadly Designs
ManaCost:1 B
Types:Enchantment
-A:AB$ PutCounter | Cost$ 2 | CounterType$ PLOT | CounterNum$ 1 | AnyPlayer$ True | SpellDescription$ Put a plot counter on CARDNAME. Any player may activate this ability.
+A:AB$ PutCounter | Cost$ 2 | CounterType$ PLOT | CounterNum$ 1 | Activator$ Player | SpellDescription$ Put a plot counter on CARDNAME. Any player may activate this ability.
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_GE5_PLOT | Execute$ TrigSac | TriggerDescription$ When there are five or more plot counters on CARDNAME, sacrifice it. If you do, destroy up to two target creatures.
SVar:TrigSac:DB$ Sacrifice | RememberSacrificed$ True | SubAbility$ DBDestroy
SVar:DBDestroy:DB$ Destroy | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup | TgtPrompt$ Select target creature
diff --git a/forge-gui/res/cardsfolder/e/endbringers_revel.txt b/forge-gui/res/cardsfolder/e/endbringers_revel.txt
index 4b9c208c3c6..73fd80ce851 100644
--- a/forge-gui/res/cardsfolder/e/endbringers_revel.txt
+++ b/forge-gui/res/cardsfolder/e/endbringers_revel.txt
@@ -1,7 +1,7 @@
Name:Endbringer's Revel
ManaCost:2 B
Types:Enchantment
-A:AB$ ChangeZone | Cost$ 4 | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select target creature from any graveyard | AnyPlayer$ True | SorcerySpeed$ True | SpellDescription$ Return target creature card from a graveyard to its owner's hand. Any player may activate this ability but only any time they could cast a sorcery.
+A:AB$ ChangeZone | Cost$ 4 | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select target creature from any graveyard | Activator$ Player | SorcerySpeed$ True | SpellDescription$ Return target creature card from a graveyard to its owner's hand. Any player may activate this ability but only any time they could cast a sorcery.
SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/endbringers_revel.jpg
Oracle:{4}: Return target creature card from a graveyard to its owner's hand. Any player may activate this ability but only any time they could cast a sorcery.
diff --git a/forge-gui/res/cardsfolder/e/excavation.txt b/forge-gui/res/cardsfolder/e/excavation.txt
index b60ccb70e30..4d29fbca08a 100644
--- a/forge-gui/res/cardsfolder/e/excavation.txt
+++ b/forge-gui/res/cardsfolder/e/excavation.txt
@@ -1,7 +1,7 @@
Name:Excavation
ManaCost:1 U
Types:Enchantment
-A:AB$ Draw | Cost$ 1 Sac<1/Land> | NumCards$ 1 | AnyPlayer$ True | SpellDescription$ Draw a card. Any player may activate this ability.
+A:AB$ Draw | Cost$ 1 Sac<1/Land> | NumCards$ 1 | Activator$ Player | SpellDescription$ Draw a card. Any player may activate this ability.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/excavation.jpg
diff --git a/forge-gui/res/cardsfolder/f/feral_hydra.txt b/forge-gui/res/cardsfolder/f/feral_hydra.txt
index 078e471cf56..5ffc51c97ba 100644
--- a/forge-gui/res/cardsfolder/f/feral_hydra.txt
+++ b/forge-gui/res/cardsfolder/f/feral_hydra.txt
@@ -4,6 +4,6 @@ Types:Creature Hydra Beast
PT:0/0
K:etbCounter:P1P1:X
SVar:X:Count$xPaid
-A:AB$ PutCounter | Cost$ 3 | CounterType$ P1P1 | CounterNum$ 1 | AnyPlayer$ True | SpellDescription$ Put a +1/+1 counter on CARDNAME. Any player may activate this ability.
+A:AB$ PutCounter | Cost$ 3 | CounterType$ P1P1 | CounterNum$ 1 | Activator$ Player | SpellDescription$ Put a +1/+1 counter on CARDNAME. Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/feral_hydra.jpg
Oracle:Feral Hydra enters the battlefield with X +1/+1 counters on it.\n{3}: Put a +1/+1 counter on Feral Hydra. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/f/flailing_manticore.txt b/forge-gui/res/cardsfolder/f/flailing_manticore.txt
index 2d2d8335371..53919c69128 100644
--- a/forge-gui/res/cardsfolder/f/flailing_manticore.txt
+++ b/forge-gui/res/cardsfolder/f/flailing_manticore.txt
@@ -4,8 +4,8 @@ Types:Creature Manticore
PT:3/3
K:Flying
K:First Strike
-A:AB$ Pump | Cost$ 1 | NumAtt$ +1 | NumDef$ +1 | AnyPlayer$ True | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Any player may activate this ability.
-A:AB$ Pump | Cost$ 1 | NumAtt$ -1 | NumDef$ -1 | AnyPlayer$ True | IsCurse$ True | SpellDescription$ CARDNAME gets -1/-1 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 1 | NumAtt$ +1 | NumDef$ +1 | Activator$ Player | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 1 | NumAtt$ -1 | NumDef$ -1 | Activator$ Player | IsCurse$ True | SpellDescription$ CARDNAME gets -1/-1 until end of turn. Any player may activate this ability.
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/flailing_manticore.jpg
Oracle:Flying, first strike\n{1}: Flailing Manticore gets +1/+1 until end of turn. Any player may activate this ability.\n{1}: Flailing Manticore gets -1/-1 until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/f/flailing_ogre.txt b/forge-gui/res/cardsfolder/f/flailing_ogre.txt
index 65dd77a5ad7..966a6e6c3db 100644
--- a/forge-gui/res/cardsfolder/f/flailing_ogre.txt
+++ b/forge-gui/res/cardsfolder/f/flailing_ogre.txt
@@ -2,8 +2,8 @@ Name:Flailing Ogre
ManaCost:2 R
Types:Creature Ogre
PT:3/3
-A:AB$ Pump | Cost$ 1 | NumAtt$ +1 | NumDef$ +1 | AnyPlayer$ True | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Any player may activate this ability.
-A:AB$ Pump | Cost$ 1 | NumAtt$ -1 | NumDef$ -1 | AnyPlayer$ True | IsCurse$ True | SpellDescription$ CARDNAME gets -1/-1 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 1 | NumAtt$ +1 | NumDef$ +1 | Activator$ Player | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 1 | NumAtt$ -1 | NumDef$ -1 | Activator$ Player | IsCurse$ True | SpellDescription$ CARDNAME gets -1/-1 until end of turn. Any player may activate this ability.
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/flailing_ogre.jpg
Oracle:{1}: Flailing Ogre gets +1/+1 until end of turn. Any player may activate this ability.\n{1}: Flailing Ogre gets -1/-1 until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/f/flailing_soldier.txt b/forge-gui/res/cardsfolder/f/flailing_soldier.txt
index 2a225fed5ab..c188371cf3e 100644
--- a/forge-gui/res/cardsfolder/f/flailing_soldier.txt
+++ b/forge-gui/res/cardsfolder/f/flailing_soldier.txt
@@ -2,8 +2,8 @@ Name:Flailing Soldier
ManaCost:R
Types:Creature Human Soldier
PT:2/2
-A:AB$ Pump | Cost$ 1 | NumAtt$ +1 | NumDef$ +1 | AnyPlayer$ True | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Any player may activate this ability.
-A:AB$ Pump | Cost$ 1 | NumAtt$ -1 | NumDef$ -1 | AnyPlayer$ True | IsCurse$ True | SpellDescription$ CARDNAME gets -1/-1 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 1 | NumAtt$ +1 | NumDef$ +1 | Activator$ Player | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 1 | NumAtt$ -1 | NumDef$ -1 | Activator$ Player | IsCurse$ True | SpellDescription$ CARDNAME gets -1/-1 until end of turn. Any player may activate this ability.
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/flailing_soldier.jpg
Oracle:{1}: Flailing Soldier gets +1/+1 until end of turn. Any player may activate this ability.\n{1}: Flailing Soldier gets -1/-1 until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/g/glittering_lion.txt b/forge-gui/res/cardsfolder/g/glittering_lion.txt
index 52fadb3e4ff..56b58de9c2f 100644
--- a/forge-gui/res/cardsfolder/g/glittering_lion.txt
+++ b/forge-gui/res/cardsfolder/g/glittering_lion.txt
@@ -3,6 +3,6 @@ ManaCost:2 W
Types:Creature Cat
PT:2/2
K:Prevent all damage that would be dealt to CARDNAME.
-A:AB$ Debuff | Cost$ 3 | Defined$ Self | Keywords$ Prevent all damage that would be dealt to CARDNAME. | AnyPlayer$ True | SpellDescription$ Until end of turn, CARDNAME loses "Prevent all damage that would be dealt to CARDNAME." Any player may activate this ability.
+A:AB$ Debuff | Cost$ 3 | Defined$ Self | Keywords$ Prevent all damage that would be dealt to CARDNAME. | Activator$ Player | SpellDescription$ Until end of turn, CARDNAME loses "Prevent all damage that would be dealt to CARDNAME." Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/glittering_lion.jpg
Oracle:Prevent all damage that would be dealt to Glittering Lion.\n{3}: Until end of turn, Glittering Lion loses "Prevent all damage that would be dealt to Glittering Lion." Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/g/glittering_lynx.txt b/forge-gui/res/cardsfolder/g/glittering_lynx.txt
index 87107f7f41f..fd5309b7aef 100644
--- a/forge-gui/res/cardsfolder/g/glittering_lynx.txt
+++ b/forge-gui/res/cardsfolder/g/glittering_lynx.txt
@@ -3,6 +3,6 @@ ManaCost:W
Types:Creature Cat
PT:1/1
K:Prevent all damage that would be dealt to CARDNAME.
-A:AB$ Debuff | Cost$ 2 | Defined$ Self | Keywords$ Prevent all damage that would be dealt to CARDNAME. | AnyPlayer$ True | SpellDescription$ Until end of turn, CARDNAME loses "Prevent all damage that would be dealt to CARDNAME." Any player may activate this ability.
+A:AB$ Debuff | Cost$ 2 | Defined$ Self | Keywords$ Prevent all damage that would be dealt to CARDNAME. | Activator$ Player | SpellDescription$ Until end of turn, CARDNAME loses "Prevent all damage that would be dealt to CARDNAME." Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/glittering_lynx.jpg
Oracle:Prevent all damage that would be dealt to Glittering Lynx.\n{2}: Until end of turn, Glittering Lynx loses "Prevent all damage that would be dealt to Glittering Lynx." Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/i/ifh_biff_efreet.txt b/forge-gui/res/cardsfolder/i/ifh_biff_efreet.txt
index 1639f9392c2..926ed85fa9a 100644
--- a/forge-gui/res/cardsfolder/i/ifh_biff_efreet.txt
+++ b/forge-gui/res/cardsfolder/i/ifh_biff_efreet.txt
@@ -3,6 +3,6 @@ ManaCost:2 G G
Types:Creature Efreet
PT:3/3
K:Flying
-A:AB$ DamageAll | Cost$ G | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Player | ValidDescription$ each creature with flying and each player. | AnyPlayer$ True | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. Any player may activate this ability.
+A:AB$ DamageAll | Cost$ G | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Player | ValidDescription$ each creature with flying and each player. | Activator$ Player | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. Any player may activate this ability.
SVar:Picture:http://resources.wizards.com/magic/cards/an/en-us/card947.jpg
Oracle:Flying\n{G}: Ifh-Biff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/i/infinite_hourglass.txt b/forge-gui/res/cardsfolder/i/infinite_hourglass.txt
index 33c2264e429..2af57779fe3 100644
--- a/forge-gui/res/cardsfolder/i/infinite_hourglass.txt
+++ b/forge-gui/res/cardsfolder/i/infinite_hourglass.txt
@@ -6,7 +6,7 @@ SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ TIME | Counter
S:Mode$ Continuous | Affected$ Creature | AddPower$ X | Description$ All creatures get +1/+0 for each time counter on CARDNAME.
SVar:X:Count$CardCounters.TIME
#TODO: Improve the AI for this
-A:AB$ RemoveCounter | Cost$ 3 | CounterType$ TIME | CounterNum$ 1 | ActivationPhases$ Upkeep | AnyPlayer$ True | AILogic$ Never | SpellDescription$ Remove a time counter from CARDNAME. Any player may activate this ability but only during any upkeep step.
+A:AB$ RemoveCounter | Cost$ 3 | CounterType$ TIME | CounterNum$ 1 | ActivationPhases$ Upkeep | Activator$ Player | AILogic$ Never | SpellDescription$ Remove a time counter from CARDNAME. Any player may activate this ability but only during any upkeep step.
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/infinite_hourglass.jpg
Oracle:At the beginning of your upkeep, put a time counter on Infinite Hourglass.\nAll creatures get +1/+0 for each time counter on Infinite Hourglass.\n{3}: Remove a time counter from Infinite Hourglass. Any player may activate this ability but only during any upkeep step.
diff --git a/forge-gui/res/cardsfolder/k/knight_of_the_holy_nimbus.txt b/forge-gui/res/cardsfolder/k/knight_of_the_holy_nimbus.txt
index b6aa021f14b..81bc30adb0c 100644
--- a/forge-gui/res/cardsfolder/k/knight_of_the_holy_nimbus.txt
+++ b/forge-gui/res/cardsfolder/k/knight_of_the_holy_nimbus.txt
@@ -4,6 +4,6 @@ Types:Creature Human Rebel Knight
PT:2/2
K:Flanking
K:If CARDNAME would be destroyed, regenerate it.
-A:AB$ Pump | Cost$ 2 | AnyOpponent$ True | Defined$ Self | KW$ HIDDEN CARDNAME can't be regenerated. | IsCurse$ True | SpellDescription$ CARDNAME can't be regenerated this turn. Only any opponent may activate this ability.
+A:AB$ Pump | Cost$ 2 | Activator$ Player.Opponent | Defined$ Self | KW$ HIDDEN CARDNAME can't be regenerated. | IsCurse$ True | SpellDescription$ CARDNAME can't be regenerated this turn. Only any opponent may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/knight_of_the_holy_nimbus.jpg
Oracle:Flanking (Whenever a creature without flanking blocks this creature, the blocking creature gets -1/-1 until end of turn.)\nIf Knight of the Holy Nimbus would be destroyed, regenerate it.\n{2}: Knight of the Holy Nimbus can't be regenerated this turn. Only any opponent may activate this ability.
diff --git a/forge-gui/res/cardsfolder/l/lands_edge.txt b/forge-gui/res/cardsfolder/l/lands_edge.txt
index 2a5ba7afaef..225fbc92859 100644
--- a/forge-gui/res/cardsfolder/l/lands_edge.txt
+++ b/forge-gui/res/cardsfolder/l/lands_edge.txt
@@ -1,7 +1,7 @@
Name:Land's Edge
ManaCost:1 R R
Types:World Enchantment
-A:AB$ DealDamage | Cost$ Discard<1/Card> | ValidTgts$ Player,Planeswalker | NumDmg$ X | References$ X | AnyPlayer$ True | AILogic$ DiscardLands | SpellDescription$ If the discarded card was a land card, CARDNAME deals 2 damage to target player or planeswalker. Any player may activate this ability.
+A:AB$ DealDamage | Cost$ Discard<1/Card> | ValidTgts$ Player,Planeswalker | NumDmg$ X | References$ X | Activator$ Player | AILogic$ DiscardLands | SpellDescription$ If the discarded card was a land card, CARDNAME deals 2 damage to target player or planeswalker. Any player may activate this ability.
SVar:X:Discarded$Valid Land/Times.2
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/lands_edge.jpg
diff --git a/forge-gui/res/cardsfolder/l/lethal_vapors.txt b/forge-gui/res/cardsfolder/l/lethal_vapors.txt
index 5cc5b9e2506..ca94f623446 100644
--- a/forge-gui/res/cardsfolder/l/lethal_vapors.txt
+++ b/forge-gui/res/cardsfolder/l/lethal_vapors.txt
@@ -3,7 +3,7 @@ ManaCost:2 B B
Types:Enchantment
T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Creature | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature enters the battlefield, destroy it.
SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredCard
-A:AB$ Destroy | Cost$ 0 | Defined$ Self | SubAbility$ DBSkipTurn | AnyPlayer$ True | AILogic$ WillSkipTurn | SpellDescription$ Destroy CARDNAME. You skip your next turn. Any player may activate this ability.
+A:AB$ Destroy | Cost$ 0 | Defined$ Self | SubAbility$ DBSkipTurn | Activator$ Player | AILogic$ WillSkipTurn | SpellDescription$ Destroy CARDNAME. You skip your next turn. Any player may activate this ability.
SVar:DBSkipTurn:DB$ SkipTurn | Defined$ You | NumTurns$ 1 | AILogic$ Always
SVar:AICurseEffect:DestroyCreature
AI:RemoveDeck:Random
diff --git a/forge-gui/res/cardsfolder/l/lightning_storm.txt b/forge-gui/res/cardsfolder/l/lightning_storm.txt
index c6f81bc3a8c..a99b213a255 100644
--- a/forge-gui/res/cardsfolder/l/lightning_storm.txt
+++ b/forge-gui/res/cardsfolder/l/lightning_storm.txt
@@ -3,7 +3,7 @@ ManaCost:1 R R
Types:Instant
A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target, where X is 3 plus the number of charge counters on it.
SVar:X:Count$CardCounters.CHARGE/Plus.3
-A:AB$ PutCounter | Cost$ Discard<1/Land> | CounterType$ CHARGE | CounterNum$ 2 | Defined$ Self | ActivationZone$ Stack | SubAbility$ DBChangeTarget | AnyPlayer$ True | SpellDescription$ Put two charge counters on CARDNAME. You may choose a new target for it. Any player may activate this ability but only if CARDNAME is on the stack.
+A:AB$ PutCounter | Cost$ Discard<1/Land> | CounterType$ CHARGE | CounterNum$ 2 | Defined$ Self | ActivationZone$ Stack | SubAbility$ DBChangeTarget | Activator$ Player | SpellDescription$ Put two charge counters on CARDNAME. You may choose a new target for it. Any player may activate this ability but only if CARDNAME is on the stack.
SVar:DBChangeTarget:DB$ ChangeTargets | Defined$ SourceFirstSpell | Optional$ True
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_storm.jpg
diff --git a/forge-gui/res/cardsfolder/m/mana_cache.txt b/forge-gui/res/cardsfolder/m/mana_cache.txt
index d3c0d6aa5cf..e39547400e4 100644
--- a/forge-gui/res/cardsfolder/m/mana_cache.txt
+++ b/forge-gui/res/cardsfolder/m/mana_cache.txt
@@ -4,7 +4,7 @@ Types:Enchantment
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigCounters | TriggerDescription$ At the beginning of each player’s end step, put a charge counter on CARDNAME for each untapped land that player controls.
SVar:TrigCounters:DB$ PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ X | References$ X
SVar:X:Count$Valid Land.ActivePlayerCtrl+untapped
-A:AB$ Mana | Cost$ SubCounter<1/CHARGE> | Produced$ C | AnyPlayer$ True | PlayerTurn$ True | ActivationPhases$ Upkeep->Main2 | SpellDescription$ Add {C}. Any player may activate this ability but only during their turn before the end step.
+A:AB$ Mana | Cost$ SubCounter<1/CHARGE> | Produced$ C | Activator$ Player | PlayerTurn$ True | ActivationPhases$ Upkeep->Main2 | SpellDescription$ Add {C}. Any player may activate this ability but only during their turn before the end step.
AI:RemoveDeck:All
#Until Agetian can sort the AI use/misuse of this card
Oracle:At the beginning of each player’s end step, put a charge counter on Mana Cache for each untapped land that player controls.\nRemove a charge counter from Mana Cache: Add {C}. Any player may activate this ability but only during their turn before the end step.
diff --git a/forge-gui/res/cardsfolder/m/mercenaries.txt b/forge-gui/res/cardsfolder/m/mercenaries.txt
index 3f0b98ecf15..42ca24b97ed 100644
--- a/forge-gui/res/cardsfolder/m/mercenaries.txt
+++ b/forge-gui/res/cardsfolder/m/mercenaries.txt
@@ -2,7 +2,7 @@ Name:Mercenaries
ManaCost:3 W
Types:Creature Human Mercenary
PT:3/3
-A:AB$ Effect | Cost$ 3 | EffectOwner$ You | AnyPlayer$ True | ReplacementEffects$ Bribe | SVars$ Bribe,ExileEffect | RememberObjects$ Self | AILogic$ Bribe | SpellDescription$ The next time CARDNAME would deal damage to you this turn, prevent that damage. Any player may activate this ability.
+A:AB$ Effect | Cost$ 3 | EffectOwner$ You | Activator$ Player | ReplacementEffects$ Bribe | SVars$ Bribe,ExileEffect | RememberObjects$ Self | AILogic$ Bribe | SpellDescription$ The next time CARDNAME would deal damage to you this turn, prevent that damage. Any player may activate this ability.
SVar:Bribe:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time EFFECTSOURCE would deal damage to you this turn, prevent that damage.
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
Oracle:{3}: The next time Mercenaries would deal damage to you this turn, prevent that damage. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/m/merseine.txt b/forge-gui/res/cardsfolder/m/merseine.txt
index c910269e334..f9b4f44444c 100644
--- a/forge-gui/res/cardsfolder/m/merseine.txt
+++ b/forge-gui/res/cardsfolder/m/merseine.txt
@@ -5,7 +5,7 @@ K:Enchant creature
A:SP$ Attach | Cost$ 2 U U | ValidTgts$ Creature | AILogic$ KeepTapped | AITgts$ Card.cmcGE2
K:etbCounter:NET:3
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | CheckSVar$ X | Description$ Enchanted creature doesn't untap during its controller's untap step if Merseine has a net counter on it.
-A:AB$ RemoveCounter | EnchantedControllerActivator$ True | Cost$ Mana<1\EnchantedCost> | CostDesc$ Pay enchanted creature's mana cost: | CounterType$ NET | CounterNum$ 1 | SpellDescription$ Remove a net counter from CARDNAME. Any player may activate this ability, but only if they control the enchanted creature.
+A:AB$ RemoveCounter | Activator$ Player.EnchantedController | Cost$ Mana<1\EnchantedCost> | CostDesc$ Pay enchanted creature's mana cost: | CounterType$ NET | CounterNum$ 1 | SpellDescription$ Remove a net counter from CARDNAME. Any player may activate this ability, but only if they control the enchanted creature.
SVar:X:Count$CardCounters.NET
SVar:Picture:http://www.wizards.com/global/images/magic/general/Merseine.jpg
Oracle:Enchant creature\nMerseine enters the battlefield with three net counters on it.\nEnchanted creature doesn't untap during its controller's untap step if Merseine has a net counter on it.\nPay enchanted creature's mana cost: Remove a net counter from Merseine. Any player may activate this ability, but only if they control the enchanted creature.
diff --git a/forge-gui/res/cardsfolder/n/nullhide_ferox.txt b/forge-gui/res/cardsfolder/n/nullhide_ferox.txt
index feb90b4637a..0e95237ab10 100644
--- a/forge-gui/res/cardsfolder/n/nullhide_ferox.txt
+++ b/forge-gui/res/cardsfolder/n/nullhide_ferox.txt
@@ -4,7 +4,7 @@ Types:Creature Beast
PT:6/6
K:Hexproof
S:Mode$ CantBeCast | ValidCard$ Card.nonCreature | Caster$ You | Description$ You can't cast noncreature spells.
-A:AB$ Animate | Cost$ 2 | Defined$ Self | RemoveAllAbilities$ True | AnyPlayer$ True | AILogic$ Curse | SpellDescription$ CARDNAME loses all abilities until end of turn. Any player may activate this ability.
+A:AB$ Animate | Cost$ 2 | Defined$ Self | RemoveAllAbilities$ True | Activator$ Player | AILogic$ Curse | SpellDescription$ CARDNAME loses all abilities until end of turn. Any player may activate this ability.
R:Event$ Discard | ActiveZones$ Hand | ValidCard$ Card.Self | ValidSource$ Card.OppCtrl | ReplaceWith$ SurpriseETB | DiscardFromEffect$ True | Description$ If a spell or ability an opponent controls causes you to discard CARDNAME, put it onto the battlefield instead of putting it into your graveyard.
SVar:SurpriseETB:DB$ ChangeZone | DefinedPlayer$ ReplacedPlayer | Defined$ ReplacedCard | Origin$ Hand | Destination$ Battlefield
SVar:DiscardMeByOpp:2
diff --git a/forge-gui/res/cardsfolder/o/oonas_prowler.txt b/forge-gui/res/cardsfolder/o/oonas_prowler.txt
index 8f8f018d958..0144350c0d0 100644
--- a/forge-gui/res/cardsfolder/o/oonas_prowler.txt
+++ b/forge-gui/res/cardsfolder/o/oonas_prowler.txt
@@ -3,6 +3,6 @@ ManaCost:1 B
Types:Creature Faerie Rogue
PT:3/1
K:Flying
-A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | NumAtt$ -2 | AnyPlayer$ True | SpellDescription$ Oona's Prowler gets -2/-0 until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | NumAtt$ -2 | Activator$ Player | SpellDescription$ Oona's Prowler gets -2/-0 until end of turn. Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/oonas_prowler.jpg
Oracle:Flying\nDiscard a card: Oona's Prowler gets -2/-0 until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/p/personal_incarnation.txt b/forge-gui/res/cardsfolder/p/personal_incarnation.txt
index b14d54f7de9..a2d3ebbc1a5 100644
--- a/forge-gui/res/cardsfolder/p/personal_incarnation.txt
+++ b/forge-gui/res/cardsfolder/p/personal_incarnation.txt
@@ -2,7 +2,7 @@ Name:Personal Incarnation
ManaCost:3 W W W
Types:Creature Avatar Incarnation
PT:6/6
-A:AB$ Effect | Cost$ 0 | Name$ Personal Incarnation Redirection | ReplacementEffects$ RedirectDamage | SVars$ RedirectDmg | References$ RedirectDamage,RedirectDmg | Duration$ HostLeavesOrEOT | EffectOwner$ CardOwner | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to its owner instead. Only CARDNAME's owner may activate this ability.
+A:AB$ Effect | Cost$ 0 | Activator$ Player.Owner | Name$ Personal Incarnation Redirection | ReplacementEffects$ RedirectDamage | SVars$ RedirectDmg | References$ RedirectDamage,RedirectDmg | Duration$ HostLeavesOrEOT | EffectOwner$ CardOwner | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to its owner instead. Only CARDNAME's owner may activate this ability.
SVar:RedirectDamage:Event$ DamageDone | ValidTarget$ Creature.EffectSource | ReplaceWith$ RedirectDmg | DamageTarget$ You | Description$ The next 1 damage that would be dealt to EFFECTSOURCE this turn is dealt to its owner instead. Only EFFECTSOURCE's owner may activate this ability.
SVar:RedirectDmg:DB$ ReplaceSplitDamage | DamageTarget$ You
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigLoseLife | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, its owner loses half their life, rounded up.
diff --git a/forge-gui/res/cardsfolder/q/quicksilver_wall.txt b/forge-gui/res/cardsfolder/q/quicksilver_wall.txt
index d972724bebb..a2205ec964e 100644
--- a/forge-gui/res/cardsfolder/q/quicksilver_wall.txt
+++ b/forge-gui/res/cardsfolder/q/quicksilver_wall.txt
@@ -2,7 +2,7 @@ Name:Quicksilver Wall
ManaCost:2 U
Types:Creature Wall
PT:1/6
-A:AB$ ChangeZone | Cost$ 4 | Origin$ Battlefield | Destination$ Hand | AnyPlayer$ True | SpellDescription$ Return CARDNAME to its owner's hand. Any player may activate this ability.
+A:AB$ ChangeZone | Cost$ 4 | Origin$ Battlefield | Destination$ Hand | Activator$ Player | SpellDescription$ Return CARDNAME to its owner's hand. Any player may activate this ability.
K:Defender
SVar:Picture:http://www.wizards.com/global/images/magic/general/quicksilver_wall.jpg
Oracle:Defender (This creature can't attack.)\n{4}: Return Quicksilver Wall to its owner's hand. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/r/ribbon_snake.txt b/forge-gui/res/cardsfolder/r/ribbon_snake.txt
index 01413745499..553e2b183d4 100644
--- a/forge-gui/res/cardsfolder/r/ribbon_snake.txt
+++ b/forge-gui/res/cardsfolder/r/ribbon_snake.txt
@@ -3,6 +3,6 @@ ManaCost:1 U U
Types:Creature Snake
PT:2/3
K:Flying
-A:AB$ Debuff | Cost$ 2 | Defined$ Self | Keywords$ Flying | AnyPlayer$ True | SpellDescription$ CARDNAME loses flying until end of turn. Any player may activate this ability.
+A:AB$ Debuff | Cost$ 2 | Defined$ Self | Keywords$ Flying | Activator$ Player | SpellDescription$ CARDNAME loses flying until end of turn. Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/ribbon_snake.jpg
Oracle:Flying\n{2}: Ribbon Snake loses flying until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/s/sailmonger.txt b/forge-gui/res/cardsfolder/s/sailmonger.txt
index 8f53c2ee014..78cc9eef207 100644
--- a/forge-gui/res/cardsfolder/s/sailmonger.txt
+++ b/forge-gui/res/cardsfolder/s/sailmonger.txt
@@ -2,6 +2,6 @@ Name:Sailmonger
ManaCost:3 U
Types:Creature Human Monger
PT:3/3
-A:AB$ Pump | Cost$ 2 | AnyPlayer$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying | SpellDescription$ Target creature gains flying until end of turn. Any player may activate this ability.
+A:AB$ Pump | Cost$ 2 | Activator$ Player | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying | SpellDescription$ Target creature gains flying until end of turn. Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/sailmonger.jpg
Oracle:{2}: Target creature gains flying until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/s/samite_sanctuary.txt b/forge-gui/res/cardsfolder/s/samite_sanctuary.txt
index 6125128bdf0..6e5b63ef2e9 100644
--- a/forge-gui/res/cardsfolder/s/samite_sanctuary.txt
+++ b/forge-gui/res/cardsfolder/s/samite_sanctuary.txt
@@ -1,7 +1,7 @@
Name:Samite Sanctuary
ManaCost:2 W
Types:Enchantment
-A:AB$ PreventDamage | Cost$ 2 | ValidTgts$ Creature | Amount$ 1 | TgtPrompt$ Select target creature | AnyPlayer$ True | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature this turn. Any player may activate this ability.
+A:AB$ PreventDamage | Cost$ 2 | ValidTgts$ Creature | Amount$ 1 | TgtPrompt$ Select target creature | Activator$ Player | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature this turn. Any player may activate this ability.
AI:RemoveDeck:Random
SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/samite_sanctuary.jpg
diff --git a/forge-gui/res/cardsfolder/s/saproling_cluster.txt b/forge-gui/res/cardsfolder/s/saproling_cluster.txt
index 921cb740e05..354df1dbc41 100644
--- a/forge-gui/res/cardsfolder/s/saproling_cluster.txt
+++ b/forge-gui/res/cardsfolder/s/saproling_cluster.txt
@@ -1,7 +1,7 @@
Name:Saproling Cluster
ManaCost:1 G
Types:Enchantment
-A:AB$ Token | Cost$ 1 Discard<1/Card> | TokenAmount$ 1 | TokenScript$ g_1_1_saproling | TokenOwner$ You | LegacyImage$ g 1 1 saproling nms | AnyPlayer$ True | SpellDescription$ Create a 1/1 green Saproling creature token. Any player may activate this ability.
+A:AB$ Token | Cost$ 1 Discard<1/Card> | TokenAmount$ 1 | TokenScript$ g_1_1_saproling | TokenOwner$ You | LegacyImage$ g 1 1 saproling nms | Activator$ Player | SpellDescription$ Create a 1/1 green Saproling creature token. Any player may activate this ability.
AI:RemoveDeck:All
SVar:NonStackingEffect:True
DeckHas:Ability$Discard & Ability$Token
diff --git a/forge-gui/res/cardsfolder/s/scandalmonger.txt b/forge-gui/res/cardsfolder/s/scandalmonger.txt
index 30b7622f466..5f49615e7a4 100644
--- a/forge-gui/res/cardsfolder/s/scandalmonger.txt
+++ b/forge-gui/res/cardsfolder/s/scandalmonger.txt
@@ -2,7 +2,7 @@ Name:Scandalmonger
ManaCost:3 B
Types:Creature Boar Monger
PT:3/3
-A:AB$ Discard | Cost$ 2 | ValidTgts$ Player | NumCards$ 1 | Mode$ TgtChoose | SorcerySpeed$ True | AnyPlayer$ True | IsCurse$ True | SpellDescription$ Target player discards a card. Any player may activate this ability but only any time they could cast a sorcery.
+A:AB$ Discard | Cost$ 2 | ValidTgts$ Player | NumCards$ 1 | Mode$ TgtChoose | SorcerySpeed$ True | Activator$ Player | IsCurse$ True | SpellDescription$ Target player discards a card. Any player may activate this ability but only any time they could cast a sorcery.
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/scandalmonger.jpg
Oracle:{2}: Target player discards a card. Any player may activate this ability but only any time they could cast a sorcery.
diff --git a/forge-gui/res/cardsfolder/s/soul_ransom.txt b/forge-gui/res/cardsfolder/s/soul_ransom.txt
index 691659ef7ad..cc13f58cb6c 100644
--- a/forge-gui/res/cardsfolder/s/soul_ransom.txt
+++ b/forge-gui/res/cardsfolder/s/soul_ransom.txt
@@ -4,7 +4,7 @@ Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ 2 U B | ValidTgts$ Creature | AILogic$ GainControl
S:Mode$ Continuous | Affected$ Card.EnchantedBy | GainControl$ You | Description$ You control enchanted creature.
-A:AB$ Sacrifice | Cost$ Discard<2/Card> | AnyOpponent$ True | SacValid$ Self | SubAbility$ DBDraw | SpellDescription$ CARDNAME's controller sacrifices it, then draws two cards. Only any opponent may activate this ability.
+A:AB$ Sacrifice | Cost$ Discard<2/Card> | Activator$ Player.Opponent | SacValid$ Self | SubAbility$ DBDraw | SpellDescription$ CARDNAME's controller sacrifices it, then draws two cards. Only any opponent may activate this ability.
SVar:DBDraw:DB$ Draw | NumCards$ 2 | Defined$ SourceController
SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_ransom.jpg
Oracle:Enchant creature\nYou control enchanted creature.\nDiscard two cards: Soul Ransom's controller sacrifices it, then draws two cards. Only any opponent may activate this ability.
diff --git a/forge-gui/res/cardsfolder/s/squallmonger.txt b/forge-gui/res/cardsfolder/s/squallmonger.txt
index 844190c5d1c..f9ef61d0650 100644
--- a/forge-gui/res/cardsfolder/s/squallmonger.txt
+++ b/forge-gui/res/cardsfolder/s/squallmonger.txt
@@ -2,7 +2,7 @@ Name:Squallmonger
ManaCost:3 G
Types:Creature Monger
PT:3/3
-A:AB$ DamageAll | Cost$ 2 | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Player | AnyPlayer$ True | ValidDescription$ each creature with flying and and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. Any player may activate this ability.
+A:AB$ DamageAll | Cost$ 2 | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Player | Activator$ Player | ValidDescription$ each creature with flying and and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. Any player may activate this ability.
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/squallmonger.jpg
Oracle:{2}: Squallmonger deals 1 damage to each creature with flying and each player. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/t/task_mage_assembly.txt b/forge-gui/res/cardsfolder/t/task_mage_assembly.txt
index e5fff1a8834..5081772710b 100644
--- a/forge-gui/res/cardsfolder/t/task_mage_assembly.txt
+++ b/forge-gui/res/cardsfolder/t/task_mage_assembly.txt
@@ -3,7 +3,7 @@ ManaCost:2 R
Types:Enchantment
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Creature | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When there are no creatures on the battlefield, sacrifice CARDNAME.
SVar:TrigSac:DB$Sacrifice | Defined$ Self
-A:AB$ DealDamage | Cost$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | AnyPlayer$ True | SorcerySpeed$ True | SpellDescription$ CARDNAME deals 1 damage to target creature. Any player may activate this ability but only any time they could cast a sorcery.
+A:AB$ DealDamage | Cost$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | Activator$ Player | SorcerySpeed$ True | SpellDescription$ CARDNAME deals 1 damage to target creature. Any player may activate this ability but only any time they could cast a sorcery.
SVar:NeedsToPlay:Creature.YouCtrl
SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/task_mage_assembly.jpg
diff --git a/forge-gui/res/cardsfolder/t/tidal_control.txt b/forge-gui/res/cardsfolder/t/tidal_control.txt
index 0d93f51c53f..2fd33651abb 100644
--- a/forge-gui/res/cardsfolder/t/tidal_control.txt
+++ b/forge-gui/res/cardsfolder/t/tidal_control.txt
@@ -2,8 +2,8 @@ Name:Tidal Control
ManaCost:1 U U
Types:Enchantment
K:Cumulative upkeep:2
-A:AB$ Counter | Cost$ 2 | TargetType$ Spell | TgtPrompt$ Select target red or green spell | ValidTgts$ Card.Green,Card.Red | AnyPlayer$ True | SpellDescription$ Counter target red or green spell. Any player may activate this ability.
-A:AB$ Counter | Cost$ PayLife<2> | TargetType$ Spell | TgtPrompt$ Select target red of green spell | ValidTgts$ Card.Green,Card.Red | AnyPlayer$ True | SpellDescription$ Counter target red or green spell. Any player may activate this ability.
+A:AB$ Counter | Cost$ 2 | TargetType$ Spell | TgtPrompt$ Select target red or green spell | ValidTgts$ Card.Green,Card.Red | Activator$ Player | SpellDescription$ Counter target red or green spell. Any player may activate this ability.
+A:AB$ Counter | Cost$ PayLife<2> | TargetType$ Spell | TgtPrompt$ Select target red of green spell | ValidTgts$ Card.Green,Card.Red | Activator$ Player | SpellDescription$ Counter target red or green spell. Any player may activate this ability.
AI:RemoveDeck:All
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/tidal_control.jpg
diff --git a/forge-gui/res/cardsfolder/v/vintara_elephant.txt b/forge-gui/res/cardsfolder/v/vintara_elephant.txt
index 6492a1afdba..91e4834bd08 100644
--- a/forge-gui/res/cardsfolder/v/vintara_elephant.txt
+++ b/forge-gui/res/cardsfolder/v/vintara_elephant.txt
@@ -3,6 +3,6 @@ ManaCost:4 G
Types:Creature Elephant
PT:4/3
K:Trample
-A:AB$ Debuff | Cost$ 3 | Defined$ Self | Keywords$ Trample | AnyPlayer$ True | SpellDescription$ CARDNAME loses trample until end of turn. Any player may activate this ability.
+A:AB$ Debuff | Cost$ 3 | Defined$ Self | Keywords$ Trample | Activator$ Player | SpellDescription$ CARDNAME loses trample until end of turn. Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/vintara_elephant.jpg
Oracle:Trample\n{3}: Vintara Elephant loses trample until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/v/volraths_dungeon.txt b/forge-gui/res/cardsfolder/v/volraths_dungeon.txt
index e7a2b30f6a8..63c5c801ec3 100644
--- a/forge-gui/res/cardsfolder/v/volraths_dungeon.txt
+++ b/forge-gui/res/cardsfolder/v/volraths_dungeon.txt
@@ -1,7 +1,7 @@
Name:Volrath's Dungeon
ManaCost:2 B B
Types:Enchantment
-A:AB$ Destroy | Cost$ PayLife<5> | Defined$ Self | PlayerTurn$ True | AnyPlayer$ True | SpellDescription$ Destroy CARDNAME. Any player may activate this ability but only during their turn.
+A:AB$ Destroy | Cost$ PayLife<5> | Defined$ Self | PlayerTurn$ True | Activator$ Player | SpellDescription$ Destroy CARDNAME. Any player may activate this ability but only during their turn.
A:AB$ ChangeZone | Cost$ Discard<1/Card> | ValidTgts$ Player | TgtPrompt$ Select target player | Origin$ Hand | Destination$ Library | ChangeType$ Card | ChangeNum$ 1 | Chooser$ Targeted | LibraryPosition$ 0 | SorcerySpeed$ True | SpellDescription$ Target player puts a card from their hand on top of their library. Activate this ability only any time you could cast a sorcery.
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/volraths_dungeon.jpg
diff --git a/forge-gui/res/cardsfolder/w/wall_of_vipers.txt b/forge-gui/res/cardsfolder/w/wall_of_vipers.txt
index 12052c48d26..9f213ea3319 100644
--- a/forge-gui/res/cardsfolder/w/wall_of_vipers.txt
+++ b/forge-gui/res/cardsfolder/w/wall_of_vipers.txt
@@ -3,7 +3,7 @@ ManaCost:2 B
Types:Creature Snake Wall
PT:2/4
K:Defender
-A:AB$ Destroy | Cost$ 3 | Defined$ Self | AnyPlayer$ True | SubAbility$ SnakeBite | SpellDescription$ Destroy CARDNAME and target creature it's blocking. Any player may activate this ability.
+A:AB$ Destroy | Cost$ 3 | Defined$ Self | Activator$ Player | SubAbility$ SnakeBite | SpellDescription$ Destroy CARDNAME and target creature it's blocking. Any player may activate this ability.
SVar:SnakeBite:DB$ Destroy | ValidTgts$ Creature.blockedBySource
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/wall_of_vipers.jpg
diff --git a/forge-gui/res/cardsfolder/w/warmonger.txt b/forge-gui/res/cardsfolder/w/warmonger.txt
index f98167c64e8..0195086b0da 100644
--- a/forge-gui/res/cardsfolder/w/warmonger.txt
+++ b/forge-gui/res/cardsfolder/w/warmonger.txt
@@ -2,7 +2,7 @@ Name:Warmonger
ManaCost:3 R
Types:Creature Minotaur Monger
PT:3/3
-A:AB$ DamageAll | Cost$ 2 | NumDmg$ 1 | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | AnyPlayer$ True | ValidDescription$ each creature without flying and and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature without flying and each player. Any player may activate this ability.
+A:AB$ DamageAll | Cost$ 2 | NumDmg$ 1 | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | Activator$ Player | ValidDescription$ each creature without flying and and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature without flying and each player. Any player may activate this ability.
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/warmonger.jpg
Oracle:{2}: Warmonger deals 1 damage to each creature without flying and each player. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/w/well_of_knowledge.txt b/forge-gui/res/cardsfolder/w/well_of_knowledge.txt
index 673167e0bc2..f360cdcbe42 100644
--- a/forge-gui/res/cardsfolder/w/well_of_knowledge.txt
+++ b/forge-gui/res/cardsfolder/w/well_of_knowledge.txt
@@ -1,7 +1,7 @@
Name:Well of Knowledge
ManaCost:3
Types:Artifact
-A:AB$ Draw | Cost$ 2 | NumCards$ 1 | AnyPlayer$ True | PlayerTurn$ True | ActivationPhases$ Draw | SpellDescription$ Draw a card. Any player may activate this ability but only during their draw step.
+A:AB$ Draw | Cost$ 2 | NumCards$ 1 | Activator$ Player | PlayerTurn$ True | ActivationPhases$ Draw | SpellDescription$ Draw a card. Any player may activate this ability but only during their draw step.
SVar:Picture:http://www.wizards.com/global/images/magic/general/well_of_knowledge.jpg
SVar:NonStackingEffect:True
Oracle:{2}: Draw a card. Any player may activate this ability but only during their draw step.
diff --git a/forge-gui/res/cardsfolder/w/wishmonger.txt b/forge-gui/res/cardsfolder/w/wishmonger.txt
index eb8d808e114..86f8471b666 100644
--- a/forge-gui/res/cardsfolder/w/wishmonger.txt
+++ b/forge-gui/res/cardsfolder/w/wishmonger.txt
@@ -2,7 +2,7 @@ Name:Wishmonger
ManaCost:3 W
Types:Creature Unicorn Monger
PT:3/3
-A:AB$ Protection | Cost$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | Gains$ Choice | Choser$ Controller | AnyPlayer$ True | Choices$ AnyColor | SpellDescription$ Target creature gains protection from the color of its controller's choice until end of turn. Any player may activate this ability.
+A:AB$ Protection | Cost$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | Gains$ Choice | Choser$ Controller | Activator$ Player | Choices$ AnyColor | SpellDescription$ Target creature gains protection from the color of its controller's choice until end of turn. Any player may activate this ability.
AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/wishmonger.jpg
Oracle:{2}: Target creature gains protection from the color of its controller's choice until end of turn. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt b/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt
index d8a1a9c936a..0aa64a90128 100644
--- a/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt
+++ b/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt
@@ -8,6 +8,6 @@ SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | Ch
SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | GainControl$ True | NewController$ ChosenPlayer | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenPlayer$ True
S:Mode$ CantAttack | ValidCard$ Card.Self | Target$ Player.CardOwner,Planeswalker.ControlledBy Player.CardOwner | Description$ CARDNAME can't attack its owner or planeswalkers its owner controls.
-A:AB$ Draw | Cost$ 3 | NumCards$ 1 | AnyPlayer$ True | SubAbility$ DBLoseLife | SpellDescription$ Xantcha's controller loses 2 life and you draw a card. Any player may activate this ability.
+A:AB$ Draw | Cost$ 3 | NumCards$ 1 | Activator$ Player | SubAbility$ DBLoseLife | SpellDescription$ Xantcha's controller loses 2 life and you draw a card. Any player may activate this ability.
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 2 | Defined$ CardController
Oracle:Xantcha, Sleeper Agent enters the battlefield under the control of an opponent of your choice.\nXantcha attacks each combat if able and can't attack its owner or planeswalkers its owner controls.\n{3}: Xantcha's controller loses 2 life and you draw a card. Any player may activate this ability.
diff --git a/forge-gui/res/cardsfolder/z/zerapa_minotaur.txt b/forge-gui/res/cardsfolder/z/zerapa_minotaur.txt
index f70c899d163..0693b34536f 100644
--- a/forge-gui/res/cardsfolder/z/zerapa_minotaur.txt
+++ b/forge-gui/res/cardsfolder/z/zerapa_minotaur.txt
@@ -3,6 +3,6 @@ ManaCost:2 R R
Types:Creature Minotaur
PT:3/3
K:First Strike
-A:AB$ Debuff | Cost$ 2 | Defined$ Self | Keywords$ First Strike | AnyPlayer$ True | SpellDescription$ CARDNAME loses first strike until end of turn. Any player may activate this ability.
+A:AB$ Debuff | Cost$ 2 | Defined$ Self | Keywords$ First Strike | Activator$ Player | SpellDescription$ CARDNAME loses first strike until end of turn. Any player may activate this ability.
SVar:Picture:http://www.wizards.com/global/images/magic/general/zerapa_minotaur.jpg
Oracle:First strike\n{2}: Zerapa Minotaur loses first strike until end of turn. Any player may activate this ability.