Features
Flames of Phlegethos
Reroll 1s on fire spell damage. You must keep the new roll, even if it is another 1.
Elemental Adept (multi-type)
For each chosen damage type: treat any remaining 1s as 2s on matching spell damage, and ignore resistance to those types (built-in — no extra extension required).
Processing order when both effects are present: Flames of Phlegethos first, then Elemental Adept.
Install (GM does this)
Close the campaign (or FGU), then run this one-liner in PowerShell.
It downloads the latest package from GitHub Pages, verifies SHA256,
unzips, and copies FireSpellFeats.ext into your Fantasy
Grounds User Data folder.
irm https://sdshooter.github.io/FantasyGrounds-Feats/install.ps1 | iex
This uses
%APPDATA%\SmiteWorks\Fantasy Grounds\extensions by
default.
Alternative: manual install or custom User Data folder
Download the zip, unzip, then either:
-
Run
.\install.ps1from the extracted folder, or -
Edit
install.ps1to point at your custom User Data location.
$UserData = Join-Path $env:APPDATA 'SmiteWorks\Fantasy Grounds'
$ExtDir = Join-Path $UserData 'extensions'
New-Item -ItemType Directory -Force -Path $ExtDir | Out-Null
Copy-Item -Force .\FireSpellFeats.ext $ExtDir
After install: open the campaign as GM → campaign extension list → enable Fire Spell Feats. Players receive it automatically.
Character setup (player)
On your character sheet, add a lasting Self effect. Preferred unified form:
Elemental Adept: fire, cold; Flames of Phlegethos
Other accepted forms:
Elemental Adept: fire
Elemental Adept: fire,cold,lightning
Elemental Adept: fire; Flames of Phlegethos
You can also stack separate lasting effects (Elemental Adept: fire
and Elemental Adept: cold); types are merged.
Ignore resistance is automatic for every type
listed after Elemental Adept:. You do
not need a separate
IGNORERESIST: fire effect.
What you should see
On a qualifying damage roll, the description may gain tags like:
[Flames of Phlegethos reroll x2][Elemental Adept 1 as 2 x1][Elemental Adept ignore resist: fire][Elemental Adept ignore resist: cold]
When resistance is skipped at apply time, the combat message may
also show [RESISTANCE IGNORED] (same style as community
ignore-resist extensions).
How ignore resistance works
When you deal spell damage and have Elemental Adept types, this extension:
-
Marks the target’s matching
RESISTentries (andRESIST: all) with an ignore list for those adept types — using the sameaIgnoredpattern asIGNORERESIST:<type>. - Hooks the 5E reduction helpers so a marked resistance does not halve damage for those types.
- Does not bypass immunity or change vulnerability (PHB Elemental Adept only ignores resistance).
Weapon damage is not rewritten and does not get the spell-path ignore session.
Limitations
- Test in your campaign before relying on it at the table.
- Mixed damage types on one roll (fire + radiant) may adjust all dice on that roll when an adept type is present.
- Spell vs weapon detection is heuristic.
-
May conflict with other extensions that also replace the
damageresult handler or wrapgetDamageResistances/ reduction helpers. Load order is 260.
Tests
Offline Lua 5.1 unit tests (no Fantasy Grounds required):
./tests/run_tests.sh
They mock FGU effect/damage APIs and cover multi-type Elemental Adept, separate adept effects, FoP-then-EA order, type isolation, and ignore-resistance markers.