Description
# SequenceHelper
> **5-man Black Morass dungeon helper** for WoW Anniversary / Classic clients.
> One designated **Announcer** clicks the mic button once, and SequenceHelper handles **the entire run's chat**: the beacon order broadcast, the wave 13–17 portal call-outs, and the wave 6/12/18 boss alerts — automatically into party chat.
**Version**: matches `## Version` in `SequenceHelper.toc` (every change recorded in `CHANGELOG.md`).
**Client**: WoW Anniversary / Classic family — verified on Interface `20504` / `20505`. Should run on any Classic flavor whose `## Interface` matches.
---
## Highlights
- **Auto beacon order** — One mic-button click broadcasts `[Beacon order] 1. NameA / 2. NameB / …` to party chat.
- **Auto rift call-outs** — When portals open in waves 13–17, SequenceHelper sends `โ [Next rift 16] Name - use beacon!` (real raid-target diamond icon up front).
- **Auto boss alerts** — Just before waves 6/12/18 (Deja / Temporus / Aeonus) it announces `๐ [BOSS] Aeonus - loot fast and move out!` (real raid-target skull icon).
- **Beacon number badges on unit frames** — Each of the 5 party members shows their beacon number (1–5) on their unit frame.
- **Live rift counter** — `Rift open : 12/18` shown on the helper panel, kept in sync via a triple-redundant detection system (combat log + UI widget event + 1 s widget poller).
- **Announcer conflict guard** — If two SequenceHelper users in the same party both turn Announcer ON, a one-shot warning prints to chat. (Cannot detect non-SequenceHelper sources, e.g. WeakAuras.)
- **Simulation mode** — Outside the dungeon you can fake-run waves 1→18 to verify behaviour. All output previewed to your own chat only.
- **Standard Interface Options panel** — All settings and a full how-to live under ESC → Interface → AddOns → SequenceHelper.
---
## Install
1. Drop the entire `SequenceHelper` folder into your AddOns directory:
- WoW Anniversary: `World of Warcraft\_anniversary_\Interface\AddOns\`
- Classic Era: `World of Warcraft\_classic_era_\Interface\AddOns\`
- Other Classic flavors: same `Interface\AddOns\` location.
2. On the character-select screen, open **AddOns** and tick `SequenceHelper`.
3. Once in game, the mic button next to the minimap confirms the install.
---
## Quick start (3 steps)
1. **Form your 5-man party** → the helper window lists you + your 4 party members in beacon order 1–5.
2. **Enter Black Morass** → one player **left-clicks the mic button** in the helper window. That player becomes the Announcer and the beacon order is sent to party chat immediately.
3. **Run as normal** — every portal opens, every boss spawns, the right alert is in party chat automatically. The Announcer just plays the beacon.
> โ ๏ธ **Only one Announcer.** Two or more = duplicate chat lines. SequenceHelper **auto-resets the Announcer to OFF on instance enter / leave / reload** so the group must consciously pick one player to mic-click after entering.
---
## Helper panel (minimap right-click)
- **Title**: `Sequence Helper`
- **Rift counter** (only inside Black Morass): `Rift open : N/18`
- **Beacon order list**: `1. Name` … `5. Name` (current Announcer gets a green outline next to their icon)
- **Mic button** (centered at the bottom)
- **Left-click** — Announcer ON + send beacon order now (re-click to re-broadcast).
- **Right-click** — Announcer OFF immediately.
- Active when: inside Black Morass / 5-man party is full / sim mode. Greyed out otherwise.
---
## Minimap button
| Action | Result |
|---|---|
| **Left-click** | Open/close the Interface Options → SequenceHelper panel |
| **Right-click** | Open/close the helper window |
| **Shift + drag** | Move the minimap button around the minimap edge |
---
## Interface Options panel
ESC → Interface → AddOns → SequenceHelper:
- **Four option checkboxes**
- Addon enabled
- Show numbers on unit frames
- Lock helper panel position
- Use class-colored player hyperlinks in chat
- **Scrollable how-to body** — minimap shortcuts, mic button usage, Announcer auto-OFF timing, slash command summary.
---
## Slash commands
`/seq` (also `/sequencehelper`, `/pse`, `/psequence`):
| Command | Description |
|---|---|
| `/seq` or `/seq help` | Print command help |
| `/seq settings` (`config`, `options`) | Toggle the Interface Options panel |
| `/seq show` / `hide` / `toggle` | Helper window visibility |
| `/seq on` / `off` | Enable/disable the addon |
| `/seq announce` | Send beacon order to party chat now |
| `/seq leader on` / `off` / `status` | Toggle Announcer (same as the mic button) |
| `/seq bm on` / `off` | Black Morass auto-call on/off (default on) |
| `/seq links on` / `off` | Toggle class-colored player hyperlinks in chat |
| `/seq peers` | Report other SequenceHelper users in your party |
| `/seq sim on` / `off` / `set <N>` / `next` / `run [sec]` / `stop` / `chat on\|off` | Simulation mode |
| `/seq debug on` / `off` | Send-path debug log |
| `/seq reset` | Reset helper window position |
| `/seq probe` | Print Black Morass diagnostics (trigger counters, widget state) |
---
## Black Morass auto-announce — exact behaviour
| Wave | Trigger | Party-chat message |
|---|---|---|
| 1–5 | (silent) | Beacon users 1–5 don't need calling — only the panel `N/18` counter updates |
| **6** | Deja spawn | `๐ [BOSS] Deja - loot fast and move out!` |
| 7–11 | (silent) | Counter updates only |
| **12** | Temporus spawn | `๐ [BOSS] Temporus - loot fast and move out!` |
| **13–17** | Portal opens | `โ [Next rift N] Name - use beacon!` |
| **18** | Aeonus spawn | `๐ [BOSS] Aeonus - loot fast and move out!` |
> The `โ` and `๐` glyphs are real WoW raid-target marker tokens (`{rt3}` / `{rt8}`). They render as actual icons on every receiver's client, making the call-outs visually distinct from regular chatter. SequenceHelper sends **plain text plus raid-target tokens** only — color codes and a few BMP-outside glyphs are silently dropped by the Anniversary client's `SendChatMessage` (see CHANGELOG entries 1.9.2 / 1.9.3 for the full diagnosis).
### Triple-redundant detection
To make sure portal advances are never missed by a single bug, three triggers run in parallel:
1. **Combat log event** — match the rift channel spell IDs.
2. **UI widget event** — react when the in-game 12/18 counter widget changes.
3. **1-second widget poller** — even if both events miss, the next poll catches the change within 1 s.
Any one of the three keeps the call-outs flowing. `/seq probe` prints how many times each path fired.
### Announcer auto-OFF timing (safety default)
SequenceHelper deliberately resets the Announcer to false at every one of these moments, so the group must re-pick one Announcer per run and chat duplication stays at zero:
- Login / `/reload`
- Black Morass enter (outside → inside)
- Black Morass leave (inside → outside)
- Simulation end (when outside the dungeon)
- Mic right-click / `/seq leader off`
---
## Simulation mode
Useful for demoing the addon outside Black Morass or for video capture. Output previews **only to your own chat** with a `[SIM]` prefix (party chat is not touched).
```
/seq sim on # start sim — show 5 fake party members
/seq sim run # auto-walk waves 1→18 every 1 s
/seq sim run 2.5 # walk every 2.5 s
/seq sim set 13 # jump rift counter to 13
/seq sim next # advance one wave
/seq sim stop # stop the auto walker
/seq sim chat on # โ ๏ธ send sim lines to real party chat (be careful)
/seq sim off # leave sim mode
```
---
## Compatibility / known limits
- **Disabled in raids** — this is a 5-man helper. Inside a raid the helper window and chat alerts go quiet.
- **WeakAuras / other auto-callers**: SequenceHelper detects Announcer conflicts only between SequenceHelper users. If somebody else's WeakAuras is also broadcasting the same call-outs, SequenceHelper has no way to see it — chat will duplicate. **Run only one auto-caller per party.**
- **Anniversary `SendChatMessage` silent-drop**: messages containing color codes (`|cXXXXXXXX|r`) or certain non-BMP glyphs (`โ`, `»`, `—`) silently disappear after returning OK. SequenceHelper scrubs all outgoing chat to plain text + raid-target tokens to work around this (see `scrubChatLineForSend`).
- **`|T...|t` texture escapes are rejected** by the same path. That's why icons are expressed as `{๋ค์ด์๋ชฌ๋}` / `{ํด๊ณจ}` / `{rt3}` / `{rt8}` raid-target tokens instead of texture inlines.
---
## Icons / artwork (CurseForge etc.)
- **CurseForge project icon**: `Art/SequenceHelper-CurseForge-400.png` — must be **400 × 400 px, 1:1 aspect**. The repo file matches this spec.
- **In-game minimap icon**: `Textures/MinimapIcon.png` (referenced by `## IconTexture` in the TOC).
- If your client refuses PNG and only accepts TGA/BLP, convert the same image, drop it under `Textures/`, and point `IconTexture` at it.
---
## SavedVariables
`WTF\Account\<account>\SavedVariables\SequenceHelper.lua`
- **Current**: `SequenceHelperDB`.
- **Legacy migration**: users coming from the old `PSequenceHelper` keep their data — `PSequenceHelperDB` is migrated into `SequenceHelperDB` once when the new SavedVariables file is empty.
Stored keys: `enabled`, `showOverlay`, `showList`, `locked`, `point/x/y` (helper window position), `minimap.angle/hide`, `announcePlayerLinks`, `autoAnnounceBlackMorass`, `iAmAnnouncer`, `debug`.
---
## Debugging / triage
If the auto-announce stops feeling reliable:
1. `/seq debug on` — turns on send-path logging in your own chat (party not affected).
2. If portals open but no debug line shows up → run `/seq probe` to see trigger counters.
3. `widgetEvents = 0` means the UI widget event isn't firing → the 1-second poller fallback should still keep it going.
4. `iAmAnnouncer = false` means you're not the Announcer → mic left-click or `/seq leader on`.
5. If debug shows `SendChatMessage(PARTY) OK` but the line never reaches your `[Party]` log → likely a new silent-drop glyph (see CHANGELOG 1.9.2 for the diagnostic protocol).
Full diagnostic history lives in `CHANGELOG.md` entries 1.9.1 / 1.9.2 / 1.9.3.
---
## Version history (milestones)
`CHANGELOG.md` carries every version (Korean + English side by side). Headline milestones:
- **1.9.1** — Fixed the `local DB` scoping bug that kept `featureOn` permanently false. Auto-announce paths come back to life.
- **1.9.2** — Diagnosed and worked around Anniversary `SendChatMessage` silent-drop (`scrubChatLineForSend`).
- **1.9.3** — Added raid-target tokens (`{๋ค์ด์๋ชฌ๋}` / `{ํด๊ณจ}` / `{rt3}` / `{rt8}`) to wave-call and boss lines — plain text but real icons render on every client.
- **1.9.4** — Removed the duplicate colored echo from the announcer's own chat (kept behind `/seq debug on`).
- **1.9.5** — Reorganized minimap left/right click roles, removed the helper-panel refresh button, added a settings window.
- **1.9.6** — Replaced the standalone settings window with a standard Interface Options category.
- **1.10.0** — Compacted the mic button tooltip.
- **1.10.1** — ElvUI-style backdrop, no border on the helper window.
---
## License & credits
- Practical helper for the 5-man Black Morass dungeon. Use, fork, redistribute freely.
- Locales shipped: Korean (`koKR`) and English (`enUS`) auto-call templates.
- Author notes (especially the post-mortem on the 1.9.1 `local DB` scoping bug) live at the top of `SequenceHelper.lua`.
---
# ํ๊ตญ์ด (Korean)
> **๊ฒ์ ๋ช(Black Morass) 5์ธ ๋์ ์ ์ฉ** ๋ดํ ์์ + ์๋ ํธ๋ช
/๋ณด์ค์ ์๋ฆผ ์ ๋์จ์
๋๋ค.
> **5๋ช
์ด 1~5๋ฒ ๋ดํ๋ฅผ ์์๋๋ก ์ฌ์ฉ**ํด์ผ ํ๋ ์์ค์, ์งํ์(announcer) ํ ๋ช
์ด ๋ง์ดํฌ ๋ฒํผ๋ง ํ ๋ฒ ๋๋ฅด๋ฉด — ๋ดํ ์์ ๊ณต์ง๋ถํฐ wave 13~17 ํธ๋ช
, wave 6/12/18 ๋ณด์ค์ ๋ฉํธ๊น์ง — **์ ๋ถ ์๋์ผ๋ก ํํฐ ์ฑํ
์ ๋ฐ์ก**๋ฉ๋๋ค.
**๋ฒ์ **: `SequenceHelper.toc` ์ `## Version` ๊ณผ ๋์ผ (`CHANGELOG.md` ์ ๋งค ๋ณ๊ฒฝ ๊ธฐ๋ก).
**ํด๋ผ์ด์ธํธ**: WoW Anniversary / Classic ๊ณ์ด (Interface `20504` / `20505` ๊ฒ์ฆ). `## Interface` ๊ฐ ๋ง์ผ๋ฉด ๋ค๋ฅธ Classic ํจ์น์์๋ ๋์.
## ํ๋์ ๋ณด๋ ํต์ฌ
- **์๋ ๋ดํ์์ ์๋ด** — ๋ง์ดํฌ ๋ฒํผ ํ ๋ฒ์ด๋ฉด `[๋ดํ์์] 1. ๋๋ฅ / 2. ๊ฑฐ๋ฆฌ์ ์ฌ / …` ๊ฐ ํํฐ ์ฑํ
์ผ๋ก ๋ฐ์ก.
- **์ฐจ์๋ฌธ ํธ๋ช
์๋ํ** — wave 13~17 ์ฐจ์๋ฌธ์ด ์ด๋ฆฌ๋ฉด `โ [๋ค์ ์ฐจ์๋ฌธ 16] ๋๋ฅ ๋ - ๋ดํ ์ฌ์ฉ!` ๋ฉ์์ง ์๋ ์ก์ถ (์์ ์ง์ง ๋ณด๋ผ ๋ค์ด์๋ชฌ๋ ๊ณต๊ฒฉ๋ ํ์ ์์ด์ฝ).
- **๋ณด์ค์ ์๋ ๋ฉํธ** — wave 6/12/18 (๋ฐ์ / ํ
ํผ๋ฃจ์ค / ์์๋์ค) ์ง์
์ง์ `๐ [๋ณด์ค] ์์๋์ค - ์ ํฌ์ค๋น!` ์๋ฆผ ์๋ ์ก์ถ (์์ ์ง์ง ํฐ ํด๊ณจ ์์ด์ฝ).
- **์ ๋ ํ๋ ์ ๋ฒํธ ๋ฑ์ง** — ๋ณธ์ธ + ํํฐ์ 4๋ช
์ ๋ดํ ๋ฒํธ(1~5) ๊ฐ ๊ฐ์ ํ๋ ์ ์์ ํญ์ ํ์.
- **์ฐจ์๋ฌธ ์นด์ดํฐ** — ๋์ฐ๋ฏธ ์ฐฝ์ `์ฐจ์๋ฌธ ์ด๋ฆผ : 12/18` ์ค์๊ฐ ํ์ (3์ค ๊ฐ์ง: ์ ํฌ๋ก๊ทธ + UI ์์ ฏ ์ด๋ฒคํธ + 1์ด ํด๋ฌ).
- **์งํ์ ์ถฉ๋ ๋ณดํธ** — ๊ฐ์ ํํฐ์ ์งํ์๊ฐ ๋ ์ด์์ด๋ฉด ์ฑํ
์ค๋ณต ๊ฒฝ๊ณ 1ํ ์ถ๋ ฅ (๋จ, ๊ฐ์ SequenceHelper ์ฌ์ฉ์๋ผ๋ฆฌ๋ง ๊ฐ์ง).
- **์๋ฎฌ๋ ์ด์
๋ชจ๋** — ์ธ๋ ๋ฐ์์๋ wave 1→18 ์ ๊ฐ์ง๋ก ์งํ์์ผ ๋ณธ์ธ ์ฑํ
์ฐฝ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ๋์ ๊ฒ์ฆ ๊ฐ๋ฅ.
- **์ธํฐํ์ด์ค ์ต์
ํตํฉ** — ESC → ์ธํฐํ์ด์ค → ์ ๋์จ → SequenceHelper ์ ์ต์
+ ์ฌ์ฉ์ค๋ช
ํ ํ๋ฉด.
## ์ค์น
1. ์ด ํด๋ (`SequenceHelper`) ๋ฅผ ํต์งธ๋ก ๋ค์ ๊ฒฝ๋ก์ ๋ณต์ฌ:
- WoW Anniversary: `World of Warcraft\_anniversary_\Interface\AddOns\`
- Classic Era: `World of Warcraft\_classic_era_\Interface\AddOns\`
- ๊ธฐํ Classic flavor ๋ ๋์ผ (`Interface\AddOns\` ์๋)
2. ๊ฒ์ ๋ด ์บ๋ฆญํฐ ์ ํ ํ๋ฉด์์ **์ ๋์จ** → `SequenceHelper` ์ฒดํฌ.
3. ๊ฒ์ ์ง์
ํ ๋ฏธ๋๋งต ์์ ๋ง์ดํฌ ๋ชจ์ ๋ฒํผ์ด ๋จ๋ฉด ์ ์ ์ค์น.
## ๋น ๋ฅธ ์ฌ์ฉ๋ฒ (3๋จ๊ณ)
1. **5์ธ ํํฐ ์์ฑ** → ๋์ฐ๋ฏธ ์ฐฝ์ ๋ณธ์ธ + ํํฐ์ 4๋ช
์ด ๋ดํ 1~5๋ฒ์ผ๋ก ์ ๋ ฌ๋์ด ํ์๋จ.
2. **๊ฒ์ ๋ช ์
์ฅ** → ํ ๋ช
์ด ๋์ฐ๋ฏธ ์ฐฝ์ **๋ง์ดํฌ ๋ฒํผ ์ขํด๋ฆญ** → ๊ทธ ์ฌ๋์ด ์งํ์๊ฐ ๋จ + ๋ดํ์์๊ฐ ์ฆ์ ํํฐ ์ฑํ
์ ๋ฐ์ก.
3. **๊ทธ๋๋ก ์งํ** — wave ๋ง๋ค ์ฐจ์๋ฌธ์ด ์ด๋ฆฌ๊ณ ๋ณด์ค๊ฐ ๋ฑ์ฅํ ๋๋ง๋ค ์๋์ผ๋ก ์๋ฆผ์ด ํํฐ ์ฑํ
์ ๋ ์ค๋ฆ. ์งํ์๋ ๋ดํ ์ฌ์ฉ์๋ง ์ง์คํ๋ฉด ๋จ.
> โ ๏ธ **์งํ์๋ ํ ๋ช
๋ง**. ๋ ๋ช
์ด์์ด ๋ง์ดํฌ๋ฅผ ๋๋ฅด๋ฉด ๊ฐ์ ๋ฉ์์ง๊ฐ ์ค๋ณต ์ก์ถ๋์ด ์ฑํ
์คํธ์ด ๋ฉ๋๋ค. ์ธ๋ ์ง์
์์ ์ **์๋์ผ๋ก OFF ๋ก ์ด๊ธฐํ**๋๋ฏ๋ก, ์
์ฅ ํ ํฉ์๋ ํ ๋ช
๋ง ๋ค์ ๋๋ฅด์ธ์.
## ๋์ฐ๋ฏธ ์ฐฝ (๋ฏธ๋๋งต ์ฐํด๋ฆญ)
- **ํ์ดํ**: `๋ดํ์์ ๋์ฐ๋ฏธ`
- **์ฐจ์๋ฌธ ์นด์ดํฐ** (๊ฒ์ ๋ช ์์์๋ง ํ์): `์ฐจ์๋ฌธ ์ด๋ฆผ : N/18`
- **๋ดํ ์์ ๋ชฉ๋ก**: `1. ๋๋ค์` ~ `5. ๋๋ค์` (ํ์ฌ ์งํ์ ์์๋ ์ด๋ก ํ
๋๋ฆฌ)
- **๋ง์ดํฌ ๋ฒํผ** (๊ฐ์ด๋ฐ ์๋)
- **์ขํด๋ฆญ** — ์งํ์ ON + ๋ดํ์์ ์ฆ์ ์ก์ถ (์ด๋ฏธ ON ์ด๋ฉด ๋ดํ์์ ์ฌ์ก์ถ)
- **์ฐํด๋ฆญ** — ์งํ์ ์ฆ์ OFF
- ํ์ฑ ์กฐ๊ฑด: ๊ฒ์ ๋ช ์ / 5์ธ ํํฐ ์์ฑ / ์๋ฎฌ ๋ชจ๋. ์ธ์๋ ํ์์ผ๋ก ๋นํ์ฑ.
## ๋ฏธ๋๋งต ๋ฒํผ
| ๋์ | ๊ฒฐ๊ณผ |
|---|---|
| **์ขํด๋ฆญ** | ์ธํฐํ์ด์ค ์ต์
→ SequenceHelper ํจ๋ ์ด๊ธฐ/๋ซ๊ธฐ |
| **์ฐํด๋ฆญ** | ๋ดํ์์ ๋์ฐ๋ฏธ ์ฐฝ ์ด๊ธฐ/๋ซ๊ธฐ |
| **Shift + ๋๋๊ทธ** | ๋ฏธ๋๋งต ์ฃผ๋ณ ์์น(๊ฐ๋) ์กฐ์ |
## ์ธํฐํ์ด์ค ์ต์
ํจ๋
ESC → ์ธํฐํ์ด์ค → ์ ๋์จ → SequenceHelper:
- **์ต์
์ฒดํฌ๋ฐ์ค 4์ข
**
- ์ ๋์จ ์ฌ์ฉํจ
- ์ ๋ ํ๋ ์์ ๋ฒํธ ํ์
- ๋์ฐ๋ฏธ ์ฐฝ ์์น ์ ๊ธ
- ์ฑํ
์๋ฆผ์ ์ง์
์ ์ด๋ฆ(ํ์ดํผ๋งํฌ) ์ฌ์ฉ
- **์ฌ์ฉ ์ค๋ช
๋ณธ๋ฌธ** (์คํฌ๋กค) — ๋ฏธ๋๋งต ๋จ์ถํค, ๋ง์ดํฌ ๋ฒํผ ์ฌ์ฉ๋ฒ, ์งํ์ ์๋ OFF ์์ , ์ฌ๋์ ๋ช
๋ น์ด ์์ฝ
## ์ฌ๋์ ๋ช
๋ น์ด
`/seq` (๋๋ `/sequencehelper`, `/pse`, `/psequence`) ๋ก ๋ชจ๋ ๋ช
๋ น ์ฌ์ฉ ๊ฐ๋ฅ.
| ๋ช
๋ น | ์ค๋ช
|
|---|---|
| `/seq` ๋๋ `/seq help` | ๋ช
๋ น์ด ๋์๋ง ์ถ๋ ฅ |
| `/seq settings` (`config`, `options`) | ์ธํฐํ์ด์ค ์ต์
ํจ๋ ํ ๊ธ |
| `/seq show` / `hide` / `toggle` | ๋์ฐ๋ฏธ ์ฐฝ ํ์/์จ๊น |
| `/seq on` / `off` | ์ ๋์จ ์ฌ์ฉํจ/์ฌ์ฉ์ํจ |
| `/seq announce` | ๋ดํ ์์๋ฅผ ํํฐ ์ฑํ
์ ์ฆ์ ์ก์ถ |
| `/seq leader on` / `off` / `status` | ์งํ์ ํ ๊ธ (๋ง์ดํฌ ๋ฒํผ๊ณผ ๋์ผ) |
| `/seq bm on` / `off` | ๊ฒ์ ๋ช ์๋ ์๋ด on/off (๊ธฐ๋ณธ on) |
| `/seq links on` / `off` | ์ฑํ
์๋ฆผ์ ์ง์
์ ํ์ดํผ๋งํฌ ์ฌ์ฉ ํ ๊ธ |
| `/seq peers` | ๊ฐ์ ํํฐ์ SequenceHelper ์ฌ์ฉ์ ๋ณด๊ณ |
| `/seq sim on` / `off` / `set <N>` / `next` / `run [์ด]` / `stop` / `chat on\|off` | ์๋ฎฌ๋ ์ด์
๋ชจ๋ |
| `/seq debug on` / `off` | ์ก์ถ ๊ฒฝ๋ก ๋๋ฒ๊ทธ ๋ก๊ทธ |
| `/seq reset` | ๋์ฐ๋ฏธ ์ฐฝ ์์น ์ด๊ธฐํ |
| `/seq probe` | ๊ฒ์ ๋ช ์ง๋จ ์ ๋ณด (ํธ๋ฆฌ๊ฑฐ ์นด์ดํฐ, ์์ ฏ ์ํ ๋ฑ) ์ถ๋ ฅ |
## ๊ฒ์ ๋ช ์๋ ์๋ด — ์ ํํ ๋์
| Wave | ํธ๋ฆฌ๊ฑฐ | ํํฐ ์ฑํ
์ผ๋ก ๋ฐ์ก๋๋ ๋ฉ์์ง |
|---|---|---|
| 1~5 | (์นจ๋ฌต) | ๋ดํ ์ฌ์ฉ์๋ง ํธ๋ช
ํ ํ์๊ฐ ์์ — ํจ๋์ N/18 ์นด์ดํธ๋ง ๊ฐฑ์ |
| **6** | ๋ฐ์ ๋ฑ์ฅ | `๐ [๋ณด์ค] ๋ฐ์ - ์ ํฌ์ค๋น! ์ถฉ๋ถํ ํํ๊ณ ์ด๋!` |
| 7~11 | (์นจ๋ฌต) | ์นด์ดํธ๋ง ๊ฐฑ์ |
| **12** | ํ
ํผ๋ฃจ์ค ๋ฑ์ฅ | `๐ [๋ณด์ค] ํ
ํผ๋ฃจ์ค - ์ ํฌ์ค๋น! ์ถฉ๋ถํ ํํ๊ณ ์ด๋!` |
| **13~17** | ์ฐจ์๋ฌธ ์ด๋ฆผ | `โ [๋ค์ ์ฐจ์๋ฌธ N] ๋๋ค์ ๋ - ๋ดํ ์ฌ์ฉ!` |
| **18** | ์์๋์ค ๋ฑ์ฅ | `๐ [๋ณด์ค] ์์๋์ค - ์ ํฌ์ค๋น! ์ถฉ๋ถํ ํํ๊ณ ์ด๋!` |
> `โ` `๐` ๋ WoW ๊ณต๊ฒฉ๋ ํ์(raid target marker) ์์ด์ฝ — ๋ชจ๋ ํํฐ์์ ํ๋ฉด์ ์ง์ง ์์ด์ฝ์ผ๋ก ๋ ๋๋ง๋์ด ์ผ๋ฐ ์ฑํ
๊ณผ ์๊ฐ์ ์ผ๋ก ๋ช
ํํ ๊ตฌ๋ถ๋ฉ๋๋ค. ์์ ์ฝ๋์ ์ผ๋ถ ํน์ ๋ฌธ์๊ฐ Anniversary ํด๋ผ์ `SendChatMessage` ์์ silent-drop ๋๋ ๋ฌธ์ (1.9.2 ~ 1.9.3 ์ฐธ์กฐ)๋ฅผ ์ฐํํ๊ธฐ ์ํด, ์ฑํ
์ผ๋ก ๋๊ฐ๋ ๋ฉ์์ง๋ **ํ๋ฌธ + ๊ณต๊ฒฉ๋ ํ์ ํ ํฐ**๋ง ์ฌ์ฉํฉ๋๋ค.
### 3์ค ๊ฐ์ง ์์คํ
์ฐจ์๋ฌธ ์งํ์ด ์ด๋ค ๋จ์ผ ์ด๋ฒคํธ์ ์์กดํ์ง ์๋๋ก **์ธ ๊ฐ์ง ํธ๋ฆฌ๊ฑฐ**๋ฅผ ๋์์ ์ด์:
1. **Combat Log Event** — ์ฐจ์๋ฌธ ์ฑ๋๋ง spell ID ๋งค์นญ
2. **UI Widget Event** — ๊ฒ์ ๋ด UI ์ 12/18 ์นด์ดํฐ๊ฐ ๋ฐ๋ ๋
3. **1์ด Widget Poller** — ์ ๋ ์ด๋ฒคํธ๊ฐ ๋ชจ๋ ๋๋ฝ๋์ด๋ 1์ด ์์ ์นด์ดํฐ ๋ณ๊ฒฝ ๊ฐ์ง
์ธ ๊ฒฝ๋ก ์ค ์ด๋ ํ๋๋ผ๋ ์ด์์์ผ๋ฉด ํธ๋ช
/๋ณด์ค ๋ฉํธ๊ฐ ๋น ์ง์ง ์์. `/seq probe` ๋ก ์ด๋ ๊ฒฝ๋ก๊ฐ ๋ช ๋ฒ ๋ฐํํ๋์ง ํ์ธ ๊ฐ๋ฅ.
### ์งํ์ ์๋ OFF ์์ (์์ ๊ธฐ๋ณธ๊ฐ)
๋ค์ ๋ชจ๋ ์์ ์ ์งํ์ ์ํ๊ฐ ์๋์ผ๋ก false ๋ก ์ด๊ธฐํ๋ฉ๋๋ค — ์ธ๋๋ง๋ค ํ ๋ช
๋ง ๋ค์ ๋ง์ดํฌ๋ฅผ ๋๋ฅด๋๋ก ๊ฐ์ ํด ์ฑํ
์ค๋ณต์ ๋ฐฉ์ง:
- ๋ก๊ทธ์ธ / `/reload`
- ๊ฒ์ ๋ช ์ธ์คํด์ค ์ง์
(๋ฐ → ์)
- ๊ฒ์ ๋ช ์ธ์คํด์ค ํด์ฅ (์ → ๋ฐ)
- ์๋ฎฌ๋ ์ด์
์ข
๋ฃ (์ธ๋ ๋ฐ์์)
- ๋ง์ดํฌ ์ฐํด๋ฆญ / `/seq leader off`
## ์๋ฎฌ๋ ์ด์
๋ชจ๋
์ธ๋ ๋ฐ์์ ๋์์ ์์ฐํ๊ฑฐ๋ ์์ ์บก์ฒํ ๋ ์ ์ฉ. **๋ณธ์ธ ์ฑํ
์ฐฝ์๋ง** `[SIM]` prefix ๋ถ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ์ถ๋ ฅ (ํํฐ์๋ ์ ๋๊ฐ).
```
/seq sim on # ์๋ฎฌ ์์ — ๊ฐ์ง ํํฐ์ 5๋ช
ํ์
/seq sim run # wave 1 → 18 ๊น์ง 1์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋ ์งํ
/seq sim run 2.5 # 2.5์ด ๊ฐ๊ฒฉ์ผ๋ก ์งํ
/seq sim set 13 # ์ฐจ์๋ฌธ ์นด์ดํธ ์์๋ก 13 ์ผ๋ก ์ค์
/seq sim next # wave 1 ์งํ
/seq sim stop # ์๋ ์งํ ์ค๋จ
/seq sim chat on # โ ๏ธ ์๋ฎฌ ๊ฒฐ๊ณผ๋ฅผ ์ง์ง ํํฐ ์ฑํ
์ผ๋ก ์ก์ถ (์ฃผ์!)
/seq sim off # ์๋ฎฌ ์ข
๋ฃ
```
## ํธํ์ฑ / ์๋ ค์ง ์ ์ฝ
- **๊ณต๊ฒฉ๋(Raid) ์ง์
์ ๋นํ์ฑ** — 5์ธ ํํฐ ์ ์ฉ ๋์ฐ๋ฏธ๋ผ, ๊ณต๋ ํธ์ฑ ์ค์๋ ๋์ฐ๋ฏธ ์ฐฝ๊ณผ ์ฑํ
์๋ฆผ์ด ๋์ํ์ง ์์.
- **WeakAuras ๋ฑ ๋ค๋ฅธ ์๋ ์๋ด์์ ์ถฉ๋**: SequenceHelper ๋ ๊ฐ์ SequenceHelper ์ฌ์ฉ์๋ผ๋ฆฌ๋ง ์งํ์ ์ถฉ๋์ ๊ฐ์งํฉ๋๋ค. WeakAuras / ํ ์ ๋์จ์ด ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ก์ถ ์ค์ด๋ฉด SequenceHelper ๊ฐ ๊ทธ ์ฌ์ค์ ์์ง ๋ชปํด ์ฑํ
์ด ์ค๋ณต๋ ์ ์์. ํ ํํฐ์์๋ **ํ๋์ ์๋ ์๋ด ๋๊ตฌ๋ง** ์ผ๋ ๊ฒ์ ๊ถ์ฅ.
- **Anniversary `SendChatMessage` ์ silent-drop**: ์์ ์ฝ๋(`|cXXXXXXXX|r`) ์ ์ผ๋ถ BMP-์ธ๊ณฝ ๊ธ๋ฆฌํ(`โ`, `»`, `—`) ๊ฐ ๋ค์ด๊ฐ ๋ฉ์์ง๋ OK ๋ฅผ ๋ฐ๊ณ ๋ ์๋ฒ์์ ๋๋ฝ๋จ (1.9.2 ์ง๋จ·์ฐํ). ์ฑํ
์ผ๋ก ๋๊ฐ๋ ๋ชจ๋ ์๋ ์๋ด๋ ํ๋ฌธ + ๊ณต๊ฒฉ๋ ํ์ ํ ํฐ์ผ๋ก๋ง ์ก์ถํ๋๋ก ๊ฐ์ (`scrubChatLineForSend`).
- **`|T...|t` ํ
์ค์ฒ escape ๊ฑฐ๋ถ**: ๊ฐ์ silent-drop ๊ณ์ด๋ก ํ
์ค์ฒ ์ธ๋ผ์ธ escape ๋ ๊ฑฐ๋ถ๋จ — ๊ทธ๋์ ์์ด์ฝ ํํ์ `{๋ค์ด์๋ชฌ๋}` / `{ํด๊ณจ}` ๊ณต๊ฒฉ๋ ํ์ ํ ํฐ์ผ๋ก ์ฐํ.
## ์์ด์ฝ / ์ํธ์ํฌ (CurseForge ๋ฑ)
- **CurseForge ํ๋ก์ ํธ ์์ด์ฝ**: `Art/SequenceHelper-CurseForge-400.png` — **1:1 ๋น์จ, 400 × 400 ํฝ์
** ํ์. ์ ์ฅ์ ํ์ผ์ด ์ด ๊ท๊ฒฉ์ผ๋ก ์ค๋น๋์ด ์์.
- **๊ฒ์ ๋ด ๋ฏธ๋๋งต ์์ด์ฝ**: `Textures/MinimapIcon.png` (`SequenceHelper.toc` ์ `## IconTexture` ๊ฐ ๊ฐ๋ฆฌํด).
- ํด๋ผ์ด์ธํธ๊ฐ PNG ๋ฅผ ๊ฑฐ๋ถํ๊ณ TGA/BLP ๋ง ํ์ฉํ๋ฉด, ๋์ผ ์ด๋ฏธ์ง๋ฅผ ๋ณํ ํ `Textures/` ์ ๋๊ณ `IconTexture` ๊ฒฝ๋ก๋ง ๋ง์ถ์ธ์.
## ์ ์ฅ์ (SavedVariables)
`WTF\Account\<๊ณ์ >\SavedVariables\SequenceHelper.lua`
- **ํ์ฌ**: `SequenceHelperDB`
- **๊ตฌ๋ฒ์ ํธํ**: ์ด์ `PSequenceHelper` ์ฌ์ฉ์๋ ๊ธฐ์กด `PSequenceHelperDB` ๊ฐ ์๋์ผ๋ก `SequenceHelperDB` ๋ก ๋ง์ด๊ทธ๋ ์ด์
๋จ (์ SavedVariables ๊ฐ ๋น์ด์์ ๋ 1ํ).
์ ์ฅ ํญ๋ชฉ: `enabled`, `showOverlay`, `showList`, `locked`, `point/x/y` (๋์ฐ๋ฏธ ์ฐฝ ์์น), `minimap.angle/hide`, `announcePlayerLinks`, `autoAnnounceBlackMorass`, `iAmAnnouncer`, `debug`.
## ๋๋ฒ๊น
/ ๋ฌธ์ ์ง๋จ
์๋ ์๋ด๊ฐ ์ ๋๊ฐ๋ ๊ฒ ๊ฐ์ผ๋ฉด:
1. `/seq debug on` — ์ก์ถ ๊ฒฝ๋ก ๋๋ฒ๊ทธ ๋ก๊ทธ๋ฅผ ๋ณธ์ธ ์ฑํ
์ฐฝ์ ์ถ๋ ฅ (ํํฐ์๋ ์ ๋๊ฐ).
2. ์ฐจ์๋ฌธ์ด ์ด๋ ค๋ ๋๋ฒ๊ทธ ๋ก๊ทธ๊ฐ ์ ๋จ๋ฉด → `/seq probe` ๋ก ํธ๋ฆฌ๊ฑฐ ์นด์ดํฐ ํ์ธ.
3. `widgetEvents=0` ์ด๋ฉด UI ์์ ฏ ์ด๋ฒคํธ๊ฐ ์ ์ด → ํด๋ฌ๊ฐ fallback ์ผ๋ก ๋์ ์ค์ธ์ง ํ์ธ.
4. `iAmAnnouncer=false` ๋ฉด ์งํ์ ํ ๊ธ์ด OFF — ๋ง์ดํฌ ์ขํด๋ฆญ / `/seq leader on`.
5. `SendChatMessage(PARTY) OK` ๊ฐ ๋๋ฒ๊ทธ์ ์ฐํ๋๋ฐ ๋ณธ์ธ [ํํฐ] ์ ์ค์ด ์ ๋ณด์ด๋ฉด → ๋ฉ์์ง์ ์ silent-drop ๊ธ๋ฆฌํ ๊ฐ๋ฅ์ฑ (1.9.2 ์ง๋จ ๋ฉ๋ชจ ์ฐธ์กฐ).
์์ธํ ์ง๋จ ํ๋ฆ์ `CHANGELOG.md` ์ 1.9.1 / 1.9.2 / 1.9.3 ํญ๋ชฉ ์ฐธ๊ณ .
## ๋ณ๊ฒฝ ์ด๋ ฅ
`CHANGELOG.md` ์ ๋ชจ๋ ๋ฒ์ ์ด ๊ธฐ๋ก๋์ด ์์ต๋๋ค (ํ๊ตญ์ด + English ๋ณ๊ธฐ). ์ฃผ์ ๋ง์ผ์คํค:
- **1.9.1** — `local DB` ์ค์ฝํ ๋ฒ๊ทธ(featureOn ์๊ตฌ false) ์์ . ์๋ ์ก์ถ ๊ฒฝ๋ก ๋ถํ.
- **1.9.2** — Anniversary `SendChatMessage` ์ silent-drop ์ง๋จ·์ฐํ (`scrubChatLineForSend`).
- **1.9.3** — wave ํธ๋ช
/๋ณด์ค ์ค์ ๊ณต๊ฒฉ๋ ํ์ ํ ํฐ(`{๋ค์ด์๋ชฌ๋}` / `{ํด๊ณจ}`) ์ถ๊ฐ — ํ๋ฌธ์ด์ง๋ง ์ง์ง ์์ด์ฝ์ผ๋ก ๋ ๋.
- **1.9.4** — ๋ณธ์ธ ์ฑํ
์ฐฝ ์ค๋ณต echo ์ ๊ฑฐ (debug ๋ชจ๋์์๋ง echo).
- **1.9.5** — ๋ฏธ๋๋งต ๋ฒํผ ์ข/์ฐํด๋ฆญ ์ฌ๋ฐฐ์น, ์๋ก๊ณ ์นจ ๋ฒํผ ์ ๊ฑฐ, ์์ฒด ์ค์ ์ฐฝ ์ ์ค.
- **1.9.6** — ์์ฒด ์ค์ ์ฐฝ์ ํ๊ธฐํ๊ณ ํ์ค ์ธํฐํ์ด์ค ์ต์
ํจ๋ ์นดํ
๊ณ ๋ฆฌ๋ก ๋ฑ๋ก.
- **1.10.0** — ๋ง์ดํฌ ๋ฒํผ ํดํ ๊ฐ์ํ.
- **1.10.1** — ElvUI ํค backdrop, ํ
๋๋ฆฌ ์ ๊ฑฐ.
## License & Credits
- WoW 5์ธ ๋์ ๊ฒ์ ๋ช ์งํ ๋๊ตฌ. ์์ ์ฌ์ฉ/์์ /๋ฐฐํฌ ํ์.
- ํ์ฌ ์๋ ์๋ด ํ
ํ๋ฆฟ: ํ๊ตญ์ด(`koKR`) + ์์ด(`enUS`).
- ์์ฑ์ ๋ฉ๋ชจ๋ `SequenceHelper.lua` ์๋จ ์ฃผ์์ ์์ธํ ๊ธฐ๋ก (ํนํ 1.9.1 ์ `local DB` ์ค์ฝํ ๋ฒ๊ทธ ํ๊ณ ).
