diff --git a/TheOldWorldRPG/sheet.html b/TheOldWorldRPG/sheet.html
index 5fa9cf19a6..ec0bab4846 100644
--- a/TheOldWorldRPG/sheet.html
+++ b/TheOldWorldRPG/sheet.html
@@ -596,6 +596,26 @@
Successes: |
{{computed::successes}} |
+ {{#rollTotal() glorious 1}}
+
+ | Rerolled Failures: |
+ {{computed::glorious_rerolled}} |
+
+
+ | Total Successes: |
+ {{computed::total_successes}} |
+
+ {{/rollTotal() glorious 1}}
+ {{#rollTotal() glorious 2}}
+
+ | Rerolled Successes: |
+ {{computed::grim_rerolled}} |
+
+
+ | Total Successes: |
+ {{computed::total_successes}} |
+
+ {{/rollTotal() glorious 2}}
| Success Type: |
{{computed::success_type}} |
@@ -628,6 +648,26 @@
Successes: |
{{computed::successes}} |
+ {{#rollTotal() glorious 1}}
+
+ | Rerolled Failures: |
+ {{computed::glorious_rerolled}} |
+
+
+ | Total Successes: |
+ {{computed::total_successes}} |
+
+ {{/rollTotal() glorious 1}}
+ {{#rollTotal() glorious 2}}
+
+ | Rerolled Successes: |
+ {{computed::grim_rerolled}} |
+
+
+ | Total Successes: |
+ {{computed::total_successes}} |
+
+ {{/rollTotal() glorious 2}}
| Weapon Damage: |
{{computed::damage}} - Opponent SL |
@@ -659,19 +699,37 @@
let damage = results.results.damage.result;
let skill = results.results.skill.result;
let modifier = results.results.modifier.result;
+ // 0 = Normal, 1 = Glorious (reroll failures), 2 = Grim (reroll successes)
+ let glorious = results.results.glorious ? results.results.glorious.result : 0;
dice_pool = (dice_pool + modifier) > 0 ? (dice_pool + modifier) : 1;
// console.log("DICE POOL: " + dice_pool);
- let successes = 0;
+ let successes = 0; // successes in the first set of rolls
+ let total_successes = 0; // successes after rerolls (drives damage)
let numbers_rolled = [];
+ let glorious_rerolled = []; // newly rerolled dice (Glorious)
+ let grim_rerolled = []; // newly rerolled dice (Grim)
for (let i = 0; i < dice_pool; i++) {
let dieRoll = Math.floor(Math.random() * 10) + 1;
- numbers_rolled.push(dieRoll);
- if (dieRoll <= skill) {
+ numbers_rolled.push(dieRoll); // original first-set roll
+ let isSuccess = dieRoll <= skill;
+ if (isSuccess) {
successes += 1;
}
+ let finalRoll = dieRoll;
+ // Glorious rerolls failures, Grim rerolls successes.
+ if (glorious == 1 && !isSuccess) {
+ finalRoll = Math.floor(Math.random() * 10) + 1;
+ glorious_rerolled.push(finalRoll); // the newly rerolled die
+ } else if (glorious == 2 && isSuccess) {
+ finalRoll = Math.floor(Math.random() * 10) + 1;
+ grim_rerolled.push(finalRoll); // the newly rerolled die
+ }
+ if (finalRoll <= skill) {
+ total_successes += 1;
+ }
}
- damage = damage + successes;
+ damage = damage + total_successes;
if (debug) {
console.log("NUMBERS ROLLED: " + numbers_rolled);
@@ -689,7 +747,10 @@
dice_pool: dice_pool,
successes: successes,
numbers_rolled: numbers_rolled,
- damage: damage
+ damage: damage,
+ glorious_rerolled: glorious_rerolled.length ? glorious_rerolled.join(", ") : "None",
+ grim_rerolled: grim_rerolled.length ? grim_rerolled.join(", ") : "None",
+ total_successes: total_successes
}
);
@@ -729,7 +790,7 @@
console.log(name + " | " + dice_pool + " | " + damage + " | " + traits + " | " + skill);
- let roll_string = "&{template:tow1ed2} [[?{Dice Mod | None,+0 | 1d,+1 | 2d,+2 | 3d,+3 | 4d,+4 | 5d,+5 | -1d,-1 | -2d,-2 | -3d,-3 | -4d,-4 | -5d,-5}]] {{modifier=$[[0]]}}{{name="+name+"}}{{dice_pool=[["+dice_pool+"]]}}{{damage=[["+damage+"]]}}{{traits="+traits+"}}{{skill=[["+skill+"]]}}{{Character Name=@{character_name} }}{{successes=[[d10]]}}{{numbers_rolled=[[d10]]}}";
+ let roll_string = "&{template:tow1ed2} [[?{Dice Mod | None,+0 | 1d,+1 | 2d,+2 | 3d,+3 | 4d,+4 | 5d,+5 | -1d,-1 | -2d,-2 | -3d,-3 | -4d,-4 | -5d,-5}]] {{modifier=$[[0]]}}{{name="+name+"}}{{dice_pool=[["+dice_pool+"]]}}{{damage=[["+damage+"]]}}{{traits="+traits+"}}{{skill=[["+skill+"]]}}{{glorious=[[?{GLORIOUS? | Normal,0 | Glorious,1 | Grim,2}]]}}{{Character Name=@{character_name} }}{{successes=[[d10]]}}{{numbers_rolled=[[d10]]}}{{glorious_rerolled=[[d10]]}}{{grim_rerolled=[[d10]]}}{{total_successes=[[d10]]}}";
rollattack(roll_string, true);
//rollTest(reroll, skill_name, skill_total, diff_roll, circ, superiority, dmg, dmg_info, slmod, critfum);
});
@@ -750,9 +811,9 @@
console.log("Selected Roll Type: " + selected_rolltype);
}
- let roll_string = "&{template:tow1ed} [[?{Dice Mod | None,+0 | 1d,+1 | 2d,+2 | 3d,+3 | 4d,+4 | 5d,+5 | -1d,-1 | -2d,-2 | -3d,-3 | -4d,-4 | -5d,-5}]] {{characteristic=[[@{"+selected_characteristic+"}]]}}{{skill=[[@{skill_"+selected_skill+"}]]}}{{modifier=$[[0]]}}{{selected_skill="+selected_skill+"}}{{successes=[[d10]]}}{{numbers_rolled=[[d10]]}}{{success_type=[[d10]]}}{{Character Name=@{character_name} }}";
+ let roll_string = "&{template:tow1ed} [[?{Dice Mod | None,+0 | 1d,+1 | 2d,+2 | 3d,+3 | 4d,+4 | 5d,+5 | -1d,-1 | -2d,-2 | -3d,-3 | -4d,-4 | -5d,-5}]] {{characteristic=[[@{"+selected_characteristic+"}]]}}{{skill=[[@{skill_"+selected_skill+"}]]}}{{modifier=$[[0]]}}{{glorious=[[?{GLORIOUS? | Normal,0 | Glorious,1 | Grim,2}]]}}{{selected_skill="+selected_skill+"}}{{successes=[[d10]]}}{{numbers_rolled=[[d10]]}}{{success_type=[[d10]]}}{{glorious_rerolled=[[d10]]}}{{grim_rerolled=[[d10]]}}{{total_successes=[[d10]]}}{{Character Name=@{character_name} }}";
if (selected_rolltype == 'spell') {
- roll_string = "&{template:tow1ed} [[?{Dice Mod | None,+0 | 1d,+1 | 2d,+2 | 3d,+3 | 4d,+4 | 5d,+5 | -1d,-1 | -2d,-2 | -3d,-3 | -4d,-4 | -5d,-5}]] {{characteristic=[[@{"+selected_characteristic+"}]]}}{{skill=[[@{skill_"+selected_skill+"}]]}}{{miscast_pool=[[@{miscast_pool}]]}}{{selected_skill="+selected_skill+"}}{{wizard_level=[[@{wizard_level}]]}}{{modifier=$[[0]]}}{{successes=[[d10]]}}{{numbers_rolled=[[d10]]}}{{success_type=[[d10]]}}{{Character Name=@{character_name} }}";
+ roll_string = "&{template:tow1ed} [[?{Dice Mod | None,+0 | 1d,+1 | 2d,+2 | 3d,+3 | 4d,+4 | 5d,+5 | -1d,-1 | -2d,-2 | -3d,-3 | -4d,-4 | -5d,-5}]] {{characteristic=[[@{"+selected_characteristic+"}]]}}{{skill=[[@{skill_"+selected_skill+"}]]}}{{miscast_pool=[[@{miscast_pool}]]}}{{selected_skill="+selected_skill+"}}{{wizard_level=[[@{wizard_level}]]}}{{modifier=$[[0]]}}{{glorious=[[?{GLORIOUS? | Normal,0 | Glorious,1 | Grim,2}]]}}{{successes=[[d10]]}}{{numbers_rolled=[[d10]]}}{{success_type=[[d10]]}}{{glorious_rerolled=[[d10]]}}{{grim_rerolled=[[d10]]}}{{total_successes=[[d10]]}}{{Character Name=@{character_name} }}";
selected_skill = "magic";
}
@@ -770,22 +831,40 @@ function rolltest(roll_string, selected_skill, debug=false) {
let modifier = results.results.modifier.result;
let miscast_pool = results.results.miscast_pool ? results.results.miscast_pool.result : null;
let wizard_level = results.results.wizard_level ? results.results.wizard_level.result : null;
+ // 0 = Normal, 1 = Glorious (reroll failures), 2 = Grim (reroll successes)
+ let glorious = results.results.glorious ? results.results.glorious.result : 0;
let dice_pool = (characteristic + modifier) > 0 ? (characteristic + modifier) : 1;
// console.log("DICE POOL: " + dice_pool);
- let successes = 0;
+ let successes = 0; // successes in the first set of rolls
+ let total_successes = 0; // successes after rerolls (drives success type)
let numbers_rolled = [];
let nines_rolled = [];
+ let glorious_rerolled = []; // newly rerolled dice (Glorious)
+ let grim_rerolled = []; // newly rerolled dice (Grim)
for (let i = 0; i < dice_pool; i++) {
let dieRoll = Math.floor(Math.random() * 10) + 1;
- numbers_rolled.push(dieRoll);
- if (dieRoll == 9 && selected_skill == "magic") {
- nines_rolled.push(dieRoll);
- }
- if (dieRoll <= skill) {
+ numbers_rolled.push(dieRoll); // original first-set roll
+ let isSuccess = dieRoll <= skill;
+ if (isSuccess) {
successes += 1;
}
+ let finalRoll = dieRoll;
+ // Glorious rerolls failures, Grim rerolls successes.
+ if (glorious == 1 && !isSuccess) {
+ finalRoll = Math.floor(Math.random() * 10) + 1;
+ glorious_rerolled.push(finalRoll); // the newly rerolled die
+ } else if (glorious == 2 && isSuccess) {
+ finalRoll = Math.floor(Math.random() * 10) + 1;
+ grim_rerolled.push(finalRoll); // the newly rerolled die
+ }
+ if (finalRoll == 9 && selected_skill == "magic") {
+ nines_rolled.push(finalRoll);
+ }
+ if (finalRoll <= skill) {
+ total_successes += 1;
+ }
}
if (debug) {
console.log("NUMBERS ROLLED: " + numbers_rolled);
@@ -797,12 +876,13 @@ function rolltest(roll_string, selected_skill, debug=false) {
}
if (((nines_rolled.length + miscast_pool) > wizard_level) && selected_skill == "magic") {
successes = 0;
+ total_successes = 0;
success_type = "Miscast Failure!";
- } else if (successes >= 3) {
+ } else if (total_successes >= 3) {
success_type = "Total Success!";
- } else if (successes >= 2) {
+ } else if (total_successes >= 2) {
success_type = "Success";
- } else if (successes >= 1) {
+ } else if (total_successes >= 1) {
success_type = "Marginal Success";
} else {
success_type = "Failure!";
@@ -817,7 +897,10 @@ function rolltest(roll_string, selected_skill, debug=false) {
dice_pool: dice_pool,
successes: successes,
numbers_rolled: numbers_rolled,
- success_type: success_type
+ success_type: success_type,
+ glorious_rerolled: glorious_rerolled.length ? glorious_rerolled.join(", ") : "None",
+ grim_rerolled: grim_rerolled.length ? grim_rerolled.join(", ") : "None",
+ total_successes: total_successes
}
);