Nemesis

Details

Nemesis is a custom gameplay module for World of Warcraft 3.3.5a built on top of AzerothCore that was sort of just a silly experiment that ended up turning into something pretty cool. The idea was simple: revenge meets roguelike meets WoW. When a regular creature kills you out in the world, it has a chance of being promoted into a persistent, named elite. That creature sticks around, levels up every time it kills another player, ages over time, picks up traits based on the circumstances of its kill, and eventually shows up on a server-wide bounty board in the capital cities.

The traits are what make each one feel different. An Ambusher that caught you alone plays differently than an Ironbreaker that tanked through your burst, and the loot they drop is shaped by their history. There are 21 origin traits assigned based on how the kill went down, 13 earned traits that accumulate from later experiences, and over 300 affix combinations on the loot side, so the rewards feel personal to the creature that earned them. Item names end up looking like “Executioner’s Scarlet Boots of Dominion” rather than the usual generic drops. On top of that, a server-wide Umbral Moon event periodically cranks promotion rates and mobs’ stats up across the world and forces nighttime client-side, and a vengeance title track rewards players for hunting down the specific nemeses born from their own deaths.

The whole thing is built around the idea that dying in the open world should be more than just a death. The creatures level and experience the game along with the players, and become a real threat.

The whole thing is a mix of C++ server modules, a Lua client addon for the bounty board UI, a C# .NET MAUI launcher, and a PowerShell-driven DBC tooling pipeline.

  • Dynamic creature_template cloning: To get persistent named nameplates without polluting the base creature tables, every promoted nemesis gets its own cloned template entry in the 9,000,000+ range at runtime.
  • Runtime item_template cloning for affixed loot: Procedural loot needed to persist across logins, so item templates are cloned on the fly and injected directly into the creature loot object rather than relying on static loot tables.
  • Custom DBC spell pipeline: 42 custom spells were authored through Stoneharry’s Spell Editor and wired into a repeatable build pipeline so the client-side data stays in sync with the server.
  • Client-side sky manipulation: The Umbral Moon nighttime effect is driven by sending SMSG_LOGIN_SETTIMESPEED packets to manipulate the client clock without touching the actual server time.
  • Bounty board streaming protocol: The Lua addon receives top-threat data from the server via a structured chat protocol prefixed with @@NBB@@, which keeps the addon working without requiring custom opcodes.
  • Affixed item support: Item entries beyond the standard ranges are enabled through WoWPatcher335 – without which items wouldn’t render with the correct icons and end up becoming classless. The trait system also required working around a couple of sharp edges in the core, namely the additive assumptions baked into ApplyStatPctModifier and the difference between AddAura and CastSpell when applying periodic effects.

Languages broke down to roughly 70% C++, 13% C#, 8% PowerShell, and 6% Lua.

Source is up on GitHub (link above) under AGPL-3.0. The project is archived as a portfolio piece, so it is not actively maintained, but everything needed to read through it or stand it up locally is in the repo.