diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index 3011c5a9e28..b93dc7c9841 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -45,8 +45,16 @@ public class CountersPutEffect extends SpellAbilityEffect { final StringBuilder stringBuilder = new StringBuilder(); final Card card = spellAbility.getHostCard(); - final int amount = AbilityUtils.calculateAmount(card, spellAbility.getParamOrDefault("CounterNum", "1"), - spellAbility); + final int amount = AbilityUtils.calculateAmount(card, + spellAbility.getParamOrDefault("CounterNum", "1"), spellAbility); + if (spellAbility.hasParam("CounterTypes")) { + stringBuilder.append(spellAbility.getActivatingPlayer()).append(" "); + String desc = spellAbility.getDescription(); + desc = desc.substring(desc.indexOf("Put"), desc.indexOf(" on ") + 4) + .replaceFirst("Put", "puts"); + stringBuilder.append(desc).append(Lang.joinHomogenous(getTargets(spellAbility))).append("."); + return stringBuilder.toString(); + } // skip the StringBuilder if no targets are chosen ("up to" scenario) if (spellAbility.usesTargeting()) { final List targetCards = SpellAbilityEffect.getTargetCards(spellAbility); @@ -250,6 +258,51 @@ public class CountersPutEffect extends SpellAbilityEffect { } } + if (sa.hasParam("ChooseDifferent")) { + final int num = Integer.parseInt(sa.getParam("ChooseDifferent")); + final List typesToAdd = Lists.newArrayList(); + String options = sa.getParam("CounterType"); + for (int i = 0; i < num; i++) { + CounterType ct = chooseTypeFromList(sa, options, obj, pc); + typesToAdd.add(ct); + options = options.replace(ct.getName(),""); + } + for (CounterType ct : typesToAdd) { + if (obj instanceof Player) { + ((Player) obj).addCounter(ct, counterAmount, placer, table); + } + if (obj instanceof Card) { + if (etbcounter) { + gameCard.addEtbCounter(ct, counterAmount, placer); + } else { + gameCard.addCounter(ct, counterAmount, placer, table); + } + } + } + continue; + } + + if (sa.hasParam("CounterTypes")) { + final List typesToAdd = Lists.newArrayList(); + String types = sa.getParam("CounterTypes"); + if (types.contains("ChosenFromList")) { + typesToAdd.add(chooseTypeFromList(sa, sa.getParam("TypeList"), obj, pc)); + types = types.replace("ChosenFromList", ""); + } + for (String type : types.split(",")) { + typesToAdd.add(CounterType.getType(type)); + } + for (CounterType ct : typesToAdd) { + if (obj instanceof Player) { + ((Player) obj).addCounter(ct, counterAmount, placer, table); + } + if (obj instanceof Card) { + gameCard.addCounter(ct, counterAmount, placer, table); + } + } + continue; + } + if (existingCounter) { final List choices = Lists.newArrayList(); // get types of counters @@ -295,17 +348,8 @@ public class CountersPutEffect extends SpellAbilityEffect { } continue; } - if (sa.hasParam("CounterTypePerDefined")) { - List choices = Lists.newArrayList(); - for (String s : sa.getParam("CounterType").split(",")) { - choices.add(CounterType.getType(s)); - } - Map params = Maps.newHashMap(); - params.put("Target", obj); - StringBuilder sb = new StringBuilder(); - sb.append(Localizer.getInstance().getMessage("lblSelectCounterTypeAddTo") + " "); - sb.append(obj); - counterType = pc.chooseCounterType(choices, sa, sb.toString(), params); + if (sa.hasParam("CounterTypePerDefined") || sa.hasParam("UniqueType")) { + counterType = chooseTypeFromList(sa, sa.getParam("CounterType"), obj, pc); } if (obj instanceof Card) { @@ -471,16 +515,11 @@ public class CountersPutEffect extends SpellAbilityEffect { } else { CounterType counterType = null; if (!sa.hasParam("EachExistingCounter") && !sa.hasParam("EachFromSource") - && !sa.hasParam("CounterTypePerDefined")) { + && !sa.hasParam("UniqueType") && !sa.hasParam("CounterTypePerDefined") + && !sa.hasParam("CounterTypes") && !sa.hasParam("ChooseDifferent")) { try { - List choices = Lists.newArrayList(); - for (String s : sa.getParam("CounterType").split(",")) { - choices.add(CounterType.getType(s)); - } - Map params = Maps.newHashMap(); - StringBuilder sb = new StringBuilder(); - sb.append(Localizer.getInstance().getMessage("lblSelectCounterTypeAddTo")); - counterType = placer.getController().chooseCounterType(choices, sa, sb.toString(), params); + counterType = chooseTypeFromList(sa, sa.getParam("CounterType"), null, + placer.getController()); } catch (Exception e) { System.out.println("Counter type doesn't match, nor does an SVar exist with the type name."); return; @@ -541,6 +580,27 @@ public class CountersPutEffect extends SpellAbilityEffect { } } + protected CounterType chooseTypeFromList(SpellAbility sa, String list, GameEntity obj, PlayerController pc) { + List choices = Lists.newArrayList(); + for (String s : list.split(",")) { + if (!s.equals("") && (!sa.hasParam("UniqueType") || obj.getCounters(CounterType.getType(s)) == 0)) { + choices.add(CounterType.getType(s)); + } + } + if (sa.hasParam("RandomType")) { + return Aggregates.random(choices); + } + Map params = Maps.newHashMap(); + params.put("Target", obj); + StringBuilder sb = new StringBuilder(); + if (obj != null) { + sb.append(Localizer.getInstance().getMessage("lblSelectCounterTypeAddTo")).append(" ").append(obj); + } else { + sb.append(Localizer.getInstance().getMessage("lblSelectCounterType")); + } + return pc.chooseCounterType(choices, sa, sb.toString(), params); + } + protected String logOutput(Map randomMap, Card card) { StringBuilder randomLog = new StringBuilder(); randomLog.append(card.getName()).append(" randomly distributed "); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index 1e8fb401bc4..cccbe92417c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -67,14 +67,34 @@ public class DigEffect extends SpellAbilityEffect { } String verb2 = "put "; - String where = "in their hand "; + String where = " in their hand "; if (destZone1.equals("exile")) { verb2 = "exile "; - where = ""; + where = " "; + } else if (destZone1.equals("battlefield")) { + verb2 = "put "; + where = " onto the battlefield "; } - sb.append(" They ").append(verb2).append(Lang.getNumeral(numToChange)).append(" of them ").append(where); - sb.append(sa.hasParam("ExileFaceDown") ? "face down " : "").append("and put the rest "); - sb.append(destZone2); + + sb.append(" They ").append(sa.hasParam("Optional") ? "may " : "").append(verb2); + if (sa.hasParam("ChangeValid")) { + String what = sa.hasParam("ChangeValidDesc") ? sa.getParam("ChangeValidDesc") : + sa.getParam("ChangeValid"); + sb.append(Lang.nounWithNumeralExceptOne(numToChange, what)).append(" from among them").append(where); + } else { + sb.append(Lang.getNumeral(numToChange)).append(" of them").append(where); + } + sb.append(sa.hasParam("ExileFaceDown") ? "face down " : ""); + if (sa.hasParam("WithCounter") || sa.hasParam("ExileWithCounter")) { + String ctr = sa.hasParam("WithCounter") ? sa.getParam("WithCounter") : + sa.getParam("ExileWithCounter"); + sb.append("with a "); + sb.append(CounterType.getType(ctr).getName().toLowerCase()); + sb.append(" counter on it. They "); + } else { + sb.append("and "); + } + sb.append("put the rest ").append(destZone2); } return sb.toString(); @@ -388,6 +408,9 @@ public class DigEffect extends SpellAbilityEffect { if (sa.hasParam("Tapped")) { c.setTapped(true); } + if (destZone1.equals(ZoneType.Battlefield) && sa.hasParam("WithCounter")) { + c.addEtbCounter(CounterType.getType(sa.getParam("WithCounter")), 1, player); + } c = game.getAction().moveTo(zone, c, sa, moveParams); if (destZone1.equals(ZoneType.Battlefield)) { if (addToCombat(c, c.getController(), sa, "Attacking", "Blocking")) { diff --git a/forge-gui/res/cardsfolder/b/boot_nipper.txt b/forge-gui/res/cardsfolder/b/boot_nipper.txt index d6e72a278cb..f87739a9616 100644 --- a/forge-gui/res/cardsfolder/b/boot_nipper.txt +++ b/forge-gui/res/cardsfolder/b/boot_nipper.txt @@ -3,8 +3,6 @@ ManaCost:1 B Types:Creature Beast PT:2/1 K:ETBReplacement:Other:CounterChoice -SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Deathtouch,Lifelink | SpellDescription$ CARDNAME enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it. -SVar:Deathtouch:DB$ PutCounter | CounterType$ Deathtouch | CounterNum$ 1 | ETB$ True | SpellDescription$ Deathtouch -SVar:Lifelink:DB$ PutCounter | CounterType$ Lifelink | CounterNum$ 1 | ETB$ True | SpellDescription$ Lifelink -DeckHints:Ability$Counters +SVar:CounterChoice:DB$ PutCounter | ETB$ True | CounterType$ Deathtouch,Lifelink | SpellDescription$ CARDNAME enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it. +DeckHints:Ability$Counters|LifeGain Oracle:Boot Nipper enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it. diff --git a/forge-gui/res/cardsfolder/c/crystalline_giant.txt b/forge-gui/res/cardsfolder/c/crystalline_giant.txt index 3d41ffafaaa..cc6f8232c54 100644 --- a/forge-gui/res/cardsfolder/c/crystalline_giant.txt +++ b/forge-gui/res/cardsfolder/c/crystalline_giant.txt @@ -2,18 +2,8 @@ Name:Crystalline Giant ManaCost:3 Types:Artifact Creature Giant PT:3/3 -T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigGenericChoice | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, choose a kind of counter at random that CARDNAME doesn't have on it from among flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, and +1/+1. Put a counter of that kind on CARDNAME. -SVar:TrigGenericChoice:DB$ GenericChoice | AtRandom$ True | Choices$ Flying,FirstStrike,Deathtouch,Hexproof,Lifelink,Menace,Reach,Trample,Vigilance,P1P1 -SVar:Flying:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Flying | CounterType$ Flying | CounterNum$ 1 | SpellDescription$ FLY -SVar:FirstStrike:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_First Strike | CounterType$ First Strike | CounterNum$ 1 | SpellDescription$ FIR -SVar:Deathtouch:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Deathtouch | CounterType$ Deathtouch | CounterNum$ 1 | SpellDescription$ DEA -SVar:Hexproof:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Hexproof | CounterType$ Hexproof | CounterNum$ 1 | SpellDescription$ HEX -SVar:Lifelink:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Lifelink | CounterType$ Lifelink | CounterNum$ 1 | SpellDescription$ LIF -SVar:Menace:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Menace | CounterType$ Menace | CounterNum$ 1 | SpellDescription$ MEN -SVar:Reach:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Reach | CounterType$ Reach | CounterNum$ 1 | SpellDescription$ REA -SVar:Trample:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Trample | CounterType$ Trample | CounterNum$ 1 | SpellDescription$ TRA -SVar:Vigilance:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_Vigilance | CounterType$ Vigilance | CounterNum$ 1 | SpellDescription$ VIG -SVar:P1P1:DB$ PutCounter | IsPresent$ Card.Self+counters_EQ0_P1P1 | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ P1P1 +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, choose a kind of counter at random that CARDNAME doesn't have on it from among flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, and +1/+1. Put a counter of that kind on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | UniqueType$ True | RandomType$ True | CounterType$ Flying,First Strike,Deathtouch,Hexproof,Lifelink,Menace,Reach,Trample,Vigilance,P1P1 SVar:PlayMain1:TRUE -DeckHas:Ability$Counters +DeckHas:Ability$Counters|LifeGain Oracle:At the beginning of combat on your turn, choose a kind of counter at random that Crystalline Giant doesn't have on it from among flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, and +1/+1. Put a counter of that kind on Crystalline Giant. diff --git a/forge-gui/res/cardsfolder/f/ferocious_tigorilla.txt b/forge-gui/res/cardsfolder/f/ferocious_tigorilla.txt index 087c946c41c..3202805a268 100644 --- a/forge-gui/res/cardsfolder/f/ferocious_tigorilla.txt +++ b/forge-gui/res/cardsfolder/f/ferocious_tigorilla.txt @@ -3,8 +3,6 @@ ManaCost:3 R Types:Creature Cat Ape PT:4/3 K:ETBReplacement:Other:CounterChoice -SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Trample,Menace | SpellDescription$ CARDNAME enters the battlefield with your choice of a trample counter or a menace counter on it. -SVar:Trample:DB$ PutCounter | ETB$ True | CounterType$ Trample | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a trample counter -SVar:Menace:DB$ PutCounter | ETB$ True | CounterType$ Menace | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a menace counter +SVar:CounterChoice:DB$ PutCounter | ETB$ True | CounterType$ Trample,Menace | SpellDescription$ CARDNAME enters the battlefield with your choice of a trample counter or a menace counter on it. (A creature with menace can't be blocked except by two or more creatures.) DeckHas:Ability$Counters Oracle:Ferocious Tigorilla enters the battlefield with your choice of a trample counter or a menace counter on it. (A creature with menace can't be blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/f/flycatcher_giraffid.txt b/forge-gui/res/cardsfolder/f/flycatcher_giraffid.txt index f8714bfaad6..058c635e53c 100644 --- a/forge-gui/res/cardsfolder/f/flycatcher_giraffid.txt +++ b/forge-gui/res/cardsfolder/f/flycatcher_giraffid.txt @@ -3,8 +3,6 @@ ManaCost:4 G Types:Creature Antelope Lizard PT:3/5 K:ETBReplacement:Other:CounterChoice -SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Vigilance,Reach | SpellDescription$ CARDNAME enters the battlefield with your choice of a vigilance counter or a reach counter on it. -SVar:Vigilance:DB$ PutCounter | ETB$ True | CounterType$ Vigilance | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a vigilance counter on it -SVar:Reach:DB$ PutCounter | ETB$ True | CounterType$ Reach | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a reach counter on it +SVar:CounterChoice:DB$ PutCounter | ETB$ True | CounterType$ Vigilance,Reach | SpellDescription$ CARDNAME enters the battlefield with your choice of a vigilance counter or a reach counter on it. DeckHas:Ability$Counters Oracle:Flycatcher Giraffid enters the battlefield with your choice of a vigilance counter or a reach counter on it. diff --git a/forge-gui/res/cardsfolder/g/grimdancer.txt b/forge-gui/res/cardsfolder/g/grimdancer.txt index f2272e5b92f..e3e6b480c1b 100644 --- a/forge-gui/res/cardsfolder/g/grimdancer.txt +++ b/forge-gui/res/cardsfolder/g/grimdancer.txt @@ -3,9 +3,6 @@ ManaCost:1 B B Types:Creature Nightmare PT:3/3 K:ETBReplacement:Other:CounterChoice -SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Menace,Deathtouch,Lifelink | ChoiceAmount$ 2 | SpellDescription$ CARDNAME enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink. -SVar:Menace:DB$ PutCounter | CounterType$ Menace | CounterNum$ 1 | ETB$ True | SpellDescription$ Menace -SVar:Deathtouch:DB$ PutCounter | CounterType$ Deathtouch | CounterNum$ 1 | ETB$ True | SpellDescription$ Deathtouch -SVar:Lifelink:DB$ PutCounter | CounterType$ Lifelink | CounterNum$ 1 | ETB$ True | SpellDescription$ Lifelink -DeckHas:Ability$Counters +SVar:CounterChoice:DB$ PutCounter | ETB$ True | CounterType$ Menace,Deathtouch,Lifelink | ChooseDifferent$ 2 | SpellDescription$ CARDNAME enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink. +DeckHas:Ability$Counters|LifeGain Oracle:Grimdancer enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink. diff --git a/forge-gui/res/cardsfolder/h/helica_glider.txt b/forge-gui/res/cardsfolder/h/helica_glider.txt index 77b9330ae66..be3acf49151 100644 --- a/forge-gui/res/cardsfolder/h/helica_glider.txt +++ b/forge-gui/res/cardsfolder/h/helica_glider.txt @@ -3,8 +3,6 @@ ManaCost:2 W Types:Creature Nightmare Squirrel PT:2/2 K:ETBReplacement:Other:CounterChoice -SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Flying,FirstStrike | SpellDescription$ CARDNAME enters the battlefield with your choice of a flying counter or a first strike counter on it. -SVar:Flying:DB$ PutCounter | ETB$ True | CounterType$ Flying | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a flying counter on it -SVar:FirstStrike:DB$ PutCounter | ETB$ True | CounterType$ First Strike | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a first strike counter on it +SVar:CounterChoice:DB$ PutCounter | ETB$ True | CounterType$ Flying,First Strike | SpellDescription$ CARDNAME enters the battlefield with your choice of a flying counter or a first strike counter on it. DeckHints:Ability$Counters Oracle:Helica Glider enters the battlefield with your choice of a flying counter or a first strike counter on it. diff --git a/forge-gui/res/cardsfolder/u/unexpected_fangs.txt b/forge-gui/res/cardsfolder/u/unexpected_fangs.txt index c33822d4368..0649215eb6c 100644 --- a/forge-gui/res/cardsfolder/u/unexpected_fangs.txt +++ b/forge-gui/res/cardsfolder/u/unexpected_fangs.txt @@ -1,7 +1,6 @@ Name:Unexpected Fangs ManaCost:1 B Types:Instant -A:SP$ PutCounter | Cost$ 1 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutCounter | SpellDescription$ Put a +1/+1 counter and a lifelink counter on target creature. -SVar:DBPutCounter:DB$ PutCounter | CounterType$ Lifelink | CounterNum$ 1 | Defined$ Targeted -DeckHas:Ability$Counters +A:SP$ PutCounter | ValidTgts$ Creature | CounterTypes$ P1P1,Lifelink | SpellDescription$ Put a +1/+1 counter and a lifelink counter on target creature. +DeckHas:Ability$Counters|LifeGain Oracle:Put a +1/+1 counter and a lifelink counter on target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/elspeth_resplendent.txt b/forge-gui/res/cardsfolder/upcoming/elspeth_resplendent.txt new file mode 100644 index 00000000000..401d4ee883d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/elspeth_resplendent.txt @@ -0,0 +1,9 @@ +Name:Elspeth Resplendent +ManaCost:3 W W +Types:Legendary Planeswalker Elspeth +Loyalty:5 +A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | CounterTypes$ P1P1,ChosenFromList | TypeList$ Flying,First Strike,Lifelink,Vigilance | SpellDescription$ Choose up to one target creature. Put a +1/+1 counter and a counter from among flying, first strike, lifelink, or vigilance on it. +A:AB$ Dig | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Permanent.cmcLE3 | ChangeValidDesc$ permanent card with mana value 3 or less | DestinationZone$ Battlefield | WithCounter$ Shield | PrimaryPrompt$ You may choose a permanent card with mana value 3 or less to put on the battlefield | RestRandomOrder$ True | SpellDescription$ Look at the top seven cards of your library. You may put a permanent card with mana value 3 or less from among them onto the battlefield with a shield counter on it. Put the rest on the bottom of your library in a random order. +A:AB$ Token | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | TokenAmount$ 5 | TokenScript$ w_3_3_angel_flying | SpellDescription$ Create five 3/3 white Angel creature tokens with flying. +DeckHas:Ability$Counters|LifeGain|Token & Type$Angel +Oracle:[+1]: Choose up to one target creature. Put a +1/+1 counter and a counter from among flying, first strike, lifelink, or vigilance on it.\n[−3]: Look at the top seven cards of your library. You may put a permanent card with mana value 3 or less from among them onto the battlefield with a shield counter on it. Put the rest on the bottom of your library in a random order.\n[−7]: Create five 3/3 white Angel creature tokens with flying. diff --git a/forge-gui/res/cardsfolder/w/wingfold_pteron.txt b/forge-gui/res/cardsfolder/w/wingfold_pteron.txt index f5d29b99502..e3ab0a8d7b3 100644 --- a/forge-gui/res/cardsfolder/w/wingfold_pteron.txt +++ b/forge-gui/res/cardsfolder/w/wingfold_pteron.txt @@ -3,8 +3,6 @@ ManaCost:5 U Types:Creature Dinosaur PT:3/6 K:ETBReplacement:Other:CounterChoice -SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Flying,Hexproof | SpellDescription$ CARDNAME enters the battlefield with your choice of a flying counter or a hexproof counter on it. -SVar:Flying:DB$ PutCounter | ETB$ True | CounterType$ Flying | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a flying counter on it -SVar:Hexproof:DB$ PutCounter | ETB$ True | CounterType$ Hexproof | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a hexproof counter on it +SVar:CounterChoice:DB$ PutCounter | ETB$ True | CounterType$ Flying,Hexproof | SpellDescription$ CARDNAME enters the battlefield with your choice of a flying counter or a hexproof counter on it. DeckHas:Ability$Counters Oracle:Wingfold Pteron enters the battlefield with your choice of a flying counter or a hexproof counter on it. (A creature with hexproof can't be the target of spells or abilities your opponents control.) diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 7840f2b0aee..e2f584197bb 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -1904,6 +1904,7 @@ lblChooseProliferateTarget=Wähle eine beliebige Anzahl bleibender Karten und/od lblDoYouWantPutCounter=Möchtest du die Marke legen? lblChooseACreatureWithLeastToughness=Wähle eine Kreatur mit der geringsten Widerstandskraft lblSelectCounterTypeAddTo=Wähle Markentyp zum Hinzufügen +lblSelectCounterType=Wähle Markentyp lblHowManyCountersThis=Wie viele Marken möchtest du auf {0} legen? lblChooseAnOpponent=Wähle Gegner lblDoYouWantPutTargetP1P1CountersOnCard=Möchtest du {0} +1/+1-Marken auf {1} legen? diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 0f033140032..c91f20e5b62 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -1905,6 +1905,7 @@ lblChooseProliferateTarget=Choose any number of permanents and/or players for pr lblDoYouWantPutCounter=Do you want to put the counter? lblChooseACreatureWithLeastToughness=Choose a creature with the least toughness lblSelectCounterTypeAddTo=Select counter type to add to +lblSelectCounterType=Select counter type lblHowManyCountersThis=How many counters do you want to put on {0}? lblChooseAnOpponent=Choose an opponent lblDoYouWantPutTargetP1P1CountersOnCard=Do you want to put {0} +1/+1 counters on {1}? diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 28d17684407..065b70ac98d 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -1903,6 +1903,7 @@ lblChooseProliferateTarget=Elige cualquier número de permanentes y/o jugadores lblDoYouWantPutCounter=¿Quieres poner el contador? lblChooseACreatureWithLeastToughness=Elige una criatura con la menor resistencia lblSelectCounterTypeAddTo=Selecciona el tipo de contador para añadirlo a +lblSelectCounterType=Selecciona el tipo de contador lblHowManyCountersThis=¿Cuántos contadores quieres poner en {0}? lblChooseAnOpponent=Elige un adversario lblDoYouWantPutTargetP1P1CountersOnCard=¿Quieres poner {0} contadores +1/+1 en {1}? diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index 0422eef7ddd..3e8ef304d68 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -1902,6 +1902,7 @@ lblChooseProliferateTarget=Scegli un numero qualsiasi di permanenti e/o giocator lblDoYouWantPutCounter=Vuoi aggiungere il segnalino? lblChooseACreatureWithLeastToughness=Scegli una creatura con la minor costituzione lblSelectCounterTypeAddTo=Scegli il tipo di segnalino da aggiungere +lblSelectCounterType=Scegli il tipo di segnalino lblHowManyCountersThis=Quanti segnalini vuoi aggiungere a {0}? lblChooseAnOpponent=Scegli un avversario lblDoYouWantPutTargetP1P1CountersOnCard=Vuoi aggiungere {0} segnalino/i +1/+1 a {1}? diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 80432daccfc..702f210f30f 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -1902,6 +1902,7 @@ lblChooseProliferateTarget=増殖を行う望む数のパーマネントやプ lblDoYouWantPutCounter=カウンターを置きますか? lblChooseACreatureWithLeastToughness=タフネスが一番低いクリーチャーを選ぶ lblSelectCounterTypeAddTo=置けるカウンターの種類を選ぶ +lblSelectCounterType=Select counter type lblHowManyCounters={0}に何個のカウンターを置きますか? lblChooseAnOpponent=対戦相手一人を選ぶ lblDoYouWantPutTargetP1P1CountersOnCard={1}の上に {0}個の +1/+1 カウンターを置きますか? diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index f0fd321cde0..3102e2e3d4b 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -1964,6 +1964,7 @@ lblChooseProliferateTarget=Escolha qualquer número de permanentes e/ou jogadore lblDoYouWantPutCounter=Você quer colocar o marcador? lblChooseACreatureWithLeastToughness=Escolha uma criatura com a menor resistência lblSelectCounterTypeAddTo=Selecione o tipo de marcador para adicionar a +lblSelectCounterType=Selecione o tipo de marcador lblHowManyCountersThis=Quantos marcadores você quer colocar em {0}? lblChooseAnOpponent=Escolha um adversário lblDoYouWantPutTargetP1P1CountersOnCard=Você quer colocar {0} +1/+1 marcadores em {1}? diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index 16c60fe1268..c5b578306a7 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -1906,6 +1906,7 @@ lblChooseProliferateTarget=选择任意数量的永久物和或牌手进行增 lblDoYouWantPutCounter=你想要放置指示物吗? lblChooseACreatureWithLeastToughness=选择防御力最小的生物 lblSelectCounterTypeAddTo=选择指示物类型以添加到 +lblSelectCounterType=Select counter type lblHowManyCountersThis=你想要在{0}上放置多少个指示物? lblChooseAnOpponent=选择一个对手 lblDoYouWantPutTargetP1P1CountersOnCard=你想要放置{0}个+1+1指示物到{1}吗?