BABUNI.DEV

ResistForever / Decisions

ResistForever: Decisions

ResistForever — recorded decisions, revisions and alternatives

Actual implemented evolution

Evidence Observable design/mathematical choice
Sep 28 aceba993 / 1.0.0 Append partial resistance + spell-miss odds to existing character resistance tooltip; initial Classic-like result buckets
Oct 12 c64797aa / 1.0.1 Expand to pet panel; revise Classic miss assumptions to player PvP vs pet/non-player PvE curves
Oct 20 8a9f0961 / 1.0.2 Replace earlier math with Forever beta 10% outcomes, R/(R+9L), and a flat-17%-from-+3 level miss rule without unavoidable floor
Oct 26 eeb7d693, 653b525d, 6c40390c Standardize Babuni.dev author and MIT license copyright
Oct 26 61460f5d, cf910d4a Commit/link first source-grounded documentation

The first two formula models are historical, not selectable alternatives in the current program. The commit record identifies real iterations, but not every human conversation, experiment, or earlier author of a given Lua line.

Key tradeoffs in current code

Embedded tooltip vs independent calculator. By reading the player's selected resistance row, the addon answers a question in context and avoids new persistent UI. It is limited to character/pet sheets and hypothetical attacker levels obtainable from the target.

10%-step distributions vs Classic buckets. Current Forever beta assumptions require eleven discrete outcomes, not old 25/50/75% reductions. This improved model fidelity as understood at October 20, but needs ongoing validation as Forever evolves.

Base miss vs combined hit prediction. The current miss function is expressly pre-spell-hit. Showing it separately from partial resistance avoids falsely pretending to know enemy spell hit and penetration.

Visible probabilities vs complete distribution. The 0% outcome is calculated but not displayed; rows with rounded-zero odds are hidden. This keeps the tooltip shorter, though a user adding visible percentages may be confused without explanatory docs.

Same-level plus target context vs arbitrary input. Only a selected target with a known different level produces a second comparison. A skull target is omitted rather than guessed at an unsupported level.

Secret values vs freshness. Cached last-known data can help show something when values are protected, but may be stale, particularly after pet replacement. The source displays a note and should consider identity-based invalidation if future tests find misleading cases.

Secure hooks and event refresh vs frame replacement. Post-hooks respect Blizzard's UI while relying on exact 1.60.1 mixin/frame names. Updates are event-driven; no polling loop exists. There can be version-specific breakage without breaking the rest of the addon.

MIT licensing: The repository includes an actual MIT LICENSE, with Babuni.dev copyright. Do not claim unlicensed source or rewrite licensing terms during feature work.

Creator decisions still open

Would showing the 0% branch or average reduction make the math clearer? Should a target with unknown level be omitted (current) or assigned user-chosen level (proposal)? Should a pet cache clear on identity changes? Should future clients have locale text tables? Should formula changes be gated by verified version checks?

These are questions and AI-suggested tests, not decisions already made by Babuni.dev. Any eventual choice should be recorded with reasoning, alternatives, code and actual verification.

Document information

Creative decision-maker: Babuni.dev. Evidence standard: Git diffs, source code and changelog; absent original design conversations aren't invented.

View source