rename runTrigger to runTriggerOld and add new runTrigger method

This commit is contained in:
Ryan1729
2019-09-03 22:52:38 -06:00
parent e052c34a05
commit ef5b7e902b
37 changed files with 154 additions and 113 deletions

View File

@@ -25,6 +25,7 @@ import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.AbilityManaPart; import forge.game.spellability.AbilityManaPart;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerKey;
import forge.game.trigger.TriggerType; import forge.game.trigger.TriggerType;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -719,10 +720,10 @@ public abstract class GameState {
for (final Card c : combat.getAttackers()) { for (final Card c : combat.getAttackers()) {
attackedTarget.add(combat.getDefenderByAttacker(c)); attackedTarget.add(combat.getDefenderByAttacker(c));
} }
final Map<String, Object> runParams = Maps.newHashMap(); final Map<TriggerKey, Object> runParams = Maps.newEnumMap(TriggerKey.class);
runParams.put("Attackers", combat.getAttackers()); runParams.put(TriggerKey.Attackers, combat.getAttackers());
runParams.put("AttackingPlayer", combat.getAttackingPlayer()); runParams.put(TriggerKey.AttackingPlayer, combat.getAttackingPlayer());
runParams.put("AttackedTarget", attackedTarget); runParams.put(TriggerKey.AttackedTarget, attackedTarget);
game.getTriggerHandler().runTrigger(TriggerType.AttackersDeclared, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.AttackersDeclared, runParams, false);
} }

View File

@@ -715,7 +715,7 @@ public class Game {
final Map<String, Object> runParams = new TreeMap<String, Object>(); final Map<String, Object> runParams = new TreeMap<String, Object>();
runParams.put("Player", p); runParams.put("Player", p);
getTriggerHandler().runTrigger(TriggerType.LosesGame, runParams, false); getTriggerHandler().runTriggerOld(TriggerType.LosesGame, runParams, false);
} }
/** /**

View File

@@ -411,7 +411,7 @@ public class GameAction {
runParams.putAll(params); runParams.putAll(params);
} }
game.getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams, true); game.getTriggerHandler().runTriggerOld(TriggerType.ChangesZone, runParams, true);
if (zoneFrom != null && zoneFrom.is(ZoneType.Battlefield) && !zoneFrom.getPlayer().equals(zoneTo.getPlayer())) { if (zoneFrom != null && zoneFrom.is(ZoneType.Battlefield) && !zoneFrom.getPlayer().equals(zoneTo.getPlayer())) {
final Map<String, Object> runParams2 = Maps.newHashMap(); final Map<String, Object> runParams2 = Maps.newHashMap();
runParams2.put("Card", lastKnownInfo); runParams2.put("Card", lastKnownInfo);
@@ -419,7 +419,7 @@ public class GameAction {
if(params != null) { if(params != null) {
runParams2.putAll(params); runParams2.putAll(params);
} }
game.getTriggerHandler().runTrigger(TriggerType.ChangesController, runParams2, false); game.getTriggerHandler().runTriggerOld(TriggerType.ChangesController, runParams2, false);
} }
// AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); // AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll();
@@ -602,7 +602,7 @@ public class GameAction {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", c); runParams.put("Card", c);
runParams.put("OriginalController", original); runParams.put("OriginalController", original);
game.getTriggerHandler().runTrigger(TriggerType.ChangesController, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.ChangesController, runParams, false);
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
for (Player p : game.getPlayers()) { for (Player p : game.getPlayers()) {
@@ -717,7 +717,7 @@ public class GameAction {
runParams.putAll(params); runParams.putAll(params);
} }
game.getTriggerHandler().runTrigger(TriggerType.Exiled, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Exiled, runParams, false);
return copied; return copied;
} }
@@ -909,9 +909,9 @@ public class GameAction {
// in that case Always trigger should not Run // in that case Always trigger should not Run
if (preList.isEmpty()) { if (preList.isEmpty()) {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
game.getTriggerHandler().runTrigger(TriggerType.Always, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Always, runParams, false);
game.getTriggerHandler().runTrigger(TriggerType.Immediate, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Immediate, runParams, false);
} }
// Update P/T and type in the view only once after all the cards have been processed, to avoid flickering // Update P/T and type in the view only once after all the cards have been processed, to avoid flickering
@@ -1433,7 +1433,7 @@ public class GameAction {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", c); runParams.put("Card", c);
runParams.put("Causer", activator); runParams.put("Causer", activator);
game.getTriggerHandler().runTrigger(TriggerType.Destroyed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Destroyed, runParams, false);
final Card sacrificed = sacrificeDestroy(c, sa, table); final Card sacrificed = sacrificeDestroy(c, sa, table);
return sacrificed != null; return sacrificed != null;
@@ -1611,7 +1611,7 @@ public class GameAction {
// Run Trigger beginning of the game // Run Trigger beginning of the game
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
game.getTriggerHandler().runTrigger(TriggerType.NewGame, runParams, true); game.getTriggerHandler().runTriggerOld(TriggerType.NewGame, runParams, true);
//</THIS CODE WILL WORK WITH PHASE = NULL> //</THIS CODE WILL WORK WITH PHASE = NULL>
@@ -1776,7 +1776,7 @@ public class GameAction {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", p); runParams.put("Player", p);
game.getTriggerHandler().runTrigger(TriggerType.BecomeMonarch, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomeMonarch, runParams, false);
} }
// Make scry an action function so that it can be used for mulligans (with a null cause) // Make scry an action function so that it can be used for mulligans (with a null cause)
@@ -1838,7 +1838,7 @@ public class GameAction {
// set up triggers (but not actually do them until later) // set up triggers (but not actually do them until later)
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", p); runParams.put("Player", p);
game.getTriggerHandler().runTrigger(TriggerType.Scry, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Scry, runParams, false);
} }
} }
} }

View File

@@ -220,7 +220,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable {
runParams.put("DamageSource", source); runParams.put("DamageSource", source);
runParams.put("IsCombatDamage", isCombat); runParams.put("IsCombatDamage", isCombat);
getGame().getTriggerHandler().runTrigger(TriggerType.DamagePrevented, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.DamagePrevented, runParams, false);
} }
return restDamage; return restDamage;

View File

@@ -49,7 +49,7 @@ public class GameEntityCounterTable extends ForwardingTable<GameEntity, CounterT
if (!isEmpty()) { if (!isEmpty()) {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Objects", this); runParams.put("Objects", this);
game.getTriggerHandler().runTrigger(TriggerType.CounterAddedAll, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.CounterAddedAll, runParams, false);
} }
} }
} }

View File

@@ -39,7 +39,7 @@ public enum PlanarDice {
HashMap<String,Object> runParams = new HashMap<String,Object>(); HashMap<String,Object> runParams = new HashMap<String,Object>();
runParams.put("Player", roller); runParams.put("Player", roller);
runParams.put("Result", trigRes); runParams.put("Result", trigRes);
roller.getGame().getTriggerHandler().runTrigger(TriggerType.PlanarDice, runParams,false); roller.getGame().getTriggerHandler().runTriggerOld(TriggerType.PlanarDice, runParams,false);
return res; return res;

View File

@@ -42,7 +42,7 @@ public class AbandonEffect extends SpellAbilityEffect {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Scheme", source); runParams.put("Scheme", source);
game.getTriggerHandler().runTrigger(TriggerType.Abandoned, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Abandoned, runParams, false);
} }
} }

View File

@@ -46,7 +46,7 @@ public class BecomesBlockedEffect extends SpellAbilityEffect {
runParams.put("NumBlockers", 0); runParams.put("NumBlockers", 0);
runParams.put("Defender", game.getCombat().getDefenderByAttacker(c)); 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().runTriggerOld(TriggerType.AttackerBlocked, runParams, false);
} }
} }
} }

View File

@@ -56,12 +56,12 @@ public class BlockEffect extends SpellAbilityEffect {
Map<String, Object> runParams = Maps.newHashMap(); Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Attacker", attacker); runParams.put("Attacker", attacker);
runParams.put("Blocker", blocker); runParams.put("Blocker", blocker);
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlockedByCreature, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.AttackerBlockedByCreature, runParams, false);
runParams = Maps.newHashMap(); runParams = Maps.newHashMap();
runParams.put("Blocker", blocker); runParams.put("Blocker", blocker);
runParams.put("Attackers", attacker); runParams.put("Attackers", attacker);
game.getTriggerHandler().runTrigger(TriggerType.Blocks, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Blocks, runParams, false);
} }
attacker.getDamageHistory().setCreatureGotBlockedThisCombat(true); attacker.getDamageHistory().setCreatureGotBlockedThisCombat(true);
@@ -72,7 +72,7 @@ public class BlockEffect extends SpellAbilityEffect {
runParams.put("NumBlockers", blockers.size()); runParams.put("NumBlockers", blockers.size());
runParams.put("Defender", combat.getDefenderByAttacker(attacker)); runParams.put("Defender", combat.getDefenderByAttacker(attacker));
runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(attacker)); runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(attacker));
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.AttackerBlocked, runParams, false);
combat.orderBlockersForDamageAssignment(attacker, new CardCollection(blockers)); combat.orderBlockersForDamageAssignment(attacker, new CardCollection(blockers));
} }

View File

@@ -82,7 +82,7 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", sa.getActivatingPlayer()); runParams.put("Player", sa.getActivatingPlayer());
runParams.put("Target", tgtPlayers); runParams.put("Target", tgtPlayers);
game.getTriggerHandler().runTrigger(TriggerType.SearchedLibrary, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.SearchedLibrary, runParams, false);
} }
if (origin.contains(ZoneType.Hand) && sa.hasParam("Search")) { if (origin.contains(ZoneType.Hand) && sa.hasParam("Search")) {
CardCollection handCards = CardLists.filterControlledBy(CardLists.getValidCards(cards, "Card.inZoneHand", sa.getActivatingPlayer(), source), CardCollection handCards = CardLists.filterControlledBy(CardLists.getValidCards(cards, "Card.inZoneHand", sa.getActivatingPlayer(), source),

View File

@@ -833,7 +833,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", decider); runParams.put("Player", decider);
runParams.put("Target", Lists.newArrayList(player)); runParams.put("Target", Lists.newArrayList(player));
decider.getGame().getTriggerHandler().runTrigger(TriggerType.SearchedLibrary, runParams, false); decider.getGame().getTriggerHandler().runTriggerOld(TriggerType.SearchedLibrary, runParams, false);
} }
if (!defined && changeType != null) { if (!defined && changeType != null) {
@@ -1136,7 +1136,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", source); runParams.put("Card", source);
runParams.put("Championed", c); runParams.put("Championed", c);
game.getTriggerHandler().runTrigger(TriggerType.Championed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Championed, runParams, false);
} }
if (remember) { if (remember) {

View File

@@ -53,7 +53,7 @@ public class ClashEffect extends SpellAbilityEffect {
} }
sa.getHostCard().getGame().getTriggerHandler().runTrigger(TriggerType.Clashed, runParams, false); sa.getHostCard().getGame().getTriggerHandler().runTriggerOld(TriggerType.Clashed, runParams, false);
} }
/** /**

View File

@@ -213,7 +213,7 @@ public class CounterEffect extends SpellAbilityEffect {
runParams.put("Card", tgtSA.getHostCard()); runParams.put("Card", tgtSA.getHostCard());
runParams.put("Cause", srcSA.getHostCard()); runParams.put("Cause", srcSA.getHostCard());
runParams.put("CounteredSA", tgtSA); runParams.put("CounteredSA", tgtSA);
game.getTriggerHandler().runTrigger(TriggerType.Countered, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Countered, runParams, false);
if (!tgtSA.isAbility()) { if (!tgtSA.isAbility()) {

View File

@@ -262,27 +262,27 @@ public class CountersPutEffect extends SpellAbilityEffect {
if (sa.hasParam("Evolve")) { if (sa.hasParam("Evolve")) {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", tgtCard); runParams.put("Card", tgtCard);
game.getTriggerHandler().runTrigger(TriggerType.Evolved, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Evolved, runParams, false);
} }
if (sa.hasParam("Monstrosity")) { if (sa.hasParam("Monstrosity")) {
tgtCard.setMonstrous(true); tgtCard.setMonstrous(true);
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", tgtCard); runParams.put("Card", tgtCard);
runParams.put("MonstrosityAmount", counterAmount); runParams.put("MonstrosityAmount", counterAmount);
game.getTriggerHandler().runTrigger(TriggerType.BecomeMonstrous, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomeMonstrous, runParams, false);
} }
if (sa.hasParam("Renown")) { if (sa.hasParam("Renown")) {
tgtCard.setRenowned(true); tgtCard.setRenowned(true);
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", tgtCard); runParams.put("Card", tgtCard);
game.getTriggerHandler().runTrigger(TriggerType.BecomeRenowned, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomeRenowned, runParams, false);
} }
if (sa.hasParam("Adapt")) { if (sa.hasParam("Adapt")) {
// need to remove special keyword // need to remove special keyword
tgtCard.removeHiddenExtrinsicKeyword("CARDNAME adapts as though it had no +1/+1 counters"); tgtCard.removeHiddenExtrinsicKeyword("CARDNAME adapts as though it had no +1/+1 counters");
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", tgtCard); runParams.put("Card", tgtCard);
game.getTriggerHandler().runTrigger(TriggerType.Adapt, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Adapt, runParams, false);
} }
} else { } else {
// adding counters to something like re-suspend cards // adding counters to something like re-suspend cards

View File

@@ -85,7 +85,7 @@ public class ExploreEffect extends SpellAbilityEffect {
// a creature does explore even if it isn't on the battlefield anymore // a creature does explore even if it isn't on the battlefield anymore
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", c); runParams.put("Card", c);
game.getTriggerHandler().runTrigger(TriggerType.Explores, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Explores, runParams, false);
} }
table.triggerCountersPutAll(game); table.triggerCountersPutAll(game);
} }

View File

@@ -61,7 +61,7 @@ public class FightEffect extends DamageBaseEffect {
for (Card c : fighters) { for (Card c : fighters) {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Fighter", c); runParams.put("Fighter", c);
game.getTriggerHandler().runTrigger(TriggerType.Fight, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Fight, runParams, false);
} }
} }

View File

@@ -212,7 +212,7 @@ public class FlipCoinEffect extends SpellAbilityEffect {
Map<String,Object> runParams = Maps.newHashMap(); Map<String,Object> runParams = Maps.newHashMap();
runParams.put("Player", caller); runParams.put("Player", caller);
runParams.put("Result", Boolean.valueOf(wonFlip)); runParams.put("Result", Boolean.valueOf(wonFlip));
caller.getGame().getTriggerHandler().runTrigger(TriggerType.FlippedCoin, runParams, false); caller.getGame().getTriggerHandler().runTriggerOld(TriggerType.FlippedCoin, runParams, false);
} while (sa.hasParam("FlipUntilYouLose") && wonFlip); } while (sa.hasParam("FlipUntilYouLose") && wonFlip);
if (sa.hasParam("FlipUntilYouLose") && sa.hasAdditionalAbility("LoseSubAbility")) { if (sa.hasParam("FlipUntilYouLose") && sa.hasAdditionalAbility("LoseSubAbility")) {

View File

@@ -82,7 +82,7 @@ public class PlayLandVariantEffect extends SpellAbilityEffect {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", source); runParams.put("Card", source);
game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.LandPlayed, runParams, false);
game.getStack().unfreezeStack(); game.getStack().unfreezeStack();
activator.addLandPlayedThisTurn(); activator.addLandPlayedThisTurn();
} }

View File

@@ -47,7 +47,7 @@ public class RegenerationEffect extends SpellAbilityEffect {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", c); runParams.put("Card", c);
runParams.put("Cause", host); runParams.put("Cause", host);
game.getTriggerHandler().runTrigger(TriggerType.Regenerated, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Regenerated, runParams, false);
} }
} }

View File

@@ -81,7 +81,7 @@ public class RevealEffect extends SpellAbilityEffect {
runParams.put("Miracle", true); runParams.put("Miracle", true);
} }
//*/ //*/
game.getTriggerHandler().runTrigger(TriggerType.Revealed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Revealed, runParams, false);
if (sa.hasParam("RememberRevealed")) { if (sa.hasParam("RememberRevealed")) {
host.addRemembered(c); host.addRemembered(c);
} }

View File

@@ -39,7 +39,7 @@ public class SacrificeEffect extends SpellAbilityEffect {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("EchoPaid", Boolean.valueOf(isPaid)); runParams.put("EchoPaid", Boolean.valueOf(isPaid));
runParams.put("Card", card); runParams.put("Card", card);
game.getTriggerHandler().runTrigger(TriggerType.PayEcho, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.PayEcho, runParams, false);
if (isPaid || !card.getController().equals(activator)) { if (isPaid || !card.getController().equals(activator)) {
return; return;
} }
@@ -69,7 +69,7 @@ public class SacrificeEffect extends SpellAbilityEffect {
runParams.put("CumulativeUpkeepPaid", Boolean.valueOf(isPaid)); runParams.put("CumulativeUpkeepPaid", Boolean.valueOf(isPaid));
runParams.put("Card", card); runParams.put("Card", card);
runParams.put("PayingMana", StringUtils.join(sa.getPayingMana(), "")); runParams.put("PayingMana", StringUtils.join(sa.getPayingMana(), ""));
game.getTriggerHandler().runTrigger(TriggerType.PayCumulativeUpkeep, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.PayCumulativeUpkeep, runParams, false);
if (isPaid || !card.getController().equals(activator)) { if (isPaid || !card.getController().equals(activator)) {
return; return;
} }
@@ -149,14 +149,14 @@ public class SacrificeEffect extends SpellAbilityEffect {
card.addDevoured(lKICopy); card.addDevoured(lKICopy);
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Devoured", sac); runParams.put("Devoured", sac);
game.getTriggerHandler().runTrigger(TriggerType.Devoured, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Devoured, runParams, false);
} }
if (exploit) { if (exploit) {
card.addExploited(lKICopy); card.addExploited(lKICopy);
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Exploited", lKICopy); runParams.put("Exploited", lKICopy);
runParams.put("Card", card); runParams.put("Card", card);
game.getTriggerHandler().runTrigger(TriggerType.Exploited, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Exploited, runParams, false);
} }
if (wasDestroyed || wasSacrificed) { if (wasDestroyed || wasSacrificed) {
countSacrificed++; countSacrificed++;

View File

@@ -48,7 +48,7 @@ public class SetInMotionEffect extends SpellAbilityEffect {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Scheme", controller.getActiveScheme()); runParams.put("Scheme", controller.getActiveScheme());
game.getTriggerHandler().runTrigger(TriggerType.SetInMotion, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.SetInMotion, runParams, false);
} else { } else {
controller.setSchemeInMotion(); controller.setSchemeInMotion();
} }

View File

@@ -101,7 +101,7 @@ public class VoteEffect extends SpellAbilityEffect {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("AllVotes", votes); runParams.put("AllVotes", votes);
game.getTriggerHandler().runTrigger(TriggerType.Vote, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Vote, runParams, false);
List<String> subAbs = Lists.newArrayList(); List<String> subAbs = Lists.newArrayList();
final List<Object> mostVotes = getMostVotes(votes); final List<Object> mostVotes = getMostVotes(votes);

View File

@@ -571,7 +571,7 @@ public class Card extends GameEntity implements Comparable<Card> {
getGame().getTriggerHandler().registerActiveTrigger(this, false); getGame().getTriggerHandler().registerActiveTrigger(this, false);
Map<String, Object> runParams = Maps.newHashMap(); Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Transformer", this); runParams.put("Transformer", this);
getGame().getTriggerHandler().runTrigger(TriggerType.Transformed, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.Transformed, runParams, false);
incrementTransformedTimestamp(); incrementTransformedTimestamp();
return result; return result;
@@ -691,7 +691,7 @@ public class Card extends GameEntity implements Comparable<Card> {
getGame().getTriggerHandler().registerActiveTrigger(this, false); getGame().getTriggerHandler().registerActiveTrigger(this, false);
final Map<String, Object> runParams = Maps.newTreeMap(); final Map<String, Object> runParams = Maps.newTreeMap();
runParams.put("Card", this); runParams.put("Card", this);
getGame().getTriggerHandler().runTrigger(TriggerType.TurnFaceUp, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.TurnFaceUp, runParams, false);
} }
return result; return result;
} }
@@ -1291,12 +1291,12 @@ public class Card extends GameEntity implements Comparable<Card> {
runParams.put("CounterType", counterType); runParams.put("CounterType", counterType);
for (int i = 0; i < addAmount; i++) { for (int i = 0; i < addAmount; i++) {
runParams.put("CounterAmount", oldValue + i + 1); runParams.put("CounterAmount", oldValue + i + 1);
getGame().getTriggerHandler().runTrigger( getGame().getTriggerHandler().runTriggerOld(
TriggerType.CounterAdded, Maps.newHashMap(runParams), false); TriggerType.CounterAdded, Maps.newHashMap(runParams), false);
} }
if (addAmount > 0) { if (addAmount > 0) {
runParams.put("CounterAmount", addAmount); runParams.put("CounterAmount", addAmount);
getGame().getTriggerHandler().runTrigger( getGame().getTriggerHandler().runTriggerOld(
TriggerType.CounterAddedOnce, Maps.newHashMap(runParams), false); TriggerType.CounterAddedOnce, Maps.newHashMap(runParams), false);
} }
} else { } else {
@@ -1372,10 +1372,10 @@ public class Card extends GameEntity implements Comparable<Card> {
runParams.put("CounterType", counterName); runParams.put("CounterType", counterName);
for (int i = 0; i < delta && curCounters != 0; i++) { for (int i = 0; i < delta && curCounters != 0; i++) {
runParams.put("NewCounterAmount", --curCounters); runParams.put("NewCounterAmount", --curCounters);
getGame().getTriggerHandler().runTrigger(TriggerType.CounterRemoved, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.CounterRemoved, runParams, false);
} }
runParams.put("CounterAmount", delta); runParams.put("CounterAmount", delta);
getGame().getTriggerHandler().runTrigger(TriggerType.CounterRemovedOnce, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.CounterRemovedOnce, runParams, false);
} }
@Override @Override
@@ -2942,7 +2942,7 @@ public class Card extends GameEntity implements Comparable<Card> {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("AttachSource", this); runParams.put("AttachSource", this);
runParams.put("AttachTarget", entity); runParams.put("AttachTarget", entity);
getController().getGame().getTriggerHandler().runTrigger(TriggerType.Attached, runParams, false); getController().getGame().getTriggerHandler().runTriggerOld(TriggerType.Attached, runParams, false);
} }
@@ -2964,7 +2964,7 @@ public class Card extends GameEntity implements Comparable<Card> {
final Map<String, Object> runParams = Maps.newTreeMap(); final Map<String, Object> runParams = Maps.newTreeMap();
runParams.put("Attach", this); runParams.put("Attach", this);
runParams.put("Object", entity); runParams.put("Object", entity);
getGame().getTriggerHandler().runTrigger(TriggerType.Unattach, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.Unattach, runParams, false);
runUnattachCommands(); runUnattachCommands();
} }
@@ -3544,7 +3544,7 @@ public class Card extends GameEntity implements Comparable<Card> {
final Map<String, Object> runParams = Maps.newTreeMap(); final Map<String, Object> runParams = Maps.newTreeMap();
runParams.put("Card", this); runParams.put("Card", this);
runParams.put("Attacker", attacker); runParams.put("Attacker", attacker);
getGame().getTriggerHandler().runTrigger(TriggerType.Taps, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.Taps, runParams, false);
setTapped(true); setTapped(true);
getGame().fireEvent(new GameEventCardTapped(this, true)); getGame().fireEvent(new GameEventCardTapped(this, true));
@@ -3565,7 +3565,7 @@ public class Card extends GameEntity implements Comparable<Card> {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newTreeMap(); final Map<String, Object> runParams = Maps.newTreeMap();
runParams.put("Card", this); runParams.put("Card", this);
getGame().getTriggerHandler().runTrigger(TriggerType.Untaps, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.Untaps, runParams, false);
for (final GameCommand var : untapCommandList) { for (final GameCommand var : untapCommandList) {
var.run(); var.run();
@@ -4130,7 +4130,7 @@ public class Card extends GameEntity implements Comparable<Card> {
if (!isPhasedOut()) { if (!isPhasedOut()) {
// If this is currently PhasedIn, it's about to phase out. // If this is currently PhasedIn, it's about to phase out.
// Run trigger before it does because triggers don't work with phased out objects // Run trigger before it does because triggers don't work with phased out objects
getGame().getTriggerHandler().runTrigger(TriggerType.PhaseOut, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.PhaseOut, runParams, false);
} }
setPhasedOut(!phasedOut); setPhasedOut(!phasedOut);
@@ -4142,7 +4142,7 @@ public class Card extends GameEntity implements Comparable<Card> {
if (!phasedOut) { if (!phasedOut) {
// Just phased in, time to run the phased in trigger // Just phased in, time to run the phased in trigger
getGame().getTriggerHandler().registerActiveTrigger(this, false); getGame().getTriggerHandler().registerActiveTrigger(this, false);
getGame().getTriggerHandler().runTrigger(TriggerType.PhaseIn, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.PhaseIn, runParams, false);
} }
return true; return true;
@@ -4935,7 +4935,7 @@ public class Card extends GameEntity implements Comparable<Card> {
} }
// Defending player at the time the damage was dealt // Defending player at the time the damage was dealt
runParams.put("DefendingPlayer", game.getCombat() != null ? game.getCombat().getDefendingPlayerRelatedTo(source) : null); runParams.put("DefendingPlayer", game.getCombat() != null ? game.getCombat().getDefendingPlayerRelatedTo(source) : null);
getGame().getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.DamageDone, runParams, false);
GameEventCardDamaged.DamageType damageType = DamageType.Normal; GameEventCardDamaged.DamageType damageType = DamageType.Normal;
if (isPlaneswalker()) { if (isPlaneswalker()) {
@@ -5036,7 +5036,7 @@ public class Card extends GameEntity implements Comparable<Card> {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", this); runParams.put("Card", this);
runParams.put("Player", getController()); runParams.put("Player", getController());
game.getTriggerHandler().runTrigger(TriggerType.Exerted, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Exerted, runParams, false);
} }
public boolean isExertedBy(final Player player) { public boolean isExertedBy(final Player player) {

View File

@@ -39,7 +39,7 @@ public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
runParams.put("DamageAmount", sum); runParams.put("DamageAmount", sum);
runParams.put("IsCombatDamage", isCombat); runParams.put("IsCombatDamage", isCombat);
ge.getGame().getTriggerHandler().runTrigger(TriggerType.DamagePreventedOnce, runParams, false); ge.getGame().getTriggerHandler().runTriggerOld(TriggerType.DamagePreventedOnce, runParams, false);
} }
} }
} }
@@ -59,7 +59,7 @@ public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
runParams.put("DamageAmount", sum); runParams.put("DamageAmount", sum);
runParams.put("IsCombatDamage", isCombat); runParams.put("IsCombatDamage", isCombat);
sourceLKI.getGame().getTriggerHandler().runTrigger(TriggerType.DamageDealtOnce, runParams, false); sourceLKI.getGame().getTriggerHandler().runTriggerOld(TriggerType.DamageDealtOnce, runParams, false);
if (sourceLKI.hasKeyword(Keyword.LIFELINK)) { if (sourceLKI.hasKeyword(Keyword.LIFELINK)) {
sourceLKI.getController().gainLife(sum, sourceLKI, sa); sourceLKI.getController().gainLife(sum, sourceLKI, sa);
@@ -80,7 +80,7 @@ public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
runParams.put("DamageAmount", sum); runParams.put("DamageAmount", sum);
runParams.put("IsCombatDamage", isCombat); runParams.put("IsCombatDamage", isCombat);
ge.getGame().getTriggerHandler().runTrigger(TriggerType.DamageDoneOnce, runParams, false); ge.getGame().getTriggerHandler().runTriggerOld(TriggerType.DamageDoneOnce, runParams, false);
} }
} }
} }

View File

@@ -56,7 +56,7 @@ public class CardZoneTable extends ForwardingTable<ZoneType, ZoneType, CardColle
if (!isEmpty()) { if (!isEmpty()) {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Cards", new CardZoneTable(this)); runParams.put("Cards", new CardZoneTable(this));
game.getTriggerHandler().runTrigger(TriggerType.ChangesZoneAll, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.ChangesZoneAll, runParams, false);
} }
} }

View File

@@ -638,7 +638,7 @@ public class Combat {
runParams.put("Attacker", attacker); runParams.put("Attacker", attacker);
runParams.put("Defender",getDefenderByAttacker(attacker)); runParams.put("Defender",getDefenderByAttacker(attacker));
runParams.put("DefendingPlayer", getDefenderPlayerByAttacker(attacker)); runParams.put("DefendingPlayer", getDefenderPlayerByAttacker(attacker));
game.getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.AttackerUnblocked, runParams, false);
} }
} }
} }
@@ -649,7 +649,7 @@ public class Combat {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("AttackingPlayer", getAttackingPlayer()); runParams.put("AttackingPlayer", getAttackingPlayer());
runParams.put("Defenders", defenders); runParams.put("Defenders", defenders);
game.getTriggerHandler().runTrigger(TriggerType.AttackerUnblockedOnce, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.AttackerUnblockedOnce, runParams, false);
} }
} }

View File

@@ -313,7 +313,7 @@ public class CombatUtil {
runParams.put("Attacked", combat.getDefenderByAttacker(c)); runParams.put("Attacked", combat.getDefenderByAttacker(c));
runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(c)); runParams.put("DefendingPlayer", combat.getDefenderPlayerByAttacker(c));
runParams.put("Defenders", combat.getDefenders()); runParams.put("Defenders", combat.getDefenders());
game.getTriggerHandler().runTrigger(TriggerType.Attacks, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Attacks, runParams, false);
c.getDamageHistory().setCreatureAttackedThisCombat(true); c.getDamageHistory().setCreatureAttackedThisCombat(true);
c.getDamageHistory().clearNotAttackedSinceLastUpkeepOf(); c.getDamageHistory().clearNotAttackedSinceLastUpkeepOf();

View File

@@ -415,7 +415,7 @@ public class PhaseHandler implements java.io.Serializable {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Phase", phase.nameForScripts); runParams.put("Phase", phase.nameForScripts);
runParams.put("Player", playerTurn); runParams.put("Player", playerTurn);
game.getTriggerHandler().runTrigger(TriggerType.Phase, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Phase, runParams, false);
} }
// This line fixes Combat Damage triggers not going off when they should // This line fixes Combat Damage triggers not going off when they should
@@ -489,7 +489,7 @@ public class PhaseHandler implements java.io.Serializable {
// "Trigger" for begin turn to get around a phase skipping // "Trigger" for begin turn to get around a phase skipping
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", playerTurn); runParams.put("Player", playerTurn);
game.getTriggerHandler().runTrigger(TriggerType.TurnBegin, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.TurnBegin, runParams, false);
} }
planarDiceRolledthisTurn = 0; planarDiceRolledthisTurn = 0;
// Play the End Turn sound // Play the End Turn sound
@@ -581,7 +581,7 @@ public class PhaseHandler implements java.io.Serializable {
runParams.put("Attackers", combat.getAttackers()); runParams.put("Attackers", combat.getAttackers());
runParams.put("AttackingPlayer", combat.getAttackingPlayer()); runParams.put("AttackingPlayer", combat.getAttackingPlayer());
runParams.put("AttackedTarget", attackedTarget); runParams.put("AttackedTarget", attackedTarget);
game.getTriggerHandler().runTrigger(TriggerType.AttackersDeclared, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.AttackersDeclared, runParams, false);
} }
for (final Card c : combat.getAttackers()) { for (final Card c : combat.getAttackers()) {
@@ -693,7 +693,7 @@ public class PhaseHandler implements java.io.Serializable {
final Map<String, Object> bdRunParams = Maps.newHashMap(); final Map<String, Object> bdRunParams = Maps.newHashMap();
bdRunParams.put("Blockers", declaredBlockers); bdRunParams.put("Blockers", declaredBlockers);
bdRunParams.put("Attackers", blockedAttackers); bdRunParams.put("Attackers", blockedAttackers);
game.getTriggerHandler().runTrigger(TriggerType.BlockersDeclared, bdRunParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BlockersDeclared, bdRunParams, false);
} }
for (final Card c1 : combat.getAllBlockers()) { for (final Card c1 : combat.getAllBlockers()) {
@@ -706,7 +706,7 @@ public class PhaseHandler implements java.io.Serializable {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Blocker", c1); runParams.put("Blocker", c1);
runParams.put("Attackers", combat.getAttackersBlockedBy(c1)); runParams.put("Attackers", combat.getAttackersBlockedBy(c1));
game.getTriggerHandler().runTrigger(TriggerType.Blocks, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Blocks, runParams, false);
} }
c1.getDamageHistory().setCreatureBlockedThisCombat(true); c1.getDamageHistory().setCreatureBlockedThisCombat(true);
@@ -730,7 +730,7 @@ public class PhaseHandler implements java.io.Serializable {
runParams.put("NumBlockers", blockers.size()); runParams.put("NumBlockers", blockers.size());
runParams.put("Defender", combat.getDefenderByAttacker(a)); 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().runTriggerOld(TriggerType.AttackerBlocked, runParams, false);
// Run this trigger once for each blocker // Run this trigger once for each blocker
for (final Card b : blockers) { for (final Card b : blockers) {
@@ -741,7 +741,7 @@ public class PhaseHandler implements java.io.Serializable {
final Map<String, Object> runParams2 = Maps.newHashMap(); final Map<String, Object> runParams2 = Maps.newHashMap();
runParams2.put("Attacker", a); runParams2.put("Attacker", a);
runParams2.put("Blocker", b); runParams2.put("Blocker", b);
game.getTriggerHandler().runTrigger(TriggerType.AttackerBlockedByCreature, runParams2, false); game.getTriggerHandler().runTriggerOld(TriggerType.AttackerBlockedByCreature, runParams2, false);
} }
a.getDamageHistory().setCreatureGotBlockedThisCombat(true); a.getDamageHistory().setCreatureGotBlockedThisCombat(true);

View File

@@ -248,7 +248,7 @@ public class Player extends GameEntity implements Comparable<Player> {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Scheme", activeScheme); runParams.put("Scheme", activeScheme);
game.getTriggerHandler().runTrigger(TriggerType.SetInMotion, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.SetInMotion, runParams, false);
} }
@@ -450,7 +450,7 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("LifeAmount", lifeGain); runParams.put("LifeAmount", lifeGain);
runParams.put("Source", source); runParams.put("Source", source);
runParams.put("SourceSA", sa); runParams.put("SourceSA", sa);
game.getTriggerHandler().runTrigger(TriggerType.LifeGained, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.LifeGained, runParams, false);
game.fireEvent(new GameEventPlayerLivesChanged(this, oldLife, life)); game.fireEvent(new GameEventPlayerLivesChanged(this, oldLife, life));
} }
@@ -507,7 +507,7 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("Player", this); runParams.put("Player", this);
runParams.put("LifeAmount", toLose); runParams.put("LifeAmount", toLose);
runParams.put("FirstTime", firstLost); runParams.put("FirstTime", firstLost);
game.getTriggerHandler().runTrigger(TriggerType.LifeLost, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.LifeLost, runParams, false);
return lifeLost; return lifeLost;
} }
@@ -540,7 +540,7 @@ public class Player extends GameEntity implements Comparable<Player> {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", this); runParams.put("Player", this);
runParams.put("LifeAmount", lifePayment); runParams.put("LifeAmount", lifePayment);
game.getTriggerHandler().runTrigger(TriggerType.PayLife, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.PayLife, runParams, false);
return true; return true;
} }
@@ -627,7 +627,7 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("IsCombatDamage", isCombat); runParams.put("IsCombatDamage", isCombat);
// Defending player at the time the damage was dealt // Defending player at the time the damage was dealt
runParams.put("DefendingPlayer", game.getCombat() != null ? game.getCombat().getDefendingPlayerRelatedTo(source) : null); runParams.put("DefendingPlayer", game.getCombat() != null ? game.getCombat().getDefendingPlayerRelatedTo(source) : null);
game.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.DamageDone, runParams, false);
game.fireEvent(new GameEventPlayerDamaged(this, source, amount, isCombat, infect)); game.fireEvent(new GameEventPlayerDamaged(this, source, amount, isCombat, infect));
@@ -950,10 +950,10 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("Source", this); runParams.put("Source", this);
runParams.put("CounterType", counterType); runParams.put("CounterType", counterType);
for (int i = 0; i < addAmount; i++) { for (int i = 0; i < addAmount; i++) {
getGame().getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.CounterAdded, runParams, false);
} }
if (addAmount > 0) { if (addAmount > 0) {
getGame().getTriggerHandler().runTrigger(TriggerType.CounterAddedOnce, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.CounterAddedOnce, runParams, false);
} }
if (table != null) { if (table != null) {
table.put(this, counterType, addAmount); table.put(this, counterType, addAmount);
@@ -1339,7 +1339,7 @@ public class Player extends GameEntity implements Comparable<Player> {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", this); runParams.put("Player", this);
runParams.put("NumThisTurn", surveilThisTurn); runParams.put("NumThisTurn", surveilThisTurn);
getGame().getTriggerHandler().runTrigger(TriggerType.Surveil, runParams, false); getGame().getTriggerHandler().runTriggerOld(TriggerType.Surveil, runParams, false);
} }
public int getSurveilThisTurn() { public int getSurveilThisTurn() {
@@ -1431,7 +1431,7 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("Card", c); runParams.put("Card", c);
runParams.put("Number", numDrawnThisTurn); runParams.put("Number", numDrawnThisTurn);
runParams.put("Player", this); runParams.put("Player", this);
game.getTriggerHandler().runTrigger(TriggerType.Drawn, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Drawn, runParams, false);
} }
else { // Lose by milling is always on. Give AI many cards it cannot play if you want it not to undertake actions else { // Lose by milling is always on. Give AI many cards it cannot play if you want it not to undertake actions
triedToDrawFromEmptyLibrary = true; triedToDrawFromEmptyLibrary = true;
@@ -1620,7 +1620,7 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("Card", c); runParams.put("Card", c);
runParams.put("Cause", cause); runParams.put("Cause", cause);
runParams.put("IsMadness", Boolean.valueOf(discardMadness)); runParams.put("IsMadness", Boolean.valueOf(discardMadness));
game.getTriggerHandler().runTrigger(TriggerType.Discarded, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Discarded, runParams, false);
game.getGameLog().add(GameLogEntryType.DISCARD, sb.toString()); game.getGameLog().add(GameLogEntryType.DISCARD, sb.toString());
return newCard; return newCard;
} }
@@ -1701,7 +1701,7 @@ public class Player extends GameEntity implements Comparable<Player> {
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Player", this); runParams.put("Player", this);
runParams.put("Source", sa); runParams.put("Source", sa);
game.getTriggerHandler().runTrigger(TriggerType.Shuffled, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Shuffled, runParams, false);
// Play the shuffle sound // Play the shuffle sound
game.fireEvent(new GameEventShuffle(this)); game.fireEvent(new GameEventShuffle(this));
@@ -1731,7 +1731,7 @@ public class Player extends GameEntity implements Comparable<Player> {
// Run triggers // Run triggers
final Map<String, Object> runParams = Maps.newHashMap(); final Map<String, Object> runParams = Maps.newHashMap();
runParams.put("Card", land); runParams.put("Card", land);
game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.LandPlayed, runParams, false);
game.getStack().unfreezeStack(); game.getStack().unfreezeStack();
addLandPlayedThisTurn(); addLandPlayedThisTurn();
} }
@@ -2170,7 +2170,7 @@ public class Player extends GameEntity implements Comparable<Player> {
Map<String,Object> runParams = Maps.newHashMap(); Map<String,Object> runParams = Maps.newHashMap();
runParams.put("Player", this); runParams.put("Player", this);
runParams.put("Num", investigatedThisTurn); runParams.put("Num", investigatedThisTurn);
game.getTriggerHandler().runTrigger(TriggerType.Investigated, runParams,false); game.getTriggerHandler().runTriggerOld(TriggerType.Investigated, runParams,false);
} }
public final void resetInvestigatedThisTurn() { public final void resetInvestigatedThisTurn() {
investigatedThisTurn = 0; investigatedThisTurn = 0;
@@ -2195,7 +2195,7 @@ public class Player extends GameEntity implements Comparable<Player> {
runParams.put("Cause", source); runParams.put("Cause", source);
runParams.put("CostStack", game.costPaymentStack); runParams.put("CostStack", game.costPaymentStack);
runParams.put("IndividualCostPaymentInstance", game.costPaymentStack.peek()); runParams.put("IndividualCostPaymentInstance", game.costPaymentStack.peek());
game.getTriggerHandler().runTrigger(TriggerType.Sacrificed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Sacrificed, runParams, false);
} }
public final void resetSacrificedThisTurn() { public final void resetSacrificedThisTurn() {
@@ -2541,7 +2541,7 @@ public class Player extends GameEntity implements Comparable<Player> {
//Run PlaneswalkedTo triggers here. //Run PlaneswalkedTo triggers here.
Map<String,Object> runParams = Maps.newHashMap(); Map<String,Object> runParams = Maps.newHashMap();
runParams.put("Cards", currentPlanes); runParams.put("Cards", currentPlanes);
game.getTriggerHandler().runTrigger(TriggerType.PlaneswalkedTo, runParams,false); game.getTriggerHandler().runTriggerOld(TriggerType.PlaneswalkedTo, runParams,false);
view.updateCurrentPlaneName(currentPlanes.toString().replaceAll(" \\(.*","").replace("[","")); view.updateCurrentPlaneName(currentPlanes.toString().replaceAll(" \\(.*","").replace("[",""));
} }
@@ -2551,7 +2551,7 @@ public class Player extends GameEntity implements Comparable<Player> {
public void leaveCurrentPlane() { public void leaveCurrentPlane() {
final Map<String, Object> runParams = new ImmutableMap.Builder<String, Object>().put("Cards", new CardCollection(currentPlanes)).build(); final Map<String, Object> runParams = new ImmutableMap.Builder<String, Object>().put("Cards", new CardCollection(currentPlanes)).build();
game.getTriggerHandler().runTrigger(TriggerType.PlaneswalkedFrom, runParams,false); game.getTriggerHandler().runTriggerOld(TriggerType.PlaneswalkedFrom, runParams,false);
for (final Card plane : currentPlanes) { for (final Card plane : currentPlanes) {
//game.getZoneOf(plane).remove(plane); //game.getZoneOf(plane).remove(plane);

View File

@@ -173,7 +173,7 @@ public class AbilityManaPart implements java.io.Serializable {
runParams.put("Player", player); runParams.put("Player", player);
runParams.put("AbilityMana", sa); runParams.put("AbilityMana", sa);
runParams.put("Produced", afterReplace); runParams.put("Produced", afterReplace);
player.getGame().getTriggerHandler().runTrigger(TriggerType.TapsForMana, runParams, false); player.getGame().getTriggerHandler().runTriggerOld(TriggerType.TapsForMana, runParams, false);
if (source.isLand()) { if (source.isLand()) {
player.setTappedLandForManaThisTurn(true); player.setTappedLandForManaThisTurn(true);
} }

View File

@@ -355,10 +355,10 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
((Card) tgt).setBecameTargetThisTurn(true); ((Card) tgt).setBecameTargetThisTurn(true);
} }
runParams.put("Target", tgt); runParams.put("Target", tgt);
getSourceCard().getGame().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false); getSourceCard().getGame().getTriggerHandler().runTriggerOld(TriggerType.BecomesTarget, runParams, false);
} }
runParams.put("Targets", target.getTargets()); runParams.put("Targets", target.getTargets());
getSourceCard().getGame().getTriggerHandler().runTrigger(TriggerType.BecomesTargetOnce, runParams, false); getSourceCard().getGame().getTriggerHandler().runTriggerOld(TriggerType.BecomesTargetOnce, runParams, false);
} }
} }

View File

@@ -51,6 +51,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Multimaps; import com.google.common.collect.Multimaps;
import static forge.util.EnumMapUtil.toStringMap;
public class TriggerHandler { public class TriggerHandler {
private final List<TriggerType> suppressedModes = Collections.synchronizedList(new ArrayList<TriggerType>()); private final List<TriggerType> suppressedModes = Collections.synchronizedList(new ArrayList<TriggerType>());
private final List<Trigger> activeTriggers = Collections.synchronizedList(new ArrayList<Trigger>()); private final List<Trigger> activeTriggers = Collections.synchronizedList(new ArrayList<Trigger>());
@@ -318,12 +320,17 @@ public class TriggerHandler {
return false; return false;
} }
public final void runTrigger(final TriggerType mode, final Map<String, Object> runParams, boolean holdTrigger) { public final void runTrigger(final TriggerType mode, final Map<TriggerKey, Object> runParams, boolean holdTrigger) {
runTriggerOld(mode, toStringMap(runParams), holdTrigger);
}
// The plan is to slowly refactor any usages of `runTriggerOld` to use `runTrigger`. Then we can just inline
// `runTriggerOld` into `runTrigger` and change the code inside to just always use a `Map<TriggerKey, Object>`.
// The reason we can't just call them both `runTrigger` is because we get a `same erasure` compile error if we do.
public final void runTriggerOld(final TriggerType mode, final Map<String, Object> runParams, boolean holdTrigger) {
if (suppressedModes.contains(mode)) { if (suppressedModes.contains(mode)) {
return; return;
} }
//runWaitingTrigger(new TriggerWaiting(mode, runParams));
if (mode == TriggerType.Always) { if (mode == TriggerType.Always) {
runStateTrigger(runParams); runStateTrigger(runParams);
} else if (game.getStack().isFrozen() || holdTrigger) { } else if (game.getStack().isFrozen() || holdTrigger) {
@@ -331,20 +338,14 @@ public class TriggerHandler {
} else { } else {
runWaitingTrigger(new TriggerWaiting(mode, runParams)); runWaitingTrigger(new TriggerWaiting(mode, runParams));
} }
// Tell auto stop to stop
} }
public final boolean runStateTrigger(Map<String, Object> runParams) { private void runStateTrigger(Map<String, Object> runParams) {
boolean checkStatics = false;
// only cards in play can run state triggers
for (final Trigger t: activeTriggers) { for (final Trigger t: activeTriggers) {
if (canRunTrigger(t, TriggerType.Always, runParams)) { if (canRunTrigger(t, TriggerType.Always, runParams)) {
runSingleTrigger(t, runParams); runSingleTrigger(t, runParams);
checkStatics = true;
} }
} }
return checkStatics;
} }
public final boolean runWaitingTriggers() { public final boolean runWaitingTriggers() {
@@ -362,7 +363,7 @@ public class TriggerHandler {
return haveWaiting; return haveWaiting;
} }
public final boolean runWaitingTrigger(final TriggerWaiting wt) { private boolean runWaitingTrigger(final TriggerWaiting wt) {
final TriggerType mode = wt.getMode(); final TriggerType mode = wt.getMode();
final Map<String, Object> runParams = wt.getParams(); final Map<String, Object> runParams = wt.getParams();

View File

@@ -0,0 +1,21 @@
package forge.game.trigger;
/**
* Keys for Trigger parameter maps.
*/
public enum TriggerKey {
Attackers("Attackers"),
AttackingPlayer("AttackingPlayer"),
AttackedTarget("AttackedTarget");
private String key;
TriggerKey(String key) {
this.key = key;
}
@Override
public String toString() {
return key;
}
}

View File

@@ -294,7 +294,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
runParams.put("CastSACMC", si.getSpellAbility(true).getHostCard().getCMC()); runParams.put("CastSACMC", si.getSpellAbility(true).getHostCard().getCMC());
runParams.put("CurrentStormCount", thisTurnCast.size()); runParams.put("CurrentStormCount", thisTurnCast.size());
runParams.put("CurrentCastSpells", new CardCollection(thisTurnCast)); runParams.put("CurrentCastSpells", new CardCollection(thisTurnCast));
game.getTriggerHandler().runTrigger(TriggerType.SpellAbilityCast, runParams, true); game.getTriggerHandler().runTriggerOld(TriggerType.SpellAbilityCast, runParams, true);
// Run SpellCast triggers // Run SpellCast triggers
if (sp.isSpell()) { if (sp.isSpell()) {
@@ -302,27 +302,27 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
&& source.getOwner().equals(activator)) { && source.getOwner().equals(activator)) {
activator.incCommanderCast(source); activator.incCommanderCast(source);
} }
game.getTriggerHandler().runTrigger(TriggerType.SpellCast, runParams, true); game.getTriggerHandler().runTriggerOld(TriggerType.SpellCast, runParams, true);
executeCastCommand(si.getSpellAbility(true).getHostCard()); executeCastCommand(si.getSpellAbility(true).getHostCard());
} }
// Run AbilityCast triggers // Run AbilityCast triggers
if (sp.isAbility() && !sp.isTrigger()) { if (sp.isAbility() && !sp.isTrigger()) {
game.getTriggerHandler().runTrigger(TriggerType.AbilityCast, runParams, true); game.getTriggerHandler().runTriggerOld(TriggerType.AbilityCast, runParams, true);
} }
// Run Cycled triggers // Run Cycled triggers
if (sp.isCycling()) { if (sp.isCycling()) {
runParams.clear(); runParams.clear();
runParams.put("Card", sp.getHostCard()); runParams.put("Card", sp.getHostCard());
game.getTriggerHandler().runTrigger(TriggerType.Cycled, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Cycled, runParams, false);
} }
if (sp.hasParam("Crew")) { if (sp.hasParam("Crew")) {
// Trigger crews! // Trigger crews!
runParams.put("Vehicle", sp.getHostCard()); runParams.put("Vehicle", sp.getHostCard());
runParams.put("Crew", sp.getPaidList("TappedCards")); runParams.put("Crew", sp.getPaidList("TappedCards"));
game.getTriggerHandler().runTrigger(TriggerType.Crewed, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.Crewed, runParams, false);
} }
} }
@@ -332,9 +332,9 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
runParams.put("CopySA", si.getSpellAbility(true)); runParams.put("CopySA", si.getSpellAbility(true));
// Run SpellCopy triggers // Run SpellCopy triggers
if (sp.isSpell()) { if (sp.isSpell()) {
game.getTriggerHandler().runTrigger(TriggerType.SpellCopy, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.SpellCopy, runParams, false);
} }
game.getTriggerHandler().runTrigger(TriggerType.SpellAbilityCopy, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.SpellAbilityCopy, runParams, false);
} }
// Run BecomesTarget triggers // Run BecomesTarget triggers
@@ -364,10 +364,10 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
((Card) tgt).setBecameTargetThisTurn(true); ((Card) tgt).setBecameTargetThisTurn(true);
} }
runParams.put("Target", tgt); runParams.put("Target", tgt);
game.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomesTarget, runParams, false);
} }
runParams.put("Targets", tc.getTargets()); runParams.put("Targets", tc.getTargets());
game.getTriggerHandler().runTrigger(TriggerType.BecomesTargetOnce, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomesTargetOnce, runParams, false);
} }
} }
} }
@@ -376,10 +376,10 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
else if (sp.getTargetCard() != null) { else if (sp.getTargetCard() != null) {
runParams.put("Target", sp.getTargetCard()); runParams.put("Target", sp.getTargetCard());
game.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomesTarget, runParams, false);
runParams.put("Targets", Lists.newArrayList(sp.getTargetCard())); runParams.put("Targets", Lists.newArrayList(sp.getTargetCard()));
game.getTriggerHandler().runTrigger(TriggerType.BecomesTargetOnce, runParams, false); game.getTriggerHandler().runTriggerOld(TriggerType.BecomesTargetOnce, runParams, false);
} }
game.fireEvent(new GameEventZone(ZoneType.Stack, sp.getActivatingPlayer(), EventValueChangeType.Added, source)); game.fireEvent(new GameEventZone(ZoneType.Stack, sp.getActivatingPlayer(), EventValueChangeType.Added, source));

View File

@@ -0,0 +1,18 @@
package forge.util;
import java.util.HashMap;
import java.util.Map;
public final class EnumMapUtil {
private EnumMapUtil() { };
public static <K extends Enum<K>, V> HashMap<String, V> toStringMap(Map<K, V> map) {
HashMap<String, V> output = new HashMap<>(map.size());
for (Map.Entry<K, V> entry : map.entrySet()) {
output.put(entry.getKey().toString(), entry.getValue());
}
return output;
}
}

View File

@@ -138,7 +138,7 @@ public class GameWrapper {
//skip drawing initial hand and mulliganing //skip drawing initial hand and mulliganing
game.setAge( GameStage.Play ); game.setAge( GameStage.Play );
final HashMap<String, Object> runParams = new HashMap<String, Object>(); final HashMap<String, Object> runParams = new HashMap<String, Object>();
game.getTriggerHandler().runTrigger( TriggerType.NewGame, runParams, false ); game.getTriggerHandler().runTriggerOld( TriggerType.NewGame, runParams, false );
//first player in the list starts, no coin toss etc //first player in the list starts, no coin toss etc
game.getPhaseHandler().startFirstTurn( game.getPlayers().get( 0 ) ); game.getPhaseHandler().startFirstTurn( game.getPlayers().get( 0 ) );
game.fireEvent( new GameEventGameFinished() ); game.fireEvent( new GameEventGameFinished() );