v0.11.1
What's new
Contested
0.11.1
- All out war: while you are in Stranglethorn Vale during a round, a small frame shows the live score, who leads and your own kills, and updates with every kill. Drag it anywhere; right-click it for the war window.
- All out war: a reminder 10 minutes before each round, in chat and across the middle of your screen.
- All out war: a tied round now goes to the faction with more kills that day, or that week if the day is tied too. A tied day goes to the faction with more kills that week.
0.11.0
- New on WoW Forever: all out war in Stranglethorn Vale. Every 2 hours, on the hour, the zone goes to war for 15 minutes on every layer, and only kills count. It runs on its own, apart from the captures.
- The faction with the most kills in a round are the Champions until the next round. Yesterday's winner is always shown.
- The faction with the most kills over the week wins total domination and holds the faction banner, shown in the top corner of the Contested window, for the following week.
- Every kill is witnessed and recorded. The war window keeps this week's player and guild records. Open it with
/contest waror by clicking the banner.
0.10.0
- New: linked battles. Offer the other faction's leader a fight at one capture point and they answer with Accept or Decline. Open it with the Linked battle button on the Peers tab or
/contest link. - On WoW Forever an offer goes to a Battle.net friend. On retail it can also go to anyone of the other faction in your guild or communities.
- The fight is ordinary PvP. Both sides get the point pinned on their map. When your group is set, press Ready to start. The battle begins once both leaders are ready and both groups are in the point's zone on the same layer, and it ends when the point is taken on that layer. If either group leaves that layer the battle pauses until both press Ready again.
- While linked, a small frame shows both sides: how many are in each group, which zone each is in and each side's layer, and whether you are on the same layer. Drag it anywhere; right-click it for the window.
0.9.0
- Contested now speaks your language: every window, button, message and how-to page is translated into German, French, Spanish (Spain and Latin America), Italian, Portuguese, Russian, Korean and Chinese (Simplified and Traditional). The translations are machine-made; corrections are welcome on the CurseForge Localization page.
- The RP chains, leader's notes and lore library stay in English for now. Their translations come in a later update.
- Zone and capture point names now show in your game's language.
- Fixed: on non-English game clients Contested could not tell which zone you were in, so captures and map pins did not work there.
0.8.0
- Retail: the five original RP chains (Hillsbrad, the Barrens, Ashenvale, Stranglethorn, Eastern Plaguelands) now tell each zone's story as it stands on retail, with the people and places you will really find there. WoW Forever keeps the Classic versions.
- Retail: the leader's notes for those chains carry the retail lore behind every chapter.
- Retail: the lore library adds "On retail" pages for all 22 zones, 24 more clash sites from Outland to the Fourth War, and History all the way to Midnight.
- Retail: capture points in 15 zones moved to where the places really are on the retail map. Hillsbrad was the furthest out.
- Retail: fixed an error that repeated inside dungeons, raids, battlegrounds and arenas. Contested now leaves community rosters alone while you are in an instance.
0.7.0
- New How to guide: a page for each part of Contested (capturing, the Board, layers, teams, standings, friends, RP Mode, leading a chain, and on retail the faction clash at a venue), written as numbered steps. Most steps have a Show me button that opens the right window and points at the control.
- Open it with the How to button,
/contest howto, or Shift-click the minimap button. It replaces the old welcome guide and still opens once for new players. - Lighter on memory: the main window builds each tab the first time you open it, and the Fronts tab does far less work each second while it is open.
0.6.0
- Retail: Hellfire Peninsula and Grizzly Hills are venues for linked fights, each with an RP chain per faction that sends Alliance and Horde groups after the same three points (the Hellfire forts, the Grizzly Hills logging grounds). Captures there are real but do not count toward the war.
- Retail: the lore library has pages for both venues, and its History now runs on through The Burning Crusade and Wrath of the Lich King.
0.5.0
- Lore library in the leader's notes: besides the notes for the chain you lead, browse Warcraft lore for any of the 22 zones (capture points, places, people, stories, older history, what changed after Classic), every faction and third party, and the history of the wars.
- Leader's notes for RP chains: whoever leads the group gets a Lore button on the Adventure panel (or
/contest lore) with the lore behind the chain, who is who, what is lore and what the story adds, and talking points for each chapter. On retail it also says what has changed in the zone since. - Retail (US region): a Join the community button on the Peers tab, or
/contest community. It is an open cross-faction community for finding groups and opponents, and members pass claims to each other across factions and realms. Contested players in your other communities are found and included too, and nobody is sent the same claim twice. Joining is optional. The How to guide links to it. - WoW Forever: stories follow your level. A chain or random run is only offered for a zone that starts no more than 5 levels above you, so a level 20 is no longer sent to Eastern Plaguelands. Lower zones stay open at any level, and the Adventure panel lists the level each remaining story opens at.
- RP chains: story fixes in Ashenvale, the Barrens, Stranglethorn, Hillsbrad and Eastern Plaguelands so they match Warcraft lore. Two spoken lines changed: "neutral ground has a price" in the Barrens and "the colonel has a master" in Stranglethorn.
0.4.0
- A capture now takes 180 seconds, up from 90. Everyone in your group needs this version.
- Capture points are smaller: a point reaches as far as nameplates show. The map and minimap rings show the real size.
- Being in combat stops a hold, the same as being dead, mounted or stealthed.
- Group check: see who in your party or raid is running Contested and which version.
/contest check, or the button on the Team tab. - RP Mode (opt-in): story adventures on top of the war. Turn it on in the Adventure panel or with
/contest rp. - RP chains: a two or three chapter story for your faction in Hillsbrad, Ashenvale, the Barrens, Stranglethorn and Eastern Plaguelands. The group leader leads the scene, then the group holds the point. Chains reset weekly.
- Your map pin follows the story, and the story shows on screen during a hold.
/contest realmslists the realms heard on the Contested channel.
0.3.0
- The campaign week now follows the game's weekly reset instead of Thursday 00:00 UTC. The reset time is read from the game (
C_DateAndTime.GetSecondsUntilWeeklyReset), so it is Tuesday for the US and Wednesday for the EU, and it moves with daylight saving; if the game cannot say, a fixed time by region is used (US Tuesday 15:00 UTC, EU Wednesday 04:00 UTC in standard time; KR and TW are guesses). Weeks are numbered from one fixed Monday, so the same calendar week has the same number in every region. Everything that is kept per campaign (standings, scores, weekly keys, trust, layers) starts fresh at the reset. The first build with this moves the boundary once./contest rules(hidden) shows the current week, where the reset time came from, and when it ends. - Everything is kept apart when it is synced and shared. Forever's rulesets (PvP, PvE, Hardcore, RP) now each use their own addon message and Battle.net prefix and signing domain, so a message from another ruleset is dropped on every route, not just the channel; who a character has verified is kept per ruleset; and catch-up (asking others for what you missed) now compares and offers one region at a time instead of mixing regions. Plain PvP keeps the original prefix and domain, so its traffic is unchanged. Older saved trust is adopted by the first ruleset that loads it (save format 6).
- Forever's PvE ruleset now works like retail's: Contested only runs with your PvP flag on, pauses (and says so in chat and on the Board) when it is off, and shows the same status strip along the bottom of the window. It also gets its own war record, apart from the PvP, Hardcore and RP rulesets. The PvE ruleset is recognised as any game rule whose name starts with PvE;
/contest rules(hidden) lists the rules the game reports and which are on, so you can check the name. - Retail lists show each player's realm: the Board listing now reads "Name Realm" with the realm dimmed, since players from many realms share a layer.
- Regions, realm groups and their picker are retail only. Forever has one war: no picker, and nothing is filtered by region or realm. Layer ids carry the shard host on both clients, because the zone number alone is not unique; that is internal and changes nothing you see.
- Dead, mounted and stealthed players no longer count as holding a capture point, on both clients. That covers you (no timer runs and the HUD says why) and group mates or enemies you can see (read from their buffs, so best effort for other players). Being on a flight path counts as mounted.
- The world button in the main window is now taller, two lines, and sits to the right of the logo instead of under it.
- Layers and regions. A layer id is now
<host>.<layer>: the server hosting the shard (the third field of a creature GUID) and the zone id. The zone id alone is tiny and only unique on its host, so the host is part of the id and layer ids from the guild and Battle.net bridges can no longer collide. The host is not a realm: players from many realms share a shard, and each zone is hosted by a different server (the war for a Moon Guard character showed 3018 in Eastern Plaguelands and 3136 in Eversong Woods), so nothing is shown per host. Control, Fronts, standings, guild rankings and the score are kept and shown per region (US, EU, KR, TW). A button at the top of the window steps through the regions you know, right-click goes back, and/contest world us|eu|kr|tw|autodoes the same from chat. You never have to go to another region to fight; you can see how any region is doing. The HUD and map pins always show your own layer. Kills carry their host too. This changes the wire format (protocol 2) and starts a fresh war record for this campaign; keys and trust are kept./contest worlds(hidden) prints what the GUIDs on this client look like. - Realm groups. Connected realms act as one, so the picker also lists realm groups under each region, and standings for a group show what its own players earned: their captures, kills, guilds and rankings. A player's realm comes from their own GUID, which is stable, not from the shard host. Your own group is worked out on your client (the game names the realms connected to yours, and each player you meet shows which realm id goes with which name); other groups come from the realm table below. A capture or kill counts for the realm group most of its players come from. Fronts, control and the score stay per region, since players from many realms share a layer.
/contest world homeshows your own realm group. - Realm data.
Dev/build_realms.pybuildsCore/RealmData.luafrom Blizzard's public connected-realm data (needs a free battle.net API client). It joins the realms it connects into groups for standings; without it only your own group is joined. - Limits so a flood of made-up hosts cannot crowd out real ones: every host in your own region is accepted, other regions are limited to 16 hosts, layer limits are per host, and when war records are trimmed another region's events go before yours.
- Contested now runs on retail WoW as well as WoW Forever. The two are separate worlds: each client keeps its own war record, its own signing domain, and never accepts the other's traffic.
- Battle.net messages now name the client they came from (
Contested-Ffor Forever,Contested-Rfor retail). Each client only sends to, and only accepts from, friends on the same client, so Battle.net works correctly across both once Forever is live. - Retail names are one word plus a realm (
Name-Realm), and two players with one name on different realms are kept apart. Your own realm is left off when names are shown. - On retail Contested also pauses when the game restricts addon messages, and while you are in a cross-faction group, where world PvP and open-world events do not happen. Dungeons, raids, battlegrounds and arenas still pause it on both clients.
- On retail Contested is realm versus realm: it only runs with War Mode off and you flagged for PvP, and pauses otherwise. A strip along the bottom of the main window says whether you are in the war and, if not, which of "War Mode off" and "PvP on" is missing, and chat says so when it changes. A new retail page in the How to guide explains the rules. Forever is unchanged.
- Your layer is now read from more of what the game shows you: your target and mouseover, nameplates, focus, pets and soft targets, what your group members are targeting, and rare and other vignettes on your minimap. Layer reading is now hardened: a vignette gives the layer from its own GUID (most have no object GUID), pets and other player-controlled units are never read, a unit from another map instance or standing in the next zone is ignored, malformed or secret GUIDs are refused safely, and one stray creature (such as a vendor riding between zones) cannot move a layer that is still being seen. Once you have a layer, a different one has to keep showing for 5 seconds before it replaces it.
- All three phases are on: the Early, Mid and Endgame fronts are all active.
- Retail zones: Booty Bay is left out of Stranglethorn and the Barrens matches the Northern Barrens map. Point coordinates are still the Classic ones and need checking in a retail client.
0.2.4
Contested friends (Peers tab, or
/contest friend add|accept|remove <name>and/contest friend list). You can add anyone you have grouped with; both of you have to accept. Friends stay trusted every week without grouping again: each player keeps a friend key and signs every new weekly key with it. Friends pass signed claims and vouches on to each other by Battle.net when you are Battle.net friends (this also works across factions) or by whisper otherwise, each claim once and to a handful of online friends, building a web that is not tied to one realm or channel. A whisper to a friend who has gone offline no longer leaves an error in your chat.Standings keep names and guilds through a relog. Players who captured with you earlier in the campaign no longer drop to "No guild" once they have left your group.
Reconfirmed holds stay confirmed through a reload or relog. Before, a reload forgot that your group had stood on a point since capturing it, so a point could show "unconfirmed" early.
Guilds now bridge realms. The Contested channel only reaches your own realm, but guilds can span realms, so claims and layer beacons also go to your guild, and guild members carry claims between their realm's channel and the guild (one carrier per claim, the rest stand down). Carried claims are still checked by each player, and unverified ones only ever show as reports. Shared locations also reach guild mates on other realms.
Shared locations update faster while few people share (every 10 seconds instead of 20, still slowing down automatically as sharing grows), and dots fade as they get older so you can tell a fresh position from an old one. Each post carries its sender's update rate, so dots fade and expire on the sender's own schedule.
Standings: group mates in your guild no longer show as "No guild". Guild names that load late are retried, a known guild is never wiped by an empty read, and guild mates are recognised even before their guild info arrives.
The HUD now says "You hold ..." when your faction holds the point you're standing on, instead of asking for 3 players again.
Capture points now show on the minimap too: the areas near you are drawn in their holder's colour, and points further away sit on the minimap's edge so you can head toward them. Works with a rotating minimap and follows the same map pins setting.
Developer mode: new Channel users window (Security tab, or
/contest users) listing who sends Contested traffic on the channel, when they were last seen, how many messages and what they last sent, plus channel members who have sent nothing. Only recorded while developer mode is on, and cleared when it is turned off.New Share location option on the Board tab (or
/contest share), off by default. Players who turn it on show up on each other's world map as a blue (Alliance) or red (Horde) dot, faded when they are on a different layer. Only people sharing see others, nothing is sent inside dungeons, raids or battlegrounds, and posts slow down automatically as more people share so the channel never floods.
0.2.3
- Contested pauses inside dungeons, raids, battlegrounds and arenas. It stops tracking your position, sending and reading war traffic, reading your layer and posting to the board, and picks back up when you leave. Whispers for layer transfers still work so a request gets a proper answer.
0.2.2
- Much lower memory churn. Signing and checking signatures now leave about 40 times less temporary memory (37 KB instead of 1.4 MB per signature), the login self-check drops from about 15 MB to under 1 MB, and an idle client allocates under 1 KB a second. The memory figure in your addon list stays steady instead of jumping between 1 and 3 MB.
- Your name card is posted once when you join the Contested channel, and after that only when another player asks for it, instead of every 15 minutes.
- The HUD only redraws when something changes, and position tracking away from capture points only records changes.
0.2.1
- The red-team test is now a developer tool: greyed out on the Security tab and refused by
/contest testunless developer mode is on. It sends nothing to other players, but uses about 200 MB of temporary memory while running (freed when it finishes). - Fixed two red-team rows that failed in game ("rejected: error") when the test paused between frames.
0.2.0
- Catch-up: when you log in, Contested asks other players what changed this campaign and adds the captures, scout reports and kills you missed. Every event is checked on your own client against players you trust, with the same rules as live play, so nobody can slip in a fake one.
/contest syncasks by hand. - New players see the war right away: until you trust anyone, the Fronts tab shows what other players report, faded and marked unverified. Reports never count for anything. Group up once and they turn into the verified map.
- Shared standings: everyone now counts the same verified events, so Standings match between players instead of only showing what your own client saw.
- Trust carries over for the whole campaign week: players you grouped with stay trusted after a relog or reload, no new handshake needed.
- Each accepted event keeps the signed statements that prove it, so it can be passed on to players who were offline.
- Security tab shows how many players you trust this week and how catch-up is going.
/contest statusshows it too. - Built for big crowds: stress-tested with one client against the channel traffic of tens of thousands of players. A regular player's client holds up to about 68,000 players, a brand-new player's about 50,000. Crypto never stalls a frame, your own claims always go first, and far fewer messages are sent per capture and kill.
- Standings now cover the whole campaign: older events roll into totals instead of dropping off.
- Red-team console covers catch-up and relog attacks (forged, altered, replayed, old-campaign and single-group statements).
0.1.1
- Board: your own listing now shows at the top in green, with an Unlist button, so you can see that List me worked.
- Board: the status line tells you when you're listed, when Contested is still joining its channel, and when nobody else is listed yet.
0.1.0
- First build for WoW Forever.
- Zone battles over the classic contested zones, released in phases. Phase 1 opens the 10-30 zones: The Barrens, Darkshore, Redridge Mountains, Stonetalon Mountains, Ashenvale, Hillsbrad Foothills, Duskwood and Wetlands. The 30-50 and 50-60 zones follow in phases 2 and 3. Level ranges are a guide; any level can fight for any zone.
- Every zone has capture points named after its real subzones (54 in total). Hold a point with your group to capture it; hold the majority of a zone's points to own the zone.
- Captures and kills only count when your own client saw them, or when an independent quorum of verified players did.
- Group board: list yourself as looking for a group, recruit players, or host layer shifts so other groups can move onto your layer.
- Layers: every capture point is held per layer. Control is the weighted share of active layers each faction holds, so busy layers count more than empty ones. The campaign score is layer-minutes held.
- Scouting: no cross-faction messages needed. Stand at a point and watch the enemy hold it, and your side learns they took that layer. Holds fade if nobody confirms them.
- Hot layers on the board show where the enemy holds points, with a Shift here button when a host is listed on that layer.
- Saved teams: save your group or add players by name, keep up to 10 teams, and invite a whole team in one click (the group turns into a raid when it fills). Shift layers, then invite your team to bring everyone onto your layer. Optional auto-join when someone on your teams invites you.
- Standings: Alliance vs Horde, click a side for its guilds, click a guild for its players. Counted locally from verified events.
- Welcome guide on first login, and a How to button any time after: how to capture, why it takes three friends, layers and scouting, and the social tools.
- Map pins: press the pin on any capture point to mark it on your map.
/contest testred-team console, crypto self-check at login.
This mod has no additional files

