AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
CreatureTemplate Struct Reference

#include "CreatureData.h"

Public Member Functions

uint32 GetRandomValidModelId () const
 
uint32 GetFirstValidModelId () const
 
SkillType GetRequiredLootSkill () const
 
bool IsExotic () const
 
bool IsTameable (bool exotic) const
 
bool HasFlagsExtra (uint32 flag) const
 
void InitializeQueryData ()
 

Public Attributes

uint32 Entry
 
uint32 DifficultyEntry [MAX_DIFFICULTY - 1]
 
uint32 KillCredit [MAX_KILL_CREDIT]
 
uint32 Modelid1
 
uint32 Modelid2
 
uint32 Modelid3
 
uint32 Modelid4
 
std::string Name
 
std::string SubName
 
std::string IconName
 
uint32 GossipMenuId
 
uint8 minlevel
 
uint8 maxlevel
 
uint32 expansion
 
uint32 faction
 
uint32 npcflag
 
float speed_walk
 
float speed_run
 
float speed_swim
 
float speed_flight
 
float detection_range
 
float scale
 
uint32 rank
 
uint32 dmgschool
 
float DamageModifier
 
uint32 BaseAttackTime
 
uint32 RangeAttackTime
 
float BaseVariance
 
float RangeVariance
 
uint32 unit_class
 
uint32 unit_flags
 
uint32 unit_flags2
 
uint32 dynamicflags
 
uint32 family
 
uint32 trainer_type
 
uint32 trainer_spell
 
uint32 trainer_class
 
uint32 trainer_race
 
uint32 type
 
uint32 type_flags
 
uint32 lootid
 
uint32 pickpocketLootId
 
uint32 SkinLootId
 
int32 resistance [MAX_SPELL_SCHOOL]
 
uint32 spells [MAX_CREATURE_SPELLS]
 
uint32 PetSpellDataId
 
uint32 VehicleId
 
uint32 mingold
 
uint32 maxgold
 
std::string AIName
 
uint32 MovementType
 
CreatureMovementData Movement
 
float HoverHeight
 
float ModHealth
 
float ModMana
 
float ModArmor
 
float ModExperience
 
bool RacialLeader
 
uint32 movementId
 
bool RegenHealth
 
uint32 MechanicImmuneMask
 
uint8 SpellSchoolImmuneMask
 
uint32 flags_extra
 
uint32 ScriptID
 
WorldPacket queryData
 

Detailed Description

Member Function Documentation

◆ GetFirstValidModelId()

uint32 CreatureTemplate::GetFirstValidModelId ( ) const
134{
135 if (Modelid1) return Modelid1;
136 if (Modelid2) return Modelid2;
137 if (Modelid3) return Modelid3;
138 if (Modelid4) return Modelid4;
139 return 0;
140}
uint32 Modelid4
Definition: CreatureData.h:183
uint32 Modelid1
Definition: CreatureData.h:180
uint32 Modelid2
Definition: CreatureData.h:181
uint32 Modelid3
Definition: CreatureData.h:182

References Modelid1, Modelid2, Modelid3, and Modelid4.

Referenced by Creature::InitEntry().

◆ GetRandomValidModelId()

uint32 CreatureTemplate::GetRandomValidModelId ( ) const
121{
122 uint8 c = 0;
123 uint32 modelIDs[4];
124
125 if (Modelid1) modelIDs[c++] = Modelid1;
126 if (Modelid2) modelIDs[c++] = Modelid2;
127 if (Modelid3) modelIDs[c++] = Modelid3;
128 if (Modelid4) modelIDs[c++] = Modelid4;
129
130 return ((c > 0) ? modelIDs[urand(0, c - 1)] : 0);
131}
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44

References Modelid1, Modelid2, Modelid3, Modelid4, and urand().

Referenced by ObjectMgr::ChooseDisplayId(), ObjectMgr::GetTaxiMountDisplayId(), and AuraEffect::HandleAuraTransform().

◆ GetRequiredLootSkill()

SkillType CreatureTemplate::GetRequiredLootSkill ( ) const
inline
247 {
249 return SKILL_HERBALISM;
251 return SKILL_MINING;
253 return SKILL_ENGINEERING;
254 else
255 return SKILL_SKINNING; // normal case
256 }
@ CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING
Definition: SharedDefines.h:2682
@ CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM
Definition: SharedDefines.h:2675
@ CREATURE_TYPE_FLAG_SKIN_WITH_MINING
Definition: SharedDefines.h:2676
@ SKILL_MINING
Definition: SharedDefines.h:2891
@ SKILL_ENGINEERING
Definition: SharedDefines.h:2895
@ SKILL_SKINNING
Definition: SharedDefines.h:2933
@ SKILL_HERBALISM
Definition: SharedDefines.h:2887
uint32 type_flags
Definition: CreatureData.h:216

References CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING, CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM, CREATURE_TYPE_FLAG_SKIN_WITH_MINING, SKILL_ENGINEERING, SKILL_HERBALISM, SKILL_MINING, SKILL_SKINNING, and type_flags.

Referenced by Spell::CheckCast(), and Spell::EffectSkinning().

◆ HasFlagsExtra()

bool CreatureTemplate::HasFlagsExtra ( uint32  flag) const
inline
272{ return (flags_extra & flag) != 0; }
uint32 flags_extra
Definition: CreatureData.h:239

References flags_extra.

Referenced by Creature::CanAssistTo(), CreatureAI::EnterEvadeMode(), and Creature::Update().

◆ InitializeQueryData()

void CreatureTemplate::InitializeQueryData ( )
143{
145
146 queryData << uint32(Entry); // creature entry
147 queryData << Name;
148 queryData << uint8(0) << uint8(0) << uint8(0); // name2, name3, name4, always empty
150 queryData << IconName; // "Directions" for guard, string for Icons 2.3.0
151 queryData << uint32(type_flags); // flags
152 queryData << uint32(type); // CreatureType.dbc
153 queryData << uint32(family); // CreatureFamily.dbc
154 queryData << uint32(rank); // Creature Rank (elite, boss, etc)
155 queryData << uint32(KillCredit[0]); // new in 3.1, kill credit
156 queryData << uint32(KillCredit[1]); // new in 3.1, kill credit
157 queryData << uint32(Modelid1); // Modelid1
158 queryData << uint32(Modelid2); // Modelid2
159 queryData << uint32(Modelid3); // Modelid3
160 queryData << uint32(Modelid4); // Modelid4
161 queryData << float(ModHealth); // dmg/hp modifier
162 queryData << float(ModMana); // dmg/mana modifier
164 queryData << uint32(movementId); // CreatureMovementInfo.dbc
165}
@ SMSG_CREATURE_QUERY_RESPONSE
Definition: Opcodes.h:127
float ModHealth
Definition: CreatureData.h:230
float ModMana
Definition: CreatureData.h:231
WorldPacket queryData
Definition: CreatureData.h:241
uint32 Entry
Definition: CreatureData.h:177
uint32 type
Definition: CreatureData.h:215
uint32 rank
Definition: CreatureData.h:199
std::string SubName
Definition: CreatureData.h:185
std::string Name
Definition: CreatureData.h:184
uint32 KillCredit[MAX_KILL_CREDIT]
Definition: CreatureData.h:179
bool RacialLeader
Definition: CreatureData.h:234
uint32 family
Definition: CreatureData.h:210
uint32 movementId
Definition: CreatureData.h:235
std::string IconName
Definition: CreatureData.h:186
void Initialize(uint16 opcode, size_t newres=200)
Definition: WorldPacket.h:69

References Entry, family, IconName, WorldPacket::Initialize(), KillCredit, Modelid1, Modelid2, Modelid3, Modelid4, ModHealth, ModMana, movementId, Name, queryData, RacialLeader, rank, SMSG_CREATURE_QUERY_RESPONSE, SubName, type, and type_flags.

◆ IsExotic()

bool CreatureTemplate::IsExotic ( ) const
inline
259 {
261 }
@ CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC
Definition: SharedDefines.h:2683

References CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC, and type_flags.

Referenced by Pet::GetNativeObjectScale().

◆ IsTameable()

bool CreatureTemplate::IsTameable ( bool  exotic) const
inline
264 {
266 return false;
267
268 // if can tame exotic then can tame any tameable
269 return exotic || (type_flags & CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC) == 0;
270 }
@ CREATURE_TYPE_BEAST
Definition: SharedDefines.h:2600
@ CREATURE_TYPE_FLAG_TAMEABLE
Definition: SharedDefines.h:2667

References CREATURE_TYPE_BEAST, CREATURE_TYPE_FLAG_TAMEABLE, CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC, family, type, and type_flags.

Referenced by Spell::CheckCast(), npc_commandscript::HandleNpcTameCommand(), WorldSession::HandleStableSwapPet(), WorldSession::HandleUnstablePet(), and Pet::LoadPetFromDB().

Member Data Documentation

◆ AIName

std::string CreatureTemplate::AIName

◆ BaseAttackTime

◆ BaseVariance

float CreatureTemplate::BaseVariance

◆ DamageModifier

float CreatureTemplate::DamageModifier

◆ detection_range

float CreatureTemplate::detection_range

Referenced by Creature::UpdateEntry().

◆ DifficultyEntry

◆ dmgschool

◆ dynamicflags

uint32 CreatureTemplate::dynamicflags

◆ Entry

◆ expansion

◆ faction

◆ family

◆ flags_extra

◆ GossipMenuId

◆ HoverHeight

float CreatureTemplate::HoverHeight

◆ IconName

std::string CreatureTemplate::IconName

◆ KillCredit

◆ lootid

◆ maxgold

uint32 CreatureTemplate::maxgold

Referenced by Unit::Kill().

◆ maxlevel

uint8 CreatureTemplate::maxlevel

◆ MechanicImmuneMask

uint32 CreatureTemplate::MechanicImmuneMask

◆ mingold

uint32 CreatureTemplate::mingold

Referenced by Unit::Kill().

◆ minlevel

uint8 CreatureTemplate::minlevel

◆ ModArmor

float CreatureTemplate::ModArmor

◆ Modelid1

◆ Modelid2

◆ Modelid3

◆ Modelid4

◆ ModExperience

float CreatureTemplate::ModExperience

Referenced by Acore::XP::Gain().

◆ ModHealth

◆ ModMana

◆ Movement

◆ movementId

uint32 CreatureTemplate::movementId

◆ MovementType

uint32 CreatureTemplate::MovementType

◆ Name

◆ npcflag

◆ PetSpellDataId

◆ pickpocketLootId

uint32 CreatureTemplate::pickpocketLootId

◆ queryData

WorldPacket CreatureTemplate::queryData

Referenced by InitializeQueryData().

◆ RacialLeader

bool CreatureTemplate::RacialLeader

◆ RangeAttackTime

uint32 CreatureTemplate::RangeAttackTime

◆ RangeVariance

float CreatureTemplate::RangeVariance

◆ rank

◆ RegenHealth

bool CreatureTemplate::RegenHealth

Referenced by Creature::UpdateEntry().

◆ resistance

◆ scale

float CreatureTemplate::scale

◆ ScriptID

uint32 CreatureTemplate::ScriptID

◆ SkinLootId

◆ speed_flight

float CreatureTemplate::speed_flight

Referenced by Creature::InitEntry().

◆ speed_run

◆ speed_swim

float CreatureTemplate::speed_swim

Referenced by Creature::InitEntry().

◆ speed_walk

◆ spells

◆ SpellSchoolImmuneMask

uint8 CreatureTemplate::SpellSchoolImmuneMask

◆ SubName

std::string CreatureTemplate::SubName

◆ trainer_class

◆ trainer_race

uint32 CreatureTemplate::trainer_race

◆ trainer_spell

uint32 CreatureTemplate::trainer_spell

◆ trainer_type

◆ type

◆ type_flags

◆ unit_class

◆ unit_flags

uint32 CreatureTemplate::unit_flags

◆ unit_flags2

uint32 CreatureTemplate::unit_flags2

Referenced by Creature::UpdateEntry().

◆ VehicleId

uint32 CreatureTemplate::VehicleId