*Additional movement checks added.
--HG-- branch : trunk
This commit is contained in:
@@ -219,6 +219,7 @@ void Creature::RemoveCorpse()
|
|||||||
|
|
||||||
float x,y,z,o;
|
float x,y,z,o;
|
||||||
GetRespawnCoord(x, y, z, &o);
|
GetRespawnCoord(x, y, z, &o);
|
||||||
|
SetHomePosition(x,y,z,o);
|
||||||
GetMap()->CreatureRelocation(this,x,y,z,o);
|
GetMap()->CreatureRelocation(this,x,y,z,o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ void WaypointStore::Free()
|
|||||||
|
|
||||||
void WaypointStore::Load()
|
void WaypointStore::Load()
|
||||||
{
|
{
|
||||||
QueryResult *result = WorldDatabase.PQuery("SELECT MAX(`id`) FROM `waypoint_data");
|
QueryResult *result = WorldDatabase.PQuery("SELECT MAX(`id`) FROM `waypoint_data`");
|
||||||
if(!result)
|
if(!result)
|
||||||
{
|
{
|
||||||
sLog.outError(" an error occured while loading the table `waypoint_data` ( maybe it doesn't exist ?)\n");
|
sLog.outError(" an error occured while loading the table `waypoint_data` ( maybe it doesn't exist ?)\n");
|
||||||
@@ -44,7 +44,6 @@ void WaypointStore::Load()
|
|||||||
records = (*result)[0].GetUInt32();
|
records = (*result)[0].GetUInt32();
|
||||||
delete result;
|
delete result;
|
||||||
|
|
||||||
|
|
||||||
result = WorldDatabase.PQuery("SELECT `id`,`point`,`position_x`,`position_y`,`position_z`,`move_flag`,`delay`,`action`,`action_chance` FROM `waypoint_data` ORDER BY `id`, `point`");
|
result = WorldDatabase.PQuery("SELECT `id`,`point`,`position_x`,`position_y`,`position_z`,`move_flag`,`delay`,`action`,`action_chance` FROM `waypoint_data` ORDER BY `id`, `point`");
|
||||||
if(!result)
|
if(!result)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,24 +15,17 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
//Basic headers
|
||||||
//Basic header
|
|
||||||
#include <ctime>
|
|
||||||
|
|
||||||
#include "WaypointMovementGenerator.h"
|
#include "WaypointMovementGenerator.h"
|
||||||
#include "DestinationHolderImp.h"
|
#include "DestinationHolderImp.h"
|
||||||
//Accessors
|
//Extended headers
|
||||||
#include "Database/DatabaseEnv.h"
|
|
||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
//Creature-specific headers
|
//Creature-specific headers
|
||||||
#include "Creature.h"
|
#include "Creature.h"
|
||||||
#include "CreatureAI.h"
|
#include "CreatureAI.h"
|
||||||
//Player-Specific
|
//Player-specific
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
//Visual
|
|
||||||
#include "ProgressBar.h"
|
|
||||||
#include "MapManager.h"
|
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
void
|
void
|
||||||
@@ -42,6 +35,8 @@ template<>
|
|||||||
void
|
void
|
||||||
WaypointMovementGenerator<Creature>::Initialize(Creature &u)
|
WaypointMovementGenerator<Creature>::Initialize(Creature &u)
|
||||||
{
|
{
|
||||||
|
u.StopMoving();
|
||||||
|
i_nextMoveTime.Reset(0);
|
||||||
i_currentNode = -1;
|
i_currentNode = -1;
|
||||||
if(!path_id)
|
if(!path_id)
|
||||||
path_id = u.GetWaypointPath();
|
path_id = u.GetWaypointPath();
|
||||||
@@ -160,6 +155,7 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff)
|
|||||||
i_currentNode = 0; //Start moving all over again
|
i_currentNode = 0; //Start moving all over again
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
unit.SetHomePosition(node.x, node.y, node.z, unit.GetOrientation());
|
||||||
unit.GetMotionMaster()->Initialize();
|
unit.GetMotionMaster()->Initialize();
|
||||||
return false; //Clear the waypoint movement
|
return false; //Clear the waypoint movement
|
||||||
}
|
}
|
||||||
@@ -184,6 +180,7 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff)
|
|||||||
MovementInform(unit);
|
MovementInform(unit);
|
||||||
unit.UpdateWaypointID(i_currentNode);
|
unit.UpdateWaypointID(i_currentNode);
|
||||||
unit.clearUnitState(UNIT_STAT_MOVING);
|
unit.clearUnitState(UNIT_STAT_MOVING);
|
||||||
|
unit.Relocate(node.x, node.y, node.z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user