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

📄 skillinfo.h

📁 墨香最新私服
💻 H
字号:
// SkillInfo.h: interface for the CSkillInfo class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SKILLINFO_H__DE3D09D4_1B17_47B4_A0AD_3EBF402EF280__INCLUDED_)
#define AFX_SKILLINFO_H__DE3D09D4_1B17_47B4_A0AD_3EBF402EF280__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "PtrList.h"
#include "MHFile.h"

class CHero;
class CSkillObject;
class CActionTarget;
class CSkillArea;

class CSkillInfo  
{
	cPtrList m_SkillObjectPool;
	SKILLINFO m_SkillInfo;

public:
	CSkillInfo();
	~CSkillInfo();

	BOOL InitSkillInfo(CMHFile* pFile);
	BOOL InitDummySkillInfo(CSkillInfo* pOriginalSkillInfo);
	BOOL CheckOriginal(CSkillInfo* pSkillInfo);

	CSkillObject* GetSkillObject();
	void ReleaseSkillObject(CSkillObject* pSObj,int kind);

#ifdef _MAPSERVER_
	BOOL IsExcutableSkillState(CObject* pObject,int SkillLevel);
	BOOL IsInSkillRange(CObject* pObject,VECTOR3* pTargetPos,float TargetRadius);
	BOOL ComboTest(CObject* pObject);

	BOOL CheckEvade(MAINTARGET* pMainTarget);
#else
	BOOL IsExcutableSkillState(CHero* pHero,int SkillLevel);
	BOOL IsInSkillRange(CHero* pHero,CActionTarget* pTarget);
	BOOL ComboTest(CHero* pHero);
	BOOL IsValidTarget(CHero* pHero,CActionTarget* pTarget);
	BOOL ConvertTargetToSkill(CHero* pHero,CActionTarget* pTarget);
#endif


	// Get Skill Info
	inline SKILLINFO* GetSkillInfo()	{	return &m_SkillInfo;		}
	inline float GetSkillRange()		{	return m_SkillInfo.SkillRange;		}
	inline BOOL IsMugong()				{	return (m_SkillInfo.ComboNum == SKILL_COMBO_NUM);		}
	inline BOOL IsTargetAreaFitToHero(){	return (m_SkillInfo.TargetAreaPivot == 1);	}
	inline short GetSkillAreaIndex()	{	return m_SkillInfo.TargetAreaIdx;		}
	inline WORD GetSkillIndex()		{	return m_SkillInfo.SkillIdx;		}
	inline DWORD GetSkillContinueTime(){	return m_SkillInfo.Duration;	}
	inline char* GetSkillName()		{	return m_SkillInfo.SkillName;	}
	inline EXPTYPE GetNeedExp(int sung)	{	return sung < 12 ? m_SkillInfo.NeedExp[sung] : -1;	}
	inline int GetLowImage()			{	return m_SkillInfo.LowImage;	}
	inline int GetHighImage()			{	return m_SkillInfo.HighImage;	}
	inline WORD GetWeaponType()		{	return m_SkillInfo.WeaponKind;	}
	inline WORD GetSkillKind()		{	return m_SkillInfo.SkillKind;	}
	inline WORD GetTieUpType()	{ return m_SkillInfo.TieUpType;	}
	inline WORD GetInterval() { return m_SkillInfo.Interval; }
	inline WORD GetAttrib() { return m_SkillInfo.Attrib;	}
	inline WORD GetPositiveResultTargetType() { return m_SkillInfo.PositiveResultTargetType;	}
	inline WORD GetNegativeResultTargetType() { return m_SkillInfo.NegativeResultTargetType;	}
	inline WORD GetDelayTime()	{	return m_SkillInfo.DelayTime;	}
	inline WORD GetCounterDodgeKind()	{	return m_SkillInfo.CounterDodgeKind;	}
	inline WORD GetCounterEffect()	{	return m_SkillInfo.CounterEffect;	}
	
	inline float GetUpPhyAttack(int SkillLevel) { return m_SkillInfo.UpPhyAttack[SkillLevel-1];	}
	inline WORD GetContinueAttAttack(int SkillLevel) { return m_SkillInfo.ContinueAttAttack[SkillLevel-1];	}
	inline float GetContinueAttAttackRate(int SkillLevel) { return m_SkillInfo.ContinueAttAttackRate[SkillLevel-1];	}
	
	inline WORD GetContinueRecoverNaeRyuk(int SkillLevel)  { return m_SkillInfo.ContinueRecoverNaeRyuk[SkillLevel-1];	}
	inline WORD GetContinueRecoverLife(int SkillLevel)  { return m_SkillInfo.ContinueRecoverLife[SkillLevel-1];	}
	inline WORD GetNeedNaeRyuk(int SkillLevel)	{	return m_SkillInfo.NeedNaeRyuk[SkillLevel-1];	}
	inline float GetFirstPhyAttack(int SkillLevel) { return m_SkillInfo.FirstPhyAttack[SkillLevel-1];	}
	inline float GetFirstAttAttack(int SkillLevel) { return m_SkillInfo.FirstAttAttack[SkillLevel-1];	}
	inline WORD GetFirstAttAttackMin(int SkillLevel) { return m_SkillInfo.FirstAttAttackMin[SkillLevel-1];	}
	inline WORD GetFirstAttAttackMax(int SkillLevel) { return m_SkillInfo.FirstAttAttackMax[SkillLevel-1];	}		
	inline float GetCounterDodgeRate(int SkillLevel)	{	return m_SkillInfo.CounterDodgeRate[SkillLevel-1];	}
	inline float GetStunRate(int SkillLevel)	{	return m_SkillInfo.StunRate[SkillLevel-1];	}	
	inline float GetCriticalRate(int SkillLevel)	{	return m_SkillInfo.CriticalRate[SkillLevel-1];	}	
	inline WORD GetStunTime(int SkillLevel)	{	return m_SkillInfo.StunTime[SkillLevel-1];	}	
	inline float GetDispelAttackFeelRate(int SkillLevel)	{	return m_SkillInfo.DispelAttackFeelRate[SkillLevel-1];	}
	
	inline WORD GetUpMaxNaeRyuk(int SkillLevel) { return m_SkillInfo.UpMaxNaeRyuk[SkillLevel-1];	}
	inline WORD GetUpMaxLife(int SkillLevel) { return m_SkillInfo.UpMaxLife[SkillLevel-1];	}
	inline WORD GetUpMaxShield(int SkillLevel) { return m_SkillInfo.UpMaxShield[SkillLevel-1];	}

	inline float GetUpPhyDefense(int SkillLevel) { return m_SkillInfo.UpPhyDefence[SkillLevel-1];	}
	inline float GetUpAttDefense(int SkillLevel) { return m_SkillInfo.UpAttDefence[SkillLevel-1];	}
	
	inline float GetVampiricLife(int SkillLevel) { return m_SkillInfo.VampiricLife[SkillLevel-1];	}
	inline float GetVampiricNaeryuk(int SkillLevel) { return m_SkillInfo.VampiricNaeryuk[SkillLevel-1];	}

	inline WORD GetAmplifiedPowerPhy(int SkillLevel) { return m_SkillInfo.AmplifiedPowerPhy[SkillLevel-1];	}
	inline WORD GetAmplifiedPowerAtt(int SkillLevel) { return m_SkillInfo.AmplifiedPowerAtt[SkillLevel-1];	}
	inline float GetAmplifiedPowerAttRate(int SkillLevel) { return m_SkillInfo.AmplifiedPowerAttRate[SkillLevel-1];	}
	
	inline BOOL IsLifeSkill()	{	return m_SkillInfo.Life ? TRUE : FALSE;	}
	
	inline WORD GetDownMaxNaeRyuk(int SkillLevel) { return m_SkillInfo.DownMaxNaeRyuk[SkillLevel-1];	}
	inline WORD GetDownMaxLife(int SkillLevel) { return m_SkillInfo.DownMaxLife[SkillLevel-1];	}
	inline WORD GetDownMaxShield(int SkillLevel) { return m_SkillInfo.DownMaxShield[SkillLevel-1];	}
	inline float GetDownPhyDefense(int SkillLevel) { return m_SkillInfo.DownPhyDefence[SkillLevel-1];	}
	inline float GetDownAttDefense(int SkillLevel) { return m_SkillInfo.DownAttDefence[SkillLevel-1];	}
	inline float GetDownPhyAttack(int SkillLevel) { return m_SkillInfo.DownPhyAttack[SkillLevel-1];	}
	
	
	BOOL IsMultipleTargetSkill();
	VECTOR3* GetTargetAreaPivotPos(VECTOR3* pOperatorPos,VECTOR3* pTargetPos);
	
#ifdef _MHCLIENT_
	void SendMsgToServer(CHero* pOperator,CActionTarget* pTarget);
#endif

};

#endif // !defined(AFX_SKILLINFO_H__DE3D09D4_1B17_47B4_A0AD_3EBF402EF280__INCLUDED_)

⌨️ 快捷键说明

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