6#ifndef SKYFIRESERVER_CREATURE_H
7#define SKYFIRESERVER_CREATURE_H
47#define CREATURE_FLAG_EXTRA_DB_ALLOWED (CREATURE_FLAG_EXTRA_INSTANCE_BIND | CREATURE_FLAG_EXTRA_CIVILIAN | \
48 CREATURE_FLAG_EXTRA_NO_PARRY | CREATURE_FLAG_EXTRA_NO_PARRY_HASTEN | CREATURE_FLAG_EXTRA_NO_BLOCK | \
49 CREATURE_FLAG_EXTRA_NO_CRUSH | CREATURE_FLAG_EXTRA_NO_XP_AT_KILL | CREATURE_FLAG_EXTRA_TRIGGER | \
50 CREATURE_FLAG_EXTRA_NO_TAUNT | CREATURE_FLAG_EXTRA_WORLDEVENT | CREATURE_FLAG_EXTRA_NO_CRIT | \
51 CREATURE_FLAG_EXTRA_NO_SKILLGAIN | CREATURE_FLAG_EXTRA_TAUNT_DIMINISH | CREATURE_FLAG_EXTRA_ALL_DIMINISH | \
52 CREATURE_FLAG_EXTRA_GUARD)
54#define MAX_KILL_CREDIT 2
55#define CREATURE_REGEN_INTERVAL 2 * IN_MILLISECONDS
57#define MAX_CREATURE_QUEST_ITEMS 6
59#define MAX_EQUIPMENT_ITEMS 3
159 return canTameExotic || !
IsExotic();
373 for (VendorItemList::const_iterator itr =
m_items.begin(); itr !=
m_items.end(); ++itr)
422#define CREATURE_Z_ATTACK_RANGE 3
424#define MAX_VENDOR_ITEMS 150
429 explicit Creature(
bool isWorldObject =
false);
448 void GetRespawnPosition(
float& x,
float& y,
float& z,
float* ori = NULL,
float* dist = NULL)
const;
599 void Respawn(
bool force =
false);
623 void SetPosition(
float x,
float y,
float z,
float o);
std::vector< std::string > StringVector
UNORDERED_MAP< uint32, EquipmentInfoContainerInternal > EquipmentInfoContainer
UNORDERED_MAP< uint32, CreatureAddon > CreatureAddonContainer
@ CREATURE_FLAG_EXTRA_NO_BLOCK
@ CREATURE_FLAG_EXTRA_TAUNT_DIMINISH
@ CREATURE_FLAG_EXTRA_NO_CRIT
@ CREATURE_FLAG_EXTRA_DUNGEON_BOSS
@ CREATURE_FLAG_EXTRA_TRIGGER
@ CREATURE_FLAG_EXTRA_NO_CRUSH
@ CREATURE_FLAG_EXTRA_NO_PARRY_HASTEN
@ CREATURE_FLAG_EXTRA_INSTANCE_BIND
@ CREATURE_FLAG_EXTRA_NO_PARRY
@ CREATURE_FLAG_EXTRA_NO_TAUNT
@ CREATURE_FLAG_EXTRA_NO_XP_AT_KILL
@ CREATURE_FLAG_EXTRA_NO_SKILLGAIN
@ CREATURE_FLAG_EXTRA_CIVILIAN
@ CREATURE_FLAG_EXTRA_GUARD
@ CREATURE_FLAG_EXTRA_ALL_DIMINISH
@ CREATURE_FLAG_EXTRA_WORLDEVENT
std::list< VendorItemCount > VendorItemCounts
UNORDERED_MAP< uint32, CreatureTemplate > CreatureTemplateContainer
UNORDERED_MAP< uint32, TrainerSpell > TrainerSpellMap
UNORDERED_MAP< uint16, CreatureBaseStats > CreatureBaseStatsContainer
#define MAX_CREATURE_QUEST_ITEMS
UNORDERED_MAP< uint8, EquipmentInfo > EquipmentInfoContainerInternal
UNORDERED_MAP< uint16, CreatureModelInfo > CreatureModelContainer
std::map< uint32, time_t > CreatureSpellCooldowns
#define MAX_EQUIPMENT_ITEMS
std::vector< VendorItem * > VendorItemList
@ DIFFICULTY_10MAN_HEROIC
@ DIFFICULTY_25MAN_NORMAL
@ DIFFICULTY_10MAN_NORMAL
@ DIFFICULTY_25MAN_HEROIC
#define MAX_SPELL_EFFECTS
@ ITEM_FLAGS_EXTRA_EXT_COST_REQUIRES_GOLD
#define MAX_CREATURE_BASE_HP
@ CREATURE_TYPEFLAGS_EXOTIC
@ CREATURE_TYPEFLAGS_HERBLOOT
@ CREATURE_TYPEFLAGS_ENGINEERLOOT
@ CREATURE_TYPEFLAGS_MININGLOOT
@ CREATURE_TYPEFLAGS_TAMEABLE
#define CREATURE_MAX_SPELLS
void AddAssistant(uint64 guid)
std::list< uint64 > m_assistants
AssistDelayEvent(uint64 victim, Unit &owner)
float GetSpellDamageMod(int32 Rank) const
void SetInCombatWithZone()
uint32 m_DBTableGuid
For new or temporary creatures is 0 for saved it is lowguid.
void ForcedDespawn(uint32 timeMSToDespawn=0)
VendorItemCounts m_vendorItemCounts
time_t const & GetRespawnTime() const
virtual uint8 GetPetAutoSpellSize() const
void SetHomePosition(float x, float y, float z, float o)
void SetNoSearchAssistance(bool val)
void RemoveLootMode(uint16 lootMode)
void SelectLevel(const CreatureTemplate *cinfo)
bool LoadCreaturesAddon(bool reload=false)
bool HasLootMode(uint16 lootMode) const
int8 GetOriginalEquipmentId() const
bool UpdateAllStats() OVERRIDE
void Respawn(bool force=false)
uint32 m_lootRecipientGroup
VendorItemData const * GetVendorItems() const
bool IsDungeonBoss() const
SpellSchoolMask m_meleeDamageSchoolMask
bool IsImmunedToSpellEffect(SpellInfo const *spellInfo, uint32 index) const OVERRIDE
void SetRespawnRadius(float dist)
int8 m_originalEquipmentId
void UpdateMaxHealth() OVERRIDE
void CallForHelp(float fRadius)
void SetDisableReputationGain(bool disable)
float GetAttackDistance(Unit const *player) const
void UpdateDamagePhysical(WeaponAttackType attType) OVERRIDE
uint32 GetDBTableGUIDLow() const
void SetPosition(const Position &pos)
Position m_transportHomePosition
void UpdateMaxPower(Powers power) OVERRIDE
Player * SelectNearestPlayer(float distance=0) const
bool UpdateEntry(uint32 entry, uint32 team=ALLIANCE, const CreatureData *data=NULL)
uint16 GetLootMode() const
virtual void DeleteFromDB()
bool IsReputationGainDisabled() const
uint32 GetCurrentWaypointID() const
void SetRespawnTime(uint32 respawn)
void setRegeneratingHealth(bool regenHealth)
CreatureTemplate const * m_creatureInfo
void GetHomePosition(float &x, float &y, float &z, float &ori) const
uint32 GetWaypointPath() const
void LoadEquipment(int8 id=1, bool force=false)
bool HasReactState(ReactStates state) const
void SendZoneUnderAttackMessage(Player *attacker)
Send a message to LocalDefense channel for players opposition team in the zone.
void SetTransportHomePosition(const Position &pos)
void AllLootRemovedFromCorpse()
float GetAggroRange(Unit const *target) const
float GetRespawnRadius() const
const Position & GetHomePosition() const
uint32 GetOriginalEntry() const
void SetDisplayId(uint32 modelId) OVERRIDE
MovementGeneratorType m_defaultMovementType
void _AddCreatureCategoryCooldown(uint32 category, time_t apply_time)
void DespawnOrUnsummon(uint32 msTimeToDespawn=0)
SpellInfo const * reachWithSpellCure(Unit *victim)
void SetReactState(ReactStates st)
bool CanFly() const OVERRIDE
CreatureSpellCooldowns m_CreatureSpellCooldowns
void UpdateWaypointID(uint32 wpID)
void ResetPlayerDamageReq()
bool hasLootRecipient() const
void AddCreatureSpellCooldown(uint32 spellid)
void Update(uint32 time) OVERRIDE
uint8 getLevelForTarget(WorldObject const *target) const OVERRIDE
void ReleaseFocus(Spell const *focusSpell)
void SetCurrentEquipmentId(uint8 id)
bool isRegeneratingHealth() const
SpellSchoolMask GetMeleeDamageSchoolMask() const OVERRIDE
void SetRespawnDelay(uint32 delay)
CreatureSpellCooldowns m_CreatureCategoryCooldowns
void SetTarget(uint64 guid) OVERRIDE
void SetPosition(float x, float y, float z, float o)
bool CanAssistTo(const Unit *u, const Unit *enemy, bool checkfaction=true) const
time_t m_corpseRemoveTime
Timers.
const Position & GetTransportHomePosition()
void SetLootRecipient(Unit *unit)
void DoFleeToGetAssistance()
void RemoveCorpse(bool setSpawnTime=true)
void FarTeleportTo(Map *map, float X, float Y, float Z, float O)
uint32 GetScriptId() const
bool hasInvolvedQuest(uint32 quest_id) const OVERRIDE
CreatureData const * m_creatureData
bool isCanInteractWithBattleMaster(Player *player, bool msg) const
SpellInfo const * reachWithSpellAttack(Unit *victim)
Player * GetLootRecipient() const
static float _GetHealthMod(int32 Rank)
CreatureData const * GetCreatureData() const
bool LoadFromDB(uint32 guid, Map *map)
bool TriggerJustRespawned
bool m_AlreadyCallAssistance
CreatureTemplate const * GetCreatureTemplate() const
uint32 GetRespawnDelay() const
bool CanCreatureAttack(Unit const *victim, bool force=true) const
bool UpdateStats(Stats stat) OVERRIDE
bool DisableReputationGain
void FocusTarget(Spell const *focusSpell, WorldObject const *target)
CreatureGroup * m_formation
MovementGeneratorType GetDefaultMovementType() const
void InitializeReactState()
bool HasSearchedAssistance() const
void GetRespawnPosition(float &x, float &y, float &z, float *ori=NULL, float *dist=NULL) const
bool CreateFromProto(uint32 guidlow, uint32 Entry, uint32 vehId, uint32 team, const CreatureData *data=NULL)
std::string GetAIName() const
void SetCorpseDelay(uint32 delay)
void SetObjectScale(float scale) OVERRIDE
uint32 UpdateVendorItemCurrentCount(VendorItem const *vItem, uint32 used_count)
bool IsDamageEnoughForLootingAndReward() const
bool isTappedBy(Player const *player) const
Creature(bool isWorldObject=false)
CreatureGroup * GetFormation()
bool m_AlreadySearchedAssistance
uint32 GetCorpseDelay() const
void UpdateMovementFlags()
bool HasSpell(uint32 spellID) const OVERRIDE
TrainerSpellData const * GetTrainerSpells() const
void SetFlying(bool enable)
bool IsImmunedToSpell(SpellInfo const *spellInfo) const OVERRIDE
bool AIM_Initialize(CreatureAI *ai=NULL)
Unit * SelectNearestHostileUnitInAggroRange(bool useLOS=false) const
bool _IsTargetAcceptable(const Unit *target) const
uint32 GetVendorItemCurrentCount(VendorItem const *vItem)
void AddLootMode(uint16 lootMode)
bool hasQuest(uint32 quest_id) const OVERRIDE
bool isCanTrainingAndResetTalentsOf(Player *player) const
Group * GetLootRecipientGroup() const
void GetTransportHomePosition(float &x, float &y, float &z, float &ori)
bool HasCategoryCooldown(uint32 spell_id) const
Spell const * _focusSpell
ReactStates GetReactState() const
uint32 m_spells[CREATURE_MAX_SPELLS]
void AddToWorld() OVERRIDE
void UpdateResistances(uint32 school) OVERRIDE
void SetTransportHomePosition(float x, float y, float z, float o)
std::string GetScriptName() const
bool Create(uint32 guidlow, Map *map, uint32 Entry, uint32 vehId, uint32 team, float x, float y, float z, float ang, const CreatureData *data=NULL)
uint8 GetCurrentEquipmentId() const
virtual void ProhibitSpellSchool(SpellSchoolMask idSchoolMask, uint32 unTimeMs) OVERRIDE
void SetFormation(CreatureGroup *formation)
Unit * SelectNearestTarget(float dist=0, bool playerOnly=false) const
void SetMeleeDamageSchool(SpellSchools school)
Unit * SelectNearestTargetInAttackDistance(float dist=0) const
bool LoadCreatureFromDB(uint32 guid, Map *map, bool addToMap=true)
uint32 lootingGroupLowGUID
bool HasSpellCooldown(uint32 spell_id) const
void SendAIReaction(AiReaction reactionType)
static float _GetDamageMod(int32 Rank)
void SetNoCallAssistance(bool val)
bool IsRacialLeader() const
void setDeathState(DeathState s) OVERRIDE
void _AddCreatureSpellCooldown(uint32 spell_id, time_t end_time)
bool CanAlwaysSee(WorldObject const *obj) const OVERRIDE
void Regenerate(Powers power)
void UpdateAttackPowerAndDamage(bool ranged=false) OVERRIDE
time_t GetRespawnTimeEx() const
CreatureAddon const * GetCreatureAddon() const
std::string const & GetNameForLocaleIdx(LocaleConstant locale_idx) const OVERRIDE
bool InitEntry(uint32 entry, uint32 team=ALLIANCE, const CreatureData *data=NULL)
bool IsInEvadeMode() const
void SaveRespawnTime() OVERRIDE
virtual uint32 GetPetAutoSpellOnPos(uint8 pos) const
void SetLootMode(uint16 lootMode)
bool IsInvisibleDueToDespawn() const OVERRIDE
void SetDefaultMovementType(MovementGeneratorType mgt)
void SetHomePosition(const Position &pos)
bool CanStartAttack(Unit const *u, bool force) const
void LoadPath(uint32 pathid)
void LowerPlayerDamageReq(uint32 unDamage)
void UpdateArmor() OVERRIDE
void SetOriginalEntry(uint32 entry)
void RemoveFromWorld() OVERRIDE
uint32 GetCreatureSpellCooldownDelay(uint32 spellId) const
ForcedDespawnDelayEvent(Creature &owner)
bool HasUnitState(const uint32 f) const
WorldObject(bool isWorldObject)
Player session in the World.
std::vector< uint32 > auras
uint32 BaseHealth[MAX_CREATURE_BASE_HP]
static CreatureBaseStats const * GetBaseStats(uint8 level, uint8 unitClass)
uint32 GenerateMana(CreatureTemplate const *info) const
uint32 GenerateHealth(CreatureTemplate const *info) const
uint32 GenerateArmor(CreatureTemplate const *info) const
uint32 modelid_other_gender
SkillType GetRequiredLootSkill() const
uint32 GetFirstValidModelId() const
uint32 MechanicImmuneMask
int32 resistance[MAX_SPELL_SCHOOL]
uint32 DifficultyEntry[4 - 1]
uint32 KillCredit[MAX_KILL_CREDIT]
static int32 DiffToDiffIndex(uint32 difficulty)
uint32 spells[CREATURE_MAX_SPELLS]
bool IsTameable(bool canTameExotic) const
uint32 questItems[MAX_CREATURE_QUEST_ITEMS]
uint32 GetRandomValidModelId() const
uint32 ItemEntry[MAX_EQUIPMENT_ITEMS]
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const
TrainerSpellMap spellList
TrainerSpell const * Find(uint32 spell_id) const
uint32 learnedSpell[MAX_SPELL_EFFECTS]
VendorItemCount(uint32 _item, uint32 _count)
uint32 GetItemCount() const
VendorItem const * FindItemCostPair(uint32 item_id, uint32 extendedCost, uint8 type) const
VendorItem * GetItem(uint32 slot) const
void AddItem(uint32 item, int32 maxcount, uint32 ptime, uint32 ExtendedCost, uint8 type)
bool RemoveItem(uint32 item_id, uint8 type)
VendorItem(uint32 _item, int32 _maxcount, uint32 _incrtime, uint32 _ExtendedCost, uint8 _Type)
bool IsGoldRequired(ItemTemplate const *pProto) const