Landwalk static (#4907)

* Landwalk Static + Ignore
This commit is contained in:
Hans Mackowiak
2024-03-27 22:15:44 +01:00
committed by GitHub
parent cda35a572c
commit ce62cbcb08
213 changed files with 319 additions and 412 deletions

View File

@@ -551,8 +551,8 @@ public class AiAttackController {
}
if (bandingCreatures != null) {
List<String> evasionKeywords = Arrays.asList("Flying", "Horsemanship", "Shadow", "Plainswalk", "Islandwalk",
"Forestwalk", "Mountainwalk", "Swampwalk");
List<String> evasionKeywords = Arrays.asList("Flying", "Horsemanship", "Shadow", "Landwalk:Plains", "Landwalk:Island",
"Landwalk:Forest", "Landwalk:Mountain", "Landwalk:Swamp");
// TODO: Assign to band with the best attacker for now, but needs better logic.
for (Card c : bandingCreatures) {

View File

@@ -1574,7 +1574,7 @@ public class AttachAi extends SpellAbilityAi {
final boolean evasive = keyword.equals("Fear")
|| keyword.equals("Intimidate") || keyword.equals("Shadow")
|| keyword.equals("Flying") || keyword.equals("Horsemanship")
|| keyword.endsWith("walk") || keyword.equals("All creatures able to block CARDNAME do so.");
|| keyword.startsWith("Landwalk") || keyword.equals("All creatures able to block CARDNAME do so.");
// give evasive keywords to creatures that can attack and deal damage
boolean canBeBlocked = false;

View File

@@ -368,25 +368,31 @@ public abstract class PumpAiBase extends SpellAbilityAi {
return ComputerUtil.predictThreatenedObjects(sa.getActivatingPlayer(), sa).contains(card);
} else if (keyword.equals("Persist")) {
return card.getBaseToughness() > 1 && !card.hasKeyword(Keyword.UNDYING);
} else if (keyword.equals("Islandwalk")) {
} else if (keyword.equals("Landwalk:Plains")) {
return !ph.isPlayerTurn(opp) && ((combat != null && combat.isAttacking(card)) || CombatUtil.canAttack(card, opp))
&& !ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
&& newPower > 0
&& !CardLists.getType(opp.getLandsInPlay(), "Plains").isEmpty()
&& Iterables.any(opp.getCreaturesInPlay(), CardPredicates.possibleBlockers(card));
} else if (keyword.equals("Landwalk:Island")) {
return !ph.isPlayerTurn(opp) && ((combat != null && combat.isAttacking(card)) || CombatUtil.canAttack(card, opp))
&& !ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
&& newPower > 0
&& !CardLists.getType(opp.getLandsInPlay(), "Island").isEmpty()
&& Iterables.any(opp.getCreaturesInPlay(), CardPredicates.possibleBlockers(card));
} else if (keyword.equals("Swampwalk")) {
} else if (keyword.equals("Landwalk:Swamp")) {
return !ph.isPlayerTurn(opp) && ((combat != null && combat.isAttacking(card)) || CombatUtil.canAttack(card, opp))
&& !ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
&& newPower > 0
&& !CardLists.getType(opp.getLandsInPlay(), "Swamp").isEmpty()
&& Iterables.any(opp.getCreaturesInPlay(), CardPredicates.possibleBlockers(card));
} else if (keyword.equals("Mountainwalk")) {
} else if (keyword.equals("Landwalk:Mountain")) {
return !ph.isPlayerTurn(opp) && ((combat != null && combat.isAttacking(card)) || CombatUtil.canAttack(card, opp))
&& !ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
&& newPower > 0
&& !CardLists.getType(opp.getLandsInPlay(), "Mountain").isEmpty()
&& Iterables.any(opp.getCreaturesInPlay(), CardPredicates.possibleBlockers(card));
} else if (keyword.equals("Forestwalk")) {
} else if (keyword.equals("Landwalk:Forest")) {
return !ph.isPlayerTurn(opp) && ((combat != null && combat.isAttacking(card)) || CombatUtil.canAttack(card, opp))
&& !ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
&& newPower > 0

View File

@@ -2483,6 +2483,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|| keyword.startsWith("Class") || keyword.startsWith("Blitz")
|| keyword.startsWith("Specialize") || keyword.equals("Ravenous")
|| keyword.equals("For Mirrodin") || keyword.startsWith("Craft")
|| keyword.startsWith("Landwalk")
|| keyword.startsWith("Alternative Cost")) {
// keyword parsing takes care of adding a proper description
} else if (keyword.equals("Read ahead")) {

View File

@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.EnumSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -510,9 +511,9 @@ public class CardFactoryUtil {
for (Card c : cards) {
for (KeywordInterface inst : c.getKeywords()) {
final String k = inst.getOriginal();
if (k.endsWith("walk")) {
if (inst.getKeyword().equals(Keyword.LANDWALK)) {
landkw.add(k);
} else if (k.startsWith("Protection")) {
} else if (inst.getKeyword().equals(Keyword.PROTECTION)) {
protectionkw.add(k);
for (byte col : MagicColor.WUBRG) {
final String colString = MagicColor.toLongString(col);
@@ -521,9 +522,9 @@ public class CardFactoryUtil {
protectionColorkw.add(protString);
}
}
} else if (k.startsWith("Hexproof")) {
} else if (inst.getKeyword().equals(Keyword.HEXPROOF)) {
hexproofkw.add(k);
} else if (k.startsWith("Trample")) {
} else if (inst.getKeyword().equals(Keyword.TRAMPLE)) {
tramplekw.add(k);
} else {
allkw.add(k.toLowerCase());
@@ -3836,7 +3837,7 @@ public class CardFactoryUtil {
StaticAbility st = StaticAbility.create(effect, state.getCard(), state, intrinsic);
inst.addStaticAbility(st);
} else if (keyword.equals("Defender")) {
String effect = "Mode$ CantAttack | ValidCard$ Card.Self | DefenderKeyword$ True | Secondary$ True";
String effect = "Mode$ CantAttack | ValidCard$ Card.Self | Secondary$ True";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.equals("Devoid")) {
String effect = "Mode$ Continuous | EffectZone$ All | Affected$ Card.Self" +
@@ -3886,7 +3887,7 @@ public class CardFactoryUtil {
sbValid.append("| ValidSource$ ").append(k[1]);
}
String effect = "Mode$ CantTarget | Hexproof$ True | ValidCard$ Card.Self | Secondary$ True"
String effect = "Mode$ CantTarget | ValidCard$ Card.Self | Secondary$ True"
+ sbValid.toString() + " | Activator$ Opponent | Description$ "
+ sbDesc.toString() + " (" + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
@@ -3898,6 +3899,13 @@ public class CardFactoryUtil {
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.nonArtifact+notSharesColorWith | Secondary$ True " +
" | Description$ Intimidate ( " + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.startsWith("Landwalk")) {
final String[] k = keyword.split(":");
String valid = k[1];
String desc = k[k.length > 2 ? 2 : 1].toLowerCase(Locale.ROOT);
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidDefender$ Player.controls" + valid +
" | Description$ " + StringUtils.capitalize(desc) + "walk (" + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.equals("Living metal")) {
String effect = "Mode$ Continuous | Affected$ Card.Self | AddType$ Creature | Condition$ PlayerTurn | Secondary$ True";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
@@ -3946,7 +3954,7 @@ public class CardFactoryUtil {
" | Description$ Chapter abilities of this Saga can't trigger the turn it entered the battlefield unless it has exactly the number of lore counters on it specified in the chapter symbol of that ability.";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.equals("Shroud")) {
String effect = "Mode$ CantTarget | Shroud$ True | ValidCard$ Card.Self | Secondary$ True"
String effect = "Mode$ CantTarget | ValidCard$ Card.Self | Secondary$ True"
+ " | Description$ Shroud (" + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.equals("Skulk")) {

View File

@@ -21,8 +21,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.card.CardType;
import forge.card.MagicColor;
import forge.card.mana.ManaCost;
import forge.game.Game;
import forge.game.GameEntity;
@@ -560,117 +558,9 @@ public class CombatUtil {
return false;
}
return canBeBlocked(attacker, defendingPlayer);
}
/**
* <p>
* canBeBlocked.
* </p>
*
* @param attacker
* a {@link forge.game.card.Card} object.
* @return a boolean.
*/
public static boolean canBeBlocked(final Card attacker, final Player defender) {
if (attacker == null) {
return true;
}
// Landwalk
if (isUnblockableFromLandwalk(attacker, defender)) {
return CardLists.getAmountOfKeyword(defender.getCreaturesInPlay(), "CARDNAME can block creatures with landwalk abilities as though they didn't have those abilities.") != 0;
}
return true;
}
// Cache landwalk ability strings instead of generating them each time.
private static final String[] LANDWALK_KEYWORDS;
private static final String[] SNOW_LANDWALK_KEYWORDS;
private static final String[] IGNORE_LANDWALK_KEYWORDS;
static {
final int size = MagicColor.Constant.BASIC_LANDS.size();
LANDWALK_KEYWORDS = new String[size];
SNOW_LANDWALK_KEYWORDS = new String[size];
IGNORE_LANDWALK_KEYWORDS = new String[size];
for (int i = 0; i < size; i++) {
final String basic = MagicColor.Constant.BASIC_LANDS.get(i);
final String landwalk = basic + "walk";
LANDWALK_KEYWORDS[i] = landwalk;
SNOW_LANDWALK_KEYWORDS[i] = "Snow " + landwalk.toLowerCase();
IGNORE_LANDWALK_KEYWORDS[i] = "May be blocked as though it doesn't have " + landwalk + ".";
}
}
public static boolean isUnblockableFromLandwalk(final Card attacker, final Player defendingPlayer) {
//May be blocked as though it doesn't have landwalk. (Staff of the Ages)
if (attacker.hasKeyword("May be blocked as though it doesn't have landwalk.")) {
return false;
}
List<String> walkTypes = Lists.newArrayList();
// handle basic landwalk and snow basic landwalk
for (int i = 0; i < LANDWALK_KEYWORDS.length; i++) {
final String basic = MagicColor.Constant.BASIC_LANDS.get(i);
final String landwalk = LANDWALK_KEYWORDS[i];
final String snowwalk = SNOW_LANDWALK_KEYWORDS[i];
final String mayBeBlocked = IGNORE_LANDWALK_KEYWORDS[i];
if (attacker.hasKeyword(landwalk) && !attacker.hasKeyword(mayBeBlocked)) {
walkTypes.add(basic);
}
if (attacker.hasKeyword(snowwalk)) {
walkTypes.add(basic + ".Snow");
}
}
for (final KeywordInterface inst : attacker.getKeywords(Keyword.LANDWALK)) {
String keyword = inst.getOriginal();
if (keyword.equals("Legendary landwalk")) {
walkTypes.add("Land.Legendary");
} else if (keyword.equals("Nonbasic landwalk")) {
walkTypes.add("Land.nonBasic");
} else if (keyword.equals("Artifact landwalk")) {
walkTypes.add("Land.Artifact");
} else if (keyword.equals("Snow landwalk")) {
walkTypes.add("Land.Snow");
} else if (keyword.endsWith("walk")) {
String landtype = TextUtil.fastReplace(keyword, "walk", "");
String valid = landtype;
// substract Snow type
if (landtype.startsWith("Snow ")) {
landtype = landtype.substring(5);
valid = landtype + ".Snow";
}
// basic land types are handled before
if (CardType.isALandType(landtype) && !CardType.isABasicLandType(landtype)) {
if (!walkTypes.contains(landtype)) {
walkTypes.add(valid);
}
}
}
}
if (walkTypes.isEmpty()) {
return false;
}
final String[] valid = walkTypes.toArray(new String[0]);
final CardCollectionView defendingLands = defendingPlayer.getCardsIn(ZoneType.Battlefield);
for (final Card c : defendingLands) {
if (c.isValid(valid, defendingPlayer, attacker, null)) {
return true;
}
}
return false;
}
/**
* canBlockAtLeastOne.
*
@@ -701,7 +591,7 @@ public class CombatUtil {
public static boolean canBeBlocked(final Card attacker, final List<Card> blockers, final Combat combat) {
int blocks = 0;
for (final Card blocker : blockers) {
if (canBeBlocked(attacker, blocker.getController()) && canBlock(attacker, blocker)) {
if (canBlock(attacker, blocker)) {
blocks++;
}
}
@@ -716,7 +606,7 @@ public class CombatUtil {
}
for (final Card blocker : blockers) {
if (canBeBlocked(attacker, blocker.getController()) && canBlock(attacker, blocker)) {
if (canBlock(attacker, blocker)) {
potentialBlockers.add(blocker);
}
}
@@ -1127,11 +1017,6 @@ public class CombatUtil {
return false;
}
if (isUnblockableFromLandwalk(attacker, blocker.getController())
&& !blocker.hasKeyword("CARDNAME can block creatures with landwalk abilities as though they didn't have those abilities.")) {
return false;
}
// rare case:
if (blocker.hasKeyword(Keyword.SHADOW)
&& blocker.hasKeyword("CARDNAME can block creatures with shadow as though they didn't have shadow.")) {

View File

@@ -1,16 +1,6 @@
package forge.game.keyword;
import java.util.Collection;
public class Hexproof extends KeywordInstance<Hexproof> {
private String type = "";
@Override
protected void parse(String details) {
if (!details.isEmpty()) {
type = details.split(":")[1];
}
}
public class Hexproof extends KeywordWithType {
@Override
protected String formatReminderText(String reminderText) {
@@ -19,18 +9,4 @@ public class Hexproof extends KeywordInstance<Hexproof> {
}
return String.format(reminderText, type);
}
/* (non-Javadoc)
* @see forge.game.keyword.KeywordInstance#redundant(java.util.Collection)
*/
@Override
public boolean redundant(Collection<KeywordInterface> list) {
for (KeywordInterface i : list) {
if (i.getOriginal().equals(getOriginal())) {
return true;
}
}
return false;
}
}

View File

@@ -102,7 +102,7 @@ public enum Keyword {
GRAVESTORM("Gravestorm", SimpleKeyword.class, false, "When you cast this spell, copy it for each permanent that was put into a graveyard from the battlefield this turn. If the spell has any targets, you may choose new targets for any of the copies."),
HASTE("Haste", SimpleKeyword.class, true, "This creature can attack and {T} as soon as it comes under your control."),
HAUNT("Haunt", SimpleKeyword.class, false, "When this is put into a graveyard, exile it haunting target creature."),
HEXPROOF("Hexproof", Hexproof.class, false, "This can't be the target of %s spells or abilities your opponents control."),
HEXPROOF("Hexproof", Hexproof.class, true, "This can't be the target of %s spells or abilities your opponents control."),
HIDEAWAY("Hideaway", KeywordWithAmount.class, false, "When this permanent enters the battlefield, look at the top {%d:card} of your library, exile one face down, then put the rest on the bottom of your library."),
HORSEMANSHIP("Horsemanship", SimpleKeyword.class, true, "This creature can't be blocked except by creatures with horsemanship."),
IMPROVISE("Improvise", SimpleKeyword.class, true, "Your artifacts can help cast this spell. Each artifact you tap after you're done activating mana abilities pays for {1}."),
@@ -112,7 +112,7 @@ public enum Keyword {
INTIMIDATE("Intimidate", SimpleKeyword.class, true, "This creature can't be blocked except by artifact creatures and/or creatures that share a color with it."),
KICKER("Kicker", Kicker.class, false, "You may pay an additional %s as you cast this spell."),
JUMP_START("Jump-start", SimpleKeyword.class, false, "You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card."),
LANDWALK("Landwalk", KeywordWithType.class, false, "This creature is unblockable as long as defending player controls a %s."),
LANDWALK("Landwalk", KeywordWithType.class, true, "This creature is unblockable as long as defending player controls {1:%s}."),
LEVEL_UP("Level up", KeywordWithCost.class, false, "%s: Put a level counter on this. Level up only as a sorcery."),
LIFELINK("Lifelink", SimpleKeyword.class, true, "Damage dealt by this creature also causes its controller to gain that much life."),
LIVING_METAL("Living metal", SimpleKeyword.class, true, "As long as it's your turn, this Vehicle is also a creature."),
@@ -141,7 +141,7 @@ public enum Keyword {
PHASING("Phasing", SimpleKeyword.class, true, "This phases in or out before you untap during each of your untap steps. While it's phased out, it's treated as though it doesn't exist."),
PLOT("Plot", KeywordWithCost.class, false, "You may pay %s and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorvery."),
POISONOUS("Poisonous", KeywordWithAmount.class, false, "Whenever this creature deals combat damage to a player, that player gets {%d:poison counter}."),
PROTECTION("Protection", Protection.class, false, "This creature can't be blocked, targeted, dealt damage, or equipped/enchanted by %s."),
PROTECTION("Protection", Protection.class, true, "This creature can't be blocked, targeted, dealt damage, or equipped/enchanted by %s."),
PROTOTYPE("Prototype", KeywordWithCost.class, false, "You may cast this spell with different mana cost, color, and size. It keeps its abilities and types."),
PROVOKE("Provoke", SimpleKeyword.class, false, "Whenever this creature attacks, you may have target creature defending player controls untap and block it if able."),
PROWESS("Prowess", SimpleKeyword.class, false, "Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn."),
@@ -249,21 +249,13 @@ public enum Keyword {
int idx = k.indexOf(' ');
String enumName = k.replace(" ", "_").toUpperCase(Locale.ROOT);
String firstWord = idx == -1 ? enumName : enumName.substring(0, idx);
if (firstWord.endsWith("WALK")) {
keyword = Keyword.LANDWALK;
details = firstWord.substring(0, firstWord.length() - 4);
}
else if (idx != -1) {
if (idx != -1) {
idx = k.indexOf(' ', idx + 1);
String secondWord = idx == -1 ? enumName.substring(firstWord.length() + 1) : enumName.substring(firstWord.length() + 1, idx);
if (secondWord.equalsIgnoreCase("OFFERING")) {
keyword = Keyword.OFFERING;
details = firstWord;
}
else if (secondWord.equalsIgnoreCase("LANDWALK")) {
keyword = Keyword.LANDWALK;
details = firstWord;
}
}
}
KeywordInstance<?> inst;

View File

@@ -303,7 +303,15 @@ public abstract class KeywordInstance<T extends KeywordInstance<?>> implements K
*/
@Override
public boolean redundant(Collection<KeywordInterface> list) {
return !list.isEmpty() && keyword.isMultipleRedundant;
if (!keyword.isMultipleRedundant) {
return false;
}
for (KeywordInterface i : list) {
if (i.getOriginal().equals(getOriginal())) {
return true;
}
}
return false;
}
@Override

View File

@@ -3,16 +3,21 @@ package forge.game.keyword;
import forge.card.CardType;
public class KeywordWithType extends KeywordInstance<KeywordWithType> {
private String type;
protected String type;
@Override
protected void parse(String details) {
if (CardType.isACardType(details)) {
type = details.toLowerCase();
} else if (details.contains(":")) {
type = details.split(":")[0];
if (this.toString().startsWith("Affinity")) {
switch (getKeyword()) {
case AFFINITY:
case HEXPROOF:
case LANDWALK:
type = details.split(":")[1];
break;
default:
type = details.split(":")[0];
}
} else {
type = details;

View File

@@ -1,17 +1,6 @@
package forge.game.keyword;
import java.util.Collection;
public class Trample extends KeywordInstance<Trample> {
private String type = "";
@Override
protected void parse(String details) {
if (!details.isEmpty()) {
type = details.split(":")[0];
}
}
public class Trample extends KeywordWithType {
@Override
protected String formatReminderText(String reminderText) {
if (!type.isEmpty()) {
@@ -19,17 +8,4 @@ public class Trample extends KeywordInstance<Trample> {
}
return reminderText;
}
/* (non-Javadoc)
* @see forge.game.keyword.KeywordInstance#redundant(java.util.Collection)
*/
@Override
public boolean redundant(Collection<KeywordInterface> list) {
for (KeywordInterface i : list) {
if (i.getOriginal().equals(getOriginal())) {
return true;
}
}
return false;
}
}

View File

@@ -23,14 +23,14 @@ public class PlayerFactoryUtil {
sbValid.append("| ValidSource$ ").append(k[1]);
}
String effect = "Mode$ CantTarget | Hexproof$ True | ValidPlayer$ Player.You | Secondary$ True "
String effect = "Mode$ CantTarget | ValidPlayer$ Player.You | Secondary$ True "
+ sbValid.toString() + " | Activator$ Opponent | EffectZone$ Command | Description$ "
+ sbDesc.toString() + " (" + inst.getReminderText() + ")";
final Card card = player.getKeywordCard();
inst.addStaticAbility(StaticAbility.create(effect, card, card.getCurrentState(), false));
} else if (keyword.equals("Shroud")) {
String effect = "Mode$ CantTarget | Shroud$ True | ValidPlayer$ Player.You | Secondary$ True "
String effect = "Mode$ CantTarget | ValidPlayer$ Player.You | Secondary$ True "
+ "| EffectZone$ Command | Description$ Shroud (" + inst.getReminderText() + ")";
final Card card = player.getKeywordCard();

View File

@@ -83,7 +83,7 @@ public class StaticAbilityCantAttackBlock {
return false;
}
if (stAb.hasParam("DefenderKeyword")) {
if (stAb.isKeyword(Keyword.DEFENDER)) {
// check for "can attack as if didn't have defender" static
if (StaticAbilityCanAttackDefender.canAttack(card, target)) {
return false;
@@ -198,6 +198,11 @@ public class StaticAbilityCantAttackBlock {
if (blocker == null || !stAb.matchesValidParam("ValidDefender", blocker.getController())) {
return false;
}
if (stAb.isKeyword(Keyword.LANDWALK)) {
if (StaticAbilityIgnoreLandwalk.ignoreLandWalk(attacker, blocker, stAb.getKeyword())) {
return false;
}
}
return true;
}

View File

@@ -135,11 +135,11 @@ public class StaticAbilityCantTarget {
final Card source = spellAbility.getHostCard();
final Player activator = spellAbility.getActivatingPlayer();
if (stAb.hasParam("Hexproof") && StaticAbilityIgnoreHexproofShroud.ignore(entity, spellAbility, Keyword.HEXPROOF)) {
if (stAb.isKeyword(Keyword.HEXPROOF) && StaticAbilityIgnoreHexproofShroud.ignore(entity, spellAbility, Keyword.HEXPROOF)) {
return false;
}
if (stAb.hasParam("Shroud") && StaticAbilityIgnoreHexproofShroud.ignore(entity, spellAbility, Keyword.SHROUD)) {
if (stAb.isKeyword(Keyword.SHROUD) && StaticAbilityIgnoreHexproofShroud.ignore(entity, spellAbility, Keyword.SHROUD)) {
return false;
}

View File

@@ -0,0 +1,42 @@
package forge.game.staticability;
import forge.game.Game;
import forge.game.card.Card;
import forge.game.keyword.KeywordInterface;
import forge.game.zone.ZoneType;
public class StaticAbilityIgnoreLandwalk {
static String MODE = "IgnoreLandWalk";
public static boolean ignoreLandWalk(Card attacker, Card blocker, KeywordInterface k) {
final Game game = attacker.getGame();
for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) {
for (final StaticAbility stAb : ca.getStaticAbilities()) {
if (!stAb.checkConditions(MODE)) {
continue;
}
if (ignoreLandWalkAbility(stAb, attacker, blocker, k)) {
return true;
}
}
}
return false;
}
public static boolean ignoreLandWalkAbility(final StaticAbility stAb, Card attacker, Card blocker, KeywordInterface k) {
if (!stAb.matchesValidParam("ValidAttacker", attacker)) {
return false;
}
if (!stAb.matchesValidParam("ValidBlocker", blocker)) {
return false;
}
if (!stAb.matchesValidParam("ValidKeyword", k.getOriginal())) {
return false;
}
return true;
}
}

View File

@@ -2,5 +2,5 @@ Name:Anaconda
ManaCost:3 G
Types:Creature Snake
PT:3/3
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,5 +2,5 @@ Name:Anurid Murkdiver
ManaCost:4 B B
Types:Creature Zombie Frog Beast
PT:4/3
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -1,7 +1,7 @@
Name:Aysen Highway
ManaCost:3 W W W
Types:Enchantment
S:Mode$ Continuous | Affected$ Creature.White | AddKeyword$ Plainswalk | Description$ White creatures have plainswalk.
S:Mode$ Continuous | Affected$ Creature.White | AddKeyword$ Landwalk:Plains | Description$ White creatures have plainswalk.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
Oracle:White creatures have plainswalk. (They can't be blocked as long as defending player controls a Plains.)

View File

@@ -2,5 +2,5 @@ Name:Ayumi, the Last Visitor
ManaCost:3 G G
Types:Legendary Creature Spirit
PT:7/3
K:Legendary landwalk
K:Landwalk:Land.Legendary:Legendary land
Oracle:Legendary landwalk (This creature can't be blocked as long as defending player controls a legendary land.)

View File

@@ -3,7 +3,7 @@ ManaCost:2 R
Types:Creature Human Barbarian
PT:1/2
A:AB$ ChooseType | Cost$ 2 R T | Defined$ You | Type$ Land | SubAbility$ DBPump | StackDescription$ SpellDescription | SpellDescription$ Choose a land type. Target creature you control gains snow landwalk of the chosen type until end of turn.
SVar:DBPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | KW$ Snow ChosenTypewalk | DefinedKW$ ChosenType | StackDescription$ None | SubAbility$ DBDelTrig
SVar:DBPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | KW$ Landwalk:ChosenType.Snow:Snow Chosentype | DefinedKW$ ChosenType | StackDescription$ None | SubAbility$ DBDelTrig
SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | RememberObjects$ ParentTarget | Execute$ TrigReturn | SpellDescription$ Return that creature to its owner's hand at the beginning of the next end step.
SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Battlefield | Destination$ Hand
AI:RemoveDeck:All

View File

@@ -3,5 +3,5 @@ ManaCost:1 G
Types:Creature Insect
PT:1/1
K:Flying
K:Swampwalk
K:Landwalk:Swamp
Oracle:Flying; swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,5 +2,5 @@ Name:Benthic Behemoth
ManaCost:5 U U U
Types:Creature Serpent
PT:7/6
K:Islandwalk
K:Landwalk:Island
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)

View File

@@ -2,7 +2,7 @@ Name:Benthic Djinn
ManaCost:2 U B
Types:Creature Djinn
PT:5/3
K:Islandwalk
K:Landwalk:Island
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ At the beginning of your upkeep, you lose 2 life.
SVar:TrigLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ 2
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)\nAt the beginning of your upkeep, you lose 2 life.

View File

@@ -2,7 +2,7 @@ Name:Blistergrub
ManaCost:2 B
Types:Creature Phyrexian Horror
PT:2/2
K:Swampwalk
K:Landwalk:Swamp
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigLoseLife | TriggerDescription$ When CARDNAME dies, each opponent loses 2 life.
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\nWhen Blistergrub dies, each opponent loses 2 life.

View File

@@ -2,5 +2,5 @@ Name:Bog Raiders
ManaCost:2 B
Types:Creature Zombie
PT:2/2
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,5 +2,5 @@ Name:Bog Smugglers
ManaCost:1 B B
Types:Creature Human Mercenary
PT:2/2
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,7 +2,7 @@ Name:Bog-Strider Ash
ManaCost:3 G
Types:Creature Treefolk Shaman
PT:2/4
K:Swampwalk
K:Landwalk:Swamp
T:Mode$ SpellCast | ValidCard$ Goblin | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ Whenever a player casts a Goblin spell, you may pay {G}. If you do, you gain 2 life.
SVar:TrigGainLife:AB$GainLife | Cost$ G | Defined$ You | LifeAmount$ 2
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\nWhenever a player casts a Goblin spell, you may pay {G}. If you do, you gain 2 life.

View File

@@ -2,5 +2,5 @@ Name:Bog Tatters
ManaCost:4 B
Types:Creature Wraith
PT:4/2
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,5 +2,5 @@ Name:Bog Wraith
ManaCost:3 B
Types:Creature Wraith
PT:3/3
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,7 +2,7 @@ Name:Boggart Arsonists
ManaCost:2 R
Types:Creature Goblin Rogue
PT:2/1
K:Plainswalk
K:Landwalk:Plains
A:AB$ Destroy | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Scarecrow,Plains | TgtPrompt$ Select target Scarecrow or Plains | SpellDescription$ Destroy target Scarecrow or Plains.
AI:RemoveDeck:Random
Oracle:Plainswalk (This creature can't be blocked as long as defending player controls a Plains.)\n{2}{R}, Sacrifice Boggart Arsonists: Destroy target Scarecrow or Plains.

View File

@@ -2,6 +2,6 @@ Name:Boggart Loggers
ManaCost:2 B
Types:Creature Goblin Rogue
PT:2/1
K:Forestwalk
K:Landwalk:Forest
A:AB$ Destroy | Cost$ 2 B Sac<1/CARDNAME> | ValidTgts$ Treefolk,Forest | TgtPrompt$ Select target Treefolk or Forest | SpellDescription$ Destroy target Treefolk or Forest.
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)\n{2}{B}, Sacrifice Boggart Loggers: Destroy target Treefolk or Forest.

View File

@@ -4,5 +4,5 @@ Types:Plane Mars
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigGoad | TriggerZones$ Command | TriggerDescription$ At the beginning of your end step, goad target creature controlled by the player to your left. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
SVar:TrigGoad:DB$ Goad | ValidTgts$ Creature.ControlledBy NextPlayerToYourLeft | TgtPrompt$ Select target creature controlled by the player to your left
T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigPump | TriggerDescription$ Whenever chaos ensues, target creature gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | KW$ Islandwalk
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | KW$ Landwalk:Island
Oracle:At the beginning of your end step, goad target creature controlled by the player to your left. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)\nWhenever chaos ensues, target creature gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)

View File

@@ -2,5 +2,5 @@ Name:Bull Hippo
ManaCost:3 G
Types:Creature Hippo
PT:3/3
K:Islandwalk
K:Landwalk:Island
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)

View File

@@ -3,7 +3,7 @@ ManaCost:R
Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Mountainwalk | Description$ Enchanted creature has mountainwalk.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Landwalk:Mountain | Description$ Enchanted creature has mountainwalk.
AI:RemoveDeck:Random
DeckHas:Keyword$Mountainwalk
Oracle:Enchant creature\nEnchanted creature has mountainwalk. (It can't be blocked as long as defending player controls a Mountain.)

View File

@@ -4,5 +4,5 @@ Types:Creature Merfolk
PT:2/3
K:ETBReplacement:Other:ChooseLT
SVar:ChooseLT:DB$ ChooseType | Defined$ You | AtRandom$ True | Type$ Basic Land | SpellDescription$ As CARDNAME enters the battlefield, choose a land type.
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ ChosenTypewalk | Description$ CARDNAME has landwalk of the chosen type.
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Landwalk:ChosenType | Description$ CARDNAME has landwalk of the chosen type.
Oracle:As Camato Scout enters the battlefield, choose a basic land type at random. Camato Scout has landwalk of the chosen type.

View File

@@ -2,5 +2,5 @@ Name:Canyon Wildcat
ManaCost:1 R
Types:Creature Cat
PT:2/1
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,5 +2,5 @@ Name:Cat Warriors
ManaCost:1 G G
Types:Creature Cat Warrior
PT:2/2
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,7 +2,7 @@ Name:Cateran Slaver
ManaCost:4 B B
Types:Creature Horror Mercenary
PT:5/5
K:Swampwalk
K:Landwalk:Swamp
A:AB$ ChangeZone | Cost$ 5 T | Origin$ Library | Destination$ Battlefield | ChangeType$ Permanent.Mercenary+cmcLE5 | ChangeNum$ 1 | SpellDescription$ Search your library for a Mercenary permanent card with mana value 5 or less, put it onto the battlefield, then shuffle.
AI:RemoveDeck:Random
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\n{5}, {T}: Search your library for a Mercenary permanent card with mana value 5 or less, put it onto the battlefield, then shuffle.

View File

@@ -3,7 +3,7 @@ ManaCost:1 R R
Types:Creature Human
PT:1/4
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, it gets +1/-2 until end of turn.
A:AB$ Pump | Cost$ 1 R R T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Mountainwalk | SpellDescription$ Target creature gains mountainwalk until end of turn.
A:AB$ Pump | Cost$ 1 R R T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Landwalk:Mountain | SpellDescription$ Target creature gains mountainwalk until end of turn.
SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ 1 | NumDef$ -2
DeckHas:Keyword$Mountainwalk
Oracle:Whenever Cave People attacks, it gets +1/-2 until end of turn.\n{1}{R}{R}, {T}: Target creature gains mountainwalk until end of turn. (It can't be blocked as long as defending player controls a Mountain.)

View File

@@ -3,5 +3,5 @@ ManaCost:1 R
Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Mountainwalk | Description$ Enchanted creature gets +1/+1 and has mountainwalk.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Landwalk:Mountain | Description$ Enchanted creature gets +1/+1 and has mountainwalk.
Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has mountainwalk. (It can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,6 +2,6 @@ Name:Cavern Crawler
ManaCost:2 R
Types:Creature Insect
PT:0/3
K:Mountainwalk
K:Landwalk:Mountain
A:AB$ Pump | Cost$ R | Defined$ Self | NumAtt$ +1 | NumDef$ -1 | SpellDescription$ CARDNAME gets +1/-1 until end of turn.
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)\n{R}: Cavern Crawler gets +1/-1 until end of turn.

View File

@@ -2,7 +2,7 @@ Name:Chatterfang, Squirrel General
ManaCost:2 G
Types:Legendary Creature Squirrel Warrior
PT:3/3
K:Forestwalk
K:Landwalk:Forest
R:Event$ CreateToken | ActiveZones$ Battlefield | ValidToken$ Card.YouCtrl | ReplaceWith$ DBReplace | Description$ If one or more tokens would be created under your control, those tokens plus that many 1/1 green Squirrel creature tokens are created instead.
SVar:DBReplace:DB$ ReplaceToken | Type$ AddToken | ValidCard$ Card.YouCtrl | TokenScript$ g_1_1_squirrel
A:AB$ Pump | Cost$ B Sac<X/Squirrel> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ -X | SpellDescription$ Target creature gets +X/-X until end of turn.

View File

@@ -2,6 +2,6 @@ Name:Chorus of the Conclave
ManaCost:4 G G W W
Types:Legendary Creature Dryad
PT:3/8
K:Forestwalk
K:Landwalk:Forest
K:As an additional cost to cast creature spells, you may pay any amount of mana. If you do, that creature enters the battlefield with that many additional +1/+1 counters on it.
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)\nAs an additional cost to cast creature spells, you may pay any amount of mana. If you do, that creature enters the battlefield with that many additional +1/+1 counters on it.

View File

@@ -2,5 +2,5 @@ Name:Cliff Threader
ManaCost:1 W
Types:Creature Kor Scout
PT:2/1
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,7 +2,7 @@ Name:Cold-Eyed Selkie
ManaCost:1 GU GU
Types:Creature Merfolk Rogue
PT:1/1
K:Islandwalk
K:Landwalk:Island
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDraw | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may draw that many cards.
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ X | OptionalDecider$ You
SVar:X:TriggerCount$DamageAmount

View File

@@ -2,6 +2,6 @@ Name:Colos Yearling
ManaCost:2 R
Types:Creature Goat Beast
PT:1/1
K:Mountainwalk
K:Landwalk:Mountain
A:AB$ Pump | Cost$ R | Defined$ Self | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)\n{R}: Colos Yearling gets +1/+0 until end of turn.

View File

@@ -2,7 +2,7 @@ Name:Colossal Whale
ManaCost:5 U U
Types:Creature Whale
PT:5/5
K:Islandwalk
K:Landwalk:Island
T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, you may exile target creature defending player controls until CARDNAME leaves the battlefield.
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player control | Duration$ UntilHostLeavesPlay
SVar:PlayMain1:TRUE

View File

@@ -1,7 +1,7 @@
Name:Crevasse
ManaCost:2 R
Types:Enchantment
S:Mode$ Continuous | Affected$ Creature.withMountainwalk | AddHiddenKeyword$ May be blocked as though it doesn't have Mountainwalk. | Description$ Creatures with mountainwalk can be blocked as though they didn't have mountainwalk.
S:Mode$ IgnoreLandWalk | ValidKeyword$ Landwalk:Mountain | Description$ Creatures with mountainwalk can be blocked as though they didn't have mountainwalk.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
Oracle:Creatures with mountainwalk can be blocked as though they didn't have mountainwalk.

View File

@@ -1,7 +1,7 @@
Name:Deadfall
ManaCost:2 G
Types:Enchantment
S:Mode$ Continuous | Affected$ Creature.withForestwalk | AddHiddenKeyword$ May be blocked as though it doesn't have Forestwalk. | Description$ Creatures with forestwalk can be blocked as though they didn't have forestwalk.
S:Mode$ IgnoreLandWalk | ValidKeyword$ Landwalk:Forest | Description$ Creatures with forestwalk can be blocked as though they didn't have forestwalk.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
Oracle:Creatures with forestwalk can be blocked as though they didn't have forestwalk.

View File

@@ -2,5 +2,5 @@ Name:Deeptread Merrow
ManaCost:1 U
Types:Creature Merfolk Rogue
PT:2/1
A:AB$ Pump | Cost$ U | Defined$ Self | KW$ Islandwalk | SpellDescription$ CARDNAME gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)
A:AB$ Pump | Cost$ U | Defined$ Self | KW$ Landwalk:Island | SpellDescription$ CARDNAME gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)
Oracle:{U}: Deeptread Merrow gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)

View File

@@ -2,6 +2,6 @@ Name:Desert Nomads
ManaCost:2 R
Types:Creature Human Nomad
PT:2/2
K:Desertwalk
K:Landwalk:Desert
R:Event$ DamageDone | Prevent$ True | ValidSource$ Desert | ValidTarget$ Creature.Self | Description$ Prevent all damage that would be dealt to CARDNAME by Deserts.
Oracle:Desertwalk\nPrevent all damage that would be dealt to Desert Nomads by Deserts.

View File

@@ -2,5 +2,5 @@ Name:Devouring Deep
ManaCost:2 U
Types:Creature Fish
PT:1/2
K:Islandwalk
K:Landwalk:Island
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)

View File

@@ -2,6 +2,6 @@ Name:Dirtwater Wraith
ManaCost:3 B
Types:Creature Wraith
PT:1/3
K:Swampwalk
K:Landwalk:Swamp
A:AB$ Pump | Cost$ B | Defined$ Self | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\n{B}: Dirtwater Wraith gets +1/+0 until end of turn.

View File

@@ -2,5 +2,5 @@ Name:Dryad Sophisticate
ManaCost:1 G
Types:Creature Dryad
PT:2/1
K:Nonbasic landwalk
K:Landwalk:Land.nonBasic:Nonbasic land
Oracle:Nonbasic landwalk (This creature can't be blocked as long as defending player controls a nonbasic land.)

View File

@@ -3,5 +3,5 @@ ManaCost:G
Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ G | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Forestwalk | Description$ Enchanted creature has forestwalk. (It can't be blocked as long as defending player controls a Forest.)
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Landwalk:Forest | Description$ Enchanted creature has forestwalk. (It can't be blocked as long as defending player controls a Forest.)
Oracle:Enchant creature\nEnchanted creature has forestwalk. (It can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,5 +2,5 @@ Name:Dwarven Grunt
ManaCost:R
Types:Creature Dwarf
PT:1/1
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,5 +2,5 @@ Name:Dwarven Pony
ManaCost:R
Types:Creature Horse
PT:1/1
A:AB$ Pump | Cost$ 1 R T | ValidTgts$ Creature.Dwarf | TgtPrompt$ Select target Dwarf creature | KW$ Mountainwalk | SpellDescription$ Target Dwarf creature gains mountainwalk until end of turn. (It can't be blocked as long as defending player controls a Mountain.)
A:AB$ Pump | Cost$ 1 R T | ValidTgts$ Creature.Dwarf | TgtPrompt$ Select target Dwarf creature | KW$ Landwalk:Mountain | SpellDescription$ Target Dwarf creature gains mountainwalk until end of turn. (It can't be blocked as long as defending player controls a Mountain.)
Oracle:{1}{R}, {T}: Target Dwarf creature gains mountainwalk until end of turn. (It can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,7 +2,7 @@ Name:Eladamri, Lord of Leaves
ManaCost:G G
Types:Legendary Creature Elf Warrior
PT:2/2
S:Mode$ Continuous | Affected$ Creature.Elf+Other | AddKeyword$ Forestwalk | Description$ Other Elf creatures have forestwalk. (They can't be blocked as long as defending player controls a Forest.)
S:Mode$ Continuous | Affected$ Creature.Elf+Other | AddKeyword$ Landwalk:Forest | Description$ Other Elf creatures have forestwalk. (They can't be blocked as long as defending player controls a Forest.)
S:Mode$ Continuous | Affected$ Card.Elf+Other | AddKeyword$ Shroud | Description$ Other Elves have shroud. (They can't be the targets of spells or abilities.)
SVar:PlayMain1:TRUE
Oracle:Other Elf creatures have forestwalk. (They can't be blocked as long as defending player controls a Forest.)\nOther Elves have shroud. (They can't be the targets of spells or abilities.)

View File

@@ -2,5 +2,5 @@ Name:Elite Cat Warrior
ManaCost:2 G
Types:Creature Cat Warrior
PT:2/3
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,7 +2,7 @@ Name:Elvish Champion
ManaCost:1 G G
Types:Creature Elf
PT:2/2
S:Mode$ Continuous | Affected$ Creature.Elf+Other | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Forestwalk | Description$ Other Elf creatures get +1/+1 and have forestwalk.
S:Mode$ Continuous | Affected$ Creature.Elf+Other | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Landwalk:Forest | Description$ Other Elf creatures get +1/+1 and have forestwalk.
SVar:PlayMain1:TRUE
SVar:BuffedBy:Elf
Oracle:Other Elf creatures get +1/+1 and have forestwalk. (They can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,6 +2,6 @@ Name:Elvish Pathcutter
ManaCost:3 G
Types:Creature Elf Scout
PT:1/2
A:AB$ Pump | Cost$ 2 G | ValidTgts$ Creature.Elf | TgtPrompt$ Select target Elf creature | KW$ Forestwalk | SpellDescription$ Target Elf creature gains forestwalk until end of turn. (It can't be blocked as long as defending player controls a Forest.)
A:AB$ Pump | Cost$ 2 G | ValidTgts$ Creature.Elf | TgtPrompt$ Select target Elf creature | KW$ Landwalk:Forest | SpellDescription$ Target Elf creature gains forestwalk until end of turn. (It can't be blocked as long as defending player controls a Forest.)
AI:RemoveDeck:Random
Oracle:{2}{G}: Target Elf creature gains forestwalk until end of turn. (It can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,5 +2,5 @@ Name:Emerald Oryx
ManaCost:3 G
Types:Creature Antelope
PT:2/3
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,7 +2,7 @@ Name:Enclave Elite
ManaCost:2 U
Types:Creature Merfolk Soldier
PT:2/2
K:Islandwalk
K:Landwalk:Island
K:Multikicker:1 U
K:etbCounter:P1P1:XKicked:no condition:CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked.
SVar:XKicked:Count$TimesKicked

View File

@@ -2,5 +2,5 @@ Name:Enslaved Scout
ManaCost:2 R
Types:Creature Goblin Scout
PT:2/2
A:AB$ Pump | Cost$ 2 | Defined$ Self | KW$ Mountainwalk | SpellDescription$ Enslaved Scout gains mountainwalk until end of turn.
A:AB$ Pump | Cost$ 2 | Defined$ Self | KW$ Landwalk:Mountain | SpellDescription$ Enslaved Scout gains mountainwalk until end of turn.
Oracle:{2}: Enslaved Scout gains mountainwalk until end of turn. (It can't be blocked as long as defending player controls a Mountain.)

View File

@@ -3,6 +3,6 @@ ManaCost:3 G
Types:Creature Djinn
PT:4/5
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of your upkeep, target non-Wall creature an opponent controls gains forestwalk until your next upkeep. (It can't be blocked as long as defending player controls a Forest.)
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.nonWall+OppCtrl | TgtPrompt$ Select target non-Wall creature an opponent controls | KW$ Forestwalk | Duration$ UntilYourNextUpkeep
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.nonWall+OppCtrl | TgtPrompt$ Select target non-Wall creature an opponent controls | KW$ Landwalk:Forest | Duration$ UntilYourNextUpkeep
DeckHas:Ability$Forestwalk
Oracle:At the beginning of your upkeep, target non-Wall creature an opponent controls gains forestwalk until your next upkeep. (It can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,5 +2,5 @@ Name:Farbog Explorer
ManaCost:2 W
Types:Creature Human Scout
PT:2/3
K:Swampwalk
K:Landwalk:Swamp
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)

View File

@@ -2,6 +2,6 @@ Name:Filth
ManaCost:3 B
Types:Creature Incarnation
PT:2/2
K:Swampwalk
S:Mode$ Continuous | Affected$ Creature.YouCtrl | EffectZone$ Graveyard | AddKeyword$ Swampwalk | IsPresent$ Swamp.YouCtrl | Description$ As long as CARDNAME is in your graveyard and you control a Swamp, creatures you control have swampwalk.
K:Landwalk:Swamp
S:Mode$ Continuous | Affected$ Creature.YouCtrl | EffectZone$ Graveyard | AddKeyword$ Landwalk:Swamp | IsPresent$ Swamp.YouCtrl | Description$ As long as CARDNAME is in your graveyard and you control a Swamp, creatures you control have swampwalk.
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\nAs long as Filth is in your graveyard and you control a Swamp, creatures you control have swampwalk.

View File

@@ -3,6 +3,6 @@ ManaCost:1 U
Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Islandwalk | Description$ Enchanted creature has islandwalk. (It can't be blocked as long as defending player controls an Island.)
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Landwalk:Island | Description$ Enchanted creature has islandwalk. (It can't be blocked as long as defending player controls an Island.)
DeckHas:Keyword$Islandwalk
Oracle:Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)\nEnchanted creature has islandwalk. (It can't be blocked as long as defending player controls an Island.)

View File

@@ -4,5 +4,5 @@ Types:Instant
A:SP$ Charm | Cost$ B | Choices$ DBDiscard,DBPump,DBPump2
SVar:DBDiscard:DB$ Discard | ValidTgts$ Player | TgtPrompt$ Choose a player | NumCards$ 1 | Mode$ TgtChoose | SpellDescription$ Target player discards a card.
SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ -1 | SpellDescription$ Target creature gets +2/-1 until end of turn.
SVar:DBPump2:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Swampwalk | SpellDescription$ Target creature gains swampwalk until end of turn.
SVar:DBPump2:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Landwalk:Swamp | SpellDescription$ Target creature gains swampwalk until end of turn.
Oracle:Choose one —\n• Target player discards a card.\n• Target creature gets +2/-1 until end of turn.\n• Target creature gains swampwalk until end of turn. (It can't be blocked as long as defending player controls a Swamp.)

View File

@@ -4,6 +4,6 @@ Types:Creature Slug
PT:1/1
A:AB$ DelayedTrigger | Cost$ 5 | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ ChooseB | RememberObjects$ Self | StackDescription$ SpellDescription | SpellDescription$ At the beginning of your next upkeep, choose a basic land type. CARDNAME gains landwalk of the chosen type until the end of that turn. (It can't be blocked as long as defending player controls a land of that type.)
SVar:ChooseB:DB$ ChooseType | Defined$ You | Type$ Basic Land | AILogic$ ChosenLandwalk | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | Defined$ DelayTriggerRememberedLKI | KW$ ChosenTypewalk | DefinedKW$ ChosenType
SVar:DBPump:DB$ Pump | Defined$ DelayTriggerRememberedLKI | KW$ Landwalk:ChosenType | DefinedKW$ ChosenType
AI:RemoveDeck:All
Oracle:{5}: At the beginning of your next upkeep, choose a basic land type. Giant Slug gains landwalk of the chosen type until the end of that turn. (It can't be blocked as long as defending player controls a land of that type.)

View File

@@ -2,5 +2,5 @@ Name:Glissa's Courier
ManaCost:1 G G
Types:Creature Phyrexian Horror
PT:2/3
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,7 +2,7 @@ Name:Goblin Flotilla
ManaCost:2 R
Types:Creature Goblin
PT:2/2
K:Islandwalk
K:Landwalk:Island
T:Mode$ Phase | Phase$ BeginCombat | TriggerZones$ Battlefield | Execute$ AnimateDB | TriggerDescription$ At the beginning of each combat, unless you pay {R}, whenever CARDNAME blocks or becomes blocked by a creature this combat, that creature gains first strike until end of turn.
SVar:AnimateDB:DB$ Effect | Triggers$ AttackerBlocked,Blocks | UnlessCost$ R | UnlessPayer$ You | Duration$ UntilEndOfCombat
SVar:AttackerBlocked:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.EffectSource | Execute$ PumpAttacker | TriggerDescription$ Whenever EFFECTSOURCE blocks or becomes blocked by a creature this combat, that creature gains first strike until end of turn.

View File

@@ -2,7 +2,7 @@ Name:Goblin King
ManaCost:1 R R
Types:Creature Goblin
PT:2/2
S:Mode$ Continuous | Affected$ Creature.Goblin+Other | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Mountainwalk | Description$ Other Goblin creatures get +1/+1 and have mountainwalk.
S:Mode$ Continuous | Affected$ Creature.Goblin+Other | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Landwalk:Mountain | Description$ Other Goblin creatures get +1/+1 and have mountainwalk.
SVar:PlayMain1:TRUE
DeckHas:Keyword$Mountainwalk
DeckHints:Type$Goblin & Name$Blood Moon

View File

@@ -2,5 +2,5 @@ Name:Goblin Mountaineer
ManaCost:R
Types:Creature Goblin Scout
PT:1/1
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,5 +2,5 @@ Name:Goblin Spelunkers
ManaCost:2 R
Types:Creature Goblin Warrior
PT:2/2
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -2,7 +2,7 @@ Name:Goblins of the Flarg
ManaCost:R
Types:Creature Goblin Warrior
PT:1/1
K:Mountainwalk
K:Landwalk:Mountain
T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Dwarf.YouCtrl | PresentCompare$ GE1 | Execute$ TrigSac | TriggerDescription$ When you control a Dwarf, sacrifice CARDNAME.
SVar:TrigSac:DB$ Sacrifice
SVar:NeedsToPlayVar:DwarfsYouCtrl EQ0

View File

@@ -2,6 +2,6 @@ Name:Gosta Dirk
ManaCost:3 W W U U
Types:Legendary Creature Human Warrior
PT:4/4
S:Mode$ Continuous | Affected$ Creature.withIslandwalk | AddHiddenKeyword$ May be blocked as though it doesn't have Islandwalk. | Description$ Creatures with islandwalk can be blocked as though they didn't have islandwalk.
S:Mode$ IgnoreLandWalk | ValidKeyword$ Landwalk:Island | Description$ Creatures with islandwalk can be blocked as though they didn't have islandwalk.
K:First Strike
Oracle:First strike\nCreatures with islandwalk can be blocked as though they didn't have islandwalk.

View File

@@ -2,7 +2,7 @@ Name:Graceful Antelope
ManaCost:2 W W
Types:Creature Antelope
PT:1/4
K:Plainswalk
K:Landwalk:Plains
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigAnimate | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may have target land become a Plains until CARDNAME leaves the battlefield.
SVar:TrigAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Duration$ UntilHostLeavesPlay | Types$ Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True
AI:RemoveDeck:All

View File

@@ -2,5 +2,5 @@ Name:Grayscaled Gharial
ManaCost:U
Types:Creature Crocodile
PT:1/1
K:Islandwalk
K:Landwalk:Island
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)

View File

@@ -1,7 +1,7 @@
Name:Great Wall
ManaCost:2 W
Types:Enchantment
S:Mode$ Continuous | Affected$ Creature.withPlainswalk | AddHiddenKeyword$ May be blocked as though it doesn't have Plainswalk. | Description$ Creatures with plainswalk can be blocked as though they didn't have plainswalk.
S:Mode$ IgnoreLandWalk | ValidKeyword$ Landwalk:Plains | Description$ Creatures with plainswalk can be blocked as though they didn't have plainswalk.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
Oracle:Creatures with plainswalk can be blocked as though they didn't have plainswalk.

View File

@@ -5,5 +5,5 @@ PT:0/3
K:Level up:2
SVar:maxLevel:5
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 0 | SetToughness$ 6 | IsPresent$ Card.Self+counters_GE1_LEVEL+counters_LE4_LEVEL | Description$ LEVEL 1-4 0/6
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 6 | SetToughness$ 6 | AddKeyword$ Islandwalk | IsPresent$ Card.Self+counters_GE5_LEVEL | Description$ LEVEL 5+ 6/6 Islandwalk
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 6 | SetToughness$ 6 | AddKeyword$ Landwalk:Island | IsPresent$ Card.Self+counters_GE5_LEVEL | Description$ LEVEL 5+ 6/6 Islandwalk
Oracle:Level up {2} ({2}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-4\n0/6\nLEVEL 5+\n6/6\nIslandwalk (This creature can't be blocked as long as defending player controls an Island.)

View File

@@ -2,7 +2,7 @@ Name:Harbor Serpent
ManaCost:4 U U
Types:Creature Serpent
PT:5/5
K:Islandwalk
K:Landwalk:Island
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ CARDNAME can't attack. | IsPresent$ Island | PresentCompare$ LT5 | Description$ CARDNAME can't attack unless there are five or more Islands on the battlefield.
SVar:BuffedBy:Island
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)\nHarbor Serpent can't attack unless there are five or more Islands on the battlefield.

View File

@@ -2,7 +2,7 @@ Name:Hazezon, Shaper of Sand
ManaCost:R G W
Types:Legendary Creature Human Warrior
PT:3/3
K:Desertwalk
K:Landwalk:Desert
S:Mode$ Continuous | Affected$ Desert.YouOwn | MayPlay$ True | AffectedZone$ Graveyard | Description$ You may play Desert lands from your graveyard
T:Mode$ ChangesZone | ValidCard$ Desert.YouCtrl | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever a Desert enters the battlefield under your control, create two 1/1 red, green, and white Sand Warrior creature tokens.
SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ rgw_1_1_sand_warrior | TokenOwner$ You

View File

@@ -2,5 +2,5 @@ Name:Heartwood Treefolk
ManaCost:2 G G
Types:Creature Treefolk
PT:3/4
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -1,7 +1,7 @@
Name:Hidden Path
ManaCost:2 G G G G
Types:Enchantment
S:Mode$ Continuous | Affected$ Creature.Green | AddKeyword$ Forestwalk | Description$ Green creatures have forestwalk. (They can't be blocked as long as defending player controls a Forest.)
S:Mode$ Continuous | Affected$ Creature.Green | AddKeyword$ Landwalk:Forest | Description$ Green creatures have forestwalk. (They can't be blocked as long as defending player controls a Forest.)
SVar:NonStackingEffect:True
SVar:NeedsToPlayVar:CountOpps LTCountMe
SVar:CountOpps:Count$Valid Creature.OppCtrl+Green

View File

@@ -2,5 +2,5 @@ Name:Hillcomber Giant
ManaCost:2 W W
Types:Creature Giant Scout
PT:3/3
K:Mountainwalk
K:Landwalk:Mountain
Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)

View File

@@ -5,5 +5,5 @@ PT:2/2
K:Cumulative upkeep:U
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCL | TriggerDescription$ At the beginning of your upkeep, choose a land type. CARDNAME gains landwalk of the chosen type until end of turn. (It can't be blocked as long as defending player controls a land of that type.)
SVar:TrigCL:DB$ ChooseType | Defined$ You | Type$ Land | AILogic$ ChosenLandwalk | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | KW$ ChosenTypewalk | Defined$ Self | DefinedKW$ ChosenType
SVar:DBPump:DB$ Pump | KW$ Landwalk:ChosenType | Defined$ Self | DefinedKW$ ChosenType
Oracle:Cumulative upkeep {U} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nAt the beginning of your upkeep, choose a land type. Illusionary Presence gains landwalk of the chosen type until end of turn. (It can't be blocked as long as defending player controls a land of that type.)

View File

@@ -2,7 +2,7 @@ Name:Inkfathom Divers
ManaCost:3 U U
Types:Creature Merfolk Soldier
PT:3/3
K:Islandwalk
K:Landwalk:Island
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigRearrange | TriggerDescription$ When CARDNAME enters the battlefield, look at the top four cards of your library, then put them back in any order.
SVar:TrigRearrange:DB$ RearrangeTopOfLibrary | Defined$ You | NumCards$ 4
Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)\nWhen Inkfathom Divers enters the battlefield, look at the top four cards of your library, then put them back in any order.

View File

@@ -2,7 +2,7 @@ Name:Inkwell Leviathan
ManaCost:7 U U
Types:Artifact Creature Leviathan
PT:7/11
K:Islandwalk
K:Landwalk:Island
K:Trample
K:Shroud
Oracle:Trample\nIslandwalk (This creature can't be blocked as long as defending player controls an Island.)\nShroud (This creature can't be the target of spells or abilities.)

View File

@@ -2,5 +2,5 @@ Name:Ivy Dancer
ManaCost:2 G
Types:Creature Dryad Shaman
PT:1/2
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Forestwalk | SpellDescription$ Target creature gains forestwalk until end of turn. (It can't be blocked as long as defending player controls a Forest.)
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Landwalk:Forest | SpellDescription$ Target creature gains forestwalk until end of turn. (It can't be blocked as long as defending player controls a Forest.)
Oracle:{T}: Target creature gains forestwalk until end of turn. (It can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,7 +2,7 @@ Name:Jedit Ojanen of Efrava
ManaCost:3 G G G
Types:Legendary Creature Cat Warrior
PT:5/5
K:Forestwalk
K:Landwalk:Forest
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks or blocks, create a 2/2 green Cat Warrior creature token with forestwalk.
T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigToken | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or blocks, create a 2/2 green Cat Warrior creature token with forestwalk.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ g_2_2_cat_warrior_forestwalk

View File

@@ -2,5 +2,5 @@ Name:Jukai Messenger
ManaCost:G
Types:Creature Human Monk
PT:1/1
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,5 +2,5 @@ Name:Koth's Courier
ManaCost:1 R R
Types:Creature Human Rogue
PT:2/3
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,6 +2,6 @@ Name:Krosan Constrictor
ManaCost:3 G
Types:Creature Snake
PT:2/2
K:Swampwalk
K:Landwalk:Swamp
A:AB$ Pump | Cost$ T | NumAtt$ -2 | IsCurse$ True | TgtPrompt$ Choose target Black creature | ValidTgts$ Creature.Black | SpellDescription$ Target black creature gets -2/-0 until end of turn.
Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\n{T}: Target black creature gets -2/-0 until end of turn.

View File

@@ -2,5 +2,5 @@ Name:Leaf Dancer
ManaCost:1 G G
Types:Creature Centaur
PT:2/2
K:Forestwalk
K:Landwalk:Forest
Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)

View File

@@ -2,5 +2,5 @@ Name:Legions of Lim-Dûl
ManaCost:1 B B
Types:Creature Zombie
PT:2/3
K:Snow swampwalk
K:Landwalk:Swamp.Snow:snow Swamp
Oracle:Snow swampwalk (This creature can't be blocked as long as defending player controls a snow Swamp.)

View File

@@ -3,5 +3,5 @@ ManaCost:B
Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ B | ValidTgts$ Creature | AILogic$ Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Swampwalk | Description$ Enchanted creature has swampwalk. (It can't be blocked as long as defending player controls a Swamp.)
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Landwalk:Swamp | Description$ Enchanted creature has swampwalk. (It can't be blocked as long as defending player controls a Swamp.)
Oracle:Enchant creature\nEnchanted creature has swampwalk. (It can't be blocked as long as defending player controls a Swamp.)

View File

@@ -3,5 +3,5 @@ ManaCost:2 R R G G
Types:Legendary Creature Human Warrior
PT:4/4
K:First Strike
K:Legendary landwalk
K:Landwalk:Land.Legendary:Legendary land
Oracle:First strike; legendary landwalk (This creature can't be blocked as long as defending player controls a legendary land.)

View File

@@ -2,7 +2,7 @@ Name:Lord Magnus
ManaCost:3 G W W
Types:Legendary Creature Human Druid
PT:4/3
S:Mode$ Continuous | Affected$ Creature.withPlainswalk | AddHiddenKeyword$ May be blocked as though it doesn't have Plainswalk. | Description$ Creatures with plainswalk can be blocked as though they didn't have plainswalk.
S:Mode$ Continuous | Affected$ Creature.withForestwalk | AddHiddenKeyword$ May be blocked as though it doesn't have Forestwalk. | Description$ Creatures with forestwalk can be blocked as though they didn't have forestwalk.
S:Mode$ IgnoreLandWalk | ValidKeyword$ Landwalk:Plains | Description$ Creatures with plainswalk can be blocked as though they didn't have plainswalk.
S:Mode$ IgnoreLandWalk | ValidKeyword$ Landwalk:Forest | Description$ Creatures with forestwalk can be blocked as though they didn't have forestwalk.
K:First Strike
Oracle:First strike\nCreatures with plainswalk can be blocked as though they didn't have plainswalk.\nCreatures with forestwalk can be blocked as though they didn't have forestwalk.

View File

@@ -2,7 +2,7 @@ Name:Lord of Atlantis
ManaCost:U U
Types:Creature Merfolk
PT:2/2
S:Mode$ Continuous | Affected$ Card.Merfolk+Other | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Islandwalk | Description$ Other Merfolk get +1/+1 and have islandwalk. (They can't be blocked as long as defending player controls an Island.)
S:Mode$ Continuous | Affected$ Card.Merfolk+Other | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Landwalk:Island | Description$ Other Merfolk get +1/+1 and have islandwalk. (They can't be blocked as long as defending player controls an Island.)
SVar:PlayMain1:TRUE
DeckHas:Keyword$Islandwalk
DeckHints:Type$Merfolk

Some files were not shown because too many files have changed in this diff Show More