mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
NEO: Fable of the Mirror-Breaker // Reflection of Kiki-Jiki and CopyPermanentEffect StackDescription improvement
This commit is contained in:
committed by
Michael Kamensky
parent
f7b61398fa
commit
f87afd472f
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user