#include "StdAfx.h" #include "DnProvocationBlow.h" #if defined( _GAMESERVER ) #include "DNAggroSystem.h" #endif // #if defined( _GAMESERVER ) #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif // ÀÏÁ¤ °Å¸® ÀÌ»ó ¹ú¾îÁö¸é °ð¹Ù·Î »óÅÂÈ¿°ú¸¦ Á¾·á½ÃÄÑ¾ß ÇÔ. ¾È±×·¯¸é °è¼Ó ÂѾư¨. const float PROVOKE_BOUNDARY = 1000.0f * 1000.0f; CDnProvocationBlow::CDnProvocationBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor ) { m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_132; SetValue( szValue ); m_fValue = (float)atof(szValue); //// ÀÎÀÚ°¡ 3°³ÀÓ. value;°Å¸®°ª;ij¸¯ÅÍÀÇ Àü¹æ±âÁØ °¢µµ°ª. //string strValue( szValue ); //// ½ºÆ®¸µÀ» °ø¹é´ÜÀ§·Î ºÐÇÒÇÑ ÈÄ //std::vector vlTokens; //TokenizeA( strValue, vlTokens, ";" ); //bool bValidArgument = (3 == (int)vlTokens.size()); //_ASSERT( bValidArgument && "132¹ø ÇÁ·Îº¸Å© »óÅÂÈ¿°ú ÀÎÀÚ ¼ÂÆÃÀÌ À߸øµÇ¾ú½À´Ï´Ù." ); //if( bValidArgument ) //{ // m_fValue = (float)atoi(vlTokens.at( 0 ).c_str()); // m_fRange = (float)atof(vlTokens.at( 1 ).c_str()); // m_fRangeAngleByRadian = EtToRadian((float)atof(vlTokens.at( 2 ).c_str())); // m_fRangeSQ = m_fRange * m_fRange; //} } CDnProvocationBlow::~CDnProvocationBlow(void) { } void CDnProvocationBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta ) { OutputDebug( "CDnProvocationBlow::OnBegin\n" ); //#if defined( _GAMESERVER ) // if( IsPermanent() ) // { // MatrixEx Cross = *m_hActor->GetMatEx(); // EtVector3 vPlayerDir = Cross.m_vZAxis; // EtVec3Normalize( &vPlayerDir, &vPlayerDir ); // // CMultiRoom *pRoom = m_hActor->GetRoom(); // for( DWORD i=0; iGetMySmartPtr(); // if( hActor && hActor->IsMonsterActor() ) // { // // ÀÏÁ¤ °Å¸® ¾È¿¡ ÀÖ´Â ¾Öµé¸¸ Àû¿ë½ÃÄÑÁØ´Ù. // EtVector3 vDistance = *hActor->GetPosition() - *m_hActor->GetPosition(); // float fDistanceSQ = EtVec3LengthSq( &vDistance ); // if( fDistanceSQ <= m_fRangeSQ ) // { // // ij¸¯ÅÍ Àü¹æ ±âÁØ ÀÏÁ¤ °¢µµ°ª ¾È¿¡ µé¾î¿Â ¾Öµé¸¸ Àû¿ë½ÃÄÑÁØ´Ù. // EtVector3 vDirToMonster; // EtVec3Normalize( &vDirToMonster, &vDistance ); // float fDot = EtVec3Dot( &vPlayerDir, &vDistance ); // if( fDot <= m_fRangeAngleByRadian ) // { // if( hActor->GetAggroSystem() ) // { //#if defined( PRE_FIX_22526 ) // hActor->GetAggroSystem()->AddAggro( m_hActor, static_cast(GetFloatValue()) ); //#else // CDNAggroSystem::AggroStruct* pStruct = hActor->GetAggroSystem()->GetAggroStruct( m_hActor ); // if( pStruct ) // { // pStruct->iAggro += static_cast(GetFloatValue()); // } //#endif // #if defined( PRE_FIX_22526 ) // } // } // } // } // } // } //#endif // #if defined( _GAMESERVER ) } void CDnProvocationBlow::Process( LOCAL_TIME LocalTime, float fDelta ) { CDnBlow::Process( LocalTime, fDelta ); #ifdef _GAMESERVER // ½ºÅ³À» ¾´ Ç÷¹À̾î¿Í ÀÌ »óÅÂÈ¿°ú°¡ ¹ßµ¿ÁßÀÎ ¸ó½ºÅÍ¿ÍÀÇ °Å¸®°¡ 10 ¹ÌÅÍ ÀÌ»ó ¹ú¾îÁö¸é »óÅÂÈ¿°ú °ð¹Ù·Î Á¦°Å. bool bValid = true; if( m_ParentSkillInfo.hSkillUser ) { // Á×¾úÀ» ¶§µµ °ð¹Ù·Î Á¦°Å. if( m_ParentSkillInfo.hSkillUser->IsDie() ) bValid = false; //float fDistanceSQ = EtVec3LengthSq( &EtVector3(*m_hActor->GetPosition() - *m_ParentSkillInfo.hSkillUser->GetPosition()) ); // ±âȹÆÀÀÇ ¿äûÀ¸·Î °Å¸®Ã¼Å©·Î Ç®¸®´Â °ÍÀº ¾ø¾Ø´Ù. #26329 // ÃßÈÄ¿¡ ÄÁÆ®·ÑÀÌ ÇÊ¿äÇÒ ¶§ ¿ÜºÎ·Î »©´øÁö Á¶Á¤ÀÌ ÇÊ¿äÇÔ. //if( PROVOKE_BOUNDARY < fDistanceSQ ) //{ // bValid = false; //} } else bValid = false; // Ç÷¹ÀÌ¾î °´Ã¼°¡ ¾øÀ» ¶§µµ °ð¹Ù·Î Á¦°Å. if( false == bValid ) { // »óÅÂÈ¿°ú »èÁ¦ ¿¹¾à. m_hActor->AddReserveRemoveBlow( GetMySmartPtr() ); } #endif } void CDnProvocationBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta ) { OutputDebug( "CDnProvocationBlow::OnEnd\n" ); } #if defined(PRE_ADD_PREFIX_SYSTE_RENEW) void CDnProvocationBlow::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 CDnProvocationBlow::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