将MovementGenerator.cpp文件中的如下代码:
case MOVEMENTTYPE_RANDOM:
{
const uint32 mapid = m_creature->GetMapId();
MovePoint* m;
if(m_creature->GetStartingWaypoint())
{
m = m_creature->GetStartingWaypoint()->GetRandomMove(-1);
} else {
const CreatureData* data = m_creature->GetData();
if(data == NULL)
return false;
if(data->has_random_paths && mapid != 571) // exclude battlegrounds for now, until better solution
{
const WaypointStorage::const_iterator itr = sWaypointMgr[in_mapid].find(in_entry);
if(itr == sWaypointMgr[in_mapid].end())
return false;
const WaypointList* wpList = itr->second->getShuffledPath();
if(wpList->m_points.empty())
break;
MovePoint* p = wpList->m_points.front();
m = new MovePoint();
m->m_x = p->m_x;
m->m_y = p->m_y;
m->m_z = p->m_z;
m->m_orientation = p->m_orientation;
m->m_flags = p->m_flags | MONSTER_MOVE_TYPE_RANDOM_JUMP | MONSTER_MOVE_TYPE_WALK;
wpList->m_points.erase(wpList->m_points.begin());
}
else
{
return false;
}
}
m_creature->GetMotionMaster()->MoveRandomPoint(m);
break;
}
改为以下代码:
case MOVEMENTTYPE_RANDOM:
{
const uint32 mapId = m_creature->GetMapId();
if (m_creature->GetStartingWaypoint() || !m_creature->GetData()->has_random_paths)
{
return false;
}
const WaypointStorage::const_iterator itr = sWaypointMgr[mapId].find(in_entry);
if (itr == sWaypointMgr[mapId].end())
{
return false;
}
const WaypointList* wpList = itr->second->getShuffledPath();
if (wpList->m_points.empty