#include "StdAfx.h" #include "DnHealingBlow.h" #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif // dnactor.cpp #ifdef _GAMESERVER extern int GetGaussianRandom( int nMin, int nMax, CMultiRoom *pRoom ); #endif CDnHealingBlow::CDnHealingBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor ) { m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_140; // ÀÌ »óÅÂÈ¿°ú´Â µû·Î °ªÀ» ¾²´Â °ÍÀº ¾ø´Ù.. SetValue( szValue ); m_fValue = (float)atof( szValue ); } CDnHealingBlow::~CDnHealingBlow(void) { } void CDnHealingBlow::OnSetParentSkillInfo() { #if defined( _GAMESERVER ) CalcHealValueLimit( m_StateBlow.emBlowIndex, m_fValue ); #endif } void CDnHealingBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta ) { #ifdef _GAMESERVER // °Á Çѹ濡 ´Ù ó¸® INT64 iHP = m_hActor->GetHP(); INT64 iMaxHP = m_hActor->GetMaxHP(); // »ç¿ëÀÚ(½ºÅ³ ½ÃÀüÀÚ)ÀÇ <¸¶¹ý °ø°Ý·Â>*<È¿°ú ºñÀ²>¸¸Å­ ´ë»óÀÇ HP¸¦ ȸº¹½ÃÄÑÁØ´Ù. if( m_ParentSkillInfo.hSkillUser ) { int iAttackMMin = m_ParentSkillInfo.hSkillUser->GetAttackMMin(); int iAttackMMax = m_ParentSkillInfo.hSkillUser->GetAttackMMax(); float fMAttack = (float)GetGaussianRandom( iAttackMMin, iAttackMMax, m_hActor->GetRoom() ); INT64 iDelta = INT64(fMAttack * m_fValue); if(iDelta < 0 ) return; // Èú¸µºí·Î¿ì°¡ Çǰ¡ ±ïÀÌ´Â °æ¿ì´Â ¾ø´Ù. °ªÀÌ ²¿À̰ųª ¾²·¹±â°ªÀÌ µé¾î¿À´Â °æ¿ì°¡ ÀÖÀ»Áö¸ð¸£´Ï ¸®ÅÏÇØÁÖÀÚ. INT64 iResult = iHP + iDelta; if( iMaxHP < iResult ) { iResult = iMaxHP; iDelta = iMaxHP - iHP; } else if( iResult < 0 ) { iResult = 1; iDelta = 1 - iHP; } m_hActor->SetHP( iResult ); m_hActor->RequestHPMPDelta( CDnState::ElementEnum_Amount, iDelta, m_hActor->GetUniqueID() ); OutputDebug( "[CDnHealingBlow::OnBegin] ActorID: %d : %d + %d = %d\n", m_hActor->GetUniqueID(), iHP, iDelta, iResult ); } // 󸮵ÆÀ¸¹Ç·Î °ð¹Ù·Î end ½ÃÅ´. SetState( STATE_BLOW::STATE_END ); #else OutputDebug( "CDnHealingBlow::OnBegin Value:%2.2f\n", m_fValue ); #endif } void CDnHealingBlow::Process( LOCAL_TIME LocalTime, float fDelta ) { CDnBlow::Process( LocalTime, fDelta ); } void CDnHealingBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta ) { OutputDebug( "CDnHealingBlow::OnEnd Value:%2.2f\n", m_fValue ); } #if defined(PRE_ADD_PREFIX_SYSTE_RENEW) void CDnHealingBlow::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 CDnHealingBlow::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