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

📄 magicstate.h

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 H
📖 第 1 页 / 共 2 页
字号:
// MagicState.h: interface for the CMagicState class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAGICSTATE_H__1253A149_5DFB_439E_9CEE_DA046405F173__INCLUDED_)
#define AFX_MAGICSTATE_H__1253A149_5DFB_439E_9CEE_DA046405F173__INCLUDED_

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

///////////////////////////////////////////////////////////////////////////////
// 付过 惑怕 扁瓷阑 困茄 努贰胶
class CCharState
{
public:
	CCharState() { Clear(); }
	
public:
	void Clear()
	{	// 函荐 檬扁拳 
		m_dwTime = 0, m_nRatio = 0; 
	}
	
	BYTE GetRatio() const { return m_nRatio; }
	
	void SetState(DWORD dwTime, BYTE nRatio)
	{	// 惑怕 犁汲沥 
		m_dwTime = dwTime, m_nRatio = nRatio;
	}
	
	int Convert(int nValue) const 
	{	// 涝仿蔼阑 厚啦肺 券魂
		return nValue*m_nRatio/100; 
	}
	
	bool IsMax() const 
	{
		return (m_dwTime > 0 && m_nRatio == 100) ? true:false;
	}
	
	bool IsContinue() const
	{	// 惑怕 瘤加 咯何 八荤
		return (m_dwTime > 0) ? true:false; 
	}
	
	bool IsContinue(DWORD dwTime) const 
	{	// 惑怕 瘤加 咯何 八荤
		return (m_dwTime > dwTime) ? true:false; 
	}
	
	bool IsBound() const 
	{ // 裹困(0 ~ 100%) 八荤
		return (m_nRatio >= 0 && m_nRatio <= 100) ? true:false; 
	}
	
private:
	DWORD  m_dwTime; // 瘤加矫埃
	BYTE   m_nRatio; // 厚啦(0 ~ 100%)
};

//
///////////////////////////////////////////////////////////////////////////////
#define NAT_SPEED_UP  0
#define NAT_STATUS_UP 1
#define NAT_LIFE_UP   2
#define NAT_NORMAL    3
#define DELAY         4
///////////////////////////////////////////////////////////////////////////////
// 付过阑 瘤加且 荐 乐绰 矫埃樊
struct MAGIC_DURATION
{	//< CSD-TW-030606
	CCharState apShort;     // 窜芭府 拱府利 傍拜仿
	CCharState apMiddle;    // 吝芭府 拱府利 傍拜仿
	CCharState apLong;      // 厘芭府 拱府利 傍拜仿
	
	CCharState dpShort;     // 窜芭府 拱府利 规绢仿
	CCharState dpMiddle;    // 吝芭府 拱府利 规绢仿
	CCharState dpLong;      // 厘芭府 拱府利 规绢仿
	
	CCharState dpFire;      // 阂拌凯 傍拜付过  规绢仿
	CCharState dpIce;       // 倔澜拌凯 傍拜付过 规绢仿
	CCharState dpElect;     // 傈拜拌凯 傍拜付过 规绢仿
	CCharState dpHoly;      // 脚仿拌凯 傍拜付过 规绢仿
	
	CCharState dpCurse1;    // 历林 1拌凯 付过 规绢仿
	CCharState dpCurse2;    // 历林 2拌凯 付过 规绢仿
	CCharState dpCurse3;    // 历林 3拌凯 付过 规绢仿
	CCharState dpCurse4;    // 历林 4拌凯 付过 规绢仿
	CCharState dpCurse5;    // 历林 5拌凯 付过 规绢仿
	CCharState dpFreeze;    // CSD-021216 : 倔覆 历林 付过 规绢仿
    
	CCharState amplify;     // 傍拜 付过 单固瘤
	CCharState speedUp;     // 捞悼加档 刘啊   
	CCharState speedDown;   // 捞悼加档 皑家  
	
	CCharState avoid;       // 雀乔啦
	CCharState agility;     // 刮酶己
	
	DWORD dwCurse1;             // 历林 1拌凯 付过 惑怕 
	DWORD dwCurse2;             // 历林 2拌凯 付过 惑怕 
	DWORD dwCurse3;             // 历林 3拌凯 付过 惑怕 
	DWORD dwCurse4;             // 历林 4拌凯 付过 惑怕 
	DWORD dwFreeze;             // CSD-021024 : 倔覆 历林 付过 惑怕
	
	DWORD dwNormalProtect;      // 老馆 焊龋拌凯 付过 惑怕
	DWORD dwSpecialProtect;     // 漂荐 焊龋拌凯 付过 惑怕 
	DWORD dwExceptProtect;      // 抗寇 焊龋拌凯(葛电 付过捞 角菩) 付过 惑怕
	DWORD dwAttackDelay;	      // 傍拜 加档 皑家(某腐磐啊 傍拜 且荐 乐绰 咯何)
	DWORD dwDontMove;           // 捞悼捞 登瘤 臼澜
	DWORD dwDontAttack;		      // 老馆利牢 傍拜捞 登瘤 臼澜
	DWORD dwDontCasting;		    // 付过 某胶泼捞 登瘤 臼澜
	DWORD dwDontMiss;           // 葛电 拱府利 傍拜苞 付过捞 己傍
	DWORD dwBlocking;           // 寇何客 瞒窜登绰 惑怕
	DWORD dwLight;              // 林困俊 蝴阑 灌洒绰 惑怕
	DWORD dwMagicDamageToMana;  // 惑措狼 傍拜 付过阑 付唱甫 家葛窍咯 阜酒晨
	DWORD dwReturnMagic;		    // 付过狼 瓤苞甫 矫傈磊俊霸 登倒覆
	DWORD dwTransparency;		    // 某腐磐啊 捧疙窍霸 凳 
	DWORD dwLifeUp;             // 老沥 矫埃悼救 Life啊 棵扼皑
	DWORD dwStrikeReflect;      // CSD-021015 : 拱府傍拜 单固瘤 馆荤
	DWORD dwMagicReflect;       // CSD-021015 : 付过傍拜 单固瘤 馆荤
	DWORD dwNature[NAT_NORMAL]; // 己龙 函拳 惑怕  
	DWORD dwCombatState;        // 傈捧胶懦 加己 惑怕
	DWORD dwUpDivineMana;		// 付唱甫 棵赴促.	// 030415 kyo 
	DWORD dwCombatRecovery;		//cp甫 棵府绊 hp甫 临牢促.	// 030415 kyo 
};	//> CSD-TW-030606
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// 付过 惑怕俊 措茄 努贰胶
class CMagicState : public MAGIC_DURATION
{ 
public:
	enum 
	{	//< CSD-021216
		CURSE_NONE = 0x00,   // 000000
		CURSE_1 = 0x01,      // 000001
		CURSE_2 = 0x02,      // 000010
		CURSE_3 = 0x04,      // 000100
		CURSE_4 = 0x08,      // 001000
		CURSE_5 = 0x10,      // 010000
		CURSE_FREEZE  = 0x20 // 100000
	};	//> CSD-021216
	
public:
	CMagicState();
	
public:
	void Clear();
	void Recovery(DWORD dwNow);
	
	bool CheckAttack(BYTE nAttack, DWORD dwNow);
	bool CheckStart(BYTE nMagic, DWORD dwNow);
	bool CheckDoing(BYTE nMagic, DWORD dwNow);
	bool CheckEnd(BYTE nMagic, DWORD dwNow);
	bool CheckDelay(BYTE nMagic, DWORD dwNow);
	bool CheckCombat(BYTE nCombat, DWORD dwNow);
	
	void InitCurse();
	void ClearCurse(BYTE nType);
	void ApplyCurse(BYTE nType, BYTE nState, DWORD dwTime = 0);
	
	int GetAvailRange(BYTE nMagic) const;
	int GetCastReady(BYTE nMagic) const;
	int GetCastContinue(BYTE nMagic) const;
	int GetDualStep(BYTE nMagic) const; // 030415 kyo 
	
	void ClearTransMap();
	void GetTransMap(int& rPort, int& rX, int& rY) const;
	void SetTransMap(int nPort, int nX, int nY);
	
	void ClearCombat(BYTE nSelect = 0);
	void SetActiveCombat(BYTE nCombat, int nCount);
	void SetPassiveCombat(BYTE nCombat, DWORD dwPeriod);
	void SetRecoveryCombat(BYTE nCombat, DWORD dwPeriod); // 030415 kyo 
	
	void SetPhysicalAttack(DWORD dwTime, BYTE nShort, BYTE nMiddle, BYTE nLong);
	void SetPhysicalDefense(DWORD dwTime, BYTE nShort, BYTE nMiddle, BYTE nLong);
	void SetMagicalDefense(DWORD dwTime, BYTE nFire, BYTE nIce, BYTE nElect, BYTE nHoly);
	void SetCurseDefense(DWORD dwTime, BYTE nSet);
	
	void ClearNpcRun();
	void ClearNpcStatusUp();
	void ClearNpcRecovery();
	void SetNpcRun(DWORD dwTime, int nSpeed);
	void SetNpcStatusUp(DWORD dwTime, int nAttack, int nDefense, int nSpeed);
	void SetNpcRecovery(DWORD dwTime, int nLife);
	
	void CorrectShortDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	void CorrectMiddleDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	void CorrectLongDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	
	void CorrectFireDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	void CorrectIceDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	void CorrectElectDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	void CorrectHolyDamage(int& rDamage, int nPlus = 0, int nMinus = 0) const;
	void CorrectMovePlus(int& rMove, int nPlus) const;
	void CorrectMoveMinus(int& rMove, int nMinus) const;
	
public:
	BYTE GetMagic() const { return m_nMagic; }
	BYTE GetActiveCombat() const  { return m_nActive; }
	BYTE GetPassiveCombat() const { return m_nPassive; }
	BYTE GetCombatCount() const { return m_nCount; }
	BYTE GetRecoveryCombat() const { return m_nRecovery; }// 030415 kyo 
	DWORD GetRecoveryCombatTime() const { return dwCombatRecovery;}// 030415 kyo 
	int	 GetRecoveryCombatDecHPRate(int nLevel); // 030514 kyo 5:5%,7:10%,10:15%
	
	int IncCombatCount() { return ++m_nCount; }
	int DecCombatCount() { return --m_nCount; }
	

⌨️ 快捷键说明

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