From cbb532e4bec11d59f2072441a43b7c797de6d16d Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 11 Jul 2025 17:40:34 +0200 Subject: Core/Groups: Use iterators instead of raw LinkedListElement to interact with group members --- src/server/scripts/Commands/cs_group.cpp | 62 +++++++++++++------------------- src/server/scripts/Commands/cs_tele.cpp | 7 ++-- 2 files changed, 27 insertions(+), 42 deletions(-) (limited to 'src/server/scripts/Commands') diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp index 24e412e0c93..83471c9716a 100644 --- a/src/server/scripts/Commands/cs_group.cpp +++ b/src/server/scripts/Commands/cs_group.cpp @@ -92,27 +92,24 @@ public: if (!groupTarget) return false; - for (GroupReference* it = groupTarget->GetFirstMember(); it != nullptr; it = it->next()) + for (GroupReference const& it : groupTarget->GetMembers()) { - target = it->GetSource(); - if (target) - { - uint8 oldlevel = static_cast(target->GetLevel()); + target = it.GetSource(); + uint8 oldlevel = static_cast(target->GetLevel()); - if (level != oldlevel) - { - target->SetLevel(static_cast(level)); - target->InitTalentForLevel(); - target->SetXP(0); - } + if (level != oldlevel) + { + target->SetLevel(static_cast(level)); + target->InitTalentForLevel(); + target->SetXP(0); + } - if (handler->needReportToTarget(target)) - { - if (oldlevel < static_cast(level)) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_LEVEL_UP, handler->GetNameLink().c_str(), level); - else // if (oldlevel > newlevel) - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_LEVEL_DOWN, handler->GetNameLink().c_str(), level); - } + if (handler->needReportToTarget(target)) + { + if (oldlevel < static_cast(level)) + ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_LEVEL_UP, handler->GetNameLink().c_str(), level); + else // if (oldlevel > newlevel) + ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_LEVEL_DOWN, handler->GetNameLink().c_str(), level); } } return true; @@ -128,15 +125,12 @@ public: if (!groupTarget) return false; - for (GroupReference* it = groupTarget->GetFirstMember(); it != nullptr; it = it->next()) + for (GroupReference const& it : groupTarget->GetMembers()) { - Player* target = it->GetSource(); - if (target) - { - target->ResurrectPlayer(target->GetSession()->HasPermission(rbac::RBAC_PERM_RESURRECT_WITH_FULL_HPS) ? 1.0f : 0.5f); - target->SpawnCorpseBones(); - target->SaveToDB(); - } + Player* target = it.GetSource(); + target->ResurrectPlayer(target->GetSession()->HasPermission(rbac::RBAC_PERM_RESURRECT_WITH_FULL_HPS) ? 1.0f : 0.5f); + target->SpawnCorpseBones(); + target->SaveToDB(); } return true; @@ -153,14 +147,8 @@ public: if (!groupTarget) return false; - for (GroupReference* it = groupTarget->GetFirstMember(); it != nullptr; it = it->next()) - { - Player* target = it->GetSource(); - if (target) - { - target->DurabilityRepairAll(false, 0, false); - } - } + for (GroupReference const& it : groupTarget->GetMembers()) + it.GetSource()->DurabilityRepairAll(false, 0, false); return true; } @@ -204,11 +192,11 @@ public: } } - for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const& itr : group->GetMembers()) { - Player* player = itr->GetSource(); + Player* player = itr.GetSource(); - if (!player || player == gmPlayer || !player->GetSession()) + if (player == gmPlayer) continue; // check online security diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 0e1b2178bac..48866791fcb 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -249,12 +249,9 @@ public: return false; } - for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const& itr : grp->GetMembers()) { - Player* player = itr->GetSource(); - - if (!player || !player->GetSession()) - continue; + Player* player = itr.GetSource(); // check online security if (handler->HasLowerSecurity(player, ObjectGuid::Empty)) -- cgit v1.2.3