mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 17:58:01 +00:00
TriggerAttackerBlocked: add TriggeredDefender
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user