From 4b88e1f17191929a2c9b7f24b92a77d663d2ae25 Mon Sep 17 00:00:00 2001 From: sindoring Date: Sun, 2 Aug 2026 20:25:03 +0400 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D1=8B=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/mod-eluna/src/ElunaLuaEngine_SC.cpp | 4 ++-- .../src/LuaEngine/methods/CreatureMethods.h | 18 +++++++++--------- .../src/LuaEngine/methods/UnitMethods.h | 4 +--- .../src/IndividualProgressionPlayer.cpp | 2 +- .../src/naxx40Scripts/boss_gothik_40.cpp | 7 ++++++- .../src/naxx40Scripts/boss_kelthuzad_40.cpp | 11 +++++------ .../src/naxx40Scripts/boss_patchwerk_40.cpp | 6 +++--- .../src/naxx40Scripts/boss_sapphiron_40.cpp | 9 ++++----- ...idivualProgressionPlayerbotsActionContext.h | 2 +- .../IndividualProgressionOnyxiaActions.h | 2 +- .../game/Entities/Player/PlayerQuest.cpp | 5 ++++- 11 files changed, 37 insertions(+), 33 deletions(-) diff --git a/modules/mod-eluna/src/ElunaLuaEngine_SC.cpp b/modules/mod-eluna/src/ElunaLuaEngine_SC.cpp index f815fea52..811038d2c 100644 --- a/modules/mod-eluna/src/ElunaLuaEngine_SC.cpp +++ b/modules/mod-eluna/src/ElunaLuaEngine_SC.cpp @@ -635,7 +635,7 @@ public: PLAYERHOOK_CAN_RESURRECT }) { } - void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool /*applySickness*/) override + void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool& /*applySickness*/) override { sEluna->OnResurrect(player); } @@ -959,7 +959,7 @@ public: SERVERHOOK_CAN_PACKET_RECEIVE }) { } - bool CanPacketSend(WorldSession* session, WorldPacket& packet) override + bool CanPacketSend(WorldSession* session, WorldPacket const& packet) override { if (!sEluna->OnPacketSend(session, packet)) return false; diff --git a/modules/mod-eluna/src/LuaEngine/methods/CreatureMethods.h b/modules/mod-eluna/src/LuaEngine/methods/CreatureMethods.h index 56af57734..ce6b85ad9 100644 --- a/modules/mod-eluna/src/LuaEngine/methods/CreatureMethods.h +++ b/modules/mod-eluna/src/LuaEngine/methods/CreatureMethods.h @@ -649,18 +649,18 @@ namespace LuaCreature float dist = Eluna::CHECKVAL(L, 5, 0.0f); int32 aura = Eluna::CHECKVAL(L, 6, 0); - auto const& threatlist = creature->GetThreatMgr().GetThreatList(); + ThreatManager const& threatMgr = creature->GetThreatMgr(); - if (threatlist.empty()) + if (threatMgr.IsThreatListEmpty()) return 1; - if (position >= threatlist.size()) + if (position >= threatMgr.GetThreatListSize()) return 1; std::list targetList; - for (auto itr = threatlist.begin(); itr != threatlist.end(); ++itr) + for (ThreatReference const* ref : threatMgr.GetSortedThreatList()) { - Unit* target = (*itr)->getTarget(); + Unit* target = ref->GetVictim(); if (!target) continue; @@ -730,14 +730,14 @@ namespace LuaCreature */ int GetAITargets(lua_State* L, Creature* creature) { - auto const& threatlist = creature->GetThreatMgr().GetThreatList(); + ThreatManager const& threatMgr = creature->GetThreatMgr(); - lua_createtable(L, threatlist.size(), 0); + lua_createtable(L, threatMgr.GetThreatListSize(), 0); int tbl = lua_gettop(L); uint32 i = 0; - for (auto itr = threatlist.begin(); itr != threatlist.end(); ++itr) + for (ThreatReference const* ref : threatMgr.GetSortedThreatList()) { - Unit* target = (*itr)->getTarget(); + Unit* target = ref->GetVictim(); if (!target) continue; diff --git a/modules/mod-eluna/src/LuaEngine/methods/UnitMethods.h b/modules/mod-eluna/src/LuaEngine/methods/UnitMethods.h index 6906d146a..9f0e44b41 100644 --- a/modules/mod-eluna/src/LuaEngine/methods/UnitMethods.h +++ b/modules/mod-eluna/src/LuaEngine/methods/UnitMethods.h @@ -1902,12 +1902,10 @@ namespace LuaUnit return 1; } - ThreatContainer::StorageType const& list = unit->GetThreatMgr().GetThreatList(); - lua_newtable(L); int table = lua_gettop(L); uint32 i = 1; - for (ThreatReference* item : list) + for (ThreatReference const* item : unit->GetThreatMgr().GetSortedThreatList()) { if (!item) { diff --git a/modules/mod-individual-progression/src/IndividualProgressionPlayer.cpp b/modules/mod-individual-progression/src/IndividualProgressionPlayer.cpp index 1bcdcd130..f82405a99 100644 --- a/modules/mod-individual-progression/src/IndividualProgressionPlayer.cpp +++ b/modules/mod-individual-progression/src/IndividualProgressionPlayer.cpp @@ -87,7 +87,7 @@ public: sIndividualProgression->CheckAdjustments(player); } - void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool /*applySickness*/) override + void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool& /*applySickness*/) override { sIndividualProgression->CheckAdjustments(player); } diff --git a/modules/mod-individual-progression/src/naxx40Scripts/boss_gothik_40.cpp b/modules/mod-individual-progression/src/naxx40Scripts/boss_gothik_40.cpp index b3c1d952b..411c7b21e 100644 --- a/modules/mod-individual-progression/src/naxx40Scripts/boss_gothik_40.cpp +++ b/modules/mod-individual-progression/src/naxx40Scripts/boss_gothik_40.cpp @@ -408,6 +408,7 @@ public: events.Repeat(15s); break; case EVENT_TELEPORT: + { me->AttackStop(); if (IN_LIVE_SIDE(me)) { @@ -417,7 +418,10 @@ public: { me->CastSpell(me, SPELL_TELEPORT_LIVE, false); } - me->GetThreatMgr().resetAggro(NotOnSameSide(me)); + NotOnSameSide notOnSameSide(me); + for (ThreatReference* ref : me->GetThreatMgr().GetModifiableThreatList()) + if (notOnSameSide(ref->GetVictim())) + me->GetThreatMgr().ResetThreat(ref->GetVictim()); if (Unit* pTarget = SelectTarget(SelectTargetMethod::MaxDistance, 0)) { me->GetThreatMgr().AddThreat(pTarget, 100.0f); @@ -425,6 +429,7 @@ public: } events.Repeat(20s); break; + } case EVENT_CHECK_HEALTH: if (me->HealthBelowPct(30)) { diff --git a/modules/mod-individual-progression/src/naxx40Scripts/boss_kelthuzad_40.cpp b/modules/mod-individual-progression/src/naxx40Scripts/boss_kelthuzad_40.cpp index f53beeec7..fcb8d60ee 100644 --- a/modules/mod-individual-progression/src/naxx40Scripts/boss_kelthuzad_40.cpp +++ b/modules/mod-individual-progression/src/naxx40Scripts/boss_kelthuzad_40.cpp @@ -403,14 +403,13 @@ public: case EVENT_DETONATE_MANA: { std::vector unitList; - ThreatContainer::StorageType const& threatList = me->GetThreatMgr().GetThreatList(); - for (auto itr : threatList) + for (ThreatReference const* ref : me->GetThreatMgr().GetSortedThreatList()) { - if (itr->getTarget()->IsPlayer() - && itr->getTarget()->getPowerType() == POWER_MANA - && itr->getTarget()->GetPower(POWER_MANA)) + if (ref->GetVictim()->IsPlayer() + && ref->GetVictim()->getPowerType() == POWER_MANA + && ref->GetVictim()->GetPower(POWER_MANA)) { - unitList.push_back(itr->getTarget()); + unitList.push_back(ref->GetVictim()); } } if (!unitList.empty()) diff --git a/modules/mod-individual-progression/src/naxx40Scripts/boss_patchwerk_40.cpp b/modules/mod-individual-progression/src/naxx40Scripts/boss_patchwerk_40.cpp index 64afec131..4948949b7 100644 --- a/modules/mod-individual-progression/src/naxx40Scripts/boss_patchwerk_40.cpp +++ b/modules/mod-individual-progression/src/naxx40Scripts/boss_patchwerk_40.cpp @@ -118,11 +118,10 @@ public: std::list meleeRangeTargets; Unit* finalTarget = nullptr; uint8 counter = 0; - auto i = me->GetThreatMgr().GetThreatList().begin(); - for (; i != me->GetThreatMgr().GetThreatList().end(); ++i, ++counter) + for (ThreatReference const* ref : me->GetThreatMgr().GetSortedThreatList()) { // Gather all units with melee range - Unit* target = (*i)->getTarget(); + Unit* target = ref->GetVictim(); if (me->IsWithinMeleeRange(target)) { meleeRangeTargets.push_back(target); @@ -132,6 +131,7 @@ public: { me->AddThreat(target, 500.0f); } + ++counter; } counter = 0; std::list>::iterator itr; diff --git a/modules/mod-individual-progression/src/naxx40Scripts/boss_sapphiron_40.cpp b/modules/mod-individual-progression/src/naxx40Scripts/boss_sapphiron_40.cpp index 8b17c6e49..74e32cbd7 100644 --- a/modules/mod-individual-progression/src/naxx40Scripts/boss_sapphiron_40.cpp +++ b/modules/mod-individual-progression/src/naxx40Scripts/boss_sapphiron_40.cpp @@ -346,17 +346,16 @@ public: } std::vector targets; - auto i = me->GetThreatMgr().GetThreatList().begin(); - for (; i != me->GetThreatMgr().GetThreatList().end(); ++i) + for (ThreatReference const* ref : me->GetThreatMgr().GetSortedThreatList()) { - if ((*i)->getTarget()->IsPlayer()) + if (ref->GetVictim()->IsPlayer()) { bool inList = false; if (!blockList.empty()) { for (GuidList::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr) { - if ((*i)->getTarget()->GetGUID() == *itr) + if (ref->GetVictim()->GetGUID() == *itr) { inList = true; break; @@ -365,7 +364,7 @@ public: } if (!inList) { - targets.push_back((*i)->getTarget()); + targets.push_back(ref->GetVictim()); } } } diff --git a/modules/mod-individual-progression/src/playerbots/InidivualProgressionPlayerbotsActionContext.h b/modules/mod-individual-progression/src/playerbots/InidivualProgressionPlayerbotsActionContext.h index c12509d37..7c92fc9f5 100644 --- a/modules/mod-individual-progression/src/playerbots/InidivualProgressionPlayerbotsActionContext.h +++ b/modules/mod-individual-progression/src/playerbots/InidivualProgressionPlayerbotsActionContext.h @@ -4,7 +4,7 @@ #include "ActionContext.h" #include "IndividualProgressionOnyxiaActions.h" -#include "RaidOnyxiaActionContext.h" +#include "OnyActionContext.h" class IPOnyxiaActionContext : public RaidOnyxiaActionContext { diff --git a/modules/mod-individual-progression/src/playerbots/raids/Onyxia/IndividualProgressionOnyxiaActions.h b/modules/mod-individual-progression/src/playerbots/raids/Onyxia/IndividualProgressionOnyxiaActions.h index 0f432db42..9a070a976 100644 --- a/modules/mod-individual-progression/src/playerbots/raids/Onyxia/IndividualProgressionOnyxiaActions.h +++ b/modules/mod-individual-progression/src/playerbots/raids/Onyxia/IndividualProgressionOnyxiaActions.h @@ -1,7 +1,7 @@ #ifdef MOD_PLAYERBOTS #ifndef MOD_INDIVIDUAL_PROGRESSION_ONYXIAACTIONS_H #define MOD_INDIVIDUAL_PROGRESSION_ONYXIAACTIONS_H -#include "RaidOnyxiaActions.h" +#include "OnyActions.h" class IPOnyxiaKillWhelpsAction : public RaidOnyxiaKillWhelpsAction { diff --git a/src/server/game/Entities/Player/PlayerQuest.cpp b/src/server/game/Entities/Player/PlayerQuest.cpp index 8bfd75a82..5f242fefc 100644 --- a/src/server/game/Entities/Player/PlayerQuest.cpp +++ b/src/server/game/Entities/Player/PlayerQuest.cpp @@ -27,6 +27,7 @@ #include "Player.h" #include "PoolMgr.h" #include "QuestPackets.h" +#include "RaceMgr.h" #include "ReputationMgr.h" #include "ScriptMgr.h" #include "SpellAuraEffects.h" @@ -1137,7 +1138,9 @@ bool Player::SatisfyQuestRace(Quest const* qInfo, bool msg) const // while still respecting truly race-specific quests on the opposite side. if (GetTeamId() != GetTeamId(true)) { - uint32 currentFactionRaceMask = (GetTeamId() == TEAM_ALLIANCE) ? RACEMASK_ALLIANCE : RACEMASK_HORDE; + uint32 currentFactionRaceMask = (GetTeamId() == TEAM_ALLIANCE) + ? sRaceMgr->GetAllianceRaceMask() + : sRaceMgr->GetHordeRaceMask(); if ((reqraces & currentFactionRaceMask) == reqraces) return true; }