Skip to content
clebertPublic

About

A World of Warcraft Forever addon that makes action buttons respond visually to gameplay situations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Prism

A World of Warcraft Forever addon that makes action buttons respond visually to gameplay situations.

Prism

Features

General

  • Player buffs: Highlights an action button while the player has a buff with the same client spell ID.
  • Healing: Highlights bandages while the heal target has full health. A usable bandage blinks red while the heal target has a poison debuff.
  • Poison cleansing: Glows Anti-Venom, Strong Anti-Venom, Powerful Anti-Venom, and Potent Anti-Venom while the item is usable and the heal target has a poison debuff.
  • Disease cleansing: Glows Simple Poultice, Clever Poultice, Superior Poultice, and Powerful Poultice while the item is usable and the heal target has a disease debuff.

Warrior

  • Own target debuffs: Rend — Highlights while the target has the player's debuff.
  • Shared target debuffs: Hamstring, Demoralizing Shout, Thunder Clap — Highlights while the target has the matching debuff.
  • Shared target debuff stacks: Sunder Armor — Highlights when fully stacked.
  • Tanking: Taunt, Mocking Blow, Challenging Shout — Highlights while the player tanks the target.
  • Usable attacks: Execute, Overpower, Revenge, Victory Rush — Glows while the spell is usable.
  • Interrupts: Shield Bash — Glows during a hostile target cast or channel while the spell is usable.
  • Fear warning: Intimidating Shout — Blinks red while the spell is usable and the hostile target has Rend or Deep Wound from any caster.

Hunter

  • Own target debuffs: Serpent Sting — Highlights while the target has the player's matching debuff.
  • Shared target debuffs: Hunter's Mark, Concussive Shot, Wing Clip, Scorpid Sting, Viper Sting — Highlights while the target has the matching debuff from any caster.
  • Sting replacement warning: A usable Serpent Sting, Viper Sting, or Scorpid Sting blinks red while the target has the player's different sting. Another hunter's sting does not activate the warning.
  • Usable attacks: Mongoose Bite, Counterattack — Glows while the spell is usable.
  • Threat reduction: Disengage — Glows while the player tanks a living hostile target and the action is usable.
  • Pet healing: Mend Pet — Highlights while the player's living pet has full health. The highlight does not require a usable action.
  • Pet feeding: Feed Pet — Highlights while the living pet is Happy or has the Feed Pet Effect buff. Action usability does not affect the highlight. Glows only without the buff, while the action is usable and the living pet is below Happy and out of combat.
  • Pet revival: Revive Pet — Highlights while the player's pet is alive. The highlight does not require a usable action.

The client exposes three pet happiness states. Feed Pet uses the highest state, Happy, not an exact happiness percentage. The active Feed Pet Effect buff suppresses the glow and keeps the highlight.

Installation

  • Download Prism from CurseForge.
  • Extract Prism into the Interface/AddOns/ directory for the Forever client.
  • Restart WoW, or type /reload if the game is open.

Architecture

The main file selects the shared rules and the current class rules. The core contains no class-specific branches.

File Responsibility
Core.lua Implements action matching, mechanics, visuals, secure aura containers, placement, and refresh control.
Shared.lua Defines class-independent rules and item IDs.
Classes/Warrior.lua Defines Warrior spell IDs, aura IDs, and feedback rules.
Classes/Hunter.lua Defines Hunter spell IDs, aura IDs, and feedback rules.
Prism.lua Selects the rules and starts the core.

The TOC loads these files in that order. Add each class file after Shared.lua and before Prism.lua in Prism.toc.

Rules

Each rule defines a unique key, an action selector, a condition, and a visual.

Action selectors match spell IDs, item IDs, or item categories. The shared self-buff rule matches any spell action.

Spell selectors also match the base spell ID. Aura filters match only their declared IDs.

Keep action IDs separate from aura IDs. Set includeActionSpellID only when the action can also identify the aura.

Several rules can apply to one action. Each aura rule uses a separate secure container for its filter and alpha.

Mechanic Condition
aura A declared buff or debuff is active on the selected unit.
aura-stacks A declared aura reaches the specified application count.
dispel-type A debuff with the specified dispel type is active on the selected unit.
alive The selected unit exists and is alive.
full-health The selected unit exists, is alive, and has full health.
pet-happiness The living pet matches the declared happiness state or is below it when below is true.
usable The action is usable.
target-cast A living hostile target casts or channels, and the action is usable.
tanking The player tanks the living hostile target.

The unit can be player, pet, target, or heal-target. The heal target is an assistable current target, or the player if no assistable target exists.

Set requireUsable on a rule to require a usable action. Set ownAura with the PLAYER filter to restrict the caster. Set outOfCombat on a pet-happiness condition to require the pet to be out of combat. Set suppressGlow to a glow rule key on an aura rule. Place the aura rule after the glow rule. The secure aura container suppresses the glow with a texture mask.

The visuals are highlight, red-blink, and glow. The core keeps condition alpha separate from animation alpha.

Validation

Use Lua 5.1 for the syntax checks and tests.

luac5.1 -p Prism.lua Core.lua Shared.lua Classes/*.lua tests/*.lua
lua5.1 tests/fear-warning.lua
lua5.1 tests/hunter.lua
lua5.1 tests/mechanics.lua
lua5.1 tests/rules.lua
lua5.1 tests/runtime.lua
bash -n install.sh
bash -n tests/install.sh
bash tests/install.sh

The mock checks rule configuration, visual construction, action matching, event registration, placement, and refresh intervals. It does not reproduce aura selection, texture rendering, or client security restrictions. Spell-ID assertions preserve the declared lists. They do not verify the IDs against client data.

Client checks

Before release, verify the declared spell IDs in version-matched SpellName and SpellEffect data. This verification must use the exact Forever client build.

Run ./install.sh to install every source file listed in the TOC. Set PRISM_ADDON_DIRECTORY to install in another directory. Use /reload, then run every applicable client check in and out of combat. The checks must produce no Lua error or blocked-action error.

Feature Check Expected result
Player buffs Apply and remove a buff that matches the action spell ID. The highlight appears only while the buff is active.
Own target debuffs Compare the player's Rend or Serpent Sting with another caster's copy. Only the player's debuff activates the highlight.
Shared target debuffs Compare Viper Sting and Scorpid Sting from different hunters. Test the other declared shared debuffs. Each caster's matching debuff activates the highlight.
Sting replacement warning Apply each sting from the player and another hunter. Change the action usability and target. Only the player's different sting activates the red warning on a usable action. The matching sting and another hunter's stings do not activate it.
Aura stacks Change Sunder Armor from four stacks to five stacks, then back to four stacks. The highlight appears only at five stacks.
Fear warning Apply and remove Rend or Deep Wound from different casters. Change Intimidating Shout usability and target hostility. The warning blinks red only with a matching hostile target debuff and a usable action.
Dispel feedback Test poison and disease on the player and an assistable target. Remove the debuff or make the action unusable. Bandages blink for poison. Cleansing items glow for their declared dispel type. No debuff or an unusable action hides the visual.
Bandage health Test full health, partial health, a dead friendly target, and no assistable target. Only a living heal target at full health activates the highlight. No assistable target selects the player.
Pet health Change pet health. Dismiss, replace, or kill the pet. Make Mend Pet unusable. Only a living pet at full health activates the highlight. Usability does not affect the highlight.
Pet feeding Test each happiness state with and without the Feed Pet Effect buff. Dismiss, replace, or kill the pet. Change Feed Pet usability. Change pet combat separately from player combat. Happy or the active buff activates the highlight, regardless of usability or pet combat. The active buff suppresses the glow. Without the buff, the glow requires a living pet below Happy and out of combat, with a usable action.
Pet revival Test a living pet with full or partial health. Dismiss, replace, or kill the pet. Make Revive Pet unusable. Only a living pet activates the Revive Pet highlight. Pet health and action usability do not affect the highlight.
Usable attacks Change the usability of each declared usable attack. The glow appears only while the action is usable.
Interrupts Test hostile casts, hostile channels, no cast, a friendly target, and a dead target. Change Shield Bash usability. Only a usable Shield Bash glows for a living hostile target cast or channel.
Warrior tanking Gain and lose target threat. Select a friendly target, a dead target, or no target. Only tanking a living hostile target activates the highlight. Action usability does not affect the highlight.
Threat reduction Gain and lose target threat. Change Disengage usability. Select a friendly target, a dead target, or no target. Disengage glows only while the action is usable and the player tanks a living hostile target.
Placement Test every supported bar. Change UI scale, button size, bar visibility, action pages, and spell placement. Each visual stays aligned with its button. Hidden bars and replaced actions leave no stale visual.

About

A World of Warcraft Forever addon that makes action buttons respond visually to gameplay situations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages