DragonNest/GameCommon/DnDragonShieldBlow.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

93 lines
No EOL
2.2 KiB
C++
Raw Permalink Blame History

#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