[11780] fix the issue that HomeMovementGenerator finalize code wasn't executed in real meaning

This commit is contained in:
SilverIce 2011-08-12 17:18:11 +03:00
parent 50e7fbbf5e
commit f572279a61
3 changed files with 7 additions and 6 deletions

View file

@ -50,17 +50,19 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature & owner)
init.SetWalk(false); init.SetWalk(false);
init.Launch(); init.Launch();
arrived = false;
owner.clearUnitState(UNIT_STAT_ALL_STATE); owner.clearUnitState(UNIT_STAT_ALL_STATE);
} }
bool HomeMovementGenerator<Creature>::Update(Creature &owner, const uint32& time_diff) bool HomeMovementGenerator<Creature>::Update(Creature &owner, const uint32& time_diff)
{ {
return !owner.movespline->Finalized(); arrived = owner.movespline->Finalized();
return !arrived;
} }
void HomeMovementGenerator<Creature>::Finalize(Creature& owner) void HomeMovementGenerator<Creature>::Finalize(Creature& owner)
{ {
if (i_travel_timer == 0) if (arrived)
{ {
if (owner.GetTemporaryFactionFlags() & TEMPFACTION_RESTORE_REACH_HOME) if (owner.GetTemporaryFactionFlags() & TEMPFACTION_RESTORE_REACH_HOME)
owner.ClearTemporaryFaction(); owner.ClearTemporaryFaction();

View file

@ -32,7 +32,7 @@ class MANGOS_DLL_SPEC HomeMovementGenerator<Creature>
{ {
public: public:
HomeMovementGenerator() {} HomeMovementGenerator() : arrived(false) {}
~HomeMovementGenerator() {} ~HomeMovementGenerator() {}
void Initialize(Creature &); void Initialize(Creature &);
@ -40,11 +40,10 @@ class MANGOS_DLL_SPEC HomeMovementGenerator<Creature>
void Interrupt(Creature &) {} void Interrupt(Creature &) {}
void Reset(Creature &); void Reset(Creature &);
bool Update(Creature &, const uint32 &); bool Update(Creature &, const uint32 &);
void modifyTravelTime(uint32 travel_time) { i_travel_timer = travel_time; }
MovementGeneratorType GetMovementGeneratorType() const { return HOME_MOTION_TYPE; } MovementGeneratorType GetMovementGeneratorType() const { return HOME_MOTION_TYPE; }
private: private:
void _setTargetLocation(Creature &); void _setTargetLocation(Creature &);
uint32 i_travel_timer; bool arrived;
}; };
#endif #endif

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "11779" #define REVISION_NR "11780"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__