📄 skill.h
字号:
#ifndef _SKILL_H_
#define _SKILL_H_
#include <const.h>
#include <ProgramCommon/WzDataType.h>
#include <list>
struct SkillInfo
{
SLOTCODE m_SkillCode; // Skill 内靛
DWORD m_dwClientSerial; // Skill 捞亥飘俊 措茄 绊蜡 锅龋
WzVector m_wvCurPos; // 努扼捞攫飘啊 林绰 傍拜磊狼 泅犁 谅钎
WzVector m_wvDestPos; // 傍拜磊啊 捞悼且 谅钎
BYTE m_byAttackType; // 傍拜 鸥涝
DWORD m_dwMainTargetKey; // 林傍拜措惑狼 坷宏璃飘 虐
WzVector m_wvMainTargetPos; // 林傍拜措惑狼 困摹
BYTE m_bySkillEffect; // 胶懦 捞棋飘
};
// 胶懦喊 加己
#define SKILL_ATTRIBUTION_INVISIBLE 0x01
#define SKILL_ATTRIBUTION_TARGETSTOP 0x02
#define SKILL_ATTRIBUTION_TARGETFLYING 0x04
class Character;
struct MSG_CG_SKILL_M2M_CMD;
class SkillScriptInfo;
class Field;
class Ability;
typedef std::list<Ability*> ABILITY_LIST;
typedef ABILITY_LIST::iterator ABILITY_LIST_ITER;
// 唱吝俊 BaseSkil狼 惑加阑 罐酒 ActiveSkill(Instant, Delayed), StyleSkill, PassiveSkill肺 唱床具 茄促.
class Skill
{
public:
Skill();
virtual ~Skill() {}
virtual VOID Init( Character* pOwnerChar, SkillInfo* pSkillInfo, void* pBaseSkillInfo );
virtual VOID StartExecute() {}; // 溜矫 角青登绰 何盒
virtual VOID EndExecute() {}; // Interval 饶俊 角青登绰 何盒
inline DWORD GetExecuteTick() { return m_dwExecuteTick; }
virtual SLOTCODE GetSkillCode();
virtual eSKILL GetSkillClassCode();
inline Character* GetOwner() { return m_pOwnerChar; }
inline SkillInfo* GetSkillnfo() { return &m_SkillInfo; }
virtual eSKILL_TYPE GetSkillType();
inline SkillScriptInfo* GetSkillBaseInfo() { return m_pBaseSkillInfo; }
virtual VOID CommonRelease(); // 傍烹栏肺 秦力窍绰 何盒
// 窍困 努贰胶俊辑父 静捞绰 窃荐甸
virtual VOID SetApply( BOOL bApply ) { __UNUSED(bApply); }
virtual BOOL IsApplied() { return FALSE; }
virtual VOID SetValueType( int iValueType ) { __UNUSED(iValueType); }
virtual VOID SetValue( int iValue ) { __UNUSED(iValue); }
virtual int GetValueType() { return 0; }
virtual int GetValue() { return 0; }
protected:
virtual BOOL CheckMainTarget(); // MainTarget捞 蜡瓤茄瘤 眉农茄促.
virtual BOOL ParamInitialize(); // 颇扼固磐 檬扁拳
virtual VOID CommonExecute(); // 傍烹栏肺 角青窍绰 何盒
virtual BYTE FindTargets( Character **pTargetArray );// 鸥百府胶飘甫 备窍绰 何盒
virtual VOID SendAIMessage( Character *pTarget, DAMAGETYPE wDamage=0 ); // 鞘夸茄 版快 NPC俊霸 AIMessage甫 朝赴促.
BOOL ExecuteAbilities( Character *pTarget, RESULTMSG &sResultMsg ); // Ability甫 利侩矫挪促.
BYTE ExecuteEffectAbilities( RESULTMSG *pResultMsg ); // 捞棋飘 包访等 绢呼府萍甫 利侩茄促.
virtual VOID SetExecuteInterval() {}
virtual WORD GetExecuteInterval() { return m_wInterval; }
VOID SetAttribution();
BOOL GetAttribution() { return m_bySkillAttribution; }
VOID AddSkillAttackPower( int iAttackPower ) { m_iSkillAttackPower += iAttackPower; }
VOID AddSkillPercentDamage( float fPercentDamage ) { m_fSkillPercentDamage += fPercentDamage; }
VOID Broadcast_Instant_Result();
VOID Broadcast_Delayed_Result();
private:
ABILITY_LIST m_listAbilitys;
protected:
Character* m_pOwnerChar; // 胶懦 矫傈磊
SkillInfo m_SkillInfo;
SkillScriptInfo *m_pBaseSkillInfo;
DWORD m_dwExecuteTick;
WORD m_wInterval;
BYTE m_bySkillAttribution; // Invisible, TargetStop, TargetFlying
BOOL m_bTempApply; // 鸥百 茄疙茄抛 利侩茄 饶俊绰 檬扁拳茄促
int m_iSkillAttackPower; // 胶懦 傍拜仿
float m_fSkillPercentDamage; // 胶懦 %眠啊 单固瘤
BOOL m_bEndExecute; // EndExecute()甫 角青且 巴牢啊
// Local Parameter
Field* m_pField; // 傍拜磊啊 加茄 鞘靛
BYTE m_byNumberOfTargets; // 傍拜 措惑狼 荐樊
Character* m_pTarget[MAX_TARGET_NUM]; // 傍拜 措惑 府胶飘
BYTE m_byHitTargetCount; // 胶懦 单固瘤甫 涝篮 鸥百荐
BYTE m_byEffectCount; // Effect 绢呼府萍 俺荐
static RESULTMSG m_ResultMsg[MAX_TARGET_NUM]; // 胶懦 搬苞 备炼眉
static RESULTMSG m_ResultEffectMsg[5]; // Effect 胶懦 搬苞 备炼眉
};
#endif // _SKILL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -