diff --git a/forge-game/src/main/java/forge/game/combat/CombatUtil.java b/forge-game/src/main/java/forge/game/combat/CombatUtil.java index 57924c019df..b62daa39f96 100644 --- a/forge-game/src/main/java/forge/game/combat/CombatUtil.java +++ b/forge-game/src/main/java/forge/game/combat/CombatUtil.java @@ -18,7 +18,6 @@ package forge.game.combat; import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.card.CardType; import forge.card.MagicColor; @@ -31,7 +30,6 @@ import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardFactoryUtil; import forge.game.card.CardLists; -import forge.game.card.CardPredicates; import forge.game.cost.Cost; import forge.game.phase.PhaseType; import forge.game.phase.Untap; @@ -899,41 +897,11 @@ public class CombatUtil { } // hasKeyword = CARDNAME can't attack if defending player controls an // untapped creature with power ... - final List list = defendingPlayer.getCardsIn(ZoneType.Battlefield); - List temp; for (String keyword : c.getKeyword()) { if (keyword.equals("CARDNAME can't attack.") || keyword.equals("CARDNAME can't attack or block.")) { return false; } else if (keyword.equals("Defender") && !c.hasKeyword("CARDNAME can attack as though it didn't have defender.")) { return false; - } else if (keyword.equals("CARDNAME can't attack unless defending player controls an Island.")) { - temp = CardLists.getType(list, "Island"); - if (temp.isEmpty()) { - return false; - } - } else if (keyword.equals("CARDNAME can't attack unless defending player controls a Forest.")) { - temp = CardLists.getType(list, "Forest"); - if (temp.isEmpty()) { - return false; - } - } else if (keyword.equals("CARDNAME can't attack unless defending player controls a Swamp.")) { - temp = CardLists.getType(list, "Swamp"); - if (temp.isEmpty()) { - return false; - } - } else if (keyword.equals("CARDNAME can't attack unless defending player controls a Mountain.")) { - temp = CardLists.getType(list, "Mountain"); - if (temp.isEmpty()) { - return false; - } - } else if (keyword.equals("CARDNAME can't attack unless defending player controls a snow land.")) { - temp = CardLists.filter(list, CardPredicates.Presets.SNOW_LANDS); - if (temp.isEmpty()) { - return false; - } - } else if (keyword.equals("CARDNAME can't attack unless defending player controls a blue permanent.")) { - if (!Iterables.any(list, CardPredicates.isColor(MagicColor.BLUE))) - return false; } else if (keyword.equals("CARDNAME can't attack during extra turns.")) { if (c.getGame().getPhaseHandler().getPlayerTurn().isPlayingExtraTurn()) return false; diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttackBlock.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttackBlock.java index 9fc3577f5a1..2034557862a 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttackBlock.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttackBlock.java @@ -20,10 +20,16 @@ package forge.game.staticability; import forge.game.GameEntity; import forge.game.card.Card; import forge.game.card.CardFactoryUtil; +import forge.game.card.CardPredicates; import forge.game.cost.Cost; +import forge.game.player.Player; +import forge.game.zone.ZoneType; +import java.util.List; import java.util.Map; +import com.google.common.collect.Iterables; + /** * The Class StaticAbility_CantBeCast. */ @@ -52,6 +58,15 @@ public class StaticAbilityCantAttackBlock { return false; } + if (params.containsKey("UnlessDefenderControls")) { + String type = params.get("UnlessDefenderControls"); + Player defender = target instanceof Card ? ((Card) target).getController() : (Player) target; + List list = defender.getCardsIn(ZoneType.Battlefield); + if (Iterables.any(list, CardPredicates.restriction(type.split(","), hostCard.getController(), hostCard))) { + return false; + } + } + return true; } diff --git a/forge-gui/res/cardsfolder/a/armored_galleon.txt b/forge-gui/res/cardsfolder/a/armored_galleon.txt index 97905b927f9..1d98316d280 100644 --- a/forge-gui/res/cardsfolder/a/armored_galleon.txt +++ b/forge-gui/res/cardsfolder/a/armored_galleon.txt @@ -2,6 +2,6 @@ Name:Armored Galleon ManaCost:4 U Types:Creature Human Pirate PT:5/4 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://serv1.tcgimages.eu/img/cards/Portal_Second_Age/armored_galleon.jpg Oracle:Armored Galleon can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bog_serpent.txt b/forge-gui/res/cardsfolder/b/bog_serpent.txt index 4020914d21d..051fbc44d02 100644 --- a/forge-gui/res/cardsfolder/b/bog_serpent.txt +++ b/forge-gui/res/cardsfolder/b/bog_serpent.txt @@ -2,7 +2,7 @@ Name:Bog Serpent ManaCost:5 B Types:Creature Serpent PT:5/5 -K:CARDNAME can't attack unless defending player controls a Swamp. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Swamp | Description$ CARDNAME can't attack unless defending player controls a Swamp. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Swamp.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Swamps, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Swamp.YouCtrl diff --git a/forge-gui/res/cardsfolder/d/dandan.txt b/forge-gui/res/cardsfolder/d/dandan.txt index e0884fbffd6..ad59c538ce5 100644 --- a/forge-gui/res/cardsfolder/d/dandan.txt +++ b/forge-gui/res/cardsfolder/d/dandan.txt @@ -2,7 +2,7 @@ Name:Dandan ManaCost:U U Types:Creature Fish PT:4/1 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Island.YouCtrl diff --git a/forge-gui/res/cardsfolder/d/deep_sea_serpent.txt b/forge-gui/res/cardsfolder/d/deep_sea_serpent.txt index 24477d2a667..6d8c8fa2518 100644 --- a/forge-gui/res/cardsfolder/d/deep_sea_serpent.txt +++ b/forge-gui/res/cardsfolder/d/deep_sea_serpent.txt @@ -2,6 +2,6 @@ Name:Deep-Sea Serpent ManaCost:4 U U Types:Creature Serpent PT:5/5 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://serv2.tcgimages.eu/img/cards/Portal/deep_sea_serpent.jpg Oracle:Deep-Sea Serpent can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dreamwinder.txt b/forge-gui/res/cardsfolder/d/dreamwinder.txt index 35798017e3e..3155ca09347 100644 --- a/forge-gui/res/cardsfolder/d/dreamwinder.txt +++ b/forge-gui/res/cardsfolder/d/dreamwinder.txt @@ -2,7 +2,7 @@ Name:Dreamwinder ManaCost:3 U Types:Creature Serpent PT:4/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. A:AB$ Animate | Cost$ U Sac<1/Island> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | SpellDescription$ Target land becomes an Island until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/dreamwinder.jpg diff --git a/forge-gui/res/cardsfolder/e/ethereal_whiskergill.txt b/forge-gui/res/cardsfolder/e/ethereal_whiskergill.txt index 2de3c241b5c..81272ca767f 100644 --- a/forge-gui/res/cardsfolder/e/ethereal_whiskergill.txt +++ b/forge-gui/res/cardsfolder/e/ethereal_whiskergill.txt @@ -2,7 +2,7 @@ Name:Ethereal Whiskergill ManaCost:3 U Types:Creature Elemental PT:4/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. K:Flying SVar:Picture:http://www.wizards.com/global/images/magic/general/ethereal_whiskergill.jpg Oracle:Flying\nEthereal Whiskergill can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/floodchaser.txt b/forge-gui/res/cardsfolder/f/floodchaser.txt index 743b6cec94a..3662029943f 100644 --- a/forge-gui/res/cardsfolder/f/floodchaser.txt +++ b/forge-gui/res/cardsfolder/f/floodchaser.txt @@ -3,7 +3,7 @@ ManaCost:5 U Types:Creature Elemental PT:0/0 K:etbCounter:P1P1:6 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. A:AB$ Animate | Cost$ U SubCounter<1/P1P1> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | SpellDescription$ Target land becomes an Island until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/floodchaser.jpg diff --git a/forge-gui/res/cardsfolder/g/giant_shark.txt b/forge-gui/res/cardsfolder/g/giant_shark.txt index 4b503021398..8fa06ac605a 100644 --- a/forge-gui/res/cardsfolder/g/giant_shark.txt +++ b/forge-gui/res/cardsfolder/g/giant_shark.txt @@ -5,7 +5,7 @@ PT:4/4 T:Mode$ AttackerBlocked | ValidCard$ Creature.wasDealtDamageThisTurn | ValidBlocker$ Card.Self | Execute$ TrigPumpShark | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature that has been dealt damage this turn, CARDNAME gets +2/+0 and gains trample until end of turn. T:Mode$ Blocks | ValidCard$ Creature.wasDealtDamageThisTurn | ValidBlocked$ Card.Self | Execute$ TrigPumpShark | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature that has been dealt damage this turn, CARDNAME gets +2/+0 and gains trample until end of turn. SVar:TrigPumpShark:AB$Pump | Cost$ 0 | Defined$ Self | NumAtt$ 2 | NumDef$ 0 | KW$ Trample -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Island.YouCtrl diff --git a/forge-gui/res/cardsfolder/g/goblin_rock_sled.txt b/forge-gui/res/cardsfolder/g/goblin_rock_sled.txt index 7d20b8fddbf..9d52df56837 100644 --- a/forge-gui/res/cardsfolder/g/goblin_rock_sled.txt +++ b/forge-gui/res/cardsfolder/g/goblin_rock_sled.txt @@ -4,7 +4,6 @@ Types:Creature Goblin PT:3/1 K:Trample S:Mode$ Continuous | Affected$ Card.Self+attackedLastTurn | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ CARDNAME doesn't untap during your untap step if it attacked during your last turn. -S:Mode$ Continuous | Affected$ Card.Self | AddHiddenKeyword$ CARDNAME can't attack. | CheckSVar$ X | SVarCompare$ LT1 | Description$ CARDNAME can't attack unless defending player controls a Mountain. -SVar:X:Count$Valid Mountain.YouDontCtrl +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Mountain | Description$ CARDNAME can't attack unless defending player controls a Mountain. SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_rock_sled.jpg Oracle:Trample\nGoblin Rock Sled doesn't untap during your untap step if it attacked during your last turn.\nGoblin Rock Sled can't attack unless defending player controls a Mountain. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/gorilla_pack.txt b/forge-gui/res/cardsfolder/g/gorilla_pack.txt index c9569635240..04cbea0a9f7 100644 --- a/forge-gui/res/cardsfolder/g/gorilla_pack.txt +++ b/forge-gui/res/cardsfolder/g/gorilla_pack.txt @@ -2,7 +2,7 @@ Name:Gorilla Pack ManaCost:2 G Types:Creature Ape PT:3/3 -K:CARDNAME can't attack unless defending player controls a Forest. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Forest | Description$ CARDNAME can't attack unless defending player controls a Forest. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Forest.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Forests, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Forest.YouCtrl diff --git a/forge-gui/res/cardsfolder/h/hammerhead_shark.txt b/forge-gui/res/cardsfolder/h/hammerhead_shark.txt index 79e91078264..0be56d29372 100644 --- a/forge-gui/res/cardsfolder/h/hammerhead_shark.txt +++ b/forge-gui/res/cardsfolder/h/hammerhead_shark.txt @@ -2,6 +2,6 @@ Name:Hammerhead Shark ManaCost:1 U Types:Creature Fish PT:2/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/hammerhead_shark.jpg Oracle:Hammerhead Shark can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/i/island_fish_jasconius.txt b/forge-gui/res/cardsfolder/i/island_fish_jasconius.txt index 654090c3864..c0aa58eae9b 100644 --- a/forge-gui/res/cardsfolder/i/island_fish_jasconius.txt +++ b/forge-gui/res/cardsfolder/i/island_fish_jasconius.txt @@ -2,7 +2,7 @@ Name:Island Fish Jasconius ManaCost:4 U U U Types:Creature Fish PT:6/8 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. K:CARDNAME doesn't untap during your untap step. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self diff --git a/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt b/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt index 1061e5c3195..aa27fa4cbf2 100644 --- a/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt +++ b/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt @@ -2,7 +2,7 @@ Name:Kukemssa Serpent ManaCost:3 U Types:Creature Serpent PT:4/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. A:AB$ Animate | Cost$ U Sac<1/Island> | ValidTgts$ Land.OppCtrl | TgtPrompt$ Select target land an opponent controls | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | SpellDescription$ Target land an opponent controls becomes an Island until end of turn. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self diff --git a/forge-gui/res/cardsfolder/m/manta_ray.txt b/forge-gui/res/cardsfolder/m/manta_ray.txt index cc825b651b7..037de617b75 100644 --- a/forge-gui/res/cardsfolder/m/manta_ray.txt +++ b/forge-gui/res/cardsfolder/m/manta_ray.txt @@ -2,7 +2,7 @@ Name:Manta Ray ManaCost:1 U U Types:Creature Fish PT:3/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. K:CantBeBlockedBy Creature.nonBlue T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self diff --git a/forge-gui/res/cardsfolder/m/marjhan.txt b/forge-gui/res/cardsfolder/m/marjhan.txt index 73ff3541e66..a843fe0a6e2 100644 --- a/forge-gui/res/cardsfolder/m/marjhan.txt +++ b/forge-gui/res/cardsfolder/m/marjhan.txt @@ -3,7 +3,7 @@ ManaCost:5 U U Types:Creature Leviathan PT:8/8 K:CARDNAME doesn't untap during your untap step. -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self A:AB$ Untap | Cost$ U U Sac<1/Creature> | ActivationPhases$ Upkeep | PlayerTurn$ True | SpellDescription$ Untap CARDNAME. Activate this ability only during your upkeep. diff --git a/forge-gui/res/cardsfolder/m/merchant_ship.txt b/forge-gui/res/cardsfolder/m/merchant_ship.txt index 6ed1e8697ec..fb5b96ae6a0 100644 --- a/forge-gui/res/cardsfolder/m/merchant_ship.txt +++ b/forge-gui/res/cardsfolder/m/merchant_ship.txt @@ -2,7 +2,7 @@ Name:Merchant Ship ManaCost:U Types:Creature Human PT:0/2 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you gain 2 life. diff --git a/forge-gui/res/cardsfolder/p/pirate_ship.txt b/forge-gui/res/cardsfolder/p/pirate_ship.txt index ab563d9be99..79394e04376 100644 --- a/forge-gui/res/cardsfolder/p/pirate_ship.txt +++ b/forge-gui/res/cardsfolder/p/pirate_ship.txt @@ -2,7 +2,7 @@ Name:Pirate Ship ManaCost:4 U Types:Creature Human Pirate PT:4/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. diff --git a/forge-gui/res/cardsfolder/r/red_cliffs_armada.txt b/forge-gui/res/cardsfolder/r/red_cliffs_armada.txt index 9685b1a8f8e..bbc2af5247e 100644 --- a/forge-gui/res/cardsfolder/r/red_cliffs_armada.txt +++ b/forge-gui/res/cardsfolder/r/red_cliffs_armada.txt @@ -2,6 +2,6 @@ Name:Red Cliffs Armada ManaCost:4 U Types:Creature Human Soldier PT:5/4 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/red_cliffs_armada.jpg Oracle:Red Cliffs Armada can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/ronom_serpent.txt b/forge-gui/res/cardsfolder/r/ronom_serpent.txt index fa48dc9c0a8..d80a7aee7e0 100644 --- a/forge-gui/res/cardsfolder/r/ronom_serpent.txt +++ b/forge-gui/res/cardsfolder/r/ronom_serpent.txt @@ -2,10 +2,9 @@ Name:Ronom Serpent ManaCost:5 U Types:Snow Creature Serpent PT:5/6 -S:Mode$ Continuous | Affected$ Card.Self | AddHiddenKeyword$ CARDNAME can't attack. | CheckSVar$ X | SVarCompare$ LT1 | References$ X | Description$ CARDNAME can't attack unless defending player controls a snow land. -SVar:X:Count$Valid Land.Snow+YouDontCtrl +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Land.Snow | Description$ CARDNAME can't attack unless defending player controls a snow land. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Land.Snow+YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no snow lands, sacrifice Ronom Serpent. -SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self +SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Land.Snow+YouCtrl SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/ronom_serpent.jpg diff --git a/forge-gui/res/cardsfolder/s/sea_monster.txt b/forge-gui/res/cardsfolder/s/sea_monster.txt index 3b94656b1e7..a280dfdfa5e 100644 --- a/forge-gui/res/cardsfolder/s/sea_monster.txt +++ b/forge-gui/res/cardsfolder/s/sea_monster.txt @@ -2,6 +2,6 @@ Name:Sea Monster ManaCost:4 U U Types:Creature Serpent PT:6/6 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/sea_monster.jpg Oracle:Sea Monster can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sea_serpent.txt b/forge-gui/res/cardsfolder/s/sea_serpent.txt index d79e50d0057..a0656c0096a 100644 --- a/forge-gui/res/cardsfolder/s/sea_serpent.txt +++ b/forge-gui/res/cardsfolder/s/sea_serpent.txt @@ -2,7 +2,7 @@ Name:Sea Serpent ManaCost:5 U Types:Creature Serpent PT:5/5 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Island.YouCtrl diff --git a/forge-gui/res/cardsfolder/s/sealock_monster.txt b/forge-gui/res/cardsfolder/s/sealock_monster.txt index f845a847afd..30fa5b394d7 100644 --- a/forge-gui/res/cardsfolder/s/sealock_monster.txt +++ b/forge-gui/res/cardsfolder/s/sealock_monster.txt @@ -2,7 +2,7 @@ Name:Sealock Monster ManaCost:3 U U Types:Creature Octopus PT:5/5 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. K:Monstrosity 3:5 U U T:Mode$ BecomeMonstrous | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigAnimate | TriggerDescription$ When CARDNAME becomes monstrous, target land becomes an Island in addition to its other types. SVar:TrigAnimate:AB$ Animate | Cost$ 0 | ValidTgts$ Land | AITgts$ Land.OppCtrl | Types$ Island | Permanent$ True diff --git a/forge-gui/res/cardsfolder/s/serpent_of_the_endless_sea.txt b/forge-gui/res/cardsfolder/s/serpent_of_the_endless_sea.txt index 0d66582c796..737f5bb6b3c 100644 --- a/forge-gui/res/cardsfolder/s/serpent_of_the_endless_sea.txt +++ b/forge-gui/res/cardsfolder/s/serpent_of_the_endless_sea.txt @@ -2,7 +2,7 @@ Name:Serpent of the Endless Sea ManaCost:4 U Types:Creature Serpent PT:*/* -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the number of Islands you control. SVar:X:Count$Valid Island.YouCtrl SVar:BuffedBy:Island diff --git a/forge-gui/res/cardsfolder/s/slipstream_eel.txt b/forge-gui/res/cardsfolder/s/slipstream_eel.txt index a8258a1b94b..cc3fadd31c3 100644 --- a/forge-gui/res/cardsfolder/s/slipstream_eel.txt +++ b/forge-gui/res/cardsfolder/s/slipstream_eel.txt @@ -2,7 +2,7 @@ Name:Slipstream Eel ManaCost:5 U U Types:Creature Fish Beast PT:6/6 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. K:Cycling:1 U SVar:Picture:http://www.wizards.com/global/images/magic/general/slipstream_eel.jpg Oracle:Slipstream Eel can't attack unless defending player controls an Island.\nCycling {1}{U} ({1}{U}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/slipstream_serpent.txt b/forge-gui/res/cardsfolder/s/slipstream_serpent.txt index b4e16f9c29a..6dfaacc1f52 100644 --- a/forge-gui/res/cardsfolder/s/slipstream_serpent.txt +++ b/forge-gui/res/cardsfolder/s/slipstream_serpent.txt @@ -3,7 +3,7 @@ ManaCost:7 U Types:Creature Serpent PT:6/6 K:Morph:5 U -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self SVar:NeedsToPlay:Island.YouCtrl diff --git a/forge-gui/res/cardsfolder/s/steam_frigate.txt b/forge-gui/res/cardsfolder/s/steam_frigate.txt index 248f1d20403..3b606394495 100644 --- a/forge-gui/res/cardsfolder/s/steam_frigate.txt +++ b/forge-gui/res/cardsfolder/s/steam_frigate.txt @@ -2,6 +2,6 @@ Name:Steam Frigate ManaCost:2 U Types:Creature Human Pirate PT:3/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/steam_frigate.jpg Oracle:Steam Frigate can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/veiled_serpent.txt b/forge-gui/res/cardsfolder/v/veiled_serpent.txt index c18a24ed80a..3743c315aa7 100644 --- a/forge-gui/res/cardsfolder/v/veiled_serpent.txt +++ b/forge-gui/res/cardsfolder/v/veiled_serpent.txt @@ -2,7 +2,8 @@ Name:Veiled Serpent ManaCost:2 U Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a spell, if CARDNAME is an enchantment, CARDNAME becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island. -SVar:TrigAnimate:AB$Animate | Cost$ 0 | Defined$ Self | Power$ 4 | Toughness$ 4 | HiddenKeywords$ CARDNAME can't attack unless defending player controls an Island. | Types$ Creature,Serpent | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:AB$ Animate | Cost$ 0 | Defined$ Self | Power$ 4 | Toughness$ 4 | staticAbilities$ VeiledSerpentST | Types$ Creature,Serpent | OverwriteTypes$ True | Permanent$ True K:Cycling:2 +SVar:VeiledSerpentST:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/veiled_serpent.jpg Oracle:When an opponent casts a spell, if Veiled Serpent is an enchantment, Veiled Serpent becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/vodalian_knights.txt b/forge-gui/res/cardsfolder/v/vodalian_knights.txt index d3c2ca79570..30e46c1e44d 100644 --- a/forge-gui/res/cardsfolder/v/vodalian_knights.txt +++ b/forge-gui/res/cardsfolder/v/vodalian_knights.txt @@ -3,7 +3,7 @@ ManaCost:1 U U Types:Creature Merfolk Knight PT:2/2 K:First Strike -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self A:AB$ Pump | Cost$ U | KW$ Flying | SpellDescription$ CARDNAME gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/v/vodalian_serpent.txt b/forge-gui/res/cardsfolder/v/vodalian_serpent.txt index 09e2473f7c7..d8081f039f6 100644 --- a/forge-gui/res/cardsfolder/v/vodalian_serpent.txt +++ b/forge-gui/res/cardsfolder/v/vodalian_serpent.txt @@ -2,7 +2,7 @@ Name:Vodalian Serpent ManaCost:3 U Types:Creature Serpent PT:2/2 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. K:Kicker 2 K:etbCounter:P1P1:4:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with four +1/+1 counters on it. SVar:WasKicked:Count$Kicked.1.0 diff --git a/forge-gui/res/cardsfolder/w/whimwader.txt b/forge-gui/res/cardsfolder/w/whimwader.txt index 931ae0802d5..875649a0687 100644 --- a/forge-gui/res/cardsfolder/w/whimwader.txt +++ b/forge-gui/res/cardsfolder/w/whimwader.txt @@ -2,6 +2,6 @@ Name:Whimwader ManaCost:4 U Types:Creature Elemental PT:6/4 -K:CARDNAME can't attack unless defending player controls a blue permanent. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Permanent.Blue | Description$ CARDNAME can't attack unless defending player controls a blue permanent. SVar:Picture:http://www.wizards.com/global/images/magic/general/whimwader.jpg Oracle:Whimwader can't attack unless defending player controls a blue permanent. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/w/wu_warship.txt b/forge-gui/res/cardsfolder/w/wu_warship.txt index f943701c0cd..a4f5e011e97 100644 --- a/forge-gui/res/cardsfolder/w/wu_warship.txt +++ b/forge-gui/res/cardsfolder/w/wu_warship.txt @@ -2,6 +2,6 @@ Name:Wu Warship ManaCost:2 U Types:Creature Human Soldier PT:3/3 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/wu_warship.jpg Oracle:Wu Warship can't attack unless defending player controls an Island. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/z/zhou_yu_chief_commander.txt b/forge-gui/res/cardsfolder/z/zhou_yu_chief_commander.txt index b3f8c56bea8..d166c89194e 100644 --- a/forge-gui/res/cardsfolder/z/zhou_yu_chief_commander.txt +++ b/forge-gui/res/cardsfolder/z/zhou_yu_chief_commander.txt @@ -2,6 +2,6 @@ Name:Zhou Yu, Chief Commander ManaCost:5 U U Types:Legendary Creature Human Soldier PT:8/8 -K:CARDNAME can't attack unless defending player controls an Island. +S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/zhou_yu_chief_commander.jpg Oracle:Zhou Yu, Chief Commander can't attack unless defending player controls an Island. \ No newline at end of file