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 java.util.ArrayList;
import java.util.HashMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
public class BecomesBlockedEffect extends SpellAbilityEffect {
@@ -38,10 +40,11 @@ public class BecomesBlockedEffect extends SpellAbilityEffect {
game.getCombat().setBlocked(c, true);
if (!c.getDamageHistory().getCreatureGotBlockedThisCombat()) {
isCombatChanged = true;
final HashMap<String, Object> runParams = new HashMap<String, Object>();
final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Attacker", c);
runParams.put("Blockers", new ArrayList<Card>());
runParams.put("Blockers", Lists.<Card>newArrayList());
runParams.put("NumBlockers", 0);
runParams.put("Defender", game.getCombat().getDefenderByAttacker(c));
runParams.put("DefendingPlayer", game.getCombat().getDefenderPlayerByAttacker(c));
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("Blockers", blockers);
runParams.put("NumBlockers", blockers.size());
runParams.put("Defender", combat.getDefenderByAttacker(a));
runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(a));
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams, false);

View File

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