package forge.card.trigger; import forge.Card; import forge.card.spellability.SpellAbility; import java.util.HashMap; import java.util.Map; /** * <p>Trigger_BecomesTarget class.</p> * * @author Forge * @version $Id: $ * @since 1.0.15 */ public class Trigger_BecomesTarget extends Trigger { /** * <p>Constructor for Trigger_BecomesTarget.</p> * * @param params a {@link java.util.HashMap} object. * @param host a {@link forge.Card} object. */ public Trigger_BecomesTarget(HashMap<String, String> params, Card host) { super(params, host); } /** {@inheritDoc} */ @Override public boolean performTest(Map<String, Object> runParams) { if (mapParams.containsKey("SourceType")) { SpellAbility sa = (SpellAbility) runParams.get("SourceSA"); if (mapParams.get("SourceType").equalsIgnoreCase("spell")) { if (!sa.isSpell()) { return false; } } else if (mapParams.get("SourceType").equalsIgnoreCase("ability")) { if (!sa.isAbility()) { return false; } } } if (mapParams.containsKey("ValidSource")) { if (!matchesValid(((SpellAbility) runParams.get("SourceSA")).getSourceCard(), mapParams.get("ValidSource").split(","), hostCard)) { return false; } } if (mapParams.containsKey("ValidTarget")) { if (!matchesValid(runParams.get("Target"), mapParams.get("ValidTarget").split(","), hostCard)) { return false; } } return true; } /** {@inheritDoc} */ @Override public Trigger getCopy() { Trigger copy = new Trigger_BecomesTarget(mapParams, hostCard); if (overridingAbility != null) { copy.setOverridingAbility(overridingAbility); } copy.setName(name); copy.setID(ID); return copy; } /** {@inheritDoc} */ @Override public void setTriggeringObjects(SpellAbility sa) { sa.setTriggeringObject("SourceSA", runParams.get("SourceSA")); sa.setTriggeringObject("Source", ((SpellAbility) runParams.get("SourceSA")).getSourceCard()); sa.setTriggeringObject("Target", runParams.get("Target")); } }