Taps Trigger now flag for being used as Attacker

This commit is contained in:
Hanmac
2019-01-05 20:52:40 +01:00
parent e35f5098b9
commit 891f61701c
5 changed files with 28 additions and 8 deletions

View File

@@ -3226,11 +3226,15 @@ public class Card extends GameEntity implements Comparable<Card> {
} }
public final void tap() { public final void tap() {
tap(false);
}
public final void tap(boolean attacker) {
if (tapped) { return; } if (tapped) { return; }
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newTreeMap(); final Map<String, Object> runParams = Maps.newTreeMap();
runParams.put("Card", this); runParams.put("Card", this);
runParams.put("Attacker", attacker);
getGame().getTriggerHandler().runTrigger(TriggerType.Taps, runParams, false); getGame().getTriggerHandler().runTrigger(TriggerType.Taps, runParams, false);
setTapped(true); setTapped(true);

View File

@@ -526,7 +526,7 @@ public class PhaseHandler implements java.io.Serializable {
if (canAttack) { if (canAttack) {
if (shouldTapForAttack) { if (shouldTapForAttack) {
attacker.tap(); attacker.tap(true);
} }
} else { } else {
combat.removeFromCombat(attacker); combat.removeFromCombat(attacker);

View File

@@ -28,7 +28,6 @@ import java.util.Map;
* </p> * </p>
* *
* @author Forge * @author Forge
* @version $Id$
*/ */
public class TriggerTaps extends Trigger { public class TriggerTaps extends Trigger {
@@ -50,15 +49,26 @@ public class TriggerTaps extends Trigger {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final boolean performTest(final java.util.Map<String, Object> runParams2) { public final boolean performTest(final Map<String, Object> runParams2) {
final Card tapper = (Card) runParams2.get("Card"); final Card tapper = (Card) runParams2.get("Card");
if (this.mapParams.containsKey("ValidCard")) { if (hasParam("ValidCard")) {
if (!tapper.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), if (!tapper.isValid(getParam("ValidCard").split(","), getHostCard().getController(),
this.getHostCard(), null)) { getHostCard(), null)) {
return false; 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; return true;
} }
@@ -67,7 +77,7 @@ public class TriggerTaps extends Trigger {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final void setTriggeringObjects(final SpellAbility sa) { public final void setTriggeringObjects(final SpellAbility sa) {
sa.setTriggeringObject("Card", this.getRunParams().get("Card")); sa.setTriggeringObject("Card", getRunParams().get("Card"));
} }
@Override @Override

View File

@@ -80,7 +80,6 @@ public enum TriggerType {
SpellAbilityCast(TriggerSpellAbilityCast.class), SpellAbilityCast(TriggerSpellAbilityCast.class),
SpellCast(TriggerSpellAbilityCast.class), SpellCast(TriggerSpellAbilityCast.class),
Surveil(TriggerSurveil.class), Surveil(TriggerSurveil.class),
Tapped(TriggerTaps.class),
Taps(TriggerTaps.class), Taps(TriggerTaps.class),
TapsForMana(TriggerTapsForMana.class), TapsForMana(TriggerTapsForMana.class),
Transformed(TriggerTransformed.class), Transformed(TriggerTransformed.class),

View File

@@ -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.