From 8f1100dff3d496772b03fa32037cd9c1876f1b29 Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Fri, 9 Jun 2023 11:56:46 +0200 Subject: [PATCH] Amass type (#3222) * AmassEffect: add Type parameter * fix AmassAi * update editions tokenscripts * Update AmassEffect.java early return if no Army could be created --- .../main/java/forge/ai/ability/AmassAi.java | 7 ++++- .../game/ability/effects/AmassEffect.java | 27 ++++++++++++++++--- .../game/ability/effects/TokenEffectBase.java | 7 +++-- .../a/angrath_captain_of_chaos.txt | 4 +-- forge-gui/res/cardsfolder/a/aven_eternal.txt | 6 ++--- forge-gui/res/cardsfolder/b/bleeding_edge.txt | 6 ++--- .../res/cardsfolder/c/callous_dismissal.txt | 6 ++--- .../cardsfolder/c/commence_the_endgame.txt | 6 ++--- forge-gui/res/cardsfolder/c/crush_dissent.txt | 6 ++--- .../res/cardsfolder/d/dreadhorde_invasion.txt | 6 ++--- .../res/cardsfolder/d/dreadhorde_twins.txt | 6 ++--- .../cardsfolder/e/enter_the_god_eternals.txt | 6 ++--- .../res/cardsfolder/e/eternal_skylord.txt | 6 ++--- .../res/cardsfolder/g/gleaming_overseer.txt | 6 ++--- forge-gui/res/cardsfolder/g/grim_initiate.txt | 6 ++--- .../h/herald_of_the_dreadhorde.txt | 6 ++--- .../cardsfolder/h/honor_the_god_pharaoh.txt | 6 ++--- .../res/cardsfolder/i/invade_the_city.txt | 4 +-- .../res/cardsfolder/i/invading_manticore.txt | 6 ++--- .../res/cardsfolder/l/lazotep_chancellor.txt | 6 ++--- .../res/cardsfolder/l/lazotep_plating.txt | 4 +-- .../res/cardsfolder/l/lazotep_reaver.txt | 6 ++--- .../res/cardsfolder/r/relentless_advance.txt | 4 +-- .../cardsfolder/t/toll_of_the_invasion.txt | 4 +-- .../cardsfolder/v/vizier_of_the_scorpion.txt | 6 ++--- .../cardsfolder/w/widespread_brutality.txt | 4 +-- .../Innistrad Midnight Hunt Commander.txt | 2 +- forge-gui/res/editions/Modern Horizons 2.txt | 2 +- .../res/editions/Starter Commander Decks.txt | 2 +- forge-gui/res/editions/War of the Spark.txt | 6 ++--- forge-gui/res/lists/token-images.txt | 12 ++++----- forge-gui/res/puzzle/PS_M204.pzl | 2 +- forge-gui/res/puzzle/PS_WAR0.pzl | 2 +- forge-gui/res/puzzle/PS_WAR1.pzl | 2 +- forge-gui/res/tokenscripts/b_0_0_army.txt | 6 +++++ .../res/tokenscripts/b_0_0_zombie_army.txt | 6 ----- 36 files changed, 118 insertions(+), 91 deletions(-) create mode 100644 forge-gui/res/tokenscripts/b_0_0_army.txt delete mode 100644 forge-gui/res/tokenscripts/b_0_0_zombie_army.txt diff --git a/forge-ai/src/main/java/forge/ai/ability/AmassAi.java b/forge-ai/src/main/java/forge/ai/ability/AmassAi.java index 2f0e909fe34..94340df7b36 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AmassAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AmassAi.java @@ -3,6 +3,7 @@ package forge.ai.ability; import java.util.Map; import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.collect.Sets; import forge.ai.ComputerUtilCard; @@ -31,8 +32,9 @@ public class AmassAi extends SpellAbilityAi { if (!aiArmies.isEmpty()) { return Iterables.any(aiArmies, CardPredicates.canReceiveCounters(CounterEnumType.P1P1)); } - final String tokenScript = "b_0_0_zombie_army"; + final String tokenScript = "b_0_0_army"; final int amount = AbilityUtils.calculateAmount(host, sa.getParamOrDefault("Num", "1"), sa); + final String type = sa.getParam("Type"); Card token = TokenInfo.getProtoType(tokenScript, sa, ai, false); @@ -42,6 +44,9 @@ public class AmassAi extends SpellAbilityAi { token.setController(ai, 0); token.setLastKnownZone(ai.getZone(ZoneType.Battlefield)); + token.setCreatureTypes(Lists.newArrayList(type, "Army")); + token.setName(type + " Army Token"); + token.setTokenSpawningAbility(sa); boolean result = true; diff --git a/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java index 46f4ba65f2f..82421e342af 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AmassEffect.java @@ -5,8 +5,10 @@ import java.util.Map; import org.apache.commons.lang3.mutable.MutableBoolean; import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import forge.card.CardType; import forge.game.Game; import forge.game.GameEntityCounterTable; import forge.game.ability.AbilityUtils; @@ -17,6 +19,7 @@ import forge.game.card.CardPredicates; import forge.game.card.CardZoneTable; import forge.game.card.CounterEnumType; import forge.game.card.CounterType; +import forge.game.card.token.TokenInfo; import forge.game.event.GameEventCombatChanged; import forge.game.event.GameEventTokenCreated; import forge.game.player.Player; @@ -33,12 +36,14 @@ public class AmassEffect extends TokenEffectBase { final StringBuilder sb = new StringBuilder("Amass "); final Card card = sa.getHostCard(); final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("Num", "1"), sa); + final String type = sa.getParam("Type"); - sb.append(amount).append(" (Put "); + sb.append(CardType.getPluralType(type)).append(" ").append(amount).append(" (Put "); sb.append(Lang.nounWithNumeral(amount, "+1/+1 counter")); - sb.append("on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)"); + // TODO fix reminder after CR + sb.append("on an Army you control. If you don't control one, create a 0/0 black " + type + " Army creature token first.)"); return sb.toString(); } @@ -52,13 +57,20 @@ public class AmassEffect extends TokenEffectBase { final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("Num", "1"), sa); final boolean remember = sa.hasParam("RememberAmass"); + final String type = sa.getParam("Type"); // create army token if needed if (!Iterables.any(activator.getCardsIn(ZoneType.Battlefield), CardPredicates.isType("Army"))) { CardZoneTable triggerList = new CardZoneTable(); MutableBoolean combatChanged = new MutableBoolean(false); - makeTokenTable(makeTokenTableInternal(activator, "b_0_0_zombie_army", 1, sa), false, triggerList, combatChanged, sa); + final Card result = TokenInfo.getProtoType("b_0_0_army", sa, activator, false); + // need to alter the token to add the Type from the Parameter + result.setCreatureTypes(Lists.newArrayList(type, "Army")); + result.setName(type + " Army Token"); + result.setTokenSpawningAbility(sa); + + makeTokenTable(makeTokenTableInternal(activator, result, 1), false, triggerList, combatChanged, sa); triggerList.triggerChangesZoneAll(game, sa); triggerList.clear(); @@ -78,15 +90,22 @@ public class AmassEffect extends TokenEffectBase { CardCollectionView tgtCards = CardLists.getType(activator.getCardsIn(ZoneType.Battlefield), "Army"); tgtCards = pc.chooseCardsForEffect(tgtCards, sa, Localizer.getInstance().getMessage("lblChooseAnArmy"), 1, 1, false, params); + if (tgtCards.isEmpty()) { + return; + } GameEntityCounterTable table = new GameEntityCounterTable(); for (final Card tgtCard : tgtCards) { tgtCard.addCounter(CounterEnumType.P1P1, amount, activator, table); - if (remember) { card.addRemembered(tgtCard); } } table.replaceCounterEffect(game, sa, true); + // change type after counters + long ts = game.getNextTimestamp(); + for (final Card tgtCard : tgtCards) { + tgtCard.addChangedCardTypes(CardType.parse(type, true), null, false, false, false, false, false, false, false, false, ts, 0, true, false); + } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java index 42b6d9cd623..6b1f6ecbce6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffectBase.java @@ -52,15 +52,18 @@ public abstract class TokenEffectBase extends SpellAbilityEffect { } protected TokenCreateTable makeTokenTableInternal(Player owner, String script, final int finalAmount, final SpellAbility sa) { - TokenCreateTable tokenTable = new TokenCreateTable(); final Card result = TokenInfo.getProtoType(script, sa, owner, false); if (result == null) { throw new RuntimeException("don't find Token for TokenScript: " + script); } result.setTokenSpawningAbility(sa); - tokenTable.put(owner, result, finalAmount); + return makeTokenTableInternal(owner, result, finalAmount); + } + protected TokenCreateTable makeTokenTableInternal(Player owner, Card result, final int finalAmount) { + TokenCreateTable tokenTable = new TokenCreateTable(); + tokenTable.put(owner, result, finalAmount); return tokenTable; } diff --git a/forge-gui/res/cardsfolder/a/angrath_captain_of_chaos.txt b/forge-gui/res/cardsfolder/a/angrath_captain_of_chaos.txt index 437861fa6e5..149dd12ec1c 100644 --- a/forge-gui/res/cardsfolder/a/angrath_captain_of_chaos.txt +++ b/forge-gui/res/cardsfolder/a/angrath_captain_of_chaos.txt @@ -3,6 +3,6 @@ ManaCost:2 BR BR Types:Legendary Planeswalker Angrath Loyalty:5 S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddKeyword$ Menace | Description$ Creatures you control have menace. -A:AB$ Amass | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Num$ 2 | SpellDescription$ Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +A:AB$ Amass | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Type$ Zombie | Num$ 2 | SpellDescription$ Amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) DeckHints:Ability$Amass & Type$Zombie -Oracle:Creatures you control have menace.\n[-2]: Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Creatures you control have menace.\n[-2]: Amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/a/aven_eternal.txt b/forge-gui/res/cardsfolder/a/aven_eternal.txt index 2ce25bf0b72..cdcece389bd 100644 --- a/forge-gui/res/cardsfolder/a/aven_eternal.txt +++ b/forge-gui/res/cardsfolder/a/aven_eternal.txt @@ -3,8 +3,8 @@ ManaCost:2 U Types:Creature Zombie Bird Warrior PT:2/2 K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Flying\nWhen Aven Eternal enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Flying\nWhen Aven Eternal enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/b/bleeding_edge.txt b/forge-gui/res/cardsfolder/b/bleeding_edge.txt index cccb9db22cb..89414ed3787 100644 --- a/forge-gui/res/cardsfolder/b/bleeding_edge.txt +++ b/forge-gui/res/cardsfolder/b/bleeding_edge.txt @@ -1,8 +1,8 @@ Name:Bleeding Edge ManaCost:1 B B Types:Sorcery -A:SP$ Pump | Cost$ 1 B B | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | SubAbility$ DBAmass | SpellDescription$ Up to one target creature gets -2/-2 until end of turn. Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 2 +A:SP$ Pump | Cost$ 1 B B | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | SubAbility$ DBAmass | SpellDescription$ Up to one target creature gets -2/-2 until end of turn. Amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 2 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Up to one target creature gets -2/-2 until end of turn. Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Up to one target creature gets -2/-2 until end of turn. Amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/c/callous_dismissal.txt b/forge-gui/res/cardsfolder/c/callous_dismissal.txt index 1a98558b7a1..3248a9443a4 100644 --- a/forge-gui/res/cardsfolder/c/callous_dismissal.txt +++ b/forge-gui/res/cardsfolder/c/callous_dismissal.txt @@ -1,8 +1,8 @@ Name:Callous Dismissal ManaCost:1 U Types:Sorcery -A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBAmass | SpellDescription$ Return target nonland permanent to its owner's hand. Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBAmass | SpellDescription$ Return target nonland permanent to its owner's hand. Amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Return target nonland permanent to its owner's hand.\nAmass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Return target nonland permanent to its owner's hand.\nAmass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/c/commence_the_endgame.txt b/forge-gui/res/cardsfolder/c/commence_the_endgame.txt index 56835730907..ea04c6cb259 100644 --- a/forge-gui/res/cardsfolder/c/commence_the_endgame.txt +++ b/forge-gui/res/cardsfolder/c/commence_the_endgame.txt @@ -2,9 +2,9 @@ Name:Commence the Endgame ManaCost:4 U U Types:Instant K:This spell can't be countered. -A:SP$ Draw | Cost$ 4 U U | NumCards$ 2 | SpellDescription$ Draw two cards, then amass X, where X is the number of cards in your hand. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) | SubAbility$ DBAmass -SVar:DBAmass:DB$ Amass | Num$ X +A:SP$ Draw | Cost$ 4 U U | NumCards$ 2 | SpellDescription$ Draw two cards, then amass Zombies X, where X is the number of cards in your hand. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) | SubAbility$ DBAmass +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ X DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token SVar:X:Count$InYourHand -Oracle:This spell can't be countered.\nDraw two cards, then amass X, where X is the number of cards in your hand. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:This spell can't be countered.\nDraw two cards, then amass Zombies X, where X is the number of cards in your hand. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/c/crush_dissent.txt b/forge-gui/res/cardsfolder/c/crush_dissent.txt index c7659b6d423..4ddf66b47b5 100644 --- a/forge-gui/res/cardsfolder/c/crush_dissent.txt +++ b/forge-gui/res/cardsfolder/c/crush_dissent.txt @@ -1,8 +1,8 @@ Name:Crush Dissent ManaCost:3 U Types:Instant -A:SP$ Counter | Cost$ 3 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 2 | SubAbility$ DBAmass | SpellDescription$ Counter target spell unless its controller pays {2}. Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 2 +A:SP$ Counter | Cost$ 3 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 2 | SubAbility$ DBAmass | SpellDescription$ Counter target spell unless its controller pays {2}. Amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 2 DeckHas:Ability$Amass|Counters|Token DeckHints:Ability$Amass & Type$Zombie -Oracle:Counter target spell unless its controller pays {2}.\nAmass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Counter target spell unless its controller pays {2}.\nAmass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/d/dreadhorde_invasion.txt b/forge-gui/res/cardsfolder/d/dreadhorde_invasion.txt index bbec0d3bed0..ebbea39e3ce 100644 --- a/forge-gui/res/cardsfolder/d/dreadhorde_invasion.txt +++ b/forge-gui/res/cardsfolder/d/dreadhorde_invasion.txt @@ -1,12 +1,12 @@ Name:Dreadhorde Invasion ManaCost:1 B Types:Enchantment -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBLife | TriggerDescription$ At the beginning of your upkeep, you lose 1 life and amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBLife | TriggerDescription$ At the beginning of your upkeep, you lose 1 life and amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) SVar:DBLife:DB$ LoseLife | LifeAmount$ 1 | SubAbility$ DBAmass -SVar:DBAmass:DB$ Amass | Num$ 1 +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 T:Mode$ Attacks | ValidCard$ Creature.Zombie+token+YouCtrl+powerGE6 | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a Zombie token you control with power 6 or greater attacks, it gains lifelink until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | KW$ Lifelink SVar:AICastPreference:NeverCastIfLifeBelow$ 4 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:At the beginning of your upkeep, you lose 1 life and amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nWhenever a Zombie token you control with power 6 or greater attacks, it gains lifelink until end of turn. +Oracle:At the beginning of your upkeep, you lose 1 life and amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nWhenever a Zombie token you control with power 6 or greater attacks, it gains lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/d/dreadhorde_twins.txt b/forge-gui/res/cardsfolder/d/dreadhorde_twins.txt index 396bb40c373..0e866caa1f5 100644 --- a/forge-gui/res/cardsfolder/d/dreadhorde_twins.txt +++ b/forge-gui/res/cardsfolder/d/dreadhorde_twins.txt @@ -2,10 +2,10 @@ Name:Dreadhorde Twins ManaCost:3 R Types:Creature Zombie Jackal Warrior PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 2 S:Mode$ Continuous | Affected$ Zombie.token+YouCtrl | AddKeyword$ Trample | Description$ Zombie tokens you control have trample. SVar:PlayMain1:TRUE DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Dreadhorde Twins enters the battlefield, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have trample. +Oracle:When Dreadhorde Twins enters the battlefield, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have trample. diff --git a/forge-gui/res/cardsfolder/e/enter_the_god_eternals.txt b/forge-gui/res/cardsfolder/e/enter_the_god_eternals.txt index dc18abcba6d..474e5215d59 100644 --- a/forge-gui/res/cardsfolder/e/enter_the_god_eternals.txt +++ b/forge-gui/res/cardsfolder/e/enter_the_god_eternals.txt @@ -1,11 +1,11 @@ Name:Enter the God-Eternals ManaCost:2 U U B Types:Sorcery -A:SP$ DealDamage | Cost$ 2 U U B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target creature and you gain life equal to the damage dealt this way. Target player mills four cards. Amass 4. (Put four +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) | StackDescription$ CARDNAME deals 4 damage to target creature. +A:SP$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target creature and you gain life equal to the damage dealt this way. Target player mills four cards. Amass Zombies 4. (Put four +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) | StackDescription$ CARDNAME deals 4 damage to target creature. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ DBMill | StackDescription$ You gain life equal to the damage dealt this way. SVar:X:Count$TotalDamageDoneByThisTurn SVar:DBMill:DB$ Mill | NumCards$ 4 | ValidTgts$ Player | TgtPrompt$ Choose target player | SubAbility$ DBAmass | StackDescription$ Target player mills four cards. -SVar:DBAmass:DB$ Amass | Num$ 4 +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 4 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token|LifeGain|Graveyard -Oracle:Enter the God-Eternals deals 4 damage to target creature and you gain life equal to the damage dealt this way. Target player mills four cards. Amass 4. (Put four +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Enter the God-Eternals deals 4 damage to target creature and you gain life equal to the damage dealt this way. Target player mills four cards. Amass Zombies 4. (Put four +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/e/eternal_skylord.txt b/forge-gui/res/cardsfolder/e/eternal_skylord.txt index 2db4d5384ef..81ada8847dc 100644 --- a/forge-gui/res/cardsfolder/e/eternal_skylord.txt +++ b/forge-gui/res/cardsfolder/e/eternal_skylord.txt @@ -3,8 +3,8 @@ ManaCost:4 U Types:Creature Zombie Wizard PT:3/3 S:Mode$ Continuous | Affected$ Zombie.token+YouCtrl | AddKeyword$ Flying | Description$ Zombie tokens you control have flying. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 2 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Eternal Skylord enters the battlefield, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have flying. +Oracle:When Eternal Skylord enters the battlefield, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have flying. diff --git a/forge-gui/res/cardsfolder/g/gleaming_overseer.txt b/forge-gui/res/cardsfolder/g/gleaming_overseer.txt index 28fcdd1c8c2..aeabd6737fd 100644 --- a/forge-gui/res/cardsfolder/g/gleaming_overseer.txt +++ b/forge-gui/res/cardsfolder/g/gleaming_overseer.txt @@ -3,8 +3,8 @@ ManaCost:1 U B Types:Creature Zombie Wizard PT:1/4 S:Mode$ Continuous | Affected$ Zombie.token+YouCtrl | AddKeyword$ Hexproof & Menace | Description$ Zombie tokens you control have hexproof and menace. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Gleaming Overseer enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have hexproof and menace. +Oracle:When Gleaming Overseer enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have hexproof and menace. diff --git a/forge-gui/res/cardsfolder/g/grim_initiate.txt b/forge-gui/res/cardsfolder/g/grim_initiate.txt index 32ec026b6bd..862443f221f 100644 --- a/forge-gui/res/cardsfolder/g/grim_initiate.txt +++ b/forge-gui/res/cardsfolder/g/grim_initiate.txt @@ -3,8 +3,8 @@ ManaCost:R Types:Creature Zombie Warrior PT:1/1 K:First Strike -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME dies, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME dies, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:First strike\nWhen Grim Initiate dies, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:First strike\nWhen Grim Initiate dies, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/h/herald_of_the_dreadhorde.txt b/forge-gui/res/cardsfolder/h/herald_of_the_dreadhorde.txt index 12a333d26f9..7b112def9e1 100644 --- a/forge-gui/res/cardsfolder/h/herald_of_the_dreadhorde.txt +++ b/forge-gui/res/cardsfolder/h/herald_of_the_dreadhorde.txt @@ -2,8 +2,8 @@ Name:Herald of the Dreadhorde ManaCost:3 B Types:Creature Zombie Warrior PT:3/2 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME dies, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME dies, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 2 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Herald of the Dreadhorde dies, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:When Herald of the Dreadhorde dies, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/h/honor_the_god_pharaoh.txt b/forge-gui/res/cardsfolder/h/honor_the_god_pharaoh.txt index fd80f6ec728..729a472320c 100644 --- a/forge-gui/res/cardsfolder/h/honor_the_god_pharaoh.txt +++ b/forge-gui/res/cardsfolder/h/honor_the_god_pharaoh.txt @@ -1,8 +1,8 @@ Name:Honor the God-Pharaoh ManaCost:2 R Types:Sorcery -A:SP$ Draw | Cost$ 2 R Discard<1/Card> | CostDesc$ As an additional cost to cast this spell, discard a card. | NumCards$ 2 | Defined$ You | SubAbility$ DBAmass | SpellDescription$ Draw two cards. Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +A:SP$ Draw | Cost$ 2 R Discard<1/Card> | CostDesc$ As an additional cost to cast this spell, discard a card. | NumCards$ 2 | Defined$ You | SubAbility$ DBAmass | SpellDescription$ Draw two cards. Amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHas:Ability$Discard|Amass|Counters|Token DeckHints:Keyword$Madness & Ability$Delirium|Amass & Type$Zombie -Oracle:As an additional cost to cast this spell, discard a card.\nDraw two cards. Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:As an additional cost to cast this spell, discard a card.\nDraw two cards. Amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/i/invade_the_city.txt b/forge-gui/res/cardsfolder/i/invade_the_city.txt index 7cc48a95183..a6be6e64eae 100644 --- a/forge-gui/res/cardsfolder/i/invade_the_city.txt +++ b/forge-gui/res/cardsfolder/i/invade_the_city.txt @@ -1,10 +1,10 @@ Name:Invade the City ManaCost:1 U R Types:Sorcery -A:SP$ Amass | Cost$ 1 U R | Num$ X | SpellDescription$ Amass X, where X is the number of instant and sorcery cards in your graveyard. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +A:SP$ Amass | Type$ Zombie | Num$ X | SpellDescription$ Amass Zombies X, where X is the number of instant and sorcery cards in your graveyard. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) DeckNeeds:Type$Instant|Sorcery DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn SVar:NeedsToPlayVar:X GE1 -Oracle:Amass X, where X is the number of instant and sorcery cards in your graveyard. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Amass Zombies X, where X is the number of instant and sorcery cards in your graveyard. (Put X +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/i/invading_manticore.txt b/forge-gui/res/cardsfolder/i/invading_manticore.txt index aa96423888a..f7c1cd5ffcb 100644 --- a/forge-gui/res/cardsfolder/i/invading_manticore.txt +++ b/forge-gui/res/cardsfolder/i/invading_manticore.txt @@ -2,8 +2,8 @@ Name:Invading Manticore ManaCost:5 R Types:Creature Zombie Manticore PT:4/5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 2 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Invading Manticore enters the battlefield, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:When Invading Manticore enters the battlefield, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/l/lazotep_chancellor.txt b/forge-gui/res/cardsfolder/l/lazotep_chancellor.txt index 0ccc05e0fd8..b3e90377771 100644 --- a/forge-gui/res/cardsfolder/l/lazotep_chancellor.txt +++ b/forge-gui/res/cardsfolder/l/lazotep_chancellor.txt @@ -2,8 +2,8 @@ Name:Lazotep Chancellor ManaCost:U B Types:Creature Zombie Wizard PT:1/3 -T:Mode$ Discarded | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigAmass | TriggerDescription$ Whenever you discard a card, you may pay {1}. If you do, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:TrigAmass:AB$ Amass | Cost$ 1 | Num$ 2 +T:Mode$ Discarded | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigAmass | TriggerDescription$ Whenever you discard a card, you may pay {1}. If you do, amass zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:TrigAmass:AB$ Amass | Cost$ 1 | Type$ Zombie | Num$ 2 DeckHints:Ability$Amass|Discard & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Whenever you discard a card, you may pay {1}. If you do, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Whenever you discard a card, you may pay {1}. If you do, amass Zombies 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/l/lazotep_plating.txt b/forge-gui/res/cardsfolder/l/lazotep_plating.txt index 6544326812d..a128d86a025 100644 --- a/forge-gui/res/cardsfolder/l/lazotep_plating.txt +++ b/forge-gui/res/cardsfolder/l/lazotep_plating.txt @@ -1,9 +1,9 @@ Name:Lazotep Plating ManaCost:1 U Types:Instant -A:SP$ Amass | Cost$ 1 U | Num$ 1 | SubAbility$ DBPump | SpellDescription$ Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +A:SP$ Amass | Type$ Zombie | Num$ 1 | SubAbility$ DBPump | SpellDescription$ Amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) SVar:DBPump:DB$ Pump | Defined$ You | KW$ Hexproof | SubAbility$ DBPumpAll | SpellDescription$ You and permanents you control gain hexproof until end of turn. (You and they can't be the targets of spells or abilities your opponents control.) SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Permanent.YouCtrl | KW$ Hexproof DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nYou and permanents you control gain hexproof until end of turn. (You and they can't be the targets of spells or abilities your opponents control.) +Oracle:Amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nYou and permanents you control gain hexproof until end of turn. (You and they can't be the targets of spells or abilities your opponents control.) diff --git a/forge-gui/res/cardsfolder/l/lazotep_reaver.txt b/forge-gui/res/cardsfolder/l/lazotep_reaver.txt index 7730480c77b..0c7d08ef86c 100644 --- a/forge-gui/res/cardsfolder/l/lazotep_reaver.txt +++ b/forge-gui/res/cardsfolder/l/lazotep_reaver.txt @@ -2,8 +2,8 @@ Name:Lazotep Reaver ManaCost:1 B Types:Creature Zombie Beast PT:1/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Lazotep Reaver enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:When Lazotep Reaver enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/r/relentless_advance.txt b/forge-gui/res/cardsfolder/r/relentless_advance.txt index b5685b4a2cb..f6dda2477f9 100644 --- a/forge-gui/res/cardsfolder/r/relentless_advance.txt +++ b/forge-gui/res/cardsfolder/r/relentless_advance.txt @@ -1,7 +1,7 @@ Name:Relentless Advance ManaCost:3 U Types:Sorcery -A:SP$ Amass | Cost$ 3 U | Num$ 3 | SpellDescription$ Amass 3. (Put three +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +A:SP$ Amass | Type$ Zombie | Num$ 3 | SpellDescription$ Amass Zombies 3. (Put three +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Amass 3. (Put three +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Amass Zombies 3. (Put three +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/t/toll_of_the_invasion.txt b/forge-gui/res/cardsfolder/t/toll_of_the_invasion.txt index ead96076dd1..5ff9b28d53d 100644 --- a/forge-gui/res/cardsfolder/t/toll_of_the_invasion.txt +++ b/forge-gui/res/cardsfolder/t/toll_of_the_invasion.txt @@ -2,7 +2,7 @@ Name:Toll of the Invasion ManaCost:2 B Types:Sorcery A:SP$ Discard | Cost$ 2 B | ValidTgts$ Opponent | NumCards$ 1 | DiscardValid$ Card.nonLand | Mode$ RevealYouChoose | SubAbility$ DBAmass | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from it. That player discards that card. -SVar:DBAmass:DB$ Amass | Num$ 1 | SpellDescription$ Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 | SpellDescription$ Amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) DeckHas:Ability$Amass|Counters|Token DeckHints:Ability$Amass & Type$Zombie -Oracle:Target opponent reveals their hand. You choose a nonland card from it. That player discards that card.\nAmass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Target opponent reveals their hand. You choose a nonland card from it. That player discards that card.\nAmass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/cardsfolder/v/vizier_of_the_scorpion.txt b/forge-gui/res/cardsfolder/v/vizier_of_the_scorpion.txt index 8684c7776b1..9c510504bc3 100644 --- a/forge-gui/res/cardsfolder/v/vizier_of_the_scorpion.txt +++ b/forge-gui/res/cardsfolder/v/vizier_of_the_scorpion.txt @@ -3,8 +3,8 @@ ManaCost:2 B Types:Creature Zombie Wizard PT:1/1 S:Mode$ Continuous | Affected$ Zombie.token+YouCtrl | AddKeyword$ Deathtouch | Description$ Zombie tokens you control have deathtouch. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -SVar:DBAmass:DB$ Amass | Num$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAmass | TriggerDescription$ When CARDNAME enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +SVar:DBAmass:DB$ Amass | Type$ Zombie | Num$ 1 DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:When Vizier of the Scorpion enters the battlefield, amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have deathtouch. +Oracle:When Vizier of the Scorpion enters the battlefield, amass Zombies 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)\nZombie tokens you control have deathtouch. diff --git a/forge-gui/res/cardsfolder/w/widespread_brutality.txt b/forge-gui/res/cardsfolder/w/widespread_brutality.txt index 34d7fadcbf8..6e42d3d5bbd 100644 --- a/forge-gui/res/cardsfolder/w/widespread_brutality.txt +++ b/forge-gui/res/cardsfolder/w/widespread_brutality.txt @@ -1,10 +1,10 @@ Name:Widespread Brutality ManaCost:1 B R R Types:Sorcery -A:SP$ Amass | Cost$ 1 B R R | Num$ 2 | RememberAmass$ True | SubAbility$ IgnitionDamage | SpellDescription$ Amass 2, then the Army you amassed deals damage equal to its power to each non-Army creature. (To amass 2, put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +A:SP$ Amass | Type$ Zombie | Num$ 2 | RememberAmass$ True | SubAbility$ IgnitionDamage | SpellDescription$ Amass Zombies 2, then the Army you amassed deals damage equal to its power to each non-Army creature. (To amass Zombies 2, put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) SVar:IgnitionDamage:DB$ DamageAll | ValidCards$ Creature.nonArmy | ValidDescription$ each non-Army creature. | NumDmg$ X | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | DamageSource$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardPower DeckHints:Ability$Amass & Type$Zombie DeckHas:Ability$Amass|Counters|Token -Oracle:Amass 2, then the Army you amassed deals damage equal to its power to each non-Army creature. (To amass 2, put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) +Oracle:Amass Zombies 2, then the Army you amassed deals damage equal to its power to each non-Army creature. (To amass Zombies 2, put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) diff --git a/forge-gui/res/editions/Innistrad Midnight Hunt Commander.txt b/forge-gui/res/editions/Innistrad Midnight Hunt Commander.txt index 66c584a004d..dfad818925c 100644 --- a/forge-gui/res/editions/Innistrad Midnight Hunt Commander.txt +++ b/forge-gui/res/editions/Innistrad Midnight Hunt Commander.txt @@ -195,7 +195,7 @@ ScryfallCode=MIC 187 U Unclaimed Territory @Dimitar Marinski [tokens] -b_0_0_zombie_army +b_0_0_army b_2_2_zombie b_2_2_zombie_decayed c_0_1_eldrazi_spawn_sac diff --git a/forge-gui/res/editions/Modern Horizons 2.txt b/forge-gui/res/editions/Modern Horizons 2.txt index 05b16e16ce3..4b4de5b227e 100644 --- a/forge-gui/res/editions/Modern Horizons 2.txt +++ b/forge-gui/res/editions/Modern Horizons 2.txt @@ -592,7 +592,7 @@ ScryfallCode=MH2 [tokens] b_0_0_phyrexian_germ -b_0_0_zombie_army +b_0_0_army b_2_2_zombie bg_1_1_insect c_0_0_a_construct_total_artifacts diff --git a/forge-gui/res/editions/Starter Commander Decks.txt b/forge-gui/res/editions/Starter Commander Decks.txt index 04bf1740365..cee11784f2c 100644 --- a/forge-gui/res/editions/Starter Commander Decks.txt +++ b/forge-gui/res/editions/Starter Commander Decks.txt @@ -360,7 +360,7 @@ ScryfallCode=SCD 352 L Forest @Titus Lunter [tokens] -b_0_0_zombie_army +b_0_0_army b_2_2_zombie b_2_2_zombie_knight_menace b_x_x_demon_flying diff --git a/forge-gui/res/editions/War of the Spark.txt b/forge-gui/res/editions/War of the Spark.txt index 1b869a3e2d4..6b92d46759f 100644 --- a/forge-gui/res/editions/War of the Spark.txt +++ b/forge-gui/res/editions/War of the Spark.txt @@ -330,9 +330,9 @@ A221 R A-Teferi, Time Raveler @Chris Rallis [tokens] all_2_2_citizen -b_0_0_zombie_army -b_0_0_zombie_army -b_0_0_zombie_army +b_0_0_army +b_0_0_army +b_0_0_army b_1_1_assassin_deathtouch_pwdestroy b_2_2_zombie b_4_4_zombie_warrior_vigilance diff --git a/forge-gui/res/lists/token-images.txt b/forge-gui/res/lists/token-images.txt index 10e5e102a70..114a8e7ddd5 100644 --- a/forge-gui/res/lists/token-images.txt +++ b/forge-gui/res/lists/token-images.txt @@ -30,12 +30,12 @@ b_0_0_phyrexian_germ.jpg https://downloads.cardforge.org/images/tokens/b_0_0_phy b_0_0_phyrexian_germ_moc.jpg https://downloads.cardforge.org/images/tokens/b_0_0_phyrexian_germ_moc.jpg b_0_0_phyrexian_germ_nec.jpg https://downloads.cardforge.org/images/tokens/b_0_0_phyrexian_germ_nec.jpg b_0_0_phyrexian_germ_onc.jpg https://downloads.cardforge.org/images/tokens/b_0_0_phyrexian_germ_onc.jpg -b_0_0_zombie_army.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army.jpg -b_0_0_zombie_army2_war.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army2_war.jpg -b_0_0_zombie_army3_war.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army3_war.jpg -b_0_0_zombie_army_mh2.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army_mh2.jpg -b_0_0_zombie_army_mic.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army_mic.jpg -b_0_0_zombie_army_war.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army_war.jpg +b_0_0_army.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army.jpg +b_0_0_army2_war.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army2_war.jpg +b_0_0_army3_war.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army3_war.jpg +b_0_0_army_mh2.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army_mh2.jpg +b_0_0_army_mic.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army_mic.jpg +b_0_0_army_war.jpg https://downloads.cardforge.org/images/tokens/b_0_0_zombie_army_war.jpg b_0_1_cleric.jpg https://downloads.cardforge.org/images/tokens/b_0_1_cleric.jpg b_0_1_cleric_dom.jpg https://downloads.cardforge.org/images/tokens/b_0_1_cleric_dom.jpg b_0_1_insect.jpg https://downloads.cardforge.org/images/tokens/b_0_1_insect.jpg diff --git a/forge-gui/res/puzzle/PS_M204.pzl b/forge-gui/res/puzzle/PS_M204.pzl index 3a4fc7dbc6b..a1317b879cc 100644 --- a/forge-gui/res/puzzle/PS_M204.pzl +++ b/forge-gui/res/puzzle/PS_M204.pzl @@ -13,6 +13,6 @@ activeplayer=human activephase=MAIN1 humanhand=Bleeding Edge;Maximize Altitude;Price of Betrayal;Enter the God-Eternals humanlibrary=Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt -humanbattlefield=Tetsuko Umezawa, Fugitive;Teferi, Time Raveler|Counters:LOYALTY=3;Yarok's Fenlurker;Watery Grave|NoETBTrigs;Watery Grave|NoETBTrigs;Watery Grave|NoETBTrigs;Hallowed Fountain|NoETBTrigs;Hallowed Fountain|NoETBTrigs;Hallowed Fountain|NoETBTrigs;t:Zombie Army,P:0,T:0,Cost:no cost,Color:B,Types:Creature-Zombie-Army,Keywords:Trample,Image:b_0_0_zombie_army3_war|Counters:P1P1=2 +humanbattlefield=Tetsuko Umezawa, Fugitive;Teferi, Time Raveler|Counters:LOYALTY=3;Yarok's Fenlurker;Watery Grave|NoETBTrigs;Watery Grave|NoETBTrigs;Watery Grave|NoETBTrigs;Hallowed Fountain|NoETBTrigs;Hallowed Fountain|NoETBTrigs;Hallowed Fountain|NoETBTrigs;t:Zombie Army,P:0,T:0,Cost:no cost,Color:B,Types:Creature-Zombie-Army,Keywords:Trample,Image:b_0_0_army3_war|Counters:P1P1=2 aibattlefield=Shifting Ceratops;Apostle of Purifying Light;Hungering Hydra|Counters:P1P1=4;Ashes of the Abhorrent aipersistentmana=C C G diff --git a/forge-gui/res/puzzle/PS_WAR0.pzl b/forge-gui/res/puzzle/PS_WAR0.pzl index b3055d90e96..34afd82aa5b 100644 --- a/forge-gui/res/puzzle/PS_WAR0.pzl +++ b/forge-gui/res/puzzle/PS_WAR0.pzl @@ -14,7 +14,7 @@ activeplayer=human activephase=MAIN1 humanhand=Eternal Skylord;Clifftop Retreat;Maximize Velocity;Deputy of Detention;Act of Treason humanlibrary=Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate -humanbattlefield=Eternal Skylord;t:Zombie Army,P:0,T:0,Cost:no cost,Color:B,Types:Creature-Zombie-Army,Keywords:Flying,Image:b_0_0_zombie_army|Counters:P1P1=4;Benalish Marshal;Mentor of the Meek;Azorius Guildgate;Azorius Guildgate;Azorius Guildgate;Azorius Guildgate;Mountain;Mountain;Mountain;Mountain;Mountain;Mountain;Mountain +humanbattlefield=Eternal Skylord;t:Zombie Army,P:0,T:0,Cost:no cost,Color:B,Types:Creature-Zombie-Army,Keywords:Flying,Image:b_0_0_army|Counters:P1P1=4;Benalish Marshal;Mentor of the Meek;Azorius Guildgate;Azorius Guildgate;Azorius Guildgate;Azorius Guildgate;Mountain;Mountain;Mountain;Mountain;Mountain;Mountain;Mountain aihand=Boros Guildgate;Boros Guildgate;Boros Guildgate;Boros Guildgate aibattlefield=Chamber Sentry|Counters:P1P1=5;Cold-Water Snapper;Cold-Water Snapper;Scuttlegator;Kumena's Speaker;Tishana, Voice of Thunder aipersistentmana=C C C C C diff --git a/forge-gui/res/puzzle/PS_WAR1.pzl b/forge-gui/res/puzzle/PS_WAR1.pzl index 191159c4349..2724efabbe0 100644 --- a/forge-gui/res/puzzle/PS_WAR1.pzl +++ b/forge-gui/res/puzzle/PS_WAR1.pzl @@ -12,5 +12,5 @@ turn=1 activeplayer=human activephase=MAIN1 humanhand=Martyr for the Cause;Spark Harvest;Dreadhorde Twins;Resolute Watchdog -humanbattlefield=Dreadhorde Twins;t:Zombie Army,P:0,T:0,Cost:no cost,Color:B,Types:Creature-Zombie-Army,Image:b_0_0_zombie_army3_war,Keywords:|Id:7|Counters:P1P1=2;Dreadhorde Twins;Clifftop Retreat|NoETBTrigs;Plains;Swamp;Swamp;Forebear's Blade|AttachedTo:7 +humanbattlefield=Dreadhorde Twins;t:Zombie Army,P:0,T:0,Cost:no cost,Color:B,Types:Creature-Zombie-Army,Image:b_0_0_army3_war,Keywords:|Id:7|Counters:P1P1=2;Dreadhorde Twins;Clifftop Retreat|NoETBTrigs;Plains;Swamp;Swamp;Forebear's Blade|AttachedTo:7 aibattlefield=Domri, Anarch of Bolas|Counters:LOYALTY=2;Dire Fleet Daredevil;Dire Fleet Daredevil;Dire Fleet Daredevil;Evolution Sage diff --git a/forge-gui/res/tokenscripts/b_0_0_army.txt b/forge-gui/res/tokenscripts/b_0_0_army.txt new file mode 100644 index 00000000000..e94d08a9cc7 --- /dev/null +++ b/forge-gui/res/tokenscripts/b_0_0_army.txt @@ -0,0 +1,6 @@ +Name:Army Token +ManaCost:no cost +Types:Creature Army +Colors:black +PT:0/0 +Oracle: diff --git a/forge-gui/res/tokenscripts/b_0_0_zombie_army.txt b/forge-gui/res/tokenscripts/b_0_0_zombie_army.txt deleted file mode 100644 index c696ec74ab8..00000000000 --- a/forge-gui/res/tokenscripts/b_0_0_zombie_army.txt +++ /dev/null @@ -1,6 +0,0 @@ -Name:Zombie Army Token -ManaCost:no cost -Types:Creature Zombie Army -Colors:black -PT:0/0 -Oracle: