DragonNest/GameCommon/DnBasicBlow.cpp

718 lines
22 KiB
C++
Raw Permalink Normal View History

#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;
}