#pragma once #include "State.h" // @history // (CHANGES) (091222) (WAVERIX) code arrangement class Summoned; // ¼ÒȯüÀÇ Idle»óÅ´ ´Ü¼øÁ¤Áö »óŰ¡ ¾Æ´Ï¶ó ¼ÒȯÀÚ¸¦ µû¶ó´ó±â´Â »óŸ¦ ¸»ÇÑ´Ù. class SummonIdle : public State { public: SummonIdle(); ~SummonIdle(); virtual void Init(); virtual void OnEnter(LPARAM param1, LPARAM param2, LPARAM param3); virtual void OnExit(); virtual BOOL OnUpdate(DWORD dwDeltaTick); virtual void SetNPC(NPC* pNPC); protected: virtual void OnMsgAttacked(const AI_MSG* pMsg); // ¼ÒȯüÀ̹ǷΠÀÌÇÏ ¸Þ¼¼ÁöµéÀº ¹«½ÃÇÑ´Ù. virtual void OnMsgHelpRequest(const AI_MSG* pMsg) { __UNUSED(pMsg); } virtual void OnMsgLetsGo(const AI_MSG* pMsg) { __UNUSED(pMsg); } virtual void OnMsgEnemyFound(const AI_MSG* pMsg) { __UNUSED(pMsg); } virtual void OnMsgChangeToReturnState(const AI_MSG* pMsg) { __UNUSED(pMsg); } virtual void OnMsgGroupCommand(const AI_MSG* pMsg) { __UNUSED(pMsg); } virtual void OnMsgGroupCommand_StopAttack() {} virtual void OnMsgCommandFollow(const AI_MSG* pMsg) { __UNUSED(pMsg); } virtual void OnMsgGroupCommand_Attack(DWORD dwTargetKey) { __UNUSED(dwTargetKey); } private: void FollowSummoner(Character* pSummoner); // ¼ÒȯÀÚ¸¦ µû¸¥´Ù. void Teleport(WzVector &vDestPos); void DecideMovement(); #ifdef _NA_007667_20141001_WITCHBLADE_SKILL //Áö¼ÓÇü ½ºÅ³ »ç¿ë(¿À¶ó °°Àº ½ºÅ³) void UseConstantSkill(); #endif //_NA_007667_20141001_WITCHBLADE_SKILL private: Summoned* m_pSummoned; util::Timer m_SearchTimer; util::Timer m_TrackTimer; util::Timer m_SpawnTimer; // ½ºÆù¾Ö´Ï¸¦ ¿¬ÃâÇϵµ·Ï ±â´Ù·ÁÁØ´Ù. WzVector m_vMovement; // ¼ÒȯÀÚ ±ÙóÀÇ À§Ä¡º¤ÅÍ WzVector m_vSummonedPos, m_vSummonerPos, m_vSummonerDestPos; };