promotional bannermobile promotional banner

Warlords Forever

Lightweight world PvP companion for WoW: Forever - kill/death tracking, PvP achievements, enemy healer markers, guild blacklist, bounties, raid tools, war effort and enemy reports.

Warlords Forever — WoW: Forever

A lightweight world-PvP companion rebuilt for WoW: Forever (Interface 16001, project WOW_PROJECT_CAMELOT). Version 1.3.0 - see CHANGELOG.md.

No libraries. The only network traffic is a small guild-shared list over the hidden guild addon channel, and short Kill On Sight / bounty sightings to guildmates.

Feature What it does
Kill / death tracking Honorable kills (killing blows and assists) and deaths to players, broken down by class, race, zone and guild
Streaks & multi-kills Kill streaks, multi-kills within 10 s, announcer sounds, raid-warning milestones
Achievements 141 Warlords achievements, filtered to your enemy faction (119 visible per character)
Healer markers H.H.T.D.-style badges over known healers' nameplates: a class-coloured disc with a red cross for enemies and a pale gold cross for friends
Rivals Favourite victim, nemesis, revenge kills, kills/deaths line on enemy tooltips
Enemy Report One click (button, key binding or /wl report) sends your location and the enemies around you to guild / group. A long list is split over several numbered messages, each within chat's 255-byte limit, up to 6. Local Defense gets the first one typed into your chat box. Guildmates and groupmates running the addon get a map pin at your position, with a clickable pin link. Drag the button anywhere
Guild blacklist Officer-kept same-faction watch list (players or whole guilds); warns on target, nameplate, group join, invite; tooltip line and target tag
Bounties Any guild member can put a bounty on an enemy player or guild (its author or an officer can remove it); members are alerted when one is in view, and a kill claims it automatically (one-time or recurring)
Radar A slim window listing the enemy players around you (nameplates, target, focus, mouseover): class icon and colour, level, guild, Kill On Sight / bounty / healer tags, how fresh the sighting is; hover for race, guild rank and PvP rank. Click a row to target, Shift-click for Kill On Sight, right-click to place a bounty, call it out or ignore. Its own alert sounds for new enemies, stealth and Kill On Sight (or pick game sounds), and it raises the nameplate range so enemies are seen further out. Grows up or down, scales 50-200 %. Kill On Sight and bounty sightings are passed to guildmates in the zone, and optionally every enemy you see
Kill On Sight Guild-shared list of enemy players or whole guilds (any member adds; its author or an officer removes), with a reason and when each was last seen
Guild titles A guild master-defined ladder of titles by kill count (default: Recruit, Blood Soldier, Warmaster, Battle Lord, Warlord, High Warlord). Everyone's addon shares its count; titles show on the Titles page leaderboard, guildmates' tooltips and the minimap button. Titles can be tied to real guild ranks, with one-click promote / demote
Guild member markers Your guild's emblem (tabard colours and emblem) over every guild member you can see, grouped or not, so you can spot guildmates to help. Works without friendly nameplates switched on
Raid tools Guild-shared raid warning presets (page + quick bar), invite all online guildmates (auto-converts to raid), green dot on guildmates' raid frames
War effort Officers list items and quantities; progress from the guild bank and the guild master's bags; wanted items marked in members' bags and tooltips

Open with /wl, the minimap button, the minimap Addons (compartment) menu, or Options → AddOns → Warlords Forever.

The minimap button

  • Hover for your guild title (and kills to the next) at the top, then your world PvP kills in the last 24 hours, 7 days, 30 days and lifetime, all honorable kills, kill streak, achievement score and count, and the radar (enemies nearby, in view, Kill On Sight).
  • Left-click opens the window. Right-click opens a menu: jump to any page, show the radar, switch the radar and each of its alerts on or off, extend nameplate range, test the radar sounds, guild member markers on / off, send an Enemy Report, put your target on Kill On Sight, post your kills, settings, hide the button.
  • Middle- or Ctrl-click shows / hides the radar. Shift-click posts your guild title and world PvP kills (24 hours, 7 days, 30 days, lifetime) to guild chat.
  • Drag it around the minimap edge. The same clicks work on the minimap Addons menu entry (no middle-click there - use Ctrl-click).

The window

A dark, flat panel with a sidebar of pages (with live counts: known healers, blacklist entries, open bounties, Kill On Sight), a crimson accent for what's active and gold for the numbers. Adding to the blacklist, bounties, Kill On Sight, raid warnings and war effort happens in a form at the top of each page. Leave the name empty to use your target, or drop an item on the war effort field. The fonts are Big Noodle Titling for headings and numbers (shipped in Fonts/, free to redistribute, licence in Fonts/BigNoodleTitling-LICENSE.txt) and the game's own Arial Narrow for body text.

How Forever changes things

Forever runs on the retail Midnight client with Midnight's addon restrictions:

  • The combat log is closed to addons. Registering COMBAT_LOG_EVENT_UNFILTERED is forbidden. The old addon (src/WarlordsPvP) was built entirely on it.
  • Secret values. Enemy cast spell IDs are always secret. Auras are secret in combat and in PvP matches. The battleground scoreboard is secret until the match ends.
  • No realms. Characters have a first name and a surname, so players are keyed by GUID, not Name-Realm.

Kills

Three signals replace the combat log:

  1. PARTY_KILL — your (or your pet's) killing blow, with the victim's GUID.
  2. CHAT_MSG_COMBAT_HONOR_GAIN — names the victim. The pattern is built from the client's own localized COMBATLOG_HONORGAIN strings.
  3. PLAYER_PVP_KILLS_CHANGED with GetPVPSessionStats — an HK credit that names no victim, i.e. an assist. It is matched to an enemy death you witnessed (nameplate, target or mouseover, UNIT_DIED). Feign Death is filtered with a 4-second confirmation.

Each HK credit counts exactly once. Credits that can't be attributed (common inside battlegrounds) still count toward your totals.

Deaths

The killer comes from the death recap (C_DeathRecap.GetRecapEvents).

Healers

H.H.T.D. (Healers Have To Die) finds healers in the combat log. It uses heals above a size threshold, plus a list of healer-only spells (on Classic: Swiftmend, Lightwell, Chain Heal), checked against the battleground scoreboard's spec column. Forever closes the combat log to addons, and H.H.T.D.'s own Midnight build says it "does not do much" there. So here healers are learned and remembered by GUID, in the ways Forever still allows:

  • Spells — H.H.T.D.'s Classic healer-only spells (any rank), counted only when the caster's class matches, as in H.H.T.D. This works when the game shows the cast. Friendly casts usually show; enemy spell IDs are usually secret.
  • Inspect — nearby Priests, Paladins, Shamans and Druids (enemies and group members) are inspected, and their talent points per tree are read (Holy/Discipline, Holy, Restoration, Restoration).
  • Group roles — party and raid members whose role is Healer.
  • Buffs — out of combat only. Talent-only healing buffs (Riptide, Wild Growth, Prayer of Mending, Water Shield, …) reveal the healer. Names are matched in English.
  • Scoreboard — after a battleground ends, the spec column where the game fills it in (as H.H.T.D. does). Otherwise, players whose healing exceeded their damage (and at least 15k healing).
  • Manual — /wl healer add / /wl healer remove on your target.

A fresh talent inspect that says "not a healer" outranks spell and buff hints for an hour.

The badge copies H.H.T.D.'s design, but is drawn from game textures because H.H.T.D.'s artwork isn't licensed for reuse. It is a disc in the healer's class colour (grey if unknown) inside a dark gold ring, with a red cross for enemies and a pale gold cross for friends. It sits with its bottom edge on the top of the nameplate, at H.H.T.D.'s default size (64 px × 0.8 = 51). Friendly badges need friendly nameplates - your own, or the invisible ones of the guild markers' markers only mode.

Not possible on Forever, because each needs the combat log: H.H.T.D.'s heal-size threshold, the healer "rank" number on the badge, "healer under attack" alerts, and healer announcements.

Remembered healers stay marked for 14 days (configurable).

Guild-shared lists

The blacklist, bounties (and claims), Kill On Sight, the guild title ladder and members' kill counts, raid warning presets and the war effort live in one small book per guild (Guild.lua):

  • Each entry has a server timestamp and an author; the newest write wins. Removals are kept as tombstones for 90 days so a stale copy can't bring an entry back.
  • Every receiver checks a change against the sender's rank in the game's guild roster. The server stamps the sender name, so it can't be faked. Officer ranks are rank 0, the ranks the game says can listen to officer chat, and what the guild master's addon publishes.
  • Who can write: officers edit the blacklist, raid warnings and war effort; only the guild master edits the title ladder and its settings; any member can place a bounty or add to Kill On Sight (only its author or an officer can change or remove it) and writes their own bounty claims and kill count.
  • Each member remembers how far its copy is known to be complete, and asks for everything after that point: at login, shortly after an officer logs in, and every 15 minutes. One online officer answers; if another officer answers first, the rest stay quiet. Edits received live don't move that point, so an edit missed while offline is still fetched later. /wl status shows how recent the last complete sync was.
  • Messages are split into parts and paced to the client's limits: a burst of about 10 parts, then 1 every 2 s. Throttled parts are retried, and inside PvP matches (where addon messages are locked down) sending waits.
  • Out of a guild, the same lists work just for you and nothing is sent.

Radar

Our own nearby-enemy detector (Radar.lua), in the same style as the main window. Toggle with /wl radar, a key binding, or let it open itself when an enemy shows up. Settings → Radar switches it (and each alert) off; right-click the radar's header for the common options (how long enemies stay listed, grow direction, scale, rows, sounds).

  • Detection. Without the combat log, enemies are seen through their nameplates (switch enemy nameplates on - the radar reminds you), your target, focus and mouseover, rescanned every second. So the radar sees exactly as far as nameplates are drawn: Classic-style clients draw them to only ~20 yards, which is why Extend nameplate range (on by default) raises the nameplateMaxDistance CVar to the most the client allows (41 yards on Classic-style clients) and puts your old value back when switched off. Enemies you can't see aren't detected. An enemy stays on the NEAR list for 30 seconds after it was last seen (10 s to 5 min); HOUR shows everyone from the last hour.

  • Alerts. Each can be switched off, and each has its own sound: three made for this addon (sounds/Radar) or the game's raid warning, boss whisper, ready check, alarm clock or map ping. Picking a sound in the settings plays it; /wl radar test plays all three. Every sound file ships as MP3 and OGG, and if the client refuses one the other is played (Spy's Forever build found the client refusing MP3s); /wl status says whether the last sound played. They play on the Master channel, so they're heard with game sound effects turned down.

    When Default sound
    A new enemy (at most one every 1.5 s) Contact blip: two rising high notes
    A Kill On Sight player, or a member of a Kill On Sight guild Kill On Sight alarm (a fast two-tone siren) and a centre-screen warning, instead of the blip
    An enemy stealths near you (the same enemy at most every 20 s) Stealth sweep: two falling whooshes, and a violet centre-screen warning
    A guildmate spots a Kill On Sight / bounty target in your zone The ready-check chime

    The stealth alarm comes from the cast (Stealth, Prowl, Vanish, Shadowmeld - matched by spell name, so any rank or language) when the game shows it, otherwise from a Rogue, Druid or Night Elf whose nameplate was within ~11 yards (or who was fighting you) disappearing while alive. A death, a loading screen or the plate coming straight back don't count.

  • The window. Each row: class icon in a class-colour frame over a faint class-colour wash (or a thin stripe, if class icons are off), name, level / class / guild, tags (KOS, STEALTH, a gold coin for a bounty, the healer cross) and "in view" / seconds since seen / "via" the guildmate who spotted it. Hovering a row always lists level, class, race, guild, guild rank and PvP rank (or title), with "?" for anything the game hasn't shown yet. Kill On Sight, bounty and stealth rows sort to the top; enemies out of sight fade; new ones flash crimson. Click targets (a secure macro), Shift-click toggles Kill On Sight, right-click opens a menu: Kill On Sight (player or their whole guild, with a reason), Guild bounty (one-time or recurring, on the player or their guild), call out to guild / group, Enemy Report, ignore, remove. Remove hides that one enemy while they're still around; they're listed again once they've left for the "keep listed" time and come back. Ignore hides them for good.

  • Layout. Radar grows down (the top edge stays where you put it - anchor it near the top of the screen) or up (the bottom edge stays put - anchor it near the bottom). Radar scale sizes it from 50 to 200 %. Drag it by the header.

  • Combat. Rows are secure buttons, so the list can't be rebuilt in combat: rows hold their places, new enemies are counted in the footer and slot in when combat ends. Alerts are never delayed.

  • Guild sightings. When you see a Kill On Sight or bounty target, guildmates running the addon are told where (one short addon message, at most every 2 s and once per target per 2 minutes; never inside battlegrounds). Guildmates in the same zone get it on their radar with the klaxon; others get a chat line. A receiver only acts on targets that are still on its own lists, and announces each target once a minute however many guildmates report it. You don't send a target a guildmate reported in the last 20 s.

  • Share all sightings (opt-in, off by default). Also sends every other enemy you see: up to three per message, at most one message every 2 s, each enemy again every 25 s while you still see them, skipped when a guildmate reported them in the last 20 s. Each message carries your position when the game lets addons read it. Guildmates in your zone (Show guildmates' sightings, on by default) list them as "via <name>" within Guildmates' sightings within yards (default 300); the new-enemy sound plays when the sighting is within 120 yards, a Kill On Sight one always sounds the alarm, and seeing the enemy yourself later still alerts. With a few guildmates spread out this is the only way past the nameplate range. Spy has the same idea (off by default too).

  • Where it runs. Open world, contested and enemy zones. Paused in dungeons, raids and sanctuaries, in battlegrounds and arenas unless Also in battlegrounds and arenas is on (header right-click menu, minimap menu or settings; the window says so while it's off) and, optionally, while you aren't PvP flagged. Inside PvP matches Forever may hide enemy names; /wl status reports it when it does, since the radar can't list a player it can't name.

  • Settings (Settings → Radar; most also in the header's right-click menu and the minimap button's menu): radar on/off, open when an enemy appears, sound for new enemies, stealth alarm, Kill On Sight alarm (each with a sound choice), extend nameplate range, share sightings, share all sightings, show guildmates' sightings and their range, only when PvP flagged, also in battlegrounds, lock, rows shown (3-15), grow direction, scale, class icons, how long an enemy stays listed (10-300 s, default 30).

Guild titles

Titles.lua, the Titles page (/wl titles). A ladder of titles by kill count, set by the guild master and shared with the whole guild. Until the guild master changes it, the default applies:

Title Kills
High Warlord 25,000+
Warlord 7,500-24,999
Battle Lord 4,000-7,499
Warmaster 2,000-3,999
Blood Soldier 500-1,999
Recruit 0-499 (and everyone below the other titles)

Each title has a minimum kill count, so there are no gaps: everything from 7,500 up to the next title is Warlord. The bottom title is everyone's floor: with 0 kills, or below a title's minimum level, you are a Recruit.

  • The guild master edits it on the page: click a title to edit its name, kills or minimum level (optional), add up to 10, right-click to remove or to tie it to a guild rank. Also: what counts - World PvP (honorable kills outside battlegrounds and arenas, as tracked by the addon since each member installed it) or All HKs (the game's lifetime count, battlegrounds included, so older kills count too) - titles on/off, and Default to restore the ladder above. Changes reach every member straight away; members see the ladder read-only.
  • Counts. Each member's addon publishes its own count (only they can write it: the server stamps the sender) when it changes, at most every 10 minutes and straight away on reaching a new title. Titles are worked out by each client from the ladder, so a ladder change applies to everyone at once.
  • Where titles show. The page: your title with progress to the next, the ladder (how many members hold each title), and the guild leaderboard (kills, title, level, guild rank; members without the addon show as "no addon data"). Guildmates' tooltips. The minimap button tooltip. Reaching a new title gives a centre-screen message and, optionally, a line in guild chat (Announce new guild titles).
  • Guild ranks. Tie titles to guild ranks (right-click a title) and the leaderboard shows Promote / Demote next to anyone whose rank doesn't match, plus Fix all ranks - for whoever has the guild's promote / demote permission. Only members whose current rank is one of the ladder's ranks are changed: never the guild master, officers on other ranks, or anyone at or above your own rank. Nothing changes without a click.

Guild member markers

GuildMarks.lua puts a round badge on top of the nameplate of every member of your guild you can see, grouped or not, the way the healer badge sits on healers. The badge is your guild tabard: its border colour as the ring, its background colour as the disc and its emblem in the emblem colour (drawn by the client's own tabard helper). A guild without a tabard design gets a green badge with a tabard icon. A guildmate who is also a known healer gets both badges side by side. Settings → Guild members switches it off, sets the size and the markers only mode.

No need to turn friendly nameplates on. A marker needs a nameplate to sit on (addons can't place anything over a character any other way), so in the default markers only mode the addon switches friendly nameplates on itself but keeps the game's friendly plates invisible and click-through: you see the guild emblems, and friendly healer badges, and nothing else. Friendly NPC plates stay off. Your own settings (friendly nameplates, friendly NPC nameplates, click-through) are saved and put back when you switch the markers off and at every logout, so disabling or removing the addon never leaves friendly nameplates on. If you use friendly nameplates yourself, switch markers only off: the emblems then sit on your normal friendly plates. Nameplate settings can't change in combat, so a change made then applies when combat ends. The game doesn't give addons friendly nameplates inside dungeons and raids, so there are no markers there. /wl status shows which mode is active; /wl marks walks through every step for the nameplates in view (friendly nameplate settings, how each guildmate was recognised, whether its marker is shown). A guildmate is recognised by the game's UnitIsInMyGuild, by their guild name, or by their exact name in your guild roster - whichever the client lets the addon read.

Kill On Sight

A guild book collection (kos, KillOnSight.lua) with its own page: players or whole guilds, a reason, who added it and when one was last seen. Any member adds, from the page (empty name = your target), /wl kos add or the radar; only its author or an officer removes it. The radar's ignore list (/wl radar ignore | unignore <name>) is yours alone.

Deliberately not included

  • PvP ranks and battleground reputations — Forever's Legacy challenges already cover them: Rank 3/7/10/13/14 and the "Master of" battlegrounds.
  • Battleground HK and killing-blow statistics — Forever's Statistics pane already counts them.
  • Spy itself — the radar is our own implementation, not a copy of Spy; Spy's statistics window and minimap tracking are not reproduced.
  • Removed from the old addon: guild member stats sync, cross-guild bridge / coalition chat, map tracking, calendar and civilian guard. SOS returns as Enemy Report.

Commands

/wl                        open the window
/wl achievements | healers open a tab
/wl healer add|remove|clear
/wl report                 send an Enemy Report (also: Key Bindings > AddOns)
/wl hk                     post your guild title and world PvP kills (24h, 7d, 30d, lifetime) to guild chat (also: Shift-click the minimap button)
/wl bl [add]               blacklist page (add = your target)
/wl bounty [add]           bounties page (add = bounty on your target)
/wl raid                   raid warnings + guild invite page
/wl rw [preset]            toggle the raid warning quick bar, or send a preset
/wl invite                 invite online guildmates to a raid
/wl radar                  show / hide the enemy radar (also /wl spy, Key Bindings > AddOns, Ctrl-click the minimap button)
/wl radar ignore|unignore <name>
/wl radar test             play the radar's alert sounds
/wl kos [add]              Kill On Sight page (add = your target)
/wl titles                 guild titles by kill count
/wl marks                  why guild member markers do or don't show (stand near a guildmate)
/wl war                    war effort page
/wl options                settings
/wl status                 client + addon-restriction diagnostics, radar, sound and guild marker state
/wl debug                  print what the addon detects
/wl reset confirm          wipe this character's stats

Known unknowns (verify in game)

  • Whether enemy GUIDs are readable inside battlegrounds. The docs say yes for player-controlled units; one other addon reports they are secret. Run /wl status with an enemy targeted inside a battleground.
  • Whether CanInspect / NotifyInspect work on enemy-faction players.
  • Forever's honorable-kill rules: diminishing returns, gray kills, dishonorable kills.
  • The zone-hotspot achievements match English zone names.
  • Whether guild addon-channel sender names are written like the roster's names (First-Surname vs First Surname). Matching accepts either, and falls back to a unique first name. /wl status shows your rank and the officer ranks the addon sees.
  • Whether non-guild-master clients can read rank permissions. If they can't, the guild master's addon publishes the officer ranks the first time the guild master logs in with it.
  • Whether UnitPosition is readable on Forever (shared sightings' distance). Without it, shared sightings are accepted anywhere in your zone and play no sound unless Kill On Sight.
  • Whether SetGuildMemberRank (guild titles' promote / demote) exists on Forever with a 1-based rank order; without it, the buttons step one rank at a time with GuildPromote / GuildDemote.
  • How far Forever lets nameplates be drawn (/wl status shows the radar's nameplate range), and whether UnitIsInMyGuild and SetLargeGuildTabardTextures (guild member markers) exist on Forever; markers fall back to comparing guild names and to a plain badge.
  • Whether the radar's class icons (classicon-* atlases, else the old class sheet), guild ranks of enemies, and honor ranks (UnitPVPRank, else the shown title) are available on Forever.
  • Whether CheckInteractDistance reads enemy distance on Forever (the stealth guess outside combat relies on it), and whether UNIT_SPELLCAST_SUCCEEDED spell IDs are readable for enemy casts (they are secret in most cases; the vanish guess covers that).
  • Taint: if the game ever blocks an action and blames this addon ("interface action failed" / "UI blocked"), the addon names the blocked action in chat and /wl status lists it. Questions use the addon's own dialog, never the game's shared popups, so trainers and other Blizzard popups aren't affected.
  • Whether enemy identities are readable inside battlegrounds: /wl status counts the player, friend-or-foe, GUID and name reads the game kept hidden.
  • Bag marks hook the container frames' UpdateItems. If bags show no marks, tooltips still show the war effort line.

Warlords Forever Team

profile avatar
  • 8
    Projects
  • 5.8K
    Downloads

More from BionicBitsView all

  • Crafted project image

    Crafted

    Is it cheaper to craft or buy? — and then handling everything that follows: gathering the mats and trading them, accurately.

    • 41
    • August 17, 2026
  • WarlordsPvP project image

    WarlordsPvP

    The ultimate addon for PvP guilds in World of Warcraft Classic. Combines enemy tracking, honorable kill statistics, guild PvP ranks, bounty hunting, and raid management into one powerful package.

    • 3.5K
    • August 15, 2026
  • HunterMaster project image

    HunterMaster

    Stop clipping autos and guessing the dead zone. The whole hunter kit in one movable group: swing timer, range zones, stings on every enemy, pet, traps, cooldowns, and radial menus that work in combat.

    • 980
    • August 13, 2026
  • Guild Raid Indicator project image

    Guild Raid Indicator

    A World of Warcraft Classic Era addon that displays a green dot on raid frames for guild members in both regular raids and battlegrounds.

    • 190
    • January 14, 2026
  • Crafted project image

    Crafted

    Is it cheaper to craft or buy? — and then handling everything that follows: gathering the mats and trading them, accurately.

    • 41
    • August 17, 2026
  • WarlordsPvP project image

    WarlordsPvP

    The ultimate addon for PvP guilds in World of Warcraft Classic. Combines enemy tracking, honorable kill statistics, guild PvP ranks, bounty hunting, and raid management into one powerful package.

    • 3.5K
    • August 15, 2026
  • HunterMaster project image

    HunterMaster

    Stop clipping autos and guessing the dead zone. The whole hunter kit in one movable group: swing timer, range zones, stings on every enemy, pet, traps, cooldowns, and radial menus that work in combat.

    • 980
    • August 13, 2026
  • Guild Raid Indicator project image

    Guild Raid Indicator

    A World of Warcraft Classic Era addon that displays a green dot on raid frames for guild members in both regular raids and battlegrounds.

    • 190
    • January 14, 2026