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

718 lines
No EOL
22 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "StdAfx.h"
#include "DnBasicBlow.h"
#include "DnActor.h"
#include "DnSkillTask.h"
#include "DnMonsterActor.h"
#include "DnPlayerActor.h"
#ifdef _GAMESERVER
#include "DNUserSession.h"
#else
#include "DnInterface.h"
#endif
#include "DnStateBlow.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
CDnBasicBlow::CDnBasicBlow(DnActorHandle hActor, const char *szValue)
: CDnBlow(hActor), m_bNeedRefreshState( true ), m_bRefreshAll( false ),
m_eRefreshState( CDnActorState::ST_All ), m_eAddBlowStateType( CDnActorState::Equip_Buff_Level )
{
SetValue(szValue);
m_fValue = (float)atof(szValue);
}
CDnBasicBlow::~CDnBasicBlow(void)
{
}
void CDnBasicBlow::SetBlowState()
{
switch( m_StateBlow.emBlowIndex )
{
case STATE_BLOW::BLOW_001: m_eRefreshState = SetBlowState_001(); break;
case STATE_BLOW::BLOW_002: m_eRefreshState = SetBlowState_002(); break;
case STATE_BLOW::BLOW_003: m_eRefreshState = SetBlowState_003(); break;
case STATE_BLOW::BLOW_004: m_eRefreshState = SetBlowState_004(); break;
case STATE_BLOW::BLOW_005: m_eRefreshState = SetBlowState_005(); break;
case STATE_BLOW::BLOW_006: m_eRefreshState = SetBlowState_006(); break;
case STATE_BLOW::BLOW_007: m_eRefreshState = SetBlowState_007(); break;
case STATE_BLOW::BLOW_008: m_eRefreshState = SetBlowState_008(); break;
case STATE_BLOW::BLOW_009: m_eRefreshState = SetBlowState_009(); break;
case STATE_BLOW::BLOW_010: m_eRefreshState = SetBlowState_010(); break;
case STATE_BLOW::BLOW_015: m_eRefreshState = SetBlowState_015(); break;
case STATE_BLOW::BLOW_017: m_eRefreshState = SetBlowState_017(); break;
case STATE_BLOW::BLOW_019: m_eRefreshState = SetBlowState_019(); break;
case STATE_BLOW::BLOW_020: m_eRefreshState = SetBlowState_020(); break;
case STATE_BLOW::BLOW_021: m_eRefreshState = SetBlowState_021(); break;
case STATE_BLOW::BLOW_022: m_eRefreshState = SetBlowState_022(); break;
case STATE_BLOW::BLOW_023: m_eRefreshState = SetBlowState_023(); break;
case STATE_BLOW::BLOW_024: m_eRefreshState = SetBlowState_024(); break;
case STATE_BLOW::BLOW_026: m_eRefreshState = SetBlowState_026(); break;
case STATE_BLOW::BLOW_028: m_eRefreshState = SetBlowState_028(); break; // Ư<><C6AF> <20><><EFBFBD>ݷ<EFBFBD> <20><><EFBFBD><EFBFBD>
case STATE_BLOW::BLOW_029: m_eRefreshState = SetBlowState_029(); break; // Ư<><C6AF> <20><><EFBFBD>ݷ<EFBFBD> <20><><EFBFBD><EFBFBD>
case STATE_BLOW::BLOW_032: m_eRefreshState = SetBlowState_032(); break;
case STATE_BLOW::BLOW_033: m_eRefreshState = SetBlowState_033(); break;
case STATE_BLOW::BLOW_034: m_eRefreshState = SetBlowState_034(); break;
case STATE_BLOW::BLOW_035: m_eRefreshState = SetBlowState_035(); break;
case STATE_BLOW::BLOW_036: m_eRefreshState = SetBlowState_036(); break;
case STATE_BLOW::BLOW_037: m_eRefreshState = SetBlowState_037(); break;
case STATE_BLOW::BLOW_038: m_eRefreshState = SetBlowState_038(); break;
case STATE_BLOW::BLOW_039: m_eRefreshState = SetBlowState_039(); break;
case STATE_BLOW::BLOW_048: m_eRefreshState = SetBlowState_048(); break;
case STATE_BLOW::BLOW_049: m_eRefreshState = SetBlowState_049(); break;
case STATE_BLOW::BLOW_058: m_eRefreshState = SetBlowState_058(); break;
case STATE_BLOW::BLOW_059: m_eRefreshState = SetBlowState_059(); break;
case STATE_BLOW::BLOW_061: m_eRefreshState = SetBlowState_061(); break;
case STATE_BLOW::BLOW_064: m_eRefreshState = SetBlowState_064(); break;
case STATE_BLOW::BLOW_075: m_eRefreshState = SetBlowState_075(); break;
case STATE_BLOW::BLOW_076: m_eRefreshState = SetBlowState_076(); break;
case STATE_BLOW::BLOW_082: m_eRefreshState = SetBlowState_082(); break;
case STATE_BLOW::BLOW_087: m_eRefreshState = SetBlowState_087(); break;
case STATE_BLOW::BLOW_088: m_eRefreshState = SetBlowState_088(); break;
case STATE_BLOW::BLOW_089: m_eRefreshState = SetBlowState_089(); break;
case STATE_BLOW::BLOW_090: m_eRefreshState = SetBlowState_090(); break;
case STATE_BLOW::BLOW_093: m_eRefreshState = SetBlowState_093(); break;
case STATE_BLOW::BLOW_094: m_eRefreshState = SetBlowState_094(); break;
case STATE_BLOW::BLOW_123: m_eRefreshState = SetBlowState_123(); break;
case STATE_BLOW::BLOW_124: m_eRefreshState = SetBlowState_124(); break;
case STATE_BLOW::BLOW_125: m_eRefreshState = SetBlowState_125(); break;
case STATE_BLOW::BLOW_126: m_eRefreshState = SetBlowState_126(); break;
case STATE_BLOW::BLOW_127: m_eRefreshState = SetBlowState_127(); break;
case STATE_BLOW::BLOW_128: m_eRefreshState = SetBlowState_128(); break;
case STATE_BLOW::BLOW_200: m_eRefreshState = SetBlowState_200(); break;
case STATE_BLOW::BLOW_201: m_eRefreshState = SetBlowState_201(); break;
case STATE_BLOW::BLOW_202: m_eRefreshState = SetBlowState_202(); break;
case STATE_BLOW::BLOW_203: m_eRefreshState = SetBlowState_203(); break;
case STATE_BLOW::BLOW_234: m_eRefreshState = SetBlowState_234(); break;
default:
_ASSERT( "BasicStateBlow enumeration case<73><65> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>." );
break;
}
m_State.CalcValueType();
}
void CDnBasicBlow::AddBlowState()
{
m_eAddBlowStateType = GetAddBlowStateType();
#ifdef PRE_ADD_SKILLBUF_RENEW
// 2012.05.03 ------------------------------------------------------------------------------------------------------------------------------------------//
// <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ƽ<EFBFBD><C6BC> <20><>ų <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PostStateEffect <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ǹǷ<C7B9>
// <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȿ<><C8BF><EFBFBD><EFBFBD> <20>ش<EFBFBD>ȭ<EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>. <20>̴<EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20>Ӹ<EFBFBD> <20>ƴ϶<C6B4> <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD>еǴ<D0B5> <20><><EFBFBD><EFBFBD>
// Equip_Buff_Level <20><><EFBFBD><EFBFBD> AddBlowState() <20><> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD>ִµ<D6B4> m_eAddBlowStateType <20><> <20>׷<EFBFBD><D7B7><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>쿣 bIsBuff <20><> <20><><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>Ѵ<EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlowState <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> pvp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ģ <20>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>־<EFBFBD><D6BE>ְ<EFBFBD> <20>Ǵµ<C7B4> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20>ɷ<EFBFBD>ġ <20><><EFBFBD>ſ<EFBFBD><C5BF><EFBFBD> pvp <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20>ʿ䰡 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
// (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CDnMonsterState::CalcState() <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵǾ<C8B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD>̹Ƿ<CCB9> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̴<EFBFBD> <20><>ȹ<EFBFBD><C8B9><EFBFBD><EFBFBD> <20><><EFBFBD>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><>ģ <20><> <20><><EFBFBD>α׷<CEB1><D7B7>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
// 2012.05.03 ------------------------------------------------------------------------------------------------------------------------------------------//
// PlayerState <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD><EFBFBD>ϰԵǰ<D4B5> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> CalcEquip<69><70><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD>ʱ⶧<CAB1><E2B6A7><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ش<EFBFBD>.
bool bIsPlayerActor = m_hActor->IsPlayerActor();
bool bIsBuff = (m_eAddBlowStateType == CDnActorState::Equip_Buff_Level);
m_hActor->AddBlowState( &m_State, m_eAddBlowStateType, (bIsPlayerActor && bIsBuff) );
#else
m_hActor->AddBlowState( &m_State, m_eAddBlowStateType );
#endif
}
void CDnBasicBlow::RefreshActorState()
{
// ST_All <20≯<EFBFBD> SetBlowState() <20><> ȣ<><C8A3><EFBFBD><EFBFBD> <20>ȵȰ<C8B5><C8B0>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
if( m_bNeedRefreshState )
{
if( m_bRefreshAll )
{
m_hActor->RefreshState( CDnActorState::RefreshAll, m_eRefreshState );
}
else
{
m_hActor->RefreshState( CDnActorState::RefreshSkill, m_eRefreshState );
}
}
}
void CDnBasicBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
{
SetBlowState();
AddBlowState();
CalcRefreshTypes();
RefreshActorState();
#ifdef _GAMESERVER
CheckHPMPFullWhenBegin();
#endif
}
#ifdef _GAMESERVER
void CDnBasicBlow::CheckHPMPFullWhenBegin()
{
if( m_bHPMPFullWhenBegin )
{
m_hActor->CmdRefreshHPSP( m_hActor->GetMaxHP(), m_hActor->GetMaxSP() );
m_bHPMPFullWhenBegin = false;
}
}
#endif
void CDnBasicBlow::SetModifyFloatValue(float fValue)
{
m_fValue = fValue;
SetBlowState();
RefreshActorState();
}
void CDnBasicBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
{
DelBlowState();
RefreshActorState();
}
void CDnBasicBlow::CalcRefreshTypes( void )
{
m_bNeedRefreshState = (CDnActorState::ST_All != m_eRefreshState);
// <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>..
m_bRefreshAll = false;
if( false == m_bNeedRefreshState )
return;
#ifdef PRE_ADD_SKILLBUF_RENEW
switch( m_eAddBlowStateType )
{
// <20><20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF>.
case CDnActorState::Equip_Buff_Level:
case CDnActorState::Equip_Skill_Level:
m_bRefreshAll = true;
break;
// <20><20>ɷ<EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF>.
case CDnActorState::Skill_Level:
m_bRefreshAll = false;
break;
}
#else
m_bRefreshAll = ( false == m_bHasParentSkill || (CDnSkill::Passive == m_ParentSkillInfo.eSkillType && CDnSkill::Buff == m_ParentSkillInfo.eDurationType) );
#endif // #ifdef PRE_ADD_SKILLBUF_RENEW
// #32220 <20><EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> Ư<><C6AF> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>з<EFBFBD><D0B7>ȴ<EFBFBD>.
if( STATE_BLOW::BLOW_200 == m_StateBlow.emBlowIndex ||
STATE_BLOW::BLOW_201 == m_StateBlow.emBlowIndex ||
STATE_BLOW::BLOW_202 == m_StateBlow.emBlowIndex ||
STATE_BLOW::BLOW_203 == m_StateBlow.emBlowIndex )
{
m_bRefreshAll = true;
}
//<2F>߰<EFBFBD><DFB0>Ǵ<EFBFBD> ũ<><C5A9>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD>
if (STATE_BLOW::BLOW_234 == m_StateBlow.emBlowIndex)
m_bRefreshAll = true;
#ifdef PRE_ADD_SKILLBUF_RENEW
// <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ȯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɷ<EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD> <20>Ѵ<EFBFBD>.
// CDnMonsterState::CalcaBaseState() <20><><EFBFBD><EFBFBD> m_BaseState <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EEBEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϳ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20>״<EFBFBD><D7B4><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> ó<><C3B3>.
#else
if( m_hActor && m_hActor->IsMonsterActor() )
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD> <20><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD> <20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20>ٲ<EFBFBD><D9B2>Ƿ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD>ʸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> ó<><C3B3>.
CDnMonsterActor* pMonstreActor = static_cast<CDnMonsterActor*>(m_hActor.GetPointer());
if( pMonstreActor->GetSummonerPlayerActor() )
{
// bNeedRefreshAll -> false <20><> <20><><EFBFBD><EFBFBD>.
m_bRefreshAll = false;
}
}
#endif // #ifdef PRE_ADD_SKILLBUF_RENEW
}
#if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
void CDnBasicBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
{
char szBuff[128] = {0, };
float fOrigValue = (float)atof(szOrigValue);
float fAddValue = (float)atof(szAddValue);
float fResultValue = fOrigValue + fAddValue;
sprintf_s(szBuff, "%f", fResultValue);
szNewValue = szBuff;
}
void CDnBasicBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
{
static char szBuff[128] = {0, };
float fOrigValue = (float)atof(szOrigValue);
float fAddValue = (float)atof(szAddValue);
float fResultValue = fOrigValue - fAddValue;
sprintf_s(szBuff, "%f", fResultValue);
szNewValue = szBuff;
}
#endif // PRE_ADD_PREFIX_SYSTE_RENEW
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_001()
{
m_State.SetAttackPMin( (int)m_fValue );
m_State.SetAttackPMax( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_AttackP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_002()
{
m_State.SetAttackPMinRatio(m_fValue);
m_State.SetAttackPMaxRatio(m_fValue);
return CDnActorState::StateTypeEnum::ST_AttackP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_003()
{
m_State.SetDefenseP( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_DefenseP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_004()
{
m_State.SetDefensePRatio(m_fValue);
return CDnActorState::StateTypeEnum::ST_DefenseP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_005()
{
m_State.SetStrength( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Strength;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_006()
{
m_State.SetAgility( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Agility;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_007()
{
m_State.SetIntelligence( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Intelligence;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_008()
{
m_State.SetStamina( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Stamina;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_009()
{
INT64 iAddToMaxHP = INT64(m_fValue);
m_State.SetMaxHP( iAddToMaxHP );
return CDnActorState::StateTypeEnum::ST_HP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_010()
{
m_State.SetMaxSP((int)m_fValue);
return CDnActorState::StateTypeEnum::ST_SP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_015()
{
#ifdef _GAMESERVER
// <20><> <20>ѹ濡 <20><> ó<><C3B3>
INT64 iHP = m_hActor->GetHP();
INT64 iMaxHP = m_hActor->GetMaxHP();
if( GetParentSkillInfo() && GetParentSkillInfo()->bIsItemSkill == true && m_hActor && m_hActor->GetStateBlow() )
{
if( m_fValue > 0 )
{
float fResultValue = 1.f;
DNVector(DnBlowHandle) vBlows;
m_hActor->GetStateBlow()->GetStateBlowFromBlowIndex( STATE_BLOW::BLOW_272, vBlows );
for( int i = 0; i < (int)vBlows.size(); ++i )
{
fResultValue += vBlows[i]->GetFloatValue();
}
m_fValue *= fResultValue;
}
}
#if defined( _GAMESERVER )
CalcHealValueLimit( m_StateBlow.emBlowIndex, m_fValue );
#endif
#if defined(PRE_ADD_DARKLAIR_HEAL_REGULATION) && defined(_GAMESERVER)
m_fValue = CalcModifiedHealValue( m_fValue );
#endif
INT64 iDelta = INT64(m_fValue);
INT64 iResult = iHP + iDelta;
if( iMaxHP < iResult )
{
iResult = iMaxHP;
iDelta = iMaxHP - iHP;
}
else
if( iResult < 0 )
{
iResult = 1;
iDelta = 1 - iHP;
}
m_hActor->SetHP( iResult );
m_hActor->RequestHPMPDelta( CDnState::ElementEnum_Amount, iDelta, m_hActor->GetUniqueID() );
#endif
return CDnActorState::StateTypeEnum::ST_HP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_017()
{
int nSP = m_hActor->GetSP();
int nPrevSP = nSP;
nSP += (int)m_fValue;
if( nSP > m_hActor->GetMaxSP() )
nSP = m_hActor->GetMaxSP();
m_hActor->SetSP( nSP );
#ifndef _GAMESERVER
int nAddSP = nSP - nPrevSP;
if( nAddSP > 0 ) {
GetInterface().SetRecovery( m_hActor->GetHeadPosition(), 0, nAddSP, false, (m_hActor == CDnActor::s_hLocalActor) );
}
#endif
return CDnActorState::StateTypeEnum::ST_SP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_019()
{
m_State.SetStiff( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Stiff;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_020()
{
m_State.SetStiffResistance( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_StiffResistance;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_021()
{
m_State.SetCritical( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Critical;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_022()
{
m_State.SetCriticalResistance( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_CriticalResistance;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_023()
{
m_State.SetStun( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_Stun;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_024()
{
m_State.SetStunResistance( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_StunResistance;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_026()
{
m_State.SetDownDelayProb( m_fValue );
return CDnActorState::StateTypeEnum::ST_DownDelay;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_028()
{
m_State.SetAttackMMin( (int)m_fValue );
m_State.SetAttackMMax( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_AttackM;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_029()
{
m_State.SetAttackMMinRatio( m_fValue );
m_State.SetAttackMMaxRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_AttackM;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_032()
{
m_State.SetElementAttack( CDnState::Fire, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementAttack;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_033()
{
m_State.SetElementAttack( CDnState::Ice, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementAttack;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_034()
{
m_State.SetElementAttack( CDnState::Light, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementAttack;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_035()
{
m_State.SetElementAttack( CDnState::Dark, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementAttack;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_036()
{
m_State.SetElementDefense( CDnState::Fire, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementDefense;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_037()
{
m_State.SetElementDefense( CDnState::Ice, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementDefense;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_038()
{
m_State.SetElementDefense( CDnState::Light, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementDefense;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_039()
{
m_State.SetElementDefense( CDnState::Dark, m_fValue );
return CDnActorState::StateTypeEnum::ST_ElementDefense;
}
// <20><>ų <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>(ȿ<><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_048()
{
#ifndef _GAMESERVER
GetSkillTask().SetSkillPoint( GetSkillTask().GetSkillPoint()+(int)m_fValue );
#else
// <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD>.
_ASSERT( m_hActor->GetActorType() <= CDnActor::ActorTypeEnum::Reserved6 );
if( !m_hActor || m_hActor->GetActorType() > CDnActor::ActorTypeEnum::Reserved6 )
return CDnActorState::StateTypeEnum(-1);
static_cast<CDnPlayerActor*>( m_hActor.GetPointer() )->GetUserSession()->ChangeSkillPoint( (int)m_fValue, 0, false, 0 );
#endif
return CDnActorState::StateTypeEnum(-1);
}
// <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD>(ȿ<><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_049()
{
// <20>α<EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>𸣰<EFBFBD><F0B8A3B0><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> -1<><31> <20><><EFBFBD><EFBFBD>
if( m_hActor && m_hActor->IsPlayerActor() ) {
((CDnPlayerActor*)m_hActor.GetPointer())->AddExperience( (int)m_fValue, -1, (INT64)0 );
}
return CDnActorState::StateTypeEnum(-1);
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_061()
{
m_State.SetSuperAmmor( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_SuperAmmor;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_064()
{
m_State.SetSuperAmmorRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_SuperAmmor;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_058()
{
m_State.SetMaxHPRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_HP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_059()
{
m_State.SetMaxSPRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_SP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_075()
{
m_State.SetMoveSpeed( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_MoveSpeed;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_076()
{
m_State.SetMoveSpeedRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_MoveSpeed;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_082()
{
m_State.SetFinalDamageRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_FinalDamage;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_087()
{
m_State.SetStrengthRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Strength;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_088()
{
m_State.SetAgilityRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Agility;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_089()
{
m_State.SetIntelligenceRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Intelligence;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_090()
{
m_State.SetStaminaRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Stamina;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_093()
{
m_State.SetDefenseM( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_DefenseM;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_094()
{
m_State.SetDefenseMRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_DefenseM;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_123()
{
m_State.SetStiffRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Stiff;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_124()
{
m_State.SetStiffResistanceRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_StiffResistance;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_125()
{
m_State.SetCriticalRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Critical;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_126()
{
m_State.SetCriticalResistanceRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_CriticalResistance;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_127()
{
m_State.SetStunRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_Stun;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_128()
{
m_State.SetStunResistanceRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_StunResistance;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_200()
{
m_State.SetAttackPMin( (int)m_fValue );
m_State.SetAttackPMax( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_AttackP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_201()
{
m_State.SetAttackPMinRatio(m_fValue);
m_State.SetAttackPMaxRatio(m_fValue);
return CDnActorState::StateTypeEnum::ST_AttackP;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_202()
{
m_State.SetAttackMMin( (int)m_fValue );
m_State.SetAttackMMax( (int)m_fValue );
return CDnActorState::StateTypeEnum::ST_AttackM;
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_203()
{
m_State.SetAttackMMinRatio( m_fValue );
m_State.SetAttackMMaxRatio( m_fValue );
return CDnActorState::StateTypeEnum::ST_AttackM;
}
void CDnBasicBlow::DelBlowState()
{
m_hActor->DelBlowState( &m_State );
}
CDnActorState::StateTypeEnum CDnBasicBlow::SetBlowState_234()
{
m_State.SetCritical((int)m_fValue);
return CDnActorState::StateTypeEnum::ST_Critical;
}