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 + -
显示快捷键?