4 Attachment(s)
5E - Theogeek's Natural 20
!!! This has been moved to the forge !!!
As always, let me know if something's wonky. I try to test most use cases, but invariably miss some.
Current Version: 6.4
-=-=-=-=-=-=-=-
VERSION UPDATE
6.4: Added option to allow Nat20's to ignore crit immunity (per RAW, defaults to "Yes")
6.3.1: Fixed bug in how effects were restored
6.3: Add PFRPG2-Legacy support
6.2: Bugfix for conflict with Clock Adjuster extension.
6.1.6: Fix PFRPG2 output of "[NATURAL 20]"
6.1.5: Cleanup code and fix PF2 bug. It works, but doesn't display [NATURAL 20].
6.1.4: Bugfix to handle ADV/DIS correctly. Thanks for the report MrDDT and nephranka!
-=-=-=-=-=-=-=-
TERMS:
- normal critical refers to a critical hit that is not a natural 20.
- nat20 refers to a critical hit that is a natural 20.
- super critical refers to a critical hit that even affects crit immune targets
-=-=-=-=-=-=-=-
OPTIONS:
- Nat20's ignore crit immunity: [Yes* / No]
- Shift-click Damage behavior: [Natural 20* / Normal Critical]
-=-=-=-=-=-=-=-
Effects would look like this:
- DMG: 4d6 nat20
- DMG: 1d8 fire,nat20
- DMG: 1d6 normalcrit
- DMG: 1d12 supercrit
- DMG: 1d12 nat20
etc...
IMPORTANT NOTE: If you are adding these new types as EFFECTS rather than as weapon damage, they can be combined, but take care how you do it. The ruleset effects parser will combine effects based on the first damage type so you may get undesired results. Experiment a bit with how it turns out, but some things aren't possible with this extension - if all of the above effects were added to a character, the last two d12s would be combined as 2d12 supercrit,nat20.
In other words, don't get too fancy with the spices when using effects.
-=-=-=-=-=-=-=-
DETAIL:
I created this extension to give the user the ability to distinguish between a normal critical and a natural 20, mainly to handle the case of weapons that do extra damage when a natural 20 is rolled. Critical hits and natural 20s are like rectangles and squares…all natural 20s are criticals, but not all criticals are natural 20s. So, while a nat20 is a critical hit, it is sometimes handled differently than other critical hits. For example, a sword of sharpness deals extra damage only if a 20 is rolled (14 or 4d6 depending on the rules you are using – I like 4d6.)
Using the standard FantasyGrounds mechanic, you could add an effect like this:
DMG: 4d6 critical
… which would be fine for most cases, except for characters with a wider crit range – some score critical hits on 18, 19, or 20. Swords of sharpness should NOT do extra damage on anything but a natural 20, even though for some characters an 18 or 19 is a critical hit.
This extension adds three damage types, one of which is nat20, such that you can now add this effect:
DMG: 4d6 nat20
… and that damage will only be triggered if the attack roll is a natural 20.
Another type is normalcrit. When the parser encounters this:
DMG: 1d4 normalcrit
… it will apply it on a critical hit that is NOT a natural 20.
The last type is supercrit When the parser encounters this:
DMG: 1d4 supercrit
... it will apply it on any critical hit, even against targets that are crit immune.
These types allow combinations like this to be added (as effects or to weapon damage):
DMG: 2d6 slashing
DMG: 1d4 normalcrit
DMG: 1d8 nat20
DMG: 1d6 supercrit
DMG: 1d10 supercrit,normalcrit
DMG: 1d12 supercrit,nat20
… which would result in the following damage if everything were added at once:
on a non-critical roll: 2d6
on a normal critical roll: 2d6 + 1d4 + 1d6 +1d10 (with the 1d6 damaging even crit immune targets)
on a natural 20: 2d6 + 1d8 + 1d6 + 1d12 (with the 1d6 and 1d12 damaging even crit immune targets)
-=-=-=-=-=-=-=-
USAGE NOTES:
Given the way Fantasy Grounds parses damage clauses, this extension really only works if you DO NOT specify the damage type along with the nat20modifier. FantasyGrounds combines damage of like types and that is not always desired. So, unless you want the nat20 damage to be of a different type than the standard damage of the weapon, do not specify it. For example…
DMG: 4d6 nat20 (this will inherit the weapon damage type)
DMG: 1d8 critical (this will also inherit the weapon damage type)
not
DMG: 4d6 slashing,nat20
DMG: 1d8 slashing,critical
That combination screws up the output because FantasyGrounds combines those damage types and strange things happen in this case. :)
-=-=-=-=-=-=-=-
EXAMPLE:
“Test Dood 1” is a mighty half-orc barbarian with a crit range of 19-20. He is using a longsword (1d8 slashing damage), and has the following effects applied to him because of the sweet demonstration sword he is using:
• Every hit does 1d4 fire damage
• All Critical hits (including natural 20s) do 1d6 lightning damage
• Normal critical hits (not natural 20s) do 1d8 poison damage
• Natural 20’s do 2d12 weapon damage
Here he is (from the combat tracker):
https://www.fantasygrounds.com/forum...chmentid=38953
On a non-critical hit, the damage is expected to include only the d8 (normal damage from the longsword) and the d4 (fire damage from the effect). The other effects only apply for critical hits or for natural 20s. This is shown here:
https://www.fantasygrounds.com/forum...chmentid=38954
Next is the normal critical hit. We would expect to see the 2d8 (longsword, one extra critical die), the 2d4 (fire, one extra for the critical), and now the d6 (lightning, no extra because it only rolls on a critical) and the d8 (poison, also no extra for the same reason) applied. This is shown here:
https://www.fantasygrounds.com/forum...chmentid=38956
And finally, a natural 20. This time, we would expect to see the 2d8 (longsword), the 2d4 (fire), the d6 (lightning), NOT the d8 (poison), and the 2d12 (no extra rolls because they are only rolled on a nat20) damage applied. This is shown here:
https://www.fantasygrounds.com/forum...chmentid=38955
Some notes.
- Don't get too fancy with the spices when creating damages. Some combinations can cause weird behavior.
- This extension does not modify any core ruleset code, instead, it hijacks certain functions and modifies the damages before and after the ruleset functions have done their work. This makes it far less likely to break if the ruleset code changes, and would likely only break if the ruleset changed the format of its output.
Enjoy!