From wowdev
Jump to: navigation, search

Contains general information about the areas (different from Zones, but included) in the game.



struct AreaTableRec {
  uint32_t m_ID;
  uint32_t m_AreaNumber;
  uint32_t m_ContinentID;
  uint32_t m_ParentAreaNum;
  uint32_t m_AreaBit;
  uint32_t m_flags;
  uint32_t m_SoundProviderPref;
  uint32_t m_SoundProviderPrefUnderwater;
  uint32_t m_MIDIAmbience;
  uint32_t m_MIDIAmbienceUnderwater;
  uint32_t m_ZoneMusic;
  uint32_t m_IntroSound;
  uint32_t m_IntroPriority;
  langstringref m_AreaName_lang;



Column Field Type Notes
1 ID Integer
2 Map.ID iRefID
3 Parent_AreaTable.ID iRefID Recursive. If this is a sub-area, it will link to its parent area.
4 AreaBit Integer Use new unique value when creating custom row for making maps work correctly. Value higher than 4095 might not work for TC2.
5 Flags BitMask See below.
6 SoundProviderPrefferences iRefID
7 Underwater_SoundProviderPrefferences iRefID
8 SoundAmbience iRefID Ambient sound
9 ZoneMusic iRefID Ambient music
10 ZoneIntroMusicTable iRefID Music upon entering the zone
11 ExplorationLevel Integer Level this is made for
12-28 Name Loc
29 FactionGroup iRefID (/Mask?) 0 Contested, 2 Alliance, 4 Horde territory. Shattrath City and Dalaran have value 6 (Horde+Alliance?) for some reason.
30 LiquidType iRefID[4] [0]: Water, [1]: Ocean, [2]: Magma, [3]: Slime
34 MinElevation Float -5000, -500, 1000
35 AmbientMultiplier Float 0.0 - 1.0; Something to do with character ambient lightning
36 Light iRefID



struct AreaTableRec {
  uint32_t m_ID;
  foreign_key<uint32_t, &MapRec::m_ID> m_ContinentID;
  foreign_key<uint32_t, &AreaTableRec::m_ID> m_ParentAreaID;
  uint32_t m_AreaBit;
  uint32_t m_flags[2]; // 0x100000000: isMicroDungeon
  foreign_key<uint32_t, &SoundProviderPreferencesRec::m_ID> m_SoundProviderPref;
  foreign_key<uint32_t, &SoundProviderPreferencesRec::m_ID> m_SoundProviderPrefUnderwater;
  foreign_key<uint32_t, &SoundAmbienceRec::m_ID> m_AmbienceID;
  foreign_key<uint32_t, &ZoneMusicRec::m_ID> m_ZoneMusic;
  stringref m_ZoneName;
  foreign_key<uint32_t, &ZoneIntroMusicTableRec::m_ID> m_IntroSound;
  uint32_t m_ExplorationLevel;
  langstringref m_AreaName_lang;
  uint32_t m_factionGroupMask;
  foreign_key<uint32_t, &LiquidTypeRec::m_ID> m_liquidTypeID[4];
  float m_minElevation;
  float m_ambient_multiplier;
  foreign_key<uint32_t, &LightRec::m_ID> m_lightid;
  uint32_t m_mountFlags;
  foreign_key<uint32_t, &ZoneIntroMusicTableRec::m_ID> m_uwIntroSound;
  foreign_key<uint32_t, &ZoneMusicRec::m_ID> m_uwZoneMusic;
  foreign_key<uint32_t, &SoundAmbienceRec::m_ID> m_uwAmbience;
  uint32_t m_world_pvp_id;
  foreign_key<uint32_t, &WorldStateRec::m_ID> m_pvpCombatWorldStateID;
  uint32_t m_wildBattlePetLevelMin;
  uint32_t m_wildBattlePetLevelMax;
  foreign_key<uint32_t, &WindSettingsRec::m_ID> m_windSettingsID;


   AREA_FLAG_HasBreathParticles                 = 0x00000001,           // snow (only Dun Morogh, Naxxramas, Razorfen Downs and Winterspring)
   AREA_FLAG_UNK1                               = 0x00000002,           // may be necropolis?
   AREA_FLAG_UNK2                               = 0x00000004,           // Only used for areas on map 571 (development before)
   AREA_FLAG_SLAVE_CAPITAL                      = 0x00000008,           // city and city subsones
   AREA_FLAG_UNK3                               = 0x00000010,           // can't find common meaning
   AREA_FLAG_SLAVE_CAPITAL2                     = 0x00000020,           // slave capital city flag?
   AREA_FLAG_ALLOW_DUELS                        = 0x00000040,
   AREA_FLAG_Arena                              = 0x00000080,           // arena, both instanced and world arenas
   AREA_FLAG_CAPITAL                            = 0x00000100,           // main capital city flag
   AREA_FLAG_LINKED_CHAT_AREA                   = 0x00000200,           // only one, hidden area for linked capital chat
   AREA_FLAG_OUTLAND                            = 0x00000400,           // expansion zones? (only EOTS. Expansion azeroth zones like silvermyst island do not have this flag, 0x00004000 flag).
                                                                           Flag determines if flying is allowed in zone.
   AREA_FLAG_Sanctuary                          = 0x00000800,           // sanctuary area (PvP disabled)
   AREA_FLAG_NEED_FLY                           = 0x00001000,           // only Netherwing Ledge, Socrethar's Seat, Tempest Keep, The Arcatraz, The Botanica, The Mechanar, Sorrow Wing Point, Dragonspine Ridge
                                                                           Netherwing Mines, Dragonmaw Base Camp, Dragonmaw Skyway
   AREA_FLAG_apply_ambient_multiplier_to_player = 0x00002000,           // not used now (no area/zones with this flag set in 3.0.3)
   AREA_FLAG_OUTLAND2                           = 0x00004000,           // expansion zones? (only Circle of Blood Arena not have this flag, but have 0x00000400 flag)
   AREA_FLAG_IsSubZonePVPPOI                    = 0x00008000,           // pvp objective area? (Death's Door also has this flag although it's no pvp object area)
   AREA_FLAG_ARENA_INSTANCE                     = 0x00010000,           // used by instanced arenas only
   AREA_FLAG_UNUSED2                            = 0x00020000,           // not used now (no area/zones with this flag set in 3.0.3)
   AREA_FLAG_CONTESTED_AREA                     = 0x00040000,           // On PvP servers these areas are considered contested, even though the zone it is contained in is a Horde/Alliance territory.
   AREA_FLAG_UNK6                               = 0x00080000,           // Valgarde and Acherus: The Ebon Hold
   AREA_FLAG_LOWLEVEL                           = 0x00100000,           // used for some starting areas with area_level <=15
   AREA_FLAG_TOWN                               = 0x00200000,           // small towns with Inn
   AREA_FLAG_UNK7                               = 0x00400000,           // Warsong Hold, Acherus: The Ebon Hold, New Agamand Inn, Vengeance Landing Inn
   AREA_FLAG_UNK8                               = 0x00800000,           // Westguard Inn, Acherus: The Ebon Hold, Valgarde
   AREA_FLAG_use_combat_world_state             = 0x01000000,           // Wintergrasp and it's subzones
   AREA_FLAG_INSIDE                             = 0x02000000,           // unknown
   AREA_FLAG_OUTSIDE                            = 0x04000000,           // unknown
   AREA_FLAG_CanHearthAndResurrectFromArea      = 0x08000000,           // Wintergrasp and it's subzones
   AREA_FLAG_CANNOT_FLY                         = 0x20000000            // not allowed to fly, only used in Dalaran areas (zone 4395)
   AREA_FLAG_use_parent_for_world_defense_visibility_check = 0x40000000,
This section only applies to versions ≥ Cata (4.0.1) .
   IsFlyableArea(): (*((_DWORD *)areaTableRec + 20) >> 1) & 1