# ReactionBar
ReactionBar is a small encounter action bar for **WoW Classic Era** and **TBC Anniversary**. It gives you up to **four secure slots** for items or abilities. Each slot stays hidden or idle until its trigger fires, then it **glows** and can play a **sound** and **on-screen alert** so you know when to react. You still **click the slot or press your keybind** — ReactionBar never casts or uses items for you.
Built for fights where timing matters: enemy casts, debuffs, health thresholds, or a fixed set of skills for a specific encounter (raid bosses, dungeon trash, or world NPCs).
## Install
Copy the `ReactionBar` folder into:
```
World of Warcraft/_anniversary_/Interface/AddOns/ReactionBar/
World of Warcraft/_classic_era_/Interface/AddOns/ReactionBar/
```
Enable it on the character select screen.
## How it works
1. Open **/rb** (also **/reactionbar**; **/rc** works as an alias).
2. Create a **profile** per encounter (e.g. `Hyjal - Anetheron`).
3. Add **enemy names** for auto-arm, bar visibility, and combat-log cast filtering (comma-separated; must match in-game `UnitName` on **your** client language — target, focus, or `boss1`–`boss5`).
4. Assign **items or spells** to slots 1–4 by name, by prefixed ID (`item:38466`, `spell:12345`, or short forms `i:` / `s:`), or by **dragging** from bags, spellbook, or the config slot icon.
5. Pick a **trigger** for each slot: enemy cast start, aura gained, aura lost, player health %, or always visible.
6. Bind keys under **Esc → Key Bindings → ReactionBar → Slot 1–4**.
7. **Arm** the profile before pull (**Arm this** in config, `/rb arm <name>`, or auto-arm when a listed name matches target / focus / boss units).
8. When a trigger fires, the slot lights up. Use your mouse or keybind like a normal action button.
Optional settings (cog next to Close): bar **button size** and **alert sound**. Open **?** (between Settings and Close) for an in-game how-to guide.
## Triggers
- **Enemy cast start** — match a spell ID (combat log, filtered by enemy names when set; also `boss1`–`boss5` cast events)
- **Aura gained / lost** — combat log–based on Classic clients
- **Player health %** — fire at or below a threshold
- **Swing timer** — after your auto-attack lands (or misses), the slot stays active for a **Window** in seconds (decimals allowed, e.g. `0.5`). Optional **Aura ID**: only open that window if the buff is missing on you, or its remaining time is low enough. Optional **Aura ≤**: refresh when remaining time is at most this many seconds; leave blank to use your main-hand weapon speed so the buff can overlap into the next swing (raise it if you prefer an occasional wasted use over a gap).
- **Always visible** — slot stays ready for the whole armed profile (e.g. encounter rotation buttons)
**Duration / Window:** for most triggers, leave blank to stay active while the condition holds; set seconds for a fixed alert window after the trigger. For **Swing timer**, Window is required (how long after the swing the slot stays usable).
Optional **custom alert text**, **glow**, and **sound** per slot.
## Share and import
- **Share** copies a profile string (Ctrl+C from the share field) including name, enemy names, slots, and triggers.
- **Import** pastes that string on another character or client to recreate the profile.
- Spell/item IDs travel fine across languages. **Enemy names are locale-specific** — the export stores your client locale; if someone imports on a different language, ReactionBar warns them to check Enemy names against `UnitName` on their client.
## Profiles and arming
- **One armed profile at a time** — slot 1 is always slot 1; keybinds stay the same while the item/spell and trigger change with the profile.
- **Auto-arm** when enemy names match target, focus, or boss units.
- **Lock the bar** (`/rb lock`) to hide setup chrome; trigger slots stay invisible until they fire. `/rb unlock` to move the bar.
## Important: combat
**Secure buttons cannot change in combat.** Arm before pull (out of combat) so slots are set up correctly. If auto-arm only matches mid-fight, ReactionBar applies changes when combat ends.
## Commands
| Command | Action |
|---------|--------|
| `/rb` | Open config |
| `/rb arm <profile>` | Arm a profile |
| `/rb disarm` | Disarm |
| `/rb lock` / `/rb unlock` | Lock or unlock bar position |
| `/rb list` | List profiles |
| `/rb debug [slot]` | Debug slot state |
## Item vs spell IDs
Item and spell IDs can share the same number. Use a **name** when you can, or prefix IDs: `item:` / `i:` for items, `spell:` / `s:` for spells. A plain number alone may not resolve correctly if both exist in the client.
## What ReactionBar does not do
- No automatic casting or item use
- No macros run from addon code
- No rotation solver — you define slots, triggers, and actions yourself
## Feedback
Use the project issue tracker or CurseForge comments. Spell IDs and enemy names should be verified on your client and locale.