DB/Map

From wowdev
Revision as of 09:51, 22 April 2021 by Jukino (talk | contribs)
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
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 maxPlayers 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
0x00000000100 can toggle difficulty MapRec::CanToggleDifficulty
0x00000008000 flex 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
0x00000020000 sets 0x20 on CMap::Load
0x00000040000 prevent paid race change Script_GetCharacterInfo
0x00000010000 limit farclip to 727.0 World::LoadMap, World::SetFarClip
0x00000200000 sets 0x40 on CMap::Load
0x00002000000 proving grounds, affects spells that can be/are used? Spell_C_IsUsableAction, CGUnit_C::CheckAndReportSpellInhibitFlags
0x00004000000 garrison GarrisonInfo::InitInfo
0x20000000000 limit LightMode to 0 or 1 (Legion+ actually in m_Flags[1]!)

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