diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index c722c059fc5..532fb07a2b2 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1433,7 +1433,8 @@ public class Card extends GameEntity implements Comparable { || keyword.startsWith("ETBReplacement") || keyword.startsWith("MayEffectFromOpeningHand") || keyword.equals("Undaunted")) { } else if (keyword.startsWith("Provoke") || keyword.startsWith("Devour") || keyword.equals("Unleash") - || keyword.startsWith("Soulbond") || keyword.equals("Partner") || keyword.equals("Retrace")) { + || keyword.startsWith("Soulbond") || keyword.equals("Partner") || keyword.equals("Retrace") + || keyword.equals("Living Weapon")) { sbLong.append(keyword + " (" + Keyword.getInstance(keyword).getReminderText() + ")"); } else if (keyword.startsWith("Fabricate") || keyword.startsWith("Soulshift") || keyword.startsWith("Crew") || keyword.startsWith("Tribute")) { 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 9ed5bb0b622..1da5e667e59 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -2290,30 +2290,7 @@ public class CardFactoryUtil { card.setSVar("MyriadCleanup", dbString4); } else if (keyword.equals("Living Weapon")) { - card.removeIntrinsicKeyword(keyword); - - final StringBuilder sbTrig = new StringBuilder(); - sbTrig.append("Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | "); - sbTrig.append("ValidCard$ Card.Self | Execute$ TrigGerm | TriggerDescription$ "); - sbTrig.append("Living Weapon (When this Equipment enters the battlefield, "); - sbTrig.append("put a 0/0 black Germ creature token onto the battlefield, then attach this to it.)"); - - final StringBuilder sbGerm = new StringBuilder(); - sbGerm.append("DB$ Token | TokenAmount$ 1 | TokenName$ Germ | TokenTypes$ Creature,Germ | RememberTokens$ True | "); - sbGerm.append("TokenOwner$ You | TokenColors$ Black | TokenPower$ 0 | TokenToughness$ 0 | TokenImage$ B 0 0 Germ | SubAbility$ DBGermAttach"); - - final StringBuilder sbAttach = new StringBuilder(); - sbAttach.append("DB$ Attach | Defined$ Remembered | SubAbility$ DBGermClear"); - - final StringBuilder sbClear = new StringBuilder(); - sbClear.append("DB$ Cleanup | ClearRemembered$ True"); - - card.setSVar("TrigGerm", sbGerm.toString()); - card.setSVar("DBGermAttach", sbAttach.toString()); - card.setSVar("DBGermClear", sbClear.toString()); - - final Trigger etbTrigger = TriggerHandler.parseTrigger(sbTrig.toString(), card, true); - card.addTrigger(etbTrigger); + addTriggerAbility(keyword, card, null); } else if (keyword.equals("Epic")) { addSpellAbility(keyword, card, null); @@ -2894,6 +2871,36 @@ public class CardFactoryUtil { if (!intrinsic) { kws.addTrigger(cardTrigger); } + } else if (keyword.equals("Living Weapon")) { + final StringBuilder sbTrig = new StringBuilder(); + sbTrig.append("Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | "); + sbTrig.append("ValidCard$ Card.Self | Secondary$ True | TriggerDescription$ "); + sbTrig.append("Living Weapon (" + Keyword.getInstance(keyword).getReminderText() + ")"); + + final StringBuilder sbGerm = new StringBuilder(); + sbGerm.append("DB$ Token | TokenAmount$ 1 | TokenName$ Germ | TokenTypes$ Creature,Germ | RememberTokens$ True | "); + sbGerm.append("TokenOwner$ You | TokenColors$ Black | TokenPower$ 0 | TokenToughness$ 0 | TokenImage$ B 0 0 Germ"); + + final SpellAbility saGerm = AbilityFactory.getAbility(sbGerm.toString(), card); + + final String sbAttach = "DB$ Attach | Defined$ Remembered"; + final AbilitySub saAttach = (AbilitySub) AbilityFactory.getAbility(sbAttach, card); + saGerm.setSubAbility(saAttach); + + final String sbClear = "DB$ Cleanup | ClearRemembered$ True"; + final AbilitySub saClear = (AbilitySub) AbilityFactory.getAbility(sbClear, card); + saAttach.setSubAbility(saClear); + + final Trigger etbTrigger = TriggerHandler.parseTrigger(sbTrig.toString(), card, intrinsic); + + etbTrigger.setOverridingAbility(saGerm); + + final Trigger cardTrigger = card.addTrigger(etbTrigger); + + if (!intrinsic) { + saGerm.setIntrinsic(false); + kws.addTrigger(cardTrigger); + } } else if (keyword.startsWith("Madness")) { // Set Madness Triggers final String[] k = keyword.split(":");