#include "StdAfx.h" #include "DnChangeActionSetBlow.h" #include "IDnSkillProcessor.h" #include "DnChangeActionStrProcessor.h" #include "DnApplySEWhenActionSetBlowEnabledProcessor.h" #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif CDnChangeActionSetBlow::CDnChangeActionSetBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor ), m_pChangeActionStrProcessor( NULL ), m_bEnable( false ), m_bChangedActionBegun( false ) { m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_129; _ASSERT( strlen(szValue) < STATE_BLOW_ARGUMENT_MAX_SIZE ); SetValue( szValue ); // ÀÎÀÚ°ªÀº ƯÁ¤ ¾×¼ÇÀ» ÃëÇϰí ÀÖÀ» ¶§¸¸ ¾×¼Ç À̸§À» ¹Ù²Ùµµ·Ï ÇÏ°í ½ÍÀ» ¶§.. // ÇØ´ç ¾×¼Ç À̸§À» ¹Þ¾ÆµÐ´Ù. // ÀÌ ¾×¼ÇÀ» ÃëÇϰí ÀÖÀ» ¶§¸¸ ¾×¼Ç ´ëü°¡ CDnActor::SetActionQueue() ÇÔ¼ö¿¡¼­ ÀϾ´Ù. if( 0 < strlen(szValue) && (strcmp(szValue, "0") != 0) ) m_strTriggerAction.assign( szValue ); } CDnChangeActionSetBlow::~CDnChangeActionSetBlow(void) { } void CDnChangeActionSetBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta ) { DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID ); m_bEnable = false; m_strCancleAction.clear(); _ASSERT( hParentSkill ); if( hParentSkill ) { m_pChangeActionStrProcessor = static_cast( hParentSkill->GetProcessor( IDnSkillProcessor::CHANGE_ACTIONSTR ) ); OutputDebug( "CDnChangeActionSetBlow::OnBegin\n" ); } else { SetState( STATE_BLOW::STATE_END ); OutputDebug( "CDnChangeActionSetBlow::OnBegin Fail!! Can't find Parent Skill Object!!\n" ); } } void CDnChangeActionSetBlow::Process( LOCAL_TIME LocalTime, float fDelta ) { CDnBlow::Process( LocalTime, fDelta ); } void CDnChangeActionSetBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta ) { #ifdef _GAMESERVER // #35037 »óÅÂÈ¿°ú Á¾·áµÉ ¶§ ¹Ù·Î ºÎ¿©µÈ »óÅÂÈ¿°úµé°ú °­Á¦ ¼Ó¼º ¼ÂÆÃÀ» ¸®¼ÂÇØÁØ´Ù. OnNotChangeAction(); #endif // _GAMESERVER OutputDebug( "CDnChangeActionSetBlow::OnEnd\n" ); } CDnChangeActionStrProcessor* CDnChangeActionSetBlow::GetChangeActionStrProcessor( void ) { if( m_bEnable ) { // ´ýÇÁ°¡ °è¼Ó ¹ß»ýÇØ¼­ ¸â¹öº¯¼ö µÇ½Å ½ÇÁ¦ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ°Ô º¯°æÇغ»´Ù. CDnChangeActionStrProcessor* pProcessor = NULL; if( m_ParentSkillInfo.hSkillUser ) { DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID ); if( hParentSkill ) pProcessor = static_cast( hParentSkill->GetProcessor( IDnSkillProcessor::CHANGE_ACTIONSTR ) ); } // ÇöÀç Processor ´Â ¾ø´Âµ¥ ¸â¹öº¯¼ö´Â Valid ÇÏ´Ù¸é ÀÌ°Ô ¸Â´Â°ÅÀÓ. ·Î±× ¹Ú¾Æº½ if( pProcessor == NULL && m_pChangeActionStrProcessor ) { g_Log.Log(LogType::_ERROR, L"CDnChangeActionSetBlow::GetChangeActionStrProcessor Invalid Call!!" ); } return pProcessor; //return m_pChangeActionStrProcessor; } else return NULL; } void CDnChangeActionSetBlow::UpdateEnable( const char* pPrevAction, const char* pCurrentAction ) { if( strcmp(pPrevAction, pCurrentAction) == 0 ) return; // #40128 ºÎ¸ð½ºÅ³ÀÇ »ç¿ë°¡´É ¹«±â Á¤º¸¸¦ ¾ò¾î¿Í¼­ üũ. if( m_ParentSkillInfo.hSkillUser ) { DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID ); if( hParentSkill && !hParentSkill->IsSatisfyWeapon() ) { m_bEnable = false; return; } } if( m_strTriggerAction.empty() ) { m_bEnable = true; } else if( pCurrentAction && 0 < strlen(pCurrentAction) && pPrevAction && 0 < strlen(pPrevAction) ) { // ÇöÀç ¹Ù²ï ¾×¼ÇÀÌ Æ®¸®°Å ¾×¼Ç°ú °°´Ù¸é Ȱ¼ºÈ­ ½ÃÁ¡. if( false == m_bEnable && m_strTriggerAction == pCurrentAction ) { m_bEnable = true; m_strCancleAction = pPrevAction; } else if( m_strCancleAction == pCurrentAction ) { m_bEnable = false; } } } #ifdef _GAMESERVER void CDnChangeActionSetBlow::OnChangeAction( void ) { if( false == m_bChangedActionBegun ) { // ¾×¼Ç º¯°æ½Ã¿¡ »óÅÂÈ¿°ú Àû¿ë ¹ßÇöŸÀÔÀÌ ÀÖ´Ù¸é ÇÔ¼ö È£ÃâÇØÁÜ. CDnApplySEWhenActionSetBlowEnabledProcessor* pProcessor = NULL; DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID ); if( hParentSkill ) { pProcessor = static_cast( hParentSkill->GetProcessor( IDnSkillProcessor::APPLY_SE_WHEN_ACTIONSET_ENABLED ) ); if( pProcessor ) pProcessor->OnChangeActionBegin(); } m_bChangedActionBegun = true; } } void CDnChangeActionSetBlow::OnNotChangeAction( void ) { if( m_bChangedActionBegun ) { // ¾×¼Ç º¯°æ½Ã¿¡ »óÅÂÈ¿°ú Àû¿ë ¹ßÇöŸÀÔÀÌ ÀÖ´Ù¸é ÇÔ¼ö È£ÃâÇØÁÜ. CDnApplySEWhenActionSetBlowEnabledProcessor* pProcessor = NULL; DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID ); if( hParentSkill ) { pProcessor = static_cast( hParentSkill->GetProcessor( IDnSkillProcessor::APPLY_SE_WHEN_ACTIONSET_ENABLED ) ); if( pProcessor ) pProcessor->OnChangeActionSetBlowEnd(); } m_bChangedActionBegun = false; } } #endif #if defined(PRE_ADD_PREFIX_SYSTE_RENEW) void CDnChangeActionSetBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue) { char szBuff[128] = {0, }; szNewValue = szOrigValue; } void CDnChangeActionSetBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue) { char szBuff[128] = {0, }; szNewValue = szOrigValue; } #endif // PRE_ADD_PREFIX_SYSTE_RENEW