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

📄 ability.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#ifndef _ABILITY_H_
#define _ABILITY_H_

//----------------------------------------------------------------------------------------------------
// Excecute 窃荐狼 器杆阑 瘤盔茄促.
//----------------------------------------------------------------------------------------------------
#define DECLARE_EXECUTE_FUNC( func )																\
	private :																						\
		BOOL	Execute_##func( BYTE byOrder, Character *pTarget, BYTE *pMsg, WORD &wMsgSize );		\

#define DEFINE_EXECUTE_FUNC( func )																		\
		BOOL	Ability ::Execute_##func( BYTE byOrder, Character *pTarget, BYTE *pMsg, WORD &wMsgSize )	\

class Character;
class SkillScriptInfo;
class SummonedNPCs;
class Skill;
struct SkillInfo;

class Ability
{
public:
	Ability() {}
	~Ability() {}

	VOID						Init( Skill *pSkill, BASE_ABILITYINFO *pBaseInfo );
	VOID						Init( Character *pAttacker, SLOTCODE SkillCode, SkillInfo *pSkillInfo, BYTE bySkillStatType, BASE_ABILITYINFO *pBaseInfo );
	BOOL						CanExecute( Character *pAttacker, Character *pTarget, DWORD dwMainTargetKey, WzVector wvMainTargetPos );
	BOOL						Execute( BYTE byOrder, Character *pTarget, BYTE *pMsg, WORD &wMsgSize );
	BOOL						ExecuteEffect( BYTE byOrder, BYTE *pMsg, WORD &wMsgSize );

	inline SLOTCODE				GetSkillCode()			{ return m_SkillCode; }
	inline BASE_ABILITYINFO*	GetBaseAbilityInfo()	{ return m_pBaseAbilityInfo; }
	inline eABILITY				GetAbilityID()			{ return (eABILITY)m_pBaseAbilityInfo->m_wAbilityID; }
	inline eATTR_TYPE			GetAttrID()				{ return m_eAttrID; }
	inline eCHAR_STATE_TYPE		GetStateID()			{ return m_eStateID; }

	inline int					GetSkillAttackPower()	{ return m_iSkillAttackPower; }
	inline float				GetSkillPercentDamage()	{ return m_fSkillPercentDamage; }
	inline VOID					SetSkillAttackPower( int iAttackPower )			{ m_iSkillAttackPower = iAttackPower; }
	inline VOID					SetSkillPercentDamage( float fPercentDamage )	{ m_fSkillPercentDamage = fPercentDamage; }
	BOOL						IsDownAbility();
	BOOL						IsTempApply()	{ return m_bTempApply; }

private:
	DECLARE_EXECUTE_FUNC( Damage );				// 单固瘤
	DECLARE_EXECUTE_FUNC( PeriodicDamage );		// 林扁 单固瘤
	DECLARE_EXECUTE_FUNC( KnockBack );			// 踌归
	DECLARE_EXECUTE_FUNC( Status );				// 惑怕
	DECLARE_EXECUTE_FUNC( ExhaustAttr );		// HP, MP 家柳
	DECLARE_EXECUTE_FUNC( Aggro );				// 绢弊肺 包访
	DECLARE_EXECUTE_FUNC( FightingEnergy );		// 捧扁 包访
	DECLARE_EXECUTE_FUNC( Teleport );			// 炮饭器飘
	DECLARE_EXECUTE_FUNC( Resurrection );		// 何劝
	DECLARE_EXECUTE_FUNC( Summon );				// 家券
	DECLARE_EXECUTE_FUNC( BuffRangeDamage );	// 老沥康开, 某腐磐 林函狼 矫埃寸 单固瘤
	DECLARE_EXECUTE_FUNC( BonusDamage );		// 眠啊 单固瘤 包访(惑怕喊, ...)

private:
	BOOL				CheckAbilityRange( Character *pAttacker, Character* pTarget, DWORD dwMainTargetKey, BYTE byAbilityRangeType );
	VOID				CreateSummoned( Character *pSummoner, SummonedNPCs *pOwnerSummonNPCs, DWORD dwCode, 
										DWORD dwNumberOfNPCs, DWORD *pSummonedObjKey );
	VOID				CreateSummonNPC( Character *pSummoner, SummonedNPCs *pOwnerSummonNPCs, DWORD dwCode, DWORD dwNumberOfNPCs );

	SLOTCODE			m_SkillCode;
	BYTE				m_bySkillStatType;		// 胶懦槛访档 鸥涝
	BASE_ABILITYINFO	*m_pBaseAbilityInfo;
	eATTR_TYPE			m_eAttrID;				// Buff 包访
	eCHAR_STATE_TYPE	m_eStateID;

	Character			*m_pAttacker;
	DWORD				m_dwMainTargetKey;
	WzVector			m_wvMainTargetPos;
	BYTE				*m_pSkillEffect;

	BOOL				m_bTempApply;
	int					m_iSkillAttackPower;	// 胶懦 傍拜仿
	float				m_fSkillPercentDamage;	// 胶懦 %眠啊 单固瘤
};

#endif // _ABILITY_H_


























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -