PDA

View Full Version : 5E - Undead Fortitude



JustinFreitas
May 26th, 2023, 15:14
This is an extension for FGC/FGU that automates the Undead Fortitude constitution saving throw. If the target succeeds the save, an amount of damage will be done that leaves the target with one hit point. On a failure, the target damage is handled as normal resulting in the loss of consciousness. In my Tomb of Annihilation game, I was spending sooooo much time dealing with Undead Fortitude that I decided to write an extension for it to help me. I still run my ToA game in Classic, so that compatibility is important to me. I hope this saves other DMs time when running hoards of zombies too! :)

Undead Fortitude Features:

Automates the Undead Fortitude constitution saving throw for actors with Undead Fortitude in their Traits section (NPC or PC).
On a successful Undead Fortitude save, the target is dealt an amount of damage that will leave them with one hit point.
The radiant damage type or a critical hit will forgo the saving throw automation, per the Undead Fortitude rules.
There is a Radial Menu (right click) option to apply Undead Fortitude to an unconscious actor in the Combat Tracker.
Works as a chat command with either /uf or /undeadfortitude, specifying the actor's name to affect.
Change the way the mechanism works by removing the queue and using the roll to pass data directly. Add the ability to customize the behavior based off of the PC/NPC trait name. For example, Undead Fortitude (MOD 10) will use 10 instead of 5 when processing Undead Fortitude DC calculations. Something like Death Fortitude (DC 11) will trigger the behavior with a static DC of 11 and no radiant damage restriction because the word Undead isn't before Fortitude. Another example is Undead Fortitude (Mod 8, no mods) which will trigger the behavior with a DC modifier of 8 instead of 5 and not have the radiant damage or critical hit restrictions. Use the name of the fortitude trait specified on the creature in the saving throw text and the matching of that saving throw text. That way, customized fortitude trait names will show instead of hardcoded Undead Fortitude. The modifier values now support negative values (i.e. MOD -5). Multiple UF targets were not being accounted for correctly... fixed.
Change from save result handler to save override to avoid conflicts with other extensions.



Current Version: 2.8, get it from the Forge if you are a Unity user (automatic deployment and update with FGU update) or GitHub releases if you are a Classic user (drop the ext file into the extensions folder). The version history is available at either link, FG Forge or GitHub.

FG Forge Link: https://forge.fantasygrounds.com/shop/items/1215/view
GitHub Link: https://github.com/JustinFreitas/UndeadFortitude

Raddu
May 26th, 2023, 18:09
Fantastic! Never knew I needed this until today!

JustinFreitas
May 26th, 2023, 18:40
Fantastic! Never knew I needed this until today!

I know, right?!? I was in my game the other day suffering through managing Undead Fortitude on a hoard of zombies about ready to pull my hair out... then I thought, "Sure would be nice to have an extension for this." And there ya have it! I hope it saves you time and frustration. If you notice issues, just say. There were some differences in the FGC/FGU implementations that are combined in there.

Raddu
May 26th, 2023, 18:56
Yeah, and I've ran combats with creatures that I gave a version of undead fortitude (replicating warforged) and kept forgetting to apply it!

JustinFreitas
June 10th, 2023, 13:59
Updated the Undead Fortitude extension to have a Radial Menu (right click) option to apply Undead Fortitude to an unconscious Combat Tracker actor. It also works with the chat commands /uf or /undeadfortitude, passing the name of the CT actor to affect. It's version 1.1 now and has been updated on Forge and GitHub.

MrDDT
June 17th, 2023, 18:36
Is there a way to denote the DC save other than being DC 5 + damage on the skill or anything?

JustinFreitas
June 17th, 2023, 18:38
Is there a way to denote the DC save other than being DC 5 + damage on the skill or anything?

Not currently, but I can make that happen for ya. Probably a DC modifier spinner in the options that will default to 5 or something equivalent.

JustinFreitas
June 17th, 2023, 18:44
Is there a way to denote the DC save other than being DC 5 + damage on the skill or anything?

Or... maybe have five be the default but if a number is specified in parens after Undead Fortitude in the traits, then use that modifier. Something like: Undead Fortitude (DC 10)

I'll think about it more and come up with something decent.

MrDDT
June 17th, 2023, 18:46
Not currently, but I can make that happen for ya. Probably a DC modifier spinner in the options that will default to 5 or something equivalent.

Thanks for the reply, let me know if you want more info. But what I like to do is custom some creatures to have UF trait but give the DC differently, sometimes only a set DC.

JustinFreitas
June 17th, 2023, 18:53
Thanks for the reply, let me know if you want more info. But what I like to do is custom some creatures to have UF trait but give the DC differently, sometimes only a set DC.

Ok, I'll account for adjustment of the modifier and also setting a static DC. So how about (DC 10) for the static DC, defaulting to normal non-static, modified version. Then for modified/normal behavior we can do (MOD 10), defaulting to five. Any incorrect syntax won't be recognized and the defaults will be used.

So some examples would be:
Undead Fortitude
Undead Fortitude (DC 11)
Undead Fortitude (MOD 10)
Undead Fortitude (BAD XX) <-- Bad syntax, defaults will be used.

MrDDT
June 17th, 2023, 18:54
Ok, I'll account for adjustment of the modifier and also setting a static DC. So how about (DC 10) for the static DC, defaulting to normal non-static, modified version. Then for modified/normal behavior we can do (MOD 10), defaulting to five. Any incorrect syntax won't be recognized and the defaults will be used.

So some examples would be:
Undead Fortitude
Undead Fortitude (DC 11)
Undead Fortitude (MOD 10)
Undead Fortitude (BAD XX) <-- Bad syntax, defaults will be used.

Thanks sounds EPIC!

JustinFreitas
June 17th, 2023, 18:58
Thanks sounds EPIC!

That makes me happy. :) I can also make it work with the word Death instead of Undead so that it applies to more use case scenarios... just in case your creature isn't undead. Here are some examples of (future) working trait names:
Undead Fortitude
Death Fortitude
Death Fortitude (DC 11)
Undead Fortitude (MOD 10)

MrDDT
June 17th, 2023, 19:07
That makes me happy. :) I can also make it work with the word Death instead of Undead so that it applies to more use case scenarios... just in case your creature isn't undead. Here are some examples of (future) working trait names:
Undead Fortitude
Death Fortitude
Death Fortitude (DC 11)
Undead Fortitude (MOD 10)

What about Death Ward, Strength of the Grave and Reckless Endurance or am I getting crazy? Sounds like it's in the same wheelhouse.

JustinFreitas
June 17th, 2023, 19:10
Yeah, that came to my mind also. Lemme do the static DC and modifier first... then I can mess with the wording later on. I remembered about the radiant damage thing too. Undead Fortitude accounts for that, but some of the others you mentioned don't. So yeah... let's do the DC/MOD stuff first.

JustinFreitas
June 19th, 2023, 02:33
Those changes made it in. I also made the extension much more reliable and fix a ton of bugs I found along the way. Lemme know if you have any issues. Basically, it supports those modifiers now... DC to set a static DC, MOD to override the DC modifier used in damage calculation, which defaults 5 for Undead Fortitude, and a way to disable all of the restrictions/exclusions like 'radiant' going thru 'Undead Fortitude' and Critical Hits going thru, etc... that is: no mods. For now, the word Fortitude must be in the trait name, although, the prefix and suffix can vary.

So some usage examples might be:
Undead Fortitude <-- Normal Undead Fortitude, DC 5 + DMG
Undead Fortitude (DC 15) <-- No damage calculation... DC 15 every time.
Creature Fortitude (MOD 10) <-- Note, this one would ignore radiant because it's not Undead Fortitude proper.
Undead Fortitude (no mods) <-- radiant damage and critical rolls would still get save in this case.

MrDDT
June 19th, 2023, 02:43
Those changes made it in. I also made the extension much more reliable and fix a ton of bugs I found along the way. Lemme know if you have any issues. Basically, it supports those modifiers now... DC to set a static DC, MOD to override the DC modifier used in damage calculation, which defaults 5 for Undead Fortitude, and a way to disable all of the restrictions/exclusions like 'radiant' going thru 'Undead Fortitude' and Critical Hits going thru, etc... that is: no mods. For now, the word Fortitude must be in the trait name, although, the prefix and suffix can vary.

So some usage examples might be:
Undead Fortitude <-- Normal Undead Fortitude, DC 5 + DMG
Undead Fortitude (DC 15) <-- No damage calculation... DC 15 every time.
Creature Fortitude (MOD 10) <-- Note, this one would ignore radiant because it's not Undead Fortitude proper.
Undead Fortitude (no mods) <-- radiant damage and critical rolls would still get save in this case.

Very awesome! Thank you, I will test it out and let you know if I have issues.

kreppulun
June 30th, 2023, 19:50
This is an awesome extension, first off. I was messing around with it today and had a hiccup. I didn't know if it was me or the ext.

When I apply the trait to another NPC and they fail the save, it applies what was rolled on the d20 for the save as damage instead of the original damage roll. See Image 1. It will kill the NPC if the "new damage" is high enough, but won't if it isn't.
58023

JustinFreitas
July 1st, 2023, 00:42
This is an awesome extension, first off. I was messing around with it today and had a hiccup. I didn't know if it was me or the ext.

When I apply the trait to another NPC and they fail the save, it applies what was rolled on the d20 for the save as damage instead of the original damage roll. See Image 1. It will kill the NPC if the "new damage" is high enough, but won't if it isn't.
58023

Thanks for the bug report! I'll try and fix it over the weekend.

JustinFreitas
July 1st, 2023, 15:53
Hey kreppulun... I pushed up a fix for that issue with the damage on FGU. The problem was that I was incorrectly cobbling together the damage roll, so instead, I now use the original and just modify it before damage application. It's up on the Forge and it's v2.0.1. I really appreciate you taking the time to report the issue. Sorry for causing you problems and I hope the extension serves you well. Lemme know if you have any more problems.

Farratto
August 29th, 2023, 14:03
Really like the addon by the way. Huge time saver. I just wanted to report some unexpected behavior I found. I don't want you to think this is a complaint or me asking for a fix. I can work around this problem easily by rolling manual saves (or doing the math in my head). I just thought that if I had written this extension, I would want to know about this.

So I DM with a combination of players, some of which like to use real dice IRL and some like to use the FG interface. So often what I end up doing is that they tell me what they rolled for damage, and I type the number into the "Modifier" box in the lower left corner, and then drag it on to the "Wounds" category on the appropriate NPC on the combat tracker. FG understands this as damage being done to that NPC.

When I do this to a creature with Undead Fortitude, with your extension running, and it is enough damage to down the creature: It sets off the con save as expected. It sets the DC of the con save correctly. BUT it adds the damage as a bonus to the con save roll.

For example:
Zombie has a Con modifier of +3.
Zombie has 5 current hit points (with a max of 22).
PC hits Zombie for 7 dmg.
Undead Fortitude extension sets off DC12 Con save and rolls 1d20+10.
(Expected in this situation would be 1d20+3).


Thank you very much for your time and consideration.

JustinFreitas
August 29th, 2023, 16:02
Thanks for the report! I'll look into it ASAP. :)

MrDDT
August 29th, 2023, 18:45
Really like the addon by the way. Huge time saver. I just wanted to report some unexpected behavior I found. I don't want you to think this is a complaint or me asking for a fix. I can work around this problem easily by rolling manual saves (or doing the math in my head). I just thought that if I had written this extension, I would want to know about this.

So I DM with a combination of players, some of which like to use real dice IRL and some like to use the FG interface. So often what I end up doing is that they tell me what they rolled for damage, and I type the number into the "Modifier" box in the lower left corner, and then drag it on to the "Wounds" category on the appropriate NPC on the combat tracker. FG understands this as damage being done to that NPC.

When I do this to a creature with Undead Fortitude, with your extension running, and it is enough damage to down the creature: It sets off the con save as expected. It sets the DC of the con save correctly. BUT it adds the damage as a bonus to the con save roll.

For example:
Zombie has a Con modifier of +3.
Zombie has 5 current hit points (with a max of 22).
PC hits Zombie for 7 dmg.
Undead Fortitude extension sets off DC12 Con save and rolls 1d20+10.
(Expected in this situation would be 1d20+3).


Thank you very much for your time and consideration.

2 ways you can fix this currently with low effort.

1) You can put the 7 dmg in modifier, then drag it to chat, then drag it onto wounds, instead of into modifier to wounds. Adds one step of doing to chat first, then wounds.

2) You can have the player use "manual roll" and them put in the amount themselves and it will just say manual roll in chat.

JustinFreitas
August 29th, 2023, 20:45
I think I have a fix for it where I clear out the Modifier just before issuing the UF saving throw. Since that saving throw is really independent of the Modifiers applied to the damage (the DC isn't but the saving throw itself is), I think that should work to not modify the save (but having already used the modifier for damage). Anyway, I'll keep testing with this to see if it works in all cases and doesn't break other things. More soon...

JustinFreitas
August 30th, 2023, 02:56
Ok, go ahead and update (or get it from GitHub if you are FGC). Lemme know if you have any more issues. Thanks!

MrDDT
August 30th, 2023, 21:14
Ok, go ahead and update (or get it from GitHub if you are FGC). Lemme know if you have any more issues. Thanks!

Update is working as intended for me.

JustinFreitas
August 30th, 2023, 21:16
Thanks for double checking MrDDT. I did forget to mention, it's 2.0.4 now.

Farratto
September 2nd, 2023, 14:25
Apologies for delayed response. I was expecting to get email notifications of responses. I need to check my settings. This works great. Thank you so much for your swift replies and actions!

MrDDT
April 15th, 2024, 05:51
So I'm having a pretty niche issue, where this is conflicting with Requested Rolls suppressed roll option.

I was wondering if you could look into it.

When a creature has UF, and you trigger it by doing enough damage to kill it, it rolls a save, the rolls get output into chat correctly, however, when using Requested Rolls "Suppress Dice Animations: On" option, this does not trigger the death on a failure.

Suppress Dice Animations, make it so that you don't see dice rolls anymore.

Now I think this issue lies where I had issues with another ext, that it was not converting the roll to a string or something, and the Author of RR said to have the other author make sure to convert the rolls that are done to strings before rolling them. (like called rolls not the ones that players or the GM's do but the ones that happen on a trigger like UF does, only this was an issue with Rolling Mirror.)


You can see the post here about it, but I think its the same type of issue. I don't know how much work this would be for such a small user base using this option and both of these exts together, but if you could I would like to see if we can get it fixed.

https://www.fantasygrounds.com/forums/showthread.php?70407-5E-Requested-Rolls&p=707838&viewfull=1#post707838

JustinFreitas
April 16th, 2024, 01:21
I'll give it a look. Thanks for the report.

JustinFreitas
April 16th, 2024, 04:46
I would like to see if we can get it fixed.

Get the new one from the Forge, v2.0.5. Lemme know what you think. -J

MrDDT
April 16th, 2024, 06:24
Get the new one from the Forge, v2.0.5. Lemme know what you think. -J

Wow nice work that was fast.

So glad I can suppressed rolls again, speeds up my games greatly!!!

bwatford
September 25th, 2024, 04:57
Seen a few undead fortitude errors in the console since the 2024 update, mostly when forcing a saving throw versus a spell regardless if undead or not.

Disabled this one for the moment.

JustinFreitas
September 25th, 2024, 05:21
I’ll look into it. Thanks.

JustinFreitas
September 25th, 2024, 14:41
Seen a few undead fortitude errors in the console since the 2024 update, mostly when forcing a saving throw versus a spell regardless if undead or not.

Hi. I've tried to recreate this and have been unable to see the error. I've tried with both the 5e Legacy and 2024 setting for the Game: Rules Version option and it works both ways. I'm guessing there is something else you have loaded in that Undead Fortitude might be conflicting with... can you provide the error log when it happens? Or maybe provide detailed steps on recreation so that I can get to see the problem to fix it? Thanks. I'll put a link to an animated gif showing it operating properly in my limited testing. Otherwise, yeah... running with this turned off is fine too as it only even comes into effect once in a while and should be easy enough to do manually.

https://justin.dynu.com/files/UndeadFortitudeNoErrorWithLatestBuild.gif

bwatford
September 25th, 2024, 20:43
Hi. I've tried to recreate this and have been unable to see the error. I've tried with both the 5e Legacy and 2024 setting for the Game: Rules Version option and it works both ways. I'm guessing there is something else you have loaded in that Undead Fortitude might be conflicting with... can you provide the error log when it happens? Or maybe provide detailed steps on recreation so that I can get to see the problem to fix it? Thanks. I'll put a link to an animated gif showing it operating properly in my limited testing. Otherwise, yeah... running with this turned off is fine too as it only even comes into effect once in a while and should be easy enough to do manually.

https://justin.dynu.com/files/UndeadFortitudeNoErrorWithLatestBuild.gif

I am not seeing it now either, it was happening when a Redcap was biting a drow player and forced him to make a con save, it would not let me apply the ongoing bleed effect and through the undead fortitude error, maybe it has been resolved and something else was causing it.

Will keep my eye on it.

JustinFreitas
September 25th, 2024, 20:45
Awesome, thanks! Yeah, all the interaction between extensions that not everyone has can be tricky to debug. Lemme know if you come up with the repeatable case and I'll see about getting it fixed up for ya. I hope your games go good otherwise and that you are having fun. Talk to you later.

charmov
February 24th, 2025, 02:11
Got some advice from another user about automating Strength of the Grave feature of the shadow sorcerer (5elegacy) with this extension.


Strength of the Grave
Starting at 1st level, your existence in a twilight state between life and death makes you difficult to defeat. When damage reduces you to 0 hit points, you can make a Charisma saving throw (DC 5 + the damage taken). On a success, you instead drop to 1 hit point. You can't use this feature if you are reduced to 0 hit points by radiant damage or by a critical hit.

After the saving throw succeeds, you can't use this feature again until you finish a long rest.

It works like Undead Fortitude but triggers a charisma save. I'm not sure how to change it, if it can be changed.

Great extension by the way, Thank you!

JustinFreitas
February 24th, 2025, 02:22
I think I could add that in. I'll check it out and let you know how it goes.

charmov
February 24th, 2025, 02:29
Thanks for all you've done!

JustinFreitas
February 24th, 2025, 15:20
I made a new extension for Strength of the Grave... it was easier for me that way. You can find it here, lemme know if you have any issues.

https://forge.fantasygrounds.com/shop/items/2088/view

charmov
February 24th, 2025, 18:42
Awesome, I'll let you know if i run into any issues. Thanks!

MrDDT
April 8th, 2025, 03:55
I saw an update for this, but not sure what it was for.

EDIT. Read this in the Readme. NICE!

- v2.0.6 - Any chat messages that are only displayed to the GM should have the red eye icon ('secret = true').

Thank you.

JustinFreitas
April 8th, 2025, 04:11
Request from rocketvaultganes. I’ll be doing it to a handful of extensions. Minor change for consistency.

MrDDT
April 8th, 2025, 04:26
Request from rocketvaultganes. I’ll be doing it to a handful of extensions. Minor change for consistency.

Thank you so much, it's a good update. Helpful for GMs to know when a msg is going out to players and when its just for them.

Arnagus
June 14th, 2025, 12:59
Hello Justin,
we were observing in the last session some strange behavior with this extension and mattekure's Indicators (https://forge.fantasygrounds.com/shop/items/1603/view). Issue was later confirmed with just those two extensions loaded.
When a Zombie rolled for CON/Undead Fortitude (the save is still shown in chat, see picture), the result was not compared against DC5+damage but always succeeded (or rather: was not processed) and no damage was applied. They killed the poor guy 3-4 times before we noticed how "tough" he was :)
Please check with mattekure what might cause the incompatibility - there is no error in the logs, so I guess both of you overwrite the same function.

https://www.fantasygrounds.com/forums/attachment.php?attachmentid=64584&d=1749902215
64584

JustinFreitas
June 15th, 2025, 13:13
Hello Justin,
we were observing in the last session some strange behavior with this extension and mattekure's Indicators (https://forge.fantasygrounds.com/shop/items/1603/view). Issue was later confirmed with just those two extensions loaded.
When a Zombie rolled for CON/Undead Fortitude (the save is still shown in chat, see picture), the result was not compared against DC5+damage but always succeeded (or rather: was not processed) and no damage was applied. They killed the poor guy 3-4 times before we noticed how "tough" he was :)
Please check with mattekure what might cause the incompatibility - there is no error in the logs, so I guess both of you overwrite the same function.

https://www.fantasygrounds.com/forums/attachment.php?attachmentid=64584&d=1749902215
64584

Yeah, we both have our own handlers for the save results. Unsure if/when I'll do anything about this but thanks for the heads-up on the conflict.

bwatford
February 20th, 2026, 04:41
Did this issue ever get resolved between Indicators and Undead Fortitude?

JustinFreitas
February 20th, 2026, 23:03
No but I'll take a peek this weekend and see what I can do.

JustinFreitas
February 23rd, 2026, 14:58
I pushed up a change that should fix things for you. If not, we can roll it back to the way it was. You should see v2.1.0 now in the chat when it loads up. Good luck.

nephranka
March 19th, 2026, 00:17
It looks like on TEST this is no longer working. Add to that the Relentless Endurance ext. Both exts seem to just not work (silent fail).

Just passing the info a long.

JustinFreitas
March 19th, 2026, 00:19
It looks like on TEST this is no longer working. Add to that the Relentless Endurance ext. Both exts seem to just not work (silent fail).

Just passing the info a long.

lol... we were overdue to get broken. I'll see what I can do. Thanks for the heads-up.

JustinFreitas
March 19th, 2026, 14:51
Looks like they changed the way damage is applied so I'll have fixes for this (Undead Fortitude), Relentless Endurance, and Strength of the Grave. Still need to do some testing but I do have them working in the test environment again. More soon...

JustinFreitas
March 19th, 2026, 20:14
I pushed the three fixed extensions up to Test. If you get to try any of them again, you should see them as working now. They are backward compatible with what's in the Live environment, so I'll push them out globally after a bit more testing. Thanks again for the heads-up.

nephranka
March 19th, 2026, 23:16
I pushed the three fixed extensions up to Test. If you get to try any of them again, you should see them as working now. They are backward compatible with what's in the Live environment, so I'll push them out globally after a bit more testing. Thanks again for the heads-up.

Thanks! On TEST:
RE is working but UF seems to roll the save but does not include the DC and did not set the HPs to 1?

nephranka
March 19th, 2026, 23:20
Same on LIVE

JustinFreitas
March 19th, 2026, 23:46
Thanks for checking. I'll see where I went wrong with UF tonight and get it straightened out.

JustinFreitas
March 20th, 2026, 00:06
Huh, after updating Test, I see it pulled the new extension version and I'm able to see the save handling occur for both the success and failure cases. I wonder if there is yet another conflict with something? I'll keep looking at it and see if the AI can find any reasons for that behavior. More soon...

66845

JustinFreitas
March 20th, 2026, 03:24
AI found an issue that it fixed so I pushed up a new build to Test. Check for v2.1.2 which has the latest change. Hopefully, the save results will be handled now. Made the same change to Strength of the Grave too. Relentless Endurance didn't have the problem.

nephranka
March 20th, 2026, 10:16
Still seeing 2.1.1 on test.

JustinFreitas
March 20th, 2026, 14:50
Ok, thanks... I must've made another mistake. I'll look today.

JustinFreitas
March 20th, 2026, 15:12
Yeah, I didn't rebuild UF and had submitted the same one as the attempt prior... ugh. Anyway, it's been added now and should reflect 2.1.2. Let's hope the fix works too... would be nice to have this out of the way. Thanks again.

nephranka
March 20th, 2026, 15:40
Ok, thanks... I must've made another mistake. I'll look today.

Looks like 2.1.2 made it to test and it is working!

Thanks!

bwatford
May 7th, 2026, 07:29
Got this one tonight after the update:

[ERROR] Handler error: [string "UndeadFortitude:scripts/undeadfortitude.lua"]:429: attempt to call upvalue 'ActionDamage_applyDamage' (a nil value)

JustinFreitas
May 7th, 2026, 12:30
Ok, thanks. This round of updates has required some adjustments.

Moon Wizard
June 4th, 2026, 01:28
This extension has been retired.
Similar behavior has been included in the core 5E ruleset.

Regards,
JPG