diff --git a/forge-game/src/main/java/forge/game/PlanarDice.java b/forge-game/src/main/java/forge/game/PlanarDice.java index d8705f3e889..6f46a28f604 100644 --- a/forge-game/src/main/java/forge/game/PlanarDice.java +++ b/forge-game/src/main/java/forge/game/PlanarDice.java @@ -1,5 +1,6 @@ package forge.game; +import java.util.Arrays; import java.util.Map; import com.google.common.collect.ImmutableList; @@ -8,7 +9,7 @@ import forge.game.ability.AbilityKey; import forge.game.player.Player; import forge.game.trigger.TriggerType; -/** +/** * Represents the planar dice for Planechase games. * */ @@ -16,7 +17,7 @@ public enum PlanarDice { Planeswalk, Chaos, Blank; - + public static PlanarDice roll(Player roller, PlanarDice riggedResult) { PlanarDice res = Blank; @@ -27,25 +28,37 @@ public enum PlanarDice { res = Planeswalk; else if (i == 1) res = Chaos; - - + + PlanarDice trigRes = res; - + if(roller.getGame().getStaticEffects().getGlobalRuleChange(GlobalRuleChange.blankIsChaos) && res == Blank) { trigRes = Chaos; } - final Map runParams = AbilityKey.newMap(); + Map runParams = AbilityKey.newMap(); runParams.put(AbilityKey.Player, roller); runParams.put(AbilityKey.Result, trigRes); roller.getGame().getTriggerHandler().runTrigger(TriggerType.PlanarDice, runParams,false); - - + + // Also run normal RolledDie and RolledDieOnce triggers + runParams = AbilityKey.newMap(); + runParams.put(AbilityKey.Player, roller); + runParams.put(AbilityKey.Sides, 6); + runParams.put(AbilityKey.Result, 0); + roller.getGame().getTriggerHandler().runTrigger(TriggerType.RolledDie, runParams, false); + + runParams = AbilityKey.newMap(); + runParams.put(AbilityKey.Player, roller); + runParams.put(AbilityKey.Sides, 6); + runParams.put(AbilityKey.Result, Arrays.asList(0)); + roller.getGame().getTriggerHandler().runTrigger(TriggerType.RolledDieOnce, runParams, false); + return res; } - + /** * Parses a string into an enum member. * @param string to parse diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerRolledDie.java b/forge-game/src/main/java/forge/game/trigger/TriggerRolledDie.java index e495f62c5bc..1adc634d3a2 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerRolledDie.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerRolledDie.java @@ -44,6 +44,11 @@ public class TriggerRolledDie extends Trigger { } return false; } + if (hasParam("ValidSides")) { + final int validSides = Integer.parseInt(getParam("ValidSides")); + final int sides = (int) runParams.get(AbilityKey.Sides); + if (sides == validSides) return true; + } return true; } diff --git a/forge-gui/res/cardsfolder/c/chicken_a_la_king.txt b/forge-gui/res/cardsfolder/c/chicken_a_la_king.txt index 53720fdfc14..0d12c573d40 100644 --- a/forge-gui/res/cardsfolder/c/chicken_a_la_king.txt +++ b/forge-gui/res/cardsfolder/c/chicken_a_la_king.txt @@ -2,7 +2,7 @@ Name:Chicken à la King ManaCost:1 U U Types:Creature Bird Noble PT:2/2 -T:Mode$ RolledDie | TriggerZones$ Battlefield | Execute$ TrigCounters | ValidResult$ 6 | TriggerDescription$ Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird. +T:Mode$ RolledDie | TriggerZones$ Battlefield | Execute$ TrigCounters | ValidResult$ 6 | ValidSides$ 6 | TriggerDescription$ Whenever a 6 is rolled on a six-sided die, put a +1/+1 counter on each Bird. SVar:TrigCounters:DB$ PutCounterAll | ValidCards$ Bird | CounterType$ P1P1 | CounterNum$ 1 A:AB$ RollDice | Cost$ tapXType<1/Bird> | AILogic$ AtOppEOT | SpellDescription$ Roll a six-sided die. DeckHas:Ability$Counters