diff --git a/data/sql/updates/db_world/2025_05_03_00.sql b/data/sql/updates/db_world/2025_05_03_00.sql new file mode 100644 index 000000000..e00610bbd --- /dev/null +++ b/data/sql/updates/db_world/2025_05_03_00.sql @@ -0,0 +1,4 @@ +-- DB update 2025_05_01_00 -> 2025_05_03_00 +-- +DELETE FROM `spell_group` WHERE `spell_id` = 27648 AND `id` = 1014; +INSERT INTO `spell_group` VALUES (1014, 27648, 0); diff --git a/data/sql/updates/db_world/2025_05_04_00.sql b/data/sql/updates/db_world/2025_05_04_00.sql new file mode 100644 index 000000000..727bd928a --- /dev/null +++ b/data/sql/updates/db_world/2025_05_04_00.sql @@ -0,0 +1,3 @@ +-- DB update 2025_05_03_00 -> 2025_05_04_00 +-- +UPDATE `gameobject` SET `position_x`=12848.5, `position_y`=-7011.7, `position_z`=19.5233, `orientation`=5.54318 WHERE (`id` = 187115) AND (`guid` = 5300290); diff --git a/data/sql/updates/db_world/2025_05_04_01.sql b/data/sql/updates/db_world/2025_05_04_01.sql new file mode 100644 index 000000000..b193aa8df --- /dev/null +++ b/data/sql/updates/db_world/2025_05_04_01.sql @@ -0,0 +1,21 @@ +-- DB update 2025_05_04_00 -> 2025_05_04_01 +-- Embalming Slime +SET @GUID := 128103; +DELETE FROM `creature_formations` WHERE `leaderGUID` = @GUID AND `memberGUID` BETWEEN @GUID AND @GUID+15; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@GUID, @GUID+0, 0, 0, 3, 0, 0), +(@GUID, @GUID+1, 0, 0, 3, 0, 0), +(@GUID, @GUID+2, 0, 0, 3, 0, 0), +(@GUID, @GUID+3, 0, 0, 3, 0, 0), +(@GUID, @GUID+4, 0, 0, 3, 0, 0), +(@GUID, @GUID+5, 0, 0, 3, 0, 0), +(@GUID, @GUID+6, 0, 0, 3, 0, 0), +(@GUID, @GUID+7, 0, 0, 3, 0, 0), +(@GUID, @GUID+8, 0, 0, 3, 0, 0), +(@GUID, @GUID+9, 0, 0, 3, 0, 0), +(@GUID, @GUID+10, 0, 0, 3, 0, 0), +(@GUID, @GUID+11, 0, 0, 3, 0, 0), +(@GUID, @GUID+12, 0, 0, 3, 0, 0), +(@GUID, @GUID+13, 0, 0, 3, 0, 0), +(@GUID, @GUID+14, 0, 0, 3, 0, 0), +(@GUID, @GUID+15, 0, 0, 3, 0, 0); diff --git a/data/sql/updates/db_world/2025_05_04_02.sql b/data/sql/updates/db_world/2025_05_04_02.sql new file mode 100644 index 000000000..26b6dd217 --- /dev/null +++ b/data/sql/updates/db_world/2025_05_04_02.sql @@ -0,0 +1,4 @@ +-- DB update 2025_05_04_01 -> 2025_05_04_02 +-- Avenging Spirit - Wither +DELETE FROM `spell_custom_attr` WHERE `spell_id`=48585; +INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES (48585, 4194304); diff --git a/data/sql/updates/db_world/2025_05_04_03.sql b/data/sql/updates/db_world/2025_05_04_03.sql new file mode 100644 index 000000000..b42774b65 --- /dev/null +++ b/data/sql/updates/db_world/2025_05_04_03.sql @@ -0,0 +1,5 @@ +-- DB update 2025_05_04_02 -> 2025_05_04_03 +-- +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 47939); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 47939, 0, 0, 30, 0, 188539, 5, 0, 0, 0, 0, '', '\'Lumber Hack\' - Limit \'Gather Lumber\' to Coldwind Tree GOs within 5y.'); diff --git a/data/sql/updates/db_world/2025_05_04_04.sql b/data/sql/updates/db_world/2025_05_04_04.sql new file mode 100644 index 000000000..7574d0bb3 --- /dev/null +++ b/data/sql/updates/db_world/2025_05_04_04.sql @@ -0,0 +1,6 @@ +-- DB update 2025_05_04_03 -> 2025_05_04_04 +-- +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 18) AND (`SourceGroup` = 27061) AND (`SourceEntry` = 47920); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(18, 27061, 47920, 0, 0, 9, 0, 12050, 0, 0, 0, 0, 0, '', 'Allow interaction only while on quest \'Lumber Hack!\''), +(18, 27061, 47920, 0, 1, 9, 0, 12052, 0, 0, 0, 0, 0, '', 'Allow interaction only while on quest \'Harp on This!\''); diff --git a/data/sql/updates/db_world/2025_05_05_00.sql b/data/sql/updates/db_world/2025_05_05_00.sql new file mode 100644 index 000000000..43018286f --- /dev/null +++ b/data/sql/updates/db_world/2025_05_05_00.sql @@ -0,0 +1,49 @@ +-- DB update 2025_05_04_04 -> 2025_05_05_00 + +-- Set Don't Override SmartAI on the Stallions +UPDATE `creature_template` SET `flags_extra` = `flags_extra` |134217728 WHERE (`entry` IN(28605)); + +-- Change Respawn Timers for Stallions/Mares/Colts +UPDATE `creature` SET `spawntimesecs` = 60 WHERE (`id1` IN(28605, 28606, 28607)); + +-- Set SmartAI for Stallions, Mare and Colts +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28605; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28605) AND (`source_type` = 0); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(28605, 0, 0, 1, 28, 0, 100, 0, 500, 500, 0, 0, 0, 0, 5, 377, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Passenger Removed - Play Emote 377'), +(28605, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Passenger Removed - Despawn In 5000 ms'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28606; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28606) AND (`source_type` = 0); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(28606, 0, 0, 1, 28, 0, 100, 0, 500, 500, 0, 0, 0, 0, 5, 377, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Mare - On Passenger Removed - Play Emote 377'), +(28606, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Mare - On Passenger Removed - Despawn In 5000 ms'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28607; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28607) AND (`source_type` = 0); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(28607, 0, 0, 1, 28, 0, 100, 0, 500, 500, 0, 0, 0, 0, 5, 377, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Colt - On Passenger Removed - Play Emote 377'), +(28607, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Colt - On Passenger Removed - Despawn In 5000 ms'); + +-- Move rows numbers for two Guid SmartAI. +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -129210); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(-129210, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12921000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Respawn - Start Path 12921000'), +(-129210, 0, 3, 4, 108, 0, 100, 0, 8, 12921000, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Point 8 of Path 12921000 Reached - Stop Movement'), +(-129210, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2860500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Point 8 of Path 12921000 Reached - Run Script'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -129215); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(-129215, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12921500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Respawn - Start Path 12921500'), +(-129215, 0, 3, 4, 109, 0, 100, 0, 0, 12921500, 0, 0, 0, 0, 41, 2000, 60, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129236, 28606, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129246, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 6, 7, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129249, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 7, 8, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129251, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 8, 9, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129248, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 9, 10, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129245, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 10, 11, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129214, 28605, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 11, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129235, 28606, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'); diff --git a/data/sql/updates/db_world/2025_05_09_00.sql b/data/sql/updates/db_world/2025_05_09_00.sql new file mode 100644 index 000000000..4e7aad4ff --- /dev/null +++ b/data/sql/updates/db_world/2025_05_09_00.sql @@ -0,0 +1,3 @@ +-- DB update 2025_05_05_00 -> 2025_05_09_00 +-- Wrath Enforcer +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|2097152 WHERE (`entry` = 25030); diff --git a/data/sql/updates/db_world/2025_05_09_01.sql b/data/sql/updates/db_world/2025_05_09_01.sql new file mode 100644 index 000000000..85c2027e6 --- /dev/null +++ b/data/sql/updates/db_world/2025_05_09_01.sql @@ -0,0 +1,3 @@ +-- DB update 2025_05_09_00 -> 2025_05_09_01 +-- +UPDATE `creature` SET `spawnMask` = `spawnMask`&~(1) WHERE `guid` IN (68283,68284) AND `id1` = 31104; diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 0a621407a..61d560746 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -137,14 +137,18 @@ struct PowerUsersSelector : public Acore::unary_function Powers const _power; float const _dist; bool const _playerOnly; + bool const _withTank; - PowerUsersSelector(Unit const* unit, Powers power, float dist, bool playerOnly) : _me(unit), _power(power), _dist(dist), _playerOnly(playerOnly) { } + PowerUsersSelector(Unit const* unit, Powers power, float dist, bool playerOnly, bool withTank = true) : _me(unit), _power(power), _dist(dist), _playerOnly(playerOnly), _withTank(withTank) { } bool operator()(Unit const* target) const { if (!_me || !target) return false; + if (!_withTank && target == _me->GetThreatMgr().GetCurrentVictim()) + return false; + if (target->getPowerType() != _power) return false; @@ -294,18 +298,12 @@ public: } else { - Unit* currentVictim = mgr.GetCurrentVictim(); - if (currentVictim) - targetList.push_back(currentVictim); - for (ThreatReference const* ref : mgr.GetSortedThreatList()) { if (ref->IsOffline()) continue; - Unit* thisTarget = ref->GetVictim(); - if (thisTarget != currentVictim) - targetList.push_back(thisTarget); + targetList.push_back(ref->GetVictim()); } } diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index d5a78dee0..2ba8132c4 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3460,10 +3460,10 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, { if (e.target.hostileRandom.powerType) { - if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::MaxThreat, 1, PowerUsersSelector(me, Powers(e.target.hostileRandom.powerType - 1), (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly))) + if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::MaxThreat, 0, PowerUsersSelector(me, Powers(e.target.hostileRandom.powerType - 1), (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly, false))) targets.push_back(u); } - else if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::MaxThreat, 1, (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly, true, -e.target.hostileRandom.aura)) + else if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::MaxThreat, 0, (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly, false, -e.target.hostileRandom.aura)) targets.push_back(u); } break; @@ -3496,10 +3496,10 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, { if (e.target.hostileRandom.powerType) { - if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::Random, 1, PowerUsersSelector(me, Powers(e.target.hostileRandom.powerType - 1), (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly))) + if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::Random, 0, PowerUsersSelector(me, Powers(e.target.hostileRandom.powerType - 1), (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly, false))) targets.push_back(u); } - else if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::Random, 1, (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly, true, -e.target.hostileRandom.aura)) + else if (Unit* u = me->AI()->SelectTarget(SelectTargetMethod::Random, 0, (float)e.target.hostileRandom.maxDist, e.target.hostileRandom.playerOnly, false, -e.target.hostileRandom.aura)) targets.push_back(u); } break; diff --git a/src/server/game/ArenaSpectator/ArenaSpectator.cpp b/src/server/game/ArenaSpectator/ArenaSpectator.cpp index df7f4b7aa..e1f0c7602 100644 --- a/src/server/game/ArenaSpectator/ArenaSpectator.cpp +++ b/src/server/game/ArenaSpectator/ArenaSpectator.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "ArenaSpectator.h" #include "BattlegroundMgr.h" #include "LFGMgr.h" @@ -41,7 +42,7 @@ bool ArenaSpectator::HandleSpectatorSpectateCommand(ChatHandler* handler, std::s return true; } - if (player->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && player->GetMapId() == 609) + if (player->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && player->GetMapId() == MAP_EBON_HOLD) { handler->PSendSysMessage("Death Knights can't spectate before finishing questline."); return true; @@ -163,7 +164,7 @@ bool ArenaSpectator::HandleSpectatorSpectateCommand(ChatHandler* handler, std::s if (bgPreparation) return true; - float z = spectate->GetMapId() == 618 ? std::max(28.27f, spectate->GetPositionZ() + 0.25f) : spectate->GetPositionZ() + 0.25f; + float z = spectate->GetMapId() == MAP_THE_RING_OF_VALOR ? std::max(28.27f, spectate->GetPositionZ() + 0.25f) : spectate->GetPositionZ() + 0.25f; player->SetPendingSpectatorForBG(spectate->GetBattlegroundId()); player->SetBattlegroundId(spectate->GetBattlegroundId(), spectate->GetBattlegroundTypeId(), PLAYER_MAX_BATTLEGROUND_QUEUES, false, false, TEAM_NEUTRAL); diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 3fe96fc42..c0a4f5536 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -19,6 +19,7 @@ /// @todo: Use spell victory/defeat in wg instead of RewardMarkOfHonor() && RewardHonor /// @todo: Add proper implement of achievement +#include "AreaDefines.h" #include "BattlefieldWG.h" #include "Chat.h" #include "GameTime.h" @@ -46,8 +47,8 @@ bool BattlefieldWG::SetupBattlefield() { m_TypeId = BATTLEFIELD_WG; // See enum BattlefieldTypes m_BattleId = BATTLEFIELD_BATTLEID_WG; - m_ZoneId = BATTLEFIELD_WG_ZONEID; - m_MapId = BATTLEFIELD_WG_MAPID; + m_ZoneId = AREA_WINTERGRASP; + m_MapId = MAP_NORTHREND; m_Map = sMapMgr->FindMap(m_MapId, 0); // init stalker AFTER setting map id... we spawn it at map=random memory value?... @@ -81,19 +82,19 @@ bool BattlefieldWG::SetupBattlefield() SetGraveyardNumber(BATTLEFIELD_WG_GRAVEYARD_MAX); // Load from db - if (!sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE) && - !sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER) && - !sWorld->getWorldState(ClockWorldState[0])) + if (!sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE) && + !sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER) && + !sWorldState->getWorldState(ClockWorldState[0])) { - sWorld->setWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE, uint64(false)); - sWorld->setWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER, uint64(urand(0, 1))); - sWorld->setWorldState(ClockWorldState[0], uint64(m_NoWarBattleTime)); + sWorldState->setWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE, uint64(false)); + sWorldState->setWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER, uint64(urand(0, 1))); + sWorldState->setWorldState(ClockWorldState[0], uint64(m_NoWarBattleTime)); } - m_isActive = bool(sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE)); - m_DefenderTeam = TeamId(sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER)); + m_isActive = bool(sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE)); + m_DefenderTeam = TeamId(sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER)); - m_Timer = sWorld->getWorldState(ClockWorldState[0]); + m_Timer = sWorldState->getWorldState(ClockWorldState[0]); if (m_isActive) { m_isActive = false; @@ -195,9 +196,9 @@ bool BattlefieldWG::Update(uint32 diff) bool m_return = Battlefield::Update(diff); if (m_saveTimer <= diff) { - sWorld->setWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE, m_isActive); - sWorld->setWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER, m_DefenderTeam); - sWorld->setWorldState(ClockWorldState[0], m_Timer); + sWorldState->setWorldState(WORLD_STATE_BATTLEFIELD_WG_ACTIVE, m_isActive); + sWorldState->setWorldState(WORLD_STATE_BATTLEFIELD_WG_DEFENDER, m_DefenderTeam); + sWorldState->setWorldState(ClockWorldState[0], m_Timer); m_saveTimer = 60 * IN_MILLISECONDS; } else @@ -280,7 +281,7 @@ void BattlefieldWG::OnBattleStart() float x, y, z; player->GetPosition(x, y, z); if (5500 > x && x > 5392 && y < 2880 && y > 2800 && z < 480) - player->TeleportTo(571, 5349.8686f, 2838.481f, 409.240f, 0.046328f); + player->TeleportTo(MAP_NORTHREND, 5349.8686f, 2838.481f, 409.240f, 0.046328f); SendInitWorldStatesTo(player); } } @@ -490,14 +491,14 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) if (!endByTimer) // win alli/horde { uint32 const worldStateId = GetDefenderTeam() == TEAM_ALLIANCE ? WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_CAPTURED : WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_CAPTURED; - sWorld->setWorldState(worldStateId, sWorld->getWorldState(worldStateId) + 1); + sWorldState->setWorldState(worldStateId, sWorldState->getWorldState(worldStateId) + 1); SendWarning((GetDefenderTeam() == TEAM_ALLIANCE) ? BATTLEFIELD_WG_TEXT_WIN_KEEP : (BATTLEFIELD_WG_TEXT_WIN_KEEP + 2)); } else // defend alli/horde { uint32 const worldStateId = GetDefenderTeam() == TEAM_ALLIANCE ? WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_DEFENDED : WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_DEFENDED; - sWorld->setWorldState(worldStateId, sWorld->getWorldState(worldStateId) + 1); + sWorldState->setWorldState(worldStateId, sWorldState->getWorldState(worldStateId) + 1); SendWarning((GetDefenderTeam() == TEAM_ALLIANCE) ? BATTLEFIELD_WG_TEXT_DEFEND_KEEP : (BATTLEFIELD_WG_TEXT_DEFEND_KEEP + 2)); } @@ -523,9 +524,9 @@ uint8 BattlefieldWG::GetSpiritGraveyardId(uint32 areaId) const return BATTLEFIELD_WG_GY_WORKSHOP_NE; case AREA_THE_BROKEN_TEMPLE: return BATTLEFIELD_WG_GY_WORKSHOP_NW; - case AREA_WESTPARK_WORKSHOP: + case AREA_WESTSPARK_WORKSHOP: return BATTLEFIELD_WG_GY_WORKSHOP_SW; - case AREA_EASTPARK_WORKSHOP: + case AREA_EASTSPARK_WORKSHOP: return BATTLEFIELD_WG_GY_WORKSHOP_SE; case AREA_WINTERGRASP: return BATTLEFIELD_WG_GY_ALLIANCE; @@ -548,9 +549,9 @@ uint32 BattlefieldWG::GetAreaByGraveyardId(uint8 gId) const case BATTLEFIELD_WG_GY_WORKSHOP_NW: return AREA_THE_BROKEN_TEMPLE; case BATTLEFIELD_WG_GY_WORKSHOP_SW: - return AREA_WESTPARK_WORKSHOP; + return AREA_WESTSPARK_WORKSHOP; case BATTLEFIELD_WG_GY_WORKSHOP_SE: - return AREA_EASTPARK_WORKSHOP; + return AREA_EASTSPARK_WORKSHOP; } return 0; @@ -852,13 +853,13 @@ void BattlefieldWG::OnPlayerJoinWar(Player* player) AddUpdateTenacity(player); if (player->GetTeamId() == GetDefenderTeam()) - player->TeleportTo(571, 5345, 2842, 410, 3.14f); + player->TeleportTo(MAP_NORTHREND, 5345, 2842, 410, 3.14f); else { if (player->GetTeamId() == TEAM_HORDE) - player->TeleportTo(571, 5025.857422f, 3674.628906f, 362.737122f, 4.135169f); + player->TeleportTo(MAP_NORTHREND, 5025.857422f, 3674.628906f, 362.737122f, 4.135169f); else - player->TeleportTo(571, 5101.284f, 2186.564f, 365.549f, 3.812f); + player->TeleportTo(MAP_NORTHREND, 5101.284f, 2186.564f, 365.549f, 3.812f); } if (player->GetTeamId() == GetAttackerTeam()) @@ -926,8 +927,8 @@ uint32 BattlefieldWG::GetData(uint32 data) const // See: SpellArea::IsFitToRequirements case AREA_THE_SUNKEN_RING: case AREA_THE_BROKEN_TEMPLE: - case AREA_WESTPARK_WORKSHOP: - case AREA_EASTPARK_WORKSHOP: + case AREA_WESTSPARK_WORKSHOP: + case AREA_EASTSPARK_WORKSHOP: // Graveyards and Workshops are controlled by the same team. if (BfGraveyard const* graveyard = GetGraveyardById(GetSpiritGraveyardId(data))) return graveyard->GetControlTeamId(); @@ -959,10 +960,10 @@ void BattlefieldWG::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_VEHICLE_A)); packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_MAX_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A)); - packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_DEFENDED, uint32(sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_DEFENDED))); - packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_CAPTURED, uint32(sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_CAPTURED))); - packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_DEFENDED, uint32(sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_DEFENDED))); - packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_CAPTURED, uint32(sWorld->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_CAPTURED))); + packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_DEFENDED, uint32(sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_DEFENDED))); + packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_CAPTURED, uint32(sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_CAPTURED))); + packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_DEFENDED, uint32(sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_HORDE_KEEP_DEFENDED))); + packet.Worldstates.emplace_back(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_CAPTURED, uint32(sWorldState->getWorldState(WORLD_STATE_BATTLEFIELD_WG_ALLIANCE_KEEP_CAPTURED))); for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr) packet.Worldstates.emplace_back((*itr)->m_WorldState, (*itr)->m_State); diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index a3217a006..3f285ef76 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -21,6 +21,7 @@ #include "Battlefield.h" #include "Log.h" #include "World.h" +#include "WorldState.h" #include "WorldStateDefines.h" #include "WorldStatePackets.h" @@ -100,20 +101,6 @@ enum WintergraspData BATTLEFIELD_WG_DATA_MAX, }; -enum WintergraspAreaIds -{ - BATTLEFIELD_WG_ZONEID = 4197, // Wintergrasp - BATTLEFIELD_WG_MAPID = 571, // Northrend - - AREA_WINTERGRASP_FORTRESS = 4575, - AREA_THE_SUNKEN_RING = 4538, - AREA_THE_BROKEN_TEMPLE = 4539, - AREA_WESTPARK_WORKSHOP = 4611, - AREA_EASTPARK_WORKSHOP = 4612, - AREA_WINTERGRASP = 4197, - AREA_THE_CHILLED_QUAGMIRE = 4589, -}; - /*######################### *####### Graveyards ###### *#########################*/ @@ -1238,7 +1225,7 @@ struct BfWGGameObjectBuilding break; } - m_State = sWorld->getWorldState(m_WorldState); + m_State = sWorldState->getWorldState(m_WorldState); if (gobj) { switch (m_State) @@ -1418,7 +1405,7 @@ struct BfWGGameObjectBuilding void Save() { - sWorld->setWorldState(m_WorldState, m_State); + sWorldState->setWorldState(m_WorldState, m_State); } }; @@ -1503,7 +1490,7 @@ struct WGWorkshop void Save() { - sWorld->setWorldState(WorkshopsData[workshopId].worldstate, state); + sWorldState->setWorldState(WorkshopsData[workshopId].worldstate, state); } }; diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 04da6d40f..b2ec4ff4a 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -60,16 +60,6 @@ enum BattlegroundDesertionType : uint8 ARENA_DESERTION_TYPE_INVITE_LOGOUT = 8, // player is invited to join arena and logs out }; -enum BattlegroundMaps -{ - MAP_BG_ALTERAC_VALLEY = 30, - MAP_BG_WARSONG_GULCH = 489, - MAP_BG_ARATHI_BASIN = 529, - MAP_BG_EYE_OF_THE_STORM = 566, - MAP_BG_STRAND_OF_THE_ANCIENTS = 607, - MAP_BG_ISLE_OF_CONQUEST = 628 -}; - enum BattlegroundBroadcastTexts { BG_TEXT_ALLIANCE_WINS = 10633, diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index e8bc14d99..f447a47d4 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -47,6 +47,7 @@ #include "SharedDefines.h" #include "World.h" #include "WorldPacket.h" +#include "WorldState.h" #include "WorldStateDefines.h" #include @@ -183,7 +184,7 @@ void BattlegroundMgr::Update(uint32 diff) { sArenaTeamMgr->DistributeArenaPoints(); m_NextAutoDistributionTime = GameTime::GetGameTime() + Seconds(DAY * sWorld->getIntConfig(CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS)); - sWorld->setWorldState(WORLD_STATE_CUSTOM_ARENA_DISTRIBUTION_TIME, m_NextAutoDistributionTime.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_ARENA_DISTRIBUTION_TIME, m_NextAutoDistributionTime.count()); } m_AutoDistributionTimeChecker = 600000; // 10 minutes check } @@ -562,7 +563,7 @@ void BattlegroundMgr::InitAutomaticArenaPointDistribution() if (!sWorld->getBoolConfig(CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS)) return; - Seconds wstime = Seconds(sWorld->getWorldState(WORLD_STATE_CUSTOM_ARENA_DISTRIBUTION_TIME)); + Seconds wstime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_ARENA_DISTRIBUTION_TIME)); Seconds curtime = GameTime::GetGameTime(); LOG_INFO("server.loading", "Initializing Automatic Arena Point Distribution"); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index c5f1c3c34..d02e6c03b 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -567,7 +567,7 @@ void BattlegroundSA::TeleportToEntrancePosition(Player* player) { if (player->GetTeamId() != Attackers) { - player->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0); + player->TeleportTo(MAP_STRAND_OF_THE_ANCIENTS, 1209.7f, -65.16f, 70.1f, 0.0f, 0); } else { @@ -575,12 +575,12 @@ void BattlegroundSA::TeleportToEntrancePosition(Player* player) { player->CastSpell(player, 12438, true);//Without this player falls before boat loads... if (urand(0, 1)) - player->TeleportTo(607, 2682.936f, -830.368f, 15.0f, 2.895f, 0); + player->TeleportTo(MAP_STRAND_OF_THE_ANCIENTS, 2682.936f, -830.368f, 15.0f, 2.895f, 0); else - player->TeleportTo(607, 2577.003f, 980.261f, 15.0f, 0.807f, 0); + player->TeleportTo(MAP_STRAND_OF_THE_ANCIENTS, 2577.003f, 980.261f, 15.0f, 0.807f, 0); } else - player->TeleportTo(607, 1600.381f, -106.263f, 8.8745f, 3.78f, 0); + player->TeleportTo(MAP_STRAND_OF_THE_ANCIENTS, 1600.381f, -106.263f, 8.8745f, 3.78f, 0); } } diff --git a/src/server/game/Cache/WhoListCacheMgr.cpp b/src/server/game/Cache/WhoListCacheMgr.cpp index c92ff7919..6af42b662 100644 --- a/src/server/game/Cache/WhoListCacheMgr.cpp +++ b/src/server/game/Cache/WhoListCacheMgr.cpp @@ -16,6 +16,7 @@ */ #include "WhoListCacheMgr.h" +#include "AreaDefines.h" #include "GuildMgr.h" #include "ObjectAccessor.h" #include "World.h" @@ -56,7 +57,7 @@ void WhoListCacheMgr::Update() _whoListStorage.emplace_back(player->GetGUID(), player->GetTeamId(), player->GetSession()->GetSecurity(), player->GetLevel(), player->getClass(), player->getRace(), - (player->IsSpectator() ? 4395 /*Dalaran*/ : player->GetZoneId()), player->getGender(), player->IsVisible(), + (player->IsSpectator() ? AREA_DALARAN : player->GetZoneId()), player->getGender(), player->IsVisible(), widePlayerName, wideGuildName, playerName, guildName); } } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 91e2c1a96..34f1e00e2 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -409,7 +409,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) } case CONDITION_WORLD_STATE: { - condMeets = ConditionValue2 == sWorld->getWorldState(ConditionValue1); + condMeets = ConditionValue2 == sWorldState->getWorldState(ConditionValue1); break; } case CONDITION_PHASEMASK: diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp index e84c70fba..55fd0c2d8 100644 --- a/src/server/game/DataStores/DBCStores.cpp +++ b/src/server/game/DataStores/DBCStores.cpp @@ -737,7 +737,7 @@ WMOAreaTableEntry const* GetWMOAreaTableEntryByTripple(int32 rootid, int32 adtid uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId) { - if (mapid != 530 && mapid != 571) // speed for most cases + if (mapid != MAP_OUTLAND && mapid != MAP_NORTHREND) // speed for most cases return mapid; if (WorldMapAreaEntry const* wma = sWorldMapAreaStore.LookupEntry(zoneId)) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 826abb8d5..c6af197b3 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -18,6 +18,7 @@ #ifndef _OBJECT_H #define _OBJECT_H +#include "AreaDefines.h" #include "Common.h" #include "DataMap.h" #include "EventProcessor.h" @@ -588,7 +589,7 @@ public: [[nodiscard]] bool IsInWintergrasp() const { - return GetMapId() == 571 && GetPositionX() > 3733.33331f && GetPositionX() < 5866.66663f && GetPositionY() > 1599.99999f && GetPositionY() < 4799.99997f; + return GetMapId() == MAP_NORTHREND && GetPositionX() > 3733.33331f && GetPositionX() < 5866.66663f && GetPositionY() > 1599.99999f && GetPositionY() < 4799.99997f; } uint32 LastUsedScriptID; diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 5302a9878..a6be62cf2 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -16,6 +16,7 @@ */ #include "Pet.h" +#include "AreaDefines.h" #include "ArenaSpectator.h" #include "CharmInfo.h" #include "Common.h" @@ -81,7 +82,7 @@ void Pet::AddToWorld() } // pussywizard: apply ICC buff to pets - if (GetOwnerGUID().IsPlayer() && GetMapId() == 631 && FindMap() && FindMap()->ToInstanceMap() && FindMap()->ToInstanceMap()->GetInstanceScript() && FindMap()->ToInstanceMap()->GetInstanceScript()->GetData(251 /*DATA_BUFF_AVAILABLE*/)) + if (GetOwnerGUID().IsPlayer() && GetMapId() == MAP_ICECROWN_CITADEL && FindMap() && FindMap()->ToInstanceMap() && FindMap()->ToInstanceMap()->GetInstanceScript() && FindMap()->ToInstanceMap()->GetInstanceScript()->GetData(251 /*DATA_BUFF_AVAILABLE*/)) if (Unit* owner = GetOwner()) if (Player* plr = owner->ToPlayer()) { diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index eb10261e0..aeaa17da9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18,6 +18,7 @@ #include "Player.h" #include "AccountMgr.h" #include "AchievementMgr.h" +#include "AreaDefines.h" #include "ArenaSpectator.h" #include "ArenaTeam.h" #include "ArenaTeamMgr.h" @@ -1485,7 +1486,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati } else { - if (IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && GetMapId() == 609 && !IsGameMaster() && !HasSpell(50977)) + if (IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && GetMapId() == MAP_EBON_HOLD && !IsGameMaster() && !HasSpell(50977)) { SendTransferAborted(mapid, TRANSFER_ABORT_UNIQUE_MESSAGE, 1); return false; @@ -1730,7 +1731,7 @@ void Player::RemoveFromWorld() m_session->DoLootRelease(lguid); sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); - sWorldState->HandlePlayerLeaveZone(this, static_cast(m_zoneUpdateId)); + sWorldState->HandlePlayerLeaveZone(this, static_cast(m_zoneUpdateId)); } // Remove items from world before self - player must be found in Item::RemoveFromObjectUpdate @@ -1882,9 +1883,9 @@ void Player::Regenerate(Powers power) ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA) * (2.066f - (GetLevel() * 0.066f)); if (recentCast) // Trinity Updates Mana in intervals of 2s, which is correct - addvalue += GetFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER) * ManaIncreaseRate * 0.001f * m_regenTimer; + addvalue += GetFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + AsUnderlyingType(POWER_MANA)) * ManaIncreaseRate * 0.001f * m_regenTimer; else - addvalue += GetFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER) * ManaIncreaseRate * 0.001f * m_regenTimer; + addvalue += GetFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + AsUnderlyingType(POWER_MANA)) * ManaIncreaseRate * 0.001f * m_regenTimer; } break; case POWER_RAGE: // Regenerate rage @@ -1897,7 +1898,14 @@ void Player::Regenerate(Powers power) } break; case POWER_ENERGY: // Regenerate energy (rogue) - addvalue += 0.01f * m_regenTimer * sWorld->getRate(RATE_POWER_ENERGY); + // Regen per second + addvalue += (GetFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + AsUnderlyingType(POWER_ENERGY)) + 10.f); + // Regen per millisecond + addvalue *= 0.001f; + // Milliseconds passed + addvalue *= m_regenTimer; + // Rate + addvalue *= sWorld->getRate(RATE_POWER_ENERGY); break; case POWER_RUNIC_POWER: { @@ -1918,8 +1926,8 @@ void Player::Regenerate(Powers power) break; } - // Mana regen calculated in Player::UpdateManaRegen() - if (power != POWER_MANA) + // Mana regen calculated in Player::UpdateManaRegen(), energy regen calculated in Player::UpdateEnergyRegen() + if (power != POWER_MANA && power != POWER_ENERGY) { AuraEffectList const& ModPowerRegenPCTAuras = GetAuraEffectsByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for (AuraEffectList::const_iterator i = ModPowerRegenPCTAuras.begin(); i != ModPowerRegenPCTAuras.end(); ++i) @@ -1947,7 +1955,6 @@ void Player::Regenerate(Powers power) addvalue += m_powerFraction[power]; uint32 integerValue = uint32(std::fabs(addvalue)); - bool forcedUpdate = false; if (addvalue < 0.0f) { if (curValue > integerValue) @@ -1959,7 +1966,6 @@ void Player::Regenerate(Powers power) { curValue = 0; m_powerFraction[power] = 0; - forcedUpdate = true; } } else @@ -1970,22 +1976,15 @@ void Player::Regenerate(Powers power) { curValue = maxValue; m_powerFraction[power] = 0; - forcedUpdate = true; } else - { m_powerFraction[power] = addvalue - integerValue; - } } - if (m_regenTimerCount >= 2000 || forcedUpdate) - { + if (m_regenTimerCount >= 2000 || curValue == 0 || curValue == maxValue) SetPower(power, curValue, true, true); - } else - { - UpdateUInt32Value(static_cast(UNIT_FIELD_POWER1) + power, curValue); - } + UpdateUInt32Value(UNIT_FIELD_POWER1 + AsUnderlyingType(power), curValue); } void Player::RegenerateHealth() @@ -2404,7 +2403,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate, bool isLFGReward) // Favored experience increase START uint32 zone = GetZoneId(); float favored_exp_mult = 0; - if ((zone == 3483 || zone == 3562 || zone == 3836 || zone == 3713 || zone == 3714) && HasAnyAuras(32096 /*Thrallmar's Favor*/, 32098 /*Honor Hold's Favor*/)) + if ((zone == AREA_HELLFIRE_PENINSULA || zone == AREA_HELLFIRE_RAMPARTS || zone == AREA_MAGTHERIDONS_LAIR || zone == AREA_THE_BLOOD_FURNACE || zone == AREA_THE_SHATTERED_HALLS) && HasAnyAuras(32096 /*Thrallmar's Favor*/, 32098 /*Honor Hold's Favor*/)) favored_exp_mult = 0.05f; // Thrallmar's Favor and Honor Hold's Favor xp = uint32(xp * (1 + favored_exp_mult)); @@ -8249,7 +8248,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) // 8 Arena season id packet.Worldstates.emplace_back(WORLD_STATE_ARENA_SEASON_ID, sArenaSeasonMgr->GetCurrentSeason()); - if (mapId == 530) // Outland + if (mapId == MAP_OUTLAND) { packet.Worldstates.reserve(3); packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_DISPLAY, 0); @@ -8266,18 +8265,18 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) // insert switch (zoneId) { - case 1: // Dun Morogh - case 11: // Wetlands - case 12: // Elwynn Forest - case 38: // Loch Modan - case 40: // Westfall - case 51: // Searing Gorge - case 1519: // Stormwind City - case 1537: // Ironforge - case 2257: // Deeprun Tram - case 3703: // Shattrath City + case AREA_DUN_MOROGH: + case AREA_WETLANDS: + case AREA_ELWYNN_FOREST: + case AREA_LOCH_MODAN: + case AREA_WESTFALL: + case AREA_SEARING_GORGE: + case AREA_STORMWIND_CITY: + case AREA_IRONFORGE: + case AREA_DEEPRUN_TRAM: + case AREA_SHATTRATH_CITY: break; - case 139: // Eastern Plaguelands + case AREA_EASTERN_PLAGUELANDS: if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_EP) outdoorPvP->FillInitialWorldStates(packet); else @@ -8318,7 +8317,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H, 0); break; - case 1377: // Silithus + case AREA_SILITHUS: if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_SI) outdoorPvP->FillInitialWorldStates(packet); else @@ -8335,7 +8334,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_AHNQIRAJ_SANDWORM_SW, 0); packet.Worldstates.emplace_back(WORLD_STATE_AHNQIRAJ_SANDWORM_E, 0); break; - case 2597: // Alterac Valley + case AREA_ALTERAC_VALLEY: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_AV) battleground->FillInitialWorldStates(packet); else @@ -8418,7 +8417,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_AV_AID_A_C, 1); } break; - case 3277: // Warsong Gulch + case AREA_WARSONG_GULCH: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_WS) battleground->FillInitialWorldStates(packet); else @@ -8434,7 +8433,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_WS_FLAG_STATE_ALLIANCE, 1); } break; - case 3358: // Arathi Basin + case AREA_ARATHI_BASIN: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_AB) battleground->FillInitialWorldStates(packet); else @@ -8474,7 +8473,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_AB_RESOURCES_WARNING, 1400); // warning limit (1400) } break; - case 3820: // Eye of the Storm + case AREA_EYE_OF_THE_STORM: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_EY) battleground->FillInitialWorldStates(packet); else @@ -8517,7 +8516,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) break; // any of these needs change! the client remembers the prev setting! // ON EVERY ZONE LEAVE, RESET THE OLD ZONE'S WORLD STATE, BUT AT LEAST THE UI STUFF! - case 3483: // Hellfire Peninsula + case AREA_HELLFIRE_PENINSULA: if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_HP) outdoorPvP->FillInitialWorldStates(packet); else @@ -8541,7 +8540,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_STADIUM_H, 1); } break; - case 3518: // Nagrand + case AREA_NAGRAND: if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_NA) outdoorPvP->FillInitialWorldStates(packet); else @@ -8577,7 +8576,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_HALAA_ALLIANCE, 0); } break; - case 3519: // Terokkar Forest + case AREA_TEROKKAR_FOREST: if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_TF) outdoorPvP->FillInitialWorldStates(packet); else @@ -8613,7 +8612,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_ALLIANCE, 1); } break; - case 3521: // Zangarmarsh + case AREA_ZANGARMARSH: if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_ZM) outdoorPvP->FillInitialWorldStates(packet); else @@ -8647,7 +8646,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY, 0); } break; - case 3698: // Nagrand Arena + case AREA_NAGRAND_ARENA: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_NA) battleground->FillInitialWorldStates(packet); else @@ -8658,7 +8657,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_NA_ARENA_SHOW, 0); } break; - case 3702: // Blade's Edge Arena + case AREA_BLADES_EDGE_ARENA: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_BE) battleground->FillInitialWorldStates(packet); else @@ -8669,7 +8668,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_BE_ARENA_SHOW, 0); } break; - case 3968: // Ruins of Lordaeron + case AREA_RUINS_OF_LORDAERON: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_RL) battleground->FillInitialWorldStates(packet); else @@ -8680,7 +8679,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_RL_ARENA_SHOW, 0); } break; - case 4378: // Dalaran Sewers + case AREA_DALARAN_ARENA: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_DS) battleground->FillInitialWorldStates(packet); else @@ -8691,7 +8690,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_DS_ARENA_SHOW, 0); } break; - case 4384: // Strand of the Ancients + case AREA_STRAND_OF_THE_ANCIENTS: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_SA) battleground->FillInitialWorldStates(packet); else @@ -8727,7 +8726,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) // missing unknowns } break; - case 4406: // Ring of Valor + case ARENA_THE_RING_OF_VALOR: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_RV) battleground->FillInitialWorldStates(packet); else @@ -8738,7 +8737,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_RV_ARENA_SHOW, 0); } break; - case 4710: // Isle of Conquest + case AREA_ISLE_OF_CONQUEST: if (battleground && battleground->GetBgTypeID(true) == BATTLEGROUND_IC) battleground->FillInitialWorldStates(packet); else @@ -8764,7 +8763,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_IC_HORDE_KEEP_CONTROLLED_H, 1); } break; - case 4987: // The Ruby Sanctum + case AREA_THE_RUBY_SANCTUM: if (instance) instance->FillInitialWorldStates(packet); else @@ -8775,8 +8774,8 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TOGGLE, 0); } break; - case 4812: // Icecrown Citadel - if (instance && mapId == 631) + case AREA_ICECROWN_CITADEL: + if (instance && mapId == MAP_ICECROWN_CITADEL) instance->FillInitialWorldStates(packet); else { @@ -8788,8 +8787,8 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_MAX, 50); } break; - case 4100: // The Culling of Stratholme - if (instance && mapId == 595) + case AREA_THE_CULLING_OF_STRATHOLME: + if (instance && mapId == MAP_THE_CULLING_OF_STRATHOLME) instance->FillInitialWorldStates(packet); else { @@ -8801,8 +8800,8 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN_SHOW, 0); } break; - case 4228: // The Oculus - if (instance && mapId == 578) + case AREA_THE_OCULUS: + if (instance && mapId == MAP_THE_OCULUS) instance->FillInitialWorldStates(packet); else { @@ -8811,8 +8810,8 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_AMOUNT, 0); } break; - case 4273: // Ulduar - if (instance && mapId == 603) + case AREA_ULDUAR: + if (instance && mapId == MAP_ULDUAR) instance->FillInitialWorldStates(packet); else { @@ -8821,7 +8820,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_ULDUAR_ALGALON_DESPAWN_TIMER, 0); } break; - case 4415: // Violet Hold + case AREA_THE_VIOLET_HOLD: if (instance) instance->FillInitialWorldStates(packet); else @@ -8832,8 +8831,8 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_VIOLET_HOLD_WAVE_COUNT, 0); } break; - case 4820: // Halls of Refection - if (instance && mapId == 668) + case AREA_HALLS_OF_REFLECTION: + if (instance && mapId == MAP_HALLS_OF_REFLECTION) instance->FillInitialWorldStates(packet); else { @@ -8842,7 +8841,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(WORLD_STATE_HALLS_OF_REFLECTION_WAVE_COUNT, 0); } break; - case 4298: // Scarlet Enclave (DK starting zone) + case AREA_PLAGUELANDS_THE_SCARLET_ENCLAVE: // (DK starting zone) // Get Mograine, GUID and ENTRY should NEVER change if (Creature* mograine = ObjectAccessor::GetCreature(*this, ObjectGuid::Create(29173, 130956))) { @@ -8858,7 +8857,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) } } break; - case 4197: // Wintergrasp + case AREA_WINTERGRASP: if (battlefield && battlefield->GetTypeId() == BATTLEFIELD_WG) { battlefield->FillInitialWorldStates(packet); @@ -13607,7 +13606,7 @@ uint32 Player::CalculateTalentsPoints() const uint32 base_talent = GetLevel() < 10 ? 0 : GetLevel() - 9; uint32 talentPointsForLevel = 0; - if (!IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TALENT_POINT_CALC) || GetMapId() != 609) + if (!IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TALENT_POINT_CALC) || GetMapId() != MAP_EBON_HOLD) { talentPointsForLevel = base_talent; } @@ -13636,7 +13635,7 @@ bool Player::canFlyInZone(uint32 mapid, uint32 zone, SpellInfo const* bySpell) // continent checked in SpellInfo::CheckLocation at cast and area update uint32 v_map = GetVirtualMapForMapAndZone(mapid, zone); - if (v_map == 571 && !bySpell->HasAttribute(SPELL_ATTR7_IGNORES_COLD_WEATHER_FLYING_REQUIREMENT)) + if (v_map == MAP_NORTHREND && !bySpell->HasAttribute(SPELL_ATTR7_IGNORES_COLD_WEATHER_FLYING_REQUIREMENT)) { if (!HasSpell(54197)) // 54197 = Cold Weather Flying { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 733d2f2bc..1a78a2d2b 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1986,6 +1986,7 @@ public: void ApplyManaRegenBonus(int32 amount, bool apply); void ApplyHealthRegenBonus(int32 amount, bool apply); void UpdateManaRegen(); + void UpdateEnergyRegen(); void UpdateRuneRegen(RuneType rune); [[nodiscard]] ObjectGuid GetLootGUID() const { return m_lootGuid; } diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index 5cff08b48..b407b1419 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -1259,8 +1259,8 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea, bool force) { sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); sOutdoorPvPMgr->HandlePlayerEnterZone(this, newZone); - sWorldState->HandlePlayerLeaveZone(this, static_cast(m_zoneUpdateId)); - sWorldState->HandlePlayerEnterZone(this, static_cast(newZone)); + sWorldState->HandlePlayerLeaveZone(this, static_cast(m_zoneUpdateId)); + sWorldState->HandlePlayerEnterZone(this, static_cast(newZone)); } if (m_zoneUpdateId != newZone) { diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 3e702f846..bf1b1464e 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -952,9 +952,19 @@ void Player::UpdateManaRegen() int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); if (modManaRegenInterrupt > 100) modManaRegenInterrupt = 100; - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, power_regen_mp5 + CalculatePct(power_regen, modManaRegenInterrupt)); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + AsUnderlyingType(POWER_MANA), power_regen_mp5 + CalculatePct(power_regen, modManaRegenInterrupt)); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, power_regen_mp5 + power_regen); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + AsUnderlyingType(POWER_MANA), power_regen_mp5 + power_regen); +} + +void Player::UpdateEnergyRegen() +{ + float regenPerSecond = 10.f; // +10 energy per second + regenPerSecond *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_ENERGY); + regenPerSecond += static_cast(GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_ENERGY)) / static_cast((5 * IN_MILLISECONDS)); + + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + AsUnderlyingType(POWER_ENERGY), regenPerSecond - 10.f); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + AsUnderlyingType(POWER_ENERGY), regenPerSecond - 10.f); } void Player::UpdateRuneRegen(RuneType rune) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 38d36ac94..aefcea9f0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -17,6 +17,7 @@ #include "Unit.h" #include "AccountMgr.h" +#include "AreaDefines.h" #include "ArenaSpectator.h" #include "Battlefield.h" #include "BattlefieldMgr.h" @@ -4224,7 +4225,7 @@ bool Unit::isInBackInMap(Unit const* target, float distance, float arc) const bool Unit::isInAccessiblePlaceFor(Creature const* c) const { - if (c->GetMapId() == 618) // Ring of Valor + if (c->GetMapId() == MAP_THE_RING_OF_VALOR) { // skip transport check, check for being below floor level if (this->GetPositionZ() < 28.0f) @@ -4234,7 +4235,7 @@ bool Unit::isInAccessiblePlaceFor(Creature const* c) const if (bg->GetStartTime() < 80133) // 60000ms preparation time + 20133ms elevator rise time return false; } - else if (c->GetMapId() == 631) // Icecrown Citadel + else if (c->GetMapId() == MAP_ICECROWN_CITADEL) { // if static transport doesn't match - return false if (c->GetTransport() != this->GetTransport() && ((c->GetTransport() && c->GetTransport()->IsStaticTransport()) || (this->GetTransport() && this->GetTransport()->IsStaticTransport()))) @@ -15635,29 +15636,23 @@ void Unit::SetMaxHealth(uint32 val) void Unit::SetPower(Powers power, uint32 val, bool withPowerUpdate /*= true*/, bool fromRegenerate /* = false */) { if (!fromRegenerate && GetPower(power) == val) - { return; - } uint32 maxPower = GetMaxPower(power); if (maxPower < val) - { val = maxPower; - } if (fromRegenerate) { - UpdateUInt32Value(static_cast(UNIT_FIELD_POWER1) + power, val); + UpdateUInt32Value(UNIT_FIELD_POWER1 + AsUnderlyingType(power), val); AddToObjectUpdateIfNeeded(); } else - { - SetStatInt32Value(static_cast(UNIT_FIELD_POWER1) + power, val); - } + SetStatInt32Value(UNIT_FIELD_POWER1 + AsUnderlyingType(power), val); if (withPowerUpdate) { - WorldPacket data(SMSG_POWER_UPDATE); + WorldPacket data(SMSG_POWER_UPDATE, 8 + 1 + 4); data << GetPackGUID(); data << uint8(power); data << uint32(val); @@ -15669,14 +15664,10 @@ void Unit::SetPower(Powers power, uint32 val, bool withPowerUpdate /*= true*/, b { Player* player = ToPlayer(); if (getPowerType() == power && player->NeedSendSpectatorData()) - { ArenaSpectator::SendCommand_UInt32Value(FindMap(), GetGUID(), "CPW", power == POWER_RAGE || power == POWER_RUNIC_POWER ? val / 10 : val); - } if (player->GetGroup()) - { player->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_CUR_POWER); - } } else if (Pet* pet = ToCreature()->ToPet()) { @@ -15684,16 +15675,12 @@ void Unit::SetPower(Powers power, uint32 val, bool withPowerUpdate /*= true*/, b { Unit* owner = GetOwner(); if (owner && (owner->IsPlayer()) && owner->ToPlayer()->GetGroup()) - { owner->ToPlayer()->SetGroupUpdateFlag(GROUP_UPDATE_FLAG_PET_CUR_POWER); - } } // Update the pet's character sheet with happiness damage bonus if (pet->getPetType() == HUNTER_PET && power == POWER_HAPPINESS) - { pet->UpdateDamagePhysical(BASE_ATTACK); - } } } diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 0fa035b7f..b0752ecd2 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -16,6 +16,7 @@ */ #include "Vehicle.h" +#include "AreaDefines.h" #include "BattlefieldWG.h" #include "Log.h" #include "MoveSplineInit.h" @@ -159,7 +160,7 @@ void Vehicle::ApplyAllImmunities() //_me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_UNATTACKABLE, true); _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SHIELD, true); _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_IMMUNE_SHIELD, true); - if (_me->GetZoneId() == BATTLEFIELD_WG_ZONEID || _me->ToCreature()->GetSpawnId() || (_me->FindMap() && _me->FindMap()->Instanceable())) + if (_me->GetZoneId() == AREA_WINTERGRASP || _me->ToCreature()->GetSpawnId() || (_me->FindMap() && _me->FindMap()->Instanceable())) _me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_SCHOOL_ABSORB, true); // ... Resistance, Split damage, Change stats ... diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 277d227e3..1f61f8c5d 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -32,6 +32,7 @@ #include "UnitAI.h" #include "World.h" #include "WorldSessionMgr.h" +#include "WorldState.h" #include "WorldStatePackets.h" #include @@ -156,7 +157,7 @@ bool GameEventMgr::StartEvent(uint16 eventId, bool overwrite) auto itr = _gameEventSeasonalQuestsMap.find(eventId); if (itr != _gameEventSeasonalQuestsMap.end() && !itr->second.empty()) { - sWorld->setWorldState(eventId, GameTime::GetGameTime().count()); + sWorldState->setWorldState(eventId, GameTime::GetGameTime().count()); } return false; @@ -198,7 +199,7 @@ void GameEventMgr::StopEvent(uint16 eventId, bool overwrite) UnApplyEvent(eventId); // When event is stopped, clean up its worldstate - sWorld->setWorldState(eventId, 0); + sWorldState->setWorldState(eventId, 0); if (overwrite && !serverwide_evt) { @@ -1205,7 +1206,7 @@ uint32 GameEventMgr::Update() // return the next e else { // If event is inactive, periodically clean up its worldstate - sWorld->setWorldState(itr, 0); + sWorldState->setWorldState(itr, 0); if (IsActiveEvent(itr)) { @@ -1296,7 +1297,7 @@ void GameEventMgr::ApplyNewEvent(uint16 eventId) // If event's worldstate is 0, it means the event hasn't been started yet. In that case, reset seasonal quests. // When event ends (if it expires or if it's stopped via commands) worldstate will be set to 0 again, ready for another seasonal quest reset. - if (sWorld->getWorldState(eventId) == 0) + if (sWorldState->getWorldState(eventId) == 0) { sWorld->ResetEventSeasonalQuests(eventId); } diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 5d3c0d80e..3fede6ffc 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -16,6 +16,7 @@ */ #include "Group.h" +#include "AreaDefines.h" #include "Battleground.h" #include "BattlegroundMgr.h" #include "Config.h" @@ -2013,7 +2014,7 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const* return ERR_IN_NON_RANDOM_BG; // don't let Death Knights join BG queues when they are not allowed to be teleported yet - if (member->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && member->GetMapId() == 609 && !member->IsGameMaster() && !member->HasSpell(50977)) + if (member->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && member->GetMapId() == MAP_EBON_HOLD && !member->IsGameMaster() && !member->HasSpell(50977)) return ERR_GROUP_JOIN_BATTLEGROUND_FAIL; if (!member->GetBGAccessByLevel(bgTemplate->GetBgTypeID())) diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index d8ae919de..c66ea7361 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "ArenaTeam.h" #include "ArenaTeamMgr.h" #include "ArenaSeasonMgr.h" @@ -185,7 +186,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) err = ERR_BATTLEGROUND_QUEUED_FOR_RATED; } // don't let Death Knights join BG queues when they are not allowed to be teleported yet - else if (_player->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && _player->GetMapId() == 609 && !_player->IsGameMaster() && !_player->HasSpell(50977)) + else if (_player->IsClass(CLASS_DEATH_KNIGHT, CLASS_CONTEXT_TELEPORT) && _player->GetMapId() == MAP_EBON_HOLD && !_player->IsGameMaster() && !_player->HasSpell(50977)) { err = ERR_BATTLEGROUND_NONE; } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 0956ad682..bf0721c4a 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -16,6 +16,7 @@ */ #include "AccountMgr.h" +#include "AreaDefines.h" #include "ArenaTeamMgr.h" #include "AuctionHouseMgr.h" #include "Battleground.h" @@ -2319,13 +2320,13 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptrSetData(1, loc.GetMapId()); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 62a97ab03..942eae9c5 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1416,8 +1416,8 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPacket& recv_data) } } - Map* homeMap571 = sMapMgr->CreateMap(571, nullptr); - Map* homeMap0 = sMapMgr->CreateMap(0, nullptr); + Map* homeMap571 = sMapMgr->CreateMap(MAP_NORTHREND, nullptr); + Map* homeMap0 = sMapMgr->CreateMap(MAP_EASTERN_KINGDOMS, nullptr); ASSERT(homeMap0 && homeMap571); std::map playerTeleport; @@ -1444,7 +1444,7 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPacket& recv_data) oldMap->AfterPlayerUnlinkFromMap(); p->SetMap(homeMap0); p->Relocate(0.0f, 0.0f, 0.0f, 0.0f); - if (!p->TeleportTo(571, 5790.20f, 2071.36f, 636.07f, 3.60f)) + if (!p->TeleportTo(MAP_NORTHREND, 5790.20f, 2071.36f, 636.07f, 3.60f)) p->GetSession()->KickPlayer("HandleSetRaidDifficultyOpcode 1"); } diff --git a/src/server/game/Maps/AreaDefines.h b/src/server/game/Maps/AreaDefines.h new file mode 100644 index 000000000..ac21f7bfd --- /dev/null +++ b/src/server/game/Maps/AreaDefines.h @@ -0,0 +1,273 @@ +/* + * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by the + * Free Software Foundation; either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef ACORE_AREA_DEFINES_H +#define ACORE_AREA_DEFINES_H + +#include "Define.h" + +enum AreaTableIDs : uint32 +{ + AREA_DUN_MOROGH = 1, + AREA_BADLANDS = 3, + AREA_BLASTED_LANDS = 4, + AREA_SWAMP_OF_SORROWS = 8, + AREA_DUSKWOOD = 10, + AREA_WETLANDS = 11, + AREA_ELWYNN_FOREST = 12, + AREA_DUROTAR = 14, + AREA_DUSTWALLOW_MARSH = 15, + AREA_THE_BARRENS = 17, + AREA_WESTERN_PLAGUELANDS = 28, + AREA_STRANGLETHORN_VALE = 33, + AREA_LOCH_MODAN = 38, + AREA_WESTFALL = 40, + AREA_REDRIDGE_MOUNTAINS = 44, + AREA_ARATHI_HIGHLANDS = 45, + AREA_BURNING_STEPPES = 46, + AREA_THE_HINTERLANDS = 47, + AREA_SEARING_GORGE = 51, + AREA_DRAGONBLIGHT = 65, + AREA_ZUL_DRAK = 66, + AREA_THE_STORM_PEAKS = 67, + AREA_TIRISFAL_GLADES = 85, + AREA_GOLDSHIRE = 87, + AREA_WESTFALL_LIGHTHOUSE = 115, + AREA_SILVERPINE_FOREST = 130, + AREA_KHARANOS = 131, + AREA_EASTERN_PLAGUELANDS = 139, + AREA_TELDRASSIL = 141, + AREA_DARKSHORE = 148, + AREA_BRILL = 159, + AREA_FELSTONE_FIELD = 199, + AREA_DALSONS_TEARS = 200, + AREA_GAHRRONS_WITHERING = 201, + AREA_THE_WRITHING_HAUNT = 202, + AREA_MULGORE = 215, + AREA_HILLSBRAD_FOOTHILLS = 267, + AREA_ASHENVALE = 331, + AREA_FERALAS = 357, + AREA_RAZOR_HILL = 362, + AREA_CAMP_TAURAJO = 378, + AREA_THE_CROSSROADS = 380, + AREA_THE_MERCHANT_COAST = 391, + AREA_GRIZZLY_HILLS = 394, + AREA_THOUSAND_NEEDLES = 400, + AREA_DESOLACE = 405, + AREA_STONETALON_MOUNTAINS = 406, + AREA_TANARIS = 440, + AREA_MOONGLADE = 493, + AREA_HOWLING_FJORD = 495, + AREA_WINTERSPRING = 618, + AREA_GATES_OF_IRONFORGE = 809, + AREA_ROCKTUSK_FARM = 1296, + AREA_SILITHUS = 1377, + AREA_UNDERCITY = 1497, + AREA_STORMWIND_CITY = 1519, + AREA_IRONFORGE = 1537, + AREA_ORGRIMMAR = 1637, + AREA_THUNDER_BLUFF = 1638, + AREA_DARNASSUS = 1657, + AREA_STRATHOLME = 2017, + AREA_SCHOLOMANCE = 2057, + AREA_ALCAZ_ISLAND = 2079, + AREA_DEEPRUN_TRAM = 2257, + AREA_ALTERAC_VALLEY = 2597, + AREA_CRYSTALSONG_FOREST = 2817, + AREA_WARSONG_GULCH = 3277, + AREA_ARATHI_BASIN = 3358, + AREA_AHN_QIRAJ = 3428, + AREA_RUINS_OF_AHN_QIRAJ = 3429, + AREA_EVERSONG_WOODS = 3430, + AREA_GHOSTLANDS = 3433, + AREA_HELLFIRE_PENINSULA = 3483, + AREA_NAGRAND = 3518, + AREA_TEROKKAR_FOREST = 3519, + AREA_SHADOWMOON_VALLEY = 3520, + AREA_ZANGARMARSH = 3521, + AREA_BLADES_EDGE_MOUNTAINS = 3522, + AREA_NETHERSTORM = 3523, + AREA_AZUREMYST_ISLE = 3524, + AREA_BLOODMYST_ISLE = 3525, + AREA_BOREAN_TUNDRA = 3537, + AREA_THE_EXODAR = 3557, + AREA_HELLFIRE_RAMPARTS = 3562, + AREA_HELLFIRE_CITADEL = 3563, + AREA_AZURE_WATCH = 3576, + AREA_SERPENTSHRINE_CAVERN = 3607, + AREA_HALAA = 3628, + AREA_FALCONWING_SQUARE = 3665, + AREA_NAGRAND_ARENA = 3698, + AREA_BLADES_EDGE_ARENA = 3702, + AREA_SHATTRATH_CITY = 3703, + AREA_NORDRASSIL = 3710, + AREA_SHOLAZAR_BASIN = 3711, + AREA_THE_BLOOD_FURNACE = 3713, + AREA_THE_SHATTERED_HALLS = 3714, + AREA_THE_STEAMVAULT = 3715, + AREA_THE_UNDERBOG = 3716, + AREA_THE_SLAVE_PENS = 3717, + AREA_SOCRETHARS_SEAT = 3742, + AREA_SHADOW_LABYRINTH = 3789, + AREA_AUCHENAI_CRYPTS = 3790, + AREA_SETHEKK_HALLS = 3791, + AREA_MANA_TOMBS = 3792, + AREA_EYE_OF_THE_STORM = 3820, + AREA_MAGTHERIDONS_LAIR = 3836, + AREA_THE_BOTANICA = 3847, + AREA_THE_ARCATRAZ = 3848, + AREA_THE_MECHANAR = 3849, + AREA_INVASION_POINT_OVERLORD = 3900, + AREA_RUINS_OF_LORDAERON = 3968, + AREA_SHATTERED_STRAITS = 4064, + AREA_SUNWELL_PLATEAU = 4075, + AREA_ISLE_OF_QUEL_DANAS = 4080, + AREA_THE_CULLING_OF_STRATHOLME = 4100, + AREA_NAXXANAR = 4128, + AREA_MAGISTERS_TERRACE = 4131, + AREA_WINTERGARDE_KEEP = 4177, + AREA_WINTERGRASP = 4197, + AREA_THE_OCULUS = 4228, + AREA_ULDUAR = 4273, + AREA_PLAGUELANDS_THE_SCARLET_ENCLAVE = 4298, + AREA_DALARAN_ARENA = 4378, + AREA_STRAND_OF_THE_ANCIENTS = 4384, + AREA_DALARAN = 4395, + ARENA_THE_RING_OF_VALOR = 4406, + AREA_THE_VIOLET_HOLD = 4415, + AREA_VALLEY_OF_ANCIENT_WINTERS = 4437, + AREA_THE_SUNKEN_RING = 4538, + AREA_THE_BROKEN_TEMPLE = 4539, + AREA_SEWER_EXIT_PIPE = 4569, + AREA_WINTERGRASP_FORTRESS = 4575, + AREA_THE_CHILLED_QUAGMIRE = 4589, + AREA_WESTSPARK_WORKSHOP = 4611, + AREA_EASTSPARK_WORKSHOP = 4612, + AREA_VARGOTHS_RETREAT = 4637, + AREA_FORMATION_GROUNDS = 4652, + AREA_THE_CONSERVATORY_OF_LIFE = 4656, + AREA_ARGENT_TOURNAMENT_GROUNDS = 4658, + AREA_THE_RING_OF_CHAMPIONS = 4669, + AREA_THE_ASPIRANTS_RING = 4670, + AREA_THE_ARGENT_VALIANTS_RING = 4671, + AREA_THE_ALLIANCE_VALIANTS_RING = 4672, + AREA_THE_HORDE_VALIANTS_RING = 4673, + AREA_SUNREAVER_PAVILION = 4676, + AREA_SILVER_COVENANT_PAVILION = 4677, + AREA_ISLE_OF_CONQUEST = 4710, + AREA_ICECROWN_CITADEL = 4812, + AREA_HALLS_OF_REFLECTION = 4820, + AREA_THE_FROZEN_THRONE = 4859, + AREA_THE_FROST_QUEENS_LAIR = 4889, + AREA_PUTRICIDES_LABORATORY_OF_ALCHEMICAL_HORRORS_AND_FUN = 4890, + AREA_THE_SANCTUM_OF_BLOOD = 4891, + AREA_FROSTMOURNE = 4910, + AREA_THE_RUBY_SANCTUM = 4987 +}; + +enum MapIDs : uint32 +{ + MAP_EASTERN_KINGDOMS = 0, + MAP_KALIMDOR = 1, + MAP_SCOTT_TEST = 25, + MAP_ALTERAC_VALLEY = 30, + MAP_SHADOWFANG_KEEP = 33, + MAP_STORMWIND_STOCKADE = 34, + MAP_DEADMINES = 36, + MAP_WAILING_CAVERNS = 43, + MAP_RAZORFEN_KRAUL = 47, + MAP_BLACKFATHOM_DEEPS = 48, + MAP_ULDAMAN = 70, + MAP_GNOMEREGAN = 90, + MAP_SUNKEN_TEMPLE = 109, + MAP_RAZORFEN_DOWNS = 129, + MAP_SCARLET_MONASTERY = 189, + MAP_ZUL_FARRAK = 209, + MAP_BLACKROCK_SPIRE = 229, + MAP_BLACKROCK_DEPTHS = 230, + MAP_ONYXIAS_LAIR = 249, + MAP_OPENING_OF_THE_DARK_PORTAL = 269, + MAP_SCHOLOMANCE = 289, + MAP_ZUL_GURUB = 309, + MAP_STRATHOLME = 329, + MAP_MARAUDON = 349, + MAP_RAGEFIRE_CHASM = 389, + MAP_MOLTEN_CORE = 409, + MAP_DIRE_MAUL = 429, + MAP_BLACKWING_LAIR = 469, + MAP_WARSONG_GULCH = 489, + MAP_RUINS_OF_AHN_QIRAJ = 509, + MAP_ARATHI_BASIN = 529, + MAP_OUTLAND = 530, + MAP_AHN_QIRAJ_TEMPLE = 531, + MAP_KARAZHAN = 532, + MAP_NAXXRAMAS = 533, + MAP_THE_BATTLE_FOR_MOUNT_HYJAL = 534, + MAP_HELLFIRE_CITADEL_THE_SHATTERED_HALLS = 540, + MAP_HELLFIRE_CITADEL_THE_BLOOD_FURNACE = 542, + MAP_HELLFIRE_CITADEL_RAMPARTS = 543, + MAP_MAGTHERIDONS_LAIR = 544, + MAP_COILFANG_THE_STEAMVAULT = 545, + MAP_COILFANG_THE_UNDERBOG = 546, + MAP_COILFANG_THE_SLAVE_PENS = 547, + MAP_COILFANG_SERPENTSHRINE_CAVERN = 548, + MAP_TEMPEST_KEEP = 550, + MAP_TEMPEST_KEEP_THE_ARCATRAZ = 552, + MAP_TEMPEST_KEEP_THE_BOTANICA = 553, + MAP_TEMPEST_KEEP_THE_MECHANAR = 554, + MAP_AUCHINDOUN_SHADOW_LABYRINTH = 555, + MAP_AUCHINDOUN_SETHEKK_HALLS = 556, + MAP_AUCHINDOUN_MANA_TOMBS = 557, + MAP_AUCHINDOUN_AUCHENAI_CRYPTS = 558, + MAP_THE_ESCAPE_FROM_DURNHOLDE = 560, + MAP_BLACK_TEMPLE = 564, + MAP_GRUULS_LAIR = 565, + MAP_EYE_OF_THE_STORM = 566, + MAP_ZUL_AMAN = 568, + MAP_NORTHREND = 571, + MAP_UTGARDE_KEEP = 574, + MAP_UTGARDE_PINNACLE = 575, + MAP_THE_NEXUS = 576, + MAP_THE_OCULUS = 578, + MAP_THE_SUNWELL = 580, + MAP_MAGISTERS_TERRACE = 585, + MAP_THE_CULLING_OF_STRATHOLME = 595, + MAP_HALLS_OF_STONE = 599, + MAP_DRAK_THARON_KEEP = 600, + MAP_AZJOL_NERUB = 601, + MAP_HALLS_OF_LIGHTNING = 602, + MAP_ULDUAR = 603, + MAP_GUNDRAK = 604, + MAP_STRAND_OF_THE_ANCIENTS = 607, + MAP_VIOLET_HOLD = 608, + MAP_EBON_HOLD = 609, + MAP_THE_OBSIDIAN_SANCTUM = 615, + MAP_THE_EYE_OF_ETERNITY = 616, + MAP_THE_RING_OF_VALOR = 618, + MAP_AHN_KAHET_THE_OLD_KINGDOM = 619, + MAP_VAULT_OF_ARCHAVON = 624, + MAP_ISLE_OF_CONQUEST = 628, + MAP_ICECROWN_CITADEL = 631, + MAP_THE_FORGE_OF_SOULS = 632, + MAP_TRIAL_OF_THE_CRUSADER = 649, + MAP_TRIAL_OF_THE_CHAMPION = 650, + MAP_PIT_OF_SARON = 658, + MAP_HALLS_OF_REFLECTION = 668, + MAP_THE_RUBY_SANCTUM = 724 +}; + +#endif diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 5b7e44ac0..007a21622 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -102,10 +102,10 @@ void Map::InitVisibilityDistance() switch (GetId()) { - case 609: // Scarlet Enclave (DK starting zone) + case MAP_EBON_HOLD: // Scarlet Enclave (DK starting zone) m_VisibleDistance = 125.0f; break; - case 25: // Scott Test (box map) + case MAP_SCOTT_TEST: // (box map) m_VisibleDistance = 200.0f; break; } @@ -1370,7 +1370,7 @@ LiquidData const Map::GetLiquidData(uint32 phaseMask, float x, float y, float z, if (liquid_level > ground_level && G3D::fuzzyGe(z, ground_level - GROUND_HEIGHT_TOLERANCE)) { // hardcoded in client like this - if (GetId() == 530 && liquid_type == 2) + if (GetId() == MAP_OUTLAND && liquid_type == 2) liquid_type = 15; uint32 liquidFlagType = 0; @@ -1426,7 +1426,7 @@ LiquidData const Map::GetLiquidData(uint32 phaseMask, float x, float y, float z, { // hardcoded in client like this uint32 liquidEntry = map_data.Entry; - if (GetId() == 530 && liquidEntry == 2) + if (GetId() == MAP_OUTLAND && liquidEntry == 2) liquidEntry = 15; liquidData = map_data; @@ -1523,7 +1523,7 @@ void Map::GetFullTerrainStatusForPosition(uint32 /*phaseMask*/, float x, float y if (wmoData && wmoData->liquidInfo && wmoData->liquidInfo->level > wmoData->floorZ) { uint32 liquidType = wmoData->liquidInfo->type; - if (GetId() == 530 && liquidType == 2) // gotta love blizzard hacks + if (GetId() == MAP_OUTLAND && liquidType == 2) // gotta love blizzard hacks liquidType = 15; uint32 liquidFlagType = 0; @@ -1572,7 +1572,7 @@ void Map::GetFullTerrainStatusForPosition(uint32 /*phaseMask*/, float x, float y if (gridLiquidData.Status != LIQUID_MAP_NO_WATER && (!wmoData || gridLiquidData.Level > wmoData->floorZ)) { uint32 liquidEntry = gridLiquidData.Entry; - if (GetId() == 530 && liquidEntry == 2) + if (GetId() == MAP_OUTLAND && liquidEntry == 2) liquidEntry = 15; data.liquidInfo = gridLiquidData; diff --git a/src/server/game/Miscellaneous/Formulas.cpp b/src/server/game/Miscellaneous/Formulas.cpp index 00237c578..76c6c292d 100644 --- a/src/server/game/Miscellaneous/Formulas.cpp +++ b/src/server/game/Miscellaneous/Formulas.cpp @@ -16,6 +16,7 @@ */ #include "Formulas.h" +#include "AreaDefines.h" #include "Battleground.h" #include "Creature.h" #include "Log.h" @@ -98,22 +99,22 @@ uint32 Acore::XP::Gain(Player* player, Unit* unit, bool isBattleGround /*= false { switch (player->GetMapId()) { - case MAP_BG_ALTERAC_VALLEY: + case MAP_ALTERAC_VALLEY: xpMod *= sWorld->getRate(RATE_XP_BG_KILL_AV); break; - case MAP_BG_WARSONG_GULCH: + case MAP_WARSONG_GULCH: xpMod *= sWorld->getRate(RATE_XP_BG_KILL_WSG); break; - case MAP_BG_ARATHI_BASIN: + case MAP_ARATHI_BASIN: xpMod *= sWorld->getRate(RATE_XP_BG_KILL_AB); break; - case MAP_BG_EYE_OF_THE_STORM: + case MAP_EYE_OF_THE_STORM: xpMod *= sWorld->getRate(RATE_XP_BG_KILL_EOTS); break; - case MAP_BG_STRAND_OF_THE_ANCIENTS: + case MAP_STRAND_OF_THE_ANCIENTS: xpMod *= sWorld->getRate(RATE_XP_BG_KILL_SOTA); break; - case MAP_BG_ISLE_OF_CONQUEST: + case MAP_ISLE_OF_CONQUEST: xpMod *= sWorld->getRate(RATE_XP_BG_KILL_IC); break; } diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 361978009..e1ecf2ced 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -659,7 +659,7 @@ void WorldSession::LogoutPlayer(bool save) _player->RepopAtGraveyard(); sOutdoorPvPMgr->HandlePlayerLeaveZone(_player, _player->GetZoneId()); - sWorldState->HandlePlayerLeaveZone(_player, static_cast(_player->GetZoneId())); + sWorldState->HandlePlayerLeaveZone(_player, static_cast(_player->GetZoneId())); // pussywizard: remove from battleground queues on logout for (int i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 50f65fff5..fcaa96b50 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -16,6 +16,7 @@ */ #include "SpellAuraEffects.h" +#include "AreaDefines.h" #include "BattlefieldMgr.h" #include "Battleground.h" #include "CellImpl.h" @@ -2018,7 +2019,7 @@ void AuraEffect::HandleAuraModShapeshift(AuraApplication const* aurApp, uint8 mo if (modelid > 0) { bool allow = true; - if (target->getTransForm() && !(target->GetMapId() == 560 /*The Escape From Durnholde*/)) + if (target->getTransForm() && !(target->GetMapId() == MAP_THE_ESCAPE_FROM_DURNHOLDE)) if (SpellInfo const* transformSpellInfo = sSpellMgr->GetSpellInfo(target->getTransForm())) if (transformSpellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) || !transformSpellInfo->IsPositive()) allow = false; @@ -4664,6 +4665,8 @@ void AuraEffect::HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, // Update manaregen value if (GetMiscValue() == POWER_MANA) target->ToPlayer()->UpdateManaRegen(); + else if (GetMiscValue() == POWER_ENERGY) + target->ToPlayer()->UpdateEnergyRegen(); else if (GetMiscValue() == POWER_RUNE) target->ToPlayer()->UpdateRuneRegen(RuneType(GetMiscValueB())); // other powers are not immediate effects - implemented in Player::Regenerate, Creature::Regenerate diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 9785e6da9..67c41cd8d 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1548,9 +1548,9 @@ SpellCastResult SpellInfo::CheckLocation(uint32 map_id, uint32 zone_id, uint32 a { case 23333: // Warsong Flag case 23335: // Silverwing Flag - return map_id == 489 && player && player->InBattleground() ? SPELL_CAST_OK : SPELL_FAILED_REQUIRES_AREA; + return map_id == MAP_WARSONG_GULCH && player && player->InBattleground() ? SPELL_CAST_OK : SPELL_FAILED_REQUIRES_AREA; case 34976: // Netherstorm Flag - return map_id == 566 && player && player->InBattleground() ? SPELL_CAST_OK : SPELL_FAILED_REQUIRES_AREA; + return map_id == MAP_EYE_OF_THE_STORM && player && player->InBattleground() ? SPELL_CAST_OK : SPELL_FAILED_REQUIRES_AREA; case 2584: // Waiting to Resurrect case 22011: // Spirit Heal Channel case 22012: // Spirit Heal @@ -1562,7 +1562,7 @@ SpellCastResult SpellInfo::CheckLocation(uint32 map_id, uint32 zone_id, uint32 a if (!mapEntry) return SPELL_FAILED_INCORRECT_AREA; - return zone_id == 4197 || (mapEntry->IsBattleground() && player && player->InBattleground()) ? SPELL_CAST_OK : SPELL_FAILED_REQUIRES_AREA; + return zone_id == AREA_WINTERGRASP || (mapEntry->IsBattleground() && player && player->InBattleground()) ? SPELL_CAST_OK : SPELL_FAILED_REQUIRES_AREA; } case 32724: // Gold Team (Alliance) case 32725: // Green Team (Alliance) diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 7f219af1e..b59d4e942 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -5014,9 +5014,27 @@ void SpellMgr::LoadSpellInfoCorrections() // Heart of the Crusader ApplySpellFix({ 20335, 20336, 20337 }, [](SpellInfo* spellInfo) { - spellInfo->Effects[EFFECT_2].Effect = SPELL_EFFECT_APPLY_AURA; - spellInfo->Effects[EFFECT_2].TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ENEMY); - spellInfo->Effects[EFFECT_2].ApplyAuraName = SPELL_AURA_DUMMY; + spellInfo->Effects[EFFECT_1].Effect = SPELL_EFFECT_APPLY_AURA; + spellInfo->Effects[EFFECT_1].TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ENEMY); + spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_DUMMY; + }); + + // Heart of the Crusader (Rank 1) + ApplySpellFix({ 20335 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_1].TriggerSpell = 21183; // Heart of the Crusader (Rank 1) + }); + + // Heart of the Crusader (Rank 2) + ApplySpellFix({ 20336 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_1].TriggerSpell = 54498; // Heart of the Crusader (Rank 2) + }); + + // Heart of the Crusader (Rank 3) + ApplySpellFix({ 20337 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_1].TriggerSpell = 54499; // Heart of the Crusader (Rank 3) }); // Gordok Ogre Suit diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 0222232a0..7d2c722f2 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -565,9 +565,6 @@ public: [[nodiscard]] virtual float getFloatConfig(WorldFloatConfigs index) const = 0; virtual void setIntConfig(WorldIntConfigs index, uint32 value) = 0; [[nodiscard]] virtual uint32 getIntConfig(WorldIntConfigs index) const = 0; - virtual void setWorldState(uint32 index, uint64 value) = 0; - [[nodiscard]] virtual uint64 getWorldState(uint32 index) const = 0; - virtual void LoadWorldStates() = 0; [[nodiscard]] virtual bool IsPvPRealm() const = 0; [[nodiscard]] virtual bool IsFFAPvPRealm() const = 0; virtual uint32 GetNextWhoListUpdateDelaySecs() = 0; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 6cd28639e..63eb85f9f 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1301,15 +1301,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); @@ -1754,8 +1754,9 @@ void World::SetInitialWorldSettings() LOG_INFO("server.loading", "Loading Creature Formations..."); sFormationMgr->LoadCreatureFormations(); - LOG_INFO("server.loading", "Loading World States..."); // must be loaded before battleground, outdoor PvP and conditions - LoadWorldStates(); + LOG_INFO("server.loading", "Loading WorldStates..."); // must be loaded before battleground, outdoor PvP and conditions + sWorldState->LoadWorldStates(); + sWorldState->Load(); LOG_INFO("server.loading", "Loading Conditions..."); sConditionMgr->LoadConditions(); @@ -1897,9 +1898,6 @@ void World::SetInitialWorldSettings() LOG_INFO("server.loading", "Loading Active Arena Season..."); sArenaSeasonMgr->LoadActiveSeason(); - LOG_INFO("server.loading", "Loading WorldState..."); - sWorldState->Load(); - sTicketMgr->Initialize(); ///- Initialize Battlegrounds @@ -2522,67 +2520,67 @@ void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount,uint32 acc void World::InitWeeklyQuestResetTime() { - Seconds wstime = Seconds(sWorld->getWorldState(WORLD_STATE_CUSTOM_WEEKLY_QUEST_RESET_TIME)); + Seconds wstime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_WEEKLY_QUEST_RESET_TIME)); _nextWeeklyQuestReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(4, 6)); if (wstime == 0s) { - sWorld->setWorldState(WORLD_STATE_CUSTOM_WEEKLY_QUEST_RESET_TIME, _nextWeeklyQuestReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_WEEKLY_QUEST_RESET_TIME, _nextWeeklyQuestReset.count()); } } void World::InitDailyQuestResetTime() { - Seconds wstime = Seconds(sWorld->getWorldState(WORLD_STATE_CUSTOM_DAILY_QUEST_RESET_TIME)); + Seconds wstime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_DAILY_QUEST_RESET_TIME)); _nextDailyQuestReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); if (wstime == 0s) { - sWorld->setWorldState(WORLD_STATE_CUSTOM_DAILY_QUEST_RESET_TIME, _nextDailyQuestReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_DAILY_QUEST_RESET_TIME, _nextDailyQuestReset.count()); } } void World::InitMonthlyQuestResetTime() { - Seconds wstime = Seconds(sWorld->getWorldState(WORLD_STATE_CUSTOM_MONTHLY_QUEST_RESET_TIME)); + Seconds wstime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_MONTHLY_QUEST_RESET_TIME)); _nextMonthlyQuestReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); if (wstime == 0s) { - sWorld->setWorldState(WORLD_STATE_CUSTOM_MONTHLY_QUEST_RESET_TIME, _nextMonthlyQuestReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_MONTHLY_QUEST_RESET_TIME, _nextMonthlyQuestReset.count()); } } void World::InitRandomBGResetTime() { - Seconds wstime = Seconds(sWorld->getWorldState(WORLD_STATE_CUSTOM_BG_DAILY_RESET_TIME)); + Seconds wstime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_BG_DAILY_RESET_TIME)); _nextRandomBGReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); if (wstime == 0s) { - sWorld->setWorldState(WORLD_STATE_CUSTOM_BG_DAILY_RESET_TIME, _nextRandomBGReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_BG_DAILY_RESET_TIME, _nextRandomBGReset.count()); } } void World::InitCalendarOldEventsDeletionTime() { - Seconds currentDeletionTime = Seconds(getWorldState(WORLD_STATE_CUSTOM_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME)); + Seconds currentDeletionTime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME)); Seconds nextDeletionTime = currentDeletionTime > 0s ? currentDeletionTime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, getIntConfig(CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR))); if (currentDeletionTime == 0s) { - sWorld->setWorldState(WORLD_STATE_CUSTOM_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME, nextDeletionTime.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME, nextDeletionTime.count()); } } void World::InitGuildResetTime() { - Seconds wstime = Seconds(getWorldState(WORLD_STATE_CUSTOM_GUILD_DAILY_RESET_TIME)); + Seconds wstime = Seconds(sWorldState->getWorldState(WORLD_STATE_CUSTOM_GUILD_DAILY_RESET_TIME)); _nextGuildReset = wstime > 0s ? wstime : Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); if (wstime == 0s) { - sWorld->setWorldState(WORLD_STATE_CUSTOM_GUILD_DAILY_RESET_TIME, _nextGuildReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_GUILD_DAILY_RESET_TIME, _nextGuildReset.count()); } } @@ -2597,7 +2595,7 @@ void World::ResetDailyQuests() itr->second->GetPlayer()->ResetDailyQuestStatus(); _nextDailyQuestReset = Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); - sWorld->setWorldState(WORLD_STATE_CUSTOM_DAILY_QUEST_RESET_TIME, _nextDailyQuestReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_DAILY_QUEST_RESET_TIME, _nextDailyQuestReset.count()); // change available dailies sPoolMgr->ChangeDailyQuests(); @@ -2633,7 +2631,7 @@ void World::ResetWeeklyQuests() itr->second->GetPlayer()->ResetWeeklyQuestStatus(); _nextWeeklyQuestReset = Seconds(Acore::Time::GetNextTimeWithDayAndHour(4, 6)); - sWorld->setWorldState(WORLD_STATE_CUSTOM_WEEKLY_QUEST_RESET_TIME, _nextWeeklyQuestReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_WEEKLY_QUEST_RESET_TIME, _nextWeeklyQuestReset.count()); // change available weeklies sPoolMgr->ChangeWeeklyQuests(); @@ -2652,7 +2650,7 @@ void World::ResetMonthlyQuests() itr->second->GetPlayer()->ResetMonthlyQuestStatus(); _nextMonthlyQuestReset = Seconds(Acore::Time::GetNextTimeWithMonthAndHour(-1, 6)); - sWorld->setWorldState(WORLD_STATE_CUSTOM_MONTHLY_QUEST_RESET_TIME, _nextMonthlyQuestReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_MONTHLY_QUEST_RESET_TIME, _nextMonthlyQuestReset.count()); } void World::ResetEventSeasonalQuests(uint16 event_id) @@ -2680,7 +2678,7 @@ void World::ResetRandomBG() itr->second->GetPlayer()->SetRandomWinner(false); _nextRandomBGReset = Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); - sWorld->setWorldState(WORLD_STATE_CUSTOM_BG_DAILY_RESET_TIME, _nextRandomBGReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_BG_DAILY_RESET_TIME, _nextRandomBGReset.count()); } void World::CalendarDeleteOldEvents() @@ -2688,7 +2686,7 @@ void World::CalendarDeleteOldEvents() LOG_INFO("server.worldserver", "Calendar deletion of old events."); _nextCalendarOldEventsDeletionTime = Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, getIntConfig(CONFIG_CALENDAR_DELETE_OLD_EVENTS_HOUR))); - sWorld->setWorldState(WORLD_STATE_CUSTOM_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME, _nextCalendarOldEventsDeletionTime.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_DAILY_CALENDAR_DELETION_OLD_EVENTS_TIME, _nextCalendarOldEventsDeletionTime.count()); sCalendarMgr->DeleteOldEvents(); } @@ -2697,7 +2695,7 @@ void World::ResetGuildCap() LOG_INFO("server.worldserver", "Guild Daily Cap reset."); _nextGuildReset = Seconds(Acore::Time::GetNextTimeWithDayAndHour(-1, 6)); - sWorld->setWorldState(WORLD_STATE_CUSTOM_GUILD_DAILY_RESET_TIME, _nextGuildReset.count()); + sWorldState->setWorldState(WORLD_STATE_CUSTOM_GUILD_DAILY_RESET_TIME, _nextGuildReset.count()); sGuildMgr->ResetTimes(); } @@ -2730,57 +2728,6 @@ void World::UpdateAreaDependentAuras() } } -void World::LoadWorldStates() -{ - uint32 oldMSTime = getMSTime(); - - QueryResult result = CharacterDatabase.Query("SELECT entry, value FROM worldstates"); - - if (!result) - { - LOG_WARN("server.loading", ">> Loaded 0 world states. DB table `worldstates` is empty!"); - LOG_INFO("server.loading", " "); - return; - } - - do - { - Field* fields = result->Fetch(); - _worldstates[fields[0].Get()] = fields[1].Get(); - } while (result->NextRow()); - - LOG_INFO("server.loading", ">> Loaded {} World States in {} ms", _worldstates.size(), GetMSTimeDiffToNow(oldMSTime)); - LOG_INFO("server.loading", " "); -} - -// Setting a worldstate will save it to DB -void World::setWorldState(uint32 index, uint64 timeValue) -{ - auto const& it = _worldstates.find(index); - if (it != _worldstates.end()) - { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_WORLDSTATE); - stmt->SetData(0, uint32(timeValue)); - stmt->SetData(1, index); - CharacterDatabase.Execute(stmt); - } - else - { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_WORLDSTATE); - stmt->SetData(0, index); - stmt->SetData(1, uint32(timeValue)); - CharacterDatabase.Execute(stmt); - } - - _worldstates[index] = timeValue; -} - -uint64 World::getWorldState(uint32 index) const -{ - auto const& itr = _worldstates.find(index); - return itr != _worldstates.end() ? itr->second : 0; -} - void World::ProcessQueryCallbacks() { _queryProcessor.ProcessReadyCallbacks(); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 7d1676dc8..eef769842 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -241,10 +241,6 @@ public: return index < INT_CONFIG_VALUE_COUNT ? _int_configs[index] : 0; } - void setWorldState(uint32 index, uint64 value) override; - [[nodiscard]] uint64 getWorldState(uint32 index) const override; - void LoadWorldStates() override; - /// Are we on a "Player versus Player" server? [[nodiscard]] bool IsPvPRealm() const override; [[nodiscard]] bool IsFFAPvPRealm() const override; @@ -324,8 +320,6 @@ private: uint32 _int_configs[INT_CONFIG_VALUE_COUNT]; bool _bool_configs[BOOL_CONFIG_VALUE_COUNT]; float _float_configs[FLOAT_CONFIG_VALUE_COUNT]; - typedef std::map WorldStatesMap; - WorldStatesMap _worldstates; AccountTypes _allowedSecurityLevel; LocaleConstant _defaultDbcLocale; // from config for one from loaded DBC locales uint32 _availableDbcLocaleMask; // by loaded DBC diff --git a/src/server/game/World/WorldState.cpp b/src/server/game/World/WorldState.cpp index e5defc1fc..6a670f2b4 100644 --- a/src/server/game/World/WorldState.cpp +++ b/src/server/game/World/WorldState.cpp @@ -95,6 +95,57 @@ void WorldState::Load() HandleSunsReachSubPhaseTransition(m_sunsReachData.m_subphaseMask, true); } +void WorldState::LoadWorldStates() +{ + uint32 oldMSTime = getMSTime(); + + QueryResult result = CharacterDatabase.Query("SELECT entry, value FROM worldstates"); + + if (!result) + { + LOG_WARN("server.loading", ">> Loaded 0 world states. DB table `worldstates` is empty!"); + LOG_INFO("server.loading", " "); + return; + } + + do + { + Field* fields = result->Fetch(); + _worldstates[fields[0].Get()] = fields[1].Get(); + } while (result->NextRow()); + + LOG_INFO("server.loading", ">> Loaded {} World States in {} ms", _worldstates.size(), GetMSTimeDiffToNow(oldMSTime)); + LOG_INFO("server.loading", " "); +} + +// Setting a worldstate will save it to DB +void WorldState::setWorldState(uint32 index, uint64 timeValue) +{ + auto const& it = _worldstates.find(index); + if (it != _worldstates.end()) + { + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_WORLDSTATE); + stmt->SetData(0, uint32(timeValue)); + stmt->SetData(1, index); + CharacterDatabase.Execute(stmt); + } + else + { + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_WORLDSTATE); + stmt->SetData(0, index); + stmt->SetData(1, uint32(timeValue)); + CharacterDatabase.Execute(stmt); + } + + _worldstates[index] = timeValue; +} + +uint64 WorldState::getWorldState(uint32 index) const +{ + auto const& itr = _worldstates.find(index); + return itr != _worldstates.end() ? itr->second : 0; +} + void WorldState::Save(WorldStateSaveIds saveId) { switch (saveId) @@ -196,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 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 guard(m_sunsReachData.m_sunsReachReclamationMutex); m_sunsReachData.m_sunsReachReclamationPlayers.push_back(player->GetGUID()); @@ -233,32 +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 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 guard(m_sunsReachData.m_sunsReachReclamationMutex); player->RemoveAurasDueToSpell(SPELL_KIRU_SONG_OF_VICTORY); @@ -278,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) @@ -311,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) @@ -344,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); @@ -371,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); @@ -771,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) @@ -795,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; } @@ -1040,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) diff --git a/src/server/game/World/WorldState.h b/src/server/game/World/WorldState.h index 4ba883b6b..a4bd0e242 100644 --- a/src/server/game/World/WorldState.h +++ b/src/server/game/World/WorldState.h @@ -18,6 +18,7 @@ #ifndef WORLD_STATE_H #define WORLD_STATE_H +#include "AreaDefines.h" #include "Player.h" #include @@ -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, @@ -177,10 +159,13 @@ class WorldState virtual ~WorldState(); static WorldState* instance(); void Load(); + void LoadWorldStates(); + void setWorldState(uint32 index, uint64 value); + [[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); @@ -195,6 +180,8 @@ class WorldState void HandleSunwellGateTransition(uint32 newGate); void SetSunwellGateCounter(SunwellGateCounters index, uint32 value); private: + typedef std::map WorldStatesMap; + WorldStatesMap _worldstates; void SendWorldstateUpdate(std::mutex& mutex, GuidVector const& guids, uint32 value, uint32 worldStateId); void StopSunsReachPhase(bool forward); void StartSunsReachPhase(bool initial = false); diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index cb4d470e8..cac1142df 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -2949,7 +2949,7 @@ public: return false; } - handler->GetSession()->GetPlayer()->CastSpell(unit, 530, true); + handler->GetSession()->GetPlayer()->CastSpell(unit, MAP_OUTLAND, true); return true; } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp index 0d44cf717..243d6e71c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp @@ -98,7 +98,7 @@ private: class instance_blackrock_depths : public InstanceMapScript { public: - instance_blackrock_depths() : InstanceMapScript("instance_blackrock_depths", 230) { } + instance_blackrock_depths() : InstanceMapScript("instance_blackrock_depths", MAP_BLACKROCK_DEPTHS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index 05a378899..d9508f0b5 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -77,7 +77,7 @@ DoorData const doorData[] = class instance_blackrock_spire : public InstanceMapScript { public: - instance_blackrock_spire() : InstanceMapScript(BRSScriptName, 229) { } + instance_blackrock_spire() : InstanceMapScript(BRSScriptName, MAP_BLACKROCK_SPIRE) { } struct instance_blackrock_spireMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index e5ca5f2aa..614976c5a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "GameObject.h" #include "InstanceMapScript.h" @@ -269,7 +270,7 @@ public: { Initialize(); - if (me->GetMapId() == 469) + if (me->GetMapId() == MAP_BLACKWING_LAIR) { if (Creature* nefarian = me->FindNearestCreature(NPC_NEFARIAN, 1000.0f, true)) { diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp index b84025f01..de8d3ef6c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp @@ -75,7 +75,7 @@ uint32 const Entry[3] = { 12422, 12416, 12420 }; class instance_blackwing_lair : public InstanceMapScript { public: - instance_blackwing_lair() : InstanceMapScript(BWLScriptName, 469) { } + instance_blackwing_lair() : InstanceMapScript(BWLScriptName, MAP_BLACKWING_LAIR) { } struct instance_blackwing_lair_InstanceMapScript : public InstanceScript { @@ -504,8 +504,7 @@ class spell_bwl_shadowflame : public SpellScript enum orb_of_command_misc { - QUEST_BLACKHANDS_COMMAND = 7761, - MAP_BWL = 469 + QUEST_BLACKHANDS_COMMAND = 7761 }; const Position orbOfCommandTP = { -7672.46f, -1107.19f, 396.65f, 0.59f }; @@ -519,7 +518,7 @@ public: { if (!player->IsAlive() && player->GetQuestRewardStatus(QUEST_BLACKHANDS_COMMAND)) { - player->TeleportTo(MAP_BWL, orbOfCommandTP.m_positionX, orbOfCommandTP.m_positionY, orbOfCommandTP.m_positionZ, orbOfCommandTP.m_orientation); + player->TeleportTo(MAP_BLACKWING_LAIR, orbOfCommandTP.m_positionX, orbOfCommandTP.m_positionY, orbOfCommandTP.m_positionZ, orbOfCommandTP.m_orientation); return true; } return false; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp index ffdcb5c56..a358bec9d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp @@ -74,7 +74,7 @@ public: { if (urand(0, 1)) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false)) { DoCast(target, SPELL_SHADOW_BOLT_RANDOM); } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp index 7cccc6479..ce586774f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp @@ -353,7 +353,7 @@ public: } case EVENT_TELEPORT_RANDOM: { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false)) { DoCastSelf(SPELL_HATE_TO_ZERO, true); DoCast(target, SPELL_TELEPORT_RANDOM); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp index a54192a9a..7bd064e4c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp @@ -56,7 +56,7 @@ constexpr uint8 SAY_SPAWN = 1; class instance_molten_core : public InstanceMapScript { public: - instance_molten_core() : InstanceMapScript(MCScriptName, 409) {} + instance_molten_core() : InstanceMapScript(MCScriptName, MAP_MOLTEN_CORE) {} struct instance_molten_core_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp index 91f1e592d..f9540d735 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp @@ -22,7 +22,7 @@ class instance_deadmines : public InstanceMapScript { public: - instance_deadmines() : InstanceMapScript("instance_deadmines", 36) { } + instance_deadmines() : InstanceMapScript("instance_deadmines", MAP_DEADMINES) { } struct instance_deadmines_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp index 9d41f0133..e4125d70d 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp @@ -27,7 +27,7 @@ class instance_gnomeregan : public InstanceMapScript { public: - instance_gnomeregan() : InstanceMapScript("instance_gnomeregan", 90) { } + instance_gnomeregan() : InstanceMapScript("instance_gnomeregan", MAP_GNOMEREGAN) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp index 12d1df540..c2b583874 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp @@ -214,7 +214,7 @@ struct boss_netherspite : public BossAI context.Repeat(90s); }).Schedule(15s, PORTAL_PHASE, [this](TaskContext context) { - DoCastRandomTarget(SPELL_VOIDZONE, 1, 45.0f, true, true); + DoCastRandomTarget(SPELL_VOIDZONE, 0, 45.0f, true, true, false); context.Repeat(15s); }); } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index 53d7b05a0..e85da8d9f 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -127,7 +127,7 @@ struct boss_malchezaar : public BossAI scheduler.Schedule(20s, 30s, [this](TaskContext context) { - DoCastRandomTarget(SPELL_AMPLIFY_DAMAGE, 1); + DoCastRandomTarget(SPELL_AMPLIFY_DAMAGE, 0, 0.0f, true, false, false); context.Repeat(); }).Schedule(20s, [this](TaskContext context) { diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index 9027d546a..20f82785e 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -1210,7 +1210,7 @@ struct boss_romulo : public ScriptedAI _scheduler.Schedule(15s, GROUP_COMBAT, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true, false)) { if (target && !me->HasInArc(M_PI, target)) { diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index 76758c950..2f4f27dae 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -67,7 +67,7 @@ DoorData const doorData[] = class instance_karazhan : public InstanceMapScript { public: - instance_karazhan() : InstanceMapScript("instance_karazhan", 532) { } + instance_karazhan() : InstanceMapScript("instance_karazhan", MAP_KARAZHAN) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp index 3311f3965..eacc69548 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp @@ -57,7 +57,7 @@ Position const KalecgosSpawnPos = { 164.3747f, -397.1197f, 2.151798f, 1.66219f } class instance_magisters_terrace : public InstanceMapScript { public: - instance_magisters_terrace() : InstanceMapScript("instance_magisters_terrace", 585) { } + instance_magisters_terrace() : InstanceMapScript("instance_magisters_terrace", MAP_MAGISTERS_TERRACE) { } struct instance_magisters_terrace_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp index 69e4a94ac..93a5cd45c 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp @@ -71,7 +71,7 @@ float const CATHEDRAL_PULL_RANGE = 80.0f; // Distance from the Cathedral doors t class instance_scarlet_monastery : public InstanceMapScript { public: - instance_scarlet_monastery() : InstanceMapScript("instance_scarlet_monastery", 189) {} + instance_scarlet_monastery() : InstanceMapScript("instance_scarlet_monastery", MAP_SCARLET_MONASTERY) {} InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index 0c068d070..8b585920c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -307,7 +307,7 @@ public: if (victim && (target->GetGUID() == victim->GetGUID())) { me->AddThreat(victim, -1000000); // drop current player, add a ton to second. This should guarantee that we don't end up with both 1 and 2 in a cage... - if (Unit* newTarget = SelectTarget(SelectTargetMethod::MaxThreat, 1, 200.0f)) // search in whole room + if (Unit* newTarget = SelectTarget(SelectTargetMethod::MaxThreat, 0, 200.0f, false, false)) // search in whole room { me->AddThreat(newTarget, 1000000); } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index 110bedfaf..b58ad2de3 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -208,7 +208,7 @@ public: events.ScheduleEvent(EVENT_CURSE_OF_TONGUES, 20s); break; case EVENT_DOMINATE_MIND: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 20.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f, true, false)) { me->CastSpell(target, SPELL_DOMINATE_MIND, false); } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp index ea6d6154b..5363fac88 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp @@ -31,7 +31,7 @@ Position KirtonosSpawn = Position(315.028, 70.5385, 102.15, 0.385971); class instance_scholomance : public InstanceMapScript { public: - instance_scholomance() : InstanceMapScript(ScholomanceScriptName, 289) { } + instance_scholomance() : InstanceMapScript(ScholomanceScriptName, MAP_SCHOLOMANCE) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp index 8f087fb67..db795de40 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp @@ -31,7 +31,7 @@ enum Spells class instance_shadowfang_keep : public InstanceMapScript { public: - instance_shadowfang_keep() : InstanceMapScript("instance_shadowfang_keep", 33) { } + instance_shadowfang_keep() : InstanceMapScript("instance_shadowfang_keep", MAP_SHADOWFANG_KEEP) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp index 99193ef24..9435fd194 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp @@ -58,7 +58,7 @@ Position const SlaughterPos = { 4032.20f, -3378.06f, 119.75f, 4.67f }; class instance_stratholme : public InstanceMapScript { public: - instance_stratholme() : InstanceMapScript("instance_stratholme", 329) { } + instance_stratholme() : InstanceMapScript("instance_stratholme", MAP_STRATHOLME) { } struct instance_stratholme_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp index 93d9618d0..46b6f9fe5 100644 --- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp +++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp @@ -29,7 +29,7 @@ class instance_sunken_temple : public InstanceMapScript { public: - instance_sunken_temple() : InstanceMapScript("instance_sunken_temple", 109) { } + instance_sunken_temple() : InstanceMapScript("instance_sunken_temple", MAP_SUNKEN_TEMPLE) { } struct instance_sunken_temple_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 517e6bdba..a0d2871bb 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -227,6 +227,11 @@ struct boss_kiljaeden : public BossAI boss_kiljaeden(Creature* creature) : BossAI(creature, DATA_KILJAEDEN) { me->SetReactState(REACT_PASSIVE); + + scheduler.SetValidator([this] + { + return !me->HasUnitState(UNIT_STATE_CASTING); + }); } void InitializeAI() override @@ -303,22 +308,22 @@ struct boss_kiljaeden : public BossAI scheduler.CancelAll(); - ScheduleBasicAbilities(); - me->m_Events.AddEventAtOffset([&] { if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ)) kalec->AI()->Talk(SAY_KALECGOS_READY2); EmpowerOrb(false); }, 35s); - me->m_Events.AddEventAtOffset([&] { + scheduler.Schedule(1s, [this](TaskContext) + { Talk(SAY_KJ_REFLECTION); me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE); - }, 1s); + }); scheduler.Schedule(1s + 200ms, [this](TaskContext) { DoCastSelf(SPELL_SHADOW_SPIKE); + ScheduleBasicAbilities(); }); ScheduleTimedEvent(15s, [&] { @@ -340,75 +345,80 @@ struct boss_kiljaeden : public BossAI ScheduleHealthCheckEvent(25, [&] { _phase = PHASE_SACRIFICE; - me->m_Events.AddEventAtOffset([&] { - Talk(SAY_KJ_REFLECTION); - me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE); - }, 1s); - - me->m_Events.AddEventAtOffset([&] { - DoCastSelf(SPELL_SHADOW_SPIKE); - }, 2s); - - if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ)) - { - kalec->AI()->Talk(SAY_KALECGOS_FOCUS, 8s); - kalec->AI()->Talk(SAY_KALECGOS_FATE, 20s + 200ms); - } - - if (Creature* anveena = instance->GetCreature(DATA_ANVEENA)) - { - anveena->AI()->Talk(SAY_ANVEENA_KALEC, 18s); - anveena->AI()->Talk(SAY_ANVEENA_GOODBYE, 25s); - } - scheduler.CancelAll(); - me->m_Events.AddEventAtOffset([&] { - if (Creature* anveena = instance->GetCreature(DATA_ANVEENA)) + scheduler.Schedule(1s, [this](TaskContext) + { + scheduler.Schedule(1s, [this](TaskContext) { - anveena->RemoveAllAuras(); - anveena->DespawnOrUnsummon(3500); - } - }, 28s); + Talk(SAY_KJ_REFLECTION); + me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE); + }); - me->m_Events.AddEventAtOffset([&] { - if (Creature* anveena = instance->GetCreature(DATA_ANVEENA)) + scheduler.Schedule(2s, [this](TaskContext) { - anveena->CastSpell(anveena, SPELL_SACRIFICE_OF_ANVEENA, true); - DoCastSelf(SPELL_CUSTOM_08_STATE, true); - me->SetUnitFlag(UNIT_FLAG_PACIFIED); - scheduler.DelayAll(7100ms); + DoCastSelf(SPELL_SHADOW_SPIKE); + }); - me->m_Events.AddEventAtOffset([&] { - me->RemoveAurasDueToSpell(SPELL_CUSTOM_08_STATE); - me->RemoveUnitFlag(UNIT_FLAG_PACIFIED); - - ScheduleBasicAbilities(); - - ScheduleTimedEvent(25s, [&] { - me->RemoveAurasDueToSpell(SPELL_ARMAGEDDON_PERIODIC); - Talk(EMOTE_KJ_DARKNESS); - DoCastAOE(SPELL_DARKNESS_OF_A_THOUSAND_SOULS); - - me->m_Events.AddEventAtOffset([this]() { - if (me->IsAlive() && me->IsInCombat()) - DoCastSelf(SPELL_ARMAGEDDON_PERIODIC, true); - }, 9s); - }, 25s); - - ScheduleTimedEvent(1500ms, [&] { - DoCastSelf(SPELL_ARMAGEDDON_PERIODIC, true); - }, 20s); - }, 7s); - } - Talk(SAY_KJ_PHASE5); - }, 30s); - - me->m_Events.AddEventAtOffset([&] { if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ)) - kalec->AI()->Talk(SAY_KALECGOS_READY_ALL); - EmpowerOrb(true); - }, 61s); + { + kalec->AI()->Talk(SAY_KALECGOS_FOCUS, 8s); + kalec->AI()->Talk(SAY_KALECGOS_FATE, 20s + 200ms); + } + + if (Creature* anveena = instance->GetCreature(DATA_ANVEENA)) + { + anveena->AI()->Talk(SAY_ANVEENA_KALEC, 18s); + anveena->AI()->Talk(SAY_ANVEENA_GOODBYE, 25s); + } + + me->m_Events.AddEventAtOffset([&] { + if (Creature* anveena = instance->GetCreature(DATA_ANVEENA)) + { + anveena->RemoveAllAuras(); + anveena->DespawnOrUnsummon(3500); + } + }, 28s); + + me->m_Events.AddEventAtOffset([&] { + if (Creature* anveena = instance->GetCreature(DATA_ANVEENA)) + { + anveena->CastSpell(anveena, SPELL_SACRIFICE_OF_ANVEENA, true); + DoCastSelf(SPELL_CUSTOM_08_STATE, true); + me->SetUnitFlag(UNIT_FLAG_PACIFIED); + scheduler.CancelAll(); + + me->m_Events.AddEventAtOffset([&] { + me->RemoveAurasDueToSpell(SPELL_CUSTOM_08_STATE); + me->RemoveUnitFlag(UNIT_FLAG_PACIFIED); + + ScheduleBasicAbilities(); + + ScheduleTimedEvent(25s, [&] { + me->RemoveAurasDueToSpell(SPELL_ARMAGEDDON_PERIODIC); + Talk(EMOTE_KJ_DARKNESS); + DoCastAOE(SPELL_DARKNESS_OF_A_THOUSAND_SOULS); + + me->m_Events.AddEventAtOffset([this]() { + if (me->IsAlive() && me->IsInCombat()) + DoCastSelf(SPELL_ARMAGEDDON_PERIODIC, true); + }, 9s); + }, 25s); + + ScheduleTimedEvent(1500ms, [&] { + DoCastSelf(SPELL_ARMAGEDDON_PERIODIC, true); + }, 20s); + }, 7s); + } + Talk(SAY_KJ_PHASE5); + }, 30s); + + me->m_Events.AddEventAtOffset([&] { + if (Creature* kalec = instance->GetCreature(DATA_KALECGOS_KJ)) + kalec->AI()->Talk(SAY_KALECGOS_READY_ALL); + EmpowerOrb(true); + }, 61s); + }); }); } @@ -461,8 +471,12 @@ struct boss_kiljaeden : public BossAI { if (me->GetReactState() == REACT_PASSIVE) return; + ScriptedAI::EnterEvadeMode(why); - me->DespawnOrUnsummon(); + if (InstanceScript* instance = me->GetInstanceScript()) + if (Creature* controller = instance->GetCreature(DATA_KJ_CONTROLLER)) + if (controller->IsAIEnabled) + controller->AI()->Reset(); } void AttackStart(Unit* who) override diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp index 4d2154fab..9b6d4d19c 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp @@ -78,7 +78,7 @@ ObjectData const summonData[] = class instance_sunwell_plateau : public InstanceMapScript { public: - instance_sunwell_plateau() : InstanceMapScript("instance_sunwell_plateau", 580) { } + instance_sunwell_plateau() : InstanceMapScript("instance_sunwell_plateau", MAP_THE_SUNWELL) { } struct instance_sunwell_plateau_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp b/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp index bf9168f97..d08d9d8d4 100644 --- a/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp +++ b/src/server/scripts/EasternKingdoms/TheStockade/instance_the_stockade.cpp @@ -21,7 +21,7 @@ class instance_the_stockade : public InstanceMapScript { public: - instance_the_stockade() : InstanceMapScript("instance_the_stockade", 34) { } + instance_the_stockade() : InstanceMapScript("instance_the_stockade", MAP_STORMWIND_STOCKADE) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index faedcc1b8..1859ee640 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureAI.h" #include "InstanceMapScript.h" #include "InstanceScript.h" @@ -36,7 +37,7 @@ enum Events class instance_uldaman : public InstanceMapScript { public: - instance_uldaman() : InstanceMapScript("instance_uldaman", 70) { } + instance_uldaman() : InstanceMapScript("instance_uldaman", MAP_ULDAMAN) { } struct instance_uldaman_InstanceMapScript : public InstanceScript { @@ -156,11 +157,6 @@ class spell_uldaman_sub_boss_agro_keepers : public SpellScript } }; -enum UldamanStonedEnum -{ - MAP_ULDAMAN = 70 -}; - class spell_uldaman_stoned_aura : public AuraScript { PrepareAuraScript(spell_uldaman_stoned_aura); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index d2b04f318..4607837a7 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -84,7 +84,7 @@ struct boss_akilzon : public BossAI scheduler.Schedule(10s, 20s, GROUP_STATIC_DISRUPTION, [this](TaskContext context) { - Unit* target = SelectTarget(SelectTargetMethod::Random, 1); + Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false); if (!target) target = me->GetVictim(); if (target) @@ -99,7 +99,7 @@ struct boss_akilzon : public BossAI ScheduleTimedEvent(20s, 30s, [&] { if (scheduler.GetNextGroupOccurrence(GROUP_ELECTRICAL_STORM) > 5s) - DoCastRandomTarget(SPELL_GUST_OF_WIND, 1); + DoCastRandomTarget(SPELL_GUST_OF_WIND, 0, 0.0f, true, false, false); }, 20s, 30s); ScheduleTimedEvent(10s, 20s, [&] { diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index feb6b3553..b33a057db 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -205,7 +205,7 @@ struct boss_zuljin : public BossAI if (me->HasAura(SPELL_LYNX_RUSH_HASTE)) return; - DoCastRandomTarget(SPELL_CLAW_RAGE_CHARGE, 1); + DoCastRandomTarget(SPELL_CLAW_RAGE_CHARGE, 0, 0.0f, true, false, true); }, 15s, 20s); ScheduleTimedEvent(14s, [&] { diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 87c101b8f..4340241c7 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -96,7 +96,7 @@ BossBoundaryData const boundaries = class instance_zulaman : public InstanceMapScript { public: - instance_zulaman() : InstanceMapScript("instance_zulaman", 568) { } + instance_zulaman() : InstanceMapScript("instance_zulaman", MAP_ZUL_AMAN) { } struct instance_zulaman_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index ef61c5a10..2080db95e 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -122,7 +122,7 @@ struct boss_hazzarah : public BossAI case EVENT_CHAIN_BURN: if (me->GetPowerPct(POWER_MANA) > 5.f) // totally guessed { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, [&](Unit* u) { return u && !u->IsPet() && u->getPowerType() == POWER_MANA; })) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, [&](Unit* u) { return u && !u->IsPet() && u->getPowerType() == POWER_MANA && u != me->GetVictim(); })) { DoCast(target, SPELL_CHAIN_BURN); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index 6445a79fd..fea22043b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -150,7 +150,7 @@ public: events.ScheduleEvent(EVENT_VANISH, 38s, 45s); return; case EVENT_AMBUSH: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) { me->NearTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), me->GetOrientation()); DoCast(target, SPELL_AMBUSH, true); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index d1b6f2aae..f577336d6 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -47,7 +47,7 @@ ObjectData const creatureData[] = class instance_zulgurub : public InstanceMapScript { public: - instance_zulgurub(): InstanceMapScript(ZGScriptName, 309) { } + instance_zulgurub(): InstanceMapScript(ZGScriptName, MAP_ZUL_GURUB) { } struct instance_zulgurub_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp index a0a49c5dd..d7d06ac3f 100644 --- a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp +++ b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp @@ -90,7 +90,7 @@ struct boss_twilight_corrupter : public ScriptedAI _scheduler .Schedule(12s, 18s, [this](TaskContext context) { - DoCastRandomTarget(SPELL_CREATURE_OF_NIGHTMARE, 1, 100.f); + DoCastRandomTarget(SPELL_CREATURE_OF_NIGHTMARE, 0, 100.f, true, false, false); context.Repeat(35s, 45s); }) .Schedule(9s, 16s, [this](TaskContext context) diff --git a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp index ad8d4a73c..f1d6fee40 100644 --- a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp @@ -27,6 +27,7 @@ npc_the_scourge_cauldron npc_andorhal_tower EndContentData */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" @@ -74,7 +75,7 @@ public: switch (me->GetAreaId()) { - case 199: //felstone + case AREA_FELSTONE_FIELD: if (player->GetQuestStatus(5216) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(5229) == QUEST_STATUS_INCOMPLETE) { @@ -82,7 +83,7 @@ public: DoDie(); } break; - case 200: //dalson + case AREA_DALSONS_TEARS: if (player->GetQuestStatus(5219) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(5231) == QUEST_STATUS_INCOMPLETE) { @@ -90,7 +91,7 @@ public: DoDie(); } break; - case 201: //gahrron + case AREA_GAHRRONS_WITHERING: if (player->GetQuestStatus(5225) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(5235) == QUEST_STATUS_INCOMPLETE) { @@ -98,7 +99,7 @@ public: DoDie(); } break; - case 202: //writhing + case AREA_THE_WRITHING_HAUNT: if (player->GetQuestStatus(5222) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(5233) == QUEST_STATUS_INCOMPLETE) { diff --git a/src/server/scripts/Events/brewfest.cpp b/src/server/scripts/Events/brewfest.cpp index 4a0c96b4a..abdce6bf1 100644 --- a/src/server/scripts/Events/brewfest.cpp +++ b/src/server/scripts/Events/brewfest.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CellImpl.h" #include "CreatureScript.h" #include "GameEventMgr.h" @@ -154,8 +155,8 @@ struct npc_brewfest_bark_trigger : public ScriptedAI bool allow = false; uint32 quest = 0; Player* player = who->ToPlayer(); - // Kalimdor - if (me->GetMapId() == 1) + + if (me->GetMapId() == MAP_KALIMDOR) { if (player->GetQuestStatus(QUEST_BARK_FOR_DROHN) == QUEST_STATUS_INCOMPLETE) { @@ -168,7 +169,7 @@ struct npc_brewfest_bark_trigger : public ScriptedAI quest = QUEST_BARK_FOR_VOODOO; } } - else if (me->GetMapId() == 0) + else if (me->GetMapId() == MAP_EASTERN_KINGDOMS) { if (player->GetQuestStatus(QUEST_BARK_FOR_BARLEY) == QUEST_STATUS_INCOMPLETE) { @@ -374,7 +375,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI } case EVENT_SPAWN_MOLE_MACHINE: { - if (me->GetMapId() == 1) // Kalimdor + if (me->GetMapId() == MAP_KALIMDOR) { float rand = 8 + rand_norm() * 12; float angle = rand_norm() * 2 * M_PI; @@ -383,7 +384,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI if (Creature* cr = me->SummonCreature(NPC_MOLE_MACHINE_TRIGGER, x, y, 21.3f, 0.0f)) cr->CastSpell(cr, SPELL_SPAWN_MOLE_MACHINE, true); } - else if (me->GetMapId() == 0) // EK + else if (me->GetMapId() == MAP_EASTERN_KINGDOMS) { float rand = rand_norm() * 20; float angle = rand_norm() * 2 * M_PI; @@ -457,7 +458,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI herald->Yell(amount, LANG_UNIVERSAL); } - me->CastSpell(me, (me->GetMapId() == 1 ? SPELL_SUMMON_PLANS_H : SPELL_SUMMON_PLANS_A), true); + me->CastSpell(me, (me->GetMapId() == MAP_KALIMDOR ? SPELL_SUMMON_PLANS_H : SPELL_SUMMON_PLANS_A), true); Reset(); } @@ -473,7 +474,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI } Creature* cr; - if (me->GetMapId() == 1) // Kalimdor + if (me->GetMapId() == MAP_KALIMDOR) { if ((cr = me->SummonCreature(NPC_DROHN_KEG, 1183.69f, -4315.15f, 21.1875f, 0.750492f))) { @@ -494,7 +495,7 @@ struct npc_dark_iron_attack_generator : public ScriptedAI revelerGUIDs.push_back(cr->GetGUID()); } } - else if (me->GetMapId() == 0) // Eastern Kingdom + else if (me->GetMapId() == MAP_EASTERN_KINGDOMS) { if ((cr = me->SummonCreature(NPC_BARLEYBREW_KEG, -5187.23f, -599.779f, 397.176f, 0.017453f))) { @@ -544,10 +545,10 @@ struct npc_dark_iron_attack_generator : public ScriptedAI switch (urand(0, 2)) { case 0: - entry = (me->GetMapId() == 1 ? NPC_NORMAL_DROHN : NPC_NORMAL_THUNDERBREW); + entry = (me->GetMapId() == MAP_KALIMDOR ? NPC_NORMAL_DROHN : NPC_NORMAL_THUNDERBREW); break; case 1: - entry = (me->GetMapId() == 1 ? NPC_NORMAL_VOODOO : NPC_NORMAL_BARLEYBREW); + entry = (me->GetMapId() == MAP_KALIMDOR ? NPC_NORMAL_VOODOO : NPC_NORMAL_BARLEYBREW); break; case 2: entry = NPC_NORMAL_GORDOK; @@ -649,13 +650,13 @@ struct npc_dark_iron_guzzler : public ScriptedAI uint32 entry[3] = {0, 0, 0}; uint32 shuffled[3] = {0, 0, 0}; - if (me->GetMapId() == 1) // Kalimdor + if (me->GetMapId() == MAP_KALIMDOR) { entry[0] = NPC_DROHN_KEG; entry[1] = NPC_VOODOO_KEG; entry[2] = NPC_GORDOK_KEG; } - else// if (me->GetMapId() == 0) // EK + else// if (me->GetMapId() == MAP_EASTERN_KINGDOMS) { entry[0] = NPC_THUNDERBREW_KEG; entry[1] = NPC_BARLEYBREW_KEG; @@ -1231,7 +1232,7 @@ class spell_brewfest_toss_mug : public SpellScript return; std::vector bakers; - if (caster->GetMapId() == 1) // Kalimdor + if (caster->GetMapId() == MAP_KALIMDOR) { if (Creature* creature = caster->FindNearestCreature(NPC_NORMAL_VOODOO, 40.0f)) { @@ -1248,7 +1249,7 @@ class spell_brewfest_toss_mug : public SpellScript bakers.push_back(creature); } } - else // EK + else // Eastern Kingdoms { if (Creature* creature = caster->FindNearestCreature(NPC_NORMAL_THUNDERBREW, 40.0f)) { diff --git a/src/server/scripts/Events/firework_show/firework_show.cpp b/src/server/scripts/Events/firework_show/firework_show.cpp index 111a754f9..0d743269e 100644 --- a/src/server/scripts/Events/firework_show/firework_show.cpp +++ b/src/server/scripts/Events/firework_show/firework_show.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "firework_show.h" #include "firework_show_BootyBay.h" #include "firework_show_Exodar.h" @@ -32,16 +33,16 @@ // , show std::map, FireworkShow const *> const FireworkShowStore = { - { { 0, 1 }, &fireworkShowIronforge }, - { { 0, 33 }, &fireworkShowBootyBay }, - { { 0, 1497 }, &fireworkShowUndercity }, - { { 0, 1519 }, &fireworkShowStormwind }, - { { 1, 141 }, &fireworkShowTeldrassil }, - { { 1, 1637 }, &fireworkShowOrgrimmar }, - { { 1, 1638 }, &fireworkShowThunderBluff }, - { { 530, 3430 }, &fireworkShowSilvermoon }, - { { 530, 3557 }, &fireworkShowExodar }, - { { 530, 3703 }, &fireworkShowShattrath }, + { { MAP_EASTERN_KINGDOMS, AREA_DUN_MOROGH }, &fireworkShowIronforge }, + { { MAP_EASTERN_KINGDOMS, AREA_STRANGLETHORN_VALE }, &fireworkShowBootyBay }, + { { MAP_EASTERN_KINGDOMS, AREA_UNDERCITY }, &fireworkShowUndercity }, + { { MAP_EASTERN_KINGDOMS, AREA_STORMWIND_CITY }, &fireworkShowStormwind }, + { { MAP_KALIMDOR, AREA_TELDRASSIL }, &fireworkShowTeldrassil }, + { { MAP_KALIMDOR, AREA_ORGRIMMAR }, &fireworkShowOrgrimmar }, + { { MAP_KALIMDOR, AREA_THUNDER_BLUFF }, &fireworkShowThunderBluff }, + { { MAP_OUTLAND, AREA_EVERSONG_WOODS }, &fireworkShowSilvermoon }, + { { MAP_OUTLAND, AREA_THE_EXODAR }, &fireworkShowExodar }, + { { MAP_OUTLAND, AREA_SHATTRATH_CITY }, &fireworkShowShattrath }, }; struct go_firework_show : public GameObjectAI diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp index 40af13934..adb1c3495 100644 --- a/src/server/scripts/Events/hallows_end.cpp +++ b/src/server/scripts/Events/hallows_end.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CellImpl.h" #include "CreatureScript.h" #include "GameObjectAI.h" @@ -371,42 +372,42 @@ struct npc_costumed_orphan_matron : public ScriptedAI { switch (me->GetAreaId()) { - case 87: // Goldshire + case AREA_GOLDSHIRE: x = -9494.4f; y = 48.53f; z = 70.5f; o = 0.5f; path = 235431; break; - case 131: // Kharanos + case AREA_KHARANOS: x = -5558.34f; y = -499.46f; z = 414.12f; o = 2.08f; path = 235432; break; - case 3576: // Azure Watch + case AREA_AZURE_WATCH: x = -4163.58f; y = -12460.30f; z = 63.02f; o = 4.31f; path = 235433; break; - case 362: // Razor Hill + case AREA_RAZOR_HILL: x = 373.2f; y = -4723.4f; z = 31.2f; o = 3.2f; path = 235434; break; - case 159: // Brill + case AREA_BRILL: x = 2195.2f; y = 264.0f; z = 55.62f; o = 0.15f; path = 235435; break; - case 3665: // Falcon Wing Square + case AREA_FALCONWING_SQUARE: x = 9547.91f; y = -6809.9f; z = 27.96f; diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index 42aa2bc10..4caa07d21 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "GameEventMgr.h" #include "GameObjectScript.h" @@ -59,91 +60,87 @@ static bool BonfireStampedOutState[COUNT_GO_BONFIRE_ALLIANCE + COUNT_GO_BONFIRE_ // , const std::map, bool*> BonfireStateStore = { -// Map 0 - { { 0, 1, TEAM_ALLIANCE }, &BonfireStampedOutState[0] }, - { { 0, 3, TEAM_HORDE }, &BonfireStampedOutState[1] }, - { { 0, 4, TEAM_ALLIANCE }, &BonfireStampedOutState[2] }, - { { 0, 8, TEAM_HORDE }, &BonfireStampedOutState[3] }, - { { 0, 10, TEAM_ALLIANCE }, &BonfireStampedOutState[4] }, - { { 0, 11, TEAM_ALLIANCE }, &BonfireStampedOutState[5] }, - { { 0, 12, TEAM_ALLIANCE }, &BonfireStampedOutState[6] }, - { { 0, 28, TEAM_ALLIANCE }, &BonfireStampedOutState[7] }, - { { 0, 33, TEAM_ALLIANCE }, &BonfireStampedOutState[8] }, - { { 0, 33, TEAM_HORDE }, &BonfireStampedOutState[9] }, - { { 0, 38, TEAM_ALLIANCE }, &BonfireStampedOutState[10] }, - { { 0, 40, TEAM_ALLIANCE }, &BonfireStampedOutState[11] }, - { { 0, 44, TEAM_ALLIANCE }, &BonfireStampedOutState[12] }, - { { 0, 45, TEAM_ALLIANCE }, &BonfireStampedOutState[13] }, - { { 0, 45, TEAM_HORDE }, &BonfireStampedOutState[14] }, - { { 0, 46, TEAM_ALLIANCE }, &BonfireStampedOutState[15] }, - { { 0, 46, TEAM_HORDE }, &BonfireStampedOutState[16] }, - { { 0, 47, TEAM_ALLIANCE }, &BonfireStampedOutState[17] }, - { { 0, 47, TEAM_HORDE }, &BonfireStampedOutState[18] }, - { { 0, 85, TEAM_HORDE }, &BonfireStampedOutState[19] }, - { { 0, 130, TEAM_HORDE }, &BonfireStampedOutState[20] }, - { { 0, 267, TEAM_ALLIANCE }, &BonfireStampedOutState[21] }, - { { 0, 267, TEAM_HORDE }, &BonfireStampedOutState[22] }, + { { MAP_EASTERN_KINGDOMS, AREA_DUN_MOROGH, TEAM_ALLIANCE }, &BonfireStampedOutState[0] }, + { { MAP_EASTERN_KINGDOMS, AREA_BADLANDS, TEAM_HORDE }, &BonfireStampedOutState[1] }, + { { MAP_EASTERN_KINGDOMS, AREA_BLASTED_LANDS, TEAM_ALLIANCE }, &BonfireStampedOutState[2] }, + { { MAP_EASTERN_KINGDOMS, AREA_SWAMP_OF_SORROWS, TEAM_HORDE }, &BonfireStampedOutState[3] }, + { { MAP_EASTERN_KINGDOMS, AREA_DUSKWOOD, TEAM_ALLIANCE }, &BonfireStampedOutState[4] }, + { { MAP_EASTERN_KINGDOMS, AREA_WETLANDS, TEAM_ALLIANCE }, &BonfireStampedOutState[5] }, + { { MAP_EASTERN_KINGDOMS, AREA_ELWYNN_FOREST, TEAM_ALLIANCE }, &BonfireStampedOutState[6] }, + { { MAP_EASTERN_KINGDOMS, AREA_WESTERN_PLAGUELANDS, TEAM_ALLIANCE }, &BonfireStampedOutState[7] }, + { { MAP_EASTERN_KINGDOMS, AREA_STRANGLETHORN_VALE, TEAM_ALLIANCE }, &BonfireStampedOutState[8] }, + { { MAP_EASTERN_KINGDOMS, AREA_STRANGLETHORN_VALE, TEAM_HORDE }, &BonfireStampedOutState[9] }, + { { MAP_EASTERN_KINGDOMS, AREA_LOCH_MODAN, TEAM_ALLIANCE }, &BonfireStampedOutState[10] }, + { { MAP_EASTERN_KINGDOMS, AREA_WESTFALL, TEAM_ALLIANCE }, &BonfireStampedOutState[11] }, + { { MAP_EASTERN_KINGDOMS, AREA_REDRIDGE_MOUNTAINS, TEAM_ALLIANCE }, &BonfireStampedOutState[12] }, + { { MAP_EASTERN_KINGDOMS, AREA_ARATHI_HIGHLANDS, TEAM_ALLIANCE }, &BonfireStampedOutState[13] }, + { { MAP_EASTERN_KINGDOMS, AREA_ARATHI_HIGHLANDS, TEAM_HORDE }, &BonfireStampedOutState[14] }, + { { MAP_EASTERN_KINGDOMS, AREA_BURNING_STEPPES, TEAM_ALLIANCE }, &BonfireStampedOutState[15] }, + { { MAP_EASTERN_KINGDOMS, AREA_BURNING_STEPPES, TEAM_HORDE }, &BonfireStampedOutState[16] }, + { { MAP_EASTERN_KINGDOMS, AREA_THE_HINTERLANDS, TEAM_ALLIANCE }, &BonfireStampedOutState[17] }, + { { MAP_EASTERN_KINGDOMS, AREA_THE_HINTERLANDS, TEAM_HORDE }, &BonfireStampedOutState[18] }, + { { MAP_EASTERN_KINGDOMS, AREA_TIRISFAL_GLADES, TEAM_HORDE }, &BonfireStampedOutState[19] }, + { { MAP_EASTERN_KINGDOMS, AREA_SILVERPINE_FOREST, TEAM_HORDE }, &BonfireStampedOutState[20] }, + { { MAP_EASTERN_KINGDOMS, AREA_HILLSBRAD_FOOTHILLS, TEAM_ALLIANCE }, &BonfireStampedOutState[21] }, + { { MAP_EASTERN_KINGDOMS, AREA_HILLSBRAD_FOOTHILLS, TEAM_HORDE }, &BonfireStampedOutState[22] }, -// Map 1 - { { 1, 14, TEAM_HORDE }, &BonfireStampedOutState[23] }, - { { 1, 15, TEAM_ALLIANCE }, &BonfireStampedOutState[24] }, - { { 1, 15, TEAM_HORDE }, &BonfireStampedOutState[25] }, - { { 1, 17, TEAM_HORDE }, &BonfireStampedOutState[26] }, - { { 1, 141, TEAM_ALLIANCE }, &BonfireStampedOutState[27] }, - { { 1, 148, TEAM_ALLIANCE }, &BonfireStampedOutState[28] }, - { { 1, 215, TEAM_HORDE }, &BonfireStampedOutState[29] }, - { { 1, 331, TEAM_ALLIANCE }, &BonfireStampedOutState[30] }, - { { 1, 331, TEAM_HORDE }, &BonfireStampedOutState[31] }, - { { 1, 357, TEAM_ALLIANCE }, &BonfireStampedOutState[32] }, - { { 1, 357, TEAM_HORDE }, &BonfireStampedOutState[33] }, - { { 1, 400, TEAM_HORDE }, &BonfireStampedOutState[34] }, - { { 1, 405, TEAM_ALLIANCE }, &BonfireStampedOutState[35] }, - { { 1, 405, TEAM_HORDE }, &BonfireStampedOutState[36] }, - { { 1, 406, TEAM_HORDE }, &BonfireStampedOutState[37] }, - { { 1, 440, TEAM_ALLIANCE }, &BonfireStampedOutState[38] }, - { { 1, 440, TEAM_HORDE }, &BonfireStampedOutState[39] }, - { { 1, 618, TEAM_ALLIANCE }, &BonfireStampedOutState[40] }, - { { 1, 618, TEAM_HORDE }, &BonfireStampedOutState[41] }, - { { 1, 1377, TEAM_ALLIANCE }, &BonfireStampedOutState[42] }, - { { 1, 1377, TEAM_HORDE }, &BonfireStampedOutState[43] }, + { { MAP_KALIMDOR, AREA_DUROTAR, TEAM_HORDE }, &BonfireStampedOutState[23] }, + { { MAP_KALIMDOR, AREA_DUSTWALLOW_MARSH, TEAM_ALLIANCE }, &BonfireStampedOutState[24] }, + { { MAP_KALIMDOR, AREA_DUSTWALLOW_MARSH, TEAM_HORDE }, &BonfireStampedOutState[25] }, + { { MAP_KALIMDOR, AREA_THE_BARRENS, TEAM_HORDE }, &BonfireStampedOutState[26] }, + { { MAP_KALIMDOR, AREA_TELDRASSIL, TEAM_ALLIANCE }, &BonfireStampedOutState[27] }, + { { MAP_KALIMDOR, AREA_DARKSHORE, TEAM_ALLIANCE }, &BonfireStampedOutState[28] }, + { { MAP_KALIMDOR, AREA_MULGORE, TEAM_HORDE }, &BonfireStampedOutState[29] }, + { { MAP_KALIMDOR, AREA_ASHENVALE, TEAM_ALLIANCE }, &BonfireStampedOutState[30] }, + { { MAP_KALIMDOR, AREA_ASHENVALE, TEAM_HORDE }, &BonfireStampedOutState[31] }, + { { MAP_KALIMDOR, AREA_FERALAS, TEAM_ALLIANCE }, &BonfireStampedOutState[32] }, + { { MAP_KALIMDOR, AREA_FERALAS, TEAM_HORDE }, &BonfireStampedOutState[33] }, + { { MAP_KALIMDOR, AREA_THOUSAND_NEEDLES, TEAM_HORDE }, &BonfireStampedOutState[34] }, + { { MAP_KALIMDOR, AREA_DESOLACE, TEAM_ALLIANCE }, &BonfireStampedOutState[35] }, + { { MAP_KALIMDOR, AREA_DESOLACE, TEAM_HORDE }, &BonfireStampedOutState[36] }, + { { MAP_KALIMDOR, AREA_STONETALON_MOUNTAINS, TEAM_HORDE }, &BonfireStampedOutState[37] }, + { { MAP_KALIMDOR, AREA_TANARIS, TEAM_ALLIANCE }, &BonfireStampedOutState[38] }, + { { MAP_KALIMDOR, AREA_TANARIS, TEAM_HORDE }, &BonfireStampedOutState[39] }, + { { MAP_KALIMDOR, AREA_WINTERSPRING, TEAM_ALLIANCE }, &BonfireStampedOutState[40] }, + { { MAP_KALIMDOR, AREA_WINTERSPRING, TEAM_HORDE }, &BonfireStampedOutState[41] }, + { { MAP_KALIMDOR, AREA_SILITHUS, TEAM_ALLIANCE }, &BonfireStampedOutState[42] }, + { { MAP_KALIMDOR, AREA_SILITHUS, TEAM_HORDE }, &BonfireStampedOutState[43] }, -// Map 530 - { { 530, 3430, TEAM_HORDE }, &BonfireStampedOutState[44] }, - { { 530, 3433, TEAM_HORDE }, &BonfireStampedOutState[45] }, - { { 530, 3483, TEAM_ALLIANCE }, &BonfireStampedOutState[46] }, - { { 530, 3483, TEAM_HORDE }, &BonfireStampedOutState[47] }, - { { 530, 3518, TEAM_ALLIANCE }, &BonfireStampedOutState[48] }, - { { 530, 3518, TEAM_HORDE }, &BonfireStampedOutState[49] }, - { { 530, 3519, TEAM_ALLIANCE }, &BonfireStampedOutState[50] }, - { { 530, 3519, TEAM_HORDE }, &BonfireStampedOutState[51] }, - { { 530, 3520, TEAM_ALLIANCE }, &BonfireStampedOutState[52] }, - { { 530, 3520, TEAM_HORDE }, &BonfireStampedOutState[53] }, - { { 530, 3521, TEAM_ALLIANCE }, &BonfireStampedOutState[54] }, - { { 530, 3521, TEAM_HORDE }, &BonfireStampedOutState[55] }, - { { 530, 3522, TEAM_ALLIANCE }, &BonfireStampedOutState[56] }, - { { 530, 3522, TEAM_HORDE }, &BonfireStampedOutState[57] }, - { { 530, 3523, TEAM_ALLIANCE }, &BonfireStampedOutState[58] }, - { { 530, 3523, TEAM_HORDE }, &BonfireStampedOutState[59] }, - { { 530, 3524, TEAM_ALLIANCE }, &BonfireStampedOutState[60] }, - { { 530, 3525, TEAM_ALLIANCE }, &BonfireStampedOutState[61] }, + { { MAP_OUTLAND, AREA_EVERSONG_WOODS, TEAM_HORDE }, &BonfireStampedOutState[44] }, + { { MAP_OUTLAND, AREA_GHOSTLANDS, TEAM_HORDE }, &BonfireStampedOutState[45] }, + { { MAP_OUTLAND, AREA_HELLFIRE_PENINSULA, TEAM_ALLIANCE }, &BonfireStampedOutState[46] }, + { { MAP_OUTLAND, AREA_HELLFIRE_PENINSULA, TEAM_HORDE }, &BonfireStampedOutState[47] }, + { { MAP_OUTLAND, AREA_NAGRAND, TEAM_ALLIANCE }, &BonfireStampedOutState[48] }, + { { MAP_OUTLAND, AREA_NAGRAND, TEAM_HORDE }, &BonfireStampedOutState[49] }, + { { MAP_OUTLAND, AREA_TEROKKAR_FOREST, TEAM_ALLIANCE }, &BonfireStampedOutState[50] }, + { { MAP_OUTLAND, AREA_TEROKKAR_FOREST, TEAM_HORDE }, &BonfireStampedOutState[51] }, + { { MAP_OUTLAND, AREA_SHADOWMOON_VALLEY, TEAM_ALLIANCE }, &BonfireStampedOutState[52] }, + { { MAP_OUTLAND, AREA_SHADOWMOON_VALLEY, TEAM_HORDE }, &BonfireStampedOutState[53] }, + { { MAP_OUTLAND, AREA_ZANGARMARSH, TEAM_ALLIANCE }, &BonfireStampedOutState[54] }, + { { MAP_OUTLAND, AREA_ZANGARMARSH, TEAM_HORDE }, &BonfireStampedOutState[55] }, + { { MAP_OUTLAND, AREA_BLADES_EDGE_MOUNTAINS, TEAM_ALLIANCE }, &BonfireStampedOutState[56] }, + { { MAP_OUTLAND, AREA_BLADES_EDGE_MOUNTAINS, TEAM_HORDE }, &BonfireStampedOutState[57] }, + { { MAP_OUTLAND, AREA_NETHERSTORM, TEAM_ALLIANCE }, &BonfireStampedOutState[58] }, + { { MAP_OUTLAND, AREA_NETHERSTORM, TEAM_HORDE }, &BonfireStampedOutState[59] }, + { { MAP_OUTLAND, AREA_AZUREMYST_ISLE, TEAM_ALLIANCE }, &BonfireStampedOutState[60] }, + { { MAP_OUTLAND, AREA_BLOODMYST_ISLE, TEAM_ALLIANCE }, &BonfireStampedOutState[61] }, -// Map 571 - { { 571, 65, TEAM_ALLIANCE }, &BonfireStampedOutState[62] }, - { { 571, 65, TEAM_HORDE }, &BonfireStampedOutState[63] }, - { { 571, 66, TEAM_ALLIANCE }, &BonfireStampedOutState[64] }, - { { 571, 66, TEAM_HORDE }, &BonfireStampedOutState[65] }, - { { 571, 67, TEAM_ALLIANCE }, &BonfireStampedOutState[66] }, - { { 571, 67, TEAM_HORDE }, &BonfireStampedOutState[67] }, - { { 571, 394, TEAM_ALLIANCE }, &BonfireStampedOutState[68] }, - { { 571, 394, TEAM_HORDE }, &BonfireStampedOutState[69] }, - { { 571, 495, TEAM_ALLIANCE }, &BonfireStampedOutState[70] }, - { { 571, 495, TEAM_HORDE }, &BonfireStampedOutState[71] }, - { { 571, 2817, TEAM_ALLIANCE }, &BonfireStampedOutState[72] }, - { { 571, 2817, TEAM_HORDE }, &BonfireStampedOutState[73] }, - { { 571, 3537, TEAM_ALLIANCE }, &BonfireStampedOutState[74] }, - { { 571, 3537, TEAM_HORDE }, &BonfireStampedOutState[75] }, - { { 571, 3711, TEAM_ALLIANCE }, &BonfireStampedOutState[76] }, - { { 571, 3711, TEAM_HORDE }, &BonfireStampedOutState[77] }, + { { MAP_NORTHREND, AREA_DRAGONBLIGHT, TEAM_ALLIANCE }, &BonfireStampedOutState[62] }, + { { MAP_NORTHREND, AREA_DRAGONBLIGHT, TEAM_HORDE }, &BonfireStampedOutState[63] }, + { { MAP_NORTHREND, AREA_ZUL_DRAK, TEAM_ALLIANCE }, &BonfireStampedOutState[64] }, + { { MAP_NORTHREND, AREA_ZUL_DRAK, TEAM_HORDE }, &BonfireStampedOutState[65] }, + { { MAP_NORTHREND, AREA_THE_STORM_PEAKS, TEAM_ALLIANCE }, &BonfireStampedOutState[66] }, + { { MAP_NORTHREND, AREA_THE_STORM_PEAKS, TEAM_HORDE }, &BonfireStampedOutState[67] }, + { { MAP_NORTHREND, AREA_GRIZZLY_HILLS, TEAM_ALLIANCE }, &BonfireStampedOutState[68] }, + { { MAP_NORTHREND, AREA_GRIZZLY_HILLS, TEAM_HORDE }, &BonfireStampedOutState[69] }, + { { MAP_NORTHREND, AREA_HOWLING_FJORD, TEAM_ALLIANCE }, &BonfireStampedOutState[70] }, + { { MAP_NORTHREND, AREA_HOWLING_FJORD, TEAM_HORDE }, &BonfireStampedOutState[71] }, + { { MAP_NORTHREND, AREA_CRYSTALSONG_FOREST, TEAM_ALLIANCE }, &BonfireStampedOutState[72] }, + { { MAP_NORTHREND, AREA_CRYSTALSONG_FOREST, TEAM_HORDE }, &BonfireStampedOutState[73] }, + { { MAP_NORTHREND, AREA_BOREAN_TUNDRA, TEAM_ALLIANCE }, &BonfireStampedOutState[74] }, + { { MAP_NORTHREND, AREA_BOREAN_TUNDRA, TEAM_HORDE }, &BonfireStampedOutState[75] }, + { { MAP_NORTHREND, AREA_SHOLAZAR_BASIN, TEAM_ALLIANCE }, &BonfireStampedOutState[76] }, + { { MAP_NORTHREND, AREA_SHOLAZAR_BASIN, TEAM_HORDE }, &BonfireStampedOutState[77] }, }; uint32 const GoBonfireAlliance[COUNT_GO_BONFIRE_ALLIANCE] = { 187564, 187914, 187916, 187917, 187919, 187920, 187921, 187922, 187923, 187924, 187925, 187926, 187927, 187928, 187929, 187930, 187931, 187932, 187933, 187934, 187935, 187936, 187937, 187938, 187939, 187940, 187941, 187942, 187943, 187944, 187945, 187946, 194032, 194035, 194036, 194038, 194040, 194044, 194045, 194049 }; @@ -1254,22 +1251,22 @@ class spell_midsummer_summon_ahune_lieutenant : public SpellScript switch (zoneId) { - case 331: // Ashenvale + case AREA_ASHENVALE: npcEntry = 26116; // Frostwave Lieutenant break; - case 405: // Desolace + case AREA_DESOLACE: npcEntry = 26178; // Hailstone Lieutenant break; - case 33: // Stranglethorn Vale + case AREA_STRANGLETHORN_VALE: npcEntry = 26204; // Chillwind Lieutenant break; - case 51: // Searing Gorge + case AREA_SEARING_GORGE: npcEntry = 26214; // Frigid Lieutenant break; - case 1377: // Silithus + case AREA_SILITHUS: npcEntry = 26215; // Glacial Lieutenant break; - case 3483: // Hellfire Peninsula + case AREA_HELLFIRE_PENINSULA: npcEntry = 26216; // Glacial Templar break; } diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp index 3a3d7d6ff..26741ddae 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp @@ -22,7 +22,7 @@ class instance_blackfathom_deeps : public InstanceMapScript { public: - instance_blackfathom_deeps() : InstanceMapScript("instance_blackfathom_deeps", 48) { } + instance_blackfathom_deeps() : InstanceMapScript("instance_blackfathom_deeps", MAP_BLACKFATHOM_DEEPS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index 91de56489..69eaa77ea 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -67,7 +67,7 @@ public: }).Schedule(25s, 32s, [this](TaskContext context) { Talk(SAY_SLEEP); - DoCastRandomTarget(SPELL_SLEEP, 1, 0.0f, true, false, false); + DoCastRandomTarget(SPELL_SLEEP, 0, 0.0f, true, false, false); context.Repeat(35s, 48s); }).Schedule(30s, 48s, [this](TaskContext context) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h index f18773262..021d59b75 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h @@ -139,8 +139,6 @@ enum HyjalMisc CONTEXT_GROUP_WAVES = 1, - AREA_NORDRASSIL = 3710, - SPELL_ETERNAL_SILENCE = 42201, GUID_GAIN_SOUL_CHARGE_PLAYER = 1 diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp index e28cb85d1..1803000b9 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "Chat.h" #include "InstanceMapScript.h" #include "InstanceScript.h" @@ -72,7 +73,7 @@ Milliseconds hyjalNightElfWaveTimers[1][MAX_WAVES_NIGHT_ELF] class instance_hyjal : public InstanceMapScript { public: - instance_hyjal() : InstanceMapScript("instance_hyjal", 534) { } + instance_hyjal() : InstanceMapScript("instance_hyjal", MAP_THE_BATTLE_FOR_MOUNT_HYJAL) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 511a6c020..b9b8cef94 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -955,7 +955,7 @@ public: eventInRun = false; ScheduleNextEvent(currentEvent, 0); break; - //After waypoint 23 + // After waypoint 23 case EVENT_ACTION_PHASE3+3: SetRun(true); if (Creature* cr = GetEventNpc(NPC_CITY_MAN3)) @@ -971,10 +971,12 @@ public: cr->AI()->Talk(SAY_PHASE305); ScheduleNextEvent(currentEvent, 1000); break; + // Trio citizen transformation right as we enter Town Hall case EVENT_ACTION_PHASE3+6: if (Creature* cr = GetEventNpc(NPC_CITY_MAN)) { cr->UpdateEntry(NPC_INFINITE_HUNTER, nullptr, false); + cr->SetFullHealth(); cr->SetImmuneToAll(true); cr->SetReactState(REACT_PASSIVE); } @@ -984,6 +986,7 @@ public: if (Creature* cr = GetEventNpc(NPC_CITY_MAN4)) { cr->UpdateEntry(NPC_INFINITE_AGENT, nullptr, false); + cr->SetFullHealth(); cr->SetImmuneToAll(true); cr->SetReactState(REACT_PASSIVE); } @@ -993,18 +996,19 @@ public: if (Creature* cr = GetEventNpc(NPC_CITY_MAN3)) { cr->UpdateEntry(NPC_INFINITE_ADVERSARY, nullptr, false); + cr->SetFullHealth(); cr->SetReactState(REACT_AGGRESSIVE); cr->SetInCombatWithZone(); cr->AddThreat(me, 0.0f); } - if (Creature* cr = GetEventNpc(NPC_INFINITE_AGENT)) // it is infinite agent now :) + if (Creature* cr = GetEventNpc(NPC_INFINITE_AGENT)) { cr->SetImmuneToAll(false); cr->SetReactState(REACT_AGGRESSIVE); cr->SetInCombatWithZone(); cr->AddThreat(me, 0.0f); } - if (Creature* cr = GetEventNpc(NPC_INFINITE_HUNTER)) // it is infinite hunter now :) + if (Creature* cr = GetEventNpc(NPC_INFINITE_HUNTER)) { cr->SetImmuneToAll(false); cr->SetReactState(REACT_AGGRESSIVE); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp index 700b69eaf..961ec2c7b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp @@ -29,7 +29,7 @@ class instance_culling_of_stratholme : public InstanceMapScript { public: - instance_culling_of_stratholme() : InstanceMapScript("instance_culling_of_stratholme", 595) { } + instance_culling_of_stratholme() : InstanceMapScript("instance_culling_of_stratholme", MAP_THE_CULLING_OF_STRATHOLME) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp index a00d4276c..16ad3de36 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp @@ -81,7 +81,7 @@ struct boss_lieutenant_drake : public BossAI context.Repeat(25s); }).Schedule(1s, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 40.0f)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, false, false)) { DoCast(target, SPELL_EXPLODING_SHOT); } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp index 95df71987..6cb2b46da 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp @@ -41,7 +41,7 @@ const Position thrallPositions[THRALL_POSITIONS_COUNT] = class instance_old_hillsbrad : public InstanceMapScript { public: - instance_old_hillsbrad() : InstanceMapScript("instance_old_hillsbrad", 560) { } + instance_old_hillsbrad() : InstanceMapScript("instance_old_hillsbrad", MAP_THE_ESCAPE_FROM_DURNHOLDE) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index 78a0dbbdc..21f51ca78 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -38,7 +38,7 @@ ObjectData const creatureData[] = class instance_the_black_morass : public InstanceMapScript { public: - instance_the_black_morass() : InstanceMapScript("instance_the_black_morass", 269) { } + instance_the_black_morass() : InstanceMapScript("instance_the_black_morass", MAP_OPENING_OF_THE_DARK_PORTAL) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp index 247a414df..398bc8764 100644 --- a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp +++ b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp @@ -23,7 +23,7 @@ class instance_dire_maul : public InstanceMapScript { public: - instance_dire_maul() : InstanceMapScript(DMScriptName, 429) { } + instance_dire_maul() : InstanceMapScript(DMScriptName, MAP_DIRE_MAUL) { } struct instance_dire_maul_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp index 9e4f79b38..07df88c2a 100644 --- a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp @@ -22,7 +22,7 @@ class instance_maraudon : public InstanceMapScript { public: - instance_maraudon() : InstanceMapScript("instance_maraudon", 349) { } + instance_maraudon() : InstanceMapScript("instance_maraudon", MAP_MARAUDON) { } struct instance_maraudon_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index bc8a7c609..a6992ec04 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -28,7 +28,7 @@ ObjectData const creatureData[] = class instance_onyxias_lair : public InstanceMapScript { public: - instance_onyxias_lair() : InstanceMapScript("instance_onyxias_lair", 249) { } + instance_onyxias_lair() : InstanceMapScript("instance_onyxias_lair", MAP_ONYXIAS_LAIR) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp b/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp index dd68aa85a..1d984fb6f 100644 --- a/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp +++ b/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp @@ -21,7 +21,7 @@ class instance_ragefire_chasm : public InstanceMapScript { public: - instance_ragefire_chasm() : InstanceMapScript("instance_ragefire_chasm", 389) { } + instance_ragefire_chasm() : InstanceMapScript("instance_ragefire_chasm", MAP_RAGEFIRE_CHASM) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp index caa4e8f8e..000a856b5 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp @@ -23,7 +23,7 @@ class instance_razorfen_downs : public InstanceMapScript { public: - instance_razorfen_downs() : InstanceMapScript("instance_razorfen_downs", 129) { } + instance_razorfen_downs() : InstanceMapScript("instance_razorfen_downs", MAP_RAZORFEN_DOWNS) { } struct instance_razorfen_downs_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp index 6d4c4e647..d85eb839c 100644 --- a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp +++ b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp @@ -21,7 +21,7 @@ class instance_razorfen_kraul : public InstanceMapScript { public: - instance_razorfen_kraul() : InstanceMapScript("instance_razorfen_kraul", 47) { } + instance_razorfen_kraul() : InstanceMapScript("instance_razorfen_kraul", MAP_RAZORFEN_KRAUL) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp index 98b2b1e87..5965f580d 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp @@ -57,7 +57,7 @@ struct boss_kurinnaxx : public BossAI context.Repeat(8s, 10s); }).Schedule(5s, 15s, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.f, true, false)) { target->CastSpell(target, SPELL_SAND_TRAP, true, nullptr, nullptr, me->GetGUID()); } diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp index 40d4b02c4..d8cbc4261 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp @@ -67,7 +67,7 @@ std::array RajaxxWavesData[] = class instance_ruins_of_ahnqiraj : public InstanceMapScript { public: - instance_ruins_of_ahnqiraj() : InstanceMapScript("instance_ruins_of_ahnqiraj", 509) { } + instance_ruins_of_ahnqiraj() : InstanceMapScript("instance_ruins_of_ahnqiraj", MAP_RUINS_OF_AHN_QIRAJ) { } struct instance_ruins_of_ahnqiraj_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.cpp index 06bf51b24..8ff445add 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.cpp @@ -50,16 +50,10 @@ struct npc_hivezara_stinger : public ScriptedAI scheduler.Schedule(5s, [this](TaskContext context) { - Unit* target = SelectTarget(SelectTargetMethod::Random, 1, [&](Unit* u) - { - return u && !u->IsPet() && u->IsWithinDist2d(me, 20.f) && u->HasAura(SPELL_HIVEZARA_CATALYST); - }); + Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f, true, false, SPELL_HIVEZARA_CATALYST); if (!target) { - target = SelectTarget(SelectTargetMethod::Random, 1, [&](Unit* u) - { - return u && !u->IsPet() && u->IsWithinDist2d(me, 20.f); - }); + target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f, true, false); } if (target) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index b07aca899..23d3d321d 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -98,7 +98,7 @@ struct boss_fankriss : public BossAI }) .Schedule(15s, 20s, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false)) { uint32 spellId = Acore::Containers::SelectRandomContainerElement(entangleSpells); DoCast(target, spellId); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 4b4277224..42bb906da 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -115,7 +115,7 @@ struct boss_sartura : public BossAI switch (eventId) { case EVENT_SARTURA_WHIRLWIND: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false)) { me->GetThreatMgr().ResetAllThreat(); me->AddThreat(target, 1000.0f); @@ -199,7 +199,7 @@ struct npc_sartura_royal_guard : public ScriptedAI switch (eventid) { case EVENT_GUARD_WHIRLWIND: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false)) { me->GetThreatMgr().ResetAllThreat(); me->AddThreat(target, 1000.0f); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp index 79e5542d0..e4069c4e2 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -50,7 +50,7 @@ DoorData const doorData[] = class instance_temple_of_ahnqiraj : public InstanceMapScript { public: - instance_temple_of_ahnqiraj() : InstanceMapScript("instance_temple_of_ahnqiraj", 531) { } + instance_temple_of_ahnqiraj() : InstanceMapScript("instance_temple_of_ahnqiraj", MAP_AHN_QIRAJ_TEMPLE) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp index 6ed2e8fe2..2cc53521d 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp @@ -98,7 +98,7 @@ struct npc_anubisath_defender : public ScriptedAI { scheduler.Schedule(6s, 10s, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, 0.0f, false, false)) DoCast(target, SPELL_PLAGUE, true); context.Repeat(6s, 10s); }); diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp index 0fddc3be9..7cfa7177a 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp @@ -22,7 +22,7 @@ class instance_wailing_caverns : public InstanceMapScript { public: - instance_wailing_caverns() : InstanceMapScript("instance_wailing_caverns", 43) { } + instance_wailing_caverns() : InstanceMapScript("instance_wailing_caverns", MAP_WAILING_CAVERNS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp index 7d6330b16..ff983a781 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp @@ -106,7 +106,7 @@ static PyramidEventData pyramidSpawns[pyramidSpawnTotal] = class instance_zulfarrak : public InstanceMapScript { public: - instance_zulfarrak() : InstanceMapScript(ZFScriptName, 209) {} + instance_zulfarrak() : InstanceMapScript(ZFScriptName, MAP_ZUL_FARRAK) {} InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp index 886759de5..8646a412b 100644 --- a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp @@ -27,6 +27,7 @@ npc_shenthul npc_thrall_warchief EndContentData */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" @@ -148,11 +149,6 @@ enum ThrallWarchief : uint32 SAY_THRALL_ON_QUEST_REWARD_0 = 0, SAY_THRALL_ON_QUEST_REWARD_1 = 1, - AREA_ORGRIMMAR = 1637, - AREA_RAZOR_HILL = 362, - AREA_CAMP_TAURAJO = 378, - AREA_CROSSROADS = 380, - GO_UNADORNED_SPIKE = 175787, // What the Wind Carries (ID: 6566) @@ -279,7 +275,7 @@ public: { if (player->IsAlive() && !player->IsGameMaster()) { - if (player->GetAreaId() == AREA_CROSSROADS) + if (player->GetAreaId() == AREA_THE_CROSSROADS) { player->CastSpell(player, SPELL_WARCHIEF_BLESSING, true); } diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index 477bbea29..8f75c6dd4 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -31,6 +31,7 @@ npc_twiggy_flathead npc_wizzlecrank_shredder EndContentData */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" @@ -52,8 +53,7 @@ enum Gilthares SAY_GIL_SWEET = 6, SAY_GIL_FREED = 7, - QUEST_FREE_FROM_HOLD = 898, - AREA_MERCHANT_COAST = 391 + QUEST_FREE_FROM_HOLD = 898 }; class npc_gilthares : public CreatureScript @@ -124,7 +124,7 @@ public: return; //only aggro text if not player and only in this area - if (!who->IsPlayer() && me->GetAreaId() == AREA_MERCHANT_COAST) + if (!who->IsPlayer() && me->GetAreaId() == AREA_THE_MERCHANT_COAST) { //appears to be pretty much random (possible only if escorter not in combat with who yet?) Talk(SAY_GIL_AGGRO, who); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp index 0fdcc10c9..9de3f63be 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp @@ -49,7 +49,7 @@ BossBoundaryData const boundaries = class instance_azjol_nerub : public InstanceMapScript { public: - instance_azjol_nerub() : InstanceMapScript("instance_azjol_nerub", 601) { } + instance_azjol_nerub() : InstanceMapScript("instance_azjol_nerub", MAP_AZJOL_NERUB) { } struct instance_azjol_nerub_InstanceScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp index 8b7264421..0110b5680 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp @@ -41,7 +41,7 @@ DoorData const doorData[] = class instance_ahnkahet : public InstanceMapScript { public: - instance_ahnkahet() : InstanceMapScript(AhnKahetScriptName, 619) { } + instance_ahnkahet() : InstanceMapScript(AhnKahetScriptName, MAP_AHN_KAHET_THE_OLD_KINGDOM) { } struct instance_ahnkahet_InstanceScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index 6428031cf..e0c14e515 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -852,7 +852,7 @@ struct boss_sartharion_dragonAI : public BossAI if (isCalledBySartharion) { - if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 500, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, 500, true, false)) { AttackStart(target); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp index b8b709239..4dafd5e41 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp @@ -30,7 +30,7 @@ BossBoundaryData const boundaries = class instance_obsidian_sanctum : public InstanceMapScript { public: - instance_obsidian_sanctum() : InstanceMapScript("instance_obsidian_sanctum", 615) { } + instance_obsidian_sanctum() : InstanceMapScript("instance_obsidian_sanctum", MAP_THE_OBSIDIAN_SANCTUM) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index a991d0d91..6ff00560d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "GameObjectAI.h" #include "MapMgr.h" @@ -187,7 +188,7 @@ public: bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override { InstanceScript* instance = _owner->GetInstanceScript(); - if (!instance || _owner->GetMapId() != 724) + if (!instance || _owner->GetMapId() != MAP_THE_RUBY_SANCTUM) return true; if (instance->GetBossState(DATA_HALION) != IN_PROGRESS) @@ -396,7 +397,7 @@ public: events.ScheduleEvent(EVENT_METEOR_STRIKE, 40s); break; case EVENT_FIERY_COMBUSTION: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, true, -SPELL_TWILIGHT_REALM)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false, -SPELL_TWILIGHT_REALM)) me->CastSpell(target, SPELL_FIERY_COMBUSTION, false); events.ScheduleEvent(EVENT_FIERY_COMBUSTION, 25s); break; @@ -539,7 +540,7 @@ public: _events.ScheduleEvent(EVENT_BREATH, 10s, 12s); break; case EVENT_SOUL_CONSUMPTION: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, true, SPELL_TWILIGHT_REALM)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false, SPELL_TWILIGHT_REALM)) me->CastSpell(target, SPELL_SOUL_CONSUMPTION, false); _events.ScheduleEvent(EVENT_SOUL_CONSUMPTION, 20s); break; @@ -950,7 +951,7 @@ public: if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) return; - if (!GetTarget()->GetInstanceScript() || !GetTarget()->GetInstanceScript()->IsEncounterInProgress() || GetTarget()->GetMapId() != 724) + if (!GetTarget()->GetInstanceScript() || !GetTarget()->GetInstanceScript()->IsEncounterInProgress() || GetTarget()->GetMapId() != MAP_THE_RUBY_SANCTUM) return; GetTarget()->CastCustomSpell(_summonSpellId, SPELLVALUE_BASE_POINT1, GetAura()->GetStackAmount(), GetTarget(), TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID()); diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index 54e34f5e4..1ee47c8c2 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -49,7 +49,7 @@ DoorData const doorData[] = class instance_ruby_sanctum : public InstanceMapScript { public: - instance_ruby_sanctum() : InstanceMapScript("instance_ruby_sanctum", 724) { } + instance_ruby_sanctum() : InstanceMapScript("instance_ruby_sanctum", MAP_THE_RUBY_SANCTUM) { } struct instance_ruby_sanctum_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp index b2b286197..195d626a7 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp @@ -41,7 +41,7 @@ class Group; class instance_trial_of_the_champion : public InstanceMapScript { public: - instance_trial_of_the_champion() : InstanceMapScript("instance_trial_of_the_champion", 650) { } + instance_trial_of_the_champion() : InstanceMapScript("instance_trial_of_the_champion", MAP_TRIAL_OF_THE_CHAMPION) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp index 26704ed92..7743fda48 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp @@ -28,7 +28,7 @@ std::map validDedicatedInsanityItems; class instance_trial_of_the_crusader : public InstanceMapScript { public: - instance_trial_of_the_crusader() : InstanceMapScript("instance_trial_of_the_crusader", 649) { } + instance_trial_of_the_crusader() : InstanceMapScript("instance_trial_of_the_crusader", MAP_TRIAL_OF_THE_CRUSADER) { } struct instance_trial_of_the_crusader_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp index 8e872f2ec..a8f22adf8 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp @@ -34,7 +34,7 @@ DoorData const doorData[] = class instance_drak_tharon_keep : public InstanceMapScript { public: - instance_drak_tharon_keep() : InstanceMapScript("instance_drak_tharon_keep", 600) { } + instance_drak_tharon_keep() : InstanceMapScript("instance_drak_tharon_keep", MAP_DRAK_THARON_KEEP) { } struct instance_drak_tharon_keep_InstanceScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp index 812e2f3e5..a3e7c184a 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp @@ -30,7 +30,7 @@ BossBoundaryData const boundaries = class instance_forge_of_souls : public InstanceMapScript { public: - instance_forge_of_souls() : InstanceMapScript("instance_forge_of_souls", 632) { } + instance_forge_of_souls() : InstanceMapScript("instance_forge_of_souls", MAP_THE_FORGE_OF_SOULS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index 349b17b9f..5b1e99ab3 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -130,7 +130,7 @@ private: class instance_halls_of_reflection : public InstanceMapScript { public: - instance_halls_of_reflection() : InstanceMapScript("instance_halls_of_reflection", 668) { } + instance_halls_of_reflection() : InstanceMapScript("instance_halls_of_reflection", MAP_HALLS_OF_REFLECTION) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp index 337415ebb..5d5d375d4 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp @@ -25,7 +25,7 @@ class instance_pit_of_saron : public InstanceMapScript { public: - instance_pit_of_saron() : InstanceMapScript("instance_pit_of_saron", 658) { } + instance_pit_of_saron() : InstanceMapScript("instance_pit_of_saron", MAP_PIT_OF_SARON) { } struct instance_pit_of_saron_InstanceScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index 45b3029a2..5a4dbcd2c 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -123,7 +123,7 @@ public: events.ScheduleEvent(EVENT_ECK_SPIT, 10s); break; case EVENT_ECK_SPRING: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 30.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true, false)) { me->GetThreatMgr().ResetAllThreat(); me->AddThreat(target, 500.0f); diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index 4d202f7b5..2a56ce887 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -207,7 +207,7 @@ public: return; } events.ScheduleEvent(EVENT_IMPALING_CHARGE, 21s); - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false)) { me->CastSpell(target, SPELL_IMPALING_CHARGE, false); impaledList.insert(target->GetGUID()); diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp index 5111d8799..1a603523d 100644 --- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp +++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp @@ -32,7 +32,7 @@ DoorData const doorData[] = class instance_gundrak : public InstanceMapScript { public: - instance_gundrak() : InstanceMapScript("instance_gundrak", 604) { } + instance_gundrak() : InstanceMapScript("instance_gundrak", MAP_GUNDRAK) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 7b47377a2..5deccbc0b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -16,6 +16,7 @@ */ #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "CreatureScript.h" #include "GridNotifiers.h" #include "ObjectMgr.h" @@ -798,7 +799,7 @@ class spell_blood_queen_vampiric_bite : public SpellScript SpellCastResult CheckTarget() { - if (GetExplTargetUnit()->GetMapId() != 631) + if (GetExplTargetUnit()->GetMapId() != MAP_ICECROWN_CITADEL) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; if (IsVampire(GetExplTargetUnit())) { @@ -819,7 +820,7 @@ class spell_blood_queen_vampiric_bite : public SpellScript return; } - if (!GetCaster()->IsPlayer() || GetCaster()->GetMapId() != 631) + if (!GetCaster()->IsPlayer() || GetCaster()->GetMapId() != MAP_ICECROWN_CITADEL) return; InstanceScript* instance = GetCaster()->GetInstanceScript(); if (!instance || instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) != IN_PROGRESS) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 7b19478d4..f0172727b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -358,7 +358,7 @@ public: void JustSummoned(Creature* summon) override { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false)) summon->AI()->AttackStart(target); //if (IsHeroic()) @@ -468,7 +468,7 @@ public: switch (action) { case ACTION_MARK_OF_THE_FALLEN_CHAMPION: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true, true, -SPELL_MARK_OF_THE_FALLEN_CHAMPION)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false, -SPELL_MARK_OF_THE_FALLEN_CHAMPION)) { ++_fallenChampionCastCount; me->CastSpell(target, SPELL_MARK_OF_THE_FALLEN_CHAMPION, false); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 7f743408d..51969299b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -16,6 +16,7 @@ */ #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "Config.h" #include "CreatureScript.h" #include "CreatureTextMgr.h" diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index ef04e7e5b..54b279510 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -857,7 +857,7 @@ public: events.Repeat(9s, 13s); break; case EVENT_SPELL_ADHERENT_CURSE_OF_TORPOR: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) me->CastSpell(target, SPELL_CURSE_OF_TORPOR, false); events.Repeat(9s, 13s); break; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index 1f26e1b79..7faa41fd2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -482,7 +482,7 @@ class spell_marrowgar_coldflame : public SpellScript void SelectTarget(std::list& targets) { targets.clear(); - Unit* target = GetCaster()->GetAI()->SelectTarget(SelectTargetMethod::Random, 1, -1.0f, true,true, -SPELL_IMPALED); // -1.0f as it takes into account object size + Unit* target = GetCaster()->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, -1.0f, true, false, -SPELL_IMPALED); // -1.0f as it takes into account object size if (!target) target = GetCaster()->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true); // if only tank or noone outside of boss' model if (!target) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 64852ccb6..cb93c1bf6 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -209,7 +209,7 @@ public: bool operator()(Unit const* target) const { - if (!me || !target || !target->IsPlayer()) + if (!me || !target || !target->IsPlayer() || target == me->GetThreatMgr().GetCurrentVictim()) return false; if (me->IsWithinCombatRange(target, 7.0f)) @@ -640,7 +640,7 @@ public: } else { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, MalleableGooSelector(me))) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, MalleableGooSelector(me))) { Talk(EMOTE_MALLEABLE_GOO); me->CastSpell(target, SPELL_MALLEABLE_GOO, true); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 5616b0e2d..e07e75cb4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -16,6 +16,7 @@ */ #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "Cell.h" #include "CellImpl.h" #include "CreatureScript.h" diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 0393ace0c..b39491e89 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -16,6 +16,7 @@ */ #include "icecrown_citadel.h" +#include "AreaDefines.h" #include "AreaTriggerScript.h" #include "Cell.h" #include "CellImpl.h" @@ -627,7 +628,7 @@ public: switch (eventId) { case EVENT_DEATH_PLAGUE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true, true, -SPELL_RECENTLY_INFECTED)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false, -SPELL_RECENTLY_INFECTED)) { Talk(EMOTE_DEATH_PLAGUE_WARNING, target); DoCast(target, SPELL_DEATH_PLAGUE); @@ -1161,7 +1162,7 @@ public: Talk(SAY_SVALNA_AGGRO); break; case EVENT_IMPALING_SPEAR: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true, true, -SPELL_IMPALING_SPEAR)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false, -SPELL_IMPALING_SPEAR)) { DoCast(me, SPELL_AETHER_SHIELD); me->AddAura(70203, me); @@ -1347,7 +1348,7 @@ public: Events.ScheduleEvent(EVENT_ARNATH_SMITE, 4s, 7s); break; case EVENT_ARNATH_DOMINATE_MIND: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true, true, -SPELL_DOMINATE_MIND)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false, -SPELL_DOMINATE_MIND)) DoCast(target, SPELL_DOMINATE_MIND); Events.ScheduleEvent(EVENT_ARNATH_DOMINATE_MIND, 28s, 37s); break; @@ -1425,7 +1426,7 @@ public: Events.ScheduleEvent(EVENT_BRANDON_JUDGEMENT_OF_COMMAND, 8s, 13s); break; case EVENT_BRANDON_HAMMER_OF_BETRAYAL: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 0.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false)) DoCast(target, SPELL_HAMMER_OF_BETRAYAL); Events.ScheduleEvent(EVENT_BRANDON_HAMMER_OF_BETRAYAL, 45s, 60s); break; @@ -1552,12 +1553,12 @@ public: Events.ScheduleEvent(EVENT_RUPERT_FEL_IRON_BOMB, 15s, 20s); break; case EVENT_RUPERT_MACHINE_GUN: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) DoCast(target, SPELL_MACHINE_GUN); Events.ScheduleEvent(EVENT_RUPERT_MACHINE_GUN, 25s, 30s); break; case EVENT_RUPERT_ROCKET_LAUNCH: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) DoCast(target, SPELL_ROCKET_LAUNCH); Events.ScheduleEvent(EVENT_RUPERT_ROCKET_LAUNCH, 10s, 15s); break; @@ -2397,7 +2398,7 @@ class spell_icc_yd_summon_undead : public SpellScript void HandleDummyLaunch(SpellEffIndex /*effIndex*/) { if (Unit* c = GetCaster()) - if (c->GetMapId() == 631) + if (c->GetMapId() == MAP_ICECROWN_CITADEL) for (uint8 i = 0; i < 5; ++i) c->CastSpell(c, 71302, true); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index e77542678..20983aa15 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -565,12 +565,6 @@ enum PutricideEventFlags PUTRICIDE_EVENT_FLAG_TRAP_FINISHED = 8, }; -enum AreaIds -{ - AREA_ICECROWN_CITADEL = 4812, - AREA_THE_FROZEN_THRONE = 4859, -}; - enum ItemIds { ITEM_GOBLIN_ROCKET_PACK = 49278 diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 2e34baf88..18d696e1c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -16,6 +16,7 @@ */ #include "AccountMgr.h" +#include "AreaDefines.h" #include "CreatureTextMgr.h" #include "Group.h" #include "InstanceMapScript.h" @@ -199,7 +200,7 @@ private: class instance_icecrown_citadel : public InstanceMapScript { public: - instance_icecrown_citadel() : InstanceMapScript(ICCScriptName, 631) { } + instance_icecrown_citadel() : InstanceMapScript(ICCScriptName, MAP_ICECROWN_CITADEL) { } struct instance_icecrown_citadel_InstanceMapScript : public InstanceScript { @@ -243,11 +244,11 @@ public: void OnPlayerAreaUpdate(Player* player, uint32 /*oldArea*/, uint32 newArea) override { - if (newArea == 4890 /*Putricide's Laboratory of Alchemical Horrors and Fun*/ || - newArea == 4891 /*The Sanctum of Blood*/ || - newArea == 4889 /*The Frost Queen's Lair*/ || - newArea == 4859 /*The Frozen Throne*/ || - newArea == 4910 /*Frostmourne*/) + if (newArea == AREA_PUTRICIDES_LABORATORY_OF_ALCHEMICAL_HORRORS_AND_FUN || + newArea == AREA_THE_SANCTUM_OF_BLOOD || + newArea == AREA_THE_FROST_QUEENS_LAIR || + newArea == AREA_THE_FROZEN_THRONE || + newArea == AREA_FROSTMOURNE) { player->SendInitWorldStates(player->GetZoneId(), player->GetAreaId()); } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.h b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.h index e621b7d51..7d88305f6 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.h +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.h @@ -161,7 +161,7 @@ public: events.Repeat(20s); break; case EVENT_MUTATING_INJECTION: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, true, -SPELL_MUTATING_INJECTION)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false, -SPELL_MUTATING_INJECTION)) { me->CastSpell(target, SPELL_MUTATING_INJECTION, false); } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.h b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.h index 119b3f4f2..a990a4dde 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.h +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.h @@ -370,7 +370,7 @@ public: events.Repeat(25s); break; case EVENT_FROST_BLAST: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, RAID_MODE(1, 0), 0, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0, true, RAID_MODE(false, true))) { me->CastSpell(target, SPELL_FROST_BLAST, false); } @@ -380,7 +380,7 @@ public: case EVENT_CHAINS: for (uint8 i = 0; i < 3; ++i) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 200, true, true, -SPELL_CHAINS_OF_KELTHUZAD)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 200, true, false, -SPELL_CHAINS_OF_KELTHUZAD)) { me->CastSpell(target, SPELL_CHAINS_OF_KELTHUZAD, true); } diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index f116047d8..894ee5960 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -61,7 +61,7 @@ static constexpr std::array HorsemanDataGroup static WorldLocation const SapphironTeleportPos { - NaxxramasMapId, 3498.300049f, -5349.490234f, 144.968002f, 1.3698910f + MAP_NAXXRAMAS, 3498.300049f, -5349.490234f, 144.968002f, 1.3698910f }; static DoorData const doorData[] @@ -787,7 +787,7 @@ public: void AddSC_instance_naxxramas() { - RegisterInstanceScript(instance_naxxramas, NaxxramasMapId); + RegisterInstanceScript(instance_naxxramas, MAP_NAXXRAMAS); RegisterNaxxramasCreatureAI(npc_mr_bigglesworth); RegisterNaxxramasCreatureAI(npc_living_poison); RegisterNaxxramasCreatureAI(npc_naxxramas_trigger); diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h index b77b124ea..c67b8c215 100644 --- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h +++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h @@ -305,7 +305,6 @@ enum NaxxramasMisc SOUND_SCREAM = 8873 }; -static constexpr uint32 NaxxramasMapId = 533; static constexpr uint8 HeiganEruptSectionCount = 4; static constexpr uint8 HorsemanCount = 4; static constexpr uint8 AbominationKillCountReq = 18; diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp index 6419f3b44..4f4b09b75 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp @@ -36,7 +36,7 @@ bool EoEDrakeEnterVehicleEvent::Execute(uint64 /*eventTime*/, uint32 /*updateTim class instance_eye_of_eternity : public InstanceMapScript { public: - instance_eye_of_eternity() : InstanceMapScript("instance_eye_of_eternity", 616) { } + instance_eye_of_eternity() : InstanceMapScript("instance_eye_of_eternity", MAP_THE_EYE_OF_ETERNITY) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp index f0dd4c766..402b1b6e6 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp @@ -33,7 +33,7 @@ DoorData const doorData[] = class instance_nexus : public InstanceMapScript { public: - instance_nexus() : InstanceMapScript("instance_nexus", 576) { } + instance_nexus() : InstanceMapScript("instance_nexus", MAP_THE_NEXUS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index 55fc7e318..a9d2ca204 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -27,7 +27,7 @@ class instance_oculus : public InstanceMapScript { public: - instance_oculus() : InstanceMapScript("instance_oculus", 578) { } + instance_oculus() : InstanceMapScript("instance_oculus", MAP_THE_OCULUS) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp index b6212a1ac..75954ab04 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp @@ -23,7 +23,7 @@ class instance_halls_of_lightning : public InstanceMapScript { public: - instance_halls_of_lightning() : InstanceMapScript("instance_halls_of_lightning", 602) { } + instance_halls_of_lightning() : InstanceMapScript("instance_halls_of_lightning", MAP_HALLS_OF_LIGHTNING) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp index 968d95126..4a9e61ff3 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp @@ -23,7 +23,7 @@ class instance_halls_of_stone : public InstanceMapScript { public: - instance_halls_of_stone() : InstanceMapScript("instance_halls_of_stone", 599) { } + instance_halls_of_stone() : InstanceMapScript("instance_halls_of_stone", MAP_HALLS_OF_STONE) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index a3869eded..062d95b7b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -16,6 +16,7 @@ */ #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "CellImpl.h" #include "CombatAI.h" #include "CreatureScript.h" @@ -1575,11 +1576,6 @@ class spell_systems_shutdown_aura : public AuraScript class FlameLeviathanPursuedTargetSelector { - enum Area - { - AREA_FORMATION_GROUNDS = 4652, - }; - public: explicit FlameLeviathanPursuedTargetSelector() {}; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index a04be8777..a4351a818 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -17,6 +17,7 @@ #include "AccountMgr.h" #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "BanMgr.h" #include "CreatureScript.h" #include "GameObjectScript.h" @@ -527,7 +528,7 @@ class spell_mark_of_the_faceless_periodic_aura : public AuraScript { if (Unit* caster = GetCaster()) if (Unit* target = GetTarget()) - if (target->GetMapId() == 603) + if (target->GetMapId() == MAP_ULDUAR) { int32 dmg = 5000; caster->CastCustomSpell(target, SPELL_MARK_OF_THE_FACELESS_EFFECT, 0, &dmg, 0, true); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index fd974f452..b318a0920 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -16,6 +16,7 @@ */ #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "CreatureScript.h" #include "PassiveAI.h" #include "Player.h" @@ -1244,7 +1245,7 @@ class spell_hodir_biting_cold_player_aura : public AuraScript { if (Unit* target = GetTarget()) { - if (target->GetMapId() == 603) + if (target->GetMapId() == MAP_ULDUAR) SetDuration(GetMaxDuration()); if (target->HasAura(SPELL_FLASH_FREEZE_TRAPPED_PLAYER)) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 30b7f4fd6..fe0026911 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "GameTime.h" #include "InstanceMapScript.h" @@ -29,7 +30,7 @@ class instance_ulduar : public InstanceMapScript { public: - instance_ulduar() : InstanceMapScript("instance_ulduar", 603) { } + instance_ulduar() : InstanceMapScript("instance_ulduar", MAP_ULDUAR) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { @@ -1091,7 +1092,7 @@ public: if (Creature* algalon = instance->GetCreature(m_uiAlgalonGUID)) algalon->AI()->DoAction(ACTION_FEEDS_ON_TEARS_FAILED); } - else if (unit->IsCreature() && unit->GetAreaId() == 4656 /*Conservatory of Life*/) + else if (unit->IsCreature() && unit->GetAreaId() == AREA_THE_CONSERVATORY_OF_LIFE) { if (GameTime::GetGameTime().count() > (m_conspeedatoryAttempt + DAY)) { diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp index 6425e7360..7f9293a66 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp @@ -33,7 +33,7 @@ ObjectData const creatureData[] = class instance_utgarde_keep : public InstanceMapScript { public: - instance_utgarde_keep() : InstanceMapScript("instance_utgarde_keep", 574) { } + instance_utgarde_keep() : InstanceMapScript("instance_utgarde_keep", MAP_UTGARDE_KEEP) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp index 0b0370310..5a36f5e84 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp @@ -23,7 +23,7 @@ class instance_utgarde_pinnacle : public InstanceMapScript { public: - instance_utgarde_pinnacle() : InstanceMapScript("instance_utgarde_pinnacle", 575) { } + instance_utgarde_pinnacle() : InstanceMapScript("instance_utgarde_pinnacle", MAP_UTGARDE_PINNACLE) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp index aed9965ac..8e3d5372e 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp @@ -143,7 +143,7 @@ class boss_archavon : public CreatureScript events.Repeat(15s); break; case EVENT_CHOKING_CLOUD: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) { DoCast(target, RAID_MODE(SPELL_CRUSHING_LEAP_10, SPELL_CRUSHING_LEAP_25), true); //10y ~ 80y, ignore range } diff --git a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp index f69f5b7f4..a0227350d 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp @@ -34,7 +34,7 @@ class instance_vault_of_archavon : public InstanceMapScript { public: - instance_vault_of_archavon() : InstanceMapScript("instance_vault_of_archavon", 624) { } + instance_vault_of_archavon() : InstanceMapScript("instance_vault_of_archavon", MAP_VAULT_OF_ARCHAVON) { } struct instance_vault_of_archavon_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 1b0ee5f98..382be4be1 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -33,7 +33,7 @@ enum vYells class instance_violet_hold : public InstanceMapScript { public: - instance_violet_hold() : InstanceMapScript("instance_violet_hold", 608) { } + instance_violet_hold() : InstanceMapScript("instance_violet_hold", MAP_VIOLET_HOLD) { } InstanceScript* GetInstanceScript(InstanceMap* pMap) const override { diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index f647e8279..dd015356d 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "PassiveAI.h" #include "Player.h" @@ -2043,7 +2044,6 @@ public: // NPC 25301: Counselor Talbot enum CounselorTalbot { - AREA_LAST_RITES = 4128, SPELL_DEFLECTION = 51009, SPELL_SOUL_BLAST = 50992, SPELL_VAMPIRIC_BOLT = 51016, @@ -2077,7 +2077,7 @@ public: return; } - if (me->GetAreaId() == AREA_LAST_RITES) + if (me->GetAreaId() == AREA_NAXXANAR) { _events.Update(diff); diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index cc217eada..b8c0a0992 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "MoveSplineInit.h" #include "Player.h" @@ -444,9 +445,7 @@ public: void MoveInLineOfSight(Unit* who) override { - // 4395 Dalaran - // 4569 Sewer Exit Pipe - if (!who || !who->IsInWorld()|| who->GetZoneId() != 4395 || who->GetAreaId() == 4569) + if (!who || !who->IsInWorld()|| who->GetZoneId() != AREA_DALARAN || who->GetAreaId() == AREA_SEWER_EXIT_PIPE) return; if (!me->IsWithinDist(who, 5.0f, false)) @@ -501,8 +500,6 @@ public: enum MinigobData { - ZONE_DALARAN = 4395, - SPELL_MANABONKED = 61834, SPELL_TELEPORT_VISUAL = 51347, SPELL_IMPROVED_BLINK = 61995, @@ -539,7 +536,7 @@ struct npc_minigob_manabonk : public ScriptedAI me->GetMap()->DoForAllPlayers([&](Player* player) { - if (player->GetZoneId() == ZONE_DALARAN && !player->IsFlying() && !player->IsMounted() && !player->IsGameMaster()) + if (player->GetZoneId() == AREA_DALARAN && !player->IsFlying() && !player->IsMounted() && !player->IsGameMaster()) playerInDalaranList.push_back(player); }); diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 3cf2d71ef..c94d28e68 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "AreaTriggerScript.h" #include "CellImpl.h" #include "Chat.h" @@ -656,8 +657,7 @@ enum WintergardeGryphon POINT_TAKE_OFF = 2, QUEST_FLIGHT_OF_THE_WINTERGARDE_DEFENDER = 12237, - GO_TEMP_GRYPHON_STATION = 188679, - AREA_WINTERGARDE_KEEP = 4177 + GO_TEMP_GRYPHON_STATION = 188679 }; class npc_wintergarde_gryphon : public VehicleAI diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index c253a499b..1ae98dba7 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CombatAI.h" #include "CreatureScript.h" #include "MoveSplineInit.h" @@ -1469,9 +1470,6 @@ class spell_deliver_gryphon : public SpellScript enum GuardianPavilion { SPELL_TRESPASSER_H = 63987, - AREA_SUNREAVER_PAVILION = 4676, - - AREA_SILVER_COVENANT_PAVILION = 4677, SPELL_TRESPASSER_A = 63986, }; diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index b3317b9df..1eb1e4cc3 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CombatAI.h" #include "CreatureScript.h" #include "Player.h" @@ -801,8 +802,6 @@ enum FreedProtoDrake { NPC_DRAKE = 29709, - AREA_VALLEY_OF_ANCIENT_WINTERS = 4437, - TEXT_EMOTE = 0, SPELL_KILL_CREDIT_PRISONER = 55144, diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h index bcbe6ff25..33903f8ef 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h @@ -25,7 +25,7 @@ const uint32 EP_AllianceBuffs[4] = {11413, 11414, 11415, 1386}; const uint32 EP_HordeBuffs[4] = {30880, 30683, 30682, 29520}; -const uint32 EP_GraveyardZone = 139; +const uint32 EP_GraveyardZone = AREA_EASTERN_PLAGUELANDS; const uint32 EP_GraveyardId = 927; @@ -36,7 +36,12 @@ const uint32 EP_CGT_CM = 17689; const uint32 EP_NPT_CM = 17696; const uint32 EP_PWT_CM = 17698; -const uint32 EPBuffZones[EPBuffZonesNum] = {139, 2017, 2057}; +const uint32 EPBuffZones[EPBuffZonesNum] = +{ + AREA_EASTERN_PLAGUELANDS, + AREA_STRATHOLME, + AREA_SCHOLOMANCE +}; //enum EP_TaxiNodes //{ @@ -76,18 +81,18 @@ enum EP_Towers const go_type EPCapturePoints[EP_TOWER_NUM] = { - {182097, 0, 2574.51f, -4794.89f, 144.704f, -1.45003f, -0.097056f, 0.095578f, -0.656229f, 0.742165f}, - {181899, 0, 3181.08f, -4379.36f, 174.123f, -2.03472f, -0.065392f, 0.119494f, -0.842275f, 0.521553f}, - {182098, 0, 2962.71f, -3042.31f, 154.789f, 2.08426f, -0.074807f, -0.113837f, 0.855928f, 0.49883f}, - {182096, 0, 1860.85f, -3731.23f, 196.716f, -2.53214f, 0.033967f, -0.131914f, 0.944741f, -0.298177f} + {182097, MAP_EASTERN_KINGDOMS, 2574.51f, -4794.89f, 144.704f, -1.45003f, -0.097056f, 0.095578f, -0.656229f, 0.742165f}, + {181899, MAP_EASTERN_KINGDOMS, 3181.08f, -4379.36f, 174.123f, -2.03472f, -0.065392f, 0.119494f, -0.842275f, 0.521553f}, + {182098, MAP_EASTERN_KINGDOMS, 2962.71f, -3042.31f, 154.789f, 2.08426f, -0.074807f, -0.113837f, 0.855928f, 0.49883f}, + {182096, MAP_EASTERN_KINGDOMS, 1860.85f, -3731.23f, 196.716f, -2.53214f, 0.033967f, -0.131914f, 0.944741f, -0.298177f} }; const go_type EPTowerFlags[EP_TOWER_NUM] = { - {182106, 0, 2569.60f, -4772.93f, 115.399f, 2.72271f, 0.0f, 0.0f, 0.978148f, 0.207912f}, - {182106, 0, 3148.17f, -4365.51f, 145.029f, 1.53589f, 0.0f, 0.0f, 0.694658f, 0.71934f}, - {182106, 0, 2992.63f, -3022.95f, 125.593f, 3.03687f, 0.0f, 0.0f, 0.99863f, 0.052336f}, - {182106, 0, 1838.42f, -3703.56f, 167.713f, 0.890118f, 0.0f, 0.0f, 0.430511f, 0.902585f} + {182106, MAP_EASTERN_KINGDOMS, 2569.60f, -4772.93f, 115.399f, 2.72271f, 0.0f, 0.0f, 0.978148f, 0.207912f}, + {182106, MAP_EASTERN_KINGDOMS, 3148.17f, -4365.51f, 145.029f, 1.53589f, 0.0f, 0.0f, 0.694658f, 0.71934f}, + {182106, MAP_EASTERN_KINGDOMS, 2992.63f, -3022.95f, 125.593f, 3.03687f, 0.0f, 0.0f, 0.99863f, 0.052336f}, + {182106, MAP_EASTERN_KINGDOMS, 1838.42f, -3703.56f, 167.713f, 0.890118f, 0.0f, 0.0f, 0.430511f, 0.902585f} }; //const uint32 EPTowerPlayerEnterEvents[EP_TOWER_NUM] = {10691, 10699, 10701, 10705}; @@ -101,20 +106,20 @@ const uint8 EP_EWT_NUM_CREATURES = 5; // should be spawned at EWT and follow a path, but trans-grid pathing isn't safe, so summon them directly at NPT const creature_type EP_EWT_Summons_A[EP_EWT_NUM_CREATURES] = { - {17635, 0, 3167.61f, -4352.09f, 138.20f, 4.5811f}, - {17647, 0, 3172.74f, -4352.99f, 139.14f, 4.9873f}, - {17647, 0, 3165.89f, -4354.46f, 138.67f, 3.7244f}, - {17647, 0, 3164.65f, -4350.26f, 138.22f, 2.4794f}, - {17647, 0, 3169.91f, -4349.68f, 138.37f, 0.7444f} + {17635, MAP_EASTERN_KINGDOMS, 3167.61f, -4352.09f, 138.20f, 4.5811f}, + {17647, MAP_EASTERN_KINGDOMS, 3172.74f, -4352.99f, 139.14f, 4.9873f}, + {17647, MAP_EASTERN_KINGDOMS, 3165.89f, -4354.46f, 138.67f, 3.7244f}, + {17647, MAP_EASTERN_KINGDOMS, 3164.65f, -4350.26f, 138.22f, 2.4794f}, + {17647, MAP_EASTERN_KINGDOMS, 3169.91f, -4349.68f, 138.37f, 0.7444f} }; const creature_type EP_EWT_Summons_H[EP_EWT_NUM_CREATURES] = { - {17995, 0, 3167.61f, -4352.09f, 138.20f, 4.5811f}, - {17996, 0, 3172.74f, -4352.99f, 139.14f, 4.9873f}, - {17996, 0, 3165.89f, -4354.46f, 138.67f, 3.7244f}, - {17996, 0, 3164.65f, -4350.26f, 138.22f, 2.4794f}, - {17996, 0, 3169.91f, -4349.68f, 138.37f, 0.7444f} + {17995, MAP_EASTERN_KINGDOMS, 3167.61f, -4352.09f, 138.20f, 4.5811f}, + {17996, MAP_EASTERN_KINGDOMS, 3172.74f, -4352.99f, 139.14f, 4.9873f}, + {17996, MAP_EASTERN_KINGDOMS, 3165.89f, -4354.46f, 138.67f, 3.7244f}, + {17996, MAP_EASTERN_KINGDOMS, 3164.65f, -4350.26f, 138.22f, 2.4794f}, + {17996, MAP_EASTERN_KINGDOMS, 3169.91f, -4349.68f, 138.37f, 0.7444f} }; enum EP_TowerStates @@ -129,10 +134,10 @@ enum EP_TowerStates }; // when spawning, pay attention at setting the faction manually! -const creature_type EP_PWT_FlightMaster = {17209, 0, 2987.5f, -3049.11f, 120.126f, 5.75959f}; +const creature_type EP_PWT_FlightMaster = {17209, MAP_EASTERN_KINGDOMS, 2987.5f, -3049.11f, 120.126f, 5.75959f}; // after spawning, modify the faction so that only the controller will be able to use it with SetUInt32Value(GAMEOBJECT_FACTION, faction_id); -const go_type EP_NPT_LordaeronShrine = {181682, 0, 3167.72f, -4355.91f, 138.785f, 1.69297f, 0.0f, 0.0f, 0.748956f, 0.66262f}; +const go_type EP_NPT_LordaeronShrine = {181682, MAP_EASTERN_KINGDOMS, 3167.72f, -4355.91f, 138.785f, 1.69297f, 0.0f, 0.0f, 0.748956f, 0.66262f}; class OutdoorPvPEP; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPGH.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPGH.cpp index 81091447d..a13bdd0fa 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPGH.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPGH.cpp @@ -47,7 +47,7 @@ void OutdoorPvPGH::SendRemoveWorldStates(Player* player) OPvPCapturePointGH::OPvPCapturePointGH(OutdoorPvP* pvp) : OPvPCapturePoint(pvp) { - SetCapturePointData(189310, 571, 2483.68f, -1873.6f, 10.6877f, -0.104719f, 0.0f, 0.0f, 0.0f, 1.0f); + SetCapturePointData(189310, MAP_NORTHREND, 2483.68f, -1873.6f, 10.6877f, -0.104719f, 0.0f, 0.0f, 0.0f, 1.0f); } void OPvPCapturePointGH::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) @@ -108,7 +108,7 @@ void OPvPCapturePointGH::ChangeState() break; } - Map* map = sMapMgr->FindMap(571, 0); + Map* map = sMapMgr->FindMap(MAP_NORTHREND, 0); auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp index 5f2bef7ee..c7c4f2297 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp @@ -249,7 +249,7 @@ void OPvPCapturePointHP::ChangeState() break; } - Map* map = sMapMgr->FindMap(530, 0); + Map* map = sMapMgr->FindMap(MAP_OUTLAND, 0); auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h index 810da0376..9ea88659f 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h @@ -22,8 +22,16 @@ #include "WorldStateDefines.h" #define OutdoorPvPHPBuffZonesNum 6 -// HP, citadel, ramparts, blood furnace, shattered halls, mag's lair -const uint32 OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = { 3483, 3563, 3562, 3713, 3714, 3836 }; + +const uint32 OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = +{ + AREA_HELLFIRE_PENINSULA, + AREA_HELLFIRE_CITADEL, + AREA_HELLFIRE_RAMPARTS, + AREA_THE_BLOOD_FURNACE, + AREA_THE_SHATTERED_HALLS, + AREA_MAGTHERIDONS_LAIR +}; enum OutdoorPvPHPSpells { @@ -61,16 +69,16 @@ const uint32 HP_TowerArtKit_N[HP_TOWER_NUM] = {66, 63, 69}; const go_type HPCapturePoints[HP_TOWER_NUM] = { - {182175, 530, -471.462f, 3451.09f, 34.6432f, 0.174533f, 0.0f, 0.0f, 0.087156f, 0.996195f}, // 0 - Broken Hill - {182174, 530, -184.889f, 3476.93f, 38.205f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f}, // 1 - Overlook - {182173, 530, -290.016f, 3702.42f, 56.6729f, 0.034907f, 0.0f, 0.0f, 0.017452f, 0.999848f} // 2 - Stadium + {182175, MAP_OUTLAND, -471.462f, 3451.09f, 34.6432f, 0.174533f, 0.0f, 0.0f, 0.087156f, 0.996195f}, // 0 - Broken Hill + {182174, MAP_OUTLAND, -184.889f, 3476.93f, 38.205f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f}, // 1 - Overlook + {182173, MAP_OUTLAND, -290.016f, 3702.42f, 56.6729f, 0.034907f, 0.0f, 0.0f, 0.017452f, 0.999848f} // 2 - Stadium }; const go_type HPTowerFlags[HP_TOWER_NUM] = { - {183514, 530, -467.078f, 3528.17f, 64.7121f, 3.14159f, 0.0f, 0.0f, 1.0f, 0.0f}, // 0 broken hill - {182525, 530, -187.887f, 3459.38f, 60.0403f, -3.12414f, 0.0f, 0.0f, 0.999962f, -0.008727f}, // 1 overlook - {183515, 530, -289.610f, 3696.83f, 75.9447f, 3.12414f, 0.0f, 0.0f, 0.999962f, 0.008727f} // 2 stadium + {183514, MAP_OUTLAND, -467.078f, 3528.17f, 64.7121f, 3.14159f, 0.0f, 0.0f, 1.0f, 0.0f}, // 0 broken hill + {182525, MAP_OUTLAND, -187.887f, 3459.38f, 60.0403f, -3.12414f, 0.0f, 0.0f, 0.999962f, -0.008727f}, // 1 overlook + {183515, MAP_OUTLAND, -289.610f, 3696.83f, 75.9447f, 3.12414f, 0.0f, 0.0f, 0.999962f, 0.008727f} // 2 stadium }; class OPvPCapturePointHP : public OPvPCapturePoint diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index aab8ddb7a..d3c85a929 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -16,6 +16,7 @@ */ #include "OutdoorPvPNA.h" +#include "AreaDefines.h" #include "CreatureScript.h" #include "GameGraveyard.h" #include "GridNotifiers.h" @@ -59,7 +60,7 @@ void OutdoorPvPNA::HandleKill(Player* killer, Unit* killed) // creature kills must be notified, even if not inside objective / not outdoor pvp active // player kills only count if active and inside objective - if ((groupGuy->IsOutdoorPvPActive() && groupGuy->GetAreaId() == NA_HALAA_ZONE_ID) || killed->IsCreature()) + if ((groupGuy->IsOutdoorPvPActive() && groupGuy->GetAreaId() == AREA_HALAA) || killed->IsCreature()) { HandleKillImpl(groupGuy, killed); } @@ -68,7 +69,7 @@ void OutdoorPvPNA::HandleKill(Player* killer, Unit* killed) else { // creature kills must be notified, even if not inside objective / not outdoor pvp active - if (killer && ((killer->IsOutdoorPvPActive() && killer->ToPlayer()->GetAreaId() == NA_HALAA_ZONE_ID) || killed->IsCreature())) + if (killer && ((killer->IsOutdoorPvPActive() && killer->ToPlayer()->GetAreaId() == AREA_HALAA) || killed->IsCreature())) { HandleKillImpl(killer, killed); } @@ -264,7 +265,7 @@ OPvPCapturePointNA::OPvPCapturePointNA(OutdoorPvP* pvp) : m_WyvernStateNorth(0), m_WyvernStateSouth(0), m_WyvernStateEast(0), m_WyvernStateWest(0), m_HalaaState(HALAA_N), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME), m_canRecap(true) { - SetCapturePointData(182210, 530, -1572.57f, 7945.3f, -22.475f, 2.05949f, 0.0f, 0.0f, 0.857167f, 0.515038f); + SetCapturePointData(182210, MAP_OUTLAND, -1572.57f, 7945.3f, -22.475f, 2.05949f, 0.0f, 0.0f, 0.857167f, 0.515038f); } bool OutdoorPvPNA::SetupOutdoorPvP() @@ -815,7 +816,7 @@ void OPvPCapturePointNA::ChangeState() break; } - auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); + auto bounds = sMapMgr->FindMap(MAP_OUTLAND, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h index 51701ecd7..8f5f10c9f 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h @@ -34,13 +34,11 @@ const uint32 NA_CREDIT_MARKER = 24867; const uint32 NA_GUARDS_MAX = 15; -const uint32 NA_BUFF_ZONE = 3518; +const uint32 NA_BUFF_ZONE = AREA_NAGRAND; const uint32 NA_HALAA_GRAVEYARD = 993; -const uint32 NA_HALAA_GRAVEYARD_ZONE = 3518; // need to add zone id, not area id - -uint32 const NA_HALAA_ZONE_ID = 3628; // halaa zone id +const uint32 NA_HALAA_GRAVEYARD_ZONE = AREA_NAGRAND; // need to add zone id, not area id const uint32 NA_RESPAWN_TIME = 3600000; // one hour to capture after defeating all guards @@ -99,39 +97,39 @@ enum HalaaCreaturesSpawn // spawned when the alliance is attacking, horde is in control const go_type HordeControlGOs[NA_CONTROL_GO_NUM] = { - {182267, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //ALLY_ROOST_SOUTH - {182280, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //ALLY_ROOST_WEST - {182281, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //ALLY_ROOST_NORTH - {182282, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //ALLY_ROOST_EAST + {182267, MAP_OUTLAND, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //ALLY_ROOST_SOUTH + {182280, MAP_OUTLAND, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //ALLY_ROOST_WEST + {182281, MAP_OUTLAND, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //ALLY_ROOST_NORTH + {182282, MAP_OUTLAND, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //ALLY_ROOST_EAST - {182222, 530, -1825.4022f, 8039.2602f, -26.08f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //HORDE_BOMB_WAGON_SOUTH - {182272, 530, -1517.44f, 8140.24f, -20.17f, -2.8099f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //HORDE_BOMB_WAGON_WEST - {182273, 530, -1389.53f, 7782.50f, -11.62f, -1.5184f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //HORDE_BOMB_WAGON_NORTH - {182274, 530, -1662.28f, 7735.00f, -15.96f, 1.8845f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //HORDE_BOMB_WAGON_EAST + {182222, MAP_OUTLAND, -1825.4022f, 8039.2602f, -26.08f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //HORDE_BOMB_WAGON_SOUTH + {182272, MAP_OUTLAND, -1517.44f, 8140.24f, -20.17f, -2.8099f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //HORDE_BOMB_WAGON_WEST + {182273, MAP_OUTLAND, -1389.53f, 7782.50f, -11.62f, -1.5184f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //HORDE_BOMB_WAGON_NORTH + {182274, MAP_OUTLAND, -1662.28f, 7735.00f, -15.96f, 1.8845f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //HORDE_BOMB_WAGON_EAST - {182266, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //DESTROYED_ALLY_ROOST_SOUTH - {182275, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //DESTROYED_ALLY_ROOST_WEST - {182276, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //DESTROYED_ALLY_ROOST_NORTH - {182277, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f} //DESTROYED_ALLY_ROOST_EAST + {182266, MAP_OUTLAND, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //DESTROYED_ALLY_ROOST_SOUTH + {182275, MAP_OUTLAND, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //DESTROYED_ALLY_ROOST_WEST + {182276, MAP_OUTLAND, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //DESTROYED_ALLY_ROOST_NORTH + {182277, MAP_OUTLAND, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f} //DESTROYED_ALLY_ROOST_EAST }; // spawned when the horde is attacking, alliance is in control const go_type AllianceControlGOs[NA_CONTROL_GO_NUM] = { - {182301, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //HORDE_ROOST_SOUTH - {182302, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //HORDE_ROOST_WEST - {182303, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //HORDE_ROOST_NORTH - {182304, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //HORDE_ROOST_EAST + {182301, MAP_OUTLAND, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //HORDE_ROOST_SOUTH + {182302, MAP_OUTLAND, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //HORDE_ROOST_WEST + {182303, MAP_OUTLAND, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //HORDE_ROOST_NORTH + {182304, MAP_OUTLAND, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //HORDE_ROOST_EAST - {182305, 530, -1825.4022f, 8039.2602f, -26.08f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //ALLY_BOMB_WAGON_SOUTH - {182306, 530, -1517.44f, 8140.24f, -20.17f, -2.8099f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //ALLY_BOMB_WAGON_WEST - {182307, 530, -1389.53f, 7782.50f, -11.62f, -1.5184f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //ALLY_BOMB_WAGON_NORTH - {182308, 530, -1662.28f, 7735.00f, -15.96f, 1.8845f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //ALLY_BOMB_WAGON_EAST + {182305, MAP_OUTLAND, -1825.4022f, 8039.2602f, -26.08f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //ALLY_BOMB_WAGON_SOUTH + {182306, MAP_OUTLAND, -1517.44f, 8140.24f, -20.17f, -2.8099f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //ALLY_BOMB_WAGON_WEST + {182307, MAP_OUTLAND, -1389.53f, 7782.50f, -11.62f, -1.5184f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //ALLY_BOMB_WAGON_NORTH + {182308, MAP_OUTLAND, -1662.28f, 7735.00f, -15.96f, 1.8845f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //ALLY_BOMB_WAGON_EAST - {182297, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //DESTROYED_HORDE_ROOST_SOUTH - {182298, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //DESTROYED_HORDE_ROOST_WEST - {182299, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //DESTROYED_HORDE_ROOST_NORTH - {182300, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f} //DESTROYED_HORDE_ROOST_EAST + {182297, MAP_OUTLAND, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //DESTROYED_HORDE_ROOST_SOUTH + {182298, MAP_OUTLAND, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //DESTROYED_HORDE_ROOST_WEST + {182299, MAP_OUTLAND, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //DESTROYED_HORDE_ROOST_NORTH + {182300, MAP_OUTLAND, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f} //DESTROYED_HORDE_ROOST_EAST }; struct HalaaIds diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h index c4d724463..c7bc654e1 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h @@ -32,7 +32,12 @@ const uint32 SI_MAX_RESOURCES = 200; const uint8 OutdoorPvPSIBuffZonesNum = 3; -const uint32 OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum] = { 1377, 3428, 3429 }; +const uint32 OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum] = +{ + AREA_SILITHUS, + AREA_AHN_QIRAJ, + AREA_RUINS_OF_AHN_QIRAJ +}; const uint32 SI_AREATRIGGER_H = 4168; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp index 3e7272743..595f3530d 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp @@ -27,6 +27,7 @@ #include "World.h" #include "WorldPacket.h" #include "WorldSessionMgr.h" +#include "WorldState.h" #include "WorldStatePackets.h" OutdoorPvPTF::OutdoorPvPTF() @@ -111,14 +112,14 @@ void OutdoorPvPTF::SendRemoveWorldStates(Player* player) void OutdoorPvPTF::SaveRequiredWorldStates() const { - sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled); - sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled); + sWorldState->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled); + sWorldState->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled); - sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, m_IsLocked); + sWorldState->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, m_IsLocked); // Save expiry as unix uint32 const lockExpireTime = GameTime::GetGameTime().count() + (m_LockTimer / IN_MILLISECONDS); - sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS, lockExpireTime); + sWorldState->setWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS, lockExpireTime); } void OutdoorPvPTF::ResetZoneToTeamControlled(TeamId team) @@ -335,7 +336,7 @@ bool OutdoorPvPTF::SetupOutdoorPvP() m_AllianceTowersControlled = 0; m_HordeTowersControlled = 0; - m_IsLocked = bool(sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY)); + m_IsLocked = bool(sWorldState->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY)); m_JustLocked = false; m_LockTimer = TF_LOCK_TIME; m_LockTimerUpdate = 0; @@ -359,14 +360,14 @@ bool OutdoorPvPTF::SetupOutdoorPvP() { // Core shutdown while locked -- init from latest known data in WorldState // Convert from unix - int32 const lockRemainingTime = int32((sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS) - GameTime::GetGameTime().count()) * IN_MILLISECONDS); + int32 const lockRemainingTime = int32((sWorldState->getWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS) - GameTime::GetGameTime().count()) * IN_MILLISECONDS); if (lockRemainingTime > 0) { m_LockTimer = lockRemainingTime; RecalculateClientUILockTime(); - uint32 const hordeTowers = uint32(sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H)); - uint32 const allianceTowers = uint32(sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A)); + uint32 const hordeTowers = uint32(sWorldState->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H)); + uint32 const allianceTowers = uint32(sWorldState->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A)); TeamId const controllingTeam = hordeTowers > allianceTowers ? TEAM_HORDE : TEAM_ALLIANCE; ResetZoneToTeamControlled(controllingTeam); @@ -452,7 +453,7 @@ void OPvPCapturePointTF::ChangeState() break; } - auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); + auto bounds = sMapMgr->FindMap(MAP_OUTLAND, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h index 68abdc37b..6184e20ba 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h @@ -25,11 +25,11 @@ const uint8 OutdoorPvPTFBuffZonesNum = 5; const uint32 OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum] = { - 3519 /*Terokkar Forest*/, - 3791 /*Sethekk Halls*/, - 3789 /*Shadow Labyrinth*/, - 3792 /*Mana-Tombs*/, - 3790 /*Auchenai Crypts*/ + AREA_TEROKKAR_FOREST, + AREA_SETHEKK_HALLS, + AREA_SHADOW_LABYRINTH, + AREA_MANA_TOMBS, + AREA_AUCHENAI_CRYPTS, }; // locked for 6 hours after capture @@ -56,11 +56,11 @@ enum OutdoorPvPTF_TowerType const go_type TFCapturePoints[TF_TOWER_NUM] = { - {183104, 530, -3081.65f, 5335.03f, 17.1853f, -2.14675f, 0.0f, 0.0f, 0.878817f, -0.477159f}, - {183411, 530, -2939.9f, 4788.73f, 18.987f, 2.77507f, 0.0f, 0.0f, 0.983255f, 0.182236f}, - {183412, 530, -3174.94f, 4440.97f, 16.2281f, 1.86750f, 0.0f, 0.0f, 0.803857f, 0.594823f}, - {183413, 530, -3603.31f, 4529.15f, 20.9077f, 0.994838f, 0.0f, 0.0f, 0.477159f, 0.878817f}, - {183414, 530, -3812.37f, 4899.3f, 17.7249f, 0.087266f, 0.0f, 0.0f, 0.043619f, 0.999048f} + {183104, MAP_OUTLAND, -3081.65f, 5335.03f, 17.1853f, -2.14675f, 0.0f, 0.0f, 0.878817f, -0.477159f}, + {183411, MAP_OUTLAND, -2939.9f, 4788.73f, 18.987f, 2.77507f, 0.0f, 0.0f, 0.983255f, 0.182236f}, + {183412, MAP_OUTLAND, -3174.94f, 4440.97f, 16.2281f, 1.86750f, 0.0f, 0.0f, 0.803857f, 0.594823f}, + {183413, MAP_OUTLAND, -3603.31f, 4529.15f, 20.9077f, 0.994838f, 0.0f, 0.0f, 0.477159f, 0.878817f}, + {183414, MAP_OUTLAND, -3812.37f, 4899.3f, 17.7249f, 0.087266f, 0.0f, 0.0f, 0.043619f, 0.999048f} }; struct tf_tower_world_state diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h index 58517d84b..13a15f63b 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h @@ -24,10 +24,17 @@ const uint8 OutdoorPvPZMBuffZonesNum = 5; // the buff is cast in these zones -const uint32 OutdoorPvPZMBuffZones[OutdoorPvPZMBuffZonesNum] = {3521, 3607, 3717, 3715, 3716}; +const uint32 OutdoorPvPZMBuffZones[OutdoorPvPZMBuffZonesNum] = +{ + AREA_ZANGARMARSH, + AREA_SERPENTSHRINE_CAVERN, + AREA_THE_SLAVE_PENS, + AREA_THE_STEAMVAULT, + AREA_THE_UNDERBOG +}; // linked when the central tower is controlled -const uint32 ZM_GRAVEYARD_ZONE = 3521; +const uint32 ZM_GRAVEYARD_ZONE = AREA_ZANGARMARSH; // linked when the central tower is controlled const uint32 ZM_GRAVEYARD_ID = 969; @@ -47,15 +54,15 @@ enum OutdoorPvPZMSpells }; // banners 182527, 182528, 182529, gotta check them ingame -const go_type ZM_Banner_A = { 182527, 530, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f }; -const go_type ZM_Banner_H = { 182528, 530, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f }; -const go_type ZM_Banner_N = { 182529, 530, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f }; +const go_type ZM_Banner_A = { 182527, MAP_OUTLAND, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f }; +const go_type ZM_Banner_H = { 182528, MAP_OUTLAND, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f }; +const go_type ZM_Banner_N = { 182529, MAP_OUTLAND, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f }; // horde field scout spawn data -const creature_type ZM_HordeFieldScout = {18564, 530, 296.625f, 7818.4f, 42.6294f, 5.18363f}; +const creature_type ZM_HordeFieldScout = {18564, MAP_OUTLAND, 296.625f, 7818.4f, 42.6294f, 5.18363f}; // alliance field scout spawn data -const creature_type ZM_AllianceFieldScout = {18581, 530, 374.395f, 6230.08f, 22.8351f, 0.593412f}; +const creature_type ZM_AllianceFieldScout = {18581, MAP_OUTLAND, 374.395f, 6230.08f, 22.8351f, 0.593412f}; enum ZMCreatureTypes { @@ -118,8 +125,8 @@ const uint32 ZMBeaconLoseH[ZM_NUM_BEACONS] = const go_type ZMCapturePoints[ZM_NUM_BEACONS] = { - {182523, 530, 303.243f, 6841.36f, 40.1245f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f}, - {182522, 530, 336.466f, 7340.26f, 41.4984f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f} + {182523, MAP_OUTLAND, 303.243f, 6841.36f, 40.1245f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f}, + {182522, MAP_OUTLAND, 336.466f, 7340.26f, 41.4984f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f} }; enum ZM_TowerStateMask diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp index 599bb22cb..c54822795 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp @@ -23,7 +23,7 @@ class instance_auchenai_crypts : public InstanceMapScript { public: - instance_auchenai_crypts() : InstanceMapScript(ACScriptName, 558) { } + instance_auchenai_crypts() : InstanceMapScript(ACScriptName, MAP_AUCHINDOUN_AUCHENAI_CRYPTS) { } struct instance_auchenai_crypts_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp index 7b0947d6b..3774fa7ff 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp @@ -23,7 +23,7 @@ class instance_mana_tombs : public InstanceMapScript { public: - instance_mana_tombs() : InstanceMapScript(MTScriptName, 557) { } + instance_mana_tombs() : InstanceMapScript(MTScriptName, MAP_AUCHINDOUN_MANA_TOMBS) { } struct instance_mana_tombs_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp index 794b5fb07..828dba732 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp @@ -124,7 +124,7 @@ struct boss_anzu : public BossAI scheduler.DelayAll(3s); }).Schedule(8s, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 9, 45.0f, true, false)) { DoCast(target, SPELL_CYCLONE); } diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp index c14fcd497..1b00bf7c4 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp @@ -103,9 +103,9 @@ struct boss_talon_king_ikiss : public BossAI }).Schedule(8s, [this](TaskContext context) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_POLYMORPH); - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, [&](Unit* target) -> bool + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, [&](Unit* target) -> bool { - return target && !target->IsImmunedToSpell(spellInfo); + return target && !target->IsImmunedToSpell(spellInfo) && target != me->GetThreatMgr().GetCurrentVictim(); })) { DoCast(target, SPELL_POLYMORPH); diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp index 4d6f959ce..98cb3dcaa 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp @@ -42,7 +42,7 @@ const uint32 anzuSummonEventId = 14797; class instance_sethekk_halls : public InstanceMapScript { public: - instance_sethekk_halls() : InstanceMapScript("instance_sethekk_halls", 556) { } + instance_sethekk_halls() : InstanceMapScript("instance_sethekk_halls", MAP_AUCHINDOUN_SETHEKK_HALLS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp index 96218c914..71909d2e4 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp @@ -37,7 +37,7 @@ ObjectData const creatureData[] = class instance_shadow_labyrinth : public InstanceMapScript { public: - instance_shadow_labyrinth() : InstanceMapScript("instance_shadow_labyrinth", 555) { } + instance_shadow_labyrinth() : InstanceMapScript("instance_shadow_labyrinth", MAP_AUCHINDOUN_SHADOW_LABYRINTH) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp index 902b72d1e..3d281f501 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp @@ -99,7 +99,7 @@ struct boss_gurtogg_bloodboil : public BossAI }, 15s); ScheduleTimedEvent(1min, [&] { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 40.0f, true)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true, false)) { me->RemoveAurasByType(SPELL_AURA_MOD_TAUNT); me->RemoveAurasDueToSpell(SPELL_ACIDIC_WOUND); diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index 5a782f11e..980e9db82 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -102,11 +102,7 @@ struct boss_mother_shahraz : public BossAI ScheduleTimedEvent(50s, [&] { Talk(SAY_SPELL); - // weights for 1, 2, or 3 targets - static double chances[] = {5.0, 15.0, 80.0}; - uint32 selectedIndex = urandweighted(3, chances); - uint32 numTargets = selectedIndex + 1; - me->CastCustomSpell(SPELL_FATAL_ATTRACTION, SPELLVALUE_MAX_TARGETS, numTargets, me, false); + DoCast(SPELL_FATAL_ATTRACTION); }, 1min); me->m_Events.AddEventAtOffset([&] { @@ -298,6 +294,7 @@ class spell_mother_shahraz_fatal_attraction : public SpellScript void FilterTargets(std::list& targets) { + Acore::Containers::RandomResize(targets, 3); targets.remove_if(Acore::UnitAuraCheck(true, SPELL_SABER_LASH_IMMUNITY)); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 392cbecde..773382d8e 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -65,9 +65,11 @@ enum Misc struct ShadowOfDeathSelector { + Unit const* _tank; + ShadowOfDeathSelector(Unit const* tank) : _tank(tank) {} bool operator()(Unit const* target) const { - return target && !target->HasAura(SPELL_SHADOW_OF_DEATH) && !target->HasAura(SPELL_POSSESS_SPIRIT_IMMUNE); + return target && !target->HasAura(SPELL_SHADOW_OF_DEATH) && !target->HasAura(SPELL_POSSESS_SPIRIT_IMMUNE) && target != _tank; } }; @@ -113,7 +115,7 @@ struct boss_teron_gorefiend : public BossAI ScheduleTimedEvent(10s, [&] { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, ShadowOfDeathSelector())) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, ShadowOfDeathSelector(me->GetThreatMgr().GetCurrentVictim()))) me->CastSpell(target, SPELL_SHADOW_OF_DEATH, false); }, 30s, 50s); diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp index 8256a2ad3..7b91fec7e 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp @@ -91,7 +91,7 @@ struct boss_najentus : public BossAI ScheduleTimedEvent(21s, [&] { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) { DoCast(target, SPELL_IMPALING_SPINE); target->CastSpell(target, SPELL_SUMMON_IMPALING_SPINE, true); diff --git a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp index 47aa4a81b..0c6852776 100644 --- a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp @@ -94,7 +94,7 @@ BossBoundaryData const boundaries = class instance_black_temple : public InstanceMapScript { public: - instance_black_temple() : InstanceMapScript("instance_black_temple", 564) { } + instance_black_temple() : InstanceMapScript("instance_black_temple", MAP_BLACK_TEMPLE) { } struct instance_black_temple_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp index 7a4d7ab93..1551d7c81 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "InstanceMapScript.h" #include "InstanceScript.h" @@ -72,7 +73,7 @@ ObjectData const summonData[] = class instance_serpent_shrine : public InstanceMapScript { public: - instance_serpent_shrine() : InstanceMapScript("instance_serpent_shrine", 548) { } + instance_serpent_shrine() : InstanceMapScript("instance_serpent_shrine", MAP_COILFANG_SERPENTSHRINE_CAVERN) { } struct instance_serpentshrine_cavern_InstanceMapScript : public InstanceScript { @@ -295,7 +296,7 @@ class spell_serpentshrine_cavern_coilfang_water : public AuraScript { PreventDefaultAction(); InstanceScript* instance = GetUnitOwner()->GetInstanceScript(); - if (!instance || GetUnitOwner()->GetMapId() != 548) + if (!instance || GetUnitOwner()->GetMapId() != MAP_COILFANG_SERPENTSHRINE_CAVERN) { SetDuration(0); return; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/instance_the_slave_pens.cpp b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/instance_the_slave_pens.cpp index bc40dbb1e..fa88c4b53 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SlavePens/instance_the_slave_pens.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SlavePens/instance_the_slave_pens.cpp @@ -47,7 +47,7 @@ ObjectData const creatureData[] = class instance_the_slave_pens : public InstanceMapScript { public: - instance_the_slave_pens() : InstanceMapScript(SPScriptName, 547) { } + instance_the_slave_pens() : InstanceMapScript(SPScriptName, MAP_COILFANG_THE_SLAVE_PENS) { } struct instance_the_slave_pens_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp index 731afca6a..49607d53c 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp @@ -73,7 +73,7 @@ struct boss_mekgineer_steamrigger : public BossAI context.Repeat(35100ms, 54100ms); }).Schedule(6050ms, 17650ms, [this](TaskContext context) { - if (DoCastRandomTarget(SPELL_SAW_BLADE, 1) != SPELL_CAST_OK) + if (DoCastRandomTarget(SPELL_SAW_BLADE, 0, 0.0f, true, false, false) != SPELL_CAST_OK) { DoCastVictim(SPELL_SAW_BLADE); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp index 6c106d7e2..70437e05a 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp @@ -114,7 +114,7 @@ ObjectData const objectData[] = class instance_steam_vault : public InstanceMapScript { public: - instance_steam_vault() : InstanceMapScript("instance_steam_vault", 545) { } + instance_steam_vault() : InstanceMapScript("instance_steam_vault", MAP_COILFANG_THE_STEAMVAULT) { } struct instance_steam_vault_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp index e81ddd3c0..057e83371 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp @@ -100,7 +100,7 @@ struct boss_the_black_stalker : public BossAI void JustSummoned(Creature* summon) override { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) summon->AI()->AttackStart(target); else if (me->GetVictim()) summon->AI()->AttackStart(me->GetVictim()); diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/instance_the_underbog.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/instance_the_underbog.cpp index baf89fa29..2f6a82c40 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/instance_the_underbog.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/instance_the_underbog.cpp @@ -30,7 +30,7 @@ ObjectData const creatureData[] = class instance_the_underbog : public InstanceMapScript { public: - instance_the_underbog() : InstanceMapScript(TheUnderbogScriptName, 546) { } + instance_the_underbog() : InstanceMapScript(TheUnderbogScriptName, MAP_COILFANG_THE_UNDERBOG) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index ea5e3c19f..dfbdf0d91 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -95,7 +95,7 @@ struct boss_gruul : public BossAI context.Repeat(39900ms, 55700ms); }).Schedule(5600ms, [this](TaskContext context) { - if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 5.0f)) + if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, 5.0f, false, false)) { DoCast(target, SPELL_HURTFUL_STRIKE); } diff --git a/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp b/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp index b475bda97..376c78312 100644 --- a/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp +++ b/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp @@ -45,7 +45,7 @@ MinionData const minionData[] = class instance_gruuls_lair : public InstanceMapScript { public: - instance_gruuls_lair() : InstanceMapScript("instance_gruuls_lair", 565) { } + instance_gruuls_lair() : InstanceMapScript("instance_gruuls_lair", MAP_GRUULS_LAIR) { } struct instance_gruuls_lair_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp index d036e002a..031e188af 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp @@ -48,7 +48,7 @@ ObjectData const creatureData[] = class instance_blood_furnace : public InstanceMapScript { public: - instance_blood_furnace() : InstanceMapScript("instance_blood_furnace", 542) {} + instance_blood_furnace() : InstanceMapScript("instance_blood_furnace", MAP_HELLFIRE_CITADEL_THE_BLOOD_FURNACE) {} struct instance_blood_furnace_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp index 99fcd65da..ca98f7712 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp @@ -22,7 +22,7 @@ class instance_hellfire_ramparts : public InstanceMapScript { public: - instance_hellfire_ramparts() : InstanceMapScript("instance_hellfire_ramparts", 543) { } + instance_hellfire_ramparts() : InstanceMapScript("instance_hellfire_ramparts", MAP_HELLFIRE_CITADEL_RAMPARTS) { } struct instance_hellfire_ramparts_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp index f14512908..a2715fd26 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp @@ -39,7 +39,7 @@ MinionData const minionData[] = class instance_magtheridons_lair : public InstanceMapScript { public: - instance_magtheridons_lair() : InstanceMapScript("instance_magtheridons_lair", 544) { } + instance_magtheridons_lair() : InstanceMapScript("instance_magtheridons_lair", MAP_MAGTHERIDONS_LAIR) { } struct instance_magtheridons_lair_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp index 638570c64..e1857ff3c 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp @@ -169,7 +169,7 @@ struct boss_warbringer_omrogg : public BossAI context.Schedule(200ms, GROUP_NON_BURNING_PHASE, [this](TaskContext context) { DoResetThreatList(); - if (Unit* newTarget = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* newTarget = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) me->AddThreat(newTarget, 2250.f); HandleHeadTalk(SAY_ON_BEATDOWN); context.Schedule(1200ms, GROUP_NON_BURNING_PHASE, [this](TaskContext /*context*/) @@ -199,7 +199,7 @@ struct boss_warbringer_omrogg : public BossAI context.Schedule(2200ms, [this](TaskContext context) { DoResetThreatList(); - if (Unit* newTarget = SelectTarget(SelectTargetMethod::Random, 1)) + if (Unit* newTarget = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) me->AddThreat(newTarget, 2250.f); me->SetReactState(REACT_AGGRESSIVE); context.Schedule(4850ms, 8500ms, GROUP_BURNING_PHASE, [this](TaskContext context) diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp index c490108ed..fe1a94bd9 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp @@ -43,7 +43,7 @@ DoorData const doorData[] = class instance_shattered_halls : public InstanceMapScript { public: - instance_shattered_halls() : InstanceMapScript("instance_shattered_halls", 540) { } + instance_shattered_halls() : InstanceMapScript("instance_shattered_halls", MAP_HELLFIRE_CITADEL_THE_SHATTERED_HALLS) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp index 7bd5755e8..3a28db660 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp @@ -54,7 +54,7 @@ BossBoundaryData const boundaries = class instance_the_eye : public InstanceMapScript { public: - instance_the_eye() : InstanceMapScript("instance_the_eye", 550) { } + instance_the_eye() : InstanceMapScript("instance_the_eye", MAP_TEMPEST_KEEP) { } struct instance_the_eye_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp index c5c867506..07612d943 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp @@ -115,7 +115,7 @@ struct boss_pathaleon_the_calculator : public BossAI context.Repeat(15s); }).Schedule(10s, 15s, [this](TaskContext context) { - if (DoCastRandomTarget(SPELL_DOMINATION, 1, 50.0f) == SPELL_CAST_OK) + if (DoCastRandomTarget(SPELL_DOMINATION, 0, 50.0f, true, false, false) == SPELL_CAST_OK) { Talk(SAY_DOMINATION); } diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 8f38f631b..a5b5d40b9 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -30,7 +30,7 @@ static DoorData const doorData[] = class instance_mechanar : public InstanceMapScript { public: - instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { } + instance_mechanar(): InstanceMapScript("instance_mechanar", MAP_TEMPEST_KEEP_THE_MECHANAR) { } struct instance_mechanar_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp index bb199edba..ab4644a77 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp @@ -92,7 +92,7 @@ struct boss_harbinger_skyriss : public BossAI context.Repeat(25s); }).Schedule(30s, [this](TaskContext context) { - if (DoCastRandomTarget(SPELL_DOMINATION, 1, 30.0f) == SPELL_CAST_OK) + if (DoCastRandomTarget(SPELL_DOMINATION, 0, 30.0f, true, false, false) == SPELL_CAST_OK) { Talk(SAY_MIND); } diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp index 59e872907..951eaaf12 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp @@ -37,7 +37,7 @@ ObjectData const creatureData[] = class instance_arcatraz : public InstanceMapScript { public: - instance_arcatraz() : InstanceMapScript("instance_arcatraz", 552) { } + instance_arcatraz() : InstanceMapScript("instance_arcatraz", MAP_TEMPEST_KEEP_THE_ARCATRAZ) { } struct instance_arcatraz_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp index 2d900d519..2115ae05d 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp @@ -75,7 +75,7 @@ struct boss_thorngrin_the_tender : public BossAI scheduler.Schedule(6s, [this](TaskContext context) { - if (DoCastRandomTarget(SPELL_SACRIFICE, 1) == SPELL_CAST_OK) + if (DoCastRandomTarget(SPELL_SACRIFICE, 0, 0.0f, true, false, false) == SPELL_CAST_OK) { Talk(SAY_CAST_SACRIFICE); } diff --git a/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp b/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp index 854d5b2f0..9962950cd 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp @@ -26,7 +26,7 @@ class instance_the_botanica : public InstanceMapScript { public: - instance_the_botanica() : InstanceMapScript("instance_the_botanica", 553) { } + instance_the_botanica() : InstanceMapScript("instance_the_botanica", MAP_TEMPEST_KEEP_THE_BOTANICA) { } struct instance_the_botanica_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp index 774dcfe58..418924433 100644 --- a/src/server/scripts/Outland/boss_doomwalker.cpp +++ b/src/server/scripts/Outland/boss_doomwalker.cpp @@ -80,7 +80,7 @@ struct boss_doomwalker : public ScriptedAI context.Repeat(10s, 25s); }).Schedule(10s, 30s, [this](TaskContext context) { - DoCastRandomTarget(SPELL_CHAIN_LIGHTNING, 1); + DoCastRandomTarget(SPELL_CHAIN_LIGHTNING, 0, 0.0f, true, false, false); context.Repeat(7s, 27s); }).Schedule(25s, 35s, [this](TaskContext context) { diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 55600e04e..cd47823c1 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "PetDefines.h" #include "Player.h" @@ -1382,7 +1383,7 @@ class spell_dk_death_grip : public SpellScript target->InterruptNonMeleeSpells(false, 0, false); } - if (target->GetMapId() == 618) // for Ring of Valor + if (target->GetMapId() == MAP_THE_RING_OF_VALOR) gripPos.m_positionZ = std::max(casterZ + 0.2f, 28.5f); target->CastSpell(gripPos.GetPositionX(), gripPos.GetPositionY(), gripPos.GetPositionZ(), 57604, true); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 40b21e2a7..80c7365e8 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "Battlefield.h" #include "BattlefieldMgr.h" #include "Battleground.h" @@ -539,9 +540,9 @@ class spell_gen_rallying_cry_of_the_dragonslayer : public SpellScript { targets.clear(); - uint32 zoneId = 1519; - if (GetCaster()->GetMapId() == 1) // Kalimdor - zoneId = 1637; + uint32 zoneId = AREA_STORMWIND_CITY; + if (GetCaster()->GetMapId() == MAP_KALIMDOR) + zoneId = AREA_ORGRIMMAR; Map::PlayerList const& pList = GetCaster()->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr) @@ -1901,8 +1902,6 @@ class spell_gen_feign_death_no_prevent_emotes : public AuraScript enum Teleporting { - AREA_VIOLET_CITADEL_SPIRE = 4637, - SPELL_TELEPORT_SPIRE_DOWN = 59316, SPELL_TELEPORT_SPIRE_UP = 59314 }; @@ -1923,7 +1922,7 @@ class spell_gen_teleporting : public SpellScript return; // return from top - if (target->ToPlayer()->GetAreaId() == AREA_VIOLET_CITADEL_SPIRE) + if (target->ToPlayer()->GetAreaId() == AREA_VARGOTHS_RETREAT) target->CastSpell(target, SPELL_TELEPORT_SPIRE_DOWN, true); // teleport atop else @@ -4051,7 +4050,7 @@ public: // Triggered spell id dependent on riding skill and zone bool canFly = false; uint32 map = GetVirtualMapForMapAndZone(target->GetMapId(), target->GetZoneId()); - if (map == 530 || (map == 571 && target->HasSpell(SPELL_COLD_WEATHER_FLYING))) + if (map == MAP_OUTLAND || (map == MAP_NORTHREND && target->HasSpell(SPELL_COLD_WEATHER_FLYING))) canFly = true; AreaTableEntry const* area = sAreaTableStore.LookupEntry(target->GetAreaId()); diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index c5d16318c..62b370b05 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "Battleground.h" #include "CreatureScript.h" #include "ObjectMgr.h" @@ -2995,7 +2996,7 @@ class spell_item_socrethars_stone : public SpellScript bool Load() override { - return (GetCaster()->GetAreaId() == 3900 || GetCaster()->GetAreaId() == 3742); + return (GetCaster()->GetAreaId() == AREA_INVASION_POINT_OVERLORD || GetCaster()->GetAreaId() == AREA_SOCRETHARS_SEAT); } bool Validate(SpellInfo const* /*spell*/) override @@ -3008,10 +3009,10 @@ class spell_item_socrethars_stone : public SpellScript Unit* caster = GetCaster(); switch (caster->GetAreaId()) { - case 3900: + case AREA_INVASION_POINT_OVERLORD: caster->CastSpell(caster, SPELL_SOCRETHAR_TO_SEAT, true); break; - case 3742: + case AREA_SOCRETHARS_SEAT: caster->CastSpell(caster, SPELL_SOCRETHAR_FROM_SEAT, true); break; default: diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index e6dbe948c..b165cef93 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CellImpl.h" #include "CreatureScript.h" #include "GridNotifiers.h" @@ -364,7 +365,7 @@ class spell_rog_killing_spree : public SpellScript SpellCastResult CheckCast() { // Kologarn area, Killing Spree should not work - if (GetCaster()->GetMapId() == 603 /*Ulduar*/ && GetCaster()->GetDistance2d(1766.936f, -24.748f) < 50.0f) + if (GetCaster()->GetMapId() == MAP_ULDUAR && GetCaster()->GetDistance2d(1766.936f, -24.748f) < 50.0f) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; return SPELL_CAST_OK; } diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index c27856ccd..ee018810a 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "Pet.h" #include "Player.h" @@ -97,7 +98,7 @@ class spell_warl_eye_of_kilrogg : public AuraScript { if (Unit* charm = player->GetCharm()) { - if (charm->GetMapId() == 530 || charm->GetMapId() == 571) + if (charm->GetMapId() == MAP_OUTLAND || charm->GetMapId() == MAP_NORTHREND) { charm->CastSpell(charm, SPELL_WARLOCK_EYE_OF_KILROGG_FLY, true); } diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp index e365afdf5..40fdd9ef2 100644 --- a/src/server/scripts/World/achievement_scripts.cpp +++ b/src/server/scripts/World/achievement_scripts.cpp @@ -16,6 +16,7 @@ */ #include "AchievementCriteriaScript.h" +#include "AreaDefines.h" #include "BattlegroundAB.h" #include "BattlegroundAV.h" #include "BattlegroundIC.h" @@ -192,16 +193,6 @@ public: } }; -enum ArgentTournamentAreas -{ - AREA_ARGENT_TOURNAMENT_FIELDS = 4658, - AREA_RING_OF_ASPIRANTS = 4670, - AREA_RING_OF_ARGENT_VALIANTS = 4671, - AREA_RING_OF_ALLIANCE_VALIANTS = 4672, - AREA_RING_OF_HORDE_VALIANTS = 4673, - AREA_RING_OF_CHAMPIONS = 4669, -}; - class achievement_tilted : public AchievementCriteriaScript { public: @@ -213,12 +204,12 @@ public: return false; uint32 areaid = player->GetAreaId(); - bool checkArea = areaid == AREA_ARGENT_TOURNAMENT_FIELDS || - areaid == AREA_RING_OF_ASPIRANTS || - areaid == AREA_RING_OF_ARGENT_VALIANTS || - areaid == AREA_RING_OF_ALLIANCE_VALIANTS || - areaid == AREA_RING_OF_HORDE_VALIANTS || - areaid == AREA_RING_OF_CHAMPIONS; + bool checkArea = areaid == AREA_ARGENT_TOURNAMENT_GROUNDS || + areaid == AREA_THE_ASPIRANTS_RING || + areaid == AREA_THE_ARGENT_VALIANTS_RING || + areaid == AREA_THE_ALLIANCE_VALIANTS_RING || + areaid == AREA_THE_HORDE_VALIANTS_RING || + areaid == AREA_THE_RING_OF_CHAMPIONS; return checkArea && player->duel && player->duel->IsMounted; } diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 7d995e6a9..0ef0d58b4 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -52,7 +52,7 @@ public: if (player->IsAlive() && !player->IsInCombat()) if (player->HasItemCount(39319)) // Scepter of Domination { - player->TeleportTo(571, 6242.67f, -1972.10f, 484.783f, 0.6f); + player->TeleportTo(MAP_NORTHREND, 6242.67f, -1972.10f, 484.783f, 0.6f); return true; } diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index f458cbbd5..bc6e9acb4 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CellImpl.h" #include "Chat.h" #include "CreatureScript.h" @@ -529,21 +530,6 @@ enum BrewfestMusicTime EVENT_BREWFESTGOBLIN03_TIME = 28000 }; -enum BrewfestMusicAreas -{ - SILVERMOON = 3430, // Horde - UNDERCITY = 1497, - ORGRIMMAR_1 = 1296, - ORGRIMMAR_2 = 14, - THUNDERBLUFF = 1638, - IRONFORGE_1 = 809, // Alliance - IRONFORGE_2 = 1, - STORMWIND = 12, - EXODAR = 3557, - DARNASSUS = 1657, - SHATTRATH = 3703 // General -}; - enum BrewfestMusicEvents { EVENT_BM_SELECT_MUSIC = 1, @@ -581,7 +567,7 @@ public: //Restart the current selected music _currentMusicEvent = 0; //Check zone to play correct music - if (me->GetAreaId() == SILVERMOON || me->GetAreaId() == UNDERCITY || me->GetAreaId() == ORGRIMMAR_1 || me->GetAreaId() == ORGRIMMAR_2 || me->GetAreaId() == THUNDERBLUFF) + if (me->GetAreaId() == AREA_EVERSONG_WOODS || me->GetAreaId() == AREA_UNDERCITY || me->GetAreaId() == AREA_ROCKTUSK_FARM || me->GetAreaId() == AREA_DUROTAR || me->GetAreaId() == AREA_THUNDER_BLUFF) { switch (rnd) { @@ -601,7 +587,7 @@ public: break; } } - else if (me->GetAreaId() == IRONFORGE_1 || me->GetAreaId() == IRONFORGE_2 || me->GetAreaId() == STORMWIND || me->GetAreaId() == EXODAR || me->GetAreaId() == DARNASSUS) + else if (me->GetAreaId() == AREA_GATES_OF_IRONFORGE || me->GetAreaId() == AREA_DUN_MOROGH || me->GetAreaId() == AREA_ELWYNN_FOREST || me->GetAreaId() == AREA_THE_EXODAR || me->GetAreaId() == AREA_DARNASSUS) { switch (rnd) { @@ -621,7 +607,7 @@ public: break; } } - else if (me->GetAreaId() == SHATTRATH) + else if (me->GetAreaId() == AREA_SHATTRATH_CITY) { rnd = urand(0, 5); switch (rnd) @@ -1734,28 +1720,6 @@ enum BellHourlySoundFX LIGHTHOUSEFOGHORN = 7197 }; -enum BellHourlySoundZones -{ - TIRISFAL_ZONE = 85, - UNDERCITY_ZONE = 1497, - DUN_MOROGH_ZONE = 1, - IRONFORGE_ZONE = 1537, - TELDRASSIL_ZONE = 141, - DARNASSUS_ZONE = 1657, - ASHENVALE_ZONE = 331, - HILLSBRAD_FOOTHILLS_ZONE = 267, - DUSKWOOD_ZONE = 10, - WESTFALL_ZONE = 40, - DUSTWALLOW_MARSH_ZONE = 15, - SHATTRATH_ZONE = 3703 -}; - -enum LightHouseAreas -{ - AREA_ALCAZ_ISLAND = 2079, - AREA_WESTFALL_LIGHTHOUSE = 115 -}; - enum BellHourlyObjects { GO_HORDE_BELL = 175885, @@ -1787,10 +1751,10 @@ public: { switch (zoneId) { - case TIRISFAL_ZONE: - case UNDERCITY_ZONE: - case HILLSBRAD_FOOTHILLS_ZONE: - case DUSKWOOD_ZONE: + case AREA_TIRISFAL_GLADES: + case AREA_UNDERCITY: + case AREA_HILLSBRAD_FOOTHILLS: + case AREA_DUSKWOOD: _soundId = BELLTOLLHORDE; break; default: @@ -1803,17 +1767,17 @@ public: { switch (zoneId) { - case IRONFORGE_ZONE: - case DUN_MOROGH_ZONE: + case AREA_IRONFORGE: + case AREA_DUN_MOROGH: _soundId = BELLTOLLDWARFGNOME; break; - case DARNASSUS_ZONE: - case TELDRASSIL_ZONE: - case ASHENVALE_ZONE: - case SHATTRATH_ZONE: + case AREA_DARNASSUS: + case AREA_TELDRASSIL: + case AREA_ASHENVALE: + case AREA_SHATTRATH_CITY: _soundId = BELLTOLLNIGHTELF; break; - case WESTFALL_ZONE: + case AREA_WESTFALL: if (go->GetAreaId() == AREA_WESTFALL_LIGHTHOUSE) { _soundId = LIGHTHOUSEFOGHORN; @@ -1823,7 +1787,7 @@ public: _soundId = BELLTOLLALLIANCE; } break; - case DUSTWALLOW_MARSH_ZONE: + case AREA_DUSTWALLOW_MARSH: if (go->GetAreaId() == AREA_ALCAZ_ISLAND) { _soundId = LIGHTHOUSEFOGHORN; diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index 3ed876e21..7cf898de2 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CreatureScript.h" #include "ItemScript.h" #include "Player.h" @@ -45,11 +46,11 @@ public: switch (itemId) { case 24538: - if (player->GetAreaId() != 3628) + if (player->GetAreaId() != AREA_HALAA) disabled = true; break; case 34489: - if (player->GetZoneId() != 4080) + if (player->GetZoneId() != AREA_ISLE_OF_QUEL_DANAS) disabled = true; break; case 34475: @@ -135,9 +136,7 @@ public: enum PetrovClusterBombs { - SPELL_PETROV_BOMB = 42406, - AREA_ID_SHATTERED_STRAITS = 4064, - ZONE_ID_HOWLING = 495 + SPELL_PETROV_BOMB = 42406 }; class item_petrov_cluster_bombs : public ItemScript @@ -147,10 +146,10 @@ public: bool OnUse(Player* player, Item* item, const SpellCastTargets& /*targets*/) override { - if (player->GetZoneId() != ZONE_ID_HOWLING) + if (player->GetZoneId() != AREA_HOWLING_FJORD) return false; - if (!player->GetTransport() || player->GetAreaId() != AREA_ID_SHATTERED_STRAITS) + if (!player->GetTransport() || player->GetAreaId() != AREA_SHATTERED_STRAITS) { player->SendEquipError(EQUIP_ERR_NONE, item, nullptr); diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 95b7608a5..520d48efd 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaDefines.h" #include "CellImpl.h" #include "Chat.h" #include "CombatAI.h" @@ -34,6 +35,7 @@ #include "TaskScheduler.h" #include "WaypointMgr.h" #include "World.h" +#include "WorldState.h" #include "WorldStateDefines.h" /// @todo: this import is not necessary for compilation and marked as unused by the IDE @@ -212,13 +214,13 @@ public: npc_riggle_bassbaitAI(Creature* c) : ScriptedAI(c) { m_uiTimer = 0; - auto prevWinTime = sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_PREV_WIN_TIME); + auto prevWinTime = sWorldState->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_PREV_WIN_TIME); if (GameTime::GetGameTime().count() - prevWinTime > DAY) { // reset all after 1 day - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN, 1); - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 0); - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER, 0); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN, 1); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 0); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER, 0); } } @@ -226,16 +228,16 @@ public: void CheckTournamentState() const { - if (sGameEventMgr->IsActiveEvent(EVENT_FISHING_TURN_INS) && !sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER)) + if (sGameEventMgr->IsActiveEvent(EVENT_FISHING_TURN_INS) && !sWorldState->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER)) { if (!me->IsQuestGiver()) { me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); } - if (sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN)) + if (sWorldState->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN)) { me->AI()->Talk(RIGGLE_SAY_START); - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN, 0); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN, 0); } } else @@ -248,14 +250,14 @@ public: if (sGameEventMgr->IsActiveEvent(EVENT_FISHING_POOLS)) { // enable announcement: when pools despawn - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 1); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 1); } else { - if (sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN)) + if (sWorldState->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN)) { me->AI()->Talk(RIGGLE_SAY_POOLS_END); - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 0); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 0); } } } @@ -281,7 +283,7 @@ public: player->PrepareQuestMenu(creature->GetGUID()); } - if (sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER)) + if (sWorldState->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER)) { SendGossipMenuFor(player, GOSSIP_EVENT_OVER, creature->GetGUID()); } @@ -298,8 +300,8 @@ public: { creature->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); creature->AI()->Talk(RIGGLE_SAY_WINNER, player); - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_PREV_WIN_TIME, GameTime::GetGameTime().count()); - sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER, 1); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_PREV_WIN_TIME, GameTime::GetGameTime().count()); + sWorldState->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER, 1); } return true; } @@ -2108,7 +2110,6 @@ enum Fireworks SPELL_LUNAR_FORTUNE = 26522, ANIM_GO_LAUNCH_FIREWORK = 3, - ZONE_MOONGLADE = 493, }; Position omenSummonPos = {7558.993f, -2839.999f, 450.0214f, 4.46f}; @@ -2295,7 +2296,7 @@ public: if (isCluster()) { // Check if we are near Elune'ara lake south, if so try to summon Omen or a minion - if (me->GetZoneId() == ZONE_MOONGLADE) + if (me->GetZoneId() == AREA_MOONGLADE) { if (!me->FindNearestCreature(NPC_OMEN, 100.0f, false) && me->GetDistance2d(omenSummonPos.GetPositionX(), omenSummonPos.GetPositionY()) <= 100.0f) { diff --git a/src/server/shared/DataStores/DBCStructure.h b/src/server/shared/DataStores/DBCStructure.h index bfecb1cd7..6cd5ab391 100644 --- a/src/server/shared/DataStores/DBCStructure.h +++ b/src/server/shared/DataStores/DBCStructure.h @@ -18,6 +18,7 @@ #ifndef ACORE_DBCSTRUCTURE_H #define ACORE_DBCSTRUCTURE_H +#include "AreaDefines.h" #include "DBCEnums.h" #include "Define.h" #include "Util.h" @@ -531,7 +532,7 @@ struct AreaTableEntry // helpers [[nodiscard]] bool IsSanctuary() const { - if (mapid == 609) + if (mapid == MAP_EBON_HOLD) return true; return (flags & AREA_FLAG_SANCTUARY); } @@ -1405,7 +1406,7 @@ struct MapEntry [[nodiscard]] bool IsContinent() const { - return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571; + return MapID == MAP_EASTERN_KINGDOMS || MapID == MAP_KALIMDOR || MapID == MAP_OUTLAND || MapID == MAP_NORTHREND; } [[nodiscard]] bool IsDynamicDifficultyMap() const { return Flags & MAP_FLAG_DYNAMIC_DIFFICULTY; }