93 lines
No EOL
2.2 KiB
C++
93 lines
No EOL
2.2 KiB
C++
#include "StdAfx.h"
|
||
#include "DnDragonShieldBlow.h"
|
||
#include "DnStateBlow.h"
|
||
|
||
#ifdef _DEBUG
|
||
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
||
#endif
|
||
|
||
CDnDragonShieldBlow::CDnDragonShieldBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor )
|
||
{
|
||
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_280;
|
||
SetValue( szValue );
|
||
m_fValue = (float)atof(szValue);
|
||
|
||
#if defined( _GAMESERVER )
|
||
|
||
m_nSubSkillIndex = 0;
|
||
m_fActivateCooltime = 0.f;
|
||
m_nRestartCooltime = 0;
|
||
m_nProbablity = 0;
|
||
|
||
std::vector<string> vlTokens;
|
||
std::string strValue = szValue;
|
||
TokenizeA( strValue, vlTokens, ";" );
|
||
|
||
if( vlTokens.size() == 4 )
|
||
{
|
||
m_nSubSkillIndex = (int)atoi( vlTokens[0].c_str() );
|
||
m_nRestartCooltime = (int)atoi( vlTokens[1].c_str() );
|
||
m_nProbablity = (int)atoi( vlTokens[2].c_str() );
|
||
m_strEffectName = vlTokens[3];
|
||
}
|
||
|
||
AddCallBackType( SB_ONCALCDAMAGE );
|
||
|
||
CDnSkill::CreateSkillInfo( m_nSubSkillIndex, 1, m_sSubSkillInfo, m_vecSubSkillEffectList );
|
||
m_sSubSkillInfo.hSkillUser = m_hActor;
|
||
#endif
|
||
}
|
||
|
||
CDnDragonShieldBlow::~CDnDragonShieldBlow(void)
|
||
{
|
||
|
||
}
|
||
|
||
|
||
#ifdef _GAMESERVER
|
||
|
||
void CDnDragonShieldBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
|
||
{
|
||
}
|
||
|
||
|
||
void CDnDragonShieldBlow::Process( LOCAL_TIME LocalTime, float fDelta )
|
||
{
|
||
if( m_fActivateCooltime > 0 )
|
||
m_fActivateCooltime -= fDelta;
|
||
|
||
CDnBlow::Process( LocalTime, fDelta );
|
||
}
|
||
|
||
void CDnDragonShieldBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
|
||
{
|
||
}
|
||
|
||
float CDnDragonShieldBlow::OnCalcDamage( float fOriginalDamage, CDnDamageBase::SHitParam& HitParam )
|
||
{
|
||
if( m_fActivateCooltime <= 0 )
|
||
{
|
||
if( (_rand(GetRoom())%100) <= m_nProbablity )
|
||
{
|
||
m_fActivateCooltime = float(m_nRestartCooltime);
|
||
if( m_hActor && m_hActor->IsDie() == false )
|
||
{
|
||
for( int i = 0; i < (int)m_vecSubSkillEffectList.size(); ++i )
|
||
{
|
||
m_hActor->CmdAddStateEffect(
|
||
&m_sSubSkillInfo,
|
||
(STATE_BLOW::emBLOW_INDEX)m_vecSubSkillEffectList[i].nID,
|
||
m_vecSubSkillEffectList[i].nDurationTime,
|
||
m_vecSubSkillEffectList[i].szValue.c_str() );
|
||
}
|
||
|
||
m_hActor->CmdAddStateEffect( NULL , STATE_BLOW::BLOW_100 , 0 , FormatA( "%d;%s", 1, m_strEffectName.c_str() ).c_str() ); // <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20>뵵
|
||
}
|
||
return -fOriginalDamage;
|
||
}
|
||
}
|
||
|
||
return 0.f;
|
||
}
|
||
|
||
#endif |