384 lines
14 KiB
C
384 lines
14 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "EtMatrixEx.h"
|
|||
|
|
#include "DnItem.h"
|
|||
|
|
#include "DnSkill.h"
|
|||
|
|
|
|||
|
|
class CDnActor;
|
|||
|
|
class CDnProjectile;
|
|||
|
|
|
|||
|
|
class MASkillUser
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
MASkillUser();
|
|||
|
|
virtual ~MASkillUser();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
LOCAL_TIME m_LocalTime;
|
|||
|
|
DnSkillHandle m_hProcessSkill;
|
|||
|
|
DnSkillHandle m_hCanceledSkill;
|
|||
|
|
|
|||
|
|
DnSkillHandle m_hToggleSkill; //<2F>̳༮<CCB3><E0BCAE> <20><><EFBFBD>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>־ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|||
|
|
DnSkillHandle m_hAuraSkill;
|
|||
|
|
|
|||
|
|
DnSkillHandle m_hItemSkill;
|
|||
|
|
|
|||
|
|
#ifndef PRE_FIX_SKILLLIST
|
|||
|
|
DNVector(DnSkillHandle) m_vlhSkillList;
|
|||
|
|
vector<bool> m_vbSelfAllocList;
|
|||
|
|
#else
|
|||
|
|
struct S_SKILL_OBJECT
|
|||
|
|
{
|
|||
|
|
DnSkillHandle hSkill;
|
|||
|
|
bool bSelfAlloc;
|
|||
|
|
|
|||
|
|
S_SKILL_OBJECT( void ) : bSelfAlloc( false ) {};
|
|||
|
|
S_SKILL_OBJECT( DnSkillHandle _hSkill, bool _bSelfAlloc )
|
|||
|
|
{
|
|||
|
|
hSkill = _hSkill;
|
|||
|
|
bSelfAlloc = _bSelfAlloc;
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
#endif // #ifndef PRE_FIX_SKILLLIST
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ӽð<D3BD> <20>ִ<EFBFBD> <20><>ų, Į <20><><EFBFBD><EFBFBD><EFBFBD>ⰰ<EFBFBD><E2B0B0> <20><>ų <20><>ƾ <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>͵<EFBFBD><CDB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
|||
|
|
deque<DnSkillHandle> m_dqhItemSkillList;
|
|||
|
|
|
|||
|
|
DnActorHandle m_hSkillTarget;
|
|||
|
|
EtVector3 m_vSkillTargetPos;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD>Ƶд<C6B5>.
|
|||
|
|
DNVector(DnSkillHandle) m_vlhToggleSkills;
|
|||
|
|
DNVector(DnSkillHandle) m_vlhAuraSkills;
|
|||
|
|
|
|||
|
|
// <20>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>ִ<EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ƽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִٰ<D6B4> ȿ<><C8BF> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> Ÿ<>̹<EFBFBD><CCB9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
DNVector(DnSkillHandle) m_vlhSelfPassiveBlowSkill;
|
|||
|
|
CDnActor *m_pActor;
|
|||
|
|
bool m_bIsValidActor;
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><> <20><><EFBFBD>¸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD>Ͽ<EFBFBD> <20>Ǿ <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|||
|
|
CDnState m_ActorStateSnapshotForToggleProjectile;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ų <20><>ų <20><><EFBFBD><EFBFBD>Ʈ. MASkillUser::Process <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
DNVector(DnSkillHandle) m_vlhReservedFinishSkill;
|
|||
|
|
|
|||
|
|
// <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
//float m_fAdjustCoolTime;
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
// cheat
|
|||
|
|
bool m_bIgnoreCoolTime;
|
|||
|
|
|
|||
|
|
list<DnSkillHandle> m_listAutoPassiveSkills;
|
|||
|
|
list<DnSkillHandle> m_listProcessAutoPassiveSkills;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>.. <20><>Ÿ<EFBFBD><C5B8> <20>ǰݵ<C7B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> Target <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20>ο<EFBFBD><CEBF>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
DNVector(IDnSkillProcessor*) m_vlpApplySEWhenNormalHitProcessor;
|
|||
|
|
#else
|
|||
|
|
bool m_bSkillExecutedThisFrame; // <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ñ׳<C3B1><D7B3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>. (#9886)
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7BC≯<EFBFBD><CCB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
set<string> m_setUseActionNames;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȿ<><C8BF><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>. (#21146)
|
|||
|
|
float m_fCoolTimeDeltaAdjustValue;
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
#ifdef PRE_FIX_SKILLLIST
|
|||
|
|
vector<S_SKILL_OBJECT> m_vlSkillObjects;
|
|||
|
|
#endif // #ifdef PRE_FIX_SKILLLIST
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool IsValidActor();
|
|||
|
|
|
|||
|
|
CDnSkill::UsingResult CanExecuteSkill( DnSkillHandle hSkill );
|
|||
|
|
|
|||
|
|
// Process
|
|||
|
|
virtual void OnSkillProcess( LOCAL_TIME LocalTime, float fDelta );
|
|||
|
|
// <20><>ų <20><><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۵Ǵ<DBB5> <20><><EFBFBD><EFBFBD> <20>нú<D0BD> <20><>ų <20>÷<EFBFBD><C3B7>״<EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20><><EFBFBD>ڷ<EFBFBD> <20><EFBFBD><DEBD>ϴ<EFBFBD>.
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
virtual bool ExecuteSkill( DnSkillHandle hSkill, LOCAL_TIME LocalTime, float fDelta );
|
|||
|
|
#else
|
|||
|
|
virtual bool ExecuteSkill( DnSkillHandle hSkill, LOCAL_TIME LocalTime, float fDelta, bool bCheckValid = true, bool bAutoUsedFromServer = false, bool bSendPacketToServer = true );
|
|||
|
|
#endif
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><EFBFBD><DFBB>Ǹ<EFBFBD> <20><><EFBFBD>۵<EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD> <20>Բ<EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
virtual void OnSkillToggleProjectile( DnSkillHandle hSkill, CDnProjectile *pProjectile );
|
|||
|
|
public:
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
virtual void OnSkillToggle( DnSkillHandle hSkill, bool bEnable );
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
virtual void OnSkillAura( DnSkillHandle hSkill, bool bEnable );
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8>
|
|||
|
|
virtual void OnSkillProjectile( CDnProjectile *pProjectile );
|
|||
|
|
virtual void OnAddSkill( DnSkillHandle hSkill, bool isInitialize = false );
|
|||
|
|
virtual void OnRemoveSkill( DnSkillHandle hSkill );
|
|||
|
|
virtual void OnReplacementSkill( DnSkillHandle hLegacySkill, DnSkillHandle hNewSkill ) {};
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
DnSkillHandle FindSkill( int nSkillTableID );
|
|||
|
|
|
|||
|
|
virtual bool CanAddSkill( int nSkillTableID, int nLevel = 1 ){ return true; }
|
|||
|
|
virtual bool AddSkill( int nSkillTableID, int nLevel = 1, int iSkillLevelApplyType = CDnSkill::PVE );
|
|||
|
|
|
|||
|
|
#ifndef PRE_FIX_SKILLLIST // <20><><EFBFBD><EFBFBD> <20>˻<EFBFBD><CBBB><EFBFBD> <20><><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>.
|
|||
|
|
#else
|
|||
|
|
virtual void AddSkillObject( S_SKILL_OBJECT& SkillObject ) { m_vlSkillObjects.push_back( SkillObject ); };
|
|||
|
|
#endif // #ifdef PRE_FIX_SKILLIST
|
|||
|
|
|
|||
|
|
// <20><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
// <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD>ʹ<EFBFBD> <20><>ųƮ<C5B3><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȵ˴ϴ<CBB4>.
|
|||
|
|
bool AddSkill( DnSkillHandle hSkill );
|
|||
|
|
bool RemoveSkill( int nSkillTableID );
|
|||
|
|
bool RemoveSkillAll();
|
|||
|
|
bool EndStateEffectSkill(int nSkillTableID);
|
|||
|
|
// <20><><EFBFBD><EFBFBD> Ŭ<><EFBFBD><F3BFA1BC><EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
#ifndef _GAMESERVER
|
|||
|
|
bool ReplacementSkill( int nSkillTableID, int nLevel = 1 ); // <20><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><>ü self allocation
|
|||
|
|
bool ReplacementSkill( DnSkillHandle hNewSkill );
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
virtual bool ApplyPassiveSkill( DnSkillHandle hSkill, bool isInitialize = false );
|
|||
|
|
virtual void OnApplyPassiveSkillBlow( int iBlowID ) {};
|
|||
|
|
void ApplyPassiveSkills( void ); // <20><>Ȱ <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų <20><> ȣ<><C8A3><EFBFBD><EFBFBD>
|
|||
|
|
bool bIsPassiveSkill( DnBlowHandle hBlow );
|
|||
|
|
bool IsExistSkill( int nSkillTableID, int nLevel = -1 );
|
|||
|
|
void SetSkillLevel( int nSkillTableID, int nValue );
|
|||
|
|
bool IsSelfAllocSkill( int nSkillTableID );
|
|||
|
|
|
|||
|
|
virtual CDnSkill::UsingResult UseSkill( int nSkillTableID, bool bCheckValid = true, bool bAutoUseFromServer = false, int nLuaSkillIndex=-1 ); // LuaSkillIndex <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AI <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF>ؼ<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD>.
|
|||
|
|
bool IsProcessSkill();
|
|||
|
|
void ResetToggleSkill();
|
|||
|
|
void ResetAuraSkill();
|
|||
|
|
|
|||
|
|
bool IsEnabledToggleSkill()
|
|||
|
|
{
|
|||
|
|
//m_hToggleSkill<6C><6C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|||
|
|
return false;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
bool IsEnabledAuraSkill() { return (m_hAuraSkill != NULL); };
|
|||
|
|
|
|||
|
|
DnSkillHandle GetProcessSkill();
|
|||
|
|
DnSkillHandle GetEnabledToggleSkill() { return m_hToggleSkill; };
|
|||
|
|
DnSkillHandle GetEnabledAuraSkill() { return m_hAuraSkill; };
|
|||
|
|
|
|||
|
|
DnActorHandle GetSkillTarget() { return m_hSkillTarget; }
|
|||
|
|
EtVector3 *GetSkillTargetPos() { return &m_vSkillTargetPos; }
|
|||
|
|
|
|||
|
|
DWORD GetSkillCount();
|
|||
|
|
DnSkillHandle GetSkillFromIndex( DWORD dwIndex );
|
|||
|
|
|
|||
|
|
bool UseItemSkill( int nSkillTableID, int nSkillLevelTableID, CDnItem::ItemSkillApplyType ItemSkillApplyType, int nItemID = -1 );
|
|||
|
|
bool IsUsingItemSkill( void ) { return m_hItemSkill ? true : false; }
|
|||
|
|
|
|||
|
|
void ResetSkillCoolTime( void );
|
|||
|
|
void ResetPvPSkillCoolTime();
|
|||
|
|
void ResetLadderSkillCoolTime();
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
void IgnoreSkillCoolTime( void );
|
|||
|
|
bool IsIgnoreSkillCoolTime( void ) { return m_bIgnoreCoolTime; };
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef _GAMESERVER
|
|||
|
|
bool IsUsingSkillAction( const char *szAction );
|
|||
|
|
#endif
|
|||
|
|
void ReserveFinishSkill( DnSkillHandle hSkill );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20>ߴ<EFBFBD>.
|
|||
|
|
void CancelUsingSkill( void );
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
// for Fire/Ice Shield
|
|||
|
|
void UseAutoPassiveSkill( LOCAL_TIME LocalTime, float fDelta );
|
|||
|
|
bool IsProcessingAutoPassive( int iSkillID );
|
|||
|
|
void EndAutoPassiveSkill( LOCAL_TIME LocalTime, float fDelta );
|
|||
|
|
//const CDnState *GetActorStateSnapshotForProjectile( void ) { return &m_ActorStateSnapshotForToggleProjectile; };
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//rlkt_mastery
|
|||
|
|
bool HavePassiveSkill(int iSkillID);
|
|||
|
|
//void AddCoolTimeAdjustValue( float fCoolTimeAdjustValue )
|
|||
|
|
//{
|
|||
|
|
// _ASSERT( 0.0f < fCoolTimeAdjustValue+fCoolTimeAdjustValue && fCoolTimeAdjustValue+fCoolTimeAdjustValue < 1.0f );
|
|||
|
|
// m_fAdjustCoolTime += fCoolTimeAdjustValue;
|
|||
|
|
//};
|
|||
|
|
//float GetCoolTimeAdjustValue( void ) { return m_fAdjustCoolTime; };
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>Ⱑ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>нú<D0BD><C3BA><EFBFBD> Ư<><C6AF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD>ǵ<EFBFBD> <20><>ų <20><><EFBFBD>밡<EFBFBD><EBB0A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ <20>ʿ<EFBFBD>.
|
|||
|
|
void OnAttachWeapon( DnWeaponHandle hWeapon, int iAttachedWeaponIndex );
|
|||
|
|
void OnDetachWeapon( DnWeaponHandle hWeapon, int iDetachedWeaponIndex );
|
|||
|
|
|
|||
|
|
float GetCoolTimeDeltaAdjustValue( void ) { return m_fCoolTimeDeltaAdjustValue; };
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
void SelectSkillLevelDataType( int iLevelDataType, bool bPlayerSummonedMonster = false );
|
|||
|
|
int GetSelectedSkillLevelDataType( void );
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
std::map<int, int> m_vlStateBlowIDToRemove; // [2010/12/15 semozz]<5D>ش<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> ID<49>ߺ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> map<61><70><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
void AddStateBlowIDToRemove(int blowID); //<2F><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> ID<49><44><EFBFBD><EFBFBD>
|
|||
|
|
void InitStateBlowIDToRemove(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> ID<49><44><EFBFBD><EFBFBD>Ʈ <20>ʱ<EFBFBD>ȭ
|
|||
|
|
virtual void RemoveResetStateBlow() {}; //<2F><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
void AddApplySEWhenTargetNormalHitProcessor( IDnSkillProcessor* pProcessor ) { m_vlpApplySEWhenNormalHitProcessor.push_back( pProcessor ); };
|
|||
|
|
void RemoveApplySEWhenTargetNormalHitProcessor( IDnSkillProcessor* pProcessor );
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if defined(_GAMESERVER)
|
|||
|
|
protected:
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>Ժ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
struct PREFIX_SYSTEM_SKILLINFO
|
|||
|
|
{
|
|||
|
|
int slotIndex; //<2F>ش<EFBFBD> <20><><EFBFBD><EFBFBD> Index
|
|||
|
|
float fRatio; //<2F><>ų Ȯ<><C8AE>
|
|||
|
|
DnSkillHandle hSkill; //<2F><>ų <20>ڵ<EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
typedef std::vector<PREFIX_SYSTEM_SKILLINFO> PRESIX_SYSTEM_SKILLS; //<2F><><EFBFBD>ξ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
typedef std::map<int, PRESIX_SYSTEM_SKILLS> PREFIX_SYSTEM_SKILL_COLLECTION; //<2F><>ų ID<49><44> <20><EFBFBD><D7B7><EFBFBD>/<2F>켱<EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B7>ο<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
typedef std::map<int, PREFIX_SYSTEM_SKILLINFO> PREFIX_SYSTEM_SKILL_LIST; //<2F><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD> <20><><EFBFBD>Ժ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
|
|
|||
|
|
PREFIX_SYSTEM_SKILL_LIST m_prefixSystemDefenceSkills; //<2F><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3>
|
|||
|
|
PREFIX_SYSTEM_SKILL_COLLECTION m_PrefixSystemCandiateDefenceSkills;
|
|||
|
|
|
|||
|
|
PREFIX_SYSTEM_SKILL_LIST m_prefixSystemOffenceSkills; //<2F><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݿ<EFBFBD> <20><>ų<EFBFBD><C5B3>
|
|||
|
|
PREFIX_SYSTEM_SKILL_COLLECTION m_PrefixSystemCandiateOffenceSkills;
|
|||
|
|
|
|||
|
|
list<DnSkillHandle> m_listProcessPreFixDefenceSkills;
|
|||
|
|
list<DnSkillHandle> m_listProcessPreFixOffenceSkills;
|
|||
|
|
|
|||
|
|
void RefreshPrefixDefenceSkills(); //<2F><><EFBFBD><EFBFBD> <20><>/Ż<><C5BB><EFBFBD><EFBFBD> <20><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.(<28><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ź<EFBFBD> <20>ϴ°<CFB4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>/Ż<><C5BB><EFBFBD><EFBFBD> <20>ѹ<EFBFBD> <20><> <20><><EFBFBD>°<EFBFBD> ȿ<><C8BF><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>..)
|
|||
|
|
void RefreshPrefixOffenceSkills(float fHitDamageProb = 1.0f); //<2F><><EFBFBD><EFBFBD> <20><>/Ż<><C5BB><EFBFBD><EFBFBD> <20><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD>ݿ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD> <20><>ų <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD>
|
|||
|
|
CoolTimeManager m_PrefixSkillCoolTimeManager;
|
|||
|
|
public:
|
|||
|
|
void EndPrefixSystemSkill( LOCAL_TIME LocalTime, float fDelta );
|
|||
|
|
|
|||
|
|
bool AddPreFixSystemDefenceSkill(int slotIndex, DnSkillHandle hSkill);
|
|||
|
|
void RemovePreFixSystemDefenceSkill(int slotIndex);
|
|||
|
|
void RemoveProcessPrefixDefenceSkill(DnSkillHandle hSkill);
|
|||
|
|
|
|||
|
|
bool AddPreFixSystemOffenceSkill(int slotIndex, DnSkillHandle hSkill);
|
|||
|
|
void RemovePreFixSystemOffenceSkill(int slotIndex);
|
|||
|
|
void RemoveProcessPrefixOffenceSkill(DnSkillHandle hSkill);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
void GroupingPrefixDefenceSkillsBySameSkillID(PREFIX_SYSTEM_SKILL_LIST &skillList, PREFIX_SYSTEM_SKILL_COLLECTION &sameSkillList);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><>ų<EFBFBD><C5B3> <20>ߵ<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(+)<29>ؼ<EFBFBD> <20>ĺ<EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
void CalculateProbabilitySkill(PREFIX_SYSTEM_SKILL_LIST &candidateSkills, PREFIX_SYSTEM_SKILL_COLLECTION &sameSkillList);
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><>ųID<49><44> <20><>ų<EFBFBD><C5B3><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>õ<EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20>켱<EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
|
|||
|
|
void GroupingSkillByPriority(PREFIX_SYSTEM_SKILL_COLLECTION& prefixSystemSkills, PREFIX_SYSTEM_SKILL_LIST& tempCandiateSkills, float fHitDamageProb = 1.0f);
|
|||
|
|
|
|||
|
|
void ProcessPrefixDefenceSkill(DnActorHandle hHitter); //<2F><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20>ߵ<EFBFBD>
|
|||
|
|
|
|||
|
|
// <20>ڽſ<DABD><C5BF>Ը<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ų<EFBFBD><C5B2>.
|
|||
|
|
void ProcessPrefixOffenceSkill(float fHitDamageProb); //<2F><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݿ<EFBFBD> <20><>ų <20>ߵ<EFBFBD>
|
|||
|
|
void ApplyPrefixOffenceSkillToTarget(DnActorHandle hTarget);//<2F><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݿ<EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>濡<EFBFBD><E6BFA1> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ξ<EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD>ݿ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ.
|
|||
|
|
void InitPrefixOffenceSkills();
|
|||
|
|
|
|||
|
|
bool IsPrefixTriggerSkill();
|
|||
|
|
|
|||
|
|
bool IsApplyPrefixOffenceSkill() { return !m_listProcessPreFixOffenceSkills.empty(); }
|
|||
|
|
|
|||
|
|
#endif // _GAMESERVER
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
struct SkillLevelUpInfo
|
|||
|
|
{
|
|||
|
|
int nSkillID;
|
|||
|
|
int nLevelUp;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
std::map<int, SkillLevelUpInfo> m_SkillLevelUpInfoList;
|
|||
|
|
std::map<int, int> m_SkillLevelUpInfo;
|
|||
|
|
|
|||
|
|
void UpdateSkillLevelUpInfo();
|
|||
|
|
void SkillLevelUp(int nSkillID, int nLevelUp);
|
|||
|
|
public:
|
|||
|
|
void AddSkillLevelUpInfo(int nSlotIndex, int nSkillID, int nLevelUp);
|
|||
|
|
void RemoveSkillLevelUpInfo(int nSlotIndex);
|
|||
|
|
|
|||
|
|
int GetSkillLevelUpValue(int nSkillID);
|
|||
|
|
bool ExistSkillLevelUpValue();
|
|||
|
|
|
|||
|
|
void ApplySkillLevelUp( int nSkillTableID, int nValue ); //SetSkillLevel<65>Լ<EFBFBD><D4BC><EFBFBD> ù<><C3B9>° <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD>
|
|||
|
|
|
|||
|
|
//Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> LocalPlayer<65><72> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD>(Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> LocalPlayerActor<6F><72><EFBFBD><EFBFBD> SkillTask<73><6B> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>)
|
|||
|
|
//Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> LocalPlayer<65><72> <20>ƴ<EFBFBD> <20>ٸ<EFBFBD> ij<><C4B3><EFBFBD>Ϳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PlayerActor<6F><72> MaSkillUser<65><72><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
|
|||
|
|
virtual void ChangeSkillLevelUp(int nSkillID, int nSkillLevel);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
std::map<int, SkillLevelUpInfo> m_CashSkillLevelUpInfoList;
|
|||
|
|
std::map<int, int> m_CashSkillLevelUpInfo;
|
|||
|
|
|
|||
|
|
void UpdateSkillLevelUpInfoByCashItem();
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
void AddSkillLevelUpInfoByCashItem(int nSlotIndex, int nSkillID, int nLevelUp);
|
|||
|
|
void RemoveSkillLevelUpInfoByCashItem(int nSlotIndex);
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
|
|||
|
|
#if defined(_GAMESERVER)
|
|||
|
|
protected:
|
|||
|
|
typedef std::map<int, CDnPrefixSkill*> PREFIX_SKILL_INFO;
|
|||
|
|
PREFIX_SKILL_INFO m_PrefixDefenceSkills;
|
|||
|
|
PREFIX_SKILL_INFO m_PrefixOffenceSkills;
|
|||
|
|
|
|||
|
|
std::list<CDnPrefixSkill*> m_ProcessPrefixOffenceSkills;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
void AddPrefixDefenceSkill(DnSkillHandle hSkill);
|
|||
|
|
void RemovePrefixDefenceSkill(DnSkillHandle hSkill);
|
|||
|
|
|
|||
|
|
void ProcessPrefixDefenceSkill_New(DnActorHandle hHitter);
|
|||
|
|
|
|||
|
|
|
|||
|
|
void AddPrefixOffenceSkill(DnSkillHandle hSkill);
|
|||
|
|
void RemovePrefixOffenceSkill(DnSkillHandle hSkill);
|
|||
|
|
void RemoveProcessPrefixOffenceSkill(CDnPrefixSkill* pRemovePrefixSkill);
|
|||
|
|
|
|||
|
|
void ProcessPrefixOffenceSkill_New();
|
|||
|
|
void ApplyPrefixOffenceSkillToTarget_New(DnActorHandle hTarget);
|
|||
|
|
#endif // _GAMESERVER
|
|||
|
|
|
|||
|
|
#endif // PRE_ADD_PREFIX_SYSTE_RENEW
|
|||
|
|
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
typedef std::map<int, DnSkillHandle> TOGGLESKILLLIST;
|
|||
|
|
TOGGLESKILLLIST m_ToggleOnSkillList; //<2F><><EFBFBD><EFBFBD>On<4F><6E> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
void SkillToggle(DnSkillHandle hSkill, bool isOn); //<2F><>ų <20><><EFBFBD><EFBFBD> On/Off
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
TOGGLESKILLLIST& GetActiveToggleSkillList() { return m_ToggleOnSkillList; }
|
|||
|
|
|
|||
|
|
void SummonOnOffSkillInit(DWORD dwSummonMonsterID);
|
|||
|
|
|
|||
|
|
#if defined(PRE_FIX_62052)
|
|||
|
|
void ApplyGlobalSkillCoolTime(DnSkillHandle hSkill);
|
|||
|
|
#endif // PRE_FIX_62052
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_TOTAL_LEVEL_SKILL)
|
|||
|
|
public:
|
|||
|
|
void UpdateGlobalCoolTime(float fRate);
|
|||
|
|
void ResetGlobalCoolTime(float fRate);
|
|||
|
|
#endif // PRE_ADD_TOTAL_LEVEL_SKILL
|
|||
|
|
};
|
|||
|
|
|