From 3da6e3019699e5d9f8eb3875f9def993d113a138 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:02:15 -0300 Subject: [PATCH] fix(Core/Scripts): skip areatrigger scripts for gamemasters (#25196) Co-authored-by: Claude Opus 4.6 (1M context) --- src/server/game/Handlers/MiscHandler.cpp | 3 ++- .../BlackrockMountain/BlackrockSpire/boss_the_beast.cpp | 6 ------ src/server/scripts/Kalimdor/zone_felwood.cpp | 2 +- .../FrozenHalls/HallsOfReflection/halls_of_reflection.cpp | 3 --- .../Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp | 3 +-- .../scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp | 4 ++-- 6 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index bfe454add9..e5ae429c0e 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -732,7 +732,8 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket& recv_data) if (player->isDebugAreaTriggers) ChatHandler(this).PSendSysMessage(LANG_DEBUG_AREATRIGGER_REACHED, triggerId); - if (sScriptMgr->OnAreaTrigger(player, atEntry)) + // Skip areatrigger scripts for GMs unless debug areatriggers is enabled + if ((!player->IsGameMaster() || player->isDebugAreaTriggers) && sScriptMgr->OnAreaTrigger(player, atEntry)) return; if (player->IsAlive()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp index 37d773328e..fcb9e2f694 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp @@ -246,9 +246,6 @@ public: bool OnTrigger(Player* player, AreaTrigger const* /*at*/) override { - if (player->IsGameMaster()) - return false; - if (InstanceScript* instance = player->GetInstanceScript()) { if (Creature* beast = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_THE_BEAST))) @@ -268,9 +265,6 @@ public: bool OnTrigger(Player* player, AreaTrigger const* /*at*/) override { - if (player->IsGameMaster()) - return false; - if (InstanceScript* instance = player->GetInstanceScript()) { if (Creature* beast = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_THE_BEAST))) diff --git a/src/server/scripts/Kalimdor/zone_felwood.cpp b/src/server/scripts/Kalimdor/zone_felwood.cpp index 93f33e72dd..26d3cec1fb 100644 --- a/src/server/scripts/Kalimdor/zone_felwood.cpp +++ b/src/server/scripts/Kalimdor/zone_felwood.cpp @@ -127,7 +127,7 @@ public: bool OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override { - if (player->IsGameMaster() || !player->IsAlive()) + if (!player->IsAlive()) return false; // Handle Call Ancients event start - The area trigger summons 3 ancients diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 266550e9fe..95b2c4f5c3 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1463,9 +1463,6 @@ public: bool OnTrigger(Player* player, const AreaTrigger* /*at*/) override { - if (player->IsGameMaster()) - return false; - InstanceScript* inst = player->GetInstanceScript(); if (!inst) return false; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index a80ff3250f..9b6926c962 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -1176,8 +1176,7 @@ public: { if (InstanceScript* instance = player->GetInstanceScript()) if (instance->GetBossState(DATA_LADY_DEATHWHISPER) != DONE) - if (!player->IsGameMaster()) - if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_LADY_DEATHWHISPER))) + if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_LADY_DEATHWHISPER))) ladyDeathwhisper->AI()->DoAction(ACTION_START_INTRO); return true; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 94ca3e5c45..90e53cf4a8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -3592,7 +3592,7 @@ public: bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override { if (InstanceScript* instance = player->GetInstanceScript()) - if (instance->GetBossState(DATA_SINDRAGOSA_GAUNTLET) == NOT_STARTED && !player->IsGameMaster()) + if (instance->GetBossState(DATA_SINDRAGOSA_GAUNTLET) == NOT_STARTED) if (Creature* gauntlet = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_SINDRAGOSA_GAUNTLET))) gauntlet->AI()->DoAction(ACTION_START_GAUNTLET); return true; @@ -3607,7 +3607,7 @@ public: bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override { if (InstanceScript* instance = player->GetInstanceScript()) - if (instance->GetData(DATA_PUTRICIDE_TRAP_STATE) == NOT_STARTED && !player->IsGameMaster()) + if (instance->GetData(DATA_PUTRICIDE_TRAP_STATE) == NOT_STARTED) if (Creature* trap = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_PUTRICADES_TRAP))) trap->AI()->DoAction(ACTION_START_GAUNTLET); return true;