From 15b52a1a2c4e99bcff0a0e3b5de91aa3bd1cfe97 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 24 Dec 2021 14:25:58 -0500 Subject: [PATCH] add IsForetold trigger --- .../java/forge/game/card/CardFactoryUtil.java | 2 + .../forge/game/trigger/TriggerIsForetold.java | 74 +++++++++++++++++++ .../java/forge/game/trigger/TriggerType.java | 1 + 3 files changed, 77 insertions(+) create mode 100644 forge-game/src/main/java/forge/game/trigger/TriggerIsForetold.java 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 4e6c214bbab..1e4af37ddbf 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -26,6 +26,7 @@ import java.util.Map.Entry; import java.util.Set; import forge.game.event.GameEventCardForetold; +import forge.game.trigger.TriggerType; import org.apache.commons.lang3.StringUtils; import com.google.common.base.Predicate; @@ -2892,6 +2893,7 @@ public class CardFactoryUtil { final Game game = getHostCard().getGame(); final Card c = game.getAction().exile(getHostCard(), this); c.setForetold(true); + game.getTriggerHandler().runTrigger(TriggerType.IsForetold, AbilityKey.mapFromCard(c), false); c.setForetoldThisTurn(true); c.turnFaceDown(true); // look at the exiled card diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerIsForetold.java b/forge-game/src/main/java/forge/game/trigger/TriggerIsForetold.java new file mode 100644 index 00000000000..8f7150e4a46 --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerIsForetold.java @@ -0,0 +1,74 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2021 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.game.trigger; + +import java.util.Map; + +import forge.game.ability.AbilityKey; +import forge.game.card.Card; +import forge.game.card.CardState; +import forge.game.spellability.SpellAbility; +import forge.util.Localizer; + +/** + *

+ * Trigger_IsForetold class. + *

+ * (Mainly copied from TriggerBecomeMonstrous) + */ +public class TriggerIsForetold extends Trigger { + + /** + *

+ * Constructor for Trigger_IsForetold. + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerIsForetold(Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /** {@inheritDoc} + * @param runParams*/ + @Override + public final boolean performTest(Map runParams) { + if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) { + return false; + } + + return true; + } + + /** {@inheritDoc} */ + @Override + public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + //nothing here because foretelling is secretive - generally will be Static anyway + return ""; + } +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index 5bf2ceac1b9..59fd2079ed6 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -73,6 +73,7 @@ public enum TriggerType { Foretell(TriggerForetell.class), Immediate(TriggerImmediate.class), Investigated(TriggerInvestigated.class), + IsForetold(TriggerIsForetold.class), LandPlayed(TriggerLandPlayed.class), LifeGained(TriggerLifeGained.class), LifeLost(TriggerLifeLost.class),