promotional bannermobile promotional banner

SimpleRaidAssign

A lightweight raid planning addon for World of Warcraft: Burning Crusade Classic Anniversary

File Details

SimpleRaidAssign.zip

  • R
  • Apr 6, 2026
  • 45.11 KB
  • 12
  • 2.5.5
  • Classic TBC

File Name

SimpleRaidAssign.zip

Supported Versions

  • 2.5.5

First stable release. Brings the addon under its final name (SimpleRaidAssign), polishes the editor flow, ships import/export, adds the per-attribution note field, the player picker dropdown and the minimap button.

Added

Import / Export

  • Raids:Export(raidKey) serializes a single raid to a portable string with the format SRA1:<encoded>. The encoded body uses the existing self-contained serializer from Comms.lua (no Ace3 dependency, ASCII only, no raw newlines / pipes / tabs — safe to copy-paste into chat windows or forum posts).
  • Raids:Import(text, newName) parses an exported string, validates the format and required fields, and creates a new raid with a fresh id and new metadata (createdAt/createdBy/updatedAt/updatedBy are reset to the current player and time). Errors are returned as (nil, "human readable message").
  • Raids:PeekImportName(text) decodes just the original raid name from an import string without actually importing, used to pre-fill the "New name" input.
  • New buttons on the Raid Summary screen: Import next to + New Raid in the header, and Export on every raid row (between Rename and Duplicate).
  • Reusable Import/Export dialog (520×380, draggable) with a multi-line EditBox inside a ScrollFrame. Export mode highlights the string for instant Ctrl+C. Import mode shows an additional "New raid name" input that auto-fills with <original name> (imported) after a paste, and the user can override it freely.

Note field per attribution

  • New note field on the attribution data model, edited via a multi-line EditBox (textarea-style) in the right edit panel under the players list.
  • The note is included in chat broadcasts, appended in parentheses after the players list (e.g. Tanks: TankA, TankB (alterner les CDs)), with newlines collapsed and pipe characters stripped so the message stays valid.
  • Notes are persisted in db.raids[].encounters[].attributions[].note and synced through the same comms protocol as the rest of the raid.

Player picker dropdown

  • New + From Group button in the right edit panel that opens a dropdown of the current raid / party members. Each entry is class-colored (warrior beige, mage cyan, etc.). Players already assigned to the current attribution are listed but disabled (no duplicates possible).
  • The previous comma-separated playersBox was replaced by a vertical scrollable list of assigned players (each with a [X] remove button), plus a single-line text input + [Add] button below for manual entry. Manual typing keeps working in parallel for offline preparation when the named player is not in the current group.

Marker clearing

  • New Attributions:ClearMarker(raidKey, encounterKey, attribId) helper that explicitly sets the marker to nil without the previous { marker = false } patch hack.
  • New [X] button next to the marker dropdown in the right edit panel — single click to clear the marker. The dropdown's (none) entry still works as a fallback.

Minimap button

  • Draggable minimap button using the Grey Skull raid target icon as its texture (matches the addon's marker theme).
  • Left-click toggles the main window, right-click pushes all raids to the group via the comms layer.
  • Position persisted across sessions in NS.db.settings.minimapPos (angle in degrees on the minimap edge).
  • Tooltip lists left/right click and drag actions.

Changed

  • Renamed the addon from WowShiftAssign to SimpleRaidAssign. The folder, .toc filename, SavedVariables (SimpleRaidAssignDB / SimpleRaidAssignCharDB), slash commands (/sra/simpleraidassign), addon-message comms prefix (SRA1), and all frame / popup / dropdown names have been updated. Existing data from WowShiftAssign is not auto-migrated; back up the old WTF/.../SavedVariables/WowShiftAssign.lua file if you want to keep your raid plans, then re-create them under the new name.
  • Single Announce button instead of separate Announce EN / Announce FR toggles. The output is now always English. The previous announceLanguage setting was removed from DEFAULTS. The localization scaffolding in Broadcast.lua was simplified to a flat English-only label table, but the dual-language groundwork could be re-introduced later if needed.
  • Default announce channel is now RAID_WARNING instead of RAID. Existing installs with a saved announceChannel keep their previous value (the merge is non-destructive).
  • Preview renders raid target icons by substituting {rt1}..{rt8} chat tokens with |TInterface\TargetingFrame\UI-RaidTargetingIcon_N:0|t texture inlines before printing locally. The actual Announce flow still sends the raw tokens because WoW's chat parser handles them on the receiver side.
  • Players counter on the Raid Summary now counts distinct player names across all bosses and attributions, instead of the raw sum of slot occurrences. A player assigned to three bosses is counted once.
  • Broadcast message separator changed from | to /. The pipe character is reserved by WoW's chat protocol for escape codes (|cff...|r|Hlink|h); using it as a free-text separator caused SendChatMessage to reject messages with "Invalid escape code".
  • SafeSetText helper in the right edit panel: refuses to overwrite an EditBox while it has keyboard focus, preventing background events (ROSTER_UPDATEDDATA_UPDATED) from wiping the user's in-progress typing.
  • CommitPendingEdits helper force-commits any focused right-panel EditBox (context, note, players input) before changing the selected attribution / boss, so pending text is saved against the correct id instead of being lost.
  • Editor channel dropdown entries are now notCheckable = true for uniform left padding (the previously-checked entry had an extra checkbox indent the others lacked, breaking alignment on TBC Anniversary clients). Same fix applied to the marker dropdown.
  • Window size increased from 820×520 to 820×600 to fit the new note textarea and the two-row players input.
  • Roster module: legacy RAID_ROSTER_UPDATE / PARTY_MEMBERS_CHANGED events are now registered through a pcall-wrapped helper, since TBC Anniversary rejects the older event names.

Fixed

  • Static popup edit boxes (WSA_NEW_RAIDWSA_RENAME_RAIDWSA_DUPLICATE_RAID): on TBC Anniversary the field is exposed as self.EditBox instead of self.editBox. The popup handlers now go through a PopupEditBox(self) helper that tries self.editBox, then self.EditBox, then _G[self:GetName() .. "EditBox"] as a last resort.
  • EasyMenu global removed in modern clients (including TBC Anniversary). Replaced with a local ShowEasyMenu polyfill that reproduces the historical Blizzard implementation (UIDropDownMenu_Initialize + ToggleDropDownMenu). Used by the boss picker and player picker dropdowns.
  • Empty-state message on the Raid Summary screen was clipped because it was anchored on the 1×1 scroll child. It is now anchored on the panel itself with a centered JustifyH.
  • ScrollFrame scroll children (raid summary list, boss sidebar, attribution list, players list, note textarea) are now resized via an AutoSizeScrollChild helper that hooks OnSizeChanged and OnShow, plus a one-shot OnUpdate tick. Without this fix, rows anchored TOPLEFT+TOPRIGHT collapsed to 0 px wide on the very first refresh, making children (X buttons, names) pile up at the same position.
  • Multi-line note EditBox required an explicit non-zero size (SetSize(200, 100)) to receive clicks; without it the hit rect was zero and the field was un-focusable on the first show. Clicking anywhere in the backdrop now focuses the editbox so the user does not have to hit an existing line precisely.
  • Pending edits lost on Announce: clicking the Announce button while still typing in the players input or note field would read stale data from the DB before the focus-loss handler ran. The Announce / Preview button click handlers now call CommitPendingEdits() first.
  • Boss row in the sidebar wrapped long names onto two lines and overlapped the attribute counter. The row is now single-line with WordWrap(false), the title cap-anchored on the LEFT of the right-side counter so it truncates instead of wrapping.

Removed

  • Shift-click absorber path: all the ChatEdit_GetActiveWindow / ChatEdit_InsertLink / SecureUnitButton_OnClick hook code was removed (~190 lines from Roster.lua). The original goal was to let the user shift-click a raid frame to assign the player to the current attribution, but the integration was unreliable across raid frame addons (ElvUI / oUF / Vuhdo all bypass the standard click flow). The new in-addon player picker dropdown covers the same use case more reliably and with no addon-side hooks.
  • UI:IsReadyForShiftClick and UI:TryAbsorbPlayerLink entry points (no longer called).
  • Announce FR button and the EN/FR language toggle in the announce bar.
  • announceLanguage setting key from DEFAULTS.
  • The old single-line playersBox / ParsePlayerList workflow is gone — the players section is now a structured list, not a comma-separated text field. Attributions.lua still ships ParsePlayerList / FormatPlayerList because they may be useful elsewhere, but the editor no longer uses them.