From c4059005df3d7faa69f3a3fb95795c051526ab3c Mon Sep 17 00:00:00 2001 From: Hanmac Date: Sat, 23 Jul 2016 14:20:41 +0000 Subject: [PATCH] CardFactoryUtil: makeEtbCounter now works without SVar --- .../java/forge/game/card/CardFactoryUtil.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 41223f003b0..96e9839cffc 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -2860,24 +2860,27 @@ public class CardFactoryUtil { desc = !splitkw[4].equals("no desc") ? splitkw[4] : ""; } String abStr = "DB$ PutCounter | Defined$ Self | CounterType$ " + splitkw[1] - + " | ETB$ True | CounterNum$ " + amount + " | SubAbility$ ETBCounterDBSVar"; - String dbStr = "DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield" - + "| Defined$ ReplacedCard"; - try { - Integer.parseInt(amount); - } - catch (NumberFormatException ignored) { + + " | ETB$ True | CounterNum$ " + amount; + + if (!StringUtils.isNumeric(amount)) { abStr += " | References$ " + amount; } - card.setSVar("ETBCounterSVar", abStr); - card.setSVar("ETBCounterDBSVar", dbStr); + + SpellAbility sa = AbilityFactory.getAbility(abStr, card); + SpellAbility sub = setupETBReplacementAbility(sa); + if (!intrinsic) { + sa.setIntrinsic(false); + sub.setIntrinsic(false); + } String repeffstr = "Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield " - + "| ReplaceWith$ ETBCounterSVar | Description$ " + desc + (!extraparams.equals("") ? " | " + extraparams : ""); + + "| Description$ " + desc + (!extraparams.equals("") ? " | " + extraparams : ""); ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, card, intrinsic); re.setLayer(ReplacementLayer.Other); + re.setOverridingAbility(sa); + return card.addReplacementEffect(re); } @@ -3437,8 +3440,10 @@ public class CardFactoryUtil { } private static final Map emptyMap = new TreeMap(); - public static void setupETBReplacementAbility(SpellAbility sa) { - sa.appendSubAbility(new AbilitySub(ApiType.InternalEtbReplacement, sa.getHostCard(), null, emptyMap)); + public static SpellAbility setupETBReplacementAbility(SpellAbility sa) { + AbilitySub as = new AbilitySub(ApiType.InternalEtbReplacement, sa.getHostCard(), null, emptyMap); + sa.appendSubAbility(as); + return as; // ETBReplacementMove(sa.getHostCard(), null)); }