mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Merge branch 'trigger_planar_die' into 'master'
Roll a planar die will also run RollDie and RollDieOnce triggers See merge request core-developers/forge!5003
This commit is contained in:
@@ -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<AbilityKey, Object> runParams = AbilityKey.newMap();
|
||||
Map<AbilityKey, Object> 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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user