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

📄 monster.h

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

#if !defined(AFX_MONSTER_H__00F01EA1_24D7_4E54_8F96_54AD6FF735BF__INCLUDED_)
#define AFX_MONSTER_H__00F01EA1_24D7_4E54_8F96_54AD6FF735BF__INCLUDED_

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

#include "Object.h"
//#include "StateNPC.h"
//#include "GameResourceManager.h"
//#include "AIDefine.h"
#include "AIParam.h"
#include "Distributer.h"

class CAIBase;
class CPlayer;

class CMonster : public CObject
{
/////
	WORD				m_DropItemId;		// À̰ªÀÌ 0ÀÌ ¾Æ´Ï¸é ÀÌ ¾ÆÀÌÅÛÀ» µå¶øÇϰí 0ÀÌ¸é ¿ø·¡´ë·Î ó¸®ÇÑ´Ù.
//KES Ãß°¡
	DWORD				m_dwDropItemRatio;	//m_DropItemIdÀÇ µå¶øÈ®·ü(Àӽ÷Π¹éºÐÀ²)
//
	DWORD				m_SubID;// ä³Î·Î ³ª´µ±â ÀüÀÇ ID
	WORD				m_RegenNum;
	MONSTER_TOTALINFO	m_MonsterInfo;
//	CStateNPC*			m_MonsterState;
	CDistributer		m_Distributer;
	VECTOR3*			m_TargetObjectPos;

	monster_stats m_mon_stats;
	
	//YH
	BOOL m_bEventMob;
	int m_SuryunGroup;
	
protected:
	DWORD m_KillerPlayer;		// Á×ÀÎ »ç¶÷ ¾ÆÀ̵ð, (°æÇèÄ¡ ¾ÆÀÌÅÆ µ· µîÀ» º¸³»¸é 0À¸·Î ¼ÂÆÃÇÑ´Ù.)

	// AI °ü·Ã
	//CStateMachine * m_pState;
	//CAIBase * m_pAIBase;

	
	
	friend class CStateMachinen;
	friend class CStateMachine;
	friend class CBattle;
protected:
	virtual void DoDamage(CObject* pAttacker,RESULTINFO* pDamageInfo,DWORD beforeLife);
	BASE_MONSTER_LIST * m_pSInfo;
	CObject	*			m_pTObject;
public:
	void SetSuryunGroup(int group)		{	m_SuryunGroup = group;	}
	int GetSuryunGroup()				{	return m_SuryunGroup;	}
	void SetEventMob(BOOL bEventMob)	{	m_bEventMob = bEventMob;	}
	void SetDropItemID( WORD DropItemID, DWORD dwDropRatio = 100 )	{ m_DropItemId = DropItemID; m_dwDropItemRatio = dwDropRatio; }
	
	CMonster();
	virtual ~CMonster();

	virtual BOOL Init(EObjectKind kind,DWORD AgentNum, BASEOBJECT_INFO* pBaseObjectInfo);
	virtual void Release();
	
	void InitMonster(MONSTER_TOTALINFO* pTotalInfo);
	void GetMonsterTotalInfo(MONSTER_TOTALINFO* pRtInfo);
	
	virtual void GetSendMoveInfo(SEND_MOVEINFO* pRtInfo,CAddableInfoList* pAddInfoList);
	BASE_MONSTER_LIST * GetSMonsterList(){ return m_pSInfo;	}
	void SetSMonsterList(BASE_MONSTER_LIST * inf){ m_pSInfo = inf;	}
	//////////////////////////////////////////////////////////////////////////
	// ±âº» Á¤º¸ ¾ò¾î¿À´Â ÇÔ¼ö
	inline WORD GetMonsterKind()	{	return m_MonsterInfo.MonsterKind;	}
	

	// µ¥¹ÌÁö ÀÔÈù °´Ã¼ °ü¸® //////////////////////////////
	void AddDamageObject(CPlayer* pPlayer, DWORD damage, DWORD plusdamage);
	void Drop();
	///////////////////////////////////////////////////////////////////////
	DWORD GetCurAttackIndex();

	void SetAddMsg(char* pAddMsg,WORD* pMsgLen,DWORD dwReceiverID,BOOL bLogin);
	
//	CStateNPC* GetMonsterState(){return m_MonsterState;}

	//void SetTargetObjectPos(VECTOR3* pPos){m_TargetObjectPos = pPos;}
	//VECTOR3* GetTargetObjectPos(){return m_TargetObjectPos;}

	//////////////////////////////////////////////////////////////////////////
	// Monster ½Ã°£º¯¼ö¼ÂÆÃ
	/*
	void SetCurSearchTime(DWORD Time){m_dwCurSearchTime = Time;}
		void SetTmpSearchTime(DWORD Time){m_dwTmpSearchTime = Time;}
		void SetLastSearchTime(DWORD Time){m_dwLastSearchTime = Time;}
		void SetFirstSearch(BOOL flag){m_bFirstSearch = flag;}
		DWORD GetCurSearchTime(){return m_dwCurSearchTime;}
		DWORD GetTmpSearchTime(){return m_dwTmpSearchTime;}
		DWORD GetLastSearchTime(){return m_dwLastSearchTime;}
		DWORD GetFirstSearch(){return m_bFirstSearch;}*/


	///
public:
	CAIParam			m_aiParam;
	CStateParam			m_stateParam;
	void SetSubID(DWORD id){ m_SubID = id;	}
	DWORD GetSubID() { return m_SubID; }
	//////////////////////////////////////////////////////////////////////////
	// Monster ÇൿÇÔ¼öµé taiyo
	void SetTObject( CPlayer * pNewTPlayer );
	CObject *	GetTObject()						{	return m_pTObject;		}
	virtual DWORD GetGravity()
	{
		return m_pSInfo->Gravity;
	}

	//void MoveToPosition(VECTOR3* pPos);
	//void WalkAround(int domainRange);
	void MoveStop();

	virtual void			OnStop();
	virtual void			OnMove( VECTOR3 * pPos );

	virtual void			DoStand();
	virtual void			DoRest(BOOL bStart);
	virtual BOOL			DoAttack( WORD attackNum );
	virtual CObject *		DoSearch();
	virtual BOOL			DoWalkAround();
	virtual void			DoRunaway();
	virtual BOOL			DoPursuit(CObject * pTObject=NULL);
	virtual CObject	*		OnCollisionObject();
	virtual CMonster *		DoFriendSearch(DWORD Range);
	/*
	void SetPeaceRestTime(DWORD dwMaxTime);
		void SetAttackRestTime(DWORD dwMaxTime);
	BOOL Rest(DWORD dwTickTime);		// ´Ù ½¬¾úÀ¸¸é TRUE ¸®ÅÏ
	*/
	
	void AddChat(char * str);
		

	monster_stats * GetMonsterStats() { return &m_mon_stats; }

	WORD GetMonsterGroupNum()
	{
		return m_MonsterInfo.Group;
	}
		
	void OnStartObjectState(BYTE State,DWORD dwParam);
	virtual void OnEndObjectState(BYTE State);

	// RegenNumÀ» ÀúÀå/°¡Á®¿À±â
	void SetRegenNum(WORD RegenNum){m_RegenNum = RegenNum;}
	WORD GetRegenNum(){return m_RegenNum;}

	float GetRadius();
	
	virtual void StateProcess();
	
	int GetObjectTileSize();





	// AI ¸â¹ö
//	virtual void ProcessAI();
//	void InitAIParam() { memset(&m_AIBase, 0, sizeof(m_AIBase)); }
//	CAIBase * GetAIBase() { return m_pAIBase;	}
//	CStateMachine * GetStateMachine() { return m_pState; }
	
	virtual void AddStatus(CStatus* pStatus);
	virtual void RemoveStatus(CStatus* pStatus);
	
	//////////////////////////////////////////////////////////////////////////
	// ¿À¹ö¶óÀ̵ù ÇÔ¼öµé
	virtual void DoDie(CObject* pAttacker);
	
	//////////////////////////////////////////////////////////////////////////
	// Á¤º¸ ¾ò¾î¿À´Â ÇÔ¼öµé
	virtual LEVELTYPE GetLevel(){ return m_pSInfo->Level; }
	virtual void SetLevel(LEVELTYPE level)	{}

	virtual DWORD GetLife()									{ return m_MonsterInfo.Life; }
	virtual void SetLife(DWORD Life,BOOL bSendMsg = TRUE);
	
	virtual DWORD GetShield()								{ return m_MonsterInfo.Shield; }
	virtual void SetShield(DWORD Shield,BOOL bSendMsg = TRUE);

	virtual DWORD DoGetMaxLife()							{ return m_pSInfo->Life; }
	virtual void SetMaxLife(DWORD life)						{}

	virtual DWORD DoGetMaxShield()							{ return m_pSInfo->Shield; }
	virtual void SetMaxShield(DWORD Shield)					{}

	virtual DWORD GetNaeRyuk(){ return 0; }
	virtual void SetNaeRyuk(DWORD val,BOOL bSendMsg = TRUE)	{}
	virtual DWORD DoGetMaxNaeRyuk(){ return 0; }
	virtual void SetMaxNaeRyuk(DWORD val)	{}
	virtual DWORD DoGetPhyDefense(){ return GetMonsterStats()->PhysicalDefense; }
	virtual float DoGetAttDefense(WORD Attrib){ return GetMonsterStats()->AttributeResist.GetElement_Val(Attrib); }

	virtual float DoGetMoveSpeed();
	
};

#endif // !defined(AFX_MONSTER_H__00F01EA1_24D7_4E54_8F96_54AD6FF735BF__INCLUDED_)

⌨️ 快捷键说明

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