monster.h

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C头文件 代码 · 共 334 行

H
334
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : Monster.h// Written By  : excel96// Description ://////////////////////////////////////////////////////////////////////////////#ifndef __MONSTER_H__#define __MONSTER_H__#include "Creature.h"#include "Assert.h"#include "Timeval.h"#include "MonsterInfo.h"#include "PrecedenceTable.h"//////////////////////////////////////////////////////////////////////////////// Forward declaration//////////////////////////////////////////////////////////////////////////////class Slayer;class Vampire;class Ousters;class MonsterAI;struct SUMMON_INFO2;class Monster : public Creature {// 积己磊/家戈磊public:	Monster(MonsterType_t monsterType) throw();	virtual ~Monster() throw (Error);// 窍困 努贰胶 惑加 窃荐public:	virtual CreatureClass getCreatureClass() const throw() { return CREATURE_CLASS_MONSTER; }	virtual string getCreatureClassString() const throw() { return "CREATURE_CLASS_MONSTER"; }	virtual Race_t getRace() const;	virtual void registerObject() throw(Error);	virtual bool load() throw (InvalidProtocolException, Error) { return true;}	virtual void save() const throw(Error) {}	virtual string toString() const throw();// AI specific methodspublic:	// AI 内靛啊 荐青登绰 皋牢 皋筋靛捞促.	void act(const Timeval& currentTime) throw(Error);	void actDeadAction(void) throw (Error);	// enemy specific methods	void addEnemy(Creature* pCreature) throw(Error);	void addPotentialEnemy(Creature* pCreature) throw(Error);	void deleteEnemy(ObjectID_t objectID) throw(NoSuchElementException, Error);	void deleteAllEnemy() throw(Error);	Creature* getPrimaryEnemy() const throw(Error);	ObjectID_t getEnemy(EnemyPriority enemyPriority = ENEMY_PRIMARY) const throw(NoSuchElementException, Error);	// Enemy 府胶飘俊辑 肺弊酒眶茄 PC 甫 昏力茄促.	void verifyEnemies() throw(Error);	bool isRealEnemy(Creature* pEnemy) throw(Error);	// 捞 阁胶磐俊霸 利捞 窍唱捞惑 瘤沥登绢 乐绰啊?	bool hasEnemy() const throw() { return m_Enemies.size() > 0; }	uint getMaxEnemies() const throw();	list<ObjectID_t>& getEnemies(void) throw() { return m_Enemies;}	// 急力 傍拜 Enemy魄喊. by sigi. 2002.9.23	bool isEnemyToAttack(Creature* pCreature) const;	bool isEnemyToAttack(Slayer* pSlayer) const;	bool isEnemyToAttack(Vampire* pVampire) const;	bool isEnemyToAttack(Monster* pMonster) const;	bool canMove(ZoneCoord_t nx, ZoneCoord_t ny) const throw(Error);// get monster-class-level attributespublic:	MonsterType_t getMonsterType() const throw() { return m_MonsterType; }	const string&        getName() const throw() { return m_Name; }	const string&        getMonsterName() const throw() { return m_Name; }	void                 setName(const string name) { m_Name = name; }	SpriteType_t  getSpriteType() const throw();	Level_t       getLevel() const throw();	uint          getBodySize() const throw();	Color_t       getMainColor() const throw();	Color_t       getSubColor() const throw();	MAlignment    getAlignment() const throw();	//AttackOrder   getAttackOrder() const throw();// get/set instance-level attributespublic:	Attr_t getSTR() const throw() { return m_STR; }	void setSTR(Attr_t str) throw() { m_STR = str; }		Attr_t getDEX() const throw() { return m_DEX; }	void setDEX(Attr_t dex) throw() { m_DEX = dex; }	Attr_t getINT() const throw() { return m_INT; }	void setINT(Attr_t inte) throw() { m_INT = inte; }		HP_t getHP(AttrType attrType = ATTR_CURRENT) const throw() { return m_HP[attrType]; }	void setHP(HP_t hp, AttrType attrType = ATTR_CURRENT) throw() { m_HP[attrType] = hp; }	void setHP(HP_t current, HP_t max) throw() { m_HP[ATTR_CURRENT] = current; m_HP[ATTR_MAX] = max; }	Defense_t getDefense() const throw() { return m_Defense; }	void setDefense(Defense_t ac) throw() { m_Defense = ac; }	Protection_t getProtection() const throw() { return m_Protection; }	void setProtection(Protection_t ac) throw() { m_Protection = ac; }	ToHit_t getToHit() const throw() { return m_ToHit; }	void setToHit(ToHit_t tohit) throw() { m_ToHit = tohit; }	Damage_t getDamage(AttrType attrType = ATTR_CURRENT) const throw() { return m_Damage[attrType]; }	void setDamage(Damage_t damage, AttrType attrType = ATTR_CURRENT) throw() { m_Damage[attrType] = damage; }	void setDamage(Damage_t current, Damage_t max) throw() { m_Damage[ATTR_CURRENT] = current; m_Damage[ATTR_MAX] = max; }	int getMeleeRange(void) const { return m_MeleeRange; }	void setMeleeRange(int range) { m_MeleeRange = range; }	int getMissileRange(void) const { return m_MissileRange; }	void setMissileRange(int range) { m_MissileRange = range; }	Moral_t getMoral(void) const throw() { return m_Moral;}	void setMoral(Moral_t moral) throw() { m_Moral = moral;}					Turn_t getDelay() const throw() { return m_Delay; }	void setDelay(Turn_t delay) throw() { m_Delay = delay; }	Turn_t getAttackDelay() const throw() { return m_AttackDelay; }	void setAttackDelay(Turn_t delay) throw() { m_AttackDelay = delay; }	Timeval getAccuDelay() const throw() { return m_AccuDelay; }	void setAccuDelay(Timeval delay) throw() { m_AccuDelay = delay; }	void addAccuDelay(Timeval delay) throw() { m_AccuDelay = m_AccuDelay + delay; }	void clearAccuDelay() throw() { m_AccuDelay.tv_sec = 0; m_AccuDelay.tv_usec = 0; }	void clearEnemyLimitTime() throw();	Timeval getNextTurn() const throw() { return m_NextTurn; }	void setNextTurn(Timeval NextTurn) throw() { m_NextTurn = NextTurn; }	void setDamaged(bool value=true) throw();	void initAllStat(void) throw();	Silver_t getSilverDamage(void) const throw() { return m_SilverDamage; }	void setSilverDamage(Silver_t damage) throw() { m_SilverDamage = damage; }	MonsterAI* getBrain(void) const { return m_pBrain; }	void	   setBrain(MonsterAI* pBrain);	void	   removeBrain(void);	virtual ClanType_t getClanType(void) const { return m_ClanType; }	virtual void setClanType(ClanType_t clan) { m_ClanType = clan; }	PrecedenceTable* getPrecedenceTable(void) { return &m_PrecedenceTable; }//	void addPrecedence(Creature* pCreature, int damage);	void addPrecedence(const string & Name, int PartyID, int damage);	int getOustersExp( Ousters* pOusters );	string getHostName(void) const { return m_HostName; }	void setHostName(const string& name) { m_HostName = name; }	int getHostPartyID(void) const { return m_HostPartyID; }	void setHostPartyID(int ID) { m_HostPartyID = ID; }	CreatureClass getLastHitCreatureClass(void) const { return m_LastHitCreatureClass; }	void setLastHitCreatureClass(CreatureClass CClass) { m_LastHitCreatureClass = CClass; }		// 阁胶磐 捞亥飘 阁胶磐牢瘤 技泼窍绰 何盒    bool getEventMonsterFlag(void) const { return m_isEventMonster; }	void setEventMonsterFlag(bool flag)  { m_isEventMonster = flag; }	bool isChief(void) const 		{ return m_bChief; }	void setChief(bool flag=true) 	{ m_bChief = flag; }// ..public:	bool isAlive() const throw() { return m_HP[ATTR_CURRENT] > 0; }	bool isDead() const throw() { return m_HP[ATTR_CURRENT] == 0; }public:	bool hasRelic() const throw() { return m_RelicIndex; }	void setRelic(int relicIndex) { m_RelicIndex = relicIndex; }public:	bool isScanEnemy() const  { return m_bScanEnemy; }	void setScanEnemy(bool bScan=true) { m_bScanEnemy = bScan; }	bool isEnemyLimit() const { return m_bEnemyLimit; }	bool isMaster() const  { return m_bMaster; }	void setMaster(bool bMaster=true) { m_bMaster = bMaster; }	// 各俊辑 酒捞袍 唱棵鳖? by sigi. 2002.9.2	bool hasTreasure() const  { return m_bTreasure; }	void setTreasure(bool bTreasure=true) { m_bTreasure = m_bTreasure && bTreasure; }	// 盔贰 Treasure啊 乐绰 局甸父 Treasure啊 乐绢具 等促.	// 阁胶磐啊 家券窍绰 阁胶磐狼 辆幅. by sigi. 2002.9.2	bool getMonsterSummonInfo(SUMMON_INFO2& summonInfo) throw (Error);	bool hasNextMonsterSummonInfo() throw (Error);	int  getMonsterSummonStep() const { return m_MonsterSummonStep; }	void setMonsterSummonStep(int ss) { m_MonsterSummonStep = ss; }	// attackOrder - by sigi. 2002.9.4	AttackOrder getAttackOrder() const { return m_AttackOrder; }	void setAttackOrder(AttackOrder attackOrder) { m_AttackOrder = attackOrder; }	void setOwnerObjectID(ObjectID_t id) 	{ m_OwnerObjectID = id; }	ObjectID_t  getOwnerObjectID() const 	{ return m_OwnerObjectID; }	void setEventMonsterIndex(int index)	{ m_EventMonsterIndex = index; }	int  getEventMonsterIndex()	const		{ return m_EventMonsterIndex; }	bool isEventMonster() const				{ return m_EventMonsterIndex<0xFFFF; }	// -_-;	void setQuestItem( Item* pItem )		{ m_pQuestItem = pItem; }	Item* getQuestItem() const { return m_pQuestItem; }#ifdef __UNDERWORLD__	bool isUnderworld() { return m_bUnderWorld; }	void setUnderworld( bool bUnderworld = true ) { m_bUnderWorld = bUnderworld; }#endif	void setLastKiller(ObjectID_t id) { m_LastKiller = id; }	ObjectID_t getLastKiller() const { return m_LastKiller; }// data membersprivate:	MonsterType_t m_MonsterType;	string        m_Name;	Attr_t        m_STR;	Attr_t        m_DEX;	Attr_t        m_INT;	HP_t          m_HP[2];	Defense_t     m_Defense;	Protection_t  m_Protection;	ToHit_t       m_ToHit;	Damage_t      m_Damage[2];	int           m_MeleeRange;	int           m_MissileRange;	bool          m_isEventMonster;	bool		  m_bChief;	// Exp : 阁胶磐甫 磷看阑 锭 罐绰 版氰摹绰?	Exp_t m_Exp;	// 荤扁 - 阁胶磐啊 傈捧俊 倔付唱 面角洒 烙窍绰啊?	Moral_t m_Moral;	// 贸府 掉饭捞 - 阁胶磐狼 惑怕俊 蝶扼辑, 贸府 掉饭捞绰 崔扼廉具 茄促.	// 啊飞 捞惑茄 付过俊 吧啡促电瘤 窍搁, 贸府 掉饭捞啊 辨绢廉辑 阁胶磐啊	// 馆览捞 蠢妨龙 巴捞促. 捞绰 俺眉 饭骇捞促.	Turn_t  m_Delay;	Turn_t  m_AttackDelay;	Timeval m_AccuDelay;	// enemy list	// *CAUTION*	// 奖霸 积阿窍搁, Creture* 狼 府胶飘肺 备泅且 荐档 乐摆瘤父,	// 捞凡 版快, enemy 肺 瘤沥等 PC 啊 肺弊酒眶窍绰 版快, 磊脚阑	// 利栏肺 瘤沥茄 阁胶磐甫 茫酒辑 府胶飘俊辑 昏力秦具 茄促绰	// 搬沸捞 唱柯促. 蝶扼辑, OID 甫 历厘秦具 窍哥, 捞 蔼阑 荤侩秦辑	// PC 殿阑 八祸秦具 茄促.	list<ObjectID_t> m_Enemies;	// 促澜 咀记 角青 矫埃	Timeval m_NextTurn;		// MonsterAI class	MonsterAI* m_pBrain;	// 篮 档陛 单固瘤	Silver_t m_SilverDamage;	// 努罚 鸥涝	ClanType_t m_ClanType;	// "冈磊" 规瘤甫 困茄 快急鼻 抛捞喉	PrecedenceTable m_PrecedenceTable;	// 捞 阁胶磐俊辑 唱坷绰 酒捞袍俊 措茄 快急鼻阑 啊柳 磊狼 捞抚苞 颇萍 ID	string m_HostName;	int m_HostPartyID;	// 捞 阁胶磐甫 付瘤阜栏肺 锭赴 辆练狼 农府媚 努贰胶	// 捞 阁胶磐啊 磷菌阑 版快俊, 积己窍绰 酒捞袍阑 搬沥窍扁 困茄 巴捞促.	CreatureClass m_LastHitCreatureClass;	// 捞 阁胶磐啊 Relic阑 啊瘤绊 乐绰啊 酒囱啊?	int m_RelicIndex;//#ifdef __XMAS_EVENT_CODE__	Timeval m_LastSpeechTime;//#endif	bool m_bScanEnemy;	Timeval m_NextScanTurn;		// 阁胶磐狼 利 牢侥鸥烙	bool m_bEnemyLimit;	Timeval m_EnemyLimitTime;	Creature* m_pOldEnemy;	// 2002.9.2	bool m_bMaster;	bool m_bTreasure;	int  m_MonsterSummonStep;		// 家券 窜拌#ifdef __UNDERWORLD__	bool m_bUnderWorld;#endif		// AttackOrder	AttackOrder  m_AttackOrder;	// 家券等 各牢 版快.. 趣篮 酒聪歹扼档.. 林牢狼 沥焊	ObjectID_t	 m_OwnerObjectID;	// 2002.10.14	int			m_EventMonsterIndex;	Item*		m_pQuestItem;	ObjectID_t	m_LastKiller;};#endif // __MONSTER_H__

⌨️ 快捷键说明

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