On 20 February 2026 an entry appeared in the Valor news that is easy to scroll past: the creature type on the custom races was fixed. One line in a changelog, no drama. Behind it, though, stands an entire class of problems that every server dealing with content the game was never built for has to live with.

A field the player never thinks about

In World of Warcraft version 3.3.5a every unit has an attribute that determines which kind of creature it belongs to: humanoid, beast, undead, demon, elemental, dragonkin, mechanical, critter. Creature type is one of the filters the game runs a target through when deciding what can happen to it at all.

A noticeable share of crowd control spells rests on it: Polymorph has one list of valid types, Banish another, Hibernate a third, Shackle Undead a fourth. Bonuses on certain items and applied enchants are tied to type as well. So an attribute that does not appear anywhere in the character interface quietly takes part in dozens of checks over a single fight.

Creature typeWhat depends on it
HumanoidThe normal type for a player character; part of the crowd control toolkit is built around it
BeastHunter taming and tracking, Hibernate
UndeadShackle Undead, bonuses on certain items and enchants
DemonBanish, Enslave Demon

When a race has this field set to something other than what the rest of the game expects, the symptoms come out scattered and hard to pin down. Something that ought to land on your character does not. Or the opposite — an effect gets applied that has no business existing on a player. In combat that does not read as a bug, it reads as "must have imagined it" or "must have lagged": an ordinary player simply cannot connect one failed crowd control attempt to a row in a data table.

A custom race lives in two places at once

The client for build 12340 is put together around a fixed set of races and carries its own data tables: the race list, the permitted race and class combinations, models and animations, appearance sets, starting locations. The server keeps its half of the same picture — character creation parameters, starting gear and abilities, faction assignment, access to spells and recipes, languages.

A custom race exists only for as long as both halves describe the same thing. And a mismatch in a single field does not break logging in and does not throw an error — it produces oddities, and oddities stick around for a long time. That is exactly why the client side on Valor is delivered by the launcher rather than by the player: update 1.0.2 on 15 March 2026 required a full client reinstall, and 1.0.5 and 1.1.5 followed after it. Control over the client data is the very mechanism that keeps the two halves in sync.

Why content like this needs constant watching

Custom content is not built once and for all. It lives on top of code that was not written for it, and any movement in the infrastructure is a reason to recheck the whole thing. On 27 February 2026 the project carried out maintenance and moved to a new core. Changing the core means the same data is now read by different code: with different defaults, different validation and different assumptions about what cannot possibly be in that data.

From which a simple conclusion follows: a server with custom races has no state called "done". It has a state called "verified on the current build". The list of things worth running through after every major change looks roughly like this:

  • whether the client and server race lists and permitted classes match;
  • whether the character's base properties are correct, creature type included;
  • whether racial abilities, languages and reputations work;
  • whether other people's spells, items and enchants see the race correctly;
  • whether the starting zone, gear and graveyards are where they should be.

Why it is better to say a thing was broken out loud

A fix of this kind is easy to slip in quietly. The player most likely would have noticed neither the breakage nor the fix: the effect is spread too thinly across small things to add up to a complaint. A public news post works differently. It turns a set of private moments of confusion into a shared fact — the people who ran into inexplicable crowd control behaviour in PvP get an explanation and realise it was not their play at fault.

The second effect is less obvious. By writing "it broke, it is fixed", the project agrees to report the next similar problem too: silence after an entry like that looks worse than silence before it. A news feed where dry technical fixes sit next to season launches and sales reads like a work log rather than a shop window. And a work log shows what the team is actually busy with.

Which races are available and how they are built is on the custom races page. Technical fixes and announcements are published by the project in the news.