⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skill.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -