From b0584d4499bd6aca46df085a4cd76f83a5d44983 Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 17 Aug 2017 11:50:21 +0000 Subject: [PATCH] - Fixed Hidden Agenda conspiracy cards crashing the game and their reveal ability not working. --- .../src/main/java/forge/game/card/CardFactoryUtil.java | 2 +- .../forge/game/spellability/SpellAbilityRestriction.java | 5 +++++ 2 files changed, 6 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 be254ac5e81..4734c346466 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -199,7 +199,7 @@ public class CardFactoryUtil { } private static SpellAbility abilityRevealHiddenAgenda(final Card sourceCard) { - String ab = "ST$ SetState" + String ab = "ST$ SetState | Cost$ 0" + " | ConditionDefined$ Self | ConditionPresent$ Card.faceDown+inZoneCommand" + " | HiddenAgenda$ True" + " | Mode$ TurnFace | SpellDescription$ Reveal this Hidden Agenda at any time."; diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java index 3b90e379bbf..91cf475ef61 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java @@ -220,6 +220,11 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { if (cardZone == null || this.getZone() == null || !cardZone.is(this.getZone())) { // If Card is not in the default activating zone, do some additional checks + + // A conspiracy with hidden agenda: reveal at any time + if (cardZone != null && cardZone.is(ZoneType.Command) && sa.hasParam("HiddenAgenda")) { + return true; + } // Not a Spell, or on Battlefield, return false if (!sa.isSpell() || (cardZone != null && ZoneType.Battlefield.equals(cardZone.getZoneType())) || (this.getZone() != null && !this.getZone().equals(ZoneType.Hand))) {