mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-16 02:10:28 +00:00
**Original issue:** https://github.com/mod-playerbots/mod-playerbots/issues/1902 **Original cause:** charmed bot (with lost client control) got rooted at the same time. **How to reproduce:** 1. Spawn creatures 11350 (x3) and 11830 (x3) using the command: `.npc add <entry>` in a quiet place. 2. Create any party with random bots or alt bots (should be 60-65 levels), make sure there is at least one healer. 3. Set the healer's mana to a high value, like 100M, using command: `.mod mana <value>`. 4. Start the fight while continuously respawning creatures with: `.resp all`. 5. When console starts to spam 'heartbeat' messages, check your party members' movement flags to identify which one has `MOVEMENTFLAG_ROOT` 0x00000800 (2048) using the command: `.debug move`. This PR will not fix ALL 'heartbeat' issues, as `ServerFacade::SetFacingTo` still sends `SendMovementFlagUpdate` while bots can have the `MOVEMENTFLAG_ROOT` flag.
28 lines
767 B
C++
28 lines
767 B
C++
/*
|
|
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
|
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
|
*/
|
|
|
|
#include "AcceptResurrectAction.h"
|
|
|
|
#include "Event.h"
|
|
#include "Playerbots.h"
|
|
|
|
bool AcceptResurrectAction::Execute(Event event)
|
|
{
|
|
if (bot->IsAlive())
|
|
return false;
|
|
|
|
WorldPacket p(event.getPacket());
|
|
p.rpos(0);
|
|
ObjectGuid guid;
|
|
p >> guid;
|
|
|
|
WorldPacket packet(CMSG_RESURRECT_RESPONSE, 8 + 1);
|
|
packet << guid;
|
|
packet << uint8(1); // accept
|
|
bot->GetSession()->HandleResurrectResponseOpcode(packet); // queue the packet to get around race condition
|
|
|
|
return true;
|
|
}
|