Added the ability to double all number of dice to roll using context

This commit is contained in:
Stefan Zermatten
2020-09-18 12:24:08 +02:00
parent 6570665c1e
commit c8ddf9d547
3 changed files with 9 additions and 8 deletions

View File

@@ -16,13 +16,9 @@ export default class IfNode extends ParseNode {
let condition = this.condition[fn](scope, context);
if (condition instanceof ConstantNode){
if (condition.value){
let consequent = this.consequent[fn](scope, context);
consequent.inheritDetails([condition, this]);
return this.consequent[fn](scope);
return this.consequent[fn](scope, context);
} else {
let alternative = this.alternative[fn](scope, context);
alternative.inheritDetails([condition, this]);
return alternative;
return this.alternative[fn](scope, context);
}
} else {
return new IfNode({

View File

@@ -40,9 +40,13 @@ export default class RollNode extends ParseNode {
});
}
let number = left.value;
if (context.doubleRolls){
number *= 2;
}
if (number > 100) return new ErrorNode({
node: this,
error: 'Can\'t roll more than 100 dice at once'
error: 'Can\'t roll more than 100 dice at once',
context,
});
let diceSize = right.value;
let randomSrc = DDP.randomStream('diceRoller');

View File

@@ -8,9 +8,10 @@ export default function parser(){
}
export class CompilationContext {
constructor(){
constructor({doubleRolls}){
this.errors = [];
this.rolls = [];
this.doubleRolls = doubleRolls;
}
storeError(e){
this.errors.push(e);