diff --git a/.gitattributes b/.gitattributes
index b71093373c9..0fa6fcf1cf5 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -405,6 +405,7 @@ res/cardsfolder/a/arcbound_crusher.txt svneol=native#text/plain
res/cardsfolder/a/arcbound_hybrid.txt svneol=native#text/plain
res/cardsfolder/a/arcbound_lancer.txt svneol=native#text/plain
res/cardsfolder/a/arcbound_overseer.txt svneol=native#text/plain
+res/cardsfolder/a/arcbound_overseer_avatar.txt -text
res/cardsfolder/a/arcbound_ravager.txt svneol=native#text/plain
res/cardsfolder/a/arcbound_reclaimer.txt svneol=native#text/plain
res/cardsfolder/a/arcbound_slith.txt svneol=native#text/plain
@@ -512,8 +513,10 @@ res/cardsfolder/a/ashenmoor_liege.txt svneol=native#text/plain
res/cardsfolder/a/ashes_of_the_fallen.txt svneol=native#text/plain
res/cardsfolder/a/ashes_to_ashes.txt svneol=native#text/plain
res/cardsfolder/a/ashling_the_extinguisher.txt -text
+res/cardsfolder/a/ashling_the_pilgrim_avatar.txt -text
res/cardsfolder/a/ashlings_prerogative.txt -text
res/cardsfolder/a/ashmouth_hound.txt -text
+res/cardsfolder/a/ashnod.txt -text
res/cardsfolder/a/ashnods_altar.txt svneol=native#text/plain
res/cardsfolder/a/ashnods_battle_gear.txt svneol=native#text/plain
res/cardsfolder/a/ashnods_cylix.txt -text
@@ -746,6 +749,7 @@ res/cardsfolder/b/barren_glory.txt svneol=native#text/plain
res/cardsfolder/b/barren_moor.txt svneol=native#text/plain
res/cardsfolder/b/barrenton_cragtreads.txt svneol=native#text/plain
res/cardsfolder/b/barrenton_medic.txt svneol=native#text/plain
+res/cardsfolder/b/barrin.txt -text
res/cardsfolder/b/barrin_master_wizard.txt svneol=native#text/plain
res/cardsfolder/b/barrins_codex.txt svneol=native#text/plain
res/cardsfolder/b/barrins_unmaking.txt -text
@@ -878,6 +882,7 @@ res/cardsfolder/b/biorhythm.txt svneol=native#text/plain
res/cardsfolder/b/birchlore_rangers.txt svneol=native#text/plain
res/cardsfolder/b/bird_maiden.txt svneol=native#text/plain
res/cardsfolder/b/birds_of_paradise.txt svneol=native#text/plain
+res/cardsfolder/b/birds_of_paradise_avatar.txt -text
res/cardsfolder/b/birthing_pod.txt -text
res/cardsfolder/b/biting_tether.txt svneol=native#text/plain
res/cardsfolder/b/bitter_ordeal.txt svneol=native#text/plain
@@ -1635,6 +1640,7 @@ res/cardsfolder/c/chrome_steed.txt svneol=native#text/plain
res/cardsfolder/c/chromescale_drake.txt svneol=native#text/plain
res/cardsfolder/c/chromium.txt svneol=native#text/plain
res/cardsfolder/c/chronatog.txt svneol=native#text/plain
+res/cardsfolder/c/chronatog_avatar.txt -text
res/cardsfolder/c/chronatog_totem.txt svneol=native#text/plain
res/cardsfolder/c/chronic_flooding.txt -text
res/cardsfolder/c/chronomantic_escape.txt -text
@@ -1999,6 +2005,7 @@ res/cardsfolder/c/crossbow_infantry.txt svneol=native#text/plain
res/cardsfolder/c/crosstown_courier.txt -text
res/cardsfolder/c/crossway_vampire.txt -text
res/cardsfolder/c/crosswinds.txt svneol=native#text/plain
+res/cardsfolder/c/crovax.txt -text
res/cardsfolder/c/crovax_ascendant_hero.txt svneol=native#text/plain
res/cardsfolder/c/crovax_the_cursed.txt -text svneol=unset#text/plain
res/cardsfolder/c/crowd_favorites.txt svneol=native#text/plain
@@ -2203,6 +2210,7 @@ res/cardsfolder/d/daru_warchief.txt svneol=native#text/plain
res/cardsfolder/d/daunting_defender.txt svneol=native#text/plain
res/cardsfolder/d/dauntless_dourbark.txt svneol=native#text/plain
res/cardsfolder/d/dauntless_escort.txt svneol=native#text/plain
+res/cardsfolder/d/dauntless_escort_avatar.txt -text
res/cardsfolder/d/dauthi_cutthroat.txt svneol=native#text/plain
res/cardsfolder/d/dauthi_embrace.txt svneol=native#text/plain
res/cardsfolder/d/dauthi_ghoul.txt svneol=native#text/plain
@@ -2456,6 +2464,7 @@ res/cardsfolder/d/diabolic_servitude.txt -text svneol=unset#text/plain
res/cardsfolder/d/diabolic_tutor.txt svneol=native#text/plain
res/cardsfolder/d/diabolic_vision.txt svneol=native#text/plain
res/cardsfolder/d/diamond_faerie.txt svneol=native#text/plain
+res/cardsfolder/d/diamond_faerie_avatar.txt -text
res/cardsfolder/d/diamond_kaleidoscope.txt svneol=native#text/plain
res/cardsfolder/d/diamond_valley.txt svneol=native#text/plain
res/cardsfolder/d/didgeridoo.txt svneol=native#text/plain
@@ -2852,7 +2861,9 @@ res/cardsfolder/e/eiganjo_free_riders.txt svneol=native#text/plain
res/cardsfolder/e/eightfold_maze.txt svneol=native#text/plain
res/cardsfolder/e/ekundu_griffin.txt svneol=native#text/plain
res/cardsfolder/e/el_hajjaj.txt svneol=native#text/plain
+res/cardsfolder/e/eladamri.txt -text
res/cardsfolder/e/eladamri_lord_of_leaves.txt svneol=native#text/plain
+res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt -text
res/cardsfolder/e/eladamris_call.txt svneol=native#text/plain
res/cardsfolder/e/eladamris_vineyard.txt svneol=native#text/plain
res/cardsfolder/e/eland_umbra.txt svneol=native#text/plain
@@ -13089,8 +13100,6 @@ src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletBuild.java -text
src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletContests.java -text
src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletLoad.java -text
src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletQuick.java -text
-src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java -text
-src/main/java/forge/gui/home/multiplayer/VSubmenuArchenemy.java -text
src/main/java/forge/gui/home/package-info.java svneol=native#text/plain
src/main/java/forge/gui/home/quest/CSubmenuChallenges.java -text
src/main/java/forge/gui/home/quest/CSubmenuDuels.java -text
@@ -13123,6 +13132,10 @@ src/main/java/forge/gui/home/settings/VSubmenuAvatars.java -text
src/main/java/forge/gui/home/settings/VSubmenuDownloaders.java -text
src/main/java/forge/gui/home/settings/VSubmenuPreferences.java -text
src/main/java/forge/gui/home/settings/package-info.java svneol=native#text/plain
+src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java -text
+src/main/java/forge/gui/home/variant/CSubmenuVanguard.java -text
+src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java -text
+src/main/java/forge/gui/home/variant/VSubmenuVanguard.java -text
src/main/java/forge/gui/match/CMatchUI.java -text
src/main/java/forge/gui/match/ControlWinLose.java -text
src/main/java/forge/gui/match/GauntletWinLose.java -text
diff --git a/res/cardsfolder/a/al_abaras_carpet.txt b/res/cardsfolder/a/al_abaras_carpet.txt
index af1cecb2132..af8f3a28f12 100644
--- a/res/cardsfolder/a/al_abaras_carpet.txt
+++ b/res/cardsfolder/a/al_abaras_carpet.txt
@@ -3,7 +3,7 @@ ManaCost:5
Types:Artifact
Text:no text
A:AB$ Effect | Cost$ 5 T | Name$ Al-abara's Carpet Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
-SVar:STPrevent:Mode$ PreventDamage | Target$ You | Source$ Creature.attacking+withoutFlying | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You | Source$ Creature.attacking+withoutFlying | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/al_abaras_carpet.jpg
diff --git a/res/cardsfolder/a/alchemists_refuge.txt b/res/cardsfolder/a/alchemists_refuge.txt
index 1bbeb2d7659..0b51a824329 100644
--- a/res/cardsfolder/a/alchemists_refuge.txt
+++ b/res/cardsfolder/a/alchemists_refuge.txt
@@ -4,7 +4,7 @@ Types:Land
Text:no text
A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add 1 to your mana pool.
A:AB$ Effect | Cost$ U G T | Name$ Refuge Effect | StaticAbilities$ QuickSpell | SpellDescription$ Until end of turn, you may cast nonland cards as though they had flash.
-SVar:QuickSpell:Mode$ Continuous | Affected$ You | AddKeyword$ You may cast nonland cards as though they had flash. | Description$ You may cast nonland cards as though they had flash.
+SVar:QuickSpell:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You may cast nonland cards as though they had flash. | Description$ You may cast nonland cards as though they had flash.
SVar:PlayMain1:TRUE
SVar:RemRandomDeck:True
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/a/angels_grace.txt b/res/cardsfolder/a/angels_grace.txt
index b13f0e49c3f..8879ae3a270 100644
--- a/res/cardsfolder/a/angels_grace.txt
+++ b/res/cardsfolder/a/angels_grace.txt
@@ -4,8 +4,8 @@ Types:Instant
Text:no text
K:Split second
A:SP$ Effect | Cost$ W | Name$ Angel's Grace Effect | Keywords$ AliFromCairo | StaticAbilities$ STCantLose,STOppsCantWin | AILogic$ Fog | SpellDescription$ You can't lose the game this turn and your opponents can't win the game this turn. Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead.
-SVar:STCantLose:Mode$ Continuous | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game.
-SVar:STOppsCantWin:Mode$ Continuous | Affected$ You | AddKeyword$ Your opponents can't win the game. | Description$ Your opponents can't win the game.
+SVar:STCantLose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game.
+SVar:STOppsCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ Your opponents can't win the game. | Description$ Your opponents can't win the game.
SVar:AliFromCairo:Damage that would reduce your life total to less than 1 reduces it to 1 instead.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/angels_grace.jpg
diff --git a/res/cardsfolder/a/aquitects_will.txt b/res/cardsfolder/a/aquitects_will.txt
index ba3dd0b8a9d..3375c47903b 100644
--- a/res/cardsfolder/a/aquitects_will.txt
+++ b/res/cardsfolder/a/aquitects_will.txt
@@ -5,7 +5,7 @@ Text:no text
A:SP$ Effect | Cost$ U | Name$ Flood Effect | StaticAbilities$ STFlood | Unique$ True | Duration$ Permanent | SubAbility$ TrigPutCounter | SpellDescription$ Put a flood counter on target land. That land is an island in addition to its other types for as long as it has a flood counter on it. If you control a Merfolk, draw a card.
SVar:TrigPutCounter:DB$ PutCounter | Cost$ 0 | ValidTgts$ Land | CounterType$ FLOOD | CounterNum$ 1 | TgtPrompt$ Select target land | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | Cost$ 0 | NumCards$ 1 | ConditionPresent$ Merfolk.YouCtrl | ConditionCompare$ GE1 | ConditionDescription$ If you control a Merfolk,
-SVar:STFlood:Mode$ Continuous | Affected$ Land.counters_GE1_FLOOD | AddType$ Island
+SVar:STFlood:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land.counters_GE1_FLOOD | AddType$ Island
SVar:RemRandomDeck:True
SVar:RemAIDeck:True
SVar:Rarity:Common
diff --git a/res/cardsfolder/a/arcbound_overseer_avatar.txt b/res/cardsfolder/a/arcbound_overseer_avatar.txt
new file mode 100644
index 00000000000..bc90fd46b3a
--- /dev/null
+++ b/res/cardsfolder/a/arcbound_overseer_avatar.txt
@@ -0,0 +1,12 @@
+Name:Arcbound Overseer Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+0/+3
+T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ BuildCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a +1/+1 counter on target creature you control.
+SVar:BuildCounter:AB$ PutCounter | Cost$ 0 | CounterType$ P1P1 | CounterNum$ 1 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control
+T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ ChargeCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a charge counter on target permanent you control.
+SVar:ChargeCounter:AB$ PutCounter | Cost$ 0 | CounterType$ CHARGE | CounterNum$ 1 | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent you control
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182296&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/a/archangel_of_strife.txt b/res/cardsfolder/a/archangel_of_strife.txt
index 5dd76df57ea..d72fd5c1d19 100644
--- a/res/cardsfolder/a/archangel_of_strife.txt
+++ b/res/cardsfolder/a/archangel_of_strife.txt
@@ -11,10 +11,10 @@ SVar:WarChoice:DB$ Effect | Name$ Archangel War Effect | ChoiceDescription$ War
SVar:PeaceChoice:DB$ Effect | Name$ Archangel Peace Effect | ChoiceDescription$ Peace | Duration$ UntilHostLeavesPlay | RememberEffect$ True
SVar:Attacking:DB$ Effect | Name$ Archangel War Effect | ChoiceDescription$ War | EffectOwner$ Opponent | Duration$ UntilHostLeavesPlay | RememberEffect$ True
SVar:Defensive:DB$ Effect | Name$ Archangel Peace Effect | ChoiceDescription$ Peace | EffectOwner$ Opponent | Duration$ UntilHostLeavesPlay | RememberEffect$ True
-S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 3 | CheckSVar$ WarYou | SVarCompare$ GE1 | References$ WarYou
-S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddToughness$ 3 | CheckSVar$ PeaceYou | SVarCompare$ GE1 | References$ PeaceYou
-S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | AddPower$ 3 | CheckSVar$ WarOpp | SVarCompare$ GE1 | References$ WarOpp
-S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | AddToughness$ 3 | CheckSVar$ PeaceOpp | SVarCompare$ GE1 | References$ PeaceOpp
+S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddPower$ 3 | CheckSVar$ WarYou | SVarCompare$ GE1 | References$ WarYou
+S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddToughness$ 3 | CheckSVar$ PeaceYou | SVarCompare$ GE1 | References$ PeaceYou
+S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouDontCtrl | AddPower$ 3 | CheckSVar$ WarOpp | SVarCompare$ GE1 | References$ WarOpp
+S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouDontCtrl | AddToughness$ 3 | CheckSVar$ PeaceOpp | SVarCompare$ GE1 | References$ PeaceOpp
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Self | Execute$ DBCleanup | Static$ True
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:WarYou:Remembered$Valid Card.namedArchangel War Effect+YouCtrl
diff --git a/res/cardsfolder/a/ashling_the_pilgrim_avatar.txt b/res/cardsfolder/a/ashling_the_pilgrim_avatar.txt
new file mode 100644
index 00000000000..a7daaf8296c
--- /dev/null
+++ b/res/cardsfolder/a/ashling_the_pilgrim_avatar.txt
@@ -0,0 +1,9 @@
+Name:Ashling the Pilgrim Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:-1/+6
+A:AB$ DamageAll | ActivationZone$ Command | Cost$ 2 | NumDmg$ 1 | ValidCards$ Creature | ValidPlayers$ Each | ValidDescription$ each creature and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature and each player.
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182283&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/a/ashnod.txt b/res/cardsfolder/a/ashnod.txt
new file mode 100644
index 00000000000..9cbb0c4f046
--- /dev/null
+++ b/res/cardsfolder/a/ashnod.txt
@@ -0,0 +1,10 @@
+Name:Ashnod
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+1/-8
+T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | Execute$ TrigDestroy | TriggerZones$ Command | TriggerDescription$ Whenever a creature deals damage to you, destroy it.
+SVar:TrigDestroy:AB$ Destroy | Cost$ 0 | Defined$ TriggeredSource
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12329&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/a/aven_mimeomancer.txt b/res/cardsfolder/a/aven_mimeomancer.txt
index b42c9bd1a02..09a2a072b0d 100644
--- a/res/cardsfolder/a/aven_mimeomancer.txt
+++ b/res/cardsfolder/a/aven_mimeomancer.txt
@@ -6,7 +6,7 @@ PT:3/1
K:Flying
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a feather counter on target creature. If you do, that creature is 3/1 and has flying for as long as it has a feather counter on it.
SVar:TrigPutCounter:AB$ PutCounter | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ FEATHER | CounterNum$ 1 | SubAbility$ DBAnimate
-SVar:DBAnimate:DB$ Animate | Defined$ Targeted | staticAbilities$ MimeomancerStatic | Permanent$ True
+SVar:DBAnimate:DB$ Animate | Defined$ Targeted | StaticAbilities$ MimeomancerStatic | Permanent$ True
SVar:MimeomancerStatic:Mode$ Continuous | Affected$ Card.Self+counters_GE1_FEATHER | SetPower$ 3 | SetToughness$ 1 | AddKeyword$ Flying | Description$ CARDNAME is 3/1 and has flying for as long as it has a feather counter on it.
SVar:RemAIDeck:True
SVar:Rarity:Rare
diff --git a/res/cardsfolder/b/barrin.txt b/res/cardsfolder/b/barrin.txt
new file mode 100644
index 00000000000..2030580e4bd
--- /dev/null
+++ b/res/cardsfolder/b/barrin.txt
@@ -0,0 +1,9 @@
+Name:Barrin
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+0/+6
+A:AB$ ChangeZone | ActivationZone$ Command | Cost$ Sac<1/Permanent> | ValidTgts$ Creature | TgtPrompt$ Select target Creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to its owner's hand.
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4957&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/b/birds_of_paradise_avatar.txt b/res/cardsfolder/b/birds_of_paradise_avatar.txt
new file mode 100644
index 00000000000..c82c6b89912
--- /dev/null
+++ b/res/cardsfolder/b/birds_of_paradise_avatar.txt
@@ -0,0 +1,10 @@
+Name:Birds of Paradise Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+0/-3
+S:Mode$ Continuous | EffectZone$ Command | Affected$ Land.YouCtrl | AddAbility$ AnyMana | Description$ Lands you control have "Tap: Add one mana of any color to your mana pool."
+SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool.
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182291&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/b/blinding_beam.txt b/res/cardsfolder/b/blinding_beam.txt
index ecfd8b621fb..a5e5f3b0fb0 100644
--- a/res/cardsfolder/b/blinding_beam.txt
+++ b/res/cardsfolder/b/blinding_beam.txt
@@ -6,7 +6,7 @@ A:SP$ Tap | Cost$ 2 W | ValidTgts$ Creature | TargetMin$ 2 | TargetMax$ 2 | Tgt
A:SP$ Effect | Cost$ 2 W | ValidTgts$ Player | TgtPrompt$ Select target player | IsCurse$ True | StaticAbilities$ DontUntap | Triggers$ RestoreSight | SVars$ ExileEffect | RememberObjects$ Targeted | Duration$ Permanent | SpellDescription$ or creatures don't untap during target player's next untap step.
A:SP$ Effect | Cost$ 3 W | ValidTgts$ Player | TgtPrompt$ Select target player | IsCurse$ True | StaticAbilities$ DontUntap | Triggers$ RestoreSight | SVars$ ExileEffect | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | Duration$ Permanent | SubAbility$ BlindTheFoe | PrecostDesc$ Entwine | CostDesc$ 1 | NonBasicSpell$ True | SpellDescription$ (Choose both if you pay the entwine cost.)
SVar:BlindTheFoe:DB$ Tap | ValidTgts$ Creature | TargetMin$ 2 | TargetMax$ 2 | TgtPrompt$ Select two target creatures
-SVar:DontUntap:Mode$ Continuous | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ HIDDEN This card doesn't untap during your next untap step.
+SVar:DontUntap:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ HIDDEN This card doesn't untap during your next untap step.
SVar:RestoreSight:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.IsRemembered | TriggerZones$ Battlefield | Execute$ ExileEffect | Static$ True
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/c/cease_fire.txt b/res/cardsfolder/c/cease_fire.txt
index 1b0703bf2d3..f7a6f6d239c 100644
--- a/res/cardsfolder/c/cease_fire.txt
+++ b/res/cardsfolder/c/cease_fire.txt
@@ -3,7 +3,7 @@ ManaCost:2 W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 W | ValidTgts$ Player | Name$ Cease-Fire Effect | StaticAbilities$ STCantBeCast | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Target player can't cast creature spells this turn.
-SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Creature | Caster$ Player.IsRemembered | Description$ Target player can't cast creature spells this turn.
+SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Creature | Caster$ Player.IsRemembered | Description$ Target player can't cast creature spells this turn.
SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/cease_fire.jpg
diff --git a/res/cardsfolder/c/chameleon_blur.txt b/res/cardsfolder/c/chameleon_blur.txt
index f3e4a7cf81b..40a182b9c09 100644
--- a/res/cardsfolder/c/chameleon_blur.txt
+++ b/res/cardsfolder/c/chameleon_blur.txt
@@ -3,7 +3,7 @@ ManaCost:3 G
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 3 G | Name$ Chameleon Blur Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that creatures would deal to players this turn.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature | Target$ Player | Description$ Prevent all damage that creatures would deal to players this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature | Target$ Player | Description$ Prevent all damage that creatures would deal to players this turn.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/chameleon_blur.jpg
diff --git a/res/cardsfolder/c/channel.txt b/res/cardsfolder/c/channel.txt
index a393c9ee0da..6d1361e796b 100644
--- a/res/cardsfolder/c/channel.txt
+++ b/res/cardsfolder/c/channel.txt
@@ -3,7 +3,7 @@ ManaCost:G G
Types:Sorcery
Text:no text
A:SP$ Effect | Cost$ G G | Name$ Channel Effect | Abilities$ ABMana | SpellDescription$ Until end of turn, any time you could activate a mana ability, you may pay 1 life. If you do, add 1 to your mana pool.
-SVar:ABMana:AB$Mana | Cost$ PayLife<1> | Produced$ 1 | Amount$ 1 | SpellDescription$ Add 1 to your mana pool.
+SVar:ABMana:AB$Mana | Cost$ PayLife<1> | ActivationZone$ Command | Produced$ 1 | Amount$ 1 | SpellDescription$ Add 1 to your mana pool.
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/channel.jpg
diff --git a/res/cardsfolder/c/chronatog_avatar.txt b/res/cardsfolder/c/chronatog_avatar.txt
new file mode 100644
index 00000000000..2f335894cf6
--- /dev/null
+++ b/res/cardsfolder/c/chronatog_avatar.txt
@@ -0,0 +1,12 @@
+Name:Chronatog Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:-1/+1
+S:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size.
+A:AB$ Draw | ActivationZone$ Command | Cost$ 0 | NumCards$ 3 | Defined$ You | ActivationLimit$ 1 | SubAbility$ DBSkipTurn | SpellDescription$ Draw three cards. You skip your next turn. Activate this ability only once each turn.
+SVar:DBSkipTurn:DB$ AddTurn | NumTurns$ 1 | Defined$ Opponent
+SVar:RemAIDeck:True
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=201898&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/c/chronomantic_escape.txt b/res/cardsfolder/c/chronomantic_escape.txt
index 6f23965cad0..47adb046be5 100644
--- a/res/cardsfolder/c/chronomantic_escape.txt
+++ b/res/cardsfolder/c/chronomantic_escape.txt
@@ -4,7 +4,7 @@ Types:Sorcery
Text:no text
K:Suspend:3:2 W
A:SP$ Effect | Cost$ 4 W W | Name$ Chronomantic Escape Effect | StaticAbilities$ STCantAttack | Duration$ UntilYourNextTurn | SubAbility$ DBChange | SpellDescription$ Until your next turn, creatures can't attack you. Exile CARDNAME with three time counters on it.
-SVar:STCantAttack:Mode$ CantAttack | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you.
+SVar:STCantAttack:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you.
SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | CounterNum$ 3 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
diff --git a/res/cardsfolder/c/crovax.txt b/res/cardsfolder/c/crovax.txt
new file mode 100644
index 00000000000..8bcb5509455
--- /dev/null
+++ b/res/cardsfolder/c/crovax.txt
@@ -0,0 +1,11 @@
+Name:Crovax
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+2/+0
+T:Mode$ DamageDone | ValidSource$ Creature+YouCtrl | ValidTarget$ Creature,Player | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature you control deals damage to a creature or player, you gain 1 life.
+SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 1
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4958&type=card
+Oracle:Hand +2, life +0\nWhenever a creature you control deals damage to a creature or player, you gain 1 life.
+End
\ No newline at end of file
diff --git a/res/cardsfolder/d/dauntless_escort.txt b/res/cardsfolder/d/dauntless_escort.txt
index 0bc1de7e6d5..ec1f85384a3 100644
--- a/res/cardsfolder/d/dauntless_escort.txt
+++ b/res/cardsfolder/d/dauntless_escort.txt
@@ -4,7 +4,7 @@ Types:Creature Rhino Soldier
Text:no text
PT:3/3
A:AB$ Effect | Cost$ Sac<1/CARDNAME> | Name$ Dauntless Escort Effect | StaticAbilities$ KWPump | SpellDescription$ Creatures you control are indestructible this turn.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Indestructible | Description$ Creatures you control are indestructible this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Indestructible | Description$ Creatures you control are indestructible this turn.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/dauntless_escort.jpg
diff --git a/res/cardsfolder/d/dauntless_escort_avatar.txt b/res/cardsfolder/d/dauntless_escort_avatar.txt
new file mode 100644
index 00000000000..8cc8300a6a4
--- /dev/null
+++ b/res/cardsfolder/d/dauntless_escort_avatar.txt
@@ -0,0 +1,9 @@
+Name:Dauntless Escort Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+1/+1
+S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Exalted | Description$ Creatures you control have exalted. (Whenever a creature you control attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents you control.)
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=201898&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/d/deep_wood.txt b/res/cardsfolder/d/deep_wood.txt
index 779ddf759de..96310b0b151 100644
--- a/res/cardsfolder/d/deep_wood.txt
+++ b/res/cardsfolder/d/deep_wood.txt
@@ -3,7 +3,7 @@ ManaCost:1 G
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 G | Name$ Deep Wood Effect | StaticAbilities$ STPrevent | AILogic$ Fog | OpponentTurn$ True | ActivationPhases$ Declare Attackers - Play Instants and Abilities | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Prevent all damage that would be dealt to you this turn by attacking creatures.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/deep_wood.jpg
SetInfo:POR|Uncommon|http://magiccards.info/scans/en/po/86.jpg
diff --git a/res/cardsfolder/d/demoralize.txt b/res/cardsfolder/d/demoralize.txt
index d4a8bc3d672..2c9ba4e5de9 100644
--- a/res/cardsfolder/d/demoralize.txt
+++ b/res/cardsfolder/d/demoralize.txt
@@ -4,8 +4,8 @@ Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 R | Name$ Demoralize Effect | StaticAbilities$ KWPump | SubAbility$ DBEffect2 | SpellDescription$ Each creature can't be blocked this turn except by two or more creatures.
SVar:DBEffect2:DB$ Effect | Name$ Demoralize Effect 2 | StaticAbilities$ KWPump2 | SpellDescription$ Threshold - If seven or more cards are in your graveyard, creatures can't block this turn.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddKeyword$ CARDNAME can't be blocked except by two or more creatures. | Description$ Each creature can't be blocked this turn except by two or more creatures.
-SVar:KWPump2:Mode$ Continuous | Affected$ Creature | AddKeyword$ CARDNAME can't block. | Threshold$ True | Description$ Threshold - If seven or more cards are in your graveyard, creatures can't block this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddKeyword$ CARDNAME can't be blocked except by two or more creatures. | Description$ Each creature can't be blocked this turn except by two or more creatures.
+SVar:KWPump2:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddKeyword$ CARDNAME can't block. | Threshold$ True | Description$ Threshold - If seven or more cards are in your graveyard, creatures can't block this turn.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/demoralize.jpg
diff --git a/res/cardsfolder/d/diamond_faerie_avatar.txt b/res/cardsfolder/d/diamond_faerie_avatar.txt
new file mode 100644
index 00000000000..a96f2323fa2
--- /dev/null
+++ b/res/cardsfolder/d/diamond_faerie_avatar.txt
@@ -0,0 +1,9 @@
+Name:Diamond Faerie Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:+0/+5
+A:AB$ Pump | ActivationZone$ Command | Cost$ S | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 1 | NumDef$ 1 | SpellDescription$ Target creature you control gets +1/+1 until end of turn.
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182274&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/d/divine_light.txt b/res/cardsfolder/d/divine_light.txt
index 6397407c7d4..2188e278a44 100644
--- a/res/cardsfolder/d/divine_light.txt
+++ b/res/cardsfolder/d/divine_light.txt
@@ -3,7 +3,7 @@ ManaCost:W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ W | Name$ Divine Light Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt this turn to creatures you control.
-SVar:STPrevent:Mode$ PreventDamage | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/divine_light.jpg
diff --git a/res/cardsfolder/d/druids_deliverance.txt b/res/cardsfolder/d/druids_deliverance.txt
index 7a0615c8b1f..23ae96c8b55 100644
--- a/res/cardsfolder/d/druids_deliverance.txt
+++ b/res/cardsfolder/d/druids_deliverance.txt
@@ -3,7 +3,7 @@ ManaCost:1 G
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 G | Name$ Druid's Deliverance Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SubAbility$ DBChoose | SpellDescription$ Prevent all combat damage that would be dealt to you this turn. Populate. (Put a token onto the battlefield that's a copy of a creature token you control.)
-SVar:STPrevent:Mode$ PreventDamage | CombatDamage$ True | Target$ You | Description$ Prevent all combat damage that would be dealt to you this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | CombatDamage$ True | Target$ You | Description$ Prevent all combat damage that would be dealt to you this turn.
SVar:DBChoose:DB$ ChooseCard | Cost$ 0 | Defined$ You | Amount$ 1 | Choices$ Creature.token+YouCtrl | SubAbility$ DBCopy | RememberChosen$ True
SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered
SVar:Rarity:Common
diff --git a/res/cardsfolder/d/due_respect.txt b/res/cardsfolder/d/due_respect.txt
index b28dd2e7835..d0db63f9eee 100644
--- a/res/cardsfolder/d/due_respect.txt
+++ b/res/cardsfolder/d/due_respect.txt
@@ -3,7 +3,7 @@ ManaCost:1 W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 W | Name$ Due Respect Effect | StaticAbilities$ STETBTapped | SubAbility$ DBDraw | AILogic$ BeginningOfOppTurn | SpellDescription$ Permanents enter the battlefield tapped this turn.
-SVar:STETBTapped:Mode$ ETBTapped | ValidCard$ Permanent | Description$ Permanents enter the battlefield tapped this turn.
+SVar:STETBTapped:Mode$ ETBTapped | EffectZone$ Command | ValidCard$ Permanent | Description$ Permanents enter the battlefield tapped this turn.
SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/due_respect.jpg
diff --git a/res/cardsfolder/e/eladamri.txt b/res/cardsfolder/e/eladamri.txt
new file mode 100644
index 00000000000..01e02429ebb
--- /dev/null
+++ b/res/cardsfolder/e/eladamri.txt
@@ -0,0 +1,20 @@
+Name:Eladamri
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:-1/+15
+A:AB$ Effect | ActivationZone$ Command | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature to redirect damage from | ReplacementEffects$ SelflessCombat,SelflessNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,RestDmgCombat,RestDmg,ExileEffect,X,Y | References$ SelflessCombat,SelflessNonCombat,OutOfSight,CombatDmg,NonCombatDmg,RestDmgCombat,RestDmg,ExileEffect,X,Y | RememberObjects$ Targeted | Duration$ Permanent | SpellDescription$ The next 1 damage that would be dealt to target creature you control is dealt to you instead.
+SVar:SelflessCombat:Event$ DamageDone | ValidTarget$ Card.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to target creature you control is dealt to you instead.
+SVar:SelflessNonCombat:Event$ DamageDone | ValidTarget$ Card.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to target creature you control is dealt to you instead.
+SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1
+SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1
+SVar:RestDmgCombat:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect
+SVar:RestDmg:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect
+SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True
+SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True
+SVar:X:ReplaceCount$DamageAmount/Minus.1
+SVar:Y:ReplaceCount$DamageAmount
+SVar:Rarity:Special
+SVar:Picture:http://www.wizards.com/global/images/magic/general/eladamri.jpg
+Oracle:Hand -1, life +15\n{0}: The next 1 damage that would be dealt to target creature you control is dealt to you instead.
+End
\ No newline at end of file
diff --git a/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt b/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt
new file mode 100644
index 00000000000..ffb044f9d83
--- /dev/null
+++ b/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt
@@ -0,0 +1,10 @@
+Name:Eladamri, Lord of Leaves Avatar
+ManaCost:no cost
+Types:Vanguard
+Text:no text
+HandLifeModifier:-1/+2
+T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Command | Execute$ TrigAddMana | TriggerDescription$ At the beginning of each player's precombat main phase, that player adds {G}{G} to his or her mana pool.
+SVar:TrigAddMana:AB$ Mana | Cost$ 0 | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer
+SVar:Rarity:Special
+SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=195137&type=card
+End
\ No newline at end of file
diff --git a/res/cardsfolder/e/elspeth_knight_errant.txt b/res/cardsfolder/e/elspeth_knight_errant.txt
index d475c962452..a7f2edba061 100644
--- a/res/cardsfolder/e/elspeth_knight_errant.txt
+++ b/res/cardsfolder/e/elspeth_knight_errant.txt
@@ -6,7 +6,7 @@ Loyalty:4
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | TokenAmount$ 1 | TokenName$ Soldier | TokenColors$ White | TokenTypes$ Creature,Soldier | TokenOwner$ You | TokenPower$ 1 | TokenToughness$ 1 | Planeswalker$ True | SpellDescription$ Put a 1/1 white Soldier creature token onto the battlefield.
A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 3 | NumDef$ 3 | KW$ Flying | Planeswalker$ True | SpellDescription$ Target creature gets +3/+3 and gains flying until end of turn.
A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Name$ Elspeth, Knight-Errant emblem | Image$ elspeth_knight_errant_emblem | StaticAbilities$ STIndestructible | Keywords$ Indestructible | Planeswalker$ True | Ultimate$ True | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Artifacts, creatures, enchantments, and lands you control are indestructible."
-SVar:STIndestructible:Mode$ Continuous | Affected$ Artifact.YouCtrl,Creature.YouCtrl,Enchantment.YouCtrl,Land.YouCtrl | AffectedZone$ Battlefield | AddKeyword$ Indestructible
+SVar:STIndestructible:Mode$ Continuous | EffectZone$ Command | Affected$ Artifact.YouCtrl,Creature.YouCtrl,Enchantment.YouCtrl,Land.YouCtrl | AffectedZone$ Battlefield | AddKeyword$ Indestructible
SVar:Indestructible:Artifacts, creatures, enchantments, and lands you control are indestructible.
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/elspeth_knight_errant.jpg
diff --git a/res/cardsfolder/e/endure.txt b/res/cardsfolder/e/endure.txt
index 3dd54efd78d..6631306de97 100644
--- a/res/cardsfolder/e/endure.txt
+++ b/res/cardsfolder/e/endure.txt
@@ -3,7 +3,7 @@ ManaCost:3 W W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 3 W W | Name$ Endure Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that would be dealt to you and permanents you control this turn.
-SVar:STPrevent:Mode$ PreventDamage | Target$ You,Permanent.YouCtrl | Description$ Prevent all damage that would be dealt to you and permanents you control this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You,Permanent.YouCtrl | Description$ Prevent all damage that would be dealt to you and permanents you control this turn.
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/endure.jpg
diff --git a/res/cardsfolder/e/ethereal_haze.txt b/res/cardsfolder/e/ethereal_haze.txt
index 3fd0b5b93f6..1f50757b0ab 100644
--- a/res/cardsfolder/e/ethereal_haze.txt
+++ b/res/cardsfolder/e/ethereal_haze.txt
@@ -3,7 +3,7 @@ ManaCost:W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ W | Name$ Ethereal Haze Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that would be dealt by creatures this turn.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature | Description$ Prevent all damage that would be dealt by creatures this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature | Description$ Prevent all damage that would be dealt by creatures this turn.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/ethereal_haze.jpg
SetInfo:CHK|Common|http://magiccards.info/scans/en/chk/9.jpg
diff --git a/res/cardsfolder/e/ethersworn_shieldmage.txt b/res/cardsfolder/e/ethersworn_shieldmage.txt
index 4aa70f1943e..11aa5f1f3ac 100644
--- a/res/cardsfolder/e/ethersworn_shieldmage.txt
+++ b/res/cardsfolder/e/ethersworn_shieldmage.txt
@@ -6,7 +6,7 @@ PT:2/2
K:Flash
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, prevent all damage that would be dealt to artifact creatures this turn.
SVar:TrigEffect:DB$Effect | Name$ Ethersworn Shieldmage Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to artifact creatures this turn.
-SVar:STPrevent:Mode$ PreventDamage | Target$ Creature.Artifact | Description$ Prevent all damage that would be dealt to artifact creatures this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature.Artifact | Description$ Prevent all damage that would be dealt to artifact creatures this turn.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/ethersworn_shieldmage.jpg
SetInfo:ARB|Common|http://magiccards.info/scans/en/arb/4.jpg
diff --git a/res/cardsfolder/f/falter.txt b/res/cardsfolder/f/falter.txt
index 5bc7ed1b8c9..cb21689c8dd 100644
--- a/res/cardsfolder/f/falter.txt
+++ b/res/cardsfolder/f/falter.txt
@@ -3,7 +3,7 @@ ManaCost:1 R
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 R | Name$ Falter Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Creatures without flying can't block this turn.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn.
SVar:PlayMain1:TRUE
SVar:RemAIDeck:True
SVar:Rarity:Common
diff --git a/res/cardsfolder/f/festival.txt b/res/cardsfolder/f/festival.txt
index 8482deae37a..8a3f56c0c3e 100644
--- a/res/cardsfolder/f/festival.txt
+++ b/res/cardsfolder/f/festival.txt
@@ -3,7 +3,7 @@ ManaCost:W
Types:Instant
Text:Cast Festival only during an opponent's upkeep.
A:SP$ Effect | Cost$ W | Name$ Festival Effect | StaticAbilities$ KWPump | OpponentTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ Creatures can't attack this turn.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | Description$ Creatures can't attack this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | Description$ Creatures can't attack this turn.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/festival.jpg
diff --git a/res/cardsfolder/f/flame_fusillade.txt b/res/cardsfolder/f/flame_fusillade.txt
index 2ce66b30a15..c22bed3c845 100644
--- a/res/cardsfolder/f/flame_fusillade.txt
+++ b/res/cardsfolder/f/flame_fusillade.txt
@@ -3,7 +3,7 @@ ManaCost:3 R
Types:Sorcery
Text:no text
A:SP$ Effect | Cost$ 3 R | Name$ Flame Fusillade Effect | StaticAbilities$ STDamage | SVars$ ABDamage | SpellDescription$ Until end of turn, permanents you control gain "Tap: This permanent deals 1 damage to target creature or player."
-SVar:STDamage:Mode$ Continuous | Affected$ Permanent.YouCtrl | AddAbility$ ABDamage | Description$ Until end of turn, permanents you control gain "Tap: This permanent deals 1 damage to target creature or player."
+SVar:STDamage:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Permanent.YouCtrl | AddAbility$ ABDamage | Description$ Until end of turn, permanents you control gain "Tap: This permanent deals 1 damage to target creature or player."
SVar:ABDamage:AB$ DealDamage | Cost$ T | NumDmg$ 1 | Tgt$ TgtCP | SpellDescription$ CARDNAME deals 1 damage to target creature or player
SVar:RemAIDeck:True
SVar:Rarity:Rare
diff --git a/res/cardsfolder/f/flaring_pain.txt b/res/cardsfolder/f/flaring_pain.txt
index 6c81c706db2..5a5f686387f 100644
--- a/res/cardsfolder/f/flaring_pain.txt
+++ b/res/cardsfolder/f/flaring_pain.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
K:Flashback R
A:SP$ Effect | Cost$ 1 R | Name$ Flaring Pain Effect | StaticAbilities$ STCantPrevent | SpellDescription$ Damage can't be prevented this turn.
-SVar:STCantPrevent:Mode$ Continuous | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented.
+SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented.
SVar:RemAIDeck:True
SVar:RemRandomDeck:True
SVar:Rarity:Common
diff --git a/res/cardsfolder/f/forfend.txt b/res/cardsfolder/f/forfend.txt
index f04de0b2110..dba5d21e62a 100644
--- a/res/cardsfolder/f/forfend.txt
+++ b/res/cardsfolder/f/forfend.txt
@@ -3,7 +3,7 @@ ManaCost:1 W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 W | Name$ Forfend Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to creatures this turn.
-SVar:STPrevent:Mode$ PreventDamage | Target$ Creature | Description$ Prevent all damage that would be dealt to creatures this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature | Description$ Prevent all damage that would be dealt to creatures this turn.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/forfend.jpg
diff --git a/res/cardsfolder/g/gorilla_war_cry.txt b/res/cardsfolder/g/gorilla_war_cry.txt
index aba2270f622..ffd4f566f0c 100644
--- a/res/cardsfolder/g/gorilla_war_cry.txt
+++ b/res/cardsfolder/g/gorilla_war_cry.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 R | Name$ Gorilla War Cry Effect | StaticAbilities$ Blocking | ActivationPhases$ BeginCombat->Declare Attackers - Play Instants and Abilities | AILogic$ Evasion | SubAbility$ DBDraw | SpellDescription$ Cast CARDNAME only during combat before blockers are declared. Creatures can't be blocked this turn except by two or more creatures.
SVar:DBDraw:DB$Draw | NumCards$ 1 | NextUpkeep$ True | SpellDescription$ Draw a card at the beginning of the next upkeep.
-SVar:Blocking:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN CARDNAME can't be blocked except by two or more creatures. | Description$ Creatures can't be blocked this turn except by two or more creatures.
+SVar:Blocking:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ HIDDEN CARDNAME can't be blocked except by two or more creatures. | Description$ Creatures can't be blocked this turn except by two or more creatures.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/gorilla_war_cry.jpg
SetInfo:ALL|Common|http://magiccards.info/scans/en/ai/108.jpg|2
diff --git a/res/cardsfolder/g/guardian_angel.txt b/res/cardsfolder/g/guardian_angel.txt
index 9bb5f2dc4e0..e8cda2095f4 100644
--- a/res/cardsfolder/g/guardian_angel.txt
+++ b/res/cardsfolder/g/guardian_angel.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
A:SP$ PreventDamage | Cost$ X W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | References$ X | SubAbility$ GuardianEffect | SpellDescription$ Prevent the next X damage that would be dealt to target creature or player this turn. Until end of turn, you may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn.
SVar:GuardianEffect:DB$ Effect | Name$ Guardian Angel Effect | Abilities$ ABProtect | RememberObjects$ Targeted | Triggers$ OutOfSight | SVars$ ExileEffect
-SVar:ABProtect:AB$ PreventDamage | Cost$ 1 | InstantSpeed$ True | Defined$ Remembered | Amount$ 1 | SpellDescription$ You may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn.
+SVar:ABProtect:AB$ PreventDamage | ActivationZone$ Command | Cost$ 1 | InstantSpeed$ True | Defined$ Remembered | Amount$ 1 | SpellDescription$ You may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn.
SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/h/harmless_assault.txt b/res/cardsfolder/h/harmless_assault.txt
index 7608b03e9a9..40ad6316586 100644
--- a/res/cardsfolder/h/harmless_assault.txt
+++ b/res/cardsfolder/h/harmless_assault.txt
@@ -3,7 +3,7 @@ ManaCost:2 W W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 W W | Name$ Harmless Assault Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt this turn by attacking creatures.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.attacking | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by attacking creatures.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.attacking | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by attacking creatures.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/harmless_assault.jpg
SetInfo:ROE|Common|http://magiccards.info/scans/en/roe/24.jpg
diff --git a/res/cardsfolder/h/havengul_lich.txt b/res/cardsfolder/h/havengul_lich.txt
index ecff39664e3..4e0522b8a49 100644
--- a/res/cardsfolder/h/havengul_lich.txt
+++ b/res/cardsfolder/h/havengul_lich.txt
@@ -9,7 +9,7 @@ SVar:PumpTheir:DB$Pump | Defined$ Remembered | ConditionCheckSVar$ SelectKW | Co
SVar:FXCast:DB$Effect | Name$ Havengul Lich Delayed Trigger | Triggers$ DTCast | SVars$ StealAbs,STSteal,CleanupDT | RememberObjects$ Targeted
SVar:DTCast:Mode$ SpellCast | ValidCard$ Card.IsRemembered | Execute$ StealAbs | TriggerDescription$ When you cast that card this turn, Havengul Lich gains all activated abilities of that card until end of turn.
SVar:StealAbs:DB$Effect | Name$ Havengul Lich effect | RememberObjects$ TriggeredCard | StaticAbilities$ STSteal | SubAbility$ CleanupDT
-SVar:STSteal:Mode$ Continuous | Affected$ EffectSource | EffectZone$ Battlefield | GainsAbilitiesOf$ Creature.IsRemembered | GainsAbilitiesOfZones$ Library,Hand,Stack,Battlefield,Graveyard,Exile,Command
+SVar:STSteal:Mode$ Continuous | Affected$ EffectSource | EffectZone$ Command | GainsAbilitiesOf$ Creature.IsRemembered | GainsAbilitiesOfZones$ Library,Hand,Stack,Battlefield,Graveyard,Exile,Command
T:Mode$ Phase | Phase$ Cleanup | Static$ True | Execute$ Cleanup | Secondary$ True | TriggerDescription$ A little behind the scenes.
SVar:Cleanup:DB$Cleanup | ClearRemembered$ True
SVar:CleanupDT:DB$ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile
diff --git a/res/cardsfolder/h/heavy_fog.txt b/res/cardsfolder/h/heavy_fog.txt
index 833aacb4b13..9ae77a22105 100644
--- a/res/cardsfolder/h/heavy_fog.txt
+++ b/res/cardsfolder/h/heavy_fog.txt
@@ -3,7 +3,7 @@ ManaCost:1 G
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 G | Name$ Heavy Fog Effect | StaticAbilities$ STPrevent | AILogic$ Fog | OpponentTurn$ True | ActivationPhases$ Declare Attackers - Play Instants and Abilities | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Prevent all damage that would be dealt to you this turn by attacking creatures.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/heavy_fog.jpg
SetInfo:PTK|Uncommon|http://magiccards.info/scans/en/p3k/136.jpg
diff --git a/res/cardsfolder/h/hero_of_oxid_ridge.txt b/res/cardsfolder/h/hero_of_oxid_ridge.txt
index 787711df210..8a480cf1079 100644
--- a/res/cardsfolder/h/hero_of_oxid_ridge.txt
+++ b/res/cardsfolder/h/hero_of_oxid_ridge.txt
@@ -8,7 +8,7 @@ T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ Tr
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ When CARDNAME attacks, creatures with power 1 or less can't block this turn.
SVar:TrigBattleCry:AB$PumpAll | Cost$ 0 | ValidCards$ Creature.attacking+Other | NumAtt$ 1
SVar:TrigEffect:AB$Effect | Cost$ 0 | Name$ Hero of Oxid Ridge Effect | StaticAbilities$ KWPump
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.powerLE1 | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures with power 1 or less can't block this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.powerLE1 | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures with power 1 or less can't block this turn.
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/hero_of_oxid_ridge.jpg
SetInfo:MBS|Mythic|http://magiccards.info/scans/en/mbs/66.jpg
diff --git a/res/cardsfolder/i/interdict.txt b/res/cardsfolder/i/interdict.txt
index f1fc3f00d9e..8f10336e1c2 100644
--- a/res/cardsfolder/i/interdict.txt
+++ b/res/cardsfolder/i/interdict.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
A:SP$ Counter | Cost$ 1 U | TargetType$ Activated | TgtPrompt$ Select target activated ability from an artifact, creature, enchantment, or land. | RememberTargets$ True | ValidTgts$ Artifact,Creature,Enchantment,Land | SubAbility$ DBEffect | SpellDescription$ Counter target activated ability from an artifact, creature, enchantment, or land. That permanent's activated abilities can't be activated this turn. (Mana abilities can't be targeted.)
SVar:DBEffect:DB$ Effect | Name$ Interdict Effect | StaticAbilities$ STCantBeActivated | RememberObjects$ Remembered | SubAbility$ DBDraw
-SVar:STCantBeActivated:Mode$ CantBeActivated | ValidCard$ Permanent.IsRemembered
+SVar:STCantBeActivated:Mode$ CantBeActivated | EffectZone$ Command | ValidCard$ Permanent.IsRemembered
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/interdict.jpg
diff --git a/res/cardsfolder/i/island_sanctuary.txt b/res/cardsfolder/i/island_sanctuary.txt
index 9d25aa6ed6c..0ad61ab78f2 100644
--- a/res/cardsfolder/i/island_sanctuary.txt
+++ b/res/cardsfolder/i/island_sanctuary.txt
@@ -4,7 +4,7 @@ Types:Enchantment
Text:no text
R:Event$ Draw | ActiveZones$ Battlefield | ActivePhases$ Draw | PlayerTurn$ True | ValidPlayer$ You | Optional$ True | ReplaceWith$ SanctuaryEffect | Description$ If you would draw a card during your draw step, instead you may skip that draw. If you do, until your next turn, you can't be attacked except by creatures with flying and/or islandwalk.
SVar:SanctuaryEffect:AB$ Effect | Cost$ 0 | Name$ Sanctuary Effect | StaticAbilities$ IslandRetreat | Duration$ UntilYourNextTurn
-SVar:IslandRetreat:Mode$ CantAttack | ValidCard$ Creature.withoutFlying+withoutIslandwalk | Target$ You | Description$ Creatures without flying can't attack you.
+SVar:IslandRetreat:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.withoutFlying+withoutIslandwalk | Target$ You | Description$ Creatures without flying can't attack you.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/island_sanctuary.jpg
diff --git a/res/cardsfolder/k/koth_of_the_hammer.txt b/res/cardsfolder/k/koth_of_the_hammer.txt
index c98d40fbd48..f536b03719b 100644
--- a/res/cardsfolder/k/koth_of_the_hammer.txt
+++ b/res/cardsfolder/k/koth_of_the_hammer.txt
@@ -7,7 +7,7 @@ A:AB$ Untap | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Moun
SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Colors$ Red
A:AB$ Mana | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ X | References$ X | SpellDescription$ Add R to your mana pool for each Mountain you control.
A:AB$ Effect | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Koth of the Hammer emblem | Image$ koth_of_the_hammer_emblem | StaticAbilities$ STDamage | SVars$ ABDealDamage | Stackable$ False | Keywords$ Damage | Duration$ Permanent | SpellDescription$ You get an emblem with "Mountains you control have '{T}: This land deals 1 damage to target creature or player."
-SVar:STDamage:Mode$ Continuous | Affected$ Mountain.YouCtrl | AddAbility$ ABDealDamage | AffectedZone$ Battlefield
+SVar:STDamage:Mode$ Continuous | EffectZone$ Command | Affected$ Mountain.YouCtrl | AddAbility$ ABDealDamage | AffectedZone$ Battlefield
SVar:ABDealDamage:AB$ DealDamage | Cost$ T | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ Deal 1 damage to target creature or player
SVar:Damage:Mountains you control have '{T}: This land deals 1 damage to target creature or player.
SVar:X:Count$Valid Mountain.YouCtrl
diff --git a/res/cardsfolder/l/liege_of_the_tangle.txt b/res/cardsfolder/l/liege_of_the_tangle.txt
index fbec1607da3..a4fa96d1310 100644
--- a/res/cardsfolder/l/liege_of_the_tangle.txt
+++ b/res/cardsfolder/l/liege_of_the_tangle.txt
@@ -9,7 +9,7 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage
SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | ValidTgts$ Land.YouCtrl | OptionalDecider$ You | TargetMax$ X | TgtPrompt$ Select lands you control | CounterType$ AWAKENING | CounterNum$ 1 | SubAbility$ DBEffect | References$ X
SVar:X:Count$Valid Land.YouCtrl
SVar:DBEffect:DB$ Effect | Cost$ 0 | Name$ Awakening Effect | StaticAbilities$ KWAnimateAll | Unique$ True | Duration$ Permanent
-SVar:KWAnimateAll:Mode$ Continuous | Affected$ Card.counters_GE1_AWAKENING | SetPower$ 8 | SetToughness$ 8 | AddType$ Creature & Elemental | SetColor$ Green | Description$ Each of those lands is an 8/8 green Elemental creature for as long as it has an awakening counter on it. They're still lands.
+SVar:KWAnimateAll:Mode$ Continuous | EffectZone$ Command | Affected$ Card.counters_GE1_AWAKENING | SetPower$ 8 | SetToughness$ 8 | AddType$ Creature & Elemental | SetColor$ Green | Description$ Each of those lands is an 8/8 green Elemental creature for as long as it has an awakening counter on it. They're still lands.
SVar:MustBeBlocked:True
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/liege_of_the_tangle.jpg
diff --git a/res/cardsfolder/l/liliana_of_the_dark_realms.txt b/res/cardsfolder/l/liliana_of_the_dark_realms.txt
index 23da5a3bbce..598f24ee7b0 100644
--- a/res/cardsfolder/l/liliana_of_the_dark_realms.txt
+++ b/res/cardsfolder/l/liliana_of_the_dark_realms.txt
@@ -10,7 +10,7 @@ SVar:X:Count$Valid Swamp.YouCtrl
SVar:ABChoice:DB$ GenericChoice | Defined$ You | Cost$ 0 | Choices$ ABPump1,ABPump2
SVar:ABPump1:DB$ Pump | Cost$ 0 | Defined$ Targeted | NumAtt$ +X | NumDef$ +X | References$ X | ChoiceDescription$ +X/+X
SVar:ABPump2:DB$ Pump | Cost$ 0 | Defined$ Targeted | NumAtt$ -X | NumDef$ -X | References$ X | ChoiceDescription$ -X/-X
-SVar:SwampBoost:Mode$ Continuous | Affected$ Swamp.YouCtrl | AddAbility$ BlackTap | Description$ Swamps you control have 'T:Add BBBB to your mana pool.'
+SVar:SwampBoost:Mode$ Continuous | EffectZone$ Command | Affected$ Swamp.YouCtrl | AffectedZone$ Battlefield | AddAbility$ BlackTap | Description$ Swamps you control have 'T:Add BBBB to your mana pool.'
SVar:BlackTap:AB$ Mana | Cost$ T | Produced$ B | Amount$ 4 | SpellDescription$ Add B B B B to your mana pool.
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/liliana_of_the_dark_realms.jpg
diff --git a/res/cardsfolder/l/luminesce.txt b/res/cardsfolder/l/luminesce.txt
index ed27952e4ec..83e5bcd13a9 100644
--- a/res/cardsfolder/l/luminesce.txt
+++ b/res/cardsfolder/l/luminesce.txt
@@ -3,7 +3,7 @@ ManaCost:W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ W | Name$ Luminesce Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that black sources and red sources would deal this turn.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Card.Black,Card.Red | Description$ Prevent all damage that black sources and red sources would deal this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Card.Black,Card.Red | Description$ Prevent all damage that black sources and red sources would deal this turn.
SVar:RemAIDeck:True
SVar:RemRandomDeck:True
SVar:Rarity:Uncommon
diff --git a/res/cardsfolder/m/maddening_imp.txt b/res/cardsfolder/m/maddening_imp.txt
index eafb9b4ff75..d1e93aec2b3 100644
--- a/res/cardsfolder/m/maddening_imp.txt
+++ b/res/cardsfolder/m/maddening_imp.txt
@@ -5,7 +5,7 @@ Text:no text
PT:1/1
K:Flying
A:AB$ Effect | Cost$ T | Name$ Maddening Imp Effect | StaticAbilities$ KWPump | ActivationPhases$ Upkeep->Main1 | OpponentTurn$ True | SpellDescription$ Non-Wall creatures the active player controls attack this turn if able. At the beginning of the next end step, destroy each of those creatures that didn't attack this turn. Activate this ability only during an opponent's turn and only before combat. | SubAbility$ DestroyPacifist
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.ActivePlayerCtrl+nonWall | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Non-Wall creatures the active player controls attack this turn if able.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.ActivePlayerCtrl+nonWall | AffectedZone$ Battlefield | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Non-Wall creatures the active player controls attack this turn if able.
SVar:DestroyPacifist:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigDestroy | TriggerDescription$ At the beginning of the next end step, destroy each of those creatures that didn't attack this turn.
SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Creature.ActivePlayerCtrl+notAttackedThisTurn+nonWall
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/m/moonhold.txt b/res/cardsfolder/m/moonhold.txt
index ed69efbff1a..2957c85f96c 100644
--- a/res/cardsfolder/m/moonhold.txt
+++ b/res/cardsfolder/m/moonhold.txt
@@ -4,8 +4,8 @@ Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 RW | ValidTgts$ Player | IsCurse$ True | Name$ Moonhold Land Effect | StaticAbilities$ STCantPlayLand | EffectOwner$ Targeted | AILogic$ BeginningOfOppTurn | ConditionManaSpent$ R | SubAbility$ WPaid | SpellDescription$ Target player can't play land cards this turn if R was spent to cast CARDNAME and can't play creature cards this turn if W was spent to cast it. (Do both if R W was spent.)
SVar:WPaid:DB$ Effect | Name$ Moonhold Creature Effect | IsCurse$ True | StaticAbilities$ STCantPlayCreats | EffectOwner$ Targeted | AILogic$ BeginningOfOppTurn | ConditionManaSpent$ W
-SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ You | Description$ You can't play land cards this turn.
-SVar:STCantPlayCreats:Mode$ CantBeCast | ValidCard$ Creature | Caster$ You | Description$ You can't play creature cards this turn.
+SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ You | Description$ You can't play land cards this turn.
+SVar:STCantPlayCreats:Mode$ CantBeCast | ValidCard$ Creature | EffectZone$ Command | Caster$ You | Description$ You can't play creature cards this turn.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/moonhold.jpg
SetInfo:EVE|Uncommon|http://magiccards.info/scans/en/eve/143.jpg
diff --git a/res/cardsfolder/m/moonmist.txt b/res/cardsfolder/m/moonmist.txt
index d3c12125135..dd137151a29 100644
--- a/res/cardsfolder/m/moonmist.txt
+++ b/res/cardsfolder/m/moonmist.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
A:SP$SetStateAll | Cost$ 1 G | ValidCards$ Creature.Human+DoubleFaced | Mode$ Transform | SubAbility$ DBCurseNonWolves | SpellDescription$ Transform all Humans. Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves. (Only double-faced cards can be transformed.)
SVar:DBCurseNonWolves:DB$Effect | Name$ Moonmist Effect. | StaticAbilities$ Curse
-SVar:Curse:Mode$ PreventDamage | Source$ Creature.nonWerewolf+nonWolf | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves.
+SVar:Curse:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.nonWerewolf+nonWolf | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/moonmist.jpg
diff --git a/res/cardsfolder/o/orims_chant.txt b/res/cardsfolder/o/orims_chant.txt
index 40b7b32e28d..fc915cc734a 100644
--- a/res/cardsfolder/o/orims_chant.txt
+++ b/res/cardsfolder/o/orims_chant.txt
@@ -3,9 +3,9 @@ ManaCost:W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ W | Name$ Orim's Chant Effect | IsCurse$ True | StaticAbilities$ CantBeCast | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't cast spells this turn. If CARDNAME was kicked, creatures can't attack this turn.
-SVar:CantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells this turn.
+SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells this turn.
A:SP$ Effect | Cost$ W W | SetAsKicked$ True | Name$ Orim's Chant Effect | IsCurse$ True | StaticAbilities$ CantBeCast,CantAttack | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Kicker W W (You may pay an additional W W as you cast this spell.)
-SVar:CantAttack:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | Description$ Creatures can't attack this turn.
+SVar:CantAttack:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AffectedZone$ Battlefield | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | Description$ Creatures can't attack this turn.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/orims_chant.jpg
SetInfo:PLS|Rare|http://magiccards.info/scans/en/ps/11.jpg
diff --git a/res/cardsfolder/o/oriss_samite_guardian.txt b/res/cardsfolder/o/oriss_samite_guardian.txt
index 64aabf19e90..8316fb9675e 100644
--- a/res/cardsfolder/o/oriss_samite_guardian.txt
+++ b/res/cardsfolder/o/oriss_samite_guardian.txt
@@ -5,8 +5,8 @@ Text:no text
PT:1/3
A:AB$ Pump | Cost$ T | KW$ HIDDEN Prevent all damage that would be dealt to CARDNAME. | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Prevent all damage that would be dealt to target creature this turn.
A:AB$ Effect | Cost$ Discard<1/Card.namedOriss, Samite Guardian> | CostDesc$ Grandeur - Discard another card named CARDNAME:| Name$ Oriss Effect | IsCurse$ True | StaticAbilities$ CantBeCast,CantAttack | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't cast spells this turn, and creatures that player controls can't attack this turn.
-SVar:CantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Targeted player can't cast spells this turn.
-SVar:CantAttack:Mode$ Continuous | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | Description$ Creatures targeted player controls can't attack this turn.
+SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Targeted player can't cast spells this turn.
+SVar:CantAttack:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | Description$ Creatures targeted player controls can't attack this turn.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/oriss_samite_guardian.jpg
diff --git a/res/cardsfolder/p/pardic_miner.txt b/res/cardsfolder/p/pardic_miner.txt
index 84042c792cc..fade3a7e8ab 100644
--- a/res/cardsfolder/p/pardic_miner.txt
+++ b/res/cardsfolder/p/pardic_miner.txt
@@ -4,7 +4,7 @@ Types:Creature Dwarf
Text:no text
PT:1/1
A:AB$ Effect | Cost$ Sac<1/CARDNAME> | ValidTgts$ Player | Name$ Pardic Miner Effect | StaticAbilities$ STCantPlayLand | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't play lands this turn.
-SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn.
+SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/pardic_miner.jpg
diff --git a/res/cardsfolder/p/praetors_counsel.txt b/res/cardsfolder/p/praetors_counsel.txt
index ea0642cfa5b..db7392c51f2 100644
--- a/res/cardsfolder/p/praetors_counsel.txt
+++ b/res/cardsfolder/p/praetors_counsel.txt
@@ -5,7 +5,7 @@ Text:no text
A:SP$ ChangeZoneAll | Cost$ 5 G G G | Origin$ Graveyard | Destination$ Hand | ChangeType$ Card.YouOwn | SubAbility$ DBChange | SpellDescription$ Return all cards from your graveyard to your hand. Exile CARDNAME. You have no maximum hand size for the rest of the game.
SVar:DBChange:DB$ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | Name$ Praetor's Counsel Effect | StaticAbilities$ STHandSize | Duration$ Permanent
-SVar:STHandSize:Mode$ Continuous | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size.
+SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size.
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/praetors_counsel.jpg
SetInfo:MBS|Mythic|http://magiccards.info/scans/en/mbs/88.jpg
diff --git a/res/cardsfolder/p/predatory_focus.txt b/res/cardsfolder/p/predatory_focus.txt
index 3f5b3956a5d..00d6b121b86 100644
--- a/res/cardsfolder/p/predatory_focus.txt
+++ b/res/cardsfolder/p/predatory_focus.txt
@@ -3,7 +3,7 @@ ManaCost:3 G G
Types:Sorcery
Text:no text
A:SP$ Effect | Cost$ 3 G G | Name$ Predatory Focus Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ You may have creatures you control assign their combat damage this turn as though they weren't blocked.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN You may have CARDNAME assign its combat damage as though it weren't blocked. | Description$ You may have creatures you control assign their combat damage this turn as though they weren't blocked.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN You may have CARDNAME assign its combat damage as though it weren't blocked. | Description$ You may have creatures you control assign their combat damage this turn as though they weren't blocked.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/predatory_focus.jpg
SetInfo:GPT|Uncommon|http://magiccards.info/scans/en/gp/92.jpg
diff --git a/res/cardsfolder/p/predatory_rampage.txt b/res/cardsfolder/p/predatory_rampage.txt
index 092701b77c2..a01a3f77fb6 100644
--- a/res/cardsfolder/p/predatory_rampage.txt
+++ b/res/cardsfolder/p/predatory_rampage.txt
@@ -4,7 +4,7 @@ Types:Sorcery
Text:no text
A:SP$ PumpAll | Cost$ 3 G G | ValidCards$ Creature.YouCtrl | NumAtt$ +3 | NumDef$ +3 | SubAbility$ OppBlock | SpellDescription$ Creatures you control get +3/+3 until end of turn. Each creature your opponents control blocks this turn if able.
SVar:OppBlock:DB$ Effect | Name$ Predatory Rampage Effect | StaticAbilities$ KWPump
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.OppCtrl | AddHiddenKeyword$ HIDDEN CARDNAME blocks each turn if able. | Description$ Each creature your opponents control blocks this turn if able.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.OppCtrl | AddHiddenKeyword$ HIDDEN CARDNAME blocks each turn if able. | Description$ Each creature your opponents control blocks this turn if able.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/predatory_rampage.jpg
SetInfo:M13|Rare|http://magiccards.info/scans/en/m13/180.jpg
diff --git a/res/cardsfolder/p/prismatic_strands.txt b/res/cardsfolder/p/prismatic_strands.txt
index 732624f7ddf..aab6ff31e53 100644
--- a/res/cardsfolder/p/prismatic_strands.txt
+++ b/res/cardsfolder/p/prismatic_strands.txt
@@ -5,7 +5,7 @@ Text:no text
K:Flashback tapXType<1/Creature.White/white creature>
A:SP$ ChooseColor | Cost$ 2 W | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | Name$ Prismatic Strands Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that sources of the color of your choice would deal this turn.
-SVar:STPrevent:Mode$ PreventDamage | Target$ Creature,Player | Source$ Card.ChosenColor | Description$ Prevent all damage that sources of the chosen color would deal this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature,Player | Source$ Card.ChosenColor | Description$ Prevent all damage that sources of the chosen color would deal this turn.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/prismatic_strands.jpg
diff --git a/res/cardsfolder/p/psychic_trance.txt b/res/cardsfolder/p/psychic_trance.txt
index cbaa5d1eed2..ea47fe32167 100644
--- a/res/cardsfolder/p/psychic_trance.txt
+++ b/res/cardsfolder/p/psychic_trance.txt
@@ -3,7 +3,7 @@ ManaCost:2 U U
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 U U | Name$ Psychic Trance Effect | StaticAbilities$ Static | SVars$ Counter | SpellDescription$ Until end of turn, Wizards you control gain "Tap: Counter target spell."
-SVar:Static:Mode$ Continuous | Affected$ Card.Wizard+YouCtrl | AddAbility$ Counter | Description$ All Wizards you control have Tap: Counter target spell.
+SVar:Static:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Card.Wizard+YouCtrl | AddAbility$ Counter | Description$ All Wizards you control have Tap: Counter target spell.
SVar:Counter:AB$ Counter | Cost$ T | TargetType$ Spell | ValidTgts$ Card | SpellDescription$ Counter target spell
SVar:RemRandomDeck:True
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/q/quicken.txt b/res/cardsfolder/q/quicken.txt
index ba548cc49ef..afbd7807f40 100644
--- a/res/cardsfolder/q/quicken.txt
+++ b/res/cardsfolder/q/quicken.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
A:SP$Effect | Cost$ U | Name$ Quicken effect | StaticAbilities$ QuickenStA | Triggers$ SpellCastTrig | SVars$ Quickened | SubAbility$ DBDraw | SpellDescription$ The next sorcery card you cast this turn can be cast as though it had flash.
SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card.
-SVar:QuickenStA:Mode$ Continuous | Affected$ Sorcery.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ HIDDEN Flash
+SVar:QuickenStA:Mode$ Continuous | EffectZone$ Command | Affected$ Sorcery.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ HIDDEN Flash
SVar:SpellCastTrig:Mode$ SpellCast | ValidCard$ Sorcery | ValidActivatingPlayer$ You | Execute$ Quickened | Static$ True | TriggerDescription$ The next sorcery card you cast this turn can be cast as though it had flash.
SVar:Quickened:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Graveyard
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/r/radiant_kavu.txt b/res/cardsfolder/r/radiant_kavu.txt
index 754a614246a..d35373a836a 100644
--- a/res/cardsfolder/r/radiant_kavu.txt
+++ b/res/cardsfolder/r/radiant_kavu.txt
@@ -4,7 +4,7 @@ Types:Creature Kavu
Text:no text
PT:3/3
A:AB$ Effect | Cost$ R G W | Name$ Radiant Kavu Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all combat damage blue creatures and black creatures would deal this turn.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.Blue,Creature.Black | CombatDamage$ True | Description$ Prevent all combat damage blue creatures and black creatures would deal this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.Blue,Creature.Black | CombatDamage$ True | Description$ Prevent all combat damage blue creatures and black creatures would deal this turn.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/radiant_kavu.jpg
diff --git a/res/cardsfolder/r/rootborn_defenses.txt b/res/cardsfolder/r/rootborn_defenses.txt
index 2a0d6d048f4..8af6f41761f 100644
--- a/res/cardsfolder/r/rootborn_defenses.txt
+++ b/res/cardsfolder/r/rootborn_defenses.txt
@@ -6,7 +6,7 @@ A:SP$ ChooseCard | Cost$ 2 W | Defined$ You | Amount$ 1 | Choices$ Creature.toke
SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | NumCopies$ 1 | SubAbility$ DBPumpAll
SVar:DBPumpAll:DB$ Effect | Name$ Rootborn Defenses Effect | StaticAbilities$ KWPump | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Indestructible | Description$ Creatures you control are indestructible this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Indestructible | Description$ Creatures you control are indestructible this turn.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/rootborn_defenses.jpg
SetInfo:RTR|Common|http://magiccards.info/scans/en/rtr/19.jpg
diff --git a/res/cardsfolder/r/ruthless_invasion.txt b/res/cardsfolder/r/ruthless_invasion.txt
index 1466c5aedc9..40f03a1f9c0 100644
--- a/res/cardsfolder/r/ruthless_invasion.txt
+++ b/res/cardsfolder/r/ruthless_invasion.txt
@@ -3,7 +3,7 @@ ManaCost:3 PR
Types:Sorcery
Text:no text
A:SP$ Effect | Cost$ 3 PR | Name$ Ruthless Invasion Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Nonartifact creatures can't block this turn.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.nonArtifact | AddKeyword$ CARDNAME can't block. | Description$ Nonartifact creatures can't block this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.nonArtifact | AddKeyword$ CARDNAME can't block. | Description$ Nonartifact creatures can't block this turn.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/ruthless_invasion.jpg
diff --git a/res/cardsfolder/s/safe_passage.txt b/res/cardsfolder/s/safe_passage.txt
index ed9a0925bb2..ce297e8722d 100644
--- a/res/cardsfolder/s/safe_passage.txt
+++ b/res/cardsfolder/s/safe_passage.txt
@@ -3,7 +3,7 @@ ManaCost:2 W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 W | Name$ Safe Passage Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that would be dealt to you and creatures you control this turn.
-SVar:STPrevent:Mode$ PreventDamage | Target$ You,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to you and creatures you control this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to you and creatures you control this turn.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/safe_passage.jpg
SetInfo:M11|Common|http://magiccards.info/scans/en/m11/26.jpg
diff --git a/res/cardsfolder/s/scarecrow.txt b/res/cardsfolder/s/scarecrow.txt
index 311b38f5a26..c4a0323fa24 100644
--- a/res/cardsfolder/s/scarecrow.txt
+++ b/res/cardsfolder/s/scarecrow.txt
@@ -4,7 +4,7 @@ Types:Artifact Creature Scarecrow
Text:no text
PT:2/2
A:AB$ Effect | Cost$ 6 T | Name$ Scarecrow Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to you this turn by creatures with flying.
-SVar:STPrevent:Mode$ PreventDamage | Target$ You | Source$ Creature.withFlying | Description$ Prevent all damage that would be dealt to you this turn by creatures with flying.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You | Source$ Creature.withFlying | Description$ Prevent all damage that would be dealt to you this turn by creatures with flying.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/scarecrow.jpg
diff --git a/res/cardsfolder/s/scouts_warning.txt b/res/cardsfolder/s/scouts_warning.txt
index 355e35858ca..0249efad034 100644
--- a/res/cardsfolder/s/scouts_warning.txt
+++ b/res/cardsfolder/s/scouts_warning.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
A:SP$Effect | Cost$ W | Name$ Scout's Warning effect | StaticAbilities$ ScoutFlash | Triggers$ SpellCastTrig | SVars$ WarningGiven | SubAbility$ DBDraw | SpellDescription$ The next creature card you play this turn can be played as though it had flash.
SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card.
-SVar:ScoutFlash:Mode$ Continuous | Affected$ Creature.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ HIDDEN Flash
+SVar:ScoutFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ HIDDEN Flash
SVar:SpellCastTrig:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ WarningGiven | Static$ True | TriggerDescription$ The next creature card you play this turn can be played as though it had flash.
SVar:WarningGiven:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Graveyard
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/s/silence.txt b/res/cardsfolder/s/silence.txt
index 62ee70ff879..34a6fc6378b 100644
--- a/res/cardsfolder/s/silence.txt
+++ b/res/cardsfolder/s/silence.txt
@@ -3,7 +3,7 @@ ManaCost:W
Types:Instant
Text:no text
A:SP$ Effect | Cost$ W | Name$ Silence Effect | StaticAbilities$ STCantBeCast | AILogic$ BeginningOfOppTurn | SpellDescription$ Your opponents can't cast spells this turn. (Spells cast before this resolves are unaffected.)
-SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ Opponent | Description$ Your opponents can't cast spells.
+SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Opponent | Description$ Your opponents can't cast spells.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/silence.jpg
SetInfo:M11|Rare|http://magiccards.info/scans/en/m11/30.jpg
diff --git a/res/cardsfolder/s/sirens_call.txt b/res/cardsfolder/s/sirens_call.txt
index e77d5651c0b..63d0fafda18 100644
--- a/res/cardsfolder/s/sirens_call.txt
+++ b/res/cardsfolder/s/sirens_call.txt
@@ -3,7 +3,7 @@ ManaCost:U
Types:Instant
Text:no text
A:SP$ Effect | Cost$ U | Name$ Siren's Call Effect | StaticAbilities$ KWPump | ActivationPhases$ Upkeep->BeginCombat | OpponentTurn$ True | SpellDescription$ Cast CARDNAME only during an opponent's turn, before attackers are declared. Creatures the active player controls attack this turn if able. At the beginning of the next end step, destroy all non-Wall creatures that player controls that didn't attack this turn. Ignore this effect for each creature the player didn't control continuously since the beginning of the turn. | SubAbility$ DestroyPacifist
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.ActivePlayerCtrl | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Creatures the active player controls attack this turn if able.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.ActivePlayerCtrl | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Creatures the active player controls attack this turn if able.
SVar:DestroyPacifist:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigDestroy | TriggerDescription$ At the beginning of the next end step, destroy all non-Wall creatures that player controls that didn't attack this turn.
SVar:TrigDestroy:DB$DestroyAll | ValidCards$ Creature.ActivePlayerCtrl+notAttackedThisTurn+nonWall+notFirstTurnControlled | SubAbility$ DBCleanup
SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True
diff --git a/res/cardsfolder/s/sivvis_ruse.txt b/res/cardsfolder/s/sivvis_ruse.txt
index dc29e52c103..b828aff0477 100644
--- a/res/cardsfolder/s/sivvis_ruse.txt
+++ b/res/cardsfolder/s/sivvis_ruse.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AddHiddenKeyword$ HIDDEN Alternative Cost 0 | CheckSVar$ X | CheckSecondSVar$ Y | Description$ If an opponent controls a Mountain and you control a Plains, you may cast CARDNAME without paying its mana cost.
A:SP$ Effect | Cost$ 2 W W | Name$ Sivvi's Ruse Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt this turn to creatures you control.
-SVar:STPrevent:Mode$ PreventDamage | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control.
SVar:X:Count$Valid Mountain.OppCtrl
SVar:Y:Count$Valid Plains.YouCtrl
SVar:RemAIDeck:True
diff --git a/res/cardsfolder/s/snag.txt b/res/cardsfolder/s/snag.txt
index 54db8208c50..2ac6c9ea2c1 100644
--- a/res/cardsfolder/s/snag.txt
+++ b/res/cardsfolder/s/snag.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
SVar:AltCost:Cost$ Discard<1/Forest>
A:SP$ Effect | Cost$ 3 G | Name$ Snag Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt by unblocked creatures this turn.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.unblocked | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt by unblocked creatures this turn.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.unblocked | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt by unblocked creatures this turn.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/snag.jpg
SetInfo:PCY|Uncommon|http://magiccards.info/scans/en/pr/124.jpg
diff --git a/res/cardsfolder/s/solfatara.txt b/res/cardsfolder/s/solfatara.txt
index ce401b68950..c28035f5ced 100644
--- a/res/cardsfolder/s/solfatara.txt
+++ b/res/cardsfolder/s/solfatara.txt
@@ -3,7 +3,7 @@ ManaCost:2 R
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 R | ValidTgts$ Player | Name$ Solfatara Effect | StaticAbilities$ STCantPlayLand | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Target player can't play land cards this turn.
-SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn.
+SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn.
SVar:DBDraw:DB$Draw | NumCards$ 1 | NextUpkeep$ True | SpellDescription$ Draw a card at the beginning of the next upkeep.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/solfatara.jpg
diff --git a/res/cardsfolder/s/sorin_lord_of_innistrad.txt b/res/cardsfolder/s/sorin_lord_of_innistrad.txt
index ebaffdee094..d94f7eb92fb 100644
--- a/res/cardsfolder/s/sorin_lord_of_innistrad.txt
+++ b/res/cardsfolder/s/sorin_lord_of_innistrad.txt
@@ -5,7 +5,7 @@ Text:no text
Loyalty:3
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | TokenAmount$ 1 | TokenImage$ b 1 1 vampire dka | TokenName$ Vampire | TokenColors$ Black | TokenTypes$ Creature,Vampire | TokenOwner$ You | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Lifelink | Planeswalker$ True | SpellDescription$ Put a 1/1 black Vampire creature token with lifelink onto the battlefield.
A:AB$ Effect | Cost$ SubCounter<2/LOYALTY> | Name$ Sorin, Lord of Innistrad emblem | Image$ sorin_lord_of_innistrad_emblem | StaticAbilities$ STPump | Planeswalker$ True | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Creatures you control get +1/+0."
-SVar:STPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddPower$ 1
+SVar:STPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddPower$ 1
A:AB$ Destroy | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature,Planeswalker.Other | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Select target creatures or other planeswalkers | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Destroy up to 3 target creatures and/or other planeswalkers. Return each card put into a graveyard this way to the battlefield under your control.
SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Cost$ 0 | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True
diff --git a/res/cardsfolder/s/stigma_lasher.txt b/res/cardsfolder/s/stigma_lasher.txt
index b02d2ec4d30..8b048633efb 100644
--- a/res/cardsfolder/s/stigma_lasher.txt
+++ b/res/cardsfolder/s/stigma_lasher.txt
@@ -6,7 +6,7 @@ PT:2/2
K:Wither
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigEffect | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage to a player, that player can't gain life for the rest of the game.
SVar:TrigEffect:AB$Effect | Cost$ 0 | Name$ Stigma Lasher Effect | StaticAbilities$ CantGainLife | Duration$ Permanent | RememberObjects$ TriggeredAffected
-SVar:CantGainLife:Mode$ Continuous | Affected$ Player.isRemembered | AddKeyword$ You can't gain life. | Description$ The damaged player can't gain life for the rest of the game.
+SVar:CantGainLife:Mode$ Continuous | EffectZone$ Command | Affected$ Player.isRemembered | AddKeyword$ You can't gain life. | Description$ The damaged player can't gain life for the rest of the game.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/stigma_lasher.jpg
SetInfo:EVE|Rare|http://magiccards.info/scans/en/eve/62.jpg
diff --git a/res/cardsfolder/t/tamiyo_the_moon_sage.txt b/res/cardsfolder/t/tamiyo_the_moon_sage.txt
index 030e3a865eb..d24ce15c5a7 100644
--- a/res/cardsfolder/t/tamiyo_the_moon_sage.txt
+++ b/res/cardsfolder/t/tamiyo_the_moon_sage.txt
@@ -8,8 +8,8 @@ SVar:TamiyoPump:DB$Pump | Defined$ Targeted | Permanent$ True | KW$ HIDDEN This
A:AB$ Draw | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Player | TgtPrompt$ Select target player | Defined$ You | NumCards$ X | References$ X | Planeswalker$ True | SpellDescription$ Draw a card for each tapped creature target player controls.
SVar:X:Count$Valid Creature.tapped+TargetedPlayerCtrl
A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Tamiyo, the Moon Sage emblem | Image$ tamiyo_the_moon_sage_emblem | StaticAbilities$ UnlimitedHand | Triggers$ TamiyoCardToGrave | SVars$ TamiyoReturn | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You have no maximum hand size" and "Whenever a card is put into your graveyard from anywhere, you may return it to your hand."
-SVar:UnlimitedHand:Mode$ Continuous | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size.
-SVar:TamiyoCardToGrave:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TamiyoReturn | TriggerDescription$ Whenever a card is put into your graveyard from anywhere, you may return it to your hand.
+SVar:UnlimitedHand:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size.
+SVar:TamiyoCardToGrave:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+YouCtrl | OptionalDecider$ You | Execute$ TamiyoReturn | TriggerDescription$ Whenever a card is put into your graveyard from anywhere, you may return it to your hand.
SVar:TamiyoReturn:AB$ChangeZone | Cost$ 0 | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Hand
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/tamiyo_the_moon_sage.jpg
diff --git a/res/cardsfolder/t/tanglesap.txt b/res/cardsfolder/t/tanglesap.txt
index d4a18f5ea5f..c5704fbb4fd 100644
--- a/res/cardsfolder/t/tanglesap.txt
+++ b/res/cardsfolder/t/tanglesap.txt
@@ -3,7 +3,7 @@ ManaCost:1 G
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 G | Name$ Tanglesap Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt this turn by creatures without trample.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.withoutTrample | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures without trample.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.withoutTrample | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures without trample.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/tanglesap.jpg
SetInfo:ZEN|Common|http://magiccards.info/scans/en/zen/186.jpg
diff --git a/res/cardsfolder/t/tectonic_rift.txt b/res/cardsfolder/t/tectonic_rift.txt
index 337b4b2c0f5..3d9f2d57008 100644
--- a/res/cardsfolder/t/tectonic_rift.txt
+++ b/res/cardsfolder/t/tectonic_rift.txt
@@ -4,7 +4,7 @@ Types:Sorcery
Text:no text
A:SP$ Destroy | Cost$ 3 R | ValidTgts$ Land | TgtPrompt$ Select target land | SubAbility$ DBEffect | SpellDescription$ Destroy target land. Creatures without flying can't block this turn.
SVar:DBEffect:DB$Effect | Name$ Tectonic Rift Effect | StaticAbilities$ KWPump
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/tectonic_rift.jpg
SetInfo:M12|Uncommon|http://magiccards.info/scans/en/m12/157.jpg
diff --git a/res/cardsfolder/t/terrifying_presence.txt b/res/cardsfolder/t/terrifying_presence.txt
index f258c708f64..521a52d0d92 100644
--- a/res/cardsfolder/t/terrifying_presence.txt
+++ b/res/cardsfolder/t/terrifying_presence.txt
@@ -3,7 +3,7 @@ ManaCost:1 G
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 1 G | Name$ Terrifying Presence Effect | ValidTgts$ Creature | TgtPrompt$ Select target creature | StaticAbilities$ STPrevent | RememberObjects$ Targeted | SpellDescription$ Prevent all damage that would be dealt this turn by creatures other than target creature.
-SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.IsNotRemembered | CombatDamage$ True | Description$ Prevent all damage that would be dealt this turn by creatures other than target creature.
+SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.IsNotRemembered | CombatDamage$ True | Description$ Prevent all damage that would be dealt this turn by creatures other than target creature.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/terrifying_presence.jpg
diff --git a/res/cardsfolder/t/titanias_song.txt b/res/cardsfolder/t/titanias_song.txt
index f182f7b927b..37defe43903 100644
--- a/res/cardsfolder/t/titanias_song.txt
+++ b/res/cardsfolder/t/titanias_song.txt
@@ -5,7 +5,7 @@ Text:no text
S:Mode$ Continuous | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | RemoveAllAbilities$ True | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigEffect | Static$ True | TriggerDescription$ If CARDNAME leaves the battlefield, this effect continues until end of turn.
SVar:TrigEffect:AB$ Effect | Cost$ 0 | Name$ Titania's Song Effect | StaticAbilities$ KWAnimateAll | SVars$ AffectedX | References$ AffectedX
-SVar:KWAnimateAll:Mode$ Continuous | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | RemoveAllAbilities$ True | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost.
+SVar:KWAnimateAll:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | RemoveAllAbilities$ True | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost.
SVar:AffectedX:Count$CardManaCost
SVar:PlayMain1:TRUE
SVar:RemRandomDeck:True
diff --git a/res/cardsfolder/t/turf_wound.txt b/res/cardsfolder/t/turf_wound.txt
index 174d506b769..4b7a1ac9925 100644
--- a/res/cardsfolder/t/turf_wound.txt
+++ b/res/cardsfolder/t/turf_wound.txt
@@ -3,7 +3,7 @@ ManaCost:2 R
Types:Instant
Text:no text
A:SP$ Effect | Cost$ 2 R | ValidTgts$ Player | Name$ Turf Wound Effect | StaticAbilities$ STCantPlayLand | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Target player can't play land cards this turn.
-SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn.
+SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn.
SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/turf_wound.jpg
diff --git a/res/cardsfolder/u/undergrowth.txt b/res/cardsfolder/u/undergrowth.txt
index 7141f60470a..bbcecf2b777 100644
--- a/res/cardsfolder/u/undergrowth.txt
+++ b/res/cardsfolder/u/undergrowth.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:As an additional cost to cast Undergrowth, you may pay 2 R.
A:SP$ Fog | Cost$ G | SpellDescription$ Prevent all combat damage that would be dealt this turn.
A:SP$ Effect | Cost$ 2 R G | Name$ Undergrowth Effect | StaticAbilities$ KWPump | SpellDescription$ If its additional cost was paid, CARDNAME doesn't affect combat damage that would be dealt by red creatures.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature.nonRed | AddHiddenKeyword$ HIDDEN Prevent all combat damage that would be dealt by CARDNAME. | Description$ Prevent all combat damage this turn except that from red creatures.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.nonRed | AddHiddenKeyword$ HIDDEN Prevent all combat damage that would be dealt by CARDNAME. | Description$ Prevent all combat damage this turn except that from red creatures.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/undergrowth.jpg
diff --git a/res/cardsfolder/u/unstable_footing.txt b/res/cardsfolder/u/unstable_footing.txt
index 758ca46b0c1..70cd04d1225 100644
--- a/res/cardsfolder/u/unstable_footing.txt
+++ b/res/cardsfolder/u/unstable_footing.txt
@@ -4,7 +4,7 @@ Types:Instant
Text:no text
K:Kicker 3 R
A:SP$ Effect | Cost$ R | Name$ Unstable Footing | StaticAbilities$ STCantPrevent | SubAbility$ DBDamage | SpellDescription$ Damage can't be prevented this turn. If CARDNAME was kicked, it deals 5 damage to target player.
-SVar:STCantPrevent:Mode$ Continuous | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented.
+SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented.
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select another target player | NumDmg$ 5 | NoPrevention$ True | Condition$ Kicked | ConditionDescription$ If it was kicked,
SVar:RemAIDeck:True
SVar:Rarity:Uncommon
diff --git a/res/cardsfolder/v/veiling_oddity.txt b/res/cardsfolder/v/veiling_oddity.txt
index 48229c6ae5c..0ee20cb7d75 100644
--- a/res/cardsfolder/v/veiling_oddity.txt
+++ b/res/cardsfolder/v/veiling_oddity.txt
@@ -6,7 +6,7 @@ PT:2/3
K:Suspend:4:1 U
T:Mode$ CounterRemoved | ValidCard$ Card.Self | TriggerZones$ Exile | CounterType$ TIME | Execute$ TrigEffect | IsPresent$ Card.Self+counters_GE1_TIME | PresentZone$ Exile | PresentCompare$ EQ0 | TriggerDescription$ When the last time counter is removed from CARDNAME while it's exiled, creatures are unblockable this turn.
SVar:TrigEffect:AB$ Effect | Cost$ 0 | Name$ Veiling Oddity Effect | StaticAbilities$ KWPump
-SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/veiling_oddity.jpg
SetInfo:PLC|Common|http://magiccards.info/scans/en/pc/51.jpg
diff --git a/res/cardsfolder/v/veilstone_amulet.txt b/res/cardsfolder/v/veilstone_amulet.txt
index 6d80f5ec0f5..b3208a3897d 100644
--- a/res/cardsfolder/v/veilstone_amulet.txt
+++ b/res/cardsfolder/v/veilstone_amulet.txt
@@ -4,7 +4,7 @@ Types:Artifact
Text:no text
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ Whenever you cast a spell, creatures you control can't be the targets of spells or abilities your opponents control this turn.
SVar:TrigEffect:AB$Effect | Cost$ 0 | Name$ Veilstone Amulet Effect | StaticAbilities$ CantTarget
-SVar:CantTarget:Mode$ CantTarget | ValidCard$ Creature.YouCtrl | Activator$ Opponent | Description$ Creatures you control can't be the targets of spells or abilities your opponents control
+SVar:CantTarget:Mode$ CantTarget | EffectZone$ Command | ValidCard$ Creature.YouCtrl | Activator$ Opponent | Description$ Creatures you control can't be the targets of spells or abilities your opponents control
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/veilstone_amulet.jpg
diff --git a/res/cardsfolder/v/venser_the_sojourner.txt b/res/cardsfolder/v/venser_the_sojourner.txt
index 835b7001960..10adf620bf6 100644
--- a/res/cardsfolder/v/venser_the_sojourner.txt
+++ b/res/cardsfolder/v/venser_the_sojourner.txt
@@ -8,7 +8,7 @@ SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ Tr
SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ Remembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ Effect | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Name$ Venser, the Sojourner Effect | Image$ venser_the_sojourner_emblem | StaticAbilities$ KWPump | SpellDescription$ Creatures are unblockable this turn.
-SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn.
A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Venser, the Sojourner emblem | Triggers$ TrigSpellCast | SVars$ EffSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a spell, exile target permanent."
SVar:TrigSpellCast:Mode$ SpellCast | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a spell, exile target permanent.
SVar:EffSpellCast:AB$ChangeZone | Cost$ 0 | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent
diff --git a/res/cardsfolder/w/winding_canyons.txt b/res/cardsfolder/w/winding_canyons.txt
index b5e29e40191..4bc765a3f2e 100644
--- a/res/cardsfolder/w/winding_canyons.txt
+++ b/res/cardsfolder/w/winding_canyons.txt
@@ -4,7 +4,7 @@ Types:Land
Text:no text
A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add 1 to your mana pool.
A:AB$ Effect | Cost$ 2 T | Name$ Winding Canyons Effect | StaticAbilities$ GiveFlash | SpellDescription$ Until end of turn, you may play creature cards as though they had flash.
-SVar:GiveFlash:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Flash | AffectedZone$ Exile,Graveyard,Hand,Library | Description$ Until end of turn, you may play creature cards as though they had flash.
+SVar:GiveFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Flash | AffectedZone$ Exile,Graveyard,Hand,Library | Description$ Until end of turn, you may play creature cards as though they had flash.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/winding_canyons.jpg
diff --git a/res/cardsfolder/x/xantid_swarm.txt b/res/cardsfolder/x/xantid_swarm.txt
index b4bd793854d..7ecf4caea3e 100644
--- a/res/cardsfolder/x/xantid_swarm.txt
+++ b/res/cardsfolder/x/xantid_swarm.txt
@@ -6,7 +6,7 @@ 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:AB$ Effect | Cost$ 0 | Name$ Xantid Swarm Effect | StaticAbilities$ CantBeCast
-SVar:CantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ DefendingPlayer | Description$ Defending player can't cast spells.
+SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ DefendingPlayer | Description$ Defending player can't cast spells.
SVar:RemRandomDeck:True
SVar:HasAttackEffect:TRUE
SVar:Rarity:Rare
diff --git a/res/cardsfolder/y/yawgmoths_will.txt b/res/cardsfolder/y/yawgmoths_will.txt
index 9f9e8cded79..f8b07ae6e08 100644
--- a/res/cardsfolder/y/yawgmoths_will.txt
+++ b/res/cardsfolder/y/yawgmoths_will.txt
@@ -3,7 +3,7 @@ ManaCost:2 B
Types:Sorcery
Text:no text
A:SP$ Effect | Cost$ 2 B | Name$ Yawgmoth's Will Effect | StaticAbilities$ STPlay | Keywords$ Exile | SpellDescription$ Until end of turn, you may play cards from your graveyard. If a card would be put into your graveyard from anywhere this turn, exile that card instead.
-SVar:STPlay:Mode$ Continuous | Affected$ Card.YouCtrl | AffectedZone$ Graveyard | AddHiddenKeyword$ HIDDEN May be played | Description$ You may play cards from your graveyard.
+SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.YouCtrl | AffectedZone$ Graveyard | AddHiddenKeyword$ HIDDEN May be played | Description$ You may play cards from your graveyard.
SVar:Exile:If a card would be put into your graveyard from anywhere, exile it instead.
SVar:RemAIDeck:True
SVar:Rarity:Rare
diff --git a/res/layouts/home_default.xml b/res/layouts/home_default.xml
index 2a661eed3dd..50c5ac0b7c6 100644
--- a/res/layouts/home_default.xml
+++ b/res/layouts/home_default.xml
@@ -21,5 +21,6 @@
HOME_CONSTRUCTEDHOME_DRAFTHOME_SEALED
+ HOME_VANGUARD
\ No newline at end of file
diff --git a/res/layouts/match_default.xml b/res/layouts/match_default.xml
index 95a9086682e..69ee7243866 100644
--- a/res/layouts/match_default.xml
+++ b/res/layouts/match_default.xml
@@ -14,6 +14,7 @@
FIELD_1
+ COMMAND_1HAND_0
@@ -23,6 +24,7 @@
FIELD_0
+ COMMAND_0CARD_PICTURE
diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java
index a6c6168480a..015d4b2727d 100644
--- a/src/main/java/forge/Card.java
+++ b/src/main/java/forge/Card.java
@@ -8058,7 +8058,7 @@ public class Card extends GameEntity implements Comparable {
}
// Prevent Damage static abilities
- for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage, isCombat);
@@ -8844,7 +8844,7 @@ public class Card extends GameEntity implements Comparable {
}
// CantTarget static abilities
- for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
if (stAb.applyAbility("CantTarget", this, sa)) {
diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java
index 9b689a9d721..e20ca507f0f 100644
--- a/src/main/java/forge/GameAction.java
+++ b/src/main/java/forge/GameAction.java
@@ -212,7 +212,8 @@ public class GameAction {
}
// Tokens outside the battlefield disappear immediately.
- if (copied.isToken() && !zoneTo.is(ZoneType.Battlefield)) {
+ if ((copied.isToken() && !zoneTo.is(ZoneType.Battlefield)
+ && !((copied.isType("Emblem") || copied.isType("Effect")) && zoneTo.is(ZoneType.Command)))) {
zoneTo.remove(copied);
}
@@ -778,6 +779,9 @@ public class GameAction {
} else if (name.equals(ZoneType.Ante)) {
final PlayerZone ante = c.getOwner().getZone(ZoneType.Ante);
return this.moveTo(ante, c);
+ } else if (name.equals(ZoneType.Command)) {
+ final PlayerZone command = c.getOwner().getZone(ZoneType.Command);
+ return this.moveTo(command, c);
} else {
return this.moveToStack(c);
}
@@ -1916,6 +1920,7 @@ public class GameAction {
List cardsOnBattlefield = Lists.newArrayList(game.getCardsIn(ZoneType.Battlefield));
cardsOnBattlefield.addAll(game.getCardsIn(ZoneType.Stack));
+ cardsOnBattlefield.addAll(game.getCardsIn(ZoneType.Command));
if (!cardsOnBattlefield.contains(originalCard)) {
cardsOnBattlefield.add(originalCard);
}
diff --git a/src/main/java/forge/card/CardRules.java b/src/main/java/forge/card/CardRules.java
index efbbfa7ed89..4218cf5fc6d 100644
--- a/src/main/java/forge/card/CardRules.java
+++ b/src/main/java/forge/card/CardRules.java
@@ -46,6 +46,10 @@ public final class CardRules {
private String toughness = null;
private String loyalty = null;
+
+ //Vanguard avatar modifiers
+ private Integer life = null;
+ private Integer hand = null;
Map setsPrinted = null;
@@ -256,6 +260,15 @@ public final class CardRules {
this.iToughness = StringUtils.isNumeric(this.toughness) ? Integer.parseInt(this.toughness) : 0;
} else if (this.getType().isPlaneswalker()) {
this.loyalty = this.characteristics.getPtLine();
+ } else if (this.getType().isVanguard()) {
+ String pt = this.characteristics.getPtLine();
+ final int slashPos = this.characteristics.getPtLine() == null ? -1 : this.characteristics.getPtLine()
+ .indexOf('/');
+ if (slashPos == -1) {
+ throw new RuntimeException(String.format("Vanguard '%s' has bad hand/life stats", this.getName()));
+ }
+ this.hand = Integer.parseInt(pt.substring(0,pt.indexOf('/')));
+ this.life = Integer.parseInt(pt.substring(pt.indexOf('/')+1));
}
if (this.characteristics.getSetsData().isEmpty()) {
@@ -386,6 +399,22 @@ public final class CardRules {
public List getKeywords() {
return characteristics.getKeywords();
}
+
+ /**
+ * @return the hand
+ */
+ public Integer getHand() {
+ return hand;
+ }
+
+ /**
+ * @return the life
+ */
+ public Integer getLife() {
+ return life;
+ }
+
+
}
diff --git a/src/main/java/forge/card/CardRulesReader.java b/src/main/java/forge/card/CardRulesReader.java
index 798cfb92fce..a342c935f7d 100644
--- a/src/main/java/forge/card/CardRulesReader.java
+++ b/src/main/java/forge/card/CardRulesReader.java
@@ -111,6 +111,12 @@ public class CardRulesReader {
this.characteristics[this.curCharacteristics].setDeckNeeds(CardRulesReader.getValueAfterKey(line, "DeckNeeds:"));
}
break;
+
+ case 'H':
+ if(line.startsWith("HandLifeModifier:")) {
+ this.characteristics[this.curCharacteristics].setPtLine(CardRulesReader.getValueAfterKey(line, "HandLifeModifier:"));
+ }
+ break;
case 'K':
if (line.startsWith("K:")) {
diff --git a/src/main/java/forge/card/CardType.java b/src/main/java/forge/card/CardType.java
index 387c0650dde..561b0281049 100644
--- a/src/main/java/forge/card/CardType.java
+++ b/src/main/java/forge/card/CardType.java
@@ -203,6 +203,15 @@ public final class CardType implements Comparable {
public boolean isSorcery() {
return this.coreType.contains(CardCoreType.Sorcery);
}
+
+ /**
+ * Checks if is vanguard.
+ *
+ * @return true if vanguard
+ */
+ public boolean isVanguard() {
+ return this.coreType.contains(CardCoreType.Vanguard);
+ }
/**
* Checks if is enchantment.
diff --git a/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java b/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java
index f4b075546a4..5443c46c914 100644
--- a/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java
+++ b/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java
@@ -14,6 +14,7 @@ import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
import forge.game.player.Player;
+import forge.game.zone.ZoneType;
public class EffectEffect extends SpellEffect {
@@ -223,7 +224,7 @@ public class EffectEffect extends SpellEffect {
// TODO: Add targeting to the effect so it knows who it's dealing with
Singletons.getModel().getGame().getTriggerHandler().suppressMode(TriggerType.ChangesZone);
- Singletons.getModel().getGame().getAction().moveToPlay(eff);
+ Singletons.getModel().getGame().getAction().moveTo(ZoneType.Command, eff);
Singletons.getModel().getGame().getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
diff --git a/src/main/java/forge/card/spellability/AbilityActivated.java b/src/main/java/forge/card/spellability/AbilityActivated.java
index 3c2d16410a0..70ab2e7f7dd 100644
--- a/src/main/java/forge/card/spellability/AbilityActivated.java
+++ b/src/main/java/forge/card/spellability/AbilityActivated.java
@@ -93,7 +93,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S
}
// CantBeActivated static abilities
- for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
if (stAb.applyAbility("CantBeActivated", c, this)) {
diff --git a/src/main/java/forge/card/spellability/Spell.java b/src/main/java/forge/card/spellability/Spell.java
index 793b52983ce..d715ef174eb 100644
--- a/src/main/java/forge/card/spellability/Spell.java
+++ b/src/main/java/forge/card/spellability/Spell.java
@@ -119,7 +119,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable
}
// CantBeCast static abilities
- final List allp = new ArrayList(Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield));
+ final List allp = new ArrayList(Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command")));
allp.add(card);
for (final Card ca : allp) {
final ArrayList staticAbilities = ca.getStaticAbilities();
diff --git a/src/main/java/forge/deck/Deck.java b/src/main/java/forge/deck/Deck.java
index 5df67228afe..4db81fdf680 100644
--- a/src/main/java/forge/deck/Deck.java
+++ b/src/main/java/forge/deck/Deck.java
@@ -62,6 +62,9 @@ public class Deck extends DeckBase {
private final DeckSection main;
private final DeckSection sideboard;
+ private final DeckSection commander;
+ private final DeckSection planes;
+ private final DeckSection schemes;
// gameType is from Constant.GameType, like GameType.Regular
/**
@@ -82,6 +85,9 @@ public class Deck extends DeckBase {
super(name0);
this.main = new DeckSection();
this.sideboard = new DeckSection();
+ this.commander = new DeckSection();
+ this.planes = new DeckSection();
+ this.schemes = new DeckSection();
}
/**
@@ -197,7 +203,9 @@ public class Deck extends DeckBase {
d.getMain().set(Deck.readCardList(sections.get("main")));
d.getSideboard().set(Deck.readCardList(sections.get("sideboard")));
-
+ d.getCommander().set(Deck.readCardList(sections.get("commander")));
+ d.getPlanes().set(Deck.readCardList(sections.get("planes")));
+ d.getSchemes().set(Deck.readCardList(sections.get("schemes")));
return d;
}
@@ -270,6 +278,15 @@ public class Deck extends DeckBase {
out.add(String.format("%s", "[sideboard]"));
out.addAll(Deck.writeCardPool(this.getSideboard()));
+
+ out.add(String.format("%s", "[commander]"));
+ out.addAll(Deck.writeCardPool(this.getCommander()));
+
+ out.add(String.format("%s", "[planes]"));
+ out.addAll(Deck.writeCardPool(this.getPlanes()));
+
+ out.add(String.format("%s", "[schemes]"));
+ out.addAll(Deck.writeCardPool(this.getSchemes()));
return out;
}
@@ -326,9 +343,70 @@ public class Deck extends DeckBase {
return false;
}
+ if(type == GameType.Commander)
+ {//Must contain exactly 1 legendary Commander and no sideboard.
+ //TODO:Enforce color identity
+ if(getCommander().countAll() != 1)
+ return false;
+
+ if(!getCommander().toFlatList().get(0).getType().contains("Legendary"))
+ return false;
+
+ //No sideboarding in Commander
+ if(getSideboard().countAll() > 0)
+ return false;
+ }
+ else if(type == GameType.Planechase)
+ {//Must contain at least 10 planes/phenomenons, but max 2 phenomenons. Singleton.
+ if(getPlanes().countAll() < 10)
+ return false;
+ int phenoms = 0;
+ for(CardPrinted cp : getPlanes().toFlatList())
+ {
+ if(cp.getType().contains("Phenomenon"))
+ phenoms++;
+ if(getPlanes().count(cp) > 1)
+ return false;
+ }
+ if(phenoms > 2)
+ return false;
+ }
+ else if(type == GameType.Archenemy)
+ {//Must contain at least 20 schemes, max 2 of each.
+ if(getSchemes().countAll() < 20)
+ return false;
+
+ for(CardPrinted cp : getSchemes().toFlatList())
+ {
+ if(getSchemes().count(cp) > 2)
+ return false;
+ }
+ }
+
return true;
}
+ /**
+ * @return the commander
+ */
+ public DeckSection getCommander() {
+ return commander;
+ }
+
+ /**
+ * @return the planes
+ */
+ public DeckSection getPlanes() {
+ return planes;
+ }
+
+ /**
+ * @return the schemes
+ */
+ public DeckSection getSchemes() {
+ return schemes;
+ }
+
public static final Function FN_NAME_SELECTOR = new Function() {
@Override
public String apply(Deck arg1) {
diff --git a/src/main/java/forge/deck/DeckRecognizer.java b/src/main/java/forge/deck/DeckRecognizer.java
index 6b236800db7..29c86a68a5b 100644
--- a/src/main/java/forge/deck/DeckRecognizer.java
+++ b/src/main/java/forge/deck/DeckRecognizer.java
@@ -245,6 +245,18 @@ public class DeckRecognizer {
if (line.toLowerCase().contains("main")) {
return true;
}
+ if (line.toLowerCase().contains("commander")) {
+ return true;
+ }
+ if (line.toLowerCase().contains("planes")) {
+ return true;
+ }
+ if (line.toLowerCase().contains("schemes")) {
+ return true;
+ }
+ if (line.toLowerCase().contains("vanguard")) {
+ return true;
+ }
return false;
}
diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java
index 5b6f6fb4ad3..11f5cda3606 100644
--- a/src/main/java/forge/game/GameNew.java
+++ b/src/main/java/forge/game/GameNew.java
@@ -20,6 +20,7 @@ import forge.CardPredicates;
import forge.CardUtil;
import forge.GameAction;
import forge.Singletons;
+import forge.card.cardfactory.CardFactoryUtil;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
import forge.control.input.InputControl;
@@ -32,6 +33,7 @@ import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
import forge.gui.match.views.VAntes;
+import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.properties.ForgePreferences.FPref;
import forge.sound.Sounds;
@@ -121,12 +123,12 @@ public class GameNew {
for( Entry p : playersConditions.entrySet() ) {
final Player player = p.getKey();
player.setStartingLife(p.getValue().getStartingLife());
+ player.setMaxHandSize(p.getValue().getStartingHand());
// what if I call it for AI player?
PlayerZone bf = player.getZone(ZoneType.Battlefield);
- Iterable onTable = p.getValue().getCardsOnTable();
+ Iterable onTable = p.getValue().getCardsOnBattlefield();
if (onTable != null) {
for (final Card c : onTable) {
- c.addController(player);
c.setOwner(player);
bf.add(c, false);
c.setSickness(true);
@@ -135,10 +137,22 @@ public class GameNew {
}
}
+ PlayerZone com = player.getZone(ZoneType.Command);
+ Iterable inCommand = p.getValue().getCardsInCommand();
+ if (inCommand != null) {
+ for (final Card c : inCommand) {
+ c.setOwner(player);
+ com.add(c, false);
+ c.refreshUniqueNumber();
+ }
+ }
+
prepareSingleLibrary(player, p.getValue().getDeck(), removedAnteCards, rAICards, canRandomFoil);
player.updateObservers();
bf.updateObservers();
player.getZone(ZoneType.Hand).updateObservers();
+ player.getZone(ZoneType.Command).updateObservers();
+ player.getZone(ZoneType.Battlefield).updateObservers();
}
@@ -190,7 +204,7 @@ public class GameNew {
player.setNumLandsPlayed(0);
// what if I call it for AI player?
PlayerZone bf = player.getZone(ZoneType.Battlefield);
- Iterable onTable = p.getValue().getCardsOnTable();
+ Iterable onTable = p.getValue().getCardsOnBattlefield();
if (onTable != null) {
for (final Card c : onTable) {
c.addController(player);
@@ -237,6 +251,7 @@ public class GameNew {
final String nl = System.getProperty("line.separator");
final StringBuilder msg = new StringBuilder();
for (final Player p : game.getPlayers()) {
+
final List lib = p.getCardsIn(ZoneType.Library);
Predicate goodForAnte = Predicates.not(CardPredicates.Presets.BASIC_LANDS);
Card ante = Aggregates.random(Iterables.filter(lib, goodForAnte));
@@ -262,10 +277,9 @@ public class GameNew {
}
}
- // Draw 7 cards
+ // Draw cards
for (final Player p : game.getPlayers()) {
- // Should this be p.getMaxHandSize() for Vanguard compatibility?
- p.drawCards(7);
+ p.drawCards(p.getMaxHandSize());
}
game.getPhaseHandler().setPhaseState(PhaseType.MULLIGAN);
diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java
index 72a14e2f02a..af64104ee82 100644
--- a/src/main/java/forge/game/GameState.java
+++ b/src/main/java/forge/game/GameState.java
@@ -426,6 +426,7 @@ public class GameState {
all.addAll(player.getZone(ZoneType.Library).getCards());
all.addAll(player.getZone(ZoneType.Battlefield).getCards(false));
all.addAll(player.getZone(ZoneType.Exile).getCards());
+ all.addAll(player.getZone(ZoneType.Command).getCards());
}
all.addAll(getStackZone().getCards());
return all;
diff --git a/src/main/java/forge/game/GameType.java b/src/main/java/forge/game/GameType.java
index dcfa614ffef..946d10419b9 100644
--- a/src/main/java/forge/game/GameType.java
+++ b/src/main/java/forge/game/GameType.java
@@ -32,6 +32,12 @@ public enum GameType {
Commander(false, 100, 100, true),
/** The Quest. */
Quest(true, 40),
+ /** The Vanguard. */
+ Vanguard(false, 60),
+ /** The Planechase. */
+ Planechase(false, 60),
+ /** The Archenemy. */
+ Archenemy(false, 60),
/** */
Gauntlet(true, 40);
diff --git a/src/main/java/forge/game/MatchStartHelper.java b/src/main/java/forge/game/MatchStartHelper.java
index f9012900514..df4947ad72a 100644
--- a/src/main/java/forge/game/MatchStartHelper.java
+++ b/src/main/java/forge/game/MatchStartHelper.java
@@ -1,10 +1,17 @@
package forge.game;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import com.google.common.base.Supplier;
+
+import forge.Card;
+import forge.card.CardRules;
import forge.deck.Deck;
import forge.game.player.LobbyPlayer;
+import forge.item.CardPrinted;
/**
* TODO: Write javadoc for this type.
@@ -12,13 +19,35 @@ import forge.game.player.LobbyPlayer;
*/
public class MatchStartHelper {
private final Map players = new HashMap();
-
- public void addPlayer(LobbyPlayer player, PlayerStartConditions c) {
+
+ public void addPlayer(final LobbyPlayer player, final PlayerStartConditions c) {
players.put(player,c);
}
- public void addPlayer(LobbyPlayer player, Deck deck) {
- players.put(player, new PlayerStartConditions(deck));
+ public void addPlayer(final LobbyPlayer player, final Deck deck) {
+ PlayerStartConditions start = new PlayerStartConditions(deck);
+ players.put(player, start);
+ }
+
+ public void addVanguardPlayer(final LobbyPlayer player, final Deck deck, final CardPrinted avatar)
+ {
+ PlayerStartConditions start = new PlayerStartConditions(deck);
+
+ start.setStartingLife(start.getStartingLife() + avatar.getCard().getLife());
+ start.setStartingHand(start.getStartingHand() + avatar.getCard().getHand());
+
+ start.setCardsInCommand(new Supplier>() {
+
+ @Override
+ public Iterable get() {
+ List res = new ArrayList();
+ res.add(avatar.toForgeCard());
+ return res;
+ }
+
+ });
+
+ players.put(player, start);
}
public Map getPlayerMap()
@@ -26,5 +55,4 @@ public class MatchStartHelper {
return players;
}
-
}
diff --git a/src/main/java/forge/game/PlayerStartConditions.java b/src/main/java/forge/game/PlayerStartConditions.java
index 3dac637c4d9..8f388a2352c 100644
--- a/src/main/java/forge/game/PlayerStartConditions.java
+++ b/src/main/java/forge/game/PlayerStartConditions.java
@@ -3,13 +3,17 @@ package forge.game;
import com.google.common.base.Supplier;
import forge.Card;
+import forge.card.CardRules;
import forge.deck.Deck;
+import forge.item.CardPrinted;
public class PlayerStartConditions {
private final Deck deck;
private int startingLife = 20;
- private Supplier> cardsOnTable = null;
+ private int startingHand = 7;
+ private Supplier> cardsOnBattlefield = null;
+ private Supplier> cardsInCommand = null;
public PlayerStartConditions( Deck deck0 ) {
deck = deck0;
@@ -21,16 +25,44 @@ public class PlayerStartConditions {
public final int getStartingLife() {
return startingLife;
}
- public final Iterable getCardsOnTable() {
- return cardsOnTable == null ? null : cardsOnTable.get();
+ public final Iterable getCardsOnBattlefield() {
+ return cardsOnBattlefield == null ? null : cardsOnBattlefield.get();
}
public final void setStartingLife(int startingLife) {
this.startingLife = startingLife;
}
- public final void setCardsOnTable(Supplier> cardsOnTable) {
- this.cardsOnTable = cardsOnTable;
+ public final void setCardsOnBattlefield(Supplier> cardsOnTable) {
+ this.cardsOnBattlefield = cardsOnTable;
+ }
+
+ /**
+ * @return the startingHand
+ */
+ public int getStartingHand() {
+ return startingHand;
+ }
+
+ /**
+ * @param startingHand0 the startingHand to set
+ */
+ public void setStartingHand(int startingHand0) {
+ this.startingHand = startingHand0;
+ }
+
+ /**
+ * @return the cardsInCommand
+ */
+ public Iterable getCardsInCommand() {
+ return cardsInCommand == null ? null : cardsInCommand.get();
+ }
+
+ /**
+ * @param cardsInCommand0 the cardsInCommand to set
+ */
+ public void setCardsInCommand(Supplier> cardsInCommand0) {
+ this.cardsInCommand = cardsInCommand0;
}
diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java
index f270ee68b25..652b10e59e6 100644
--- a/src/main/java/forge/game/phase/CombatUtil.java
+++ b/src/main/java/forge/game/phase/CombatUtil.java
@@ -952,7 +952,7 @@ public class CombatUtil {
}
// CantBeActivated static abilities
- for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
if (stAb.applyAbility("CantAttack", c, defender)) {
diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java
index f6bc113b4c4..901dd0abcae 100644
--- a/src/main/java/forge/game/player/Player.java
+++ b/src/main/java/forge/game/player/Player.java
@@ -668,7 +668,7 @@ public abstract class Player extends GameEntity implements Comparable {
}
// Prevent Damage static abilities
- for (final Card ca : game.getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : game.getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage, isCombat);
@@ -1895,7 +1895,7 @@ public abstract class Player extends GameEntity implements Comparable {
}
// CantBeCast static abilities
- for (final Card ca : game.getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : game.getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
final ArrayList staticAbilities = ca.getStaticAbilities();
for (final StaticAbility stAb : staticAbilities) {
if (stAb.applyAbility("CantPlayLand", null, this)) {
diff --git a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java
index 980223942ac..a70208561b9 100644
--- a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java
+++ b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java
@@ -84,7 +84,7 @@ public class PlayerZoneBattlefield extends PlayerZone {
c.setTapped(true);
} else {
// ETBTapped static abilities
- for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) {
+ for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
for (final StaticAbility stAb : ca.getStaticAbilities()) {
if (stAb.applyAbility("ETBTapped", c)) {
// it enters the battlefield this way, and should
diff --git a/src/main/java/forge/game/zone/ZoneType.java b/src/main/java/forge/game/zone/ZoneType.java
index d074768308a..143690851fc 100644
--- a/src/main/java/forge/game/zone/ZoneType.java
+++ b/src/main/java/forge/game/zone/ZoneType.java
@@ -34,7 +34,7 @@ public enum ZoneType {
/** Ante. */
Ante(false);
- public static final List STATIC_ABILITIES_SOURCE_ZONES = Arrays.asList(new ZoneType[]{Battlefield, Graveyard, Exile/*, Hand*/});
+ public static final List STATIC_ABILITIES_SOURCE_ZONES = Arrays.asList(new ZoneType[]{Battlefield, Graveyard, Exile, Command/*, Hand*/});
private final boolean holdsHiddenInfo;
private ZoneType(boolean holdsHidden) {
diff --git a/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java b/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java
index a3249903465..663fc34874a 100644
--- a/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java
+++ b/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java
@@ -121,7 +121,7 @@ public final class CEditorConstructed extends ACEditorBase {
@Override
public void resetTables() {
// Constructed mode can use all cards, no limitations.
- this.getTableCatalog().setDeck(ItemPool.createFrom(CardDb.instance().getAllCards(), CardPrinted.class));
+ this.getTableCatalog().setDeck(ItemPool.createFrom(CardDb.instance().getTraditionalCards(), CardPrinted.class));
this.getTableDeck().setDeck(this.controller.getModel().getMain());
}
diff --git a/src/main/java/forge/gui/framework/EDocID.java b/src/main/java/forge/gui/framework/EDocID.java
index fbecafe3c2c..fe9e7c20851 100644
--- a/src/main/java/forge/gui/framework/EDocID.java
+++ b/src/main/java/forge/gui/framework/EDocID.java
@@ -15,7 +15,6 @@ import forge.gui.home.gauntlet.VSubmenuGauntletBuild;
import forge.gui.home.gauntlet.VSubmenuGauntletContests;
import forge.gui.home.gauntlet.VSubmenuGauntletLoad;
import forge.gui.home.gauntlet.VSubmenuGauntletQuick;
-import forge.gui.home.multiplayer.VSubmenuArchenemy;
import forge.gui.home.quest.VSubmenuChallenges;
import forge.gui.home.quest.VSubmenuDuels;
import forge.gui.home.quest.VSubmenuQuestData;
@@ -27,6 +26,8 @@ import forge.gui.home.sanctioned.VSubmenuSealed;
import forge.gui.home.settings.VSubmenuAvatars;
import forge.gui.home.settings.VSubmenuDownloaders;
import forge.gui.home.settings.VSubmenuPreferences;
+import forge.gui.home.variant.VSubmenuArchenemy;
+import forge.gui.home.variant.VSubmenuVanguard;
import forge.gui.match.views.VAntes;
import forge.gui.match.views.VCombat;
import forge.gui.match.views.VDetail;
@@ -74,6 +75,7 @@ public enum EDocID { /** */
HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE), /** */
HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE), /** */
HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE), /** */
+ HOME_VANGUARD (VSubmenuVanguard.SINGLETON_INSTANCE), /** */
REPORT_MESSAGE (VMessage.SINGLETON_INSTANCE), /** */
REPORT_STACK (VStack.SINGLETON_INSTANCE), /** */
@@ -98,7 +100,16 @@ public enum EDocID { /** */
HAND_0 (null), /** */
HAND_1 (null), /** */
HAND_2 (null), /** */
- HAND_3 (null);
+ HAND_3 (null), /** */
+
+ COMMAND_0 (null), /** */
+ COMMAND_1 (null), /** */
+ COMMAND_2 (null), /** */
+ COMMAND_3 (null), /** */
+ COMMAND_4 (null), /** */
+ COMMAND_5 (null), /** */
+ COMMAND_6 (null), /** */
+ COMMAND_7 (null); /** */
// End enum declarations, start enum methods.
private IVDoc extends ICDoc> vDoc;
diff --git a/src/main/java/forge/gui/home/EMenuGroup.java b/src/main/java/forge/gui/home/EMenuGroup.java
index d86f494e2a5..b705cb6b935 100644
--- a/src/main/java/forge/gui/home/EMenuGroup.java
+++ b/src/main/java/forge/gui/home/EMenuGroup.java
@@ -11,7 +11,7 @@ public enum EMenuGroup { /** */
SANCTIONED ("Sanctioned Formats"), /** */
QUEST ("Quest Mode"), /** */
GAUNTLET ("Gauntlets"), /** */
- MULTIPLAYER ("Multiplayer"), /** */
+ VARIANT ("Variant"), /** */
SETTINGS ("Game Settings");
private final String strTitle;
diff --git a/src/main/java/forge/gui/home/VHomeUI.java b/src/main/java/forge/gui/home/VHomeUI.java
index 592e89237ac..f2913f807d4 100644
--- a/src/main/java/forge/gui/home/VHomeUI.java
+++ b/src/main/java/forge/gui/home/VHomeUI.java
@@ -43,7 +43,6 @@ import forge.gui.home.gauntlet.VSubmenuGauntletBuild;
import forge.gui.home.gauntlet.VSubmenuGauntletContests;
import forge.gui.home.gauntlet.VSubmenuGauntletLoad;
import forge.gui.home.gauntlet.VSubmenuGauntletQuick;
-import forge.gui.home.multiplayer.VSubmenuArchenemy;
import forge.gui.home.quest.VSubmenuChallenges;
import forge.gui.home.quest.VSubmenuDuels;
import forge.gui.home.quest.VSubmenuQuestData;
@@ -55,6 +54,8 @@ import forge.gui.home.sanctioned.VSubmenuSealed;
import forge.gui.home.settings.VSubmenuAvatars;
import forge.gui.home.settings.VSubmenuDownloaders;
import forge.gui.home.settings.VSubmenuPreferences;
+import forge.gui.home.variant.VSubmenuArchenemy;
+import forge.gui.home.variant.VSubmenuVanguard;
import forge.gui.toolbox.ExperimentalLabel;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FSkin;
@@ -118,6 +119,8 @@ public enum VHomeUI implements IVTopLevelUI {
//allSubmenus.add(VSubmenuExit.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuArchenemy.SINGLETON_INSTANCE);
+
+ allSubmenus.add(VSubmenuVanguard.SINGLETON_INSTANCE);
// For each group: init its panel
final SortedMap allGroupPanels = new TreeMap();
diff --git a/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java b/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java
index acdbab2b8c3..f3e3b45b65a 100644
--- a/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java
+++ b/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java
@@ -312,9 +312,9 @@ public class SSubmenuQuestUtil {
humanStart.setStartingLife(qData.getAssets().getLife(qData.getMode()) + extraLifeHuman);
aiStart.setStartingLife(lifeAI);
- humanStart.setCardsOnTable(new Supplier>() {
+ humanStart.setCardsOnBattlefield(new Supplier>() {
@Override public Iterable get() { return QuestUtil.getHumanStartingCards(qData, event); } });
- aiStart.setCardsOnTable(new Supplier>() {
+ aiStart.setCardsOnBattlefield(new Supplier>() {
@Override public Iterable get() { return QuestUtil.getComputerStartingCards(event); } });
} // End isFantasy
diff --git a/src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java b/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java
similarity index 98%
rename from src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java
rename to src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java
index 62f415a81e4..7064fc64fdd 100644
--- a/src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java
+++ b/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java
@@ -1,4 +1,4 @@
-package forge.gui.home.multiplayer;
+package forge.gui.home.variant;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
diff --git a/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java b/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java
new file mode 100644
index 00000000000..e335984ea51
--- /dev/null
+++ b/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java
@@ -0,0 +1,176 @@
+package forge.gui.home.variant;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Random;
+
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+
+import com.google.common.collect.Iterables;
+
+import forge.Command;
+import forge.Singletons;
+import forge.control.Lobby;
+import forge.deck.Deck;
+import forge.game.GameType;
+import forge.game.MatchController;
+import forge.game.MatchStartHelper;
+import forge.game.PlayerStartConditions;
+import forge.game.player.LobbyPlayer;
+import forge.game.player.PlayerType;
+import forge.gui.SOverlayUtils;
+import forge.gui.framework.ICDoc;
+import forge.item.CardPrinted;
+import forge.properties.ForgePreferences;
+import forge.properties.ForgePreferences.FPref;
+
+/**
+ * Controls the constructed submenu in the home UI.
+ *
+ *