Card: add Table for SwitchPT

This commit is contained in:
Hans Mackowiak
2023-07-29 12:21:17 +02:00
parent 137d87c3df
commit ac0087a2ef
27 changed files with 78 additions and 49 deletions

View File

@@ -1735,6 +1735,11 @@ public class ComputerUtilCard {
pumped.setPTBoost(c.getPTBoostTable()); pumped.setPTBoost(c.getPTBoostTable());
pumped.addPTBoost(power + berserkPower, toughness, timestamp, 0); pumped.addPTBoost(power + berserkPower, toughness, timestamp, 0);
pumped.setSwitchPTTable(c.getSwitchPTTable());
if (sa.hasParam("SwitchPT")) {
pumped.addSwitchPT(timestamp, 0);
}
if (!kws.isEmpty()) { if (!kws.isEmpty()) {
pumped.addChangedCardKeywords(kws, null, false, timestamp, null, false); pumped.addChangedCardKeywords(kws, null, false, timestamp, null, false);
} }

View File

@@ -57,12 +57,6 @@ public class PumpAi extends PumpAiBase {
return SpecialAiLogic.doAristocratLogic(ai, sa); return SpecialAiLogic.doAristocratLogic(ai, sa);
} else if (aiLogic.startsWith("AristocratCounters")) { } else if (aiLogic.startsWith("AristocratCounters")) {
return SpecialAiLogic.doAristocratWithCountersLogic(ai, sa); return SpecialAiLogic.doAristocratWithCountersLogic(ai, sa);
} else if (aiLogic.equals("SwitchPT")) {
// Some more AI would be even better, but this is a good start to prevent spamming
if (sa.isActivatedAbility() && sa.getActivationsThisTurn() > 0 && !sa.usesTargeting()) {
// Will prevent flipping back and forth
return false;
}
} }
return super.checkAiLogic(ai, sa, aiLogic); return super.checkAiLogic(ai, sa, aiLogic);
@@ -83,11 +77,6 @@ public class PumpAi extends PumpAiBase {
if (!ph.is(PhaseType.COMBAT_DECLARE_BLOCKERS) && !isThreatened) { if (!ph.is(PhaseType.COMBAT_DECLARE_BLOCKERS) && !isThreatened) {
return false; return false;
} }
} else if (logic.equals("SwitchPT")) {
// Some more AI would be even better, but this is a good start to prevent spamming
if (ph.getPhase().isAfter(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE) || !ph.inCombat()) {
return false;
}
} }
return super.checkPhaseRestrictions(ai, sa, ph); return super.checkPhaseRestrictions(ai, sa, ph);
} }
@@ -104,6 +93,12 @@ public class PumpAi extends PumpAiBase {
return false; return false;
} }
} }
if (sa.hasParam("SwitchPT")) {
// Some more AI would be even better, but this is a good start to prevent spamming
if (ph.getPhase().isAfter(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE) || !ph.inCombat()) {
return false;
}
}
if (game.getStack().isEmpty() && (ph.getPhase().isBefore(PhaseType.COMBAT_BEGIN) if (game.getStack().isEmpty() && (ph.getPhase().isBefore(PhaseType.COMBAT_BEGIN)
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS))) { || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS))) {
// Instant-speed pumps should not be cast outside of combat when the // Instant-speed pumps should not be cast outside of combat when the
@@ -248,6 +243,14 @@ public class PumpAi extends PumpAiBase {
} }
} }
if (sa.hasParam("SwitchPT")) {
// Some more AI would be even better, but this is a good start to prevent spamming
if (sa.isActivatedAbility() && sa.getActivationsThisTurn() > 0 && !sa.usesTargeting()) {
// Will prevent flipping back and forth
return false;
}
}
if (ComputerUtil.preventRunAwayActivations(sa)) { if (ComputerUtil.preventRunAwayActivations(sa)) {
return false; return false;
} }
@@ -356,7 +359,7 @@ public class PumpAi extends PumpAiBase {
} // pumpPlayAI() } // pumpPlayAI()
private boolean pumpTgtAI(final Player ai, final SpellAbility sa, final int defense, final int attack, final boolean mandatory, private boolean pumpTgtAI(final Player ai, final SpellAbility sa, final int defense, final int attack, final boolean mandatory,
boolean immediately) { boolean immediately) {
final List<String> keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) final List<String> keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & "))
: Lists.newArrayList(); : Lists.newArrayList();
final Game game = ai.getGame(); final Game game = ai.getGame();

View File

@@ -356,6 +356,7 @@ public class GameCopier {
newCard.setPTCharacterDefiningTable(c.getSetPTCharacterDefiningTable()); newCard.setPTCharacterDefiningTable(c.getSetPTCharacterDefiningTable());
newCard.setPTBoost(c.getPTBoostTable()); newCard.setPTBoost(c.getPTBoostTable());
newCard.setSwitchPTTable(c.getSwitchPTTable());
// TODO copy by map // TODO copy by map
newCard.setDamage(c.getDamage()); newCard.setDamage(c.getDamage());
newCard.setDamageReceivedThisTurn(c.getDamageReceivedThisTurn()); newCard.setDamageReceivedThisTurn(c.getDamageReceivedThisTurn());

View File

@@ -45,7 +45,11 @@ public class PumpAllEffect extends SpellAbilityEffect {
continue; continue;
} }
boolean redrawPT = false; boolean redrawPT = sa.hasParam("SwitchPT");
if (sa.hasParam("SwitchPT")) {
tgtC.addSwitchPT(timestamp, 0);
}
if (a != 0 || d != 0) { if (a != 0 || d != 0) {
if (perpetual) { if (perpetual) {
@@ -89,6 +93,7 @@ public class PumpAllEffect extends SpellAbilityEffect {
@Override @Override
public void run() { public void run() {
tgtC.removeSwitchPT(timestamp, 0);
tgtC.removePTBoost(timestamp, 0); tgtC.removePTBoost(timestamp, 0);
tgtC.removeChangedCardKeywords(timestamp, 0); tgtC.removeChangedCardKeywords(timestamp, 0);
tgtC.removeHiddenExtrinsicKeywords(timestamp, 0); tgtC.removeHiddenExtrinsicKeywords(timestamp, 0);

View File

@@ -47,16 +47,19 @@ public class PumpEffect extends SpellAbilityEffect {
final List<String> kws = Lists.newArrayList(); final List<String> kws = Lists.newArrayList();
final List<String> hiddenKws = Lists.newArrayList(); final List<String> hiddenKws = Lists.newArrayList();
boolean redrawPT = false; boolean redrawPT = sa.hasParam("SwitchPT");
for (String kw : keywords) { for (String kw : keywords) {
if (kw.startsWith("HIDDEN")) { if (kw.startsWith("HIDDEN")) {
hiddenKws.add(kw.substring(7)); hiddenKws.add(kw.substring(7));
redrawPT |= kw.contains("CARDNAME's power and toughness are switched");
} else { } else {
kws.add(kw); kws.add(kw);
} }
} }
if (sa.hasParam("SwitchPT")) {
gameCard.addSwitchPT(timestamp, 0);
}
if (a != 0 || d != 0) { if (a != 0 || d != 0) {
if (perpetual) { if (perpetual) {
Map <String, Object> params = new HashMap<>(); Map <String, Object> params = new HashMap<>();
@@ -113,6 +116,7 @@ public class PumpEffect extends SpellAbilityEffect {
host.removeGainControlTargets(gameCard); host.removeGainControlTargets(gameCard);
gameCard.removePTBoost(timestamp, 0); gameCard.removePTBoost(timestamp, 0);
gameCard.removeSwitchPT(timestamp, 0);
boolean updateText = gameCard.removeCanBlockAny(timestamp); boolean updateText = gameCard.removeCanBlockAny(timestamp);
updateText |= gameCard.removeCanBlockAdditional(timestamp); updateText |= gameCard.removeCanBlockAdditional(timestamp);

View File

@@ -265,6 +265,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
private Table<Long, Long, Pair<Integer,Integer>> newPTCharacterDefining = TreeBasedTable.create(); // Layer 7a private Table<Long, Long, Pair<Integer,Integer>> newPTCharacterDefining = TreeBasedTable.create(); // Layer 7a
private Table<Long, Long, Pair<Integer,Integer>> newPT = TreeBasedTable.create(); // Layer 7b private Table<Long, Long, Pair<Integer,Integer>> newPT = TreeBasedTable.create(); // Layer 7b
private Table<Long, Long, Pair<Integer,Integer>> boostPT = TreeBasedTable.create(); // Layer 7c private Table<Long, Long, Pair<Integer,Integer>> boostPT = TreeBasedTable.create(); // Layer 7c
private Table<Long, Long, Boolean> switchPT = TreeBasedTable.create(); // Layer 7d
private CardDamageHistory damageHistory = new CardDamageHistory(); private CardDamageHistory damageHistory = new CardDamageHistory();
private final Map<Card, Integer> assignedDamageMap = Maps.newTreeMap(); private final Map<Card, Integer> assignedDamageMap = Maps.newTreeMap();
@@ -4641,13 +4642,13 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
} }
public final StatBreakdown getNetPowerBreakdown() { public final StatBreakdown getNetPowerBreakdown() {
if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) { if (isSwitchPT()) {
return getUnswitchedToughnessBreakdown(); return getUnswitchedToughnessBreakdown();
} }
return getUnswitchedPowerBreakdown(); return getUnswitchedPowerBreakdown();
} }
public final int getNetPower() { public final int getNetPower() {
if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) { if (isSwitchPT()) {
return getUnswitchedToughness(); return getUnswitchedToughness();
} }
return getUnswitchedPower(); return getUnswitchedPower();
@@ -4705,7 +4706,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
} }
public final StatBreakdown getNetToughnessBreakdown() { public final StatBreakdown getNetToughnessBreakdown() {
if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) { if (isSwitchPT()) {
return getUnswitchedPowerBreakdown(); return getUnswitchedPowerBreakdown();
} }
return getUnswitchedToughnessBreakdown(); return getUnswitchedToughnessBreakdown();
@@ -4856,6 +4857,26 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
} }
} }
public boolean isSwitchPT() {
return switchPT.values().size() % 2 != 0;
}
public void addSwitchPT(final long timestamp, final long staticId) {
switchPT.put(timestamp, staticId, Boolean.TRUE);
}
public void removeSwitchPT(final long timestamp, final long staticId) {
switchPT.remove(timestamp, staticId);
}
public Table<Long, Long, Boolean> getSwitchPTTable() {
return ImmutableTable.copyOf(switchPT);
}
public void setSwitchPTTable(Table<Long, Long, Boolean> table) {
switchPT.clear();
switchPT.putAll(table);
}
public final boolean isUntapped() { public final boolean isUntapped() {
return !tapped; return !tapped;
} }

View File

@@ -301,6 +301,7 @@ public class CardCopyService {
// extra copy PT boost // extra copy PT boost
newCopy.setPTBoost(copyFrom.getPTBoostTable()); newCopy.setPTBoost(copyFrom.getPTBoostTable());
newCopy.setSwitchPTTable(copyFrom.getSwitchPTTable());
newCopy.setCounters(Maps.newHashMap(copyFrom.getCounters())); newCopy.setCounters(Maps.newHashMap(copyFrom.getCounters()));

View File

@@ -1,6 +1,5 @@
Name:About Face Name:About Face
ManaCost:R ManaCost:R
Types:Instant Types:Instant
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch target creature's power and toughness until end of turn. A:SP$ Pump | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
AI:RemoveDeck:All
Oracle:Switch target creature's power and toughness until end of turn. Oracle:Switch target creature's power and toughness until end of turn.

View File

@@ -3,5 +3,5 @@ ManaCost:3 U
Types:Creature Elemental Beast Types:Creature Elemental Beast
PT:2/4 PT:2/4
K:Flying K:Flying
A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
Oracle:Flying\nDiscard a card: Switch Aeromoeba's power and toughness until end of turn. Oracle:Flying\nDiscard a card: Switch Aeromoeba's power and toughness until end of turn.

View File

@@ -2,6 +2,5 @@ Name:Aquamoeba
ManaCost:1 U ManaCost:1 U
Types:Creature Elemental Beast Types:Creature Elemental Beast
PT:1/3 PT:1/3
A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
AI:RemoveDeck:All
Oracle:Discard a card: Switch Aquamoeba's power and toughness until end of turn. Oracle:Discard a card: Switch Aquamoeba's power and toughness until end of turn.

View File

@@ -4,6 +4,5 @@ Types:Creature Turtle
PT:1/4 PT:1/4
K:Shroud K:Shroud
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPump | TriggerDescription$ Landfall — Whenever a land you control enters, you may switch CARDNAME power and toughness until end of turn. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPump | TriggerDescription$ Landfall — Whenever a land you control enters, you may switch CARDNAME power and toughness until end of turn.
SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME's power and toughness are switched SVar:TrigPump:DB$ Pump | Defined$ Self | SwitchPT$ True
AI:RemoveDeck:All
Oracle:Shroud (This creature can't be the target of spells or abilities.)\nLandfall — Whenever a land you control enters, you may switch Calcite Snapper's power and toughness until end of turn. Oracle:Shroud (This creature can't be the target of spells or abilities.)\nLandfall — Whenever a land you control enters, you may switch Calcite Snapper's power and toughness until end of turn.

View File

@@ -2,6 +2,6 @@ Name:Crag Puca
ManaCost:UR UR UR ManaCost:UR UR UR
Types:Creature Shapeshifter Types:Creature Shapeshifter
PT:2/4 PT:2/4
A:AB$ Pump | Cost$ UR | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ UR | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{U/R}: Switch Crag Puca's power and toughness until end of turn. Oracle:{U/R}: Switch Crag Puca's power and toughness until end of turn.

View File

@@ -5,6 +5,5 @@ PT:3/1
K:Flash K:Flash
K:Flying K:Flying
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters, switch target creature's power and toughness until end of turn. T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters, switch target creature's power and toughness until end of turn.
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | SwitchPT$ True
AI:RemoveDeck:All
Oracle:Flash\nFlying\nWhen Crookclaw Transmuter enters, switch target creature's power and toughness until end of turn. Oracle:Flash\nFlying\nWhen Crookclaw Transmuter enters, switch target creature's power and toughness until end of turn.

View File

@@ -2,6 +2,6 @@ Name:Dwarven Thaumaturgist
ManaCost:2 R ManaCost:2 R
Types:Creature Dwarf Shaman Types:Creature Dwarf Shaman
PT:1/2 PT:1/2
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | KW$ HIDDEN CARDNAME's power and toughness are switched | TgtPrompt$ Select target creature. | SpellDescription$ Switch target creature's power and toughness until end of turn. A:AB$ Pump | Cost$ T | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{T}: Switch target creature's power and toughness until end of turn. Oracle:{T}: Switch target creature's power and toughness until end of turn.

View File

@@ -4,7 +4,6 @@ Types:Creature Weird
PT:1/5 PT:1/5
K:Flying K:Flying
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChangePT | OptionalDecider$ You | TriggerDescription$ Whenever you cast a instant or sorcery spell, you may switch CARDNAME's power and toughness until end of turn. T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChangePT | OptionalDecider$ You | TriggerDescription$ Whenever you cast a instant or sorcery spell, you may switch CARDNAME's power and toughness until end of turn.
SVar:TrigChangePT:DB$ Pump | KW$ HIDDEN CARDNAME's power and toughness are switched | Defined$ Self SVar:TrigChangePT:DB$ Pump | Defined$ Self | SwitchPT$ True
AI:RemoveDeck:All
DeckHints:Type$Instant|Sorcery DeckHints:Type$Instant|Sorcery
Oracle:Flying\nWhenever you cast an instant or sorcery spell, you may switch Fluxcharger's power and toughness until end of turn. Oracle:Flying\nWhenever you cast an instant or sorcery spell, you may switch Fluxcharger's power and toughness until end of turn.

View File

@@ -1,7 +1,6 @@
Name:Inside Out Name:Inside Out
ManaCost:1 UR ManaCost:1 UR
Types:Instant Types:Instant
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch target creature's power and toughness until end of turn. | SubAbility$ DBDraw A:SP$ Pump | ValidTgts$ Creature | SwitchPT$ True | SubAbility$ DBDraw | SpellDescription$ Switch target creature's power and toughness until end of turn.
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card.
AI:RemoveDeck:All
Oracle:Switch target creature's power and toughness until end of turn.\nDraw a card. Oracle:Switch target creature's power and toughness until end of turn.\nDraw a card.

View File

@@ -1,7 +1,7 @@
Name:Invert Name:Invert
ManaCost:UR ManaCost:UR
Types:Instant Types:Instant
A:SP$ Pump | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch the power and toughness of each of up to two target creatures until end of turn. A:SP$ Pump | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | SwitchPT$ True | SpellDescription$ Switch the power and toughness of each of up to two target creatures until end of turn.
AlternateMode:Split AlternateMode:Split
Oracle:Switch the power and toughness of each of up to two target creatures until end of turn. Oracle:Switch the power and toughness of each of up to two target creatures until end of turn.

View File

@@ -2,6 +2,5 @@ Name:Mannichi, the Fevered Dream
ManaCost:2 R ManaCost:2 R
Types:Legendary Creature Spirit Types:Legendary Creature Spirit
PT:1/2 PT:1/2
A:AB$ PumpAll | Cost$ 1 R | ValidCards$ Creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch each creature's power and toughness until end of turn. A:AB$ PumpAll | Cost$ 1 R | ValidCards$ Creature | SwitchPT$ True | SpellDescription$ Switch each creature's power and toughness until end of turn.
AI:RemoveDeck:All
Oracle:{1}{R}: Switch each creature's power and toughness until end of turn. Oracle:{1}{R}: Switch each creature's power and toughness until end of turn.

View File

@@ -2,6 +2,5 @@ Name:Merfolk Thaumaturgist
ManaCost:2 U ManaCost:2 U
Types:Creature Merfolk Wizard Types:Creature Merfolk Wizard
PT:1/2 PT:1/2
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | KW$ HIDDEN CARDNAME's power and toughness are switched | TgtPrompt$ Select target creature. | SpellDescription$ Switch target creature's power and toughness until end of turn. A:AB$ Pump | Cost$ T | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
AI:RemoveDeck:All
Oracle:{T}: Switch target creature's power and toughness until end of turn. Oracle:{T}: Switch target creature's power and toughness until end of turn.

View File

@@ -2,6 +2,6 @@ Name:Myr Quadropod
ManaCost:4 ManaCost:4
Types:Artifact Creature Myr Types:Artifact Creature Myr
PT:1/4 PT:1/4
A:AB$ Pump | Cost$ 3 | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ 3 | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{3}: Switch Myr Quadropod's power and toughness until end of turn. Oracle:{3}: Switch Myr Quadropod's power and toughness until end of turn.

View File

@@ -3,5 +3,5 @@ ManaCost:3 B
Types:Creature Illusion Types:Creature Illusion
PT:1/5 PT:1/5
A:AB$ Pump | Cost$ B | Defined$ Self | NumAtt$ +1 | NumDef$ -1 | SpellDescription$ CARDNAME gets +1/-1 until end of turn. A:AB$ Pump | Cost$ B | Defined$ Self | NumAtt$ +1 | NumDef$ -1 | SpellDescription$ CARDNAME gets +1/-1 until end of turn.
A:AB$ Pump | Cost$ 1 U | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ 1 U | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
Oracle:{B}: Phantasmal Fiend gets +1/-1 until end of turn.\n{1}{U}: Switch Phantasmal Fiend's power and toughness until end of turn. Oracle:{B}: Phantasmal Fiend gets +1/-1 until end of turn.\n{1}{U}: Switch Phantasmal Fiend's power and toughness until end of turn.

View File

@@ -2,7 +2,6 @@ Name:Strange Inversion
ManaCost:2 R ManaCost:2 R
Types:Instant Arcane Types:Instant Arcane
K:Splice:Arcane:1 R K:Splice:Arcane:1 R
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch target creature's power and toughness until end of turn. A:SP$ Pump | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
AI:RemoveDeck:All
DeckHints:Type$Arcane DeckHints:Type$Arcane
Oracle:Switch target creature's power and toughness until end of turn.\nSplice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) Oracle:Switch target creature's power and toughness until end of turn.\nSplice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.)

View File

@@ -1,6 +1,5 @@
Name:Transmutation Name:Transmutation
ManaCost:1 B ManaCost:1 B
Types:Instant Types:Instant
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch target creature's power and toughness until end of turn. A:SP$ Pump | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
AI:RemoveDeck:All
Oracle:Switch target creature's power and toughness until end of turn. Oracle:Switch target creature's power and toughness until end of turn.

View File

@@ -3,6 +3,5 @@ ManaCost:3 U
Types:Creature Shapeshifter Types:Creature Shapeshifter
PT:1/4 PT:1/4
K:Changeling K:Changeling
A:AB$ Pump | Cost$ 1 U | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ 1 U | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
AI:RemoveDeck:All
Oracle:Changeling (This card is every creature type.)\n{1}{U}: Switch Turtleshell Changeling's power and toughness until end of turn. Oracle:Changeling (This card is every creature type.)\n{1}{U}: Switch Turtleshell Changeling's power and toughness until end of turn.

View File

@@ -3,6 +3,6 @@ ManaCost:4 R
Types:Creature Elemental Boar Types:Creature Elemental Boar
PT:1/7 PT:1/7
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, switch its power and toughness until end of turn. T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, switch its power and toughness until end of turn.
SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ HIDDEN CARDNAME's power and toughness are switched SVar:TrigPump:DB$ Pump | Defined$ Self | SwitchPT$ True
AI:RemoveDeck:Random AI:RemoveDeck:Random
Oracle:Whenever Valakut Fireboar attacks, switch its power and toughness until end of turn. Oracle:Whenever Valakut Fireboar attacks, switch its power and toughness until end of turn.

View File

@@ -5,5 +5,5 @@ R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplacementRe
SVar:ETBTapped:DB$ Tap | Defined$ Self | ETB$ True SVar:ETBTapped:DB$ Tap | Defined$ Self | ETB$ True
A:AB$ Mana | Cost$ T | Produced$ Combo U R | SpellDescription$ Add {U} or {R}. A:AB$ Mana | Cost$ T | Produced$ Combo U R | SpellDescription$ Add {U} or {R}.
A:AB$ Animate | Cost$ 2 U R | Defined$ Self | Power$ 1 | Toughness$ 4 | Types$ Creature,Elemental | Colors$ Blue,Red | OverwriteColors$ True | Abilities$ ABPump | SpellDescription$ Until end of turn, CARDNAME becomes a 1/4 blue and red Elemental creature with "{0}: Switch this creature's power and toughness until end of turn." It's still a land. A:AB$ Animate | Cost$ 2 U R | Defined$ Self | Power$ 1 | Toughness$ 4 | Types$ Creature,Elemental | Colors$ Blue,Red | OverwriteColors$ True | Abilities$ ABPump | SpellDescription$ Until end of turn, CARDNAME becomes a 1/4 blue and red Elemental creature with "{0}: Switch this creature's power and toughness until end of turn." It's still a land.
SVar:ABPump:AB$ Pump | Cost$ 0 | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch this creature's power and toughness until end of turn. SVar:ABPump:AB$ Pump | Cost$ 0 | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch this creature's power and toughness until end of turn.
Oracle:Wandering Fumarole enters tapped.\n{T}: Add {U} or {R}.\n{2}{U}{R}: Until end of turn, Wandering Fumarole becomes a 1/4 blue and red Elemental creature with "{0}: Switch this creature's power and toughness until end of turn." It's still a land. Oracle:Wandering Fumarole enters tapped.\n{T}: Add {U} or {R}.\n{2}{U}{R}: Until end of turn, Wandering Fumarole becomes a 1/4 blue and red Elemental creature with "{0}: Switch this creature's power and toughness until end of turn." It's still a land.

View File

@@ -5,6 +5,6 @@ PT:1/3
K:Flying K:Flying
A:AB$ Pump | Cost$ W | Defined$ Self | KW$ Vigilance | SpellDescription$ CARDNAME gains vigilance until end of turn. A:AB$ Pump | Cost$ W | Defined$ Self | KW$ Vigilance | SpellDescription$ CARDNAME gains vigilance until end of turn.
A:AB$ Pump | Cost$ W | Defined$ Self | NumDef$ +1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn. A:AB$ Pump | Cost$ W | Defined$ Self | NumDef$ +1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn.
A:AB$ Pump | Cost$ U | Defined$ Self | AILogic$ SwitchPT | KW$ HIDDEN CARDNAME's power and toughness are switched | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. A:AB$ Pump | Cost$ U | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
A:AB$ ChangeZone | Cost$ U | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand. A:AB$ ChangeZone | Cost$ U | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand.
Oracle:Flying\n{W}: Windreaver gains vigilance until end of turn.\n{W}: Windreaver gets +0/+1 until end of turn.\n{U}: Switch Windreaver's power and toughness until end of turn.\n{U}: Return Windreaver to its owner's hand. Oracle:Flying\n{W}: Windreaver gains vigilance until end of turn.\n{W}: Windreaver gets +0/+1 until end of turn.\n{U}: Switch Windreaver's power and toughness until end of turn.\n{U}: Return Windreaver to its owner's hand.