diff --git a/index.html b/index.html index 5e9a69c8..d6376680 100644 --- a/index.html +++ b/index.html @@ -76,7 +76,7 @@ Binomial - + Min Max @@ -86,6 +86,26 @@ p +
+
+ Bonus Rolls + + +
+ + Min + + Max + + n + + p + +
diff --git a/script.js b/script.js index 543cac15..dd93a864 100644 --- a/script.js +++ b/script.js @@ -89,6 +89,22 @@ function updateRollsField(el) { invalidated(); } +function switchBonusRollsType(el, type) { + $(el).closest('.bonus-rolls').attr('data-type', type); + updateBonusRollsField(el); +} + +function updateBonusRollsField(el) { + let type = $(el).closest('.bonus-rolls').attr('data-type'); + let data = getRangeField($(el).closest('.bonus-rolls'), type); + if (type ==='exact' && isNaN(data)) { + delete getPool(el).bonus_rolls; + } else { + getPool(el).bonus_rolls = data; + } + invalidated(); +} + function updateEntryType(el) { let entry = getEntry(el); entry.type = $(el).val(); @@ -162,6 +178,9 @@ function generateStructure() { $pool.removeAttr('id').attr('data-index', i); // Rolls + if (!pool.rolls) { + pool.rolls = 1; + } let $rolls = $pool.find('.rolls'); if (typeof pool.rolls === 'object') { if (pool.rolls.type && pool.rolls.type.match(/(minecraft:)?binomial/)) { @@ -181,6 +200,30 @@ function generateStructure() { $rolls.find('.exact').val(pool.rolls); } + // Bonus Rolls + let $bonus_rolls = $pool.find('.bonus-rolls'); + if (pool.bonus_rolls) { + if (typeof pool.bonus_rolls === 'object') { + if (pool.bonus_rolls.type && pool.bonus_rolls.type.match(/(minecraft:)?binomial/)) { + $bonus_rolls.attr('data-type', 'binomial'); + $bonus_rolls.find('.binomial').removeClass('d-none'); + $bonus_rolls.find('.binomial.n').val(pool.bonus_rolls.n); + $bonus_rolls.find('.binomial.p').val(pool.bonus_rolls.p); + } else { + $bonus_rolls.attr('data-type', 'range'); + $bonus_rolls.find('.range').removeClass('d-none'); + $bonus_rolls.find('.range.min').val(pool.bonus_rolls.min); + $bonus_rolls.find('.range.max').val(pool.bonus_rolls.max); + } + } else { + $bonus_rolls.attr('data-type', 'exact'); + $bonus_rolls.find('.exact').removeClass('d-none'); + $bonus_rolls.find('.exact').val(pool.bonus_rolls); + } + } else { + $bonus_rolls.find('.exact').removeClass('d-none'); + } + // Entries for (let j = 0; j < pool.entries.length; j += 1) { let entry = pool.entries[j];