NEO: Fable of the Mirror-Breaker // Reflection of Kiki-Jiki and CopyPermanentEffect StackDescription improvement

This commit is contained in:
Tim Mocny
2022-02-05 05:38:40 +00:00
committed by Michael Kamensky
parent f7b61398fa
commit f87afd472f
3 changed files with 58 additions and 1 deletions

View File

@@ -1,7 +1,9 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.Arrays;
import java.util.List; import java.util.List;
import forge.util.Lang;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableBoolean;
@@ -43,10 +45,31 @@ public class CopyPermanentEffect extends TokenEffectBase {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final List<Card> tgtCards = getTargetCards(sa); final List<Card> tgtCards = getTargetCards(sa);
boolean justOne = tgtCards.size() == 1;
sb.append("Copy "); sb.append("Copy ");
sb.append(StringUtils.join(tgtCards, ", ")); sb.append(Lang.joinHomogenous(tgtCards));
if (sa.hasParam("AddKeywords")) {
final List<String> keywords = Lists.newArrayList();
keywords.addAll(Arrays.asList(sa.getParam("AddKeywords").split(" & ")));
sb.append(", except ").append(justOne ? "it has " : "they have ");
sb.append(Lang.joinHomogenous(keywords).toLowerCase());
}
sb.append("."); sb.append(".");
if (sa.hasParam("AtEOT")) {
String atEOT = sa.getParam("AtEOT");
String verb = "Sacrifice ";
if (atEOT.startsWith("Exile")) {
verb = "Exile ";
}
sb.append(" ").append(verb).append(justOne ? "it " : "them ").append("at ");
String when = "the beginning of the next end step.";
if (atEOT.endsWith("Combat")) {
when = "end of combat.";
}
sb.append(when);
}
return sb.toString(); return sb.toString();
} }

View File

@@ -0,0 +1,25 @@
Name:Fable of the Mirror-Breaker
ManaCost:2 R
Types:Enchantment Saga
K:Saga:3:DBToken,DBDiscard,DBTransform
SVar:DBToken:DB$ Token | TokenScript$ r_2_2_goblin_shaman_treasure | SpellDescription$ Create a 2/2 red Goblin Shaman creature token with "Whenever this creature attacks, create a Treasure token."
SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 2 | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ You may discard up two cards. If you do, draw that many cards.
SVar:DBDraw:DB$ Draw | NumCards$ Y | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Y:Remembered$Amount
SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control.
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AlternateMode:DoubleFaced
DeckHas:Ability$Token|Sacrifice|Discard & Type$Artifact|Treasure
Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI — Create a 2/2 red Goblin Shaman creature token with "Whenever this creature attacks, create a Treasure token."\nII — You may discard up two cards. If you do, draw that many cards.\nIII — Exile this Saga, then return it to the battlefield transformed under your control.
ALTERNATE
Name:Reflection of Kiki-Jiki
ManaCost:no cost
Colors:red
Types:Enchantment Creature Goblin Shaman
PT:2/2
A:AB$ CopyPermanent | Cost$ 1 T | ValidTgts$ Creature.YouCtrl+nonLegendary+Other | TgtPrompt$ Select another target nonlegendary creature you control | AddKeywords$ Haste | AtEOT$ Sacrifice | SpellDescription$ Create a token that's a copy of another target nonlegendary creature you control, except it has haste. Sacrifice it at the beginning of the next end step.
Oracle:{1}, {T}: Create a token that's a copy of another target nonlegendary creature you control, except it has haste. Sacrifice it at the beginning of the next end step.

View File

@@ -0,0 +1,9 @@
Name:Goblin Shaman Token
ManaCost:no cost
Types:Creature Goblin Shaman
Colors:red
PT:2/2
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever this creature attacks, create a Treasure token.
SVar:TrigToken:DB$ Token | TokenScript$ c_a_treasure_sac
SVar:HasAttackEffect:TRUE
Oracle:Whenever this creature attacks, create a Treasure token.