DB/Map

From wowdev
Jump to navigation Jump to search

Note that some emulators have issues with IDs above 999 due to their extractors (vmaps).

0.5.3.3368

struct MapRec {
  uint32_t m_ID;
  stringref m_Directory;
  uint32_t m_PVP;
  uint32_t m_IsInMap;
  langstringref m_MapName_lang;
};

1.12.1.5875

struct MapRec {
  uint32_t m_ID;
  stringref m_Directory;
  uint32_t m_InstanceType;
  uint32_t m_MapType;
  langstringref m_MapName_lang;
  uint32_t min_level;
  uint32_t max_level;
  uint32_t max_players;
  uint32_t ?;
  uint32_t ?;
  uint32_t ?;
  foreign_key<uint32_t, &MapRec::m_ID> m_parentMapID;
  langstringref m_MapDescription0_lang;
  langstringref m_MapDescription1_lang;
  foreign_key<int32_t, &LoadingScreensRec::m_ID> m_LoadingScreenID;
  uint32_t m_raidOffset;
  uint32_t continentname?;
  uint32_t ?;
};

2.4.3.8606

struct MapRec {
  uint32_t m_ID;
  stringref m_Directory;
  uint32_t m_InstanceType;
  uint32_t m_MapType;
  langstringref m_MapName_lang;
  uint32_t m_MinLevel;
  uint32_t m_MaxLevel;
  uint32_t m_MaxPlayers;
  uint32_t ???; //mostly -1, 0 for alterac + 2 blackrock instances
  float ???; //mostly 0, -5400 something for pvp02, 0.74 for pvp01
  float ???; //mostly 0, -2884 for pvp02, 0.34 for pvp01
  foreign_key<uint32_t, &MapRec::m_ID> m_ParentMapID?;
  langstringref m_MapDescriptionAlliance_lang;
  langstringref m_MapDescriptionHorde_lang;
  foreign_key<int32_t, &LoadingScreensRec::m_ID> m_LoadingScreenID;
  uint32_t m_PvpPlayers?; //10 for BG, 5 for arena
  uint32_t ???; //always 1. only 0 for alterac
  float m_BattlefieldMapIconScale;
  langstringref m_Requirement_lang;
  langstringref m_HeroicRequirement_lang;
  langstringref m_Unknown_lang; //unused, maybe another requirement ?
  foreign_key<int32_t, &MapRec::m_ID> m_ParentArea;
  float m_xCoord;
  float m_yCoord;
  uint32_t m_ResetTimeRaid;
  uint32_t m_ResetTimeHeroic;
  uint32_t ???;
  int32_t m_TimeOverride;
  uint32_t m_Expansion;
};

3.0.9.9551

Column Field Type Notes
1 ID Integer
2 InternalName String reference to World\Map\ [...] \
3 AreaType Integer 0: none, 1: party, 2: raid, 3: pvp, 4: arena, >=5: none (official from "IsInInstance()")
4 IsBattleground Boolean Simple flag for battleground maps
5 Name Loc Name (displayed on World Map for example)
6 AreaTable iRefID iRefID to AreaTable.dbc
7 Description Loc Alliance
8 Description Loc Horde
9 LoadingScreen iRefID The LoadingScreen to Display
10 BattlefieldMapIconScale Float
11 Requirement Loc Requirement to enter
12 Heroic Loc Heroic-Requirement to enter
13 Unknown Loc Some other requirement to enter.
14 ParentArea iRefID Points to column 1, -1 if none
15 X-Coord Float The X-Coord of the instance entrance
16 Y-Coord Float The Y-Coord of the instance entrance
17 ResetTimeRaid Integer Raid.
18 ResetTimeRaid Integer Heroic raid or instance?
19 Unknown Integer All the time 0.
20 TimeOfDayOverride Integer Set to -1 for everything but Orgrimmar and Dalaran arena. For those, the time of day will change to this.
21 ExpansionID Integer Vanilla: 0, BC: 1, WotLK: 2
22 Unknown Integer Another resettime? Is the same as the heroic one for some entries.

3.2?

Column Field Type Notes
1 ID Integer
2 Directory String reference to World\Map\ [...] \
3 InstanceType Integer 0: none, 1: party, 2: raid, 3: pvp, 4: arena, >=5: none (official from "IsInInstance()")
4 Flags Boolean Simple flag for battleground maps
cata PVP Boolean Simple flag for battleground maps
5-21 MapName Loc Name (displayed on World Map for example)
22 areaTableID iRefID iRefID to AreaTable.dbc. This is only used for WMO only maps to replace ADTs area id
23-39 MapDescription0 Loc Alliance
40-56 MapDescription1 Loc Horde
57 LoadingScreen iRefID The LoadingScreen to Display
58 minimapIconScale Float
59 corpseMapID iRefID Points to column 1, -1 if none
60 corpseX Float The X-Coord of the instance entrance
61 corpseY Float The Y-Coord of the instance entrance
62 TimeOfDayOverride Integer Set to -1 for everything but Orgrimmar and Dalaran arena. For those, the time of day will change to this.
63 ExpansionID Integer Vanilla: 0, BC: 1, WotLK: 2
64 RaidOffset Integer
65 NumberOfPlayers Integer Used for reset time, I guess.
cata parentMapID Integer

Some columns are moved to MapDifficulty.dbc in 3.2.

6.0.1.18179

struct MapRec {
  uint32_t m_ID;
  stringref m_Directory;
  uint32_t m_InstanceType;
  uint32_t m_Flags;
  uint32_t m_MapType;
  langstringref m_MapName_lang;
  uint32_t m_areaTableID;
  langstringref m_MapDescription0_lang;
  langstringref m_MapDescription1_lang;
  uint32_t m_LoadingScreenID;
  float m_minimapIconScale;
  uint32_t m_corpseMapID;
  float m_corpse[2];
  uint32_t m_timeOfDayOverride;
  uint32_t m_expansionID;
  uint32_t m_raidOffset;
  uint32_t m_maxPlayers;
  uint32_t m_parentMapID;
  uint32_t m_cosmeticParentMapID;
  uint32_t m_timeOffset;
};

Flags

Value Description
0x00000000001 Optimize
0x00000000002 Development Map
0x00000000004 Weighted Blend
0x00000000008 Vertex Coloring
0x00000000010 Sort Objects
0x00000000020 Limit to players from one realm
0x00000000040 Enable Lighting
0x00000000080 Inverted Terrain
0x00000000100 Dynamic Difficulty. Can toggle difficulty MapRec::CanToggleDifficulty
0x00000000200 Object File
0x00000000400 Texture File
0x00000000800 Generate Normals
0x00000001000 Fix Border Shadow Seams
0x00000002000 Infinite Ocean
0x00000004000 Underwater Map
0x00000008000 Flexible Raid Locking (All difficulties share completed encounters lock, not bound to a single instance id heroic difficulty flag overrides it and uses instance id bind; trinitycore) MapRec::IsFlexLocking
0x00000010000 Limit Farclip. limit farclip to 727.0 World::LoadMap, World::SetFarClip
0x00000020000 Use Parent Map Flight Bounds. (sets 0x20 on CMap::Load ? )
0x00000040000 No race change on this map Script_GetCharacterInfo
0x00000080000 Disabled for non-GMs
0x00000100000 Weighted Normals 1
0x00000200000 Disable low detail terrain. (sets 0x40 on CMap::Load )
0x00000400000 Enable Org Arena Blink Rule
0x00000800000 Weighted Height Blend
0x00001000000 Coalescing Area Sharing
0x00002000000 Proving Grounds. affects spells that can be/are used? Spell_C_IsUsableAction, CGUnit_C::CheckAndReportSpellInhibitFlags
0x00004000000 Garrison GarrisonInfo::InitInfo
0x00008000000 Enable AI Need System
0x00010000000 Single VServer
0x00020000000 Use Instance Pool
0x00040000000 Map uses Raid Graphics
0x00080000000 Force custom UI Map
0x00100000000 Don't Activate/Show Map
0x00200000000 No Vote Kicks
0x00400000000 Don't Voxelize Path Data
0x00800000000 Terrain LOD
0x01000000000 PVP
0x02000000000 Ignore Instance Farm Limit
0x04000000000 Don't Inherit Area Lights From Parent
0x08000000000 Force Light Buffer On
0x10000000000 WMO Liquid Scale
0x20000000000 limit LightMode to 0 or 1 (Legion+ actually in m_Flags[1]!). TBC Classic client : "Spell Clutter On"
0x40000000000 Spell Clutter Off
0x80000000000 No Incoming Transfers
0x100000000000 Reduced Path Map Height Validation
0x200000000000 NEW_MINIMAP_GENERATION
0x400000000000 AI_BOTS_DETECTED_LIKE_PLAYERS
0x800000000000 LINEARLY_LIT_TERRAIN
0x1000000000000 FOG_OF_WAR
0x2000000000000 DISABLE_SHARED_WEATHER_SYSTEMS
0x4000000000000 HONOR_SPELL_ATTRIBUTE_EX_K_LOS_HITS_NOCAMCOLLIDE
0x8000000000000 BELONGS_TO_LAYER

Source : https://wow.tools/dbc/?dbc=enumeratedstring&build=2.5.1.39640#page=1&colFilter[4]=192 (TBC Classic client enumerated strings)

7.0.3.22201

≥ Legion

struct MapRec
{
  string Directory;
  uint32_t[2] Flags;
  float MinimapIconScale;
  float[2] CorpseCoordinates;
  string ZoneName;
  string HordeDescription;
  string AllianceDescription;
  foreign_key<uint16_t, &AreaTableRec::m_ID> AreaTableID;
  foreign_key<int16_t, &LoadingScreensRec::m_ID> LoadingScreenID;
  foreign_key<int16_t, &MapRec::m_ID> CorpseMapID;
  int16_t TimeOfDayOverride;
  foreign_key<int16_t, &MapRec::m_ID> ParentMapID;
  foreign_key<int16_t, &MapRec::m_ID> CosmeticParentMapID;
  foreign_key<int16_t, &WindSettingsRec::m_ID> WindSettingsID;
  uint8_t InstanceType;
  uint8_t MapType;
  uint8_t ExpansionID;
  uint8_t MaxPlayers;
  uint8_t TimeOffset;
};

7.2.0

≥ Legion

struct MapRec
{
  string Directory;
  uint32_t[2] Flags;
  float MinimapIconScale;
  float[2] CorpseCoordinates;
  string ZoneName;
  string HordeDescription;
  string AllianceDescription;
  string PvpObjective;
  string PvpDescription;
  foreign_key<uint16_t, &AreaTableRec::m_ID> AreaTableID;
  foreign_key<int16_t, &LoadingScreensRec::m_ID> LoadingScreenID;
  foreign_key<int16_t, &MapRec::m_ID> CorpseMapID;
  int16_t TimeOfDayOverride;
  foreign_key<int16_t, &MapRec::m_ID> ParentMapID;
  foreign_key<int16_t, &MapRec::m_ID> CosmeticParentMapID;
  foreign_key<int16_t, &WindSettingsRec::m_ID> WindSettingsID;
  uint8_t InstanceType;
  uint8_t MapType;
  uint8_t ExpansionID;
  uint8_t MaxPlayers;
  uint8_t TimeOffset;
};

≥ Battle

struct MapEntry {
  uint32 ID;
  char const* Directory;
  LocalizedString* MapName;
  LocalizedString* MapDescription0;                               // Horde
  LocalizedString* MapDescription1;                               // Alliance
  LocalizedString* PvpShortDescription;
  LocalizedString* PvpLongDescription;
  DBCPosition2D Corpse;                                           // entrance coordinates in ghost mode  (in most cases = normal entrance)
  uint8 MapType;
  int8 InstanceType;
  uint8 ExpansionID;
  uint16 AreaTableID;
  int16 LoadingScreenID;
  int16 TimeOfDayOverride;
  int16 ParentMapID;
  int16 CosmeticParentMapID;
  uint8 TimeOffset;
  float MinimapIconScale;
  int16 CorpseMapID;                                              // map_id of entrance map in ghost mode (continent always and in most cases = normal entrance)
  uint8 MaxPlayers;
  int16 WindSettingsID;
  int32 ZmpFileDataID;
  int32 Flags[2];
};

Смердокрыл 27th November 2018