//------------------------------------------------------------------------------ // SkillStateHide.cpp // (C) 2008 Webzen Sunstudio //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "statebase.h" #include "SkillState.h" #include "SkillStateHide.h" #include "Character.h" #include "Player.h" #include "Clone.h" #include "CloneManager.h" #include "ObjectManager.h" SkillStateHide::SkillStateHide() { m_dwCopyTime=0; m_iCloneCnt=0; } SkillStateHide::~SkillStateHide(void) { } //------------------------------------------------------------------------------ /** */ STATEPROCESS::TYPE SkillStateHide::OnProcess(Object* pOwner, DWORD CurTime,DWORD dwTick) { EnterProcess(pOwner,CurTime,dwTick); Player* pPlayer = (Player*)pOwner; CheckEvent(); if(!pPlayer->GetHideSkill()) { if( m_dwCopyTime < dwTick && m_iHitProcessed==0) { //°¹¼öÁ¦ÇÑ if(++m_iCloneCnt<7) { m_dwCopyTime=30; pPlayer->CloneEffect(500, 1700, 0); } } else { m_dwCopyTime-=dwTick; } //ù¹øÂ°À̺¥Æ®¿¡ ¹ß»çü¸¦ ³¯¸°´Ù. if (CheckNotProcessedHitEvent(1)) { SetHidePlayer(pOwner); ++m_iHitProcessed; } } return LeaveProcess(pOwner,CurTime,dwTick); } //------------------------------------------------------------------------------ /** */ STATECHANGE::TYPE SkillStateHide::OnEnd(Object* pOwner, DWORD CurTime) { //safecode:ÇÏÀ̵åÀ̺¥Æ®º¸´Ù ´õ ´ÊÀº½ÃÁ¡¿¡ ÆÐŶÀÌ ³¯¶ó¿Ô´Ù¸é ¿¹¿Üó¸® SetHidePlayer(pOwner); return STATECHANGE::SUCCESS; } //------------------------------------------------------------------------------ /** */ void SkillStateHide::SetHidePlayer(Object *pObj) { Player* pPlayer = (Player*)pObj; if(pPlayer) { if(pPlayer->GetHideReserve()) { pPlayer->SetHideSkill(TRUE); // ÀÌ¹Ì ÀÚ½ÅÀÌ Àº½Åü°¨Áö ¹öÇÁ°¡ Àִ°æ¿ì¿¡´Â ¹Ù·Î º¸¿©Áà¾ßÇϱ⶧¹® g_ObjectManager.RefreshPlayerHideState(); } pPlayer->SetHideReserve(FALSE); } }