void SmartAI::UpdateAI(uint32 diff) { GetScript()->OnUpdate(diff); UpdatePath(diff); UpdateDespawn(diff); /// @todo move to void if (mFollowGuid) { if (mFollowArrivedTimer < diff) { if (me->FindNearestCreature(mFollowArrivedEntry, INTERACTION_DISTANCE, true)) { StopFollow(); return; } mFollowArrivedTimer = 1000; } else mFollowArrivedTimer -= diff; } if (!UpdateVictim()) return; if (mCanAutoAttack) DoMeleeAttackIfReady(); }
void SmartAI::UpdateFollow(uint32 diff) { if (mFollowGuid) { if (mFollowArrivedTimer < diff) { if (me->FindNearestCreature(mFollowArrivedEntry, INTERACTION_DISTANCE, true)) { StopFollow(true); return; } mFollowArrivedTimer = 1000; } else mFollowArrivedTimer -= diff; } }
void SmartAI::SetFollow(Unit* target, float dist, float angle, uint32 credit, uint32 end, uint32 creditType) { if (!target) { StopFollow(false); return; } mFollowGuid = target->GetGUID(); mFollowDist = dist; mFollowAngle = angle; mFollowArrivedTimer = 1000; mFollowCredit = credit; mFollowArrivedEntry = end; mFollowCreditType = creditType; SetRun(mRun); me->GetMotionMaster()->MoveFollow(target, mFollowDist, mFollowAngle); }
void SmartAI::SetFollow(Unit* target, float dist, float angle, uint32 credit, uint32 end, uint32 creditType) { if (!target) { StopFollow(); return; } SetRun(mRun); mFollowGuid = target->GetGUID(); mFollowDist = dist >= 0.0f ? dist : PET_FOLLOW_DIST; mFollowAngle = angle >= 0.0f ? angle : me->GetFollowAngle(); mFollowArrivedTimer = 1000; mFollowCredit = credit; mFollowArrivedEntry = end; me->GetMotionMaster()->MoveFollow(target, mFollowDist, mFollowAngle); mFollowCreditType = creditType; }