142 lines
3.7 KiB
C++
142 lines
3.7 KiB
C++
|
|
#include "Stdafx.h"
|
|||
|
|
#include "DnBasicStateBaseAddState.h"
|
|||
|
|
|
|||
|
|
CDnBasicStateBaseAddState::CDnBasicStateBaseAddState( DnActorHandle hActor, const char* szValue )
|
|||
|
|
: CDnBlow( hActor )
|
|||
|
|
{
|
|||
|
|
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_271;
|
|||
|
|
SetValue( szValue );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDnBasicStateBaseAddState::~CDnBasicStateBaseAddState(void)
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE_PVEC( m_vecBasicBlow );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnBasicStateBaseAddState::OnBegin( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
std::string str = m_StateBlow.szValue;
|
|||
|
|
std::vector<std::string> tokens;
|
|||
|
|
TokenizeA( str, tokens, ";" );
|
|||
|
|
|
|||
|
|
for( DWORD itr = 0; itr < tokens.size(); ++itr )
|
|||
|
|
{
|
|||
|
|
int nStateType = atoi( tokens[itr].c_str() );
|
|||
|
|
++itr;
|
|||
|
|
|
|||
|
|
if( itr < tokens.size() )
|
|||
|
|
{
|
|||
|
|
float fStateValue = (float)atof( tokens[itr].c_str() );
|
|||
|
|
|
|||
|
|
AddState( nStateType, fStateValue, LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__super::OnBegin( LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnBasicStateBaseAddState::Process( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
__super::Process( LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnBasicStateBaseAddState::OnEnd( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
for( DWORD itr = 0; itr < m_vecBasicBlow.size(); ++itr )
|
|||
|
|
{
|
|||
|
|
if( NULL == m_vecBasicBlow[itr] )
|
|||
|
|
continue;
|
|||
|
|
|
|||
|
|
m_vecBasicBlow[itr]->OnEnd( LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
__super::OnEnd( LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// nStateType<70><65> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǵ°<C7B4><C2B0><EFBFBD> <20>⺻ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>.
|
|||
|
|
// <20><EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>밪 <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2>ش<EFBFBD>.
|
|||
|
|
void CDnBasicStateBaseAddState::AddState( int nStateType, const float fStateValue, LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
CDnState * pBaseState = const_cast<CDnState*>(m_hActor->GetBaseState());
|
|||
|
|
|
|||
|
|
if( NULL == pBaseState )
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
char buff[64] = {0,};
|
|||
|
|
switch( nStateType )
|
|||
|
|
{
|
|||
|
|
case STATE_BLOW::BLOW_058:
|
|||
|
|
{
|
|||
|
|
INT64 nMaxHP = (INT64)(pBaseState->GetMaxHP() * fStateValue);
|
|||
|
|
sprintf_s( buff, "%I64d", nMaxHP );
|
|||
|
|
|
|||
|
|
nStateType = STATE_BLOW::BLOW_009;
|
|||
|
|
AddBasicBlow( nStateType, buff, LocalTime, fDelta );
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
m_hActor->SetHP(m_hActor->GetMaxHP());
|
|||
|
|
m_hActor->RequestHPMPDelta( CDnState::ElementEnum_Amount, m_hActor->GetMaxHP(), m_hActor->GetUniqueID() , false , false );
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
case STATE_BLOW::BLOW_002:
|
|||
|
|
{
|
|||
|
|
int nAttackP = (int)( pBaseState->GetAttackPMin() + pBaseState->GetAttackPMax() ) / 2;
|
|||
|
|
nAttackP = (int)(nAttackP * fStateValue);
|
|||
|
|
sprintf_s( buff, "%d", nAttackP );
|
|||
|
|
nStateType = STATE_BLOW::BLOW_001;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STATE_BLOW::BLOW_029:
|
|||
|
|
{
|
|||
|
|
int nAttackM = (int)( pBaseState->GetAttackMMin() + pBaseState->GetAttackMMax() ) / 2;
|
|||
|
|
nAttackM = (int)(nAttackM * fStateValue);
|
|||
|
|
sprintf_s( buff, "%d", nAttackM );
|
|||
|
|
nStateType = STATE_BLOW::BLOW_028;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STATE_BLOW::BLOW_004:
|
|||
|
|
{
|
|||
|
|
int nDefenseP = (int)(pBaseState->GetDefenseP() * fStateValue);
|
|||
|
|
sprintf_s( buff, "%d", nDefenseP );
|
|||
|
|
nStateType = STATE_BLOW::BLOW_003;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STATE_BLOW::BLOW_094:
|
|||
|
|
{
|
|||
|
|
int nDefenseM = (int)(pBaseState->GetDefenseM() * fStateValue);
|
|||
|
|
sprintf_s( buff, "%d", nDefenseM );
|
|||
|
|
nStateType = STATE_BLOW::BLOW_093;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STATE_BLOW::BLOW_061:
|
|||
|
|
{
|
|||
|
|
int nSuperAmmor = (int)(pBaseState->GetSuperAmmor() * fStateValue);
|
|||
|
|
sprintf_s( buff, "%d", nSuperAmmor );
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
AddBasicBlow( nStateType, buff, LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnBasicStateBaseAddState::AddBasicBlow( const int nStateType, char * buff, LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
CDnBasicBlow * pBasicBlow = new CDnBasicBlow( m_hActor, buff );
|
|||
|
|
pBasicBlow->SetBlow( (STATE_BLOW::emBLOW_INDEX)nStateType );
|
|||
|
|
pBasicBlow->SetParentSkillInfo( &m_ParentSkillInfo );
|
|||
|
|
|
|||
|
|
pBasicBlow->SetDurationTime( m_StateBlow.fDurationTime );
|
|||
|
|
pBasicBlow->OnBegin(LocalTime, fDelta);
|
|||
|
|
|
|||
|
|
m_vecBasicBlow.push_back( pBasicBlow );
|
|||
|
|
}
|