AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
TimedFleeingMovementGenerator Class Reference

#include "FleeingMovementGenerator.h"

Inheritance diagram for TimedFleeingMovementGenerator:
FleeingMovementGenerator< Creature > MovementGeneratorMedium< T, D > MovementGenerator

Public Member Functions

 TimedFleeingMovementGenerator (ObjectGuid fright, uint32 time)
 
MovementGeneratorType GetMovementGeneratorType ()
 
bool Update (Unit *, uint32)
 
void Finalize (Unit *)
 
- Public Member Functions inherited from FleeingMovementGenerator< Creature >
 FleeingMovementGenerator (ObjectGuid fleeTargetGUID)
 
void DoInitialize (Creature *)
 
void DoFinalize (Creature *)
 
void DoFinalize (Player *owner)
 
void DoReset (Creature *)
 
bool DoUpdate (Creature *, uint32)
 
- Public Member Functions inherited from MovementGeneratorMedium< T, D >
void Initialize (Unit *u) override
 
void Reset (Unit *u) override
 
- Public Member Functions inherited from MovementGenerator
virtual ~MovementGenerator ()
 
virtual uint32 GetSplineId () const
 
virtual void unitSpeedChanged ()
 
virtual void Pause (uint32)
 
virtual void Resume (uint32)
 
virtual bool GetResetPosition (float &, float &, float &)
 

Private Attributes

TimeTracker i_totalFleeTime
 

Detailed Description

Constructor & Destructor Documentation

◆ TimedFleeingMovementGenerator()

TimedFleeingMovementGenerator::TimedFleeingMovementGenerator ( ObjectGuid  fright,
uint32  time 
)
inline
52 :
54 i_totalFleeTime(time) {}
Definition FleeingMovementGenerator.h:27
TimeTracker i_totalFleeTime
Definition FleeingMovementGenerator.h:61

Member Function Documentation

◆ Finalize()

void TimedFleeingMovementGenerator::Finalize ( Unit owner)
virtual

Reimplemented from MovementGeneratorMedium< T, D >.

237{
240
241 if (Unit* victim = owner->GetVictim())
242 {
243 if (owner->IsAlive())
244 {
245 owner->AttackStop();
246 if (Creature* ownerCreature = owner->ToCreature())
247 if (CreatureAI* AI = ownerCreature->AI())
248 AI->AttackStart(victim);
249 }
250 }
251
252 if (Creature* ownerCreature = owner->ToCreature())
253 {
254 if (CreatureAI* AI = ownerCreature->AI())
255 {
256 AI->MovementInform(TIMED_FLEEING_MOTION_TYPE, 0);
257 }
258 }
259}
@ TIMED_FLEEING_MOTION_TYPE
Definition MotionMaster.h:53
@ UNIT_STATE_FLEEING_MOVE
Definition UnitDefines.h:197
@ UNIT_STATE_FLEEING
Definition UnitDefines.h:180
@ UNIT_FLAG_FLEEING
Definition UnitDefines.h:280
Definition CreatureAI.h:69
Definition Creature.h:47
Creature * ToCreature()
Definition Object.h:206
Definition Unit.h:664
void ClearUnitState(uint32 f)
Definition Unit.h:737
bool IsAlive() const
Definition Unit.h:1793
Unit * GetVictim() const
Definition Unit.h:903
bool AttackStop()
Force the unit to stop attacking. This will clear UNIT_STATE_MELEE_ATTACKING, Interrupt current spell...
Definition Unit.cpp:7436
void RemoveUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:749

References Unit::AttackStop(), Unit::ClearUnitState(), Unit::GetVictim(), Unit::IsAlive(), Unit::RemoveUnitFlag(), TIMED_FLEEING_MOTION_TYPE, Object::ToCreature(), UNIT_FLAG_FLEEING, UNIT_STATE_FLEEING, and UNIT_STATE_FLEEING_MOVE.

◆ GetMovementGeneratorType()

MovementGeneratorType TimedFleeingMovementGenerator::GetMovementGeneratorType ( )
inlinevirtual

◆ Update()

bool TimedFleeingMovementGenerator::Update ( Unit owner,
uint32  time_diff 
)
virtual

Reimplemented from MovementGeneratorMedium< T, D >.

262{
263 if (!owner->IsAlive())
264 return false;
265
267 {
268 owner->StopMoving();
269 return true;
270 }
271
272 i_totalFleeTime.Update(time_diff);
274 return false;
275
276 // This calls grant-parent Update method hiden by FleeingMovementGenerator::Update(Creature &, uint32) version
277 // This is done instead of casting Unit& to Creature& and call parent method, then we can use Unit directly
279}
@ UNIT_STATE_NOT_MOVE
Definition UnitDefines.h:225
Definition MovementGenerator.h:56
bool Update(Unit *, uint32)
Definition FleeingMovementGenerator.cpp:261
virtual bool IsMovementPreventedByCasting() const
Definition Unit.cpp:4341
void StopMoving()
Definition Unit.cpp:12997
bool HasUnitState(const uint32 f) const
Definition Unit.h:736
void Update(time_t diff)
Definition Timer.h:207
bool Passed() const
Definition Timer.h:212

References Unit::HasUnitState(), i_totalFleeTime, Unit::IsAlive(), Unit::IsMovementPreventedByCasting(), TimeTracker::Passed(), Unit::StopMoving(), UNIT_STATE_NOT_MOVE, TimeTracker::Update(), and Update().

Referenced by Update().

Member Data Documentation

◆ i_totalFleeTime

TimeTracker TimedFleeingMovementGenerator::i_totalFleeTime
private

Referenced by Update().


The documentation for this class was generated from the following files: