VMaNGOS can emulate any content patch of Vanilla WoW (1.2 - 1.12). The configured patch controls
gameplay mechanics, quest/NPC/dungeon availability, and which database rows are loaded. This page
explains how the system works and how patch, patch_min and patch_max columns behave.
The server reads the active patch from the WowPatch setting in mangosd.conf
(src/game/World.cpp: m_wowPatch = sConfig.GetIntDefault("WowPatch", WOW_PATCH_102)).
Defined in src/shared/Progression.h (enum WowPatch) and World::GetPatchName():
| Value | Client | Patch name |
|---|---|---|
| 0 | 1.2 | Mysteries of Maraudon |
| 1 | 1.3 | Ruins of the Dire Maul |
| 2 | 1.4 | The Call to War |
| 3 | 1.5 | Battlegrounds |
| 4 | 1.6 | Assault on Blackwing Lair |
| 5 | 1.7 | Rise of the Blood God |
| 6 | 1.8 | Dragons of Nightmare |
| 7 | 1.9 | The Gates of Ahn'Qiraj |
| 8 | 1.10 | Storms of Azeroth |
| 9 | 1.11 | Shadow of the Necropolis |
| 10 | 1.12 | Drums of War |
Note: Patch
0represents the 1.2 state, not original release (1.1). Data before 1.2 is generally not represented.
Tables with a plain patch column keep multiple versions of the same logical row. The loader
selects the highest patch value that is ≤ the server's configured patch:
-- Example from ObjectMgr::LoadCreatureTemplates:
SELECT ... FROM creature_template t1
WHERE patch = (SELECT max(patch) FROM creature_template t2
WHERE t1.entry = t2.entry AND patch <= <server_patch>)Changing an NPC's stats for patch 1.10 therefore means adding a new row with the same entry
and patch = 8 (or higher) rather than editing the existing one.
Used by: creature_template, gameobject_template, quest_template, creature_addon,
areatrigger_teleport, battleground_template, forbidden_items, map_template,
creature_onkill_reputation, game_event_creature_data.
Rows are loaded only if
patch_min <= server_patch <= patch_max
Defaults are 0 and 10, i.e. always visible. Typical uses:
- A spawn that only exists after a certain patch → set
patch_min. - An item/quest removed in a later patch → cap
patch_max. - Progression-gated loot: give a boss its pre-nerf loot table until patch X.
Used by (non-exhaustive): creature, gameobject, *_loot_template, pool_*,
creature_questrelation / creature_involvedrelation (+ gameobject equivalents),
creature_equip_template, item_enchantment_template, game_graveyard_zone,
petcreateinfo_spell, game_event, areatrigger_tavern, creature_charm_spells.
Several mangosd.conf settings complement the progression system:
WowPatch- the active content patch (shipped config default10; falls back internally to0/1.2 if unset).PvP.AccurateTimelineand relatedPvP.*toggles - honour/PvP behaviour per timeline.Progression*rate toggles that gate content-specific tuning.
- Check which patch a row belongs to before editing:
SELECT patch FROM creature_template WHERE entry = X;may return several rows. - When adding content intended for all patches, leave
patch_min = 0andpatch_max = 10. - The ScriptEditor understands these columns when editing templates.