2019-08-11 00:14:02 -05:00

250 lines
8.1 KiB
C

//BEGIN ENTITY METHODS
virtual bool IsClient() { return false; }
virtual bool IsNPC() { return false; }
virtual bool IsMob() { return false; }
virtual bool IsCorpse() { return false; }
virtual bool IsPlayerCorpse() { return false; }
virtual bool IsNPCCorpse() { return false; }
virtual bool IsObject() { return false; }
// virtual bool IsGroup() { return false; }
virtual bool IsDoor() { return false; }
virtual bool IsTrap() { return false; }
virtual bool IsBeacon() { return false; }
Client* CastToClient();
NPC* CastToNPC();
Mob* CastToMob();
Corpse* CastToCorpse();
// Object* CastToObject();
// Group* CastToGroup();
// Doors* CastToDoors();
// Trap* CastToTrap();
// Beacon* CastToBeacon();
//BEGIN MOB METHODS
int16& GetID();
virtual Const_char * GetName();
void Depop(bool StartSpawnTimer = true);
void RogueAssassinate(Mob* other);
bool BehindMob(Mob* other = 0, float playerx = 0.0f, float playery = 0.0f);
void SetLevel(uint8 in_level, bool command = false);
uint32 GetSkill(SkillType skill_num);
void SendWearChange(int8 material_slot);
sint32 GetEquipment(int8 material_slot); // returns item id
sint32 GetEquipmentMaterial(int8 material_slot);
sint32 GetEquipmentColor(int8 material_slot);
bool IsMoving();
void GoToBind();
void Gate();
bool Attack(Mob* other, int Hand = 13, bool FromRiposte = false)
virtual void Damage(Mob* from, sint32 damage, int16 spell_id, SkillType attack_skill, bool avoidable = true, sint8 buffslot = -1, bool iBuffTic = false) {};
void Heal();
void SetMaxHP();
int32 GetLevelCon(int8 iOtherLevel);
void SetHP(sint32 hp);
void DoAnim(const int animnum, int type=1);
void ChangeSize(float in_size, bool bNoRestriction = false);
void GMMove(float x, float y, float z, float heading = 0.01);
void SendPosUpdate(int8 iSendToSelf = 0);
void SendPosition();
bool HasProcs();
//bool CheckLos(Mob* other);
bool IsInvisible(Mob *other = 0);
void SetInvisible(bool state);
bool FindBuff(int16 spellid);
bool FindType(int8 type, bool bOffensive = false, int16 threshold = 100);
sint8 GetBuffSlotFromType(int8 type);
void MakePet(int16 spell_id, const char* pettype, const char *name=NULL);
virtual inline int16 GetBaseRace();
virtual inline int8 GetBaseGender();
virtual inline int8 GetDeity();
inline const int16& GetRace();
inline const int8& GetGender();
inline const int8& GetTexture();
inline const int8& GetHelmTexture();
inline const int8& GetClass();
inline const uint8& GetLevel();
Const_char * GetCleanName();
inline Mob* GetTarget();
virtual inline void SetTarget(Mob* mob);
virtual inline float GetHPRatio();
bool IsWarriorClass();
virtual inline const sint32& GetHP();
virtual inline const sint32& GetMaxHP();
virtual float GetWalkspeed();
virtual float GetRunspeed();
virtual int GetCasterLevel(int16 spell_id);
virtual inline const sint32& GetMaxMana();
virtual inline const sint32& GetMana();
virtual void SetMana(sint32 amount);
virtual inline float GetManaRatio();
inline virtual int16 GetAC();
inline virtual int16 GetATK();
inline virtual sint16 GetSTR();
inline virtual sint16 GetSTA();
inline virtual sint16 GetDEX();
inline virtual sint16 GetAGI();
inline virtual sint16 GetINT();
inline virtual sint16 GetWIS();
inline virtual sint16 GetCHA();
inline virtual sint16 GetMR();
inline virtual sint16 GetFR();
inline virtual sint16 GetDR();
inline virtual sint16 GetPR();
inline virtual sint16 GetCR();
inline virtual sint16 GetMaxSTR();
inline virtual sint16 GetMaxSTA();
inline virtual sint16 GetMaxDEX();
inline virtual sint16 GetMaxAGI();
inline virtual sint16 GetMaxINT();
inline virtual sint16 GetMaxWIS();
inline virtual sint16 GetMaxCHA();
virtual float GetActSpellRange(int16 spell_id, float range);
virtual sint32 GetActSpellDamage(int16 spell_id, sint32 value);
virtual sint32 GetActSpellHealing(int16 spell_id, sint32 value);
virtual sint32 GetActSpellCost(int16 spell_id, sint32 cost);
virtual sint32 GetActSpellDuration(int16 spell_id, sint32 duration);
virtual sint32 GetActSpellCasttime(int16 spell_id, sint32 casttime);
double ResistSpell(uint8 ressit_type, int16 spell_id, Mob *caster);
uint16 GetSpecializeSkillValue(int16 spell_id) const;
int32 GetNPCTypeID();
bool IsTargeted();
inline const float& GetX();
inline const float& GetY();
inline const float& GetZ();
inline const float& GetHeading();
inline const float& GetSize();
void SetFollowID(int32 id);
int32 GetFollowID();
virtual void Message(int32 type, const char* message, ...);
virtual void MessageString(int32 type, int32 string_id, int32 distance = 0);
void Say(const char *format, ...);
void Shout(const char *format, ...);
void Emote(const char *format, ...);
void InterruptSpell(int16 spellid = 0xFFFF);
virtual void CastSpell(int16 spell_id, int16 target_id, int16 slot = 10, sint32 casttime = -1, sint32 mana_cost = -1);
bool IsImmuneToSpell(int16 spell_id, Mob *caster);
void BuffFadeBySpellID(int16 spell_id);
void BuffFadeByEffect(int effectid, int skipslot = -1);
void BuffFadeAll();
void BuffFadeBySlot(int slot, bool iRecalcBonuses = true);
int CanBuffStack(int16 spellid, int8 caster_level, bool iFailIfOverwrite = false);
inline bool IsCasting();
int16 CastingSpellID();
void SetAppearance(EmuAppearance app, bool iIgnoreSelf = true);
inline EmuAppearance GetAppearance();
inline const int8& GetRunAnimSpeed();
inline void SetRunAnimSpeed(sint8 in);
void SetPetID(int16 NewPetID);
inline const int16& GetPetID();
void SetOwnerID(int16 NewOwnerID);
inline const int16& GetOwnerID();
inline const int16& GetPetType();
inline const int8& GetBodyType();
virtual void Stun(int duration);
void Spin();
void Kill();
inline void SetInvul(bool invul);
inline bool GetInvul();
inline void SetExtraHaste(int Haste);
virtual int GetHaste();
int GetMonkHandToHandDamage(void);
bool CanThisClassDoubleAttack(void);
bool CanThisClassDualWield(void);
bool CanThisClassRiposte(void);
bool CanThisClassDodge(void);
bool CanThisClassParry(void);
int GetMonkHandToHandDelay(void);
int8 GetClassLevelFactor();
void Mesmerize();
inline bool IsMezzed();
inline bool IsStunned();
void StartEnrage();
bool IsEnraged();
FACTION_VALUE GetReverseFactionCon(Mob* iOther);
inline const bool& IsAIControlled();
inline const float& GetAggroRange();
inline const float& GetAssistRange();
inline void SetPetOrder(Mob::eStandingPetOrder i);
inline const Mob::eStandingPetOrder& GetPetOrder();
inline const bool& IsRoamer();
inline const bool IsRooted();
void AddToHateList(Mob* other, sint32 hate = 0, sint32 damage = 0, bool iYellForHelp = true, bool bFrenzy = false, bool iBuffTic = false);
void SetHate(Mob* other, sint32 hate = 0, sint32 damage = 0);
int32 GetHateAmount(Mob* tmob, bool is_dam = false);
int32 GetDamageAmount(Mob* tmob);
Mob* GetHateTop();
Mob* GetHateDamageTop(Mob* other);
Mob* GetHateRandom();
bool IsEngaged();
bool HateSummon();
void FaceTarget(Mob* MobToFace = 0, bool update = false);
void SetHeading(float iHeading);
void WipeHateList();
inline bool CheckAggro(Mob* other);
sint8 CalculateHeadingToTarget(float in_x, float in_y);
bool CalculateNewPosition(float x, float y, float z, float speed, bool checkZ = false);
bool CalculateNewPosition2(float x, float y, float z, float speed, bool checkZ = false);
float CalculateDistance(float x, float y, float z);
void SendTo(float new_x, float new_y, float new_z);
void SendToFixZ(float new_x, float new_y, float new_z);
void NPCSpecialAttacks(const char* parse, int permtag);
inline int32& DontHealMeBefore();
inline int32& DontBuffMeBefore();
inline int32& DontDotMeBefore();
inline int32& DontRootMeBefore();
inline int32& DontSnareMeBefore();
sint16 GetResist(int8 type);
Mob* GetShieldTarget();
void SetShieldTarget(Mob* mob);
bool Charmed();
int32 GetLevelHP(int8 tlevel);
int32 GetZoneID() const;
int16 CheckAggroAmount(int16 spellid);
int16 CheckHealAggroAmount(int16 spellid);
virtual int32 GetAA(int32 aa_id);
bool DivineAura();
void AddFeignMemory(Client* attacker);
void RemoveFromFeignMemory(Client* attacker);
void ClearFeignMemory();
//END MOB METHODS