From ea28c67ffde529ffcb7267a65e733b4758a7439f Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 29 Jun 2017 16:24:12 +0000 Subject: [PATCH] - A temporary hacky fix to make it possible to disable the damage prevention replacement effects when a card loses the relevant keyword (e.g. Glittering Lion). - Most likely won't work in certain corner cases, so it's in until a rewrite is done to properly support this. --- .../src/main/java/forge/game/card/CardFactoryUtil.java | 2 +- .../java/forge/game/replacement/ReplacementHandler.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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 f77a0481c2e..214746b0563 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -3513,7 +3513,7 @@ public class CardFactoryUtil { if (isCombat) { rep += "| IsCombat$ True"; } - rep += "| Secondary$ True | Description$ " + keyword; + rep += "| Secondary$ True | TiedToKeyword$ " + keyword + " | Description$ " + keyword; if (from) { String fromRep = rep + " | ValidSource$ Card.Self"; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java index 050ff7fa3e8..ea1600ca58e 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java @@ -110,6 +110,15 @@ public class ReplacementHandler { // getting hit by mass removal should still produce tokens). Zone cardZone = "True".equals(replacementEffect.getMapParams().get("CheckSelfLKIZone")) ? game.getChangeZoneLKIInfo(crd).getLastKnownZone() : game.getZoneOf(crd); + // Replacement effects that are tied to keywords (e.g. damage prevention effects - if the keyword is removed, the replacement + // effect should be inactive) + if (replacementEffect.hasParam("TiedToKeyword")) { + String kw = replacementEffect.getParam("TiedToKeyword"); + if (!crd.hasKeyword(kw)) { + continue; + } + } + if (!replacementEffect.hasRun() && (layer == null || replacementEffect.getLayer() == layer) && replacementEffect.requirementsCheck(game)