From ac0087a2ef55c87cf17f9b8707f15fc4df7cc351 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sat, 29 Jul 2023 12:21:17 +0200 Subject: [PATCH] Card: add Table for SwitchPT --- .../main/java/forge/ai/ComputerUtilCard.java | 5 ++++ .../main/java/forge/ai/ability/PumpAi.java | 27 ++++++++++--------- .../java/forge/ai/simulation/GameCopier.java | 1 + .../game/ability/effects/PumpAllEffect.java | 7 ++++- .../game/ability/effects/PumpEffect.java | 8 ++++-- .../src/main/java/forge/game/card/Card.java | 27 ++++++++++++++++--- .../java/forge/game/card/CardCopyService.java | 1 + forge-gui/res/cardsfolder/a/about_face.txt | 3 +-- forge-gui/res/cardsfolder/a/aeromoeba.txt | 2 +- forge-gui/res/cardsfolder/a/aquamoeba.txt | 3 +-- .../res/cardsfolder/c/calcite_snapper.txt | 3 +-- forge-gui/res/cardsfolder/c/crag_puca.txt | 2 +- .../cardsfolder/c/crookclaw_transmuter.txt | 3 +-- .../cardsfolder/d/dwarven_thaumaturgist.txt | 2 +- forge-gui/res/cardsfolder/f/fluxcharger.txt | 3 +-- forge-gui/res/cardsfolder/i/inside_out.txt | 3 +-- forge-gui/res/cardsfolder/i/invert_invent.txt | 2 +- .../m/mannichi_the_fevered_dream.txt | 3 +-- .../cardsfolder/m/merfolk_thaumaturgist.txt | 3 +-- forge-gui/res/cardsfolder/m/myr_quadropod.txt | 2 +- .../res/cardsfolder/p/phantasmal_fiend.txt | 2 +- .../res/cardsfolder/s/strange_inversion.txt | 3 +-- forge-gui/res/cardsfolder/t/transmutation.txt | 3 +-- .../cardsfolder/t/turtleshell_changeling.txt | 3 +-- .../res/cardsfolder/v/valakut_fireboar.txt | 2 +- .../res/cardsfolder/w/wandering_fumarole.txt | 2 +- forge-gui/res/cardsfolder/w/windreaver.txt | 2 +- 27 files changed, 78 insertions(+), 49 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 2aec47810d3..e4988e181da 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -1735,6 +1735,11 @@ public class ComputerUtilCard { 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, null, false); } diff --git a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java index 4554c48e045..be8c766aee4 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java @@ -57,12 +57,6 @@ public class PumpAi extends PumpAiBase { 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); @@ -83,11 +77,6 @@ public class PumpAi extends PumpAiBase { 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); } @@ -104,6 +93,12 @@ public class PumpAi extends PumpAiBase { 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 @@ -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)) { return false; } @@ -356,7 +359,7 @@ public class PumpAi extends PumpAiBase { } // 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 keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : Lists.newArrayList(); final Game game = ai.getGame(); diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java index 57b67da5c4d..1fa825ab546 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -356,6 +356,7 @@ public class GameCopier { newCard.setPTCharacterDefiningTable(c.getSetPTCharacterDefiningTable()); newCard.setPTBoost(c.getPTBoostTable()); + newCard.setSwitchPTTable(c.getSwitchPTTable()); // TODO copy by map newCard.setDamage(c.getDamage()); newCard.setDamageReceivedThisTurn(c.getDamageReceivedThisTurn()); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java index 2d54ce2bd79..ff981eb0989 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java @@ -45,7 +45,11 @@ public class PumpAllEffect extends SpellAbilityEffect { continue; } - boolean redrawPT = false; + boolean redrawPT = sa.hasParam("SwitchPT"); + + if (sa.hasParam("SwitchPT")) { + tgtC.addSwitchPT(timestamp, 0); + } if (a != 0 || d != 0) { if (perpetual) { @@ -89,6 +93,7 @@ public class PumpAllEffect extends SpellAbilityEffect { @Override public void run() { + tgtC.removeSwitchPT(timestamp, 0); tgtC.removePTBoost(timestamp, 0); tgtC.removeChangedCardKeywords(timestamp, 0); tgtC.removeHiddenExtrinsicKeywords(timestamp, 0); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java index 5a3f5cb3012..260ce52f262 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java @@ -47,16 +47,19 @@ public class PumpEffect extends SpellAbilityEffect { final List kws = Lists.newArrayList(); final List 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) { if (perpetual) { Map params = new HashMap<>(); @@ -113,6 +116,7 @@ public class PumpEffect extends SpellAbilityEffect { host.removeGainControlTargets(gameCard); gameCard.removePTBoost(timestamp, 0); + gameCard.removeSwitchPT(timestamp, 0); boolean updateText = gameCard.removeCanBlockAny(timestamp); updateText |= gameCard.removeCanBlockAdditional(timestamp); diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 4565c7a9d82..d35076e3c40 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -265,6 +265,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr private Table> newPTCharacterDefining = TreeBasedTable.create(); // Layer 7a private Table> newPT = TreeBasedTable.create(); // Layer 7b private Table> boostPT = TreeBasedTable.create(); // Layer 7c + private Table switchPT = TreeBasedTable.create(); // Layer 7d private CardDamageHistory damageHistory = new CardDamageHistory(); private final Map assignedDamageMap = Maps.newTreeMap(); @@ -4641,13 +4642,13 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr } 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(); @@ -4705,7 +4706,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr } public final StatBreakdown getNetToughnessBreakdown() { - if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) { + if (isSwitchPT()) { return getUnswitchedPowerBreakdown(); } return getUnswitchedToughnessBreakdown(); @@ -4856,6 +4857,26 @@ public class Card extends GameEntity implements Comparable, 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 getSwitchPTTable() { + return ImmutableTable.copyOf(switchPT); + } + public void setSwitchPTTable(Table table) { + switchPT.clear(); + switchPT.putAll(table); + } + public final boolean isUntapped() { return !tapped; } diff --git a/forge-game/src/main/java/forge/game/card/CardCopyService.java b/forge-game/src/main/java/forge/game/card/CardCopyService.java index cc8f9ec2859..3cd38b8e1df 100644 --- a/forge-game/src/main/java/forge/game/card/CardCopyService.java +++ b/forge-game/src/main/java/forge/game/card/CardCopyService.java @@ -301,6 +301,7 @@ public class CardCopyService { // extra copy PT boost newCopy.setPTBoost(copyFrom.getPTBoostTable()); + newCopy.setSwitchPTTable(copyFrom.getSwitchPTTable()); newCopy.setCounters(Maps.newHashMap(copyFrom.getCounters())); diff --git a/forge-gui/res/cardsfolder/a/about_face.txt b/forge-gui/res/cardsfolder/a/about_face.txt index 8c4318ff43d..8e4a8064d48 100644 --- a/forge-gui/res/cardsfolder/a/about_face.txt +++ b/forge-gui/res/cardsfolder/a/about_face.txt @@ -1,6 +1,5 @@ Name:About Face ManaCost:R 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. -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. diff --git a/forge-gui/res/cardsfolder/a/aeromoeba.txt b/forge-gui/res/cardsfolder/a/aeromoeba.txt index 030f6708b09..173705dcd27 100644 --- a/forge-gui/res/cardsfolder/a/aeromoeba.txt +++ b/forge-gui/res/cardsfolder/a/aeromoeba.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/a/aquamoeba.txt b/forge-gui/res/cardsfolder/a/aquamoeba.txt index d0980e285e2..67dfdb2edde 100644 --- a/forge-gui/res/cardsfolder/a/aquamoeba.txt +++ b/forge-gui/res/cardsfolder/a/aquamoeba.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/c/calcite_snapper.txt b/forge-gui/res/cardsfolder/c/calcite_snapper.txt index e1806af4eb6..de96a8fab70 100644 --- a/forge-gui/res/cardsfolder/c/calcite_snapper.txt +++ b/forge-gui/res/cardsfolder/c/calcite_snapper.txt @@ -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 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 -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 you control enters, you may switch Calcite Snapper's power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/c/crag_puca.txt b/forge-gui/res/cardsfolder/c/crag_puca.txt index c0a42292c3c..53cb6c2b994 100644 --- a/forge-gui/res/cardsfolder/c/crag_puca.txt +++ b/forge-gui/res/cardsfolder/c/crag_puca.txt @@ -2,6 +2,6 @@ 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. +A:AB$ Pump | Cost$ UR | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. AI:RemoveDeck:All Oracle:{U/R}: Switch Crag Puca's power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/c/crookclaw_transmuter.txt b/forge-gui/res/cardsfolder/c/crookclaw_transmuter.txt index 1d58216a701..44c3c5a9195 100644 --- a/forge-gui/res/cardsfolder/c/crookclaw_transmuter.txt +++ b/forge-gui/res/cardsfolder/c/crookclaw_transmuter.txt @@ -5,6 +5,5 @@ PT:3/1 K:Flash 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. -SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness are switched -AI:RemoveDeck:All +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | SwitchPT$ True Oracle:Flash\nFlying\nWhen Crookclaw Transmuter enters, switch target creature's power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/d/dwarven_thaumaturgist.txt b/forge-gui/res/cardsfolder/d/dwarven_thaumaturgist.txt index c4063a1c442..644b84c512d 100644 --- a/forge-gui/res/cardsfolder/d/dwarven_thaumaturgist.txt +++ b/forge-gui/res/cardsfolder/d/dwarven_thaumaturgist.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/f/fluxcharger.txt b/forge-gui/res/cardsfolder/f/fluxcharger.txt index 731374caad8..5b8979f4c5c 100644 --- a/forge-gui/res/cardsfolder/f/fluxcharger.txt +++ b/forge-gui/res/cardsfolder/f/fluxcharger.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/i/inside_out.txt b/forge-gui/res/cardsfolder/i/inside_out.txt index 2c8cfd35847..b753439e120 100644 --- a/forge-gui/res/cardsfolder/i/inside_out.txt +++ b/forge-gui/res/cardsfolder/i/inside_out.txt @@ -1,7 +1,6 @@ Name:Inside Out ManaCost:1 UR 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. -AI:RemoveDeck:All Oracle:Switch target creature's power and toughness until end of turn.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/i/invert_invent.txt b/forge-gui/res/cardsfolder/i/invert_invent.txt index c313631469e..d7108411ec3 100644 --- a/forge-gui/res/cardsfolder/i/invert_invent.txt +++ b/forge-gui/res/cardsfolder/i/invert_invent.txt @@ -1,7 +1,7 @@ Name:Invert ManaCost:UR 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 Oracle:Switch the power and toughness of each of up to two target creatures until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mannichi_the_fevered_dream.txt b/forge-gui/res/cardsfolder/m/mannichi_the_fevered_dream.txt index b7c6850009b..800cdba8716 100644 --- a/forge-gui/res/cardsfolder/m/mannichi_the_fevered_dream.txt +++ b/forge-gui/res/cardsfolder/m/mannichi_the_fevered_dream.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/m/merfolk_thaumaturgist.txt b/forge-gui/res/cardsfolder/m/merfolk_thaumaturgist.txt index e50591f0223..5b0d0a5cf8d 100644 --- a/forge-gui/res/cardsfolder/m/merfolk_thaumaturgist.txt +++ b/forge-gui/res/cardsfolder/m/merfolk_thaumaturgist.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/m/myr_quadropod.txt b/forge-gui/res/cardsfolder/m/myr_quadropod.txt index 0863dbef1ec..95b43cef130 100644 --- a/forge-gui/res/cardsfolder/m/myr_quadropod.txt +++ b/forge-gui/res/cardsfolder/m/myr_quadropod.txt @@ -2,6 +2,6 @@ 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. +A:AB$ Pump | Cost$ 3 | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME's power and toughness until end of turn. AI:RemoveDeck:All Oracle:{3}: Switch Myr Quadropod's power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/p/phantasmal_fiend.txt b/forge-gui/res/cardsfolder/p/phantasmal_fiend.txt index 6df528e2b10..b890d885f25 100644 --- a/forge-gui/res/cardsfolder/p/phantasmal_fiend.txt +++ b/forge-gui/res/cardsfolder/p/phantasmal_fiend.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/s/strange_inversion.txt b/forge-gui/res/cardsfolder/s/strange_inversion.txt index b52414e8369..bf406d5dff1 100644 --- a/forge-gui/res/cardsfolder/s/strange_inversion.txt +++ b/forge-gui/res/cardsfolder/s/strange_inversion.txt @@ -2,7 +2,6 @@ Name:Strange Inversion ManaCost:2 R Types:Instant Arcane 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. -AI:RemoveDeck:All +A:SP$ Pump | ValidTgts$ Creature | SwitchPT$ True | SpellDescription$ Switch target creature's power and toughness until end of turn. 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.) diff --git a/forge-gui/res/cardsfolder/t/transmutation.txt b/forge-gui/res/cardsfolder/t/transmutation.txt index 40428442ecb..83096aa4729 100644 --- a/forge-gui/res/cardsfolder/t/transmutation.txt +++ b/forge-gui/res/cardsfolder/t/transmutation.txt @@ -1,6 +1,5 @@ Name:Transmutation ManaCost:1 B 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. -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. diff --git a/forge-gui/res/cardsfolder/t/turtleshell_changeling.txt b/forge-gui/res/cardsfolder/t/turtleshell_changeling.txt index 36e0838cc46..20828bc9fee 100644 --- a/forge-gui/res/cardsfolder/t/turtleshell_changeling.txt +++ b/forge-gui/res/cardsfolder/t/turtleshell_changeling.txt @@ -3,6 +3,5 @@ ManaCost:3 U Types:Creature Shapeshifter PT:1/4 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. -AI:RemoveDeck:All +A:AB$ Pump | Cost$ 1 U | Defined$ Self | SwitchPT$ True | SpellDescription$ Switch CARDNAME'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. diff --git a/forge-gui/res/cardsfolder/v/valakut_fireboar.txt b/forge-gui/res/cardsfolder/v/valakut_fireboar.txt index b8c2c4cf299..7df54b35f26 100644 --- a/forge-gui/res/cardsfolder/v/valakut_fireboar.txt +++ b/forge-gui/res/cardsfolder/v/valakut_fireboar.txt @@ -3,6 +3,6 @@ ManaCost:4 R Types:Creature Elemental Boar PT:1/7 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 Oracle:Whenever Valakut Fireboar attacks, switch its power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/w/wandering_fumarole.txt b/forge-gui/res/cardsfolder/w/wandering_fumarole.txt index 36221f29bbf..f72bf8f5256 100644 --- a/forge-gui/res/cardsfolder/w/wandering_fumarole.txt +++ b/forge-gui/res/cardsfolder/w/wandering_fumarole.txt @@ -5,5 +5,5 @@ R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplacementRe SVar:ETBTapped:DB$ Tap | Defined$ Self | ETB$ True 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. -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. diff --git a/forge-gui/res/cardsfolder/w/windreaver.txt b/forge-gui/res/cardsfolder/w/windreaver.txt index 9036daa1edd..02ee460580e 100644 --- a/forge-gui/res/cardsfolder/w/windreaver.txt +++ b/forge-gui/res/cardsfolder/w/windreaver.txt @@ -5,6 +5,6 @@ PT:1/3 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 | 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. 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.