diff --git a/forge-game/src/main/java/forge/game/PlanarDice.java b/forge-game/src/main/java/forge/game/PlanarDice.java index 6f46a28f604..80380a2bd6a 100644 --- a/forge-game/src/main/java/forge/game/PlanarDice.java +++ b/forge-game/src/main/java/forge/game/PlanarDice.java @@ -6,6 +6,7 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import forge.game.ability.AbilityKey; +import forge.game.event.GameEventRollDie; import forge.game.player.Player; import forge.game.trigger.TriggerType; @@ -18,10 +19,12 @@ public enum PlanarDice { Chaos, Blank; - public static PlanarDice roll(Player roller, PlanarDice riggedResult) - { + public static PlanarDice roll(Player roller, PlanarDice riggedResult) { PlanarDice res = Blank; int i = forge.util.MyRandom.getRandom().nextInt(6); + // Play the die roll sound + roller.getGame().fireEvent(new GameEventRollDie()); + roller.roll(); if (riggedResult != null) res = riggedResult; else if (i == 0) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 8a78686e480..3ccca83f1e3 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -2270,6 +2270,10 @@ public class AbilityUtils { return doXMath(player.getNumDrawnThisTurn(), expr, c, ctb); } + if (sq[0].equals("YouRollThisTurn")) { + return doXMath(player.getNumRollsThisTurn(), expr, c, ctb); + } + if (sq[0].equals("YouSurveilThisTurn")) { return doXMath(player.getSurveilThisTurn(), expr, c, ctb); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java index 8bbfea68780..2931da09e9f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java @@ -78,6 +78,7 @@ public class RollDiceEffect extends SpellAbilityEffect { int roll = MyRandom.getRandom().nextInt(sides) + 1; // Play the die roll sound player.getGame().fireEvent(new GameEventRollDie()); + player.roll(); rolls.add(roll); total += roll; } 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 ed1f20fac8a..26b41b445f9 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -172,6 +172,7 @@ public class Player extends GameEntity implements Comparable { private String namedCard2 = ""; private int numDrawnThisTurn = 0; private int numDrawnThisDrawStep = 0; + private int numRollsThisTurn = 0; private int numDiscardedThisTurn = 0; private int numTokenCreatedThisTurn = 0; private int numForetoldThisTurn = 0; @@ -1465,6 +1466,18 @@ public class Player extends GameEntity implements Comparable { return numDrawnThisDrawStep; } + public final void resetNumRollsThisTurn() { + numRollsThisTurn = 0; + } + + public final int getNumRollsThisTurn() { + return numRollsThisTurn; + } + + public void roll() { + numRollsThisTurn++; + } + public final Card discard(final Card c, final SpellAbility sa, final boolean effect, CardZoneTable table) { return discard(c, sa, effect, table, null); } @@ -2455,6 +2468,7 @@ public class Player extends GameEntity implements Comparable { pz.resetCardsAddedThisTurn(); } resetNumDrawnThisTurn(); + resetNumRollsThisTurn(); resetNumDiscardedThisTurn(); resetNumForetoldThisTurn(); resetNumTokenCreatedThisTurn(); diff --git a/forge-gui/res/cardsfolder/upcoming/the_space_family_goblinson.txt b/forge-gui/res/cardsfolder/upcoming/the_space_family_goblinson.txt new file mode 100644 index 00000000000..57d77972ba1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_space_family_goblinson.txt @@ -0,0 +1,9 @@ +Name:The Space Family Goblinson +ManaCost:2 R G +Types:Legendary Creature Goblin Guest +PT:1/1 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Trample | CheckSVar$ X | SVarCompare$ GE3 | Description$ CARDNAME has trample as you've rolled three or more dice this turn. +SVar:X:Count$YouRollThisTurn +T:Mode$ RolledDie | Execute$ TrigPutCounter | ValidPlayer$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever you roll a die, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:The Space Family Goblinson has trample as long as you've rolled three or more dice this turn.\nWhenever you roll a die, put a +1/+1 counter on The Space Family Goblinson.