mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +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 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user