ok... now... i completely and totally realize that this ISNT the proper way to fix this situation... and more than likely it wwill crash the serevr *lol* but i did the following to make the serevr at least BUILD
// handle flying acknowledgement
case SMSG_MOVE_SET_CAN_FLY:
{
WorldPacket p(packet);
uint64 guid = extractGuid(p);
if (guid != m_bot->GetGUID())
return;
m_bot->m_movementInfo.AddMovementFlag(MOVEFLAG_FLYING);
//m_bot->SetSpeed(MOVE_RUN, GetMaster()->GetSpeed(MOVE_FLIGHT) +0.1f, true);
return;
}
// handle dismount flying acknowledgement
case SMSG_MOVE_UNSET_CAN_FLY:
{
WorldPacket p(packet);
uint64 guid = extractGuid(p);
if (guid != m_bot->GetGUID())
return;
m_bot->m_movementInfo.RemoveMovementFlag(MOVEFLAG_FLYING);
//m_bot->SetSpeed(MOVE_RUN,GetMaster()->GetSpeedRate(MOVE_RUN),true);
return;
}
keep in mind that changing movementflag_flying to moveflag_flying was a bit of an accident.. I hadnt noticed that MOVEFLAG is normally used to express an action already in progress, while the way this structure is set, its trying to add a NEW movement flag... this could be a bit paradoxical... u can try it if you like.. it DOES let the sucker build.
personally I think that the bots should do away with the whole attempt to follow the player in flight... they should behave like pets do when you fly: dissappear when you get on the taxi and re-appear when u land... if you are physically flying (such as a mount) make em walk next to you like the pets.. wish i knew how it was done I'd convert it myself