diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7976a35 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +acks/ \ No newline at end of file diff --git a/Changelog.txt b/Changelog.txt index b230126..31a22f1 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -26,3 +26,13 @@ Removed DAC field from armor items BUG FIXES: Fixed a rounding error present in the OSE code Fixed some areas where AC was not shown correctly in OSE code + +v0.5.1 HFH Options / Core Toggle +MINOR CHANGES: +Added toggle for Exploding 20s and BHR +Implemented auto-miss on 1 and auto-hit on 20 for Core Rules (non-HFH) + +BUG FIXES: +Monster Saves pre-fill not present when monster is new +Negative Con mod could make HD roll negative (now floored at 1) +Negative Str mod could make damage negative (now minimum 1) \ No newline at end of file diff --git a/package/acks-v0.5.1.zip b/package/acks-v0.5.1.zip index 751e54a..b6bc9d2 100644 Binary files a/package/acks-v0.5.1.zip and b/package/acks-v0.5.1.zip differ diff --git a/src/lang/en.json b/src/lang/en.json index f263a8f..7a5c3f5 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -272,6 +272,8 @@ "ACKS.messages.InflictsDamage": "Inflicts damage!", "ACKS.messages.applyDamage": "Apply Damage", "ACKS.messages.applyHealing": "Apply Healing", + "ACKS.messages.Fumble": "1! Automatic Miss!", + "ACKS.messages.Critical": "20! Automatic Hit!", "ACKS.colors.green": "Green", "ACKS.colors.red": "Red", diff --git a/src/module/dice.js b/src/module/dice.js index dbdc777..2a9b8bc 100644 --- a/src/module/dice.js +++ b/src/module/dice.js @@ -141,8 +141,29 @@ export class AcksDice { : 0; result.victim = data.roll.target ? data.roll.target.data.name : null; + const hfh = game.settings.get("acks", "exploding20s") + const die = roll.dice[0].total + if (game.settings.get("acks", "ascendingAC")) { - if (roll.total < targetAac + 10) { + if (die == 1 && !hfh) { + result.details = game.i18n.format( + "ACKS.messages.Fumble", + { + result: roll.total, + bonus: result.target, + } + ); + return result; + } else if (roll.total < targetAac + 10 && die < 20) { + result.details = game.i18n.format( + "ACKS.messages.AttackAscendingFailure", + { + result: roll.total - 10, + bonus: result.target, + } + ); + return result; + } else if (roll.total < targetAac + 10 && hfh) { result.details = game.i18n.format( "ACKS.messages.AttackAscendingFailure", { @@ -152,9 +173,15 @@ export class AcksDice { ); return result; } - result.details = game.i18n.format("ACKS.messages.AttackAscendingSuccess", { - result: roll.total - 10, - }); + if (!hfh && die == 20) { + result.details = game.i18n.format("ACKS.messages.Critical", { + result: roll.total, + }); + } else { + result.details = game.i18n.format("ACKS.messages.AttackAscendingSuccess", { + result: roll.total - 10, + }); + } result.isSuccess = true; } else { // B/X Historic THAC0 Calculation