diff --git a/forge-game/src/main/java/forge/game/card/CardZoneTable.java b/forge-game/src/main/java/forge/game/card/CardZoneTable.java index f0e9bb8d387..12b09e2e65a 100644 --- a/forge-game/src/main/java/forge/game/card/CardZoneTable.java +++ b/forge-game/src/main/java/forge/game/card/CardZoneTable.java @@ -56,7 +56,7 @@ public class CardZoneTable extends ForwardingTable runParams = AbilityKey.newMap(); runParams.put(AbilityKey.Cards, new CardZoneTable(this)); runParams.put(AbilityKey.Cause, cause); - game.getTriggerHandler().runTrigger(TriggerType.ChangesZoneAll, AbilityKey.newMap(runParams), false); + game.getTriggerHandler().runTrigger(TriggerType.ChangesZoneAll, runParams, false); } } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 3e3a90e74f0..e6c7dc253a7 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1603,6 +1603,12 @@ public class Player extends GameEntity implements Comparable { } } + // MilledAll trigger + final Map runParams = AbilityKey.newMap(); + runParams.put(AbilityKey.Cards, milled); + runParams.put(AbilityKey.Player, this); + game.getTriggerHandler().runTrigger(TriggerType.MilledAll, runParams, false); + return milled; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerMilledAll.java b/forge-game/src/main/java/forge/game/trigger/TriggerMilledAll.java new file mode 100644 index 00000000000..fa2fd2ea73c --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerMilledAll.java @@ -0,0 +1,71 @@ +package forge.game.trigger; + +import forge.game.ability.AbilityKey; +import forge.game.card.Card; +import forge.game.card.CardCollection; +import forge.game.card.CardLists; +import forge.game.spellability.SpellAbility; +import forge.util.Localizer; + +import java.util.Map; + +/** + *

+ * TriggerMilledAll class. + *

+ */ +public class TriggerMilledAll extends Trigger { + + /** + *

+ * Constructor for TriggerMilledAll + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerMilledAll (final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /** {@inheritDoc} + * @param runParams*/ + @Override + public final boolean performTest(final Map runParams) { + + if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) { + return false; + } + if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Cards))) { + return false; + } + + return true; + } + + /** {@inheritDoc} */ + @Override + public final void setTriggeringObjects(final SpellAbility sa, Map runParams) { + CardCollection cards = (CardCollection) runParams.get(AbilityKey.Cards); + + if (hasParam("ValidCard")) { + cards = CardLists.getValidCards(cards, getParam("ValidCard"), getHostCard().getController(), + getHostCard(), this); + } + + sa.setTriggeringObject(AbilityKey.Cards, cards); + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Player); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + StringBuilder sb = new StringBuilder(); + sb.append(Localizer.getInstance().getMessage("lblPlayer")).append(": "); + sb.append(sa.getTriggeringObject(AbilityKey.Player)); + return sb.toString(); + } +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index 4f7c94c9ba8..2490cb3b9aa 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -80,6 +80,7 @@ public enum TriggerType { LifeGained(TriggerLifeGained.class), LifeLost(TriggerLifeLost.class), LosesGame(TriggerLosesGame.class), + MilledAll(TriggerMilledAll.class), Mutates(TriggerMutates.class), NewGame(TriggerNewGame.class), PayCumulativeUpkeep(TriggerPayCumulativeUpkeep.class),