mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-10 02:31:03 +00:00
[Crash] Fix dangling Group member pointers for Bots. (#3134)
* [Crash] Fix dangling Group member pointers for Bots. * fixes for edge cases
This commit is contained in:
+12
-6
@@ -547,11 +547,13 @@ bool Group::UpdatePlayer(Mob* update) {
|
||||
void Group::MemberZoned(Mob* removemob) {
|
||||
uint32 i;
|
||||
|
||||
if (removemob == nullptr)
|
||||
if (!removemob) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(removemob == GetLeader())
|
||||
if (removemob == GetLeader()) {
|
||||
SetLeader(nullptr);
|
||||
}
|
||||
|
||||
//should NOT clear the name, it is used for world communication.
|
||||
for (auto & m : members) {
|
||||
@@ -560,17 +562,21 @@ void Group::MemberZoned(Mob* removemob) {
|
||||
}
|
||||
}
|
||||
|
||||
if(removemob->IsClient() && HasRole(removemob, RoleAssist))
|
||||
if (removemob->IsClient() && HasRole(removemob, RoleAssist)) {
|
||||
SetGroupAssistTarget(0);
|
||||
}
|
||||
|
||||
if(removemob->IsClient() && HasRole(removemob, RoleTank))
|
||||
if (removemob->IsClient() && HasRole(removemob, RoleTank)) {
|
||||
SetGroupTankTarget(0);
|
||||
}
|
||||
|
||||
if(removemob->IsClient() && HasRole(removemob, RolePuller))
|
||||
if (removemob->IsClient() && HasRole(removemob, RolePuller)) {
|
||||
SetGroupPullerTarget(0);
|
||||
}
|
||||
|
||||
if (removemob->IsClient() && removemob == mentoree)
|
||||
if (removemob->IsClient() && removemob == mentoree) {
|
||||
mentoree = nullptr;
|
||||
}
|
||||
|
||||
if (RuleB(Bots, Enabled)) {
|
||||
Bot::UpdateGroupCastingRoles(this);
|
||||
|
||||
Reference in New Issue
Block a user