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

#include "CreatureData.h"

Public Member Functions

CreatureModel const * GetModelByIdx (uint32 idx) const
 
CreatureModel const * GetRandomValidModel () const
 
CreatureModel const * GetFirstValidModel () const
 
CreatureModel const * GetModelWithDisplayId (uint32 displayId) const
 
CreatureModel const * GetFirstInvisibleModel () const
 
CreatureModel const * GetFirstVisibleModel () 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]
 
std::vector< CreatureModelModels
 
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 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

◆ GetFirstInvisibleModel()

CreatureModel const * CreatureTemplate::GetFirstInvisibleModel ( ) const
155{
156 for (CreatureModel const& model : Models)
157 if (CreatureModelInfo const* modelInfo = sObjectMgr->GetCreatureModelInfo(model.CreatureDisplayID))
158 if (modelInfo && modelInfo->is_trigger)
159 return &model;
160
162}
#define sObjectMgr
Definition ObjectMgr.h:1686
Models
Definition boss_black_knight.cpp:79
Definition CreatureData.h:394
Definition CreatureData.h:169
static CreatureModel const DefaultInvisibleModel
Definition CreatureData.h:170

References CreatureModel::DefaultInvisibleModel, Models, and sObjectMgr.

Referenced by ObjectMgr::ChooseDisplayId(), and Unit::PatchValuesUpdate().

◆ GetFirstValidModel()

CreatureModel const * CreatureTemplate::GetFirstValidModel ( ) const
137{
138 for (CreatureModel const& model : Models)
139 if (model.CreatureDisplayID)
140 return &model;
141
142 return nullptr;
143}

References Models.

Referenced by Creature::InitEntry().

◆ GetFirstVisibleModel()

CreatureModel const * CreatureTemplate::GetFirstVisibleModel ( ) const
165{
166 for (CreatureModel const& model : Models)
167 if (CreatureModelInfo const* modelInfo = sObjectMgr->GetCreatureModelInfo(model.CreatureDisplayID))
168 if (modelInfo && !modelInfo->is_trigger)
169 return &model;
170
172}
static CreatureModel const DefaultVisibleModel
Definition CreatureData.h:171

References CreatureModel::DefaultVisibleModel, Models, and sObjectMgr.

Referenced by Unit::PatchValuesUpdate().

◆ GetModelByIdx()

CreatureModel const * CreatureTemplate::GetModelByIdx ( uint32  idx) const
115{
116 return idx < Models.size() ? &Models[idx] : nullptr;
117}

Referenced by WorldSession::HandleCreatureQueryOpcode(), and InitializeQueryData().

◆ GetModelWithDisplayId()

CreatureModel const * CreatureTemplate::GetModelWithDisplayId ( uint32  displayId) const
146{
147 for (CreatureModel const& model : Models)
148 if (displayId == model.CreatureDisplayID)
149 return &model;
150
151 return nullptr;
152}

References Models.

Referenced by ObjectMgr::ChooseDisplayId().

◆ GetRandomValidModel()

CreatureModel const * CreatureTemplate::GetRandomValidModel ( ) const
120{
121 if (!Models.size())
122 return nullptr;
123
124 // If only one element, ignore the Probability (even if 0)
125 if (Models.size() == 1)
126 return &Models[0];
127
129 {
130 return model.Probability;
131 });
132
133 return &(*selectedItr);
134}
auto SelectRandomWeightedContainerElement(C const &container, std::vector< double > weights) -> decltype(std::begin(container))
Definition Containers.h:175
float Probability
Definition CreatureData.h:181

References CreatureModel::Probability, and Acore::Containers::SelectRandomWeightedContainerElement().

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

◆ GetRequiredLootSkill()

SkillType CreatureTemplate::GetRequiredLootSkill ( ) const
inline
254 {
256 return SKILL_HERBALISM;
258 return SKILL_MINING;
260 return SKILL_ENGINEERING;
261 else
262 return SKILL_SKINNING; // normal case
263 }
@ CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING
Definition SharedDefines.h:2711
@ CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM
Definition SharedDefines.h:2704
@ CREATURE_TYPE_FLAG_SKIN_WITH_MINING
Definition SharedDefines.h:2705
@ SKILL_MINING
Definition SharedDefines.h:3159
@ SKILL_ENGINEERING
Definition SharedDefines.h:3163
@ SKILL_SKINNING
Definition SharedDefines.h:3201
@ SKILL_HERBALISM
Definition SharedDefines.h:3155
uint32 type_flags
Definition CreatureData.h:219

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()

◆ InitializeQueryData()

void CreatureTemplate::InitializeQueryData ( )
175{
177
178 queryData << uint32(Entry); // creature entry
179 queryData << Name;
180 queryData << uint8(0) << uint8(0) << uint8(0); // name2, name3, name4, always empty
182 queryData << IconName; // "Directions" for guard, string for Icons 2.3.0
183 queryData << uint32(type_flags); // flags
184 queryData << uint32(type); // CreatureType.dbc
185 queryData << uint32(family); // CreatureFamily.dbc
186 queryData << uint32(rank); // Creature Rank (elite, boss, etc)
187 queryData << uint32(KillCredit[0]); // new in 3.1, kill credit
188 queryData << uint32(KillCredit[1]); // new in 3.1, kill credit
189 if (GetModelByIdx(0))
190 queryData << uint32(GetModelByIdx(0)->CreatureDisplayID); // Modelid1
191 else
192 queryData << uint32(0); // Modelid1
193 if (GetModelByIdx(1))
194 queryData << uint32(GetModelByIdx(1)->CreatureDisplayID); // Modelid2
195 else
196 queryData << uint32(0); // Modelid2
197 if (GetModelByIdx(2))
198 queryData << uint32(GetModelByIdx(2)->CreatureDisplayID); // Modelid3
199 else
200 queryData << uint32(0); // Modelid3
201 if (GetModelByIdx(3))
202 queryData << uint32(GetModelByIdx(3)->CreatureDisplayID); // Modelid4
203 else
204 queryData << uint32(0); // Modelid4
205 queryData << float(ModHealth); // dmg/hp modifier
206 queryData << float(ModMana); // dmg/mana modifier
208 queryData << uint32(movementId); // CreatureMovementInfo.dbc
209}
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
void Initialize(uint16 opcode, std::size_t newres=200)
Definition WorldPacket.h:68
@ SMSG_CREATURE_QUERY_RESPONSE
Definition Opcodes.h:127
CreatureModel const * GetModelByIdx(uint32 idx) const
Definition Creature.cpp:114
float ModHealth
Definition CreatureData.h:233
float ModMana
Definition CreatureData.h:234
WorldPacket queryData
Definition CreatureData.h:244
uint32 Entry
Definition CreatureData.h:187
uint32 type
Definition CreatureData.h:218
uint32 rank
Definition CreatureData.h:206
std::string SubName
Definition CreatureData.h:192
std::string Name
Definition CreatureData.h:191
uint32 KillCredit[MAX_KILL_CREDIT]
Definition CreatureData.h:189
bool RacialLeader
Definition CreatureData.h:237
uint32 family
Definition CreatureData.h:217
uint32 movementId
Definition CreatureData.h:238
std::string IconName
Definition CreatureData.h:193

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

◆ IsExotic()

bool CreatureTemplate::IsExotic ( ) const
inline
266 {
268 }
@ CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC
Definition SharedDefines.h:2712

References CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC, and type_flags.

◆ IsTameable()

bool CreatureTemplate::IsTameable ( bool  exotic) const
inline
271 {
273 return false;
274
275 // if can tame exotic then can tame any tameable
276 return exotic || (type_flags & CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC) == 0;
277 }
@ CREATURE_TYPE_BEAST
Definition SharedDefines.h:2629
@ CREATURE_TYPE_FLAG_TAMEABLE
Definition SharedDefines.h:2696

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

◆ Models

◆ 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

◆ 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

The documentation for this struct was generated from the following files: