Skip to content

Commit

Permalink
Card: add Table for SwitchPT
Browse files Browse the repository at this point in the history
  • Loading branch information
Hanmac committed Jul 29, 2023
1 parent b380e6a commit fcee03d
Show file tree
Hide file tree
Showing 29 changed files with 82 additions and 55 deletions.
5 changes: 5 additions & 0 deletions forge-ai/src/main/java/forge/ai/ComputerUtilCard.java
Original file line number Diff line number Diff line change
Expand Up @@ -1780,6 +1780,11 @@ public static Card getPumpedCreature(final Player ai, final SpellAbility sa,
pumped.setPTBoost(c.getPTBoostTable());
pumped.addPTBoost(power + berserkPower, toughness, timestamp, 0);

pumped.setSwitchPTTable(c.getSwitchPTTable());
if (sa.hasParam("SwitchPT")) {
pumped.addSwitchPT(timestamp, 0);
}

if (!kws.isEmpty()) {
pumped.addChangedCardKeywords(kws, null, false, timestamp, 0, false);
}
Expand Down
28 changes: 15 additions & 13 deletions forge-ai/src/main/java/forge/ai/ability/PumpAi.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,6 @@ protected boolean checkAiLogic(final Player ai, final SpellAbility sa, final Str
return SpecialAiLogic.doAristocratLogic(ai, sa);
} else if (aiLogic.startsWith("AristocratCounters")) {
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);
Expand All @@ -93,11 +87,6 @@ protected boolean checkPhaseRestrictions(final Player ai, final SpellAbility sa,
if (!ph.is(PhaseType.COMBAT_DECLARE_BLOCKERS) && !isThreatened) {
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);
}
Expand All @@ -114,6 +103,12 @@ protected boolean checkPhaseRestrictions(final Player ai, final SpellAbility sa,
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)
|| ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS))) {
// Instant-speed pumps should not be cast outside of combat when the
Expand All @@ -128,7 +123,6 @@ protected boolean checkApiLogic(Player ai, SpellAbility sa) {
final Game game = ai.getGame();
final Card source = sa.getHostCard();
final SpellAbility root = sa.getRootAbility();
final String sourceName = ComputerUtilAbility.getAbilitySourceName(sa);
final List<String> keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & "))
: Lists.newArrayList();
final String numDefense = sa.getParamOrDefault("NumDef", "");
Expand Down Expand Up @@ -267,6 +261,14 @@ public boolean apply(Card card) {
}
}

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)) {
return false;
}
Expand Down Expand Up @@ -391,7 +393,7 @@ public boolean apply(Card card) {
} // pumpPlayAI()

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(" & "))
: Lists.newArrayList();
final Game game = ai.getGame();
Expand Down
1 change: 1 addition & 0 deletions forge-ai/src/main/java/forge/ai/simulation/GameCopier.java
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ private void addCard(Game newGame, ZoneType zone, Card c) {
newCard.setPTCharacterDefiningTable(c.getSetPTCharacterDefiningTable());

newCard.setPTBoost(c.getPTBoostTable());
newCard.setSwitchPTTable(c.getSwitchPTTable());
// TODO copy by map
newCard.setDamage(c.getDamage());
newCard.setDamageReceivedThisTurn(c.getDamageReceivedThisTurn());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@ private static void applyPumpAll(final SpellAbility sa,
continue;
}

boolean redrawPT = false;
boolean redrawPT = sa.hasParam("SwitchPT");

if (sa.hasParam("SwitchPT")) {
tgtC.addSwitchPT(timestamp, 0);
}

if (a != 0 || d != 0) {
tgtC.addPTBoost(a, d, timestamp, 0);
Expand Down Expand Up @@ -78,6 +82,7 @@ private static void applyPumpAll(final SpellAbility sa,

@Override
public void run() {
tgtC.removeSwitchPT(timestamp, 0);
tgtC.removePTBoost(timestamp, 0);
tgtC.removeChangedCardKeywords(timestamp, 0);
tgtC.removeHiddenExtrinsicKeywords(timestamp, 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,19 @@ private static void applyPump(final SpellAbility sa, final Card applyTo,
final List<String> kws = Lists.newArrayList();
final List<String> hiddenKws = Lists.newArrayList();

boolean redrawPT = false;
boolean redrawPT = sa.hasParam("SwitchPT");
for (String kw : keywords) {
if (kw.startsWith("HIDDEN")) {
hiddenKws.add(kw.substring(7));
redrawPT |= kw.contains("CARDNAME's power and toughness are switched");
} else {
kws.add(kw);
}
}

if (sa.hasParam("SwitchPT")) {
gameCard.addSwitchPT(timestamp, 0);
}

if (a != 0 || d != 0) {
gameCard.addPTBoost(a, d, timestamp, 0);
redrawPT = true;
Expand Down Expand Up @@ -104,6 +107,7 @@ private static void applyPump(final SpellAbility sa, final Card applyTo,
@Override
public void run() {
gameCard.removePTBoost(timestamp, 0);
gameCard.removeSwitchPT(timestamp, 0);
boolean updateText = gameCard.removeCanBlockAny(timestamp);
updateText |= gameCard.removeCanBlockAdditional(timestamp);

Expand Down
29 changes: 25 additions & 4 deletions forge-game/src/main/java/forge/game/card/Card.java
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
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>> boostPT = TreeBasedTable.create(); // Layer 7c
private Table<Long, Long, Boolean> switchPT = TreeBasedTable.create(); // Layer 7d

private String oracleText = "";

Expand Down Expand Up @@ -4247,13 +4248,13 @@ public final int getPowerBonusFromCounters() {
}

public final StatBreakdown getNetPowerBreakdown() {
if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) {
if (isSwitchPT()) {
return getUnswitchedToughnessBreakdown();
}
return getUnswitchedPowerBreakdown();
}
public final int getNetPower() {
if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) {
if (isSwitchPT()) {
return getUnswitchedToughness();
}
return getUnswitchedPower();
Expand Down Expand Up @@ -4311,7 +4312,7 @@ public final int getToughnessBonusFromCounters() {
}

public final StatBreakdown getNetToughnessBreakdown() {
if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) {
if (isSwitchPT()) {
return getUnswitchedPowerBreakdown();
}
return getUnswitchedToughnessBreakdown();
Expand Down Expand Up @@ -4406,10 +4407,30 @@ public Table<Long, Long, Pair<Integer, Integer>> getPTBoostTable() {
}

public void setPTBoost(Table<Long, Long, Pair<Integer, Integer>> table) {
this.boostPT.clear();
boostPT.clear();
boostPT.putAll(table);
}

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() {
return !tapped;
}
Expand Down
1 change: 1 addition & 0 deletions forge-game/src/main/java/forge/game/card/CardUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ public static Card getLKICopy(final Card in, Map<Integer, Card> cachedMap) {

// extra copy PT boost
newCopy.setPTBoost(in.getPTBoostTable());
newCopy.setSwitchPTTable(in.getSwitchPTTable());

newCopy.setCounters(Maps.newHashMap(in.getCounters()));

Expand Down
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/a/about_face.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
Name:About Face
ManaCost:R
Types:Instant
A:SP$ Pump | Cost$ R | 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.
AI:RemoveDeck:All
A:SP$ Pump | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
Oracle:Switch target creature's power and toughness until end of turn.
2 changes: 1 addition & 1 deletion forge-gui/res/cardsfolder/a/aeromoeba.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ ManaCost:3 U
Types:Creature Elemental Beast
PT:2/4
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.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/a/aquamoeba.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ Name:Aquamoeba
ManaCost:1 U
Types:Creature Elemental Beast
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.
AI:RemoveDeck:All
A:AB$ Pump | Cost$ Discard<1/Card> | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
Oracle:Discard a card: Switch Aquamoeba's power and toughness until end of turn.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/c/calcite_snapper.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@ Types:Creature Turtle
PT:1/4
K:Shroud
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPump | TriggerDescription$ Landfall — Whenever a land enters the battlefield under your control, 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
AI:RemoveDeck:All
SVar:TrigPump:DB$ Pump | Defined$ Self | SwitchPT$ True
Oracle:Shroud (This creature can't be the target of spells or abilities.)\nLandfall — Whenever a land enters the battlefield under your control, you may switch Calcite Snapper's power and toughness until end of turn.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/c/crag_puca.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ Name:Crag Puca
ManaCost:UR UR UR
Types:Creature Shapeshifter
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.
AI:RemoveDeck:All
A:AB$ Pump | Cost$ UR | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
Oracle:{U/R}: Switch Crag Puca's power and toughness until end of turn.
2 changes: 1 addition & 1 deletion forge-gui/res/cardsfolder/c/crookclaw_transmuter.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ PT:3/1
K:Flash
K:Flying
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, 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 the battlefield, switch target creature's power and toughness until end of turn.
2 changes: 1 addition & 1 deletion forge-gui/res/cardsfolder/d/djinn_of_wishes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Types:Creature Djinn
PT:4/4
K:Flying
K:etbCounter:WISH:3
A:AB$ PeekAndReveal | Cost$ 2 U U SubCounter<1/WISH> | NoPeek$ True | ImprintRevealed$ True | SubAbility$ DBPlay | | SpellDescription$ Reveal the top card of your library.
A:AB$ PeekAndReveal | Cost$ 2 U U SubCounter<1/WISH> | NoPeek$ True | ImprintRevealed$ True | SubAbility$ DBPlay | SpellDescription$ Reveal the top card of your library.
SVar:DBPlay:DB$ Play | Defined$ Imprinted | Controller$ You | WithoutManaCost$ True | Optional$ True | RememberPlayed$ True | SubAbility$ DBExileIfNotPlayed | StackDescription$ {p:You} may play that card without paying its mana cost. | SpellDescription$ You may play that card without paying its mana cost.
SVar:DBExileIfNotPlayed:DB$ ChangeZone | Origin$ Library | Destination$ Exile | Defined$ Imprinted | DefinedPlayer$ You | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup | StackDescription$ If they don't, they exile it. | SpellDescription$ If you don't, exile it.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
Expand Down
2 changes: 1 addition & 1 deletion forge-gui/res/cardsfolder/d/dwarven_thaumaturgist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ Name:Dwarven Thaumaturgist
ManaCost:2 R
Types:Creature Dwarf Shaman
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.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/f/fluxcharger.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Types:Creature Weird
PT:1/5
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.
SVar:TrigChangePT:DB$ Pump | KW$ HIDDEN CARDNAME's power and toughness are switched | Defined$ Self
AI:RemoveDeck:All
SVar:TrigChangePT:DB$ Pump | Defined$ Self | SwitchPT$ True
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.
2 changes: 1 addition & 1 deletion forge-gui/res/cardsfolder/h/hatchet_bully.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ Name:Hatchet Bully
ManaCost:3 R
Types:Creature Goblin Warrior
PT:3/3
A:AB$ DealDamage | Cost$ 2 R T AddCounter<1/M1M1/Creature.YouCtrl/a creature you control> | | ValidTgts$ Any | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target.
A:AB$ DealDamage | Cost$ 2 R T AddCounter<1/M1M1/Creature.YouCtrl/a creature you control> | ValidTgts$ Any | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target.
Oracle:{2}{R}, {T}, Put a -1/-1 counter on a creature you control: Hatchet Bully deals 2 damage to any target.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/i/inside_out.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
Name:Inside Out
ManaCost:1 UR
Types:Instant
A:SP$ Pump | Cost$ 1 UR | 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 | SpellDescription$ Switch target creature's power and toughness until end of turn. | SubAbility$ DBDraw
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.
4 changes: 2 additions & 2 deletions forge-gui/res/cardsfolder/i/invert_invent.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Name:Invert
ManaCost:U/R
Types:Instant
A:SP$ Pump | Cost$ U/R | 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
Oracle:Switch the power and toughness of each of up to two target creatures until end of turn.

Expand All @@ -10,7 +10,7 @@ ALTERNATE
Name:Invent
ManaCost:4 U R
Types:Instant
A:SP$ ChangeZone | Cost$ 4 U R | Origin$ Library | Destination$ Hand | ChangeType$ Instant | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ Search your library for and instant permanent and/or a sorcery card, reveal them, put them into your hand, then shuffle.
A:SP$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Instant | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ Search your library for and instant permanent and/or a sorcery card, reveal them, put them into your hand, then shuffle.
SVar:DBChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Sorcery | ChangeNum$ 1 | Shuffle$ True
AI:RemoveDeck:Random
DeckHints:Type$Instant|Sorcery
Expand Down
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/m/mannichi_the_fevered_dream.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ Name:Mannichi, the Fevered Dream
ManaCost:2 R
Types:Legendary Creature Spirit
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.
AI:RemoveDeck:All
A:AB$ PumpAll | Cost$ 1 R | ValidCards$ Creature | SwitchPT$ True | SpellDescription$ 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.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/m/merfolk_thaumaturgist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ Name:Merfolk Thaumaturgist
ManaCost:2 U
Types:Creature Merfolk Wizard
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.
AI:RemoveDeck:All
A:AB$ Pump | Cost$ T | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn.
Oracle:{T}: Switch target creature's power and toughness until end of turn.
3 changes: 1 addition & 2 deletions forge-gui/res/cardsfolder/m/myr_quadropod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ Name:Myr Quadropod
ManaCost:4
Types:Artifact Creature Myr
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.
AI:RemoveDeck:All
A:AB$ Pump | Cost$ 3 | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn.
Oracle:{3}: Switch Myr Quadropod's power and toughness until end of turn.
2 changes: 1 addition & 1 deletion forge-gui/res/cardsfolder/p/phantasmal_fiend.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ ManaCost:3 B
Types:Creature Illusion
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$ 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.
Loading

0 comments on commit fcee03d

Please sign in to comment.