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
 
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
 
int32 CreatureImmunitiesId
 
uint32 flags_extra
 
uint32 ScriptID
 
WorldPacket queryData
 

Detailed Description

Member Function Documentation

◆ GetFirstInvisibleModel()

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

References CreatureModel::DefaultInvisibleModel, Models, and sObjectMgr.

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

◆ GetFirstValidModel()

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

References Models.

Referenced by Creature::InitEntry().

◆ GetFirstVisibleModel()

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

References CreatureModel::DefaultVisibleModel, Models, and sObjectMgr.

Referenced by Unit::PatchValuesUpdate().

◆ GetModelByIdx()

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

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

◆ GetModelWithDisplayId()

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

References Models.

Referenced by ObjectMgr::ChooseDisplayId().

◆ GetRandomValidModel()

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

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

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

◆ GetRequiredLootSkill()

SkillType CreatureTemplate::GetRequiredLootSkill ( ) const
inline
253 {
255 return SKILL_HERBALISM;
257 return SKILL_MINING;
259 return SKILL_ENGINEERING;
260 else
261 return SKILL_SKINNING; // normal case
262 }
@ CREATURE_TYPE_FLAG_SKIN_WITH_ENGINEERING
Definition SharedDefines.h:2706
@ CREATURE_TYPE_FLAG_SKIN_WITH_HERBALISM
Definition SharedDefines.h:2699
@ CREATURE_TYPE_FLAG_SKIN_WITH_MINING
Definition SharedDefines.h:2700
@ SKILL_MINING
Definition SharedDefines.h:3154
@ SKILL_ENGINEERING
Definition SharedDefines.h:3158
@ SKILL_SKINNING
Definition SharedDefines.h:3196
@ SKILL_HERBALISM
Definition SharedDefines.h:3150
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 ( )
176{
178
179 queryData << uint32(Entry); // creature entry
180 queryData << Name;
181 queryData << uint8(0) << uint8(0) << uint8(0); // name2, name3, name4, always empty
183 queryData << IconName; // "Directions" for guard, string for Icons 2.3.0
184 queryData << uint32(type_flags); // flags
185 queryData << uint32(type); // CreatureType.dbc
186 queryData << uint32(family); // CreatureFamily.dbc
187 queryData << uint32(rank); // Creature Rank (elite, boss, etc)
188 queryData << uint32(KillCredit[0]); // new in 3.1, kill credit
189 queryData << uint32(KillCredit[1]); // new in 3.1, kill credit
190 if (GetModelByIdx(0))
191 queryData << uint32(GetModelByIdx(0)->CreatureDisplayID); // Modelid1
192 else
193 queryData << uint32(0); // Modelid1
194 if (GetModelByIdx(1))
195 queryData << uint32(GetModelByIdx(1)->CreatureDisplayID); // Modelid2
196 else
197 queryData << uint32(0); // Modelid2
198 if (GetModelByIdx(2))
199 queryData << uint32(GetModelByIdx(2)->CreatureDisplayID); // Modelid3
200 else
201 queryData << uint32(0); // Modelid3
202 if (GetModelByIdx(3))
203 queryData << uint32(GetModelByIdx(3)->CreatureDisplayID); // Modelid4
204 else
205 queryData << uint32(0); // Modelid4
206 queryData << float(ModHealth); // dmg/hp modifier
207 queryData << float(ModMana); // dmg/mana modifier
209 queryData << uint32(movementId); // CreatureMovementInfo.dbc
210}
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:115
float ModHealth
Definition CreatureData.h:233
float ModMana
Definition CreatureData.h:234
WorldPacket queryData
Definition CreatureData.h:243
uint32 Entry
Definition CreatureData.h:188
uint32 type
Definition CreatureData.h:218
uint32 rank
Definition CreatureData.h:206
std::string SubName
Definition CreatureData.h:193
std::string Name
Definition CreatureData.h:192
uint32 KillCredit[MAX_KILL_CREDIT]
Definition CreatureData.h:190
bool RacialLeader
Definition CreatureData.h:237
uint32 family
Definition CreatureData.h:217
uint32 movementId
Definition CreatureData.h:238
std::string IconName
Definition CreatureData.h:194

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
265 {
267 }
@ CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC
Definition SharedDefines.h:2707

References CREATURE_TYPE_FLAG_TAMEABLE_EXOTIC, and type_flags.

◆ IsTameable()

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

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

◆ CreatureImmunitiesId

int32 CreatureTemplate::CreatureImmunitiesId

◆ DamageModifier

float CreatureTemplate::DamageModifier

◆ detection_range

float CreatureTemplate::detection_range

◆ DifficultyEntry

◆ dmgschool

◆ 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

◆ mingold

uint32 CreatureTemplate::mingold

Referenced by Unit::Kill().

◆ minlevel

uint8 CreatureTemplate::minlevel

◆ ModArmor

float CreatureTemplate::ModArmor

◆ Models

◆ ModExperience

float CreatureTemplate::ModExperience

◆ ModHealth

◆ ModMana

◆ Movement

◆ movementId

uint32 CreatureTemplate::movementId

◆ MovementType

uint32 CreatureTemplate::MovementType

◆ Name

◆ npcflag

◆ PetSpellDataId

◆ pickpocketLootId

◆ queryData

WorldPacket CreatureTemplate::queryData

Referenced by InitializeQueryData().

◆ RacialLeader

bool CreatureTemplate::RacialLeader

◆ RangeAttackTime

◆ RangeVariance

float CreatureTemplate::RangeVariance

◆ rank

◆ RegenHealth

bool CreatureTemplate::RegenHealth

Referenced by Creature::UpdateEntry().

◆ resistance

◆ ScriptID

◆ SkinLootId

◆ speed_flight

float CreatureTemplate::speed_flight

◆ speed_run

◆ speed_swim

float CreatureTemplate::speed_swim

◆ speed_walk

◆ spells

◆ SubName

std::string CreatureTemplate::SubName

◆ type

◆ type_flags

◆ unit_class

◆ unit_flags

◆ unit_flags2

uint32 CreatureTemplate::unit_flags2

◆ VehicleId

uint32 CreatureTemplate::VehicleId

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