mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Merge pull request #83 from Northmoc/elspeth_counters
SNC: Elspeth Resplendent and support + refactoring various related IKO stuff
This commit is contained in:
@@ -45,8 +45,16 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
final StringBuilder stringBuilder = new StringBuilder();
|
final StringBuilder stringBuilder = new StringBuilder();
|
||||||
final Card card = spellAbility.getHostCard();
|
final Card card = spellAbility.getHostCard();
|
||||||
|
|
||||||
final int amount = AbilityUtils.calculateAmount(card, spellAbility.getParamOrDefault("CounterNum", "1"),
|
final int amount = AbilityUtils.calculateAmount(card,
|
||||||
spellAbility);
|
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)
|
// skip the StringBuilder if no targets are chosen ("up to" scenario)
|
||||||
if (spellAbility.usesTargeting()) {
|
if (spellAbility.usesTargeting()) {
|
||||||
final List<Card> targetCards = SpellAbilityEffect.getTargetCards(spellAbility);
|
final List<Card> 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<CounterType> 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<CounterType> 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) {
|
if (existingCounter) {
|
||||||
final List<CounterType> choices = Lists.newArrayList();
|
final List<CounterType> choices = Lists.newArrayList();
|
||||||
// get types of counters
|
// get types of counters
|
||||||
@@ -295,17 +348,8 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (sa.hasParam("CounterTypePerDefined")) {
|
if (sa.hasParam("CounterTypePerDefined") || sa.hasParam("UniqueType")) {
|
||||||
List<CounterType> choices = Lists.newArrayList();
|
counterType = chooseTypeFromList(sa, sa.getParam("CounterType"), obj, pc);
|
||||||
for (String s : sa.getParam("CounterType").split(",")) {
|
|
||||||
choices.add(CounterType.getType(s));
|
|
||||||
}
|
|
||||||
Map<String, Object> 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 (obj instanceof Card) {
|
if (obj instanceof Card) {
|
||||||
@@ -471,16 +515,11 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
} else {
|
} else {
|
||||||
CounterType counterType = null;
|
CounterType counterType = null;
|
||||||
if (!sa.hasParam("EachExistingCounter") && !sa.hasParam("EachFromSource")
|
if (!sa.hasParam("EachExistingCounter") && !sa.hasParam("EachFromSource")
|
||||||
&& !sa.hasParam("CounterTypePerDefined")) {
|
&& !sa.hasParam("UniqueType") && !sa.hasParam("CounterTypePerDefined")
|
||||||
|
&& !sa.hasParam("CounterTypes") && !sa.hasParam("ChooseDifferent")) {
|
||||||
try {
|
try {
|
||||||
List<CounterType> choices = Lists.newArrayList();
|
counterType = chooseTypeFromList(sa, sa.getParam("CounterType"), null,
|
||||||
for (String s : sa.getParam("CounterType").split(",")) {
|
placer.getController());
|
||||||
choices.add(CounterType.getType(s));
|
|
||||||
}
|
|
||||||
Map<String, Object> params = Maps.newHashMap();
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append(Localizer.getInstance().getMessage("lblSelectCounterTypeAddTo"));
|
|
||||||
counterType = placer.getController().chooseCounterType(choices, sa, sb.toString(), params);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("Counter type doesn't match, nor does an SVar exist with the type name.");
|
System.out.println("Counter type doesn't match, nor does an SVar exist with the type name.");
|
||||||
return;
|
return;
|
||||||
@@ -541,6 +580,27 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CounterType chooseTypeFromList(SpellAbility sa, String list, GameEntity obj, PlayerController pc) {
|
||||||
|
List<CounterType> 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<String, Object> 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<Object, Integer> randomMap, Card card) {
|
protected String logOutput(Map<Object, Integer> randomMap, Card card) {
|
||||||
StringBuilder randomLog = new StringBuilder();
|
StringBuilder randomLog = new StringBuilder();
|
||||||
randomLog.append(card.getName()).append(" randomly distributed ");
|
randomLog.append(card.getName()).append(" randomly distributed ");
|
||||||
|
|||||||
@@ -67,14 +67,34 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String verb2 = "put ";
|
String verb2 = "put ";
|
||||||
String where = "in their hand ";
|
String where = " in their hand ";
|
||||||
if (destZone1.equals("exile")) {
|
if (destZone1.equals("exile")) {
|
||||||
verb2 = "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(" They ").append(sa.hasParam("Optional") ? "may " : "").append(verb2);
|
||||||
sb.append(destZone2);
|
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();
|
return sb.toString();
|
||||||
@@ -388,6 +408,9 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("Tapped")) {
|
if (sa.hasParam("Tapped")) {
|
||||||
c.setTapped(true);
|
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);
|
c = game.getAction().moveTo(zone, c, sa, moveParams);
|
||||||
if (destZone1.equals(ZoneType.Battlefield)) {
|
if (destZone1.equals(ZoneType.Battlefield)) {
|
||||||
if (addToCombat(c, c.getController(), sa, "Attacking", "Blocking")) {
|
if (addToCombat(c, c.getController(), sa, "Attacking", "Blocking")) {
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ ManaCost:1 B
|
|||||||
Types:Creature Beast
|
Types:Creature Beast
|
||||||
PT:2/1
|
PT:2/1
|
||||||
K:ETBReplacement:Other:CounterChoice
|
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: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.
|
||||||
SVar:Deathtouch:DB$ PutCounter | CounterType$ Deathtouch | CounterNum$ 1 | ETB$ True | SpellDescription$ Deathtouch
|
DeckHints:Ability$Counters|LifeGain
|
||||||
SVar:Lifelink:DB$ PutCounter | CounterType$ Lifelink | CounterNum$ 1 | ETB$ True | SpellDescription$ Lifelink
|
|
||||||
DeckHints:Ability$Counters
|
|
||||||
Oracle:Boot Nipper enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it.
|
Oracle:Boot Nipper enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it.
|
||||||
|
|||||||
@@ -2,18 +2,8 @@ Name:Crystalline Giant
|
|||||||
ManaCost:3
|
ManaCost:3
|
||||||
Types:Artifact Creature Giant
|
Types:Artifact Creature Giant
|
||||||
PT:3/3
|
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.
|
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:TrigGenericChoice:DB$ GenericChoice | AtRandom$ True | Choices$ Flying,FirstStrike,Deathtouch,Hexproof,Lifelink,Menace,Reach,Trample,Vigilance,P1P1
|
SVar:TrigPutCounter:DB$ PutCounter | UniqueType$ True | RandomType$ True | CounterType$ Flying,First Strike,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
|
|
||||||
SVar:PlayMain1:TRUE
|
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.
|
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.
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ ManaCost:3 R
|
|||||||
Types:Creature Cat Ape
|
Types:Creature Cat Ape
|
||||||
PT:4/3
|
PT:4/3
|
||||||
K:ETBReplacement:Other:CounterChoice
|
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: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.)
|
||||||
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
|
|
||||||
DeckHas:Ability$Counters
|
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.)
|
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.)
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ ManaCost:4 G
|
|||||||
Types:Creature Antelope Lizard
|
Types:Creature Antelope Lizard
|
||||||
PT:3/5
|
PT:3/5
|
||||||
K:ETBReplacement:Other:CounterChoice
|
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: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.
|
||||||
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
|
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Flycatcher Giraffid enters the battlefield with your choice of a vigilance counter or a reach counter on it.
|
Oracle:Flycatcher Giraffid enters the battlefield with your choice of a vigilance counter or a reach counter on it.
|
||||||
|
|||||||
@@ -3,9 +3,6 @@ ManaCost:1 B B
|
|||||||
Types:Creature Nightmare
|
Types:Creature Nightmare
|
||||||
PT:3/3
|
PT:3/3
|
||||||
K:ETBReplacement:Other:CounterChoice
|
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: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.
|
||||||
SVar:Menace:DB$ PutCounter | CounterType$ Menace | CounterNum$ 1 | ETB$ True | SpellDescription$ Menace
|
DeckHas:Ability$Counters|LifeGain
|
||||||
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
|
|
||||||
Oracle:Grimdancer enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink.
|
Oracle:Grimdancer enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink.
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ ManaCost:2 W
|
|||||||
Types:Creature Nightmare Squirrel
|
Types:Creature Nightmare Squirrel
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:ETBReplacement:Other:CounterChoice
|
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: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.
|
||||||
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
|
|
||||||
DeckHints:Ability$Counters
|
DeckHints:Ability$Counters
|
||||||
Oracle:Helica Glider enters the battlefield with your choice of a flying counter or a first strike counter on it.
|
Oracle:Helica Glider enters the battlefield with your choice of a flying counter or a first strike counter on it.
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
Name:Unexpected Fangs
|
Name:Unexpected Fangs
|
||||||
ManaCost:1 B
|
ManaCost:1 B
|
||||||
Types:Instant
|
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.
|
A:SP$ PutCounter | ValidTgts$ Creature | CounterTypes$ P1P1,Lifelink | 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|LifeGain
|
||||||
DeckHas:Ability$Counters
|
|
||||||
Oracle:Put a +1/+1 counter and a lifelink counter on target creature.
|
Oracle:Put a +1/+1 counter and a lifelink counter on target creature.
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -3,8 +3,6 @@ ManaCost:5 U
|
|||||||
Types:Creature Dinosaur
|
Types:Creature Dinosaur
|
||||||
PT:3/6
|
PT:3/6
|
||||||
K:ETBReplacement:Other:CounterChoice
|
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: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.
|
||||||
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
|
|
||||||
DeckHas:Ability$Counters
|
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.)
|
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.)
|
||||||
|
|||||||
@@ -1904,6 +1904,7 @@ lblChooseProliferateTarget=Wähle eine beliebige Anzahl bleibender Karten und/od
|
|||||||
lblDoYouWantPutCounter=Möchtest du die Marke legen?
|
lblDoYouWantPutCounter=Möchtest du die Marke legen?
|
||||||
lblChooseACreatureWithLeastToughness=Wähle eine Kreatur mit der geringsten Widerstandskraft
|
lblChooseACreatureWithLeastToughness=Wähle eine Kreatur mit der geringsten Widerstandskraft
|
||||||
lblSelectCounterTypeAddTo=Wähle Markentyp zum Hinzufügen
|
lblSelectCounterTypeAddTo=Wähle Markentyp zum Hinzufügen
|
||||||
|
lblSelectCounterType=Wähle Markentyp
|
||||||
lblHowManyCountersThis=Wie viele Marken möchtest du auf {0} legen?
|
lblHowManyCountersThis=Wie viele Marken möchtest du auf {0} legen?
|
||||||
lblChooseAnOpponent=Wähle Gegner
|
lblChooseAnOpponent=Wähle Gegner
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard=Möchtest du {0} +1/+1-Marken auf {1} legen?
|
lblDoYouWantPutTargetP1P1CountersOnCard=Möchtest du {0} +1/+1-Marken auf {1} legen?
|
||||||
|
|||||||
@@ -1905,6 +1905,7 @@ lblChooseProliferateTarget=Choose any number of permanents and/or players for pr
|
|||||||
lblDoYouWantPutCounter=Do you want to put the counter?
|
lblDoYouWantPutCounter=Do you want to put the counter?
|
||||||
lblChooseACreatureWithLeastToughness=Choose a creature with the least toughness
|
lblChooseACreatureWithLeastToughness=Choose a creature with the least toughness
|
||||||
lblSelectCounterTypeAddTo=Select counter type to add to
|
lblSelectCounterTypeAddTo=Select counter type to add to
|
||||||
|
lblSelectCounterType=Select counter type
|
||||||
lblHowManyCountersThis=How many counters do you want to put on {0}?
|
lblHowManyCountersThis=How many counters do you want to put on {0}?
|
||||||
lblChooseAnOpponent=Choose an opponent
|
lblChooseAnOpponent=Choose an opponent
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard=Do you want to put {0} +1/+1 counters on {1}?
|
lblDoYouWantPutTargetP1P1CountersOnCard=Do you want to put {0} +1/+1 counters on {1}?
|
||||||
|
|||||||
@@ -1903,6 +1903,7 @@ lblChooseProliferateTarget=Elige cualquier número de permanentes y/o jugadores
|
|||||||
lblDoYouWantPutCounter=¿Quieres poner el contador?
|
lblDoYouWantPutCounter=¿Quieres poner el contador?
|
||||||
lblChooseACreatureWithLeastToughness=Elige una criatura con la menor resistencia
|
lblChooseACreatureWithLeastToughness=Elige una criatura con la menor resistencia
|
||||||
lblSelectCounterTypeAddTo=Selecciona el tipo de contador para añadirlo a
|
lblSelectCounterTypeAddTo=Selecciona el tipo de contador para añadirlo a
|
||||||
|
lblSelectCounterType=Selecciona el tipo de contador
|
||||||
lblHowManyCountersThis=¿Cuántos contadores quieres poner en {0}?
|
lblHowManyCountersThis=¿Cuántos contadores quieres poner en {0}?
|
||||||
lblChooseAnOpponent=Elige un adversario
|
lblChooseAnOpponent=Elige un adversario
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard=¿Quieres poner {0} contadores +1/+1 en {1}?
|
lblDoYouWantPutTargetP1P1CountersOnCard=¿Quieres poner {0} contadores +1/+1 en {1}?
|
||||||
|
|||||||
@@ -1902,6 +1902,7 @@ lblChooseProliferateTarget=Scegli un numero qualsiasi di permanenti e/o giocator
|
|||||||
lblDoYouWantPutCounter=Vuoi aggiungere il segnalino?
|
lblDoYouWantPutCounter=Vuoi aggiungere il segnalino?
|
||||||
lblChooseACreatureWithLeastToughness=Scegli una creatura con la minor costituzione
|
lblChooseACreatureWithLeastToughness=Scegli una creatura con la minor costituzione
|
||||||
lblSelectCounterTypeAddTo=Scegli il tipo di segnalino da aggiungere
|
lblSelectCounterTypeAddTo=Scegli il tipo di segnalino da aggiungere
|
||||||
|
lblSelectCounterType=Scegli il tipo di segnalino
|
||||||
lblHowManyCountersThis=Quanti segnalini vuoi aggiungere a {0}?
|
lblHowManyCountersThis=Quanti segnalini vuoi aggiungere a {0}?
|
||||||
lblChooseAnOpponent=Scegli un avversario
|
lblChooseAnOpponent=Scegli un avversario
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard=Vuoi aggiungere {0} segnalino/i +1/+1 a {1}?
|
lblDoYouWantPutTargetP1P1CountersOnCard=Vuoi aggiungere {0} segnalino/i +1/+1 a {1}?
|
||||||
|
|||||||
@@ -1902,6 +1902,7 @@ lblChooseProliferateTarget=増殖を行う望む数のパーマネントやプ
|
|||||||
lblDoYouWantPutCounter=カウンターを置きますか?
|
lblDoYouWantPutCounter=カウンターを置きますか?
|
||||||
lblChooseACreatureWithLeastToughness=タフネスが一番低いクリーチャーを選ぶ
|
lblChooseACreatureWithLeastToughness=タフネスが一番低いクリーチャーを選ぶ
|
||||||
lblSelectCounterTypeAddTo=置けるカウンターの種類を選ぶ
|
lblSelectCounterTypeAddTo=置けるカウンターの種類を選ぶ
|
||||||
|
lblSelectCounterType=Select counter type
|
||||||
lblHowManyCounters={0}に何個のカウンターを置きますか?
|
lblHowManyCounters={0}に何個のカウンターを置きますか?
|
||||||
lblChooseAnOpponent=対戦相手一人を選ぶ
|
lblChooseAnOpponent=対戦相手一人を選ぶ
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard={1}の上に {0}個の +1/+1 カウンターを置きますか?
|
lblDoYouWantPutTargetP1P1CountersOnCard={1}の上に {0}個の +1/+1 カウンターを置きますか?
|
||||||
|
|||||||
@@ -1964,6 +1964,7 @@ lblChooseProliferateTarget=Escolha qualquer número de permanentes e/ou jogadore
|
|||||||
lblDoYouWantPutCounter=Você quer colocar o marcador?
|
lblDoYouWantPutCounter=Você quer colocar o marcador?
|
||||||
lblChooseACreatureWithLeastToughness=Escolha uma criatura com a menor resistência
|
lblChooseACreatureWithLeastToughness=Escolha uma criatura com a menor resistência
|
||||||
lblSelectCounterTypeAddTo=Selecione o tipo de marcador para adicionar a
|
lblSelectCounterTypeAddTo=Selecione o tipo de marcador para adicionar a
|
||||||
|
lblSelectCounterType=Selecione o tipo de marcador
|
||||||
lblHowManyCountersThis=Quantos marcadores você quer colocar em {0}?
|
lblHowManyCountersThis=Quantos marcadores você quer colocar em {0}?
|
||||||
lblChooseAnOpponent=Escolha um adversário
|
lblChooseAnOpponent=Escolha um adversário
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard=Você quer colocar {0} +1/+1 marcadores em {1}?
|
lblDoYouWantPutTargetP1P1CountersOnCard=Você quer colocar {0} +1/+1 marcadores em {1}?
|
||||||
|
|||||||
@@ -1906,6 +1906,7 @@ lblChooseProliferateTarget=选择任意数量的永久物和或牌手进行增
|
|||||||
lblDoYouWantPutCounter=你想要放置指示物吗?
|
lblDoYouWantPutCounter=你想要放置指示物吗?
|
||||||
lblChooseACreatureWithLeastToughness=选择防御力最小的生物
|
lblChooseACreatureWithLeastToughness=选择防御力最小的生物
|
||||||
lblSelectCounterTypeAddTo=选择指示物类型以添加到
|
lblSelectCounterTypeAddTo=选择指示物类型以添加到
|
||||||
|
lblSelectCounterType=Select counter type
|
||||||
lblHowManyCountersThis=你想要在{0}上放置多少个指示物?
|
lblHowManyCountersThis=你想要在{0}上放置多少个指示物?
|
||||||
lblChooseAnOpponent=选择一个对手
|
lblChooseAnOpponent=选择一个对手
|
||||||
lblDoYouWantPutTargetP1P1CountersOnCard=你想要放置{0}个+1+1指示物到{1}吗?
|
lblDoYouWantPutTargetP1P1CountersOnCard=你想要放置{0}个+1+1指示物到{1}吗?
|
||||||
|
|||||||
Reference in New Issue
Block a user