TriggerAttackerBlocked: add TriggeredDefender

This commit is contained in:
Hanmac
2019-02-10 07:42:18 +01:00
parent b853f34c9e
commit fcdf49bafd
3 changed files with 21 additions and 16 deletions

View File

@@ -10,9 +10,11 @@ import forge.game.trigger.TriggerType;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import com.google.common.collect.Lists;
import java.util.HashMap; import com.google.common.collect.Maps;
import java.util.List; import java.util.List;
import java.util.Map;
public class BecomesBlockedEffect extends SpellAbilityEffect { public class BecomesBlockedEffect extends SpellAbilityEffect {
@@ -38,10 +40,11 @@ public class BecomesBlockedEffect extends SpellAbilityEffect {
game.getCombat().setBlocked(c, true); game.getCombat().setBlocked(c, true);
if (!c.getDamageHistory().getCreatureGotBlockedThisCombat()) { if (!c.getDamageHistory().getCreatureGotBlockedThisCombat()) {
isCombatChanged = true; isCombatChanged = true;
final HashMap<String, Object> runParams = new HashMap<String, Object>(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Attacker", c); runParams.put("Attacker", c);
runParams.put("Blockers", new ArrayList<Card>()); runParams.put("Blockers", Lists.<Card>newArrayList());
runParams.put("NumBlockers", 0); runParams.put("NumBlockers", 0);
runParams.put("Defender", game.getCombat().getDefenderByAttacker(c));
runParams.put("DefendingPlayer", game.getCombat().getDefenderPlayerByAttacker(c)); runParams.put("DefendingPlayer", game.getCombat().getDefenderPlayerByAttacker(c));
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams, false);
} }

View File

@@ -722,6 +722,7 @@ public class PhaseHandler implements java.io.Serializable {
runParams.put("Attacker", a); runParams.put("Attacker", a);
runParams.put("Blockers", blockers); runParams.put("Blockers", blockers);
runParams.put("NumBlockers", blockers.size()); runParams.put("NumBlockers", blockers.size());
runParams.put("Defender", combat.getDefenderByAttacker(a));
runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(a)); runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(a));
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams, false);

View File

@@ -52,25 +52,25 @@ public class TriggerAttackerBlocked extends Trigger {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final boolean performTest(final Map<String, Object> runParams2) { public final boolean performTest(final Map<String, Object> runParams2) {
if (this.mapParams.containsKey("ValidCard")) { if (hasParam("ValidCard")) {
if (!matchesValid(runParams2.get("Attacker"), this.mapParams.get("ValidCard").split(","), if (!matchesValid(runParams2.get("Attacker"), getParam("ValidCard").split(","),
this.getHostCard())) { getHostCard())) {
return false; return false;
} }
} }
if (this.mapParams.containsKey("MinBlockers")) { if (hasParam("MinBlockers")) {
if ((int)runParams2.get("NumBlockers") < Integer.valueOf(this.mapParams.get("MinBlockers"))) { if ((int)runParams2.get("NumBlockers") < Integer.valueOf(getParam("MinBlockers"))) {
return false; return false;
} }
} }
if (this.mapParams.containsKey("ValidBlocker")) { if (hasParam("ValidBlocker")) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
int count = CardLists.getValidCardCount( int count = CardLists.getValidCardCount(
(Iterable<Card>) runParams2.get("Blockers"), (Iterable<Card>) runParams2.get("Blockers"),
this.mapParams.get("ValidBlocker"), getParam("ValidBlocker"),
this.getHostCard().getController(), this.getHostCard() getHostCard().getController(), getHostCard()
); );
if ( count == 0 ) { if ( count == 0 ) {
@@ -84,10 +84,11 @@ public class TriggerAttackerBlocked extends Trigger {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final void setTriggeringObjects(final SpellAbility sa) { public final void setTriggeringObjects(final SpellAbility sa) {
sa.setTriggeringObject("Attacker", this.getRunParams().get("Attacker")); sa.setTriggeringObject("Attacker", getRunParams().get("Attacker"));
sa.setTriggeringObject("Blockers", this.getRunParams().get("Blockers")); sa.setTriggeringObject("Blockers", getRunParams().get("Blockers"));
sa.setTriggeringObject("DefendingPlayer", this.getRunParams().get("DefendingPlayer")); sa.setTriggeringObject("Defender", getRunParams().get("Defender"));
sa.setTriggeringObject("NumBlockers", this.getRunParams().get("NumBlockers")); sa.setTriggeringObject("DefendingPlayer", getRunParams().get("DefendingPlayer"));
sa.setTriggeringObject("NumBlockers", getRunParams().get("NumBlockers"));
} }
@Override @Override