diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-06-08 01:07:44 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-06-08 01:07:44 +0200 |
commit | 0f9a0accf17ba3a9f20d6a7575b51ed2cb09a73c (patch) | |
tree | 2a883a8df46b6d90fb2d2cba3edfead398216f94 /src/server | |
parent | aab8cdec35d66e895679d0e2e179331cfe19efc0 (diff) |
Core/Misc: Kill AnyPlayerInObjectRangeCheck (duplicate of AnyUnitInObjectRangeCheck)
Diffstat (limited to 'src/server')
9 files changed, 40 insertions, 78 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index e8bb99ffb01..731bc5c7991 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1472,8 +1472,8 @@ void GameObject::Update(uint32 diff) { // Environmental trap: Any player Player* player = nullptr; - Trinity::AnyPlayerInObjectRangeCheck checker(this, radius); - Trinity::PlayerSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, player, checker); + Trinity::AnyUnitInObjectRangeCheck checker(this, radius); + Trinity::PlayerSearcher searcher(this, player, checker); Cell::VisitWorldObjects(this, searcher, radius); target = player; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 26e3c8585f3..cdaf87c80a9 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -3452,8 +3452,8 @@ void WorldObject::GetCreatureListWithOptionsInGrid(Container& creatureContainer, template <typename Container> void WorldObject::GetPlayerListInGrid(Container& playerContainer, float maxSearchRange, bool alive /*= true*/) const { - Trinity::AnyPlayerInObjectRangeCheck checker(this, maxSearchRange, alive); - Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, playerContainer, checker); + Trinity::AnyUnitInObjectRangeCheck checker(this, maxSearchRange, true, alive); + Trinity::PlayerListSearcher searcher(this, playerContainer, checker); Cell::VisitWorldObjects(this, searcher, maxSearchRange); } @@ -3746,26 +3746,23 @@ void WorldObject::DestroyForNearbyPlayers() if (!IsInWorld()) return; - std::list<Player*> targets; - Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange(), false); - Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, targets, check); - Cell::VisitWorldObjects(this, searcher, GetVisibilityRange()); - for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter) + auto destroyer = [this](Player* player) { - Player* player = (*iter); - if (player == this) - continue; + return; if (!player->HaveAtClient(this)) - continue; + return; if (Unit const* unit = ToUnit(); unit && unit->GetCharmerGUID() == player->GetGUID()) /// @todo this is for puppet - continue; + return; DestroyForPlayer(player); player->m_clientGUIDs.erase(GetGUID()); - } + }; + + Trinity::PlayerDistWorker worker(this, GetVisibilityRange(), destroyer); + Cell::VisitWorldObjects(this, worker, GetVisibilityRange()); } void WorldObject::UpdateObjectVisibility(bool /*forced*/) diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 41a74f2fc4c..39ee9374f6c 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -1599,28 +1599,6 @@ namespace Trinity Customizer& i_customizer; }; - class AnyPlayerInObjectRangeCheck - { - public: - AnyPlayerInObjectRangeCheck(WorldObject const* obj, float range, bool reqAlive = true) : _obj(obj), _range(range), _reqAlive(reqAlive) { } - - bool operator()(Player* u) const - { - if (_reqAlive && !u->IsAlive()) - return false; - - if (!_obj->IsWithinDist(u, _range)) - return false; - - return true; - } - - private: - WorldObject const* _obj; - float _range; - bool _reqAlive; - }; - class AnyPlayerInPositionRangeCheck { public: diff --git a/src/server/scripts/Events/love_is_in_the_air.cpp b/src/server/scripts/Events/love_is_in_the_air.cpp index 937aefd7fa7..10a5448c43b 100644 --- a/src/server/scripts/Events/love_is_in_the_air.cpp +++ b/src/server/scripts/Events/love_is_in_the_air.cpp @@ -16,10 +16,8 @@ */ #include "ScriptMgr.h" -#include "CellImpl.h" #include "Containers.h" #include "CreatureAIImpl.h" -#include "GridNotifiersImpl.h" #include "Player.h" #include "SpellAuraEffects.h" #include "SpellScript.h" @@ -75,21 +73,16 @@ class spell_love_is_in_the_air_romantic_picnic : public AuraScript bool foundSomeone = false; // For nearby players, check if they have the same aura. If so, cast Romantic Picnic (45123) // required by achievement and "hearts" visual - std::list<Player*> playerList; - Trinity::AnyPlayerInObjectRangeCheck checker(target, INTERACTION_DISTANCE*2); - Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(target, playerList, checker); - Cell::VisitWorldObjects(target, searcher, INTERACTION_DISTANCE * 2); - for (std::list<Player*>::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) + std::vector<Player*> playerList; + target->GetPlayerListInGrid(playerList, INTERACTION_DISTANCE * 2); + for (Player* playerFound : playerList) { - if (Player* playerFound = (*itr)) + if (target != playerFound && playerFound->HasAura(GetId())) { - if (target != playerFound && playerFound->HasAura(GetId())) - { - playerFound->CastSpell(playerFound, SPELL_ROMANTIC_PICNIC_ACHIEV, true); - target->CastSpell(target, SPELL_ROMANTIC_PICNIC_ACHIEV, true); - foundSomeone = true; - break; - } + playerFound->CastSpell(playerFound, SPELL_ROMANTIC_PICNIC_ACHIEV, true); + target->CastSpell(target, SPELL_ROMANTIC_PICNIC_ACHIEV, true); + foundSomeone = true; + break; } } diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 3931703e223..0beae4707c5 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -30,13 +30,13 @@ npc_magwin EndContentData */ #include "ScriptMgr.h" -#include "CellImpl.h" -#include "GameObjectAI.h" -#include "GridNotifiersImpl.h" +#include "GameObject.h" #include "MotionMaster.h" #include "ObjectAccessor.h" +#include "Player.h" #include "ScriptedEscortAI.h" #include "ScriptedGossip.h" +#include "SpellInfo.h" #include "SpellScript.h" #include "TemporarySummon.h" @@ -571,14 +571,12 @@ public: void CompleteQuest() { float radius = 50.0f; - std::list<Player*> players; - Trinity::AnyPlayerInObjectRangeCheck checker(me, radius); - Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, players, checker); - Cell::VisitWorldObjects(me, searcher, radius); - - for (std::list<Player*>::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if ((*itr)->GetQuestStatus(QUEST_TREES_COMPANY) == QUEST_STATUS_INCOMPLETE && (*itr)->HasAura(SPELL_TREE_DISGUISE)) - (*itr)->KilledMonsterCredit(NPC_SPARK); + std::vector<Player*> players; + me->GetPlayerListInGrid(players, radius); + + for (Player* player : players) + if (player->GetQuestStatus(QUEST_TREES_COMPANY) == QUEST_STATUS_INCOMPLETE && player->HasAura(SPELL_TREE_DISGUISE)) + player->KilledMonsterCredit(NPC_SPARK); } void DespawnNagaFlag(bool despawn) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp index 075efea3abf..db7614009e6 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp @@ -685,8 +685,8 @@ struct npc_crok_scourgebane : public EscortAI { _wipeCheckTimer = 1000; Player* player = nullptr; - Trinity::AnyPlayerInObjectRangeCheck check(me, 60.0f); - Trinity::PlayerSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, player, check); + Trinity::AnyUnitInObjectRangeCheck check(me, 60.0f); + Trinity::PlayerSearcher searcher(me, player, check); Cell::VisitWorldObjects(me, searcher, 60.0f); // wipe if (!player) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index aa44e6bb7a7..ea6d1e8e159 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -942,8 +942,8 @@ struct npc_dream_cloud : public ScriptedAI case EVENT_CHECK_PLAYER: { Player* player = nullptr; - Trinity::AnyPlayerInObjectRangeCheck check(me, 5.0f); - Trinity::PlayerSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, player, check); + Trinity::AnyUnitInObjectRangeCheck check(me, 5.0f); + Trinity::PlayerSearcher searcher(me, player, check); Cell::VisitWorldObjects(me, searcher, 7.5f); _events.ScheduleEvent(player ? EVENT_EXPLODE : EVENT_CHECK_PLAYER, 1s); break; diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 7430a50d374..2c2eff515e4 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -22,9 +22,7 @@ */ #include "ScriptMgr.h" -#include "CellImpl.h" #include "CreatureAIImpl.h" -#include "GridNotifiersImpl.h" #include "ObjectMgr.h" #include "Player.h" #include "ScriptedCreature.h" @@ -724,15 +722,13 @@ class spell_q11010_q11102_q11023_choose_loc : public SpellScript { Unit* caster = GetCaster(); // Check for player that is in 65 y range - std::list<Player*> playerList; - Trinity::AnyPlayerInObjectRangeCheck checker(caster, 65.0f); - Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(caster, playerList, checker); - Cell::VisitWorldObjects(caster, searcher, 65.0f); - for (std::list<Player*>::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) + std::vector<Player*> playerList; + caster->GetPlayerListInGrid(playerList, 65.0f); + for (Player* player : playerList) // Check if found player target is on fly mount or using flying form - if ((*itr)->HasAuraType(SPELL_AURA_FLY) || (*itr)->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + if (player->HasAuraType(SPELL_AURA_FLY) || player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) // Summom Fel Cannon (bunny version) at found player - caster->SummonCreature(NPC_FEL_CANNON2, (*itr)->GetPositionX(), (*itr)->GetPositionY(), (*itr)->GetPositionZ()); + caster->SummonCreature(NPC_FEL_CANNON2, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); } void Register() override diff --git a/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp b/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp index 358e3ff5171..1ac109041b6 100644 --- a/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp +++ b/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp @@ -402,8 +402,8 @@ class spell_volkaal_rapid_decay : public AuraScript float range = 100.0f; Player* player = nullptr; - Trinity::AnyPlayerInObjectRangeCheck check(caster, range); - Trinity::PlayerSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(caster, player, check); + Trinity::AnyUnitInObjectRangeCheck check(caster, range); + Trinity::PlayerSearcher searcher(caster, player, check); Cell::VisitWorldObjects(caster, searcher, range); CastSpellExtraArgs args; |