summaryrefslogtreecommitdiff
path: root/dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java
diff options
context:
space:
mode:
Diffstat (limited to 'dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java')
-rw-r--r--dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java b/dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java
index 885e02d..895a53c 100644
--- a/dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java
+++ b/dice/src/main/java/bjc/dicelang/dicev2/ExplodingDieMod.java
@@ -6,17 +6,42 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.LongPredicate;
+/**
+ * An exploding die pool.
+ * @author Ben Culkin
+ *
+ */
public class ExplodingDieMod extends Die {
+ /**
+ * The pool of dice.
+ */
public final Die[] dice;
+ /**
+ * The predicate which says when to explode.
+ */
public final LongPredicate explode;
+ /**
+ * Should the explosion penetrate.
+ */
public final boolean penetrate;
+ /**
+ * Create an exploding die pool.
+ * @param explode The predicate for determining an explosion.
+ * @param dice The die pool.
+ */
public ExplodingDieMod(LongPredicate explode, Die... dice) {
this(explode, false, dice);
}
+ /**
+ * Create an exploding die pool.
+ * @param explode The predicate for determining an explosion.
+ * @param penetrate Whether the explosion should penetrate.
+ * @param dice The die pool.
+ */
public ExplodingDieMod(LongPredicate explode, boolean penetrate, Die... dice) {
super();
@@ -27,6 +52,7 @@ public class ExplodingDieMod extends Die {
this.penetrate = penetrate;
}
+ @Override
public long[] roll() {
List<Long> lst = new ArrayList<>(dice.length);
@@ -57,15 +83,18 @@ public class ExplodingDieMod extends Die {
* It makes no sense to roll a 'single' exploding dice, since it
* exploding adds another die. Use compounding dice for that case.
*/
+ @Override
public long rollSingle() {
throw new UnsupportedOperationException("Exploding dice can't be rolled singly");
}
/* :UnoptimizableDice */
+ @Override
public boolean canOptimize() {
return false;
}
+ @Override
public long optimize() {
throw new UnsupportedOperationException("Exploding dice can't be optimized");
}