CantTarget: return the StaticAbility

This commit is contained in:
Hans Mackowiak
2025-09-07 10:03:53 +02:00
parent 4b0337a836
commit 71676a2781
33 changed files with 59 additions and 104 deletions

View File

@@ -7157,7 +7157,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
return false;
}
if (StaticAbilityCantTarget.cantTarget(this, sa)) {
if (StaticAbilityCantTarget.cantTarget(this, sa) != null) {
return false;
}

View File

@@ -4112,7 +4112,7 @@ public class CardFactoryUtil {
sbValid.append("| ").append(param).append(k[1]);
}
String effect = "Mode$ CantTarget | ValidCard$ Card.Self | Secondary$ True"
String effect = "Mode$ CantTarget | ValidTarget$ Card.Self | Secondary$ True"
+ sbValid.toString() + " | Activator$ Opponent | Description$ "
+ sbDesc.toString() + " (" + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
@@ -4153,7 +4153,7 @@ public class CardFactoryUtil {
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
// Target
effect = "Mode$ CantTarget | ValidCard$ Card.Self | Secondary$ True ";
effect = "Mode$ CantTarget | ValidTarget$ Card.Self | Secondary$ True ";
if (!valid.isEmpty()) {
effect += "| ValidSource$ " + valid;
}
@@ -4182,7 +4182,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 | ValidCard$ Card.Self | Secondary$ True"
String effect = "Mode$ CantTarget | ValidTarget$ Card.Self | Secondary$ True"
+ " | Description$ Shroud (" + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.equals("Skulk")) {

View File

@@ -1084,7 +1084,7 @@ public class Player extends GameEntity implements Comparable<Player> {
}
// CantTarget static abilities
if (StaticAbilityCantTarget.cantTarget(this, sa)) {
if (StaticAbilityCantTarget.cantTarget(this, sa) != null) {
return false;
}

View File

@@ -23,21 +23,21 @@ public class PlayerFactoryUtil {
sbValid.append("| ValidSource$ ").append(k[1]);
}
String effect = "Mode$ CantTarget | ValidPlayer$ Player.You | Secondary$ True "
String effect = "Mode$ CantTarget | ValidTarget$ 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 | ValidPlayer$ Player.You | Secondary$ True "
String effect = "Mode$ CantTarget | ValidTarget$ Player.You | Secondary$ True "
+ "| EffectZone$ Command | Description$ Shroud (" + inst.getReminderText() + ")";
final Card card = player.getKeywordCard();
inst.addStaticAbility(StaticAbility.create(effect, card, card.getCurrentState(), false));
} else if (keyword.startsWith("Protection")) {
String valid = CardFactoryUtil.getProtectionValid(keyword, false);
String effect = "Mode$ CantTarget | ValidPlayer$ Player.You | EffectZone$ Command | Secondary$ True ";
String effect = "Mode$ CantTarget | ValidTarget$ Player.You | EffectZone$ Command | Secondary$ True ";
if (!valid.isEmpty()) {
effect += "| ValidSource$ " + valid;
}

View File

@@ -39,36 +39,20 @@ public class StaticAbilityCantTarget {
static String MODE = "CantTarget";
public static boolean cantTarget(final Card card, final SpellAbility spellAbility) {
final Game game = card.getGame();
public static StaticAbility cantTarget(final GameEntity entity, final SpellAbility spellAbility) {
final Game game = entity.getGame();
for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) {
for (final StaticAbility stAb : ca.getStaticAbilities()) {
if (!stAb.checkConditions(StaticAbilityMode.CantTarget)) {
continue;
}
if (applyCantTargetAbility(stAb, card, spellAbility)) {
return true;
if (applyCantTargetAbility(stAb, entity, spellAbility)) {
return stAb;
}
}
}
return false;
}
public static boolean cantTarget(final Player player, final SpellAbility spellAbility) {
final Game game = player.getGame();
for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) {
for (final StaticAbility stAb : ca.getStaticAbilities()) {
if (!stAb.checkConditions(StaticAbilityMode.CantTarget)) {
continue;
}
if (applyCantTargetAbility(stAb, player, spellAbility)) {
return true;
}
}
}
return false;
return null;
}
/**
@@ -82,57 +66,25 @@ public class StaticAbilityCantTarget {
* the spell/ability
* @return true, if successful
*/
public static boolean applyCantTargetAbility(final StaticAbility stAb, final Card card, final SpellAbility spellAbility) {
if (stAb.hasParam("ValidPlayer")) {
return false;
}
public static boolean applyCantTargetAbility(final StaticAbility stAb, final GameEntity entity, final SpellAbility spellAbility) {
if (entity instanceof Card card) {
if (stAb.hasParam("AffectedZone")) {
if (ZoneType.listValueOf(stAb.getParam("AffectedZone")).stream().noneMatch(zt -> card.isInZone(zt))) {
return false;
}
} else if (!card.isInPlay()) { // default zone is battlefield
return false;
}
Set<ZoneType> zones = stAb.getActiveZone();
if (stAb.hasParam("AffectedZone")) {
boolean inZone = false;
for (final ZoneType zt : ZoneType.listValueOf(stAb.getParam("AffectedZone"))) {
if (card.isInZone(zt)) {
inZone = true;
break;
if (zones != null && zones.contains(ZoneType.Stack)) {
// Enthralling Hold: only works if it wasn't already cast
if (card.getGame().getStack().getSpellMatchingHost(spellAbility.getHostCard()) != null) {
return false;
}
}
if (!inZone) {
return false;
}
} else { // default zone is battlefield
if (!card.isInPlay()) {
return false;
}
}
Set<ZoneType> zones = stAb.getActiveZone();
if (zones != null && zones.contains(ZoneType.Stack)) {
// Enthralling Hold: only works if it wasn't already cast
if (card.getGame().getStack().getSpellMatchingHost(spellAbility.getHostCard()) != null) {
return false;
}
}
if (!stAb.matchesValidParam("ValidCard", card)) {
return false;
}
return common(stAb, card, spellAbility);
}
public static boolean applyCantTargetAbility(final StaticAbility stAb, final Player player, final SpellAbility spellAbility) {
if (stAb.hasParam("ValidCard") || stAb.hasParam("AffectedZone")) {
return false;
}
if (!stAb.matchesValidParam("ValidPlayer", player)) {
return false;
}
return common(stAb, player, spellAbility);
}
protected static boolean common(final StaticAbility stAb, GameEntity entity, final SpellAbility spellAbility) {
final Card source = spellAbility.getHostCard();
final Player activator = spellAbility.getActivatingPlayer();
@@ -140,6 +92,10 @@ public class StaticAbilityCantTarget {
return false;
}
if (!stAb.matchesValidParam("ValidTarget", entity)) {
return false;
}
if (!stAb.matchesValidParam("ValidSA", spellAbility)) {
return false;
}

View File

@@ -3,6 +3,6 @@ ManaCost:2 U
Types:Enchantment Aura
K:Enchant:Creature
SVar:AttachAILogic:Pump
S:Mode$ CantTarget | ValidCard$ Creature.EnchantedBy | ValidSA$ Spell | Description$ Enchanted creature can't be the target of spells.
S:Mode$ CantTarget | ValidTarget$ Creature.EnchantedBy | ValidSA$ Spell | Description$ Enchanted creature can't be the target of spells.
S:Mode$ CantAttach | ValidCard$ Aura.Other | Target$ Creature.EnchantedBy | Description$ Enchanted creature can't be enchanted by other Auras.
Oracle:Enchant creature\nEnchanted creature can't be the target of spells and can't be enchanted by other Auras.

View File

@@ -5,5 +5,5 @@ K:Enchant:Creature
SVar:AttachAILogic:Pump
S:Mode$ CantBlockBy | ValidAttacker$ Creature.EnchantedBy | ValidBlocker$ Creature.Artifact | Description$ Enchanted creature can't be blocked by artifact creatures.
R:Event$ DamageDone | Prevent$ True | ActiveZones$ Battlefield | ValidTarget$ Creature.EnchantedBy | ValidSource$ Artifact | Description$ Prevent all damage that would be dealt to enchanted creature by artifact sources.
S:Mode$ CantTarget | ValidCard$ Card.EnchantedBy | ValidSource$ Artifact | Description$ Enchanted creature can't be the target of abilities from artifact sources.
S:Mode$ CantTarget | ValidTarget$ Card.EnchantedBy | ValidSource$ Artifact | Description$ Enchanted creature can't be the target of abilities from artifact sources.
Oracle:Enchant creature\nEnchanted creature can't be blocked by artifact creatures.\nPrevent all damage that would be dealt to enchanted creature by artifact sources.\nEnchanted creature can't be the target of abilities from artifact sources.

View File

@@ -3,7 +3,7 @@ ManaCost:G
Types:Instant
A:SP$ Effect | ReplacementEffects$ AntiMagic | StaticAbilities$ STCantBeTarget | SpellDescription$ Spells you control can't be countered by blue or black spells this turn, and creatures you control can't be the targets of blue or black spells this turn.
SVar:AntiMagic:Event$ Counter | ValidSA$ Spell.YouCtrl | ValidCause$ Spell.Blue,Spell.Black | Layer$ CantHappen | Description$ Spells you control can't be countered by blue or black spells this turn.
SVar:STCantBeTarget:Mode$ CantTarget | ValidCard$ Creature.YouCtrl | ValidSource$ Card.Blue,Card.Black | ValidSA$ Spell | Description$ Creatures you control can't be the targets of blue or black spells this turn.
SVar:STCantBeTarget:Mode$ CantTarget | ValidTarget$ Creature.YouCtrl | ValidSource$ Card.Blue,Card.Black | ValidSA$ Spell | Description$ Creatures you control can't be the targets of blue or black spells this turn.
AI:RemoveDeck:All
AI:RemoveDeck:Random
Oracle:Spells you control can't be countered by blue or black spells this turn, and creatures you control can't be the targets of blue or black spells this turn.

View File

@@ -3,5 +3,5 @@ ManaCost:3 B R G
Types:Legendary Creature Giant Warrior
PT:6/5
K:Vigilance
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Aura | ValidSA$ Spell | Description$ CARDNAME can't be the target of Aura spells.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Aura | ValidSA$ Spell | Description$ CARDNAME can't be the target of Aura spells.
Oracle:Vigilance\nBartel Runeaxe can't be the target of Aura spells.

View File

@@ -4,5 +4,5 @@ Types:Enchantment Aura
K:Enchant:Creature
SVar:AttachAILogic:Pump
S:Mode$ CantBlockBy | ValidAttacker$ Creature.EnchantedBy | ValidBlocker$ Creature.withoutFlying+withoutReach | Description$ Enchanted creature can't be blocked except by creatures with flying or reach.
S:Mode$ CantTarget | ValidCard$ Card.EnchantedBy | Activator$ Opponent | Description$ Enchanted creature can't be the target of spells or abilities your opponents control.
S:Mode$ CantTarget | ValidTarget$ Card.EnchantedBy | Activator$ Opponent | Description$ Enchanted creature can't be the target of spells or abilities your opponents control.
Oracle:Enchant creature\nEnchanted creature can't be blocked except by creatures with flying or reach.\nEnchanted creature can't be the target of spells or abilities your opponents control.

View File

@@ -1,7 +1,7 @@
Name:Dense Foliage
ManaCost:2 G
Types:Enchantment
S:Mode$ CantTarget | ValidCard$ Creature | ValidSA$ Spell | Description$ Creatures can't be the target of spells.
S:Mode$ CantTarget | ValidTarget$ Creature | ValidSA$ Spell | Description$ Creatures can't be the target of spells.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
Oracle:Creatures can't be the targets of spells.

View File

@@ -4,6 +4,6 @@ Types:Instant
A:SP$ Charm | Choices$ DBDestroy,DBProtect
SVar:DBDestroy:DB$ Destroy | ValidTgts$ Permanent.nonCreature+Blue,Permanent.nonCreature+Black | TgtPrompt$ Select target blue or black noncreature permanent | SpellDescription$ Destroy target blue or black noncreature permanent.
SVar:DBProtect:DB$ Effect | StaticAbilities$ STCantBeTarget | SpellDescription$ Permanents you control can't be the targets of blue or black spells your opponents control this turn.
SVar:STCantBeTarget:Mode$ CantTarget | ValidCard$ Permanent.YouCtrl | ValidSource$ Card.Blue+OppCtrl,Card.Black+OppCtrl | ValidSA$ Spell | Description$ Permanents you control can't be the targets of blue or black spells your opponents control this turn.
SVar:STCantBeTarget:Mode$ CantTarget | ValidTarget$ Permanent.YouCtrl | ValidSource$ Card.Blue+OppCtrl,Card.Black+OppCtrl | ValidSA$ Spell | Description$ Permanents you control can't be the targets of blue or black spells your opponents control this turn.
AI:RemoveDeck:Random
Oracle:Choose one —\n• Destroy target blue or black noncreature permanent.\n• Permanents you control can't be the targets of blue or black spells your opponents control this turn.

View File

@@ -4,6 +4,6 @@ Types:Enchantment Aura
K:Enchant:Permanent
SVar:AttachAITgts:Permanent.tapped
SVar:AttachAILogic:GainControl
S:Mode$ CantTarget | EffectZone$ Stack | ValidSource$ Spell.Self | ValidCard$ Permanent.untapped | Description$ You can't choose an untapped permanent as this spell's target as you cast it.
S:Mode$ CantTarget | ValidTarget$ Permanent.untapped | EffectZone$ Stack | ValidSource$ Spell.Self | Description$ You can't choose an untapped permanent as this spell's target as you cast it.
S:Mode$ Continuous | Affected$ Card.EnchantedBy | GainControl$ You | Description$ You control enchanted permanent.
Oracle:Enchant permanent\nYou can't choose an untapped permanent as this spell's target as you cast it.\nYou control enchanted permanent.

View File

@@ -4,6 +4,6 @@ Types:Enchantment Aura
K:Enchant:Creature
SVar:AttachAITgts:Creature.tapped
SVar:AttachAILogic:GainControl
S:Mode$ CantTarget | EffectZone$ Stack | ValidSource$ Spell.Self | ValidCard$ Creature.untapped | Description$ You can't choose an untapped creature as this spell's target as you cast it.
S:Mode$ CantTarget | ValidTarget$ Creature.untapped | EffectZone$ Stack | ValidSource$ Spell.Self | Description$ You can't choose an untapped creature as this spell's target as you cast it.
S:Mode$ Continuous | Affected$ Card.EnchantedBy | GainControl$ You | Description$ You control enchanted creature.
Oracle:Enchant creature\nYou can't choose an untapped creature as this spell's target as you cast it.\nYou control enchanted creature.

View File

@@ -4,5 +4,5 @@ Types:Creature Human Knight
PT:2/2
K:First Strike
K:Lifelink
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.Black,Card.Red | ValidSA$ Spell | Activator$ Opponent | Description$ CARDNAME can't be the target of black or red spells your opponents control.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.Black,Card.Red | ValidSA$ Spell | Activator$ Opponent | Description$ CARDNAME can't be the target of black or red spells your opponents control.
Oracle:First strike (This creature deals combat damage before creatures without first strike.)\nLifelink (Damage dealt by this creature also causes you to gain that much life.)\nFiendslayer Paladin can't be the target of black or red spells your opponents control.

View File

@@ -4,5 +4,5 @@ Types:Creature Elemental
PT:8/5
R:Event$ Counter | ValidCard$ Card.Self | ValidSA$ Spell | Layer$ CantHappen | Description$ This spell can't be countered.
K:Haste
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.nonGreen | Description$ CARDNAME can't be the target of nongreen spells or abilities from nongreen sources.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.nonGreen | Description$ CARDNAME can't be the target of nongreen spells or abilities from nongreen sources.
Oracle:This spell can't be countered.\nHaste\nGaea's Revenge can't be the target of nongreen spells or abilities from nongreen sources.

View File

@@ -2,5 +2,5 @@ Name:Karplusan Strider
ManaCost:3 G
Types:Creature Yeti
PT:3/4
S:Mode$ CantTarget | ValidSA$ Spell | ValidCard$ Card.Self | ValidSource$ Card.Blue,Card.Black | Description$ CARDNAME can't be the target of blue or black spells.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSA$ Spell | ValidSource$ Card.Blue,Card.Black | Description$ CARDNAME can't be the target of blue or black spells.
Oracle:Karplusan Strider can't be the target of blue or black spells.

View File

@@ -2,5 +2,5 @@ Name:Lurker
ManaCost:2 G
Types:Creature Beast
PT:2/3
S:Mode$ CantTarget | ValidCard$ Card.Self+!attackedThisTurn+!blockedThisTurn | ValidSA$ Spell | Description$ CARDNAME can't be the target of spells unless it attacked or blocked this turn.
S:Mode$ CantTarget | ValidTarget$ Card.Self+!attackedThisTurn+!blockedThisTurn | ValidSA$ Spell | Description$ CARDNAME can't be the target of spells unless it attacked or blocked this turn.
Oracle:Lurker can't be the target of spells unless it attacked or blocked this turn.

View File

@@ -2,6 +2,6 @@ Name:Mercenary Informer
ManaCost:2 W
Types:Creature Human Rebel Mercenary
PT:2/1
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.Black | Description$ CARDNAME can't be the target of black spells or abilities from black sources.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.Black | Description$ CARDNAME can't be the target of black spells or abilities from black sources.
A:AB$ ChangeZone | Cost$ 2 W | ValidTgts$ Mercenary | IsCurse$ True | TgtPrompt$ Select target Mercenary | Origin$ Battlefield | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ Put target Mercenary on the bottom of its owner's library.
Oracle:Mercenary Informer can't be the target of black spells or abilities from black sources.\n{2}{W}: Put target nontoken Mercenary on the bottom of its owner's library.

View File

@@ -3,6 +3,5 @@ ManaCost:1 W
Types:Sorcery
A:SP$ Effect | AILogic$ PeaceTalks | Stackable$ False | StaticAbilities$ STCantAttack,STCantTarget,STCantTargetPlayer | Duration$ ThisTurnAndNextTurn | SpellDescription$ This turn and next turn, creatures can't attack, and players and permanents can't be the targets of spells or activated abilities.
SVar:STCantAttack:Mode$ CantAttack | ValidCard$ Creature | Description$ Creatures can't attack.
SVar:STCantTarget:Mode$ CantTarget | ValidCard$ Permanent | ValidSA$ Spell,Activated | Description$ Permanents can't be the targets of spells or activated abilities.
SVar:STCantTargetPlayer:Mode$ CantTarget | ValidPlayer$ Player | ValidSA$ Spell,Activated | Description$ Players can't be the targets of spells or activated abilities.
SVar:STCantTarget:Mode$ CantTarget | ValidTarget$ Card.Permanent,Player | ValidSA$ Spell,Activated | Description$ Players and Permanents can't be the targets of spells or activated abilities.
Oracle:This turn and next turn, creatures can't attack, and players and permanents can't be the targets of spells or activated abilities.

View File

@@ -1,7 +1,7 @@
Name:Raiding Party
ManaCost:2 R
Types:Enchantment
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.White | Description$ CARDNAME can't be the target of white spells or abilities from white sources.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.White | Description$ CARDNAME can't be the target of white spells or abilities from white sources.
A:AB$ RepeatEach | Cost$ Sac<1/Orc/Orc> | CostDesc$ Sacrifice an Orc: | RepeatPlayers$ Player | RepeatSubAbility$ DBTap | SubAbility$ DBDestroy | SpellDescription$ Each player may tap any number of untapped white creatures they control. For each creature tapped this way, that player chooses up to two Plains. Then destroy all Plains that weren't chosen this way by any player.
SVar:DBTap:DB$ Tap | CardChoices$ Creature.untapped+White+RememberedPlayerCtrl | Tapper$ RememberedPlayer | AnyNumber$ True | ChoiceAmount$ Count$Valid Creature.untapped+White+RememberedPlayerCtrl | RememberTapped$ True | SubAbility$ ChoosePlainsToSave
SVar:ChoosePlainsToSave:DB$ ChooseCard | Defined$ Remembered | MinAmount$ 0 | Amount$ TappedXTwo | Choices$ Plains | ChoiceTitle$ Choose up to two Plains for each creature tapped | ChoiceZone$ Battlefield | ImprintChosen$ True | AILogic$ OwnCard | SubAbility$ DBCleanup

View File

@@ -2,6 +2,6 @@ Name:Rebel Informer
ManaCost:2 B
Types:Creature Human Mercenary Rebel
PT:1/2
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.White | Description$ CARDNAME can't be the target of white spells or abilities from white sources.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.White | Description$ CARDNAME can't be the target of white spells or abilities from white sources.
A:AB$ ChangeZone | Cost$ 3 | ValidTgts$ Rebel.!token | IsCurse$ True | TgtPrompt$ Select target Rebel | Origin$ Battlefield | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ Put target nontoken Rebel on the bottom of its owner's library.
Oracle:Rebel Informer can't be the target of white spells or abilities from white sources.\n{3}: Put target nontoken Rebel on the bottom of its owner's library.

View File

@@ -2,7 +2,7 @@ Name:Shanna, Sisay's Legacy
ManaCost:G W
Types:Legendary Creature Human Warrior
PT:0/0
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSA$ Activated,Triggered | Activator$ Player.Opponent | Description$ CARDNAME can't be the target of abilities your opponents control.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSA$ Activated,Triggered | Activator$ Player.Opponent | Description$ CARDNAME can't be the target of abilities your opponents control.
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | Description$ NICKNAME gets +1/+1 for each creature you control.
SVar:X:Count$Valid Creature.YouCtrl
SVar:BuffedBy:Creature

View File

@@ -3,7 +3,7 @@ ManaCost:2 GU
Types:Enchantment Aura
K:Enchant:Creature
SVar:AttachAILogic:Pump
S:Mode$ CantTarget | ValidCard$ Card.EnchantedBy | Activator$ Opponent | Description$ Enchanted creature can't be the target of spells or abilities your opponents control.
S:Mode$ CantTarget | ValidTarget$ Card.EnchantedBy | Activator$ Opponent | Description$ Enchanted creature can't be the target of spells or abilities your opponents control.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters, draw a card.
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1
Oracle:({G/U} can be paid with either {G} or {U}.)\nEnchant creature\nWhen Shielding Plax enters, draw a card.\nEnchanted creature can't be the target of spells or abilities your opponents control.

View File

@@ -4,5 +4,5 @@ Types:Enchantment Aura
K:Enchant:Creature
SVar:AttachAILogic:Pump
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddToughness$ 2 | Description$ Enchanted creature gets +0/+2 and can't be the target of spells.
S:Mode$ CantTarget | ValidCard$ Creature.EnchantedBy | ValidSA$ Spell | Secondary$ True | Description$ Enchanted creature gets +0/+2 and can't be the target of spells.
S:Mode$ CantTarget | ValidTarget$ Creature.EnchantedBy | ValidSA$ Spell | Secondary$ True | Description$ Enchanted creature gets +0/+2 and can't be the target of spells.
Oracle:Enchant creature\nEnchanted creature gets +0/+2 and can't be the target of spells.

View File

@@ -2,5 +2,5 @@ Name:Spellbane Centaur
ManaCost:2 G
Types:Creature Centaur
PT:3/2
S:Mode$ CantTarget | ValidCard$ Creature.YouCtrl | ValidSource$ Card.Blue | Description$ Creatures you control can't be the targets of blue spells or abilities from blue sources.
S:Mode$ CantTarget | ValidTarget$ Creature.YouCtrl | ValidSource$ Card.Blue | Description$ Creatures you control can't be the targets of blue spells or abilities from blue sources.
Oracle:Creatures you control can't be the targets of blue spells or abilities from blue sources.

View File

@@ -2,6 +2,6 @@ Name:Suq'Ata Firewalker
ManaCost:1 U U
Types:Creature Human Wizard
PT:0/1
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.Red | Description$ CARDNAME can't be the target of red spells or abilities from red sources.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.Red | Description$ CARDNAME can't be the target of red spells or abilities from red sources.
A:AB$ DealDamage | Cost$ T | ValidTgts$ Any | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target.
Oracle:Suq'Ata Firewalker can't be the target of red spells or abilities from red sources.\n{T}: Suq'Ata Firewalker deals 1 damage to any target.

View File

@@ -2,6 +2,6 @@ Name:Tetsuo Umezawa
ManaCost:U B R
Types:Legendary Creature Human Archer
PT:3/3
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Aura | ValidSA$ Spell | Description$ CARDNAME can't be the target of Aura spells.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Aura | ValidSA$ Spell | Description$ CARDNAME can't be the target of Aura spells.
A:AB$ Destroy | Cost$ U B B R T | ValidTgts$ Creature.tapped,Creature.blocking | TgtPrompt$ Select target tapped or blocking creature | SpellDescription$ Destroy target tapped or blocking creature.
Oracle:Tetsuo Umezawa can't be the target of Aura spells.\n{U}{B}{B}{R}, {T}: Destroy target tapped or blocking creature.

View File

@@ -4,6 +4,6 @@ Types:Legendary Creature Troll Shaman
PT:5/5
R:Event$ Counter | ValidCard$ Card.Self | ValidSA$ Spell | Layer$ CantHappen | Description$ This spell can't be countered.
K:Trample
S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.nonGreen+OppCtrl | Description$ CARDNAME can't be the target of nongreen spells your opponents control or abilities from nongreen sources your opponents control.
S:Mode$ CantTarget | ValidTarget$ Card.Self | ValidSource$ Card.nonGreen+OppCtrl | Description$ CARDNAME can't be the target of nongreen spells your opponents control or abilities from nongreen sources your opponents control.
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Indestructible | Condition$ PlayerTurn | Description$ During your turn, NICKNAME has indestructible.
Oracle:This spell can't be countered.\nTrample\nThrun, Breaker of Silence can't be the target of nongreen spells your opponents control or abilities from nongreen sources your opponents control.\nDuring your turn, Thrun has indestructible.

View File

@@ -3,6 +3,6 @@ ManaCost:W W
Types:Legendary Creature Human Advisor
PT:2/3
K:Flying
S:Mode$ CantTarget | AffectedZone$ Battlefield,Graveyard | ValidCard$ Land | Activator$ Opponent | Description$ Lands on the battlefield and land cards in graveyards can't be the targets of spells or abilities your opponents control.
S:Mode$ CantTarget | ValidTarget$ Land | AffectedZone$ Battlefield,Graveyard | Activator$ Opponent | Description$ Lands on the battlefield and land cards in graveyards can't be the targets of spells or abilities your opponents control.
S:Mode$ CantPlayLand | ValidCard$ Land | Player$ Opponent | Origin$ Graveyard | Description$ Your opponents can't play land cards from graveyards.
Oracle:Flying\nLands on the battlefield and land cards in graveyards can't be the targets of spells or abilities your opponents control.\nYour opponents can't play land cards from graveyards.

View File

@@ -3,7 +3,7 @@ ManaCost:3
Types:Artifact
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ Whenever you cast a spell, creatures you control can't be the targets of spells or abilities your opponents control this turn.
SVar:TrigEffect:DB$ Effect | StaticAbilities$ CantTarget
SVar:CantTarget:Mode$ CantTarget | ValidCard$ Creature.YouCtrl | Activator$ Opponent | Description$ Creatures you control can't be the targets of spells or abilities your opponents control.
SVar:CantTarget:Mode$ CantTarget | ValidTarget$ Creature.YouCtrl | Activator$ Opponent | Description$ Creatures you control can't be the targets of spells or abilities your opponents control.
SVar:BuffedBy:Card
AI:RemoveDeck:Random
Oracle:Whenever you cast a spell, creatures you control can't be the targets of spells or abilities your opponents control this turn.

View File

@@ -4,6 +4,6 @@ Types:Instant
K:Kicker:G
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +X | SubAbility$ DBEffect | SpellDescription$ Target creature can't be the target of spells or abilities your opponents control this turn. If this spell was kicked, that creature gets +4/+4 until end of turn.
SVar:DBEffect:DB$ Effect | Defined$ Targeted | AILogic$ Always | StaticAbilities$ STCantTarget | RememberObjects$ Targeted | ExileOnMoved$ Battlefield
SVar:STCantTarget:Mode$ CantTarget | ValidCard$ Card.IsRemembered | Activator$ Player.Opponent | Description$ Target creature can't be the target of spells or abilities your opponents control this turn.
SVar:STCantTarget:Mode$ CantTarget | ValidTarget$ Card.IsRemembered | Activator$ Player.Opponent | Description$ Target creature can't be the target of spells or abilities your opponents control this turn.
SVar:X:Count$Kicked.4.0
Oracle:Kicker {G} (You may pay an additional {G} as you cast this spell.)\nTarget creature can't be the target of spells or abilities your opponents control this turn. If this spell was kicked, that creature gets +4/+4 until end of turn.

View File

@@ -4,6 +4,6 @@ Types:Creature Wall
PT:0/1
K:Defender
R:Event$ DamageDone | Prevent$ True | ValidSource$ Creature.blockedBySource | ValidTarget$ Creature.Self | Description$ Prevent all damage that would be dealt to CARDNAME by creatures it's blocking.
S:Mode$ CantTarget | ValidCard$ Card.Self | SourceCanOnlyTarget$ Wall | Description$ CARDNAME can't be the target of spells that can target only Walls or of abilities that can target only Walls.
S:Mode$ CantTarget | ValidTarget$ Card.Self | SourceCanOnlyTarget$ Wall | Description$ CARDNAME can't be the target of spells that can target only Walls or of abilities that can target only Walls.
AI:RemoveDeck:All
Oracle:Defender (This creature can't attack.)\nPrevent all damage that would be dealt to Wall of Shadows by creatures it's blocking.\nWall of Shadows can't be the target of spells that can target only Walls or of abilities that can target only Walls.