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

📄 battlesystem.h

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 H
字号:
// BattleSystem.h: interface for the CBattleSystem class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BATTLESYSTEM_H__291473E1_45B6_4A0A_8567_548852B93C33__INCLUDED_)
#define AFX_BATTLESYSTEM_H__291473E1_45B6_4A0A_8567_548852B93C33__INCLUDED_

#include "T_SingleObjSet2.h"

//////////////////////////////////////////////////////////////////////
enum LEVUPEXPDATA{
		LEVUPEXPDATA_LEVEL		=0,
		LEVUPEXPDATA_EXP,
		LEVUPEXPDATA_STU_EXP,	// 导师杀死怪,被带的学员这个等级最高可以得到的经验 --  zlong 2004.10.08
};
char	szZcxKey[];
char	szLevupexpTable[];
typedef	CGameData<LEVUPEXPDATA, szLevupexpTable, szZcxKey>	CLevupexpData;
typedef	ISingleObjSet2<CLevupexpData>	ILevupexpSet;
typedef	CSingleObjSet2<CLevupexpData>	CLevupexpSet;

const int	_EXP_TYPE	= 1000;
enum {
	EXP_TYPE_USER		= 0,	// 人物升级经验
	EXP_TYPE_EUDEMON	= 1,	// 幻兽升级经验
};

enum {
	MAGICTYPE_NONE		= 0,	// 必须为0(可能由false转换而来)
	MAGICTYPE_NORMAL	= 1,	// 必须为1(可能由true转换而来)
	MAGICTYPE_XPSKILL	= 2,
};

enum TUTOREXPDATA {
	TUTOREXPDATA_ID			= 0,
	TUTOREXPDATA_TUTOR_LEV,
	TUTOREXPDATA_EXP,
	TUTOREXPDATA_TUTOREXP,
};
char	szTutorKey[];
char	szTutorexpTable[];
typedef CGameData<TUTOREXPDATA, szTutorexpTable, szTutorKey>	CTutorexpData;

class IRole;

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

class CBattleSystem  
{
public:
	CBattleSystem(PROCESS_ID idProcess, IRole* pOwner);
	virtual ~CBattleSystem();

public:
	// 一次交战终止或结束时调用
	void		ResetBattle				();
	BOOL		CreateBattle			(OBJID idTarget);
	IRole*		GetOwner				()					{return m_pOwner;}

	BOOL		ProcAttack_Hand2Hand	();
	BOOL		IsBattleMaintain		();
	OBJID		GetTargetID				()					{return m_idTarget;}
	BOOL		IsActived				()					{return m_idTarget!=ID_NONE;}

public: // static
	static int	CalcAttackPower(IRole* pAtker, IRole* pTarget, int* pAdjustAtk=0, int* pAdjustDef=0);
	static int	AdjustDrop(int nDrop, int nAtkLev, int nDefLev);
	static int	CalcDamageUser2Monster(int nAtk, int nDef, int nAtkLev, int nDefLev);
	static int	CalcDamageMonster2User(int nAtk, int nDef, int nAtkLev, int nDefLev);
	static int	AdjustMinDamageUser2Monster(int nDamage, IRole* pAtker, IRole* pTarget);
	static int	AdjustMinDamageMonster2User(int nDamage, IRole* pAtker, IRole* pTarget);
	static int	CalcPower(int nMagic, IRole* pAtker, IRole* pTarget, int* pAdjustAtk=0, bool bCanDodge=false);
	static int	CalcPower(int nMagic, IRole* pAtker, IRole* pTarget, int nAdjustAtk, bool bCanDodge=false)		{ return CalcPower(nMagic, pAtker, pTarget, &nAdjustAtk, bCanDodge); }

	static int	AdjustExp(int nExp, int nAtkLev, int nDefLev);

public:
	static BOOL	IsTargetDodged			(IRole* pAtker, IRole* pTarget);

private:
	OBJID			m_idTarget;
	IRole*			m_pOwner;

	PROCESS_ID		m_idProcess;

public: // ctrl
	MYHEAP_DECLARATION(s_heap)
};

#endif // !defined(AFX_BATTLESYSTEM_H__291473E1_45B6_4A0A_8567_548852B93C33__INCLUDED_)

⌨️ 快捷键说明

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