185 lines
5.3 KiB
C++
185 lines
5.3 KiB
C++
|
|
#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
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD> <20><>. <20>ȱ<C8B1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѿư<D1BE>.
|
|||
|
|
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);
|
|||
|
|
|
|||
|
|
//// <20><><EFBFBD>ڰ<EFBFBD> 3<><33><EFBFBD><EFBFBD>. value;<3B>Ÿ<EFBFBD><C5B8><EFBFBD>;ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
//string strValue( szValue );
|
|||
|
|
|
|||
|
|
//// <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
|
//std::vector<string> vlTokens;
|
|||
|
|
//TokenizeA( strValue, vlTokens, ";" );
|
|||
|
|
|
|||
|
|
//bool bValidArgument = (3 == (int)vlTokens.size());
|
|||
|
|
//_ASSERT( bValidArgument && "132<33><32> <20><><EFBFBD>κ<EFBFBD>ũ <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߸<EFBFBD><DFB8>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>." );
|
|||
|
|
//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; i<STATIC_INSTANCE_(CDnActor::s_pVecProcessList).size(); i++ )
|
|||
|
|
// {
|
|||
|
|
// DnActorHandle hActor = STATIC_INSTANCE_(CDnActor::s_pVecProcessList)[i]->GetMySmartPtr();
|
|||
|
|
// if( hActor && hActor->IsMonsterActor() )
|
|||
|
|
// {
|
|||
|
|
// // <20><><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20>ֵ鸸 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
|||
|
|
// EtVector3 vDistance = *hActor->GetPosition() - *m_hActor->GetPosition();
|
|||
|
|
// float fDistanceSQ = EtVec3LengthSq( &vDistance );
|
|||
|
|
// if( fDistanceSQ <= m_fRangeSQ )
|
|||
|
|
// {
|
|||
|
|
// // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֵ鸸 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
|||
|
|
// 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<int>(GetFloatValue()) );
|
|||
|
|
//#else
|
|||
|
|
// CDNAggroSystem::AggroStruct* pStruct = hActor->GetAggroSystem()->GetAggroStruct( m_hActor );
|
|||
|
|
// if( pStruct )
|
|||
|
|
// {
|
|||
|
|
// pStruct->iAggro += static_cast<int>(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
|
|||
|
|
// <20><>ų<EFBFBD><C5B3> <20><> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> 10 <20><><EFBFBD><EFBFBD> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
bool bValid = true;
|
|||
|
|
if( m_ParentSkillInfo.hSkillUser )
|
|||
|
|
{
|
|||
|
|
// <20><EFBFBD><D7BE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
if( m_ParentSkillInfo.hSkillUser->IsDie() )
|
|||
|
|
bValid = false;
|
|||
|
|
|
|||
|
|
//float fDistanceSQ = EtVec3LengthSq( &EtVector3(*m_hActor->GetPosition() - *m_ParentSkillInfo.hSkillUser->GetPosition()) );
|
|||
|
|
|
|||
|
|
// <20><>ȹ<EFBFBD><C8B9><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD>üũ<C3BC><C5A9> Ǯ<><C7AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ش<EFBFBD>. #26329
|
|||
|
|
// <20><><EFBFBD>Ŀ<EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><> <20>ܺη<DCBA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD>.
|
|||
|
|
//if( PROVOKE_BOUNDARY < fDistanceSQ )
|
|||
|
|
//{
|
|||
|
|
// bValid = false;
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
bValid = false; // <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
if( false == bValid )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
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, };
|
|||
|
|
|
|||
|
|
//<2F>ʿ<EFBFBD><CABF><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
|||
|
|
float fValue[2];
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
//ù<><C3B9>° <20><>
|
|||
|
|
fValue[0] = (float)atof( szOrigValue );
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
//<2F>ι<EFBFBD>°
|
|||
|
|
fValue[1] = (float)atof( szAddValue );
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
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, };
|
|||
|
|
|
|||
|
|
//<2F>ʿ<EFBFBD><CABF><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
|||
|
|
float fValue[2];
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
//ù<><C3B9>° <20><>
|
|||
|
|
fValue[0] = (float)atof( szOrigValue );
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
//<2F>ι<EFBFBD>°
|
|||
|
|
fValue[1] = (float)atof( szAddValue );
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><> <20><><EFBFBD><EFBFBD>
|
|||
|
|
float fResultValue = fValue[0] - fValue[1];
|
|||
|
|
|
|||
|
|
sprintf_s(szBuff, "%f", fResultValue);
|
|||
|
|
|
|||
|
|
szNewValue = szBuff;
|
|||
|
|
}
|
|||
|
|
#endif // PRE_ADD_PREFIX_SYSTE_RENEW
|