2024-12-21 10:04:04 +08:00
# include "StdAfx.h"
# include "DnStrengthToMagicAttackBlow.h"
# include "DnSkill.h"
# if defined(PRE_ADD_BUFF_STATE_LIMIT)
# include "DnBasicBlow.h"
# endif // PRE_ADD_BUFF_STATE_LIMIT
# if !defined( USE_BOOST_MEMPOOL )
# ifdef _DEBUG
# define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
# endif
# endif // #if !defined( USE_BOOST_MEMPOOL )
CDnStrengthToMagicAttackBlow : : CDnStrengthToMagicAttackBlow ( DnActorHandle hActor , const char * szValue ) : CDnBlow ( hActor )
{
m_StateBlow . emBlowIndex = STATE_BLOW : : BLOW_164 ;
SetValue ( szValue ) ;
m_fValue = ( float ) atof ( szValue ) ;
# if defined(PRE_ADD_BUFF_STATE_LIMIT)
m_pBasicBlow = NULL ;
# else
m_bNeedRefreshState = false ;
m_eRefreshState = CDnActorState : : StateTypeEnum : : ST_AttackM ;
# endif // PRE_ADD_BUFF_STATE_LIMIT
}
CDnStrengthToMagicAttackBlow : : ~ CDnStrengthToMagicAttackBlow ( void )
{
# if defined(PRE_ADD_BUFF_STATE_LIMIT)
SAFE_DELETE ( m_pBasicBlow ) ;
# endif // PRE_ADD_BUFF_STATE_LIMIT
}
void CDnStrengthToMagicAttackBlow : : OnBegin ( LOCAL_TIME LocalTime , float fDelta )
{
__super : : OnBegin ( LocalTime , fDelta ) ;
if ( ! m_hActor )
return ;
//<2F> <>
int nStrength = m_hActor - > GetStrength ( ) ;
int nMagicAttack = ( int ) ( ( float ) nStrength * m_fValue ) ;
# if defined(PRE_ADD_BUFF_STATE_LIMIT)
char buff [ 64 ] ;
sprintf_s ( buff , " %d " , nMagicAttack ) ;
m_pBasicBlow = new CDnBasicBlow ( m_hActor , buff ) ;
m_pBasicBlow - > SetBlow ( STATE_BLOW : : BLOW_028 ) ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> <20> <> <EFBFBD> 밪.
m_pBasicBlow - > SetParentSkillInfo ( & m_ParentSkillInfo ) ;
m_pBasicBlow - > SetDurationTime ( m_StateBlow . fDurationTime ) ;
m_pBasicBlow - > OnBegin ( LocalTime , fDelta ) ;
# else
m_State . SetAttackMMin ( nMagicAttack ) ;
m_State . SetAttackMMax ( nMagicAttack ) ;
m_eRefreshState = CDnActorState : : StateTypeEnum : : ST_AttackM ;
m_State . CalcValueType ( ) ;
//m_hActor->AddBlowState( &m_State, IsPostStateEffect() );
m_hActor - > AddBlowState ( & m_State , GetAddBlowStateType ( ) ) ;
m_bNeedRefreshState = ( CDnActor : : StateTypeEnum ( - 1 ) ! = m_eRefreshState ) ;
if ( m_bNeedRefreshState )
{
// <20> <> <EFBFBD> Ƿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> θ<EFBFBD> <CEB8> <EFBFBD> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> . post state <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ƴ϶<C6B4> <20> ⺻ state <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̹Ƿ<CCB9> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ش<EFBFBD> .
// <20> θ<EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> ִ<EFBFBD> <20> <> <EFBFBD> 쿣 <20> нú<D0BD> <20> <> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> <20> нú<D0BD> <C3BA> <EFBFBD> <20> <> <EFBFBD> 쿣 basic <20> <> <EFBFBD> Ⱥ<EFBFBD> <C8BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> All Refresh <20> <> <20> ϰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> RefreshSkill <20> <> ó<> <C3B3> ..
if ( NeedRefreshAll ( ) )
{
m_hActor - > RefreshState ( CDnActorState : : RefreshAll , m_eRefreshState ) ;
}
else
{
m_hActor - > RefreshState ( CDnActorState : : RefreshSkill , m_eRefreshState ) ;
}
}
# endif // PRE_ADD_BUFF_STATE_LIMIT
}
void CDnStrengthToMagicAttackBlow : : Process ( LOCAL_TIME LocalTime , float fDelta )
{
__super : : Process ( LocalTime , fDelta ) ;
}
void CDnStrengthToMagicAttackBlow : : OnEnd ( LOCAL_TIME LocalTime , float fDelta )
{
__super : : OnEnd ( LocalTime , fDelta ) ;
# if defined(PRE_ADD_BUFF_STATE_LIMIT)
if ( m_pBasicBlow )
m_pBasicBlow - > OnEnd ( LocalTime , fDelta ) ;
# else
m_hActor - > DelBlowState ( & m_State ) ;
if ( m_bNeedRefreshState )
{
// <20> нú<D0BD> <20> <> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> <20> нú<D0BD> <C3BA> <EFBFBD> <20> <> <EFBFBD> 쿣 All Refresh <20> <> <20> ϰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> RefreshSkill <20> <> ó<> <C3B3>
if ( NeedRefreshAll ( ) )
m_hActor - > RefreshState ( CDnActorState : : RefreshAll , m_eRefreshState ) ;
else
m_hActor - > RefreshState ( CDnActorState : : RefreshSkill , m_eRefreshState ) ;
}
# endif // PRE_ADD_BUFF_STATE_LIMIT
}
# if defined(PRE_ADD_BUFF_STATE_LIMIT)
# else
bool CDnStrengthToMagicAttackBlow : : NeedRefreshAll ( void )
{
// <20> <> <EFBFBD> Ƿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> θ<EFBFBD> <CEB8> <EFBFBD> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> . post state <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ƴ϶<C6B4> <20> ⺻ state <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̹Ƿ<CCB9> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ش<EFBFBD> .
// <20> θ<EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> ִ<EFBFBD> <20> <> <EFBFBD> 쿣 <20> нú<D0BD> <20> <> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> <20> нú<D0BD> <C3BA> <EFBFBD> <20> <> <EFBFBD> 쿣 basic <20> <> <EFBFBD> Ⱥ<EFBFBD> <C8BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> All Refresh <20> <> <20> ϰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> RefreshSkill <20> <> ó<> <C3B3> ..
return ( false = = m_bHasParentSkill | |
( CDnSkill : : Passive = = m_ParentSkillInfo . eSkillType & & CDnSkill : : Buff = = m_ParentSkillInfo . eDurationType ) ) ;
}
# endif // PRE_ADD_BUFF_STATE_LIMIT
# if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
void CDnStrengthToMagicAttackBlow : : 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 CDnStrengthToMagicAttackBlow : : 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