diff --git a/zone/attack.cpp b/zone/attack.cpp index a51cd3163..ef0d4c81b 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -1877,6 +1877,10 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, EQEmu::skills::Sk if (r) r->MemberZoned(this); + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); + dead_timer.Start(5000, true); m_pp.zone_id = m_pp.binds[0].zoneId; m_pp.zoneInstance = m_pp.binds[0].instance_id; diff --git a/zone/client.cpp b/zone/client.cpp index 2d126598f..46ae726d6 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -3396,6 +3396,11 @@ void Client::LinkDead() if(raid){ raid->MemberZoned(this); } + + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); + // save_timer.Start(2500); linkdead_timer.Start(RuleI(Zone,ClientLinkdeadMS)); SendAppearancePacket(AT_Linkdead, 1); diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 5c750f03a..d50c34488 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -149,6 +149,9 @@ bool Client::Process() { { myraid->MemberZoned(this); } + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); return(false); } @@ -171,6 +174,9 @@ bool Client::Process() { if (myraid) { myraid->MemberZoned(this); } + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); return false; //delete client } @@ -653,6 +659,9 @@ bool Client::Process() { myraid->MemberZoned(this); } } + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); OnDisconnect(false); return false; } @@ -694,6 +703,10 @@ void Client::OnDisconnect(bool hard_disconnect) { if (MyRaid) MyRaid->MemberZoned(this); + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); + parse->EventPlayer(EVENT_DISCONNECT, this, "", 0); /* QS: PlayerLogConnectDisconnect */ @@ -2101,6 +2114,10 @@ void Client::HandleRespawnFromHover(uint32 Option) if(r) r->MemberZoned(this); + auto shared_task = GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(this); + m_pp.zone_id = chosen->zone_id; m_pp.zoneInstance = chosen->instance_id; database.MoveCharacterToZone(CharacterID(), database.GetZoneName(chosen->zone_id)); diff --git a/zone/entity.cpp b/zone/entity.cpp index ad8d1fb1b..4b4052175 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -537,6 +537,9 @@ void EntityList::MobProcess() Log(Logs::General, Logs::Error, "About to delete a client still in a raid."); r->MemberZoned(mob->CastToClient()); } + auto shared_task = mob->CastToClient()->GetSharedTask(); + if (shared_task) + shared_task->MemberZoned(mob); entity_list.RemoveClient(id); }