Skip to content

Battlegrounds

VMaNGOS supports the three classic battlegrounds with full C++ implementations in src/game/Battlegrounds/:

Queue id Battleground Implementation
1 Alterac Valley (AV) BattleGroundAV.cpp
2 Warsong Gulch (WS) BattleGroundWS.cpp
3 Arathi Basin (AB) BattleGroundAB.cpp

Data Tables

Table Purpose
battleground_template Per-map definition: level brackets, player limits, start locations, world safe locs.
battlemaster_entry Which NPCs queue players into which battleground (npc_flags battlemaster).
creature_battleground Creatures that only spawn inside a battleground (guards, quest givers).
gameobject_battleground Objects spawned only inside a battleground (flags, bases, buff objects).
battleground_events Timed object/creature state changes during a match (gate openings, capture effects).

Battleground-specific spawns reference these tables instead of the normal creature/gameobject spawn tables.


Runtime Concepts

  • Queue ids - BATTLEGROUND_QUEUE_AV/WS/AB (BattleGroundDefines.h).
  • Brackets - up to 6 level ranges per battleground; bracket layout comes from the template.
  • Status flow - wait → invitation → prestart countdown → running → finished (enum BattleGroundStatus). Timers such as BattleGround.PrematureFinishTimer are config options (mangosd.conf).
  • Rewards - marks of honour and bonus honour are handled by the core; weekend/holiday bonuses come through the game event system.

Configuration Highlights

From mangosd.conf:

  • Battleground.CastDeserter - deserter debuff for leavers.
  • Battleground.QueueAnnouncer.Join/Start - queue announcements.
  • Battleground.InvitationType - balanced vs. first-come team filling.
  • BattleGround.PremadeGroupWaitForMatch - premade matching in WSG/AB.