BABUNI.DEV

ResistForever / Overview

ResistForever: Overview

Resist Forever

Resist Forever explains how a character's or pet's magical resistance might affect direct spell damage. Hover Fire, Nature, Frost, Shadow or Arcane resistance in the character/pet panel to see the chance of each 10% damage-resisted outcome, together with base spell miss against an attacker of a given level.

It extends the existing Blizzard tooltip instead of replacing it, so the game's original resistance information stays visible.

Install

Place the files in a folder named ResistForever under your client's Interface/AddOns directory:

Interface/
└── AddOns/
    └── ResistForever/
        ├── ResistForever.toc
        └── ResistForever.lua

Enable Resist Forever in the game's addon list and open your character sheet. Hover a resistance row, or open the pet character panel and hover its corresponding resistance row. No slash commands or settings screen are defined by the current source; the addon does not write SavedVariables.

The v1.0.2 GitHub release was published October 20, 2026, but GitHub's release metadata lists no attached downloadable asset. Use the repository source rather than assuming a release ZIP exists. This build targets the specific Forever UI conventions used by CharacterStatFrameScrollBoxIconElementMixin, PaperDollStatTooltip and the 16001 interface—not ordinary Vanilla 1.12 or modern retail WoW by default.

How to read the tooltip

The addon appends a Resist Forever section below Blizzard's native tooltip. It can show two contexts:

For each context it lists only non-negligible, non-zero 10%, 20%, ... 100% damage resisted probabilities. The 0% damage resisted outcome exists internally but is intentionally hidden in the tooltip. Percentages are rounded to one decimal; suppressed/rounded-zero rows mean the visible rows do not necessarily sum to 100%.

The final Base spell miss row is a level-difference estimate before any enemy spell-hit bonuses. It is separate from resistance-based partial damage reduction: a missed spell is not the same as a landed spell suffering a partial resist.

A simple model illustration, not an observed client combat test: 90 resistance against a level-10 attacker has an average resisted fraction of 90 / (90 + 9 × 10) = 0.5. Under the middle-range triangular distribution, its visible nonzero outcomes are 40% damage resisted: 25% chance; 50%: 50%; 60%: 25%. At equal attacker/defender level, modeled base spell miss is 4%. Actual gameplay differs with spell-specific mechanics and unobserved enemy stats.

Current Forever beta formulas

The source intentionally uses the October 20 v1.0.2 formulas, not the earlier Classic model:

Quantity Current behavior
Average fraction of direct spell damage resisted a = R / (R + 9L), for positive readable defender resistance R and attacker level L
Partial outcomes 0%, 10%, 20%, ... 100% resisted; 0% is calculated but not shown
Middle of distribution P(x) = max(0, 0.5 - 2.5 × abs(x - a)), for discrete steps x
Near the 0% / 100% edges Separate closed-form three-bucket distributions prevent edge loss
Base spell miss, defender minus attacker level d ≥ 3 17%, under this current Forever model
Base spell miss, d < 3 max(0, 4% + d × 1%)
Minimum unavoidable miss chance None assumed: a calculated 0% is allowed and omitted from visible rows

These formulas reflect the Forever beta model documented in the current code and v1.0.2 changelog. They aren't an independently verified guarantee for every server state, spell or future patch. In particular:

Player, pet, live values and safe fallbacks

The source recognizes resistance rows by their Fire/Nature/Frost/Shadow/Arcane atlases and classifies them under the player or pet statistics scroll box. For resistance it prefers the frame's already-readable numericValue; otherwise it reads UnitResistance (effective value first, then real). It separately obtains the defender's level.

Forever's UI can present secret/protected values. The addon checks value accessibility before calculating and maintains a small session-only cache of previously readable player/pet levels and resistance. If a valid last-known value is used, the tooltip marks it with “Using last available resistance value”. No persistent data or private combat logs are stored.

Changes in target, auras, pet state, equipment, resistance or level trigger attempts to refresh the cache/open tooltip. Hooks are installed through hooksecurefunc rather than wholesale replacement of Blizzard's original tooltip routine. There may be updates delayed by the client or missing when data is inaccessible; stale results are identified instead of silently treated as fresh.

History and limitations

September 28 — 1.0.0: First implementation, initially using Classic-style resist outcome buckets. October 12 — 1.0.1: Pet support and an updated Classic PvP/PvE split for level-based misses. October 20 — 1.0.2: Replaced those estimates with the present Forever beta 10%-step resist and base spell miss models. Those are genuine modeling revisions, not three simultaneous calculation modes.

The repo contains only one runtime Lua file and a TOC, with a .pkgmeta pointer to the manual changelog. No automated test script was found in this repository during the October 27 documentation audit. No game-client test, combat-log statistical validation or runtime code change was performed here. The MIT license is preserved.

Portfolio and development documentation

The original project idea and its creative direction belong to Babuni.dev. This documentation pass provides source interpretation and a publishable development record; it does not invent earlier conversations or claim verified combat behavior.

Document information

Creator: Babuni.dev · Current version: 1.0.2 · Target: World of Warcraft: Forever 1.60.1 · TOC interface: 16001 · License: MIT

View source