@ -1,380 +1,85 @@ Fire Spell Feats — Fantasy Grounds 5E

Fire Spell Feats

Fantasy Grounds Unity (5E) — Automates Elemental Adept (any energy type + ignore resistance) and Flames of Phlegethos.

v{{ VERSION }} SHA256 {{ SHA256 }}

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.ps1 from the extracted folder, or
  • Edit install.ps1 to 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:

  1. Marks the target’s matching RESIST entries (and RESIST: all) with an ignore list for those adept types — using the same aIgnored pattern as IGNORERESIST:<type>.
  2. Hooks the 5E reduction helpers so a marked resistance does not halve damage for those types.
  3. 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 damage result handler or wrap getDamageResistances / 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.

Built {{ BUILT_AT }} · zip · .ext · install.ps1 · GitHub