aboutsummaryrefslogtreecommitdiff
path: root/src/game/RandomMovementGenerator.cpp
diff options
context:
space:
mode:
authorshadowu@mail.bg <none@none>2008-12-19 00:37:40 +0200
committershadowu@mail.bg <none@none>2008-12-19 00:37:40 +0200
commit51f0c70b7ea7eca2b0fcc05a38fa155b7378741f (patch)
tree52f9e2db42bfc10d9fd8b65b26c9884ae6ebe71c /src/game/RandomMovementGenerator.cpp
parent058db69e0730975cd0e3e03e5abca78828808dd8 (diff)
*Movement Generators standardization.
- bool GetDestination(&x,&y,&z) added to all movement generators.(it is used by update of players view distance) - Fixed when creature entering in combat not count this as StoppedByPlayer. - Random Movement Generator - added support for creating custom spawndist during the game. - Random Movement Generator - Db spawndist is checked only at initialize(NOT in each sellect of random location). - Added Random Movement to motion master - it can be called now by MoveRandom(spawndist) e.g. for use in SD2. - Home and Random movements no more using RespawnCoords(Home Position has implemented) - Fixed bug when creature is moving on path and enter combat, after that returns to spawn position. -Typo fix in Confused Movement Generator --HG-- branch : trunk
Diffstat (limited to 'src/game/RandomMovementGenerator.cpp')
-rw-r--r--src/game/RandomMovementGenerator.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/game/RandomMovementGenerator.cpp b/src/game/RandomMovementGenerator.cpp
index 311cc7c6e17..db4f6bf5b42 100644
--- a/src/game/RandomMovementGenerator.cpp
+++ b/src/game/RandomMovementGenerator.cpp
@@ -21,6 +21,8 @@
#include "Creature.h"
#include "MapManager.h"
#include "RandomMovementGenerator.h"
+#include "Traveller.h"
+#include "ObjectAccessor.h"
#include "DestinationHolderImp.h"
#include "Map.h"
#include "Util.h"
@@ -42,9 +44,9 @@ template<>
void
RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature)
{
- float X,Y,Z,z,nx,ny,nz,wander_distance,ori,dist;
+ float X,Y,Z,z,nx,ny,nz,ori,dist;
- creature.GetRespawnCoord(X, Y, Z, &ori, &wander_distance);
+ creature.GetHomePosition(X, Y, Z, ori);
z = creature.GetPositionZ();
uint32 mapid=creature.GetMapId();
@@ -120,8 +122,10 @@ RandomMovementGenerator<Creature>::Initialize(Creature &creature)
{
if(!creature.isAlive())
return;
-
- if (creature.canFly())
+
+ wander_distance = creature.GetRespawnRadius();
+
+ if (creature.canFly())
creature.AddUnitMovementFlag(MOVEMENTFLAG_FLYING2);
else
creature.SetUnitMovementFlags(irand(0,RUNNING_CHANCE_RANDOMMV) > 0 ? MOVEMENTFLAG_WALK_MODE : MOVEMENTFLAG_NONE );
@@ -136,6 +140,10 @@ RandomMovementGenerator<Creature>::Reset(Creature &creature)
}
template<>
+void
+RandomMovementGenerator<Creature>::Finalize(Creature &creature){}
+
+template<>
bool
RandomMovementGenerator<Creature>::Update(Creature &creature, const uint32 &diff)
{