PDA

View Full Version : Weapon Damage Options (5E)



jkeller
December 17th, 2025, 19:07
This 5E extension is now available at: https://forge.fantasygrounds.com/shop/items/2768/view

To use, select the "Weapon Damage Properties" extension when loading your campaign. There is a House Rule option to disable it (it's enabled by default).

Then simply add the desired type(s) onto a weapon's damage types. Currently supported types:


"brutal" (or "perkins") - crit dice will be set to the max possible
"exploding" - if you roll the max on any damage die, you get another die of that type
"cascading" - if you roll the max on any damage die, you get another (smaller) die (e.g. d12 -> d10 -> d8 -> d4 -> none)
"voracious" - if you roll a 1 on any damage die, it will reroll (once per die)


https://i.ibb.co/1fGZ9ynd/Voracious-Exploding-Critical.png

Note that exploding and cascading are mutually exclusive, but other types may be combined.

Voracious is applied first. So if you have a weapon that does both voracious and cascading damage, and you roll a 1 which is rerolled as a 6 (or whatever the max is for that die), then you will get the extra die.

Brutal/Perkins is applied last. So if you have a weapon that does both exploding and brutal damage, and you roll a max crit die, you get the extra die,. But if the brutal/perkins effect changes the die, it won't explode (or cascade).

https://i.ibb.co/ym8fXQwC/Perkins-on-the-2d6-Damage-Types.png

In this example, the PC rolled one a natural 6 on the 2d6 crit roll; the other (purple one) was upgraded by the brutal/perkins feature:

https://i.ibb.co/4Zq5vfZ4/Perkins-on-the-2d6.png

This extension may affect all damage rolls for the altered weapon, not just critical hits (except for the brutal/perkins type, which only applies to crits).

Note that this extension modifies the same data as the Crit Damage Options (https://forge.fantasygrounds.com/shop/items/2767/view) extension. The Weapon Damage Props extension only affects the weapon(s) you modify. This applies to both PCs and NPCs (though only for weapons). I may change it to support any attacks (e.g. Claw attack damage) - let me know your thoughts here or in my discord (in my sig).

The Crit Damage Options extension affects all critical hits (for PC weapons).

If you load and enable both extensions, please report any issues (I haven't done much testing with both enabled). If a weapon has the exploding or cascading damage type, that will take priority (e.g. your dice won't explode/cascade twice).

Suggestions/comments are appreciated!

Version History
- 0.4 fixed a bug where the source of the damage was missing (e.g., if you drag the damage from the chat window)
- 0.3 fixed a bug where critical damage was untyped
- 0.2 addressed some compatibility issues with other extensions, and added support for Sorcerous Burst, fixed damage type output message

JonStormbringer
December 17th, 2025, 23:33
Thanks for this! I've been wanting exploded dice in my 5e campaign for a while and adding it as a weapon property is fantastic. I'm looking forward to using this one. Thank you, again!

jkeller
December 17th, 2025, 23:43
Thanks, hope you like it! While testing it with 6d4, I got some crazy numbers! It's probably a bit unbalanced, but it sure is fun :)

Cascading is less crazy than exploding - you may want to try that option.

arkanis
December 18th, 2025, 09:21
Not that unbalanced, As they are now, 5E weapons are one-dimensional. Giving unused weapons freebies like exploding, make them usable. I.e. Exploding mace makes the weapon usable and a valid option against the all-conquering short-sword. It's still worse, but some people might like it better

BTW I'm getting an error like this:

"WeaponDmgProps:weapon_dmg_props.lua"]:10: attempt to index global 'Utils' (a nil value)
[12/18/2025 10:25:37 AM] s'Can't find CT node: ' | databasenode = { combattracker.list.id-00095 }
[12/18/2025 10:25:37 AM] s'Can't find CT node: ' | databasenode = { combattracker.list.id-00095 }
[12/18/2025 10:25:37 AM] s'Can't find CT node: ' | databasenode = { combattracker.list.id-00024 }

jkeller
December 18th, 2025, 16:03
thanks, should be fixed now

Tempered7
December 18th, 2025, 17:13
Thānks for the exploding dice feature. I rsmember some users from savage worldswere asking for it in 5e sub forums awhileback.
It is also so useful for solo play, carrying sw traditions into 5e.

jkeller
December 18th, 2025, 19:07
There's also a similar feature called "penetrating", but I'm not exactly sure how it's supposed to work. I *think* it's just like exploding, except the new dice get -1. But they can still penetrate again (ad infinitum like exploding); they just count as 1 less damage.

Personally, both exploding and cascading seem clearer to me; not sure if there's any real reason to support penetrating?

Tempered7
December 19th, 2025, 03:00
I dont think so either. Armor pen. is not a thing in 5e.
-1 dmg would also upset balance.

Hjorimir
January 5th, 2026, 21:50
Conflicts with the Damage Reroll Feats extension (https://forge.fantasygrounds.com/shop/items/1455/view). I've spoken with Mosby on his Discord, so he's already aware of it, but posting this here in case somebody else has trouble getting it to work properly.

jkeller
January 6th, 2026, 17:41
New version is up. Thanks to Hjorimir for all the help!

This version should play nice with (one) other extension that registers a postRoll damage handler. The base code only supports one, and makes it very difficult for even well-behaved extensions to chain themselves together.

We tested with this and the Damage Reroll Feats extension, and they are now compatible. It looks that one may be re-rolling for some feats after this extension runs, so a re-roll that results in a max die won't trigger the exploding.

Also, this version automatically supports the Sorcerous Burst spell (without needing to add "exploding" to the damage type). It enforces the max explosions allowed based on the caster's spellcasting modifier.

Hjorimir
January 6th, 2026, 18:10
Fantastic work!

charmov
January 17th, 2026, 00:55
New version is up. Thanks to Hjorimir for all the help!

This version should play nice with (one) other extension that registers a postRoll damage handler. The base code only supports one, and makes it very difficult for even well-behaved extensions to chain themselves together.

We tested with this and the Damage Reroll Feats extension, and they are now compatible. It looks that one may be re-rolling for some feats after this extension runs, so a re-roll that results in a max die won't trigger the exploding.

Also, this version automatically supports the Sorcerous Burst spell (without needing to add "exploding" to the damage type). It enforces the max explosions allowed based on the caster's spellcasting modifier.

This is amazing, thank you! Too bad my sorcerer died ... Anyhow, does sorcerous burst work for NPC's as well? I've been wanting to run an encounter with one and this would be perfect for that.

jkeller
January 17th, 2026, 01:33
Mostly :)

It does work, but if there's no damage type (and there's not by default for that spell, since you can choose), you'll get an error (which I will fix in the next version).

But for now, if you edit the "[DMG 1d8]" to include the damage type you want (e.g. "[DMG 1d8 acid]") then it will work just fine.

It's smoother for PC sorcerers, since there is a separate button for each damage type (no edit needed).

charmov
January 17th, 2026, 06:41
Keeps getting better! Thank you!

jimlad42
February 9th, 2026, 03:41
I just spent some time tracking this down between all my extensions. Apparently with this extension active, the extra critical damage doesn't get the original damage type, counting as Untyped damage instead. Not even being classified as critical damage. Meaning if they resist slashing, a critical does more damage than it should. And if they're immune to critical damage, they take full damage from it anyway.
66542

jkeller
February 9th, 2026, 14:52
Thanks @jimlad42, I'll take a look - should be an easy fix I think.

jkeller
February 9th, 2026, 15:41
Should be fixed now, thanks for letting me know!

jimlad42
February 9th, 2026, 17:49
Just updated, and it's fixed on my end now. Nice work!

jkeller
February 26th, 2026, 20:58
Update to use a new FG function to chain the damage handler - this should make it less likely to conflict with other damage-related extensions.

bwatford
February 28th, 2026, 23:37
This one is still not playing nice with the Damage Reroll feats extension. Can't get them to work together.

jkeller
March 1st, 2026, 00:36
I don't own that one. Can you tell me more? Anything interesting in the console?

bwatford
March 1st, 2026, 04:23
Nothing interesting in the tracker, it just wasn't firing.

Damage Reroll Feats had a load order in the 900's, I changed your extension to load at 1000 and it fixed the issue, both extensions now working.

jkeller
March 1st, 2026, 14:13
Ah, thanks!

FG added a getPostRollHandler function recently. This lets extension developers add themselves to a "chain", so that all of them get called. I think the proper way to do this is:



function onInit()
DamageHandler = ActionsManager.getPostRollHandler("damage");
ActionsManager.registerPostRollHandler("damage", onDamageRollDecorator);
end

function onDamageRollDecorator(rSource, rRoll)
if DamageHandler then DamageHandler(rSource, rRoll); end -- call super
...
end

jimlad42
March 2nd, 2026, 16:14
I just worked out another bug with untyped damage while this extension is active, if you add an effect like Sharpshooter with a flat damage modifier, "DMG: 10", rather than a damage die, the effect's damage remains as untyped damage rather than getting added to the main damage type as expected.
Without the extension a hit with a quarterstaff and a DMG: 10 effect does 1d6+10 bludgeoning damage, while with the extension it does 1d6 bludgeoning damage, and 10 untyped damage.
Also, if you have a damage effect with dice, it parses as expected. "DMG: 10d4" properly parses into 1d6+10d4 bludgeoning damage with and without the extension.

(Gotta love the notifications calling out the specific damage type numbers, making this so much easier to track down. I would never have noticed without those.)

jkeller
March 2nd, 2026, 18:55
Thank for letting me know! It should be fixed now.

Lord Skrolk
May 6th, 2026, 06:47
I am getting this error message: Handler error: [string "WeaponDmgProps:dice.lua"]:91 attempt to concatenate field 'sDesc' (a nil value)

jkeller
May 6th, 2026, 14:56
Looks like the description format changed. Should be fixed now, thanks for reporting it!

Lord Skrolk
May 6th, 2026, 21:40
Just got this now: [ERROR] Script execution error: [string "WeaponDmgProps:dice.lua"]:117: bad argument #1 to 'ipairs' (table expected, got nil)

jkeller
May 6th, 2026, 21:50
Just got this now: [ERROR] Script execution error: [string "WeaponDmgProps:dice.lua"]:117: bad argument #1 to 'ipairs' (table expected, got nil)

Can you tell me more? What were you doing when it happened?

Lord Skrolk
May 7th, 2026, 03:13
Can you tell me more? What were you doing when it happened?

I been trying to duplicate it and finally did. It happens when I use Unarmed Strike.

jkeller
May 7th, 2026, 04:30
Ah, okay. Must have had constant damage, no dice. Should be fixed now, thanks again!

Lord Skrolk
May 7th, 2026, 05:21
Ah, okay. Must have had constant damage, no dice. Should be fixed now, thanks again!

Thank you for fixing it. Just checked it and it is working fine.