if (FakePC_Check()) { DWORD dwLastActionTime = m_dwLastAttackTime; // normal attack DWORD dwMotionMode = GetMotionModeBySubType(GetWear(WEAR_WEAPON) ? GetWear(WEAR_WEAPON)->GetSubType() : UCHAR_MAX); float fAttackMotionDuration = CMotionManager::instance().GetMotionDuration(GetRaceNum(), MAKE_MOTION_KEY(dwMotionMode, MOTION_COMBO_ATTACK_1 + FakePC_ComputeComboIndex())); dwDuration = CalculateDuration(GET_ATTACK_SPEED(FakePC_GetOwner()), fAttackMotionDuration * 1000.0f) * (IsRiding() ? 6.3f/*(float)(quest::CQuestManager::instance().GetEventFlag("FakePCSDELAY")/10)*/ : 6.5f) / 10.0f; // skill if (m_dwLastSkillVnum != 0 && m_dwLastSkillTime > m_dwLastAttackTime) { CSkillProto* pkSkill = CSkillManager::Instance().Get(m_dwLastSkillVnum); if (pkSkill) { DWORD dwSkillIndex = 0; const DWORD* dwSkillList = GetUsableSkillList(); if (dwSkillList) { for (int i = 0; i < CHARACTER_SKILL_COUNT; ++i) { if (dwSkillList[i] == m_dwLastSkillVnum) { dwSkillIndex = i; break; } } } DWORD dwDurationMotionKey = MAKE_MOTION_KEY(MOTION_MODE_GENERAL, MOTION_SPECIAL_1 + (GetSkillGroup() - 1) * CHARACTER_SKILL_COUNT + dwSkillIndex); dwLastActionTime = m_dwLastSkillTime; dwDuration = CMotionManager::instance().GetMotionDuration(GetRaceNum(), dwDurationMotionKey) * 1000.0f * 9.0f / 10.0f; } } if ((dwCurTime - dwLastActionTime) < dwDuration) // 2ÃÊ ¸¶´Ù °ø°İÇØ¾ß ÇÑ´Ù. { m_dwStateDuration = MAX(1, PASSES_PER_SEC(dwDuration - (dwCurTime - dwLastActionTime)) / 1000); return; } } else