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