From 891f61701c9f55918cccbe6444f7caee154d0872 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Sat, 5 Jan 2019 20:52:40 +0100 Subject: [PATCH] Taps Trigger now flag for being used as Attacker --- .../src/main/java/forge/game/card/Card.java | 4 ++++ .../java/forge/game/phase/PhaseHandler.java | 2 +- .../java/forge/game/trigger/TriggerTaps.java | 22 ++++++++++++++----- .../java/forge/game/trigger/TriggerType.java | 1 - .../cardsfolder/upcoming/verity_circle.txt | 7 ++++++ 5 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/verity_circle.txt 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 0527766fcbe..c7c5a495107 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -3226,11 +3226,15 @@ public class Card extends GameEntity implements Comparable { } public final void tap() { + tap(false); + } + public final void tap(boolean attacker) { if (tapped) { return; } // Run triggers final Map runParams = Maps.newTreeMap(); runParams.put("Card", this); + runParams.put("Attacker", attacker); getGame().getTriggerHandler().runTrigger(TriggerType.Taps, runParams, false); setTapped(true); diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index 13995f9f4eb..4a113d7fa59 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -526,7 +526,7 @@ public class PhaseHandler implements java.io.Serializable { if (canAttack) { if (shouldTapForAttack) { - attacker.tap(); + attacker.tap(true); } } else { combat.removeFromCombat(attacker); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java b/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java index b1bff87bae1..44185a79ef7 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java @@ -28,7 +28,6 @@ import java.util.Map; *

* * @author Forge - * @version $Id$ */ public class TriggerTaps extends Trigger { @@ -50,15 +49,26 @@ public class TriggerTaps extends Trigger { /** {@inheritDoc} */ @Override - public final boolean performTest(final java.util.Map runParams2) { + public final boolean performTest(final Map runParams2) { final Card tapper = (Card) runParams2.get("Card"); - if (this.mapParams.containsKey("ValidCard")) { - if (!tapper.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null)) { + if (hasParam("ValidCard")) { + if (!tapper.isValid(getParam("ValidCard").split(","), getHostCard().getController(), + getHostCard(), null)) { return false; } } + if (hasParam("Attacker")) { + if ("True".equalsIgnoreCase(getParam("Attacker"))) { + if (!(Boolean)runParams2.get("Attacker")) { + return false; + } + } else if ("False".equalsIgnoreCase(getParam("Attacker"))) { + if ((Boolean)runParams2.get("Attacker")) { + return false; + } + } + } return true; } @@ -67,7 +77,7 @@ public class TriggerTaps extends Trigger { /** {@inheritDoc} */ @Override public final void setTriggeringObjects(final SpellAbility sa) { - sa.setTriggeringObject("Card", this.getRunParams().get("Card")); + sa.setTriggeringObject("Card", getRunParams().get("Card")); } @Override 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 53ccf1c3df3..0dfb2d1e3b5 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -80,7 +80,6 @@ public enum TriggerType { SpellAbilityCast(TriggerSpellAbilityCast.class), SpellCast(TriggerSpellAbilityCast.class), Surveil(TriggerSurveil.class), - Tapped(TriggerTaps.class), Taps(TriggerTaps.class), TapsForMana(TriggerTapsForMana.class), Transformed(TriggerTransformed.class), diff --git a/forge-gui/res/cardsfolder/upcoming/verity_circle.txt b/forge-gui/res/cardsfolder/upcoming/verity_circle.txt new file mode 100644 index 00000000000..e7e0786babc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/verity_circle.txt @@ -0,0 +1,7 @@ +Name:Verity Circle +ManaCost:2 U +Types:Enchantment +T:Mode$ Taps | ValidCard$ Creature.OppCtrl | Attacker$ False | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a creature an opponent controls becomes tapped, if it isn't being declared as an attacker, you may draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +A:AB$ Tap | Cost$ 4 U | ValidTgts$ Creature.withoutFlying | TgtPrompt$ Select target creature without flying | SpellDescription$ Tap target creature without flying. +Oracle:Whenever a creature an opponent controls becomes tapped, if it isn't being declared as an attacker, you may draw a card.\n{4}{U}: Tap target creature without flying.