www.pudn.com > ScriptDev.rar > npc_escortAI.h


#include "sc_creature.h" 
 
/* 
#include "CreatureAI.h" 
#include "../../ScriptMgr.h"*/ 
 
struct Escort_Waypoint 
{ 
    Escort_Waypoint(uint32 _id, float _x, float _y, float _z, uint32 _w) 
    { 
        id = _id; 
        x = _x; 
        y = _y; 
        z = _z; 
        WaitTimeMs = _w; 
    } 
 
    uint32 id; 
    float x; 
    float y; 
    float z; 
    uint32 WaitTimeMs; 
}; 
 
struct MANGOS_DLL_DECL npc_escortAI : public ScriptedAI 
{ 
public: 
 
    // Pure Virtual Functions 
    virtual void WaypointReached(uint32) = 0; 
 
    virtual void Aggro(Unit*) = 0; 
 
    virtual void Reset() = 0; 
 
    // CreatureAI functions 
    npc_escortAI(Creature *c) : ScriptedAI(c), IsBeingEscorted(false), PlayerTimer(1000) {m_creature->GetPosition(LastPos.x, LastPos.y, LastPos.z);} 
 
    bool IsVisible(Unit*) const; 
 
    void AttackStart(Unit*); 
 
    void MoveInLineOfSight(Unit*); 
 
    void JustRespawned(); 
 
    void EnterEvadeMode(); 
 
    void UpdateAI(const uint32); 
 
    void MovementInform(uint32, uint32); 
 
    // EscortAI functions 
    void AddWaypoint(uint32 id, float x, float y, float z, uint32 WaitTimeMs = 0); 
 
    void Start(bool bAttack, bool bDefend, bool bRun, uint64 pGUID = 0); 
 
    // EscortAI variables 
protected: 
    uint64 PlayerGUID; 
    bool IsBeingEscorted; 
    bool IsOnHold; 
 
private: 
    uint32 WaitTimer; 
    uint32 PlayerTimer; 
 
    struct 
    {         
        float x; 
        float y; 
        float z; 
    }LastPos; 
 
    std::list WaypointList; 
    std::list::iterator CurrentWP; 
 
    bool Attack; 
    bool Defend; 
    bool Returning; 
    bool ReconnectWP; 
    bool Run; 
};