mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-02 18:43:48 +00:00
refactor(Core): Add definition file for area table entries. (#22054)
This commit is contained in:
@@ -1300,15 +1300,15 @@ void World::SetInitialWorldSettings()
|
||||
if (!sConfigMgr->isDryRun())
|
||||
{
|
||||
///- Check the existence of the map files for all starting areas.
|
||||
if (!MapMgr::ExistMapAndVMap(0, -6240.32f, 331.033f)
|
||||
|| !MapMgr::ExistMapAndVMap(0, -8949.95f, -132.493f)
|
||||
|| !MapMgr::ExistMapAndVMap(1, -618.518f, -4251.67f)
|
||||
|| !MapMgr::ExistMapAndVMap(0, 1676.35f, 1677.45f)
|
||||
|| !MapMgr::ExistMapAndVMap(1, 10311.3f, 832.463f)
|
||||
|| !MapMgr::ExistMapAndVMap(1, -2917.58f, -257.98f)
|
||||
if (!MapMgr::ExistMapAndVMap(MAP_EASTERN_KINGDOMS, -6240.32f, 331.033f)
|
||||
|| !MapMgr::ExistMapAndVMap(MAP_EASTERN_KINGDOMS, -8949.95f, -132.493f)
|
||||
|| !MapMgr::ExistMapAndVMap(MAP_KALIMDOR, -618.518f, -4251.67f)
|
||||
|| !MapMgr::ExistMapAndVMap(MAP_EASTERN_KINGDOMS, 1676.35f, 1677.45f)
|
||||
|| !MapMgr::ExistMapAndVMap(MAP_KALIMDOR, 10311.3f, 832.463f)
|
||||
|| !MapMgr::ExistMapAndVMap(MAP_KALIMDOR, -2917.58f, -257.98f)
|
||||
|| (_int_configs[CONFIG_EXPANSION] && (
|
||||
!MapMgr::ExistMapAndVMap(530, 10349.6f, -6357.29f) ||
|
||||
!MapMgr::ExistMapAndVMap(530, -3961.64f, -13931.2f))))
|
||||
!MapMgr::ExistMapAndVMap(MAP_OUTLAND, 10349.6f, -6357.29f) ||
|
||||
!MapMgr::ExistMapAndVMap(MAP_OUTLAND, -3961.64f, -13931.2f))))
|
||||
{
|
||||
LOG_ERROR("server.loading", "Failed to find map files for starting areas");
|
||||
exit(1);
|
||||
|
||||
@@ -247,32 +247,32 @@ void WorldState::Update(uint32 diff)
|
||||
}
|
||||
}
|
||||
|
||||
void WorldState::HandlePlayerEnterZone(Player* player, WorldStateZoneId zoneId)
|
||||
void WorldState::HandlePlayerEnterZone(Player* player, AreaTableIDs zoneId)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(_mutex);
|
||||
switch (zoneId)
|
||||
{
|
||||
case ZONEID_SHATTRATH:
|
||||
case ZONEID_BOTANICA:
|
||||
case ZONEID_MECHANAR:
|
||||
case ZONEID_ARCATRAZ:
|
||||
case AREA_SHATTRATH_CITY:
|
||||
case AREA_THE_BOTANICA:
|
||||
case AREA_THE_MECHANAR:
|
||||
case AREA_THE_ARCATRAZ:
|
||||
if (_adalSongOfBattleTimer)
|
||||
player->CastSpell(player, SPELL_ADAL_SONG_OF_BATTLE, true);
|
||||
break;
|
||||
case ZONEID_HELLFIRE_PENINSULA:
|
||||
case ZONEID_HELLFIRE_RAMPARTS:
|
||||
case ZONEID_HELLFIRE_CITADEL:
|
||||
case ZONEID_BLOOD_FURNACE:
|
||||
case ZONEID_SHATTERED_HALLS:
|
||||
case ZONEID_MAGTHERIDON_LAIR:
|
||||
case AREA_HELLFIRE_PENINSULA:
|
||||
case AREA_HELLFIRE_RAMPARTS:
|
||||
case AREA_HELLFIRE_CITADEL:
|
||||
case AREA_THE_BLOOD_FURNACE:
|
||||
case AREA_THE_SHATTERED_HALLS:
|
||||
case AREA_MAGTHERIDONS_LAIR:
|
||||
if (_isMagtheridonHeadSpawnedAlliance && player->GetTeamId() == TEAM_ALLIANCE)
|
||||
player->CastSpell(player, SPELL_TROLLBANES_COMMAND, true);
|
||||
else if (_isMagtheridonHeadSpawnedHorde && player->GetTeamId() == TEAM_HORDE)
|
||||
player->CastSpell(player, SPELL_NAZGRELS_FAVOR, true);
|
||||
break;
|
||||
case ZONEID_ISLE_OF_QUEL_DANAS:
|
||||
case ZONEID_MAGISTERS_TERRACE:
|
||||
case ZONEID_SUNWELL_PLATEAU:
|
||||
case AREA_ISLE_OF_QUEL_DANAS:
|
||||
case AREA_MAGISTERS_TERRACE:
|
||||
case AREA_SUNWELL_PLATEAU:
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(m_sunsReachData.m_sunsReachReclamationMutex);
|
||||
m_sunsReachData.m_sunsReachReclamationPlayers.push_back(player->GetGUID());
|
||||
@@ -284,33 +284,32 @@ void WorldState::HandlePlayerEnterZone(Player* player, WorldStateZoneId zoneId)
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
void WorldState::HandlePlayerLeaveZone(Player* player, WorldStateZoneId zoneId)
|
||||
void WorldState::HandlePlayerLeaveZone(Player* player, AreaTableIDs zoneId)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(_mutex);
|
||||
switch (zoneId)
|
||||
{
|
||||
case ZONEID_SHATTRATH:
|
||||
case ZONEID_BOTANICA:
|
||||
case ZONEID_MECHANAR:
|
||||
case ZONEID_ARCATRAZ:
|
||||
case AREA_SHATTRATH_CITY:
|
||||
case AREA_THE_BOTANICA:
|
||||
case AREA_THE_MECHANAR:
|
||||
case AREA_THE_ARCATRAZ:
|
||||
if (!_adalSongOfBattleTimer)
|
||||
player->RemoveAurasDueToSpell(SPELL_ADAL_SONG_OF_BATTLE);
|
||||
break;
|
||||
case ZONEID_HELLFIRE_PENINSULA:
|
||||
case ZONEID_HELLFIRE_RAMPARTS:
|
||||
case ZONEID_HELLFIRE_CITADEL:
|
||||
case ZONEID_BLOOD_FURNACE:
|
||||
case ZONEID_SHATTERED_HALLS:
|
||||
case ZONEID_MAGTHERIDON_LAIR:
|
||||
case AREA_HELLFIRE_PENINSULA:
|
||||
case AREA_HELLFIRE_RAMPARTS:
|
||||
case AREA_HELLFIRE_CITADEL:
|
||||
case AREA_THE_BLOOD_FURNACE:
|
||||
case AREA_THE_SHATTERED_HALLS:
|
||||
case AREA_MAGTHERIDONS_LAIR:
|
||||
if (player->GetTeamId() == TEAM_ALLIANCE)
|
||||
player->RemoveAurasDueToSpell(SPELL_TROLLBANES_COMMAND);
|
||||
else if (player->GetTeamId() == TEAM_HORDE)
|
||||
player->RemoveAurasDueToSpell(SPELL_NAZGRELS_FAVOR);
|
||||
break;
|
||||
case ZONEID_ISLE_OF_QUEL_DANAS:
|
||||
case ZONEID_MAGISTERS_TERRACE:
|
||||
case ZONEID_SUNWELL_PLATEAU:
|
||||
case AREA_ISLE_OF_QUEL_DANAS:
|
||||
case AREA_MAGISTERS_TERRACE:
|
||||
case AREA_SUNWELL_PLATEAU:
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(m_sunsReachData.m_sunsReachReclamationMutex);
|
||||
player->RemoveAurasDueToSpell(SPELL_KIRU_SONG_OF_VICTORY);
|
||||
@@ -330,19 +329,19 @@ void WorldState::BuffMagtheridonTeam(TeamId team)
|
||||
{
|
||||
switch (map->GetId())
|
||||
{
|
||||
case 530: // Outland
|
||||
case MAP_OUTLAND:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
if (player->GetZoneId() == ZONEID_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_ALLIANCE && team == TEAM_ALLIANCE)
|
||||
if (player->GetZoneId() == AREA_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_ALLIANCE && team == TEAM_ALLIANCE)
|
||||
player->CastSpell(player, SPELL_TROLLBANES_COMMAND, true);
|
||||
else if (player->GetZoneId() == ZONEID_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_HORDE && team == TEAM_HORDE)
|
||||
else if (player->GetZoneId() == AREA_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_HORDE && team == TEAM_HORDE)
|
||||
player->CastSpell(player, SPELL_NAZGRELS_FAVOR, true);
|
||||
});
|
||||
break;
|
||||
case 540: // The Shattered Halls
|
||||
case 542: // The Blood Furnace
|
||||
case 543: // Ramparts
|
||||
case 544: // Magtheridon's Lair
|
||||
case MAP_HELLFIRE_CITADEL_THE_SHATTERED_HALLS:
|
||||
case MAP_HELLFIRE_CITADEL_THE_BLOOD_FURNACE:
|
||||
case MAP_HELLFIRE_CITADEL_RAMPARTS:
|
||||
case MAP_MAGTHERIDONS_LAIR:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
if (player->GetTeamId() == TEAM_ALLIANCE && team == TEAM_ALLIANCE)
|
||||
@@ -363,19 +362,19 @@ void WorldState::DispelMagtheridonTeam(TeamId team)
|
||||
{
|
||||
switch (map->GetId())
|
||||
{
|
||||
case 530: // Outland
|
||||
case MAP_OUTLAND:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
if (player->GetZoneId() == ZONEID_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_ALLIANCE && team == TEAM_ALLIANCE)
|
||||
if (player->GetZoneId() == AREA_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_ALLIANCE && team == TEAM_ALLIANCE)
|
||||
player->RemoveAurasDueToSpell(SPELL_TROLLBANES_COMMAND);
|
||||
else if (player->GetZoneId() == ZONEID_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_HORDE && team == TEAM_HORDE)
|
||||
else if (player->GetZoneId() == AREA_HELLFIRE_PENINSULA && player->GetTeamId() == TEAM_HORDE && team == TEAM_HORDE)
|
||||
player->RemoveAurasDueToSpell(SPELL_NAZGRELS_FAVOR);
|
||||
});
|
||||
break;
|
||||
case 540: // The Shattered Halls
|
||||
case 542: // The Blood Furnace
|
||||
case 543: // Ramparts
|
||||
case 544: // Magtheridon's Lair
|
||||
case MAP_HELLFIRE_CITADEL_THE_SHATTERED_HALLS:
|
||||
case MAP_HELLFIRE_CITADEL_THE_BLOOD_FURNACE:
|
||||
case MAP_HELLFIRE_CITADEL_RAMPARTS:
|
||||
case MAP_MAGTHERIDONS_LAIR:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
if (player->GetTeamId() == TEAM_ALLIANCE && team == TEAM_ALLIANCE)
|
||||
@@ -396,16 +395,16 @@ void WorldState::BuffAdalsSongOfBattle()
|
||||
{
|
||||
switch (map->GetId())
|
||||
{
|
||||
case 530: // Outland
|
||||
case MAP_OUTLAND:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
if (player->GetZoneId() == ZONEID_SHATTRATH)
|
||||
if (player->GetZoneId() == AREA_SHATTRATH_CITY)
|
||||
player->CastSpell(player, SPELL_ADAL_SONG_OF_BATTLE, true);
|
||||
});
|
||||
break;
|
||||
case 552: // Arcatraz
|
||||
case 553: // Botanica
|
||||
case 554: // Mechanar
|
||||
case MAP_TEMPEST_KEEP_THE_ARCATRAZ:
|
||||
case MAP_TEMPEST_KEEP_THE_BOTANICA:
|
||||
case MAP_TEMPEST_KEEP_THE_MECHANAR:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
player->CastSpell(player, SPELL_ADAL_SONG_OF_BATTLE, true);
|
||||
@@ -423,16 +422,16 @@ void WorldState::DispelAdalsSongOfBattle()
|
||||
{
|
||||
switch (map->GetId())
|
||||
{
|
||||
case 530: // Outland
|
||||
case MAP_OUTLAND:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
if (player->GetZoneId() == ZONEID_SHATTRATH)
|
||||
if (player->GetZoneId() == AREA_SHATTRATH_CITY)
|
||||
player->RemoveAurasDueToSpell(SPELL_ADAL_SONG_OF_BATTLE);
|
||||
});
|
||||
break;
|
||||
case 552: // Arcatraz
|
||||
case 553: // Botanica
|
||||
case 554: // Mechanar
|
||||
case MAP_TEMPEST_KEEP_THE_ARCATRAZ:
|
||||
case MAP_TEMPEST_KEEP_THE_BOTANICA:
|
||||
case MAP_TEMPEST_KEEP_THE_MECHANAR:
|
||||
map->DoForAllPlayers([&](Player* player)
|
||||
{
|
||||
player->RemoveAurasDueToSpell(SPELL_ADAL_SONG_OF_BATTLE);
|
||||
@@ -823,22 +822,22 @@ void WorldState::StartSunsReachPhase(bool initial)
|
||||
{
|
||||
case SUNS_REACH_PHASE_1_STAGING_AREA:
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_1);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(530))
|
||||
map->SetZoneWeather(ZONEID_ISLE_OF_QUEL_DANAS, WEATHER_STATE_MEDIUM_RAIN, 0.75f);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(MAP_OUTLAND))
|
||||
map->SetZoneWeather(AREA_ISLE_OF_QUEL_DANAS, WEATHER_STATE_MEDIUM_RAIN, 0.75f);
|
||||
break;
|
||||
case SUNS_REACH_PHASE_2_SANCTUM:
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_2_ONLY);
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_2_PERMANENT);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(530))
|
||||
map->SetZoneWeather(ZONEID_ISLE_OF_QUEL_DANAS, WEATHER_STATE_LIGHT_RAIN, 0.5f);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(MAP_OUTLAND))
|
||||
map->SetZoneWeather(AREA_ISLE_OF_QUEL_DANAS, WEATHER_STATE_LIGHT_RAIN, 0.5f);
|
||||
break;
|
||||
case SUNS_REACH_PHASE_3_ARMORY:
|
||||
if (initial)
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_2_PERMANENT);
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_3_ONLY); sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_3_PERMANENT);
|
||||
// TODO: Should be id 2 0.25f?
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(530))
|
||||
map->SetZoneWeather(ZONEID_ISLE_OF_QUEL_DANAS, WEATHER_STATE_LIGHT_RAIN, 0.25f);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(MAP_OUTLAND))
|
||||
map->SetZoneWeather(AREA_ISLE_OF_QUEL_DANAS, WEATHER_STATE_LIGHT_RAIN, 0.25f);
|
||||
break;
|
||||
case SUNS_REACH_PHASE_4_HARBOR:
|
||||
if (initial)
|
||||
@@ -847,8 +846,8 @@ void WorldState::StartSunsReachPhase(bool initial)
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_3_PERMANENT);
|
||||
}
|
||||
sGameEventMgr->StartEvent(GAME_EVENT_QUEL_DANAS_PHASE_4);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(530))
|
||||
map->SetZoneWeather(ZONEID_ISLE_OF_QUEL_DANAS, WEATHER_STATE_FINE, 0.0f);
|
||||
if (Map* map = sMapMgr->FindBaseNonInstanceMap(MAP_OUTLAND))
|
||||
map->SetZoneWeather(AREA_ISLE_OF_QUEL_DANAS, WEATHER_STATE_FINE, 0.0f);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
@@ -1092,10 +1091,10 @@ void WorldState::FillInitialWorldStates(WorldPackets::WorldState::InitWorldState
|
||||
{
|
||||
switch (zoneId)
|
||||
{
|
||||
case ZONEID_ISLE_OF_QUEL_DANAS:
|
||||
case ZONEID_MAGISTERS_TERRACE:
|
||||
case ZONEID_SUNWELL_PLATEAU:
|
||||
case ZONEID_SHATTRATH:
|
||||
case AREA_ISLE_OF_QUEL_DANAS:
|
||||
case AREA_MAGISTERS_TERRACE:
|
||||
case AREA_SUNWELL_PLATEAU:
|
||||
case AREA_SHATTRATH_CITY:
|
||||
{
|
||||
// Sunwell Reclamation
|
||||
switch (m_sunsReachData.m_phase)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#ifndef WORLD_STATE_H
|
||||
#define WORLD_STATE_H
|
||||
|
||||
#include "AreaDefines.h"
|
||||
#include "Player.h"
|
||||
#include <atomic>
|
||||
|
||||
@@ -43,25 +44,6 @@ enum WorldStateEvent
|
||||
WORLD_STATE_CUSTOM_EVENT_ON_MAGTHERIDON_HEAD_DESPAWN = 184641,
|
||||
};
|
||||
|
||||
enum WorldStateZoneId
|
||||
{
|
||||
ZONEID_SHATTRATH = 3703,
|
||||
ZONEID_BOTANICA = 3847,
|
||||
ZONEID_ARCATRAZ = 3848,
|
||||
ZONEID_MECHANAR = 3849,
|
||||
|
||||
ZONEID_HELLFIRE_PENINSULA = 3483,
|
||||
ZONEID_HELLFIRE_RAMPARTS = 3562,
|
||||
ZONEID_HELLFIRE_CITADEL = 3563,
|
||||
ZONEID_BLOOD_FURNACE = 3713,
|
||||
ZONEID_SHATTERED_HALLS = 3714,
|
||||
ZONEID_MAGTHERIDON_LAIR = 3836,
|
||||
|
||||
ZONEID_ISLE_OF_QUEL_DANAS = 4080,
|
||||
ZONEID_MAGISTERS_TERRACE = 4131,
|
||||
ZONEID_SUNWELL_PLATEAU = 4075,
|
||||
};
|
||||
|
||||
enum WorldStateSpells
|
||||
{
|
||||
SPELL_ADAL_SONG_OF_BATTLE = 39953,
|
||||
@@ -182,8 +164,8 @@ class WorldState
|
||||
[[nodiscard]] uint64 getWorldState(uint32 index) const;
|
||||
void Save(WorldStateSaveIds saveId);
|
||||
void SaveHelper(std::string& stringToSave, WorldStateSaveIds saveId);
|
||||
void HandlePlayerEnterZone(Player* player, WorldStateZoneId zoneId);
|
||||
void HandlePlayerLeaveZone(Player* player, WorldStateZoneId zoneId);
|
||||
void HandlePlayerEnterZone(Player* player, AreaTableIDs zoneId);
|
||||
void HandlePlayerLeaveZone(Player* player, AreaTableIDs zoneId);
|
||||
bool IsConditionFulfilled(WorldStateCondition conditionId, WorldStateConditionState state = WORLD_STATE_CONDITION_STATE_NONE) const;
|
||||
void HandleConditionStateChange(WorldStateCondition conditionId, WorldStateConditionState state);
|
||||
void HandleExternalEvent(WorldStateEvent eventId, uint32 param);
|
||||
|
||||
Reference in New Issue
Block a user