#include "StdAfx.h" #include "DnIntelligenceToPhysicAttackBlow.h" #include "DnSkill.h" #if defined(PRE_ADD_BUFF_STATE_LIMIT) #include "DnBasicBlow.h" #endif // PRE_ADD_BUFF_STATE_LIMIT #if !defined( USE_BOOST_MEMPOOL ) #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif #endif // #if !defined( USE_BOOST_MEMPOOL ) CDnIntelligenceToPhysicAttackBlow::CDnIntelligenceToPhysicAttackBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor ) { m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_165; SetValue( szValue ); m_fValue = (float)atof( szValue ); #if defined(PRE_ADD_BUFF_STATE_LIMIT) m_pBasicBlow = NULL; #else m_eRefreshState = CDnActorState::StateTypeEnum::ST_AttackP; m_bNeedRefreshState = false; #endif // PRE_ADD_BUFF_STATE_LIMIT } CDnIntelligenceToPhysicAttackBlow::~CDnIntelligenceToPhysicAttackBlow(void) { #if defined(PRE_ADD_BUFF_STATE_LIMIT) SAFE_DELETE(m_pBasicBlow); #endif // PRE_ADD_BUFF_STATE_LIMIT } void CDnIntelligenceToPhysicAttackBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta ) { __super::OnBegin(LocalTime, fDelta); if (!m_hActor) return; //Èû int nIntelligence = m_hActor->GetIntelligence(); int nPhysicAttack = (int)((float)nIntelligence * m_fValue); #if defined(PRE_ADD_BUFF_STATE_LIMIT) char buff[64]; sprintf_s(buff, "%d", nPhysicAttack); m_pBasicBlow = new CDnBasicBlow( m_hActor, buff ); m_pBasicBlow->SetBlow( STATE_BLOW::BLOW_001 ); // ¹°¸®°ø°Ý·Â Àý´ë°ª. m_pBasicBlow->SetParentSkillInfo(&m_ParentSkillInfo); m_pBasicBlow->SetDurationTime(m_StateBlow.fDurationTime); m_pBasicBlow->OnBegin(LocalTime, fDelta); #else m_State.SetAttackPMin( nPhysicAttack ); m_State.SetAttackPMax( nPhysicAttack ); m_eRefreshState = CDnActorState::StateTypeEnum::ST_AttackP; m_State.CalcValueType(); m_hActor->AddBlowState( &m_State, GetAddBlowStateType() ); m_bNeedRefreshState = (CDnActor::StateTypeEnum(-1) != m_eRefreshState); if( m_bNeedRefreshState ) { // ÀÓÀÇ·Î ¼³Á¤ÇÑ »óÅÂÈ¿°ú´Â ºÎ¸ð½ºÅ³ÀÌ ¾ø´Ù. post state º¯°æÀÌ ¾Æ´Ï¶ó ±âº» state º¯°æÀ̹ǷΠ°¨¾ÈÇØÁØ´Ù. // ºÎ¸ð ½ºÅ³ÀÌ ÀÖ´Â °æ¿ì¿£ ÆÐ½Ãºê ½ºÅ³ÀÎÁö ±¸ºÐÇØ¼­ ÆÐ½ÃºêÀÎ °æ¿ì¿£ basic ½ºÅȺ¯°æÀ¸·Î °¨¾ÈÇØ¼­ All Refresh ·Î ÇÏ°í ³ª¸ÓÁö´Â RefreshSkill ·Î ó¸®.. if( NeedRefreshAll() ) { m_hActor->RefreshState( CDnActorState::RefreshAll, m_eRefreshState ); } else { m_hActor->RefreshState( CDnActorState::RefreshSkill, m_eRefreshState ); } } #endif // PRE_ADD_BUFF_STATE_LIMIT } void CDnIntelligenceToPhysicAttackBlow::Process( LOCAL_TIME LocalTime, float fDelta ) { __super::Process(LocalTime, fDelta); } void CDnIntelligenceToPhysicAttackBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta ) { __super::OnEnd(LocalTime, fDelta); #if defined(PRE_ADD_BUFF_STATE_LIMIT) if (m_pBasicBlow) m_pBasicBlow->OnEnd(LocalTime, fDelta); #else m_hActor->DelBlowState( &m_State ); if( m_bNeedRefreshState ) { // ÆÐ½Ãºê ½ºÅ³ÀÎÁö ±¸ºÐÇØ¼­ ÆÐ½ÃºêÀÎ °æ¿ì¿£ All Refresh ·Î ÇÏ°í ³ª¸ÓÁö´Â RefreshSkill ·Î ó¸® if( NeedRefreshAll() ) m_hActor->RefreshState( CDnActorState::RefreshAll, m_eRefreshState ); else m_hActor->RefreshState( CDnActorState::RefreshSkill, m_eRefreshState ); } #endif // PRE_ADD_BUFF_STATE_LIMIT } #if defined(PRE_ADD_BUFF_STATE_LIMIT) #else bool CDnIntelligenceToPhysicAttackBlow::NeedRefreshAll( void ) { // ÀÓÀÇ·Î ¼³Á¤ÇÑ »óÅÂÈ¿°ú´Â ºÎ¸ð½ºÅ³ÀÌ ¾ø´Ù. post state º¯°æÀÌ ¾Æ´Ï¶ó ±âº» state º¯°æÀ̹ǷΠ°¨¾ÈÇØÁØ´Ù. // ºÎ¸ð ½ºÅ³ÀÌ ÀÖ´Â °æ¿ì¿£ ÆÐ½Ãºê ½ºÅ³ÀÎÁö ±¸ºÐÇØ¼­ ÆÐ½ÃºêÀÎ °æ¿ì¿£ basic ½ºÅȺ¯°æÀ¸·Î °¨¾ÈÇØ¼­ All Refresh ·Î ÇÏ°í ³ª¸ÓÁö´Â RefreshSkill ·Î ó¸®.. return ( false == m_bHasParentSkill || (CDnSkill::Passive == m_ParentSkillInfo.eSkillType && CDnSkill::Buff == m_ParentSkillInfo.eDurationType) ); } #endif // PRE_ADD_BUFF_STATE_LIMIT #if defined(PRE_ADD_PREFIX_SYSTE_RENEW) void CDnIntelligenceToPhysicAttackBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue) { char szBuff[128] = {0, }; //ÇÊ¿äÇÑ °ª º¯¼ö float fValue[2]; ////////////////////////////////////////////////////////////////////////// //ù¹øÂ° °ª fValue[0] = (float)atof( szOrigValue ); ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //µÎ¹øÂ° fValue[1] = (float)atof( szAddValue ); ////////////////////////////////////////////////////////////////////////// //µÎ °ªÀ» ´õÇÑ´Ù. float fResultValue = fValue[0] + fValue[1]; sprintf_s(szBuff, "%f", fResultValue); szNewValue = szBuff; } void CDnIntelligenceToPhysicAttackBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue) { char szBuff[128] = {0, }; //ÇÊ¿äÇÑ °ª º¯¼ö float fValue[2]; ////////////////////////////////////////////////////////////////////////// //ù¹øÂ° °ª fValue[0] = (float)atof( szOrigValue ); ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //µÎ¹øÂ° fValue[1] = (float)atof( szAddValue ); ////////////////////////////////////////////////////////////////////////// //°ª °è»ê float fResultValue = fValue[0] - fValue[1]; sprintf_s(szBuff, "%f", fResultValue); szNewValue = szBuff; } #endif // PRE_ADD_PREFIX_SYSTE_RENEW