506 bool apply_direct_bonus =
true;
545 if (unitCaster && apply_direct_bonus)
592 switch (triggered_spell_id)
632 if (triggered_spell_id == 0)
642 TC_LOG_ERROR(
"spells.effect.nospell",
"Spell::EffectTriggerSpell spell {} tried to trigger unknown spell {}",
m_spellInfo->
Id, triggered_spell_id);
692 args.
CastItem = triggeringAuraCaster->GetItemByGuid(castItemGuid);
705 caster->CastSpell(std::move(targets), spellEffectInfo->TriggerSpell, args);
716 if (triggered_spell_id == 0)
726 TC_LOG_ERROR(
"spells.effect.nospell",
"Spell::EffectTriggerMissileSpell spell {} tried to trigger unknown spell {}.",
m_spellInfo->
Id, triggered_spell_id);
784 if (triggered_spell_id == 0)
795 TC_LOG_ERROR(
"spells.effect.nospell",
"Spell::EffectForceCast of spell {}: triggering unknown spell id {}.",
m_spellInfo->
Id, triggered_spell_id);
820 switch (spellInfo->
Id)
825 .SetTriggeringSpell(
this));
844 if (triggered_spell_id == 0)
854 TC_LOG_ERROR(
"spells.effect.nospell",
"EffectTriggerRitualOfSummoning of spell {}: triggering unknown spell id {}.",
m_spellInfo->
Id, triggered_spell_id);
861 .SetTriggeringSpell(
this));
870 if (multiplier <= 0.0f)
894 float speedXY, speedZ;
917 float speedXY, speedZ;
927 if (caster == unitTarget)
980 TC_LOG_ERROR(
"spells",
"Spell::EffectTeleportUnits - spellId {} attempted to teleport creature to a different map.",
m_spellInfo->
Id);
996 TC_LOG_ERROR(
"spells",
"Spell::EffectTeleportUnitsWithVisualLoadingScreen - spellId {} attempted to teleport creature to a different map.",
_spellId);
1019 TC_LOG_ERROR(
"spells",
"Spell::EffectTeleportUnitsWithVisualLoadingScreen - does not have a destination for spellId {}.",
m_spellInfo->
Id);
1096 float gainMultiplier = 0.f;
1100 int32 const gain =
int32(newDamage * gainMultiplier);
1165 newDamage =
int32(newDamage * dmgMultiplier);
1191 int32 damageAmount = 0;
1194 damageAmount += aurEff->GetAmount();
1198 addhealth += damageAmount;
1288 if (unitCaster && unitCaster->
IsAlive())
1305 uint32 newitemid = itemId;
1324 float perfectCreateChance = 0.0f;
1326 uint32 perfectItemType = itemId;
1330 newitemid = perfectItemType;
1339 float additionalCreateChance=0.0f;
1341 uint8 additionalMaxNum=0;
1345 while (
roll_chance_f(additionalCreateChance) && items_count <= additionalMaxNum)
1349 num_to_add *= items_count;
1361 num_to_add -= no_space;
1376 if (pItem->GetTemplate()->HasSignature())
1377 pItem->SetCreator(player->
GetGUID());
1380 player->
SendNewItem(pItem, num_to_add,
true,
true);
1515 damage -= 10 * std::max(0, std::min(30, unitCaster->
GetLevel() - 60));
1519 damage -= 4 * std::max(0, std::min(15, unitCaster->
GetLevel() - 60));
1566 TC_LOG_DEBUG(
"spells",
"WORLD: Open Lock - No Player Caster!");
1614 TC_LOG_DEBUG(
"spells",
"WORLD: Open Lock - No GameObject/Item Target!");
1619 int32 reqSkillValue = 0;
1717 player->
StoreItem(dest, pNewItem,
true);
1739 player->
BankItem(dest, pNewItem,
true);
1764 player->
EquipItem(dest, pNewItem,
true);
1907 if (!summon || !summon->
IsTotem())
1934 if (duration == 0ms)
1936 else if (duration == -1ms)
1939 for (
uint32 count = 0; count < numSummons; ++count)
1994 spellId = spellInfo->
Id;
2004 unitCaster->
CastSpell(summon, spellId, args);
2040 bool dependent =
false;
2051 player->
LearnSpell(itemEffect->SpellID, dependent);
2076 if (dispelList.empty())
2079 size_t remaining = dispelList.size();
2083 successList.reserve(
damage);
2091 for (
int32 count = 0; count < damage && remaining > 0;)
2094 auto itr = dispelList.begin();
2095 std::advance(itr,
urand(0, remaining - 1));
2097 if (itr->RollDispel())
2099 auto successItr = std::find_if(successList.begin(), successList.end(), [&itr](
DispelableAura& dispelAura) ->
bool
2101 if (dispelAura.GetAura()->GetId() == itr->GetAura()->GetId() && dispelAura.GetAura()->GetCaster() == itr->GetAura()->GetCaster())
2107 uint8 dispelledCharges = 1;
2109 dispelledCharges = itr->GetDispelCharges();
2111 if (successItr == successList.end())
2112 successList.emplace_back(itr->GetAura(), 0, dispelledCharges);
2114 successItr->IncrementCharges();
2116 if (!itr->DecrementCharge(dispelledCharges))
2119 std::swap(*itr, dispelList[remaining]);
2132 if (successList.empty())
2136 spellDispellLog.
IsBreak =
false;
2137 spellDispellLog.
IsSteal =
false;
2146 dispellData.
SpellID = dispelableAura.GetAura()->GetId();
2151 spellDispellLog.
DispellData.emplace_back(dispellData);
2211 else if (creature->
m_loot)
2299 skillval = maxSkillVal;
2377 sLog->OutCommand(player->
GetSession()->
GetAccountId(),
"GM {} (Account: {}) enchanting(perm): {} (Entry: {}) for player: {} (Account: {})",
2418 bool add_socket =
false;
2429 TC_LOG_ERROR(
"spells",
"Spell::EffectEnchantItemPrismatic: attempt to apply the enchant spell {} with SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC ({}), but without ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET ({}), not supported yet.",
2442 sLog->OutCommand(player->
GetSession()->
GetAccountId(),
"GM {} (Account: {}) enchanting(perm): {} (Entry: {}) for player: {} (Account: {})",
2497 sLog->OutCommand(player->
GetSession()->
GetAccountId(),
"GM {} (Account: {}) enchanting(temp): {} (Entry: {}) for player: {} (Account: {})",
2529 if (creatureTarget->
IsPet())
2576 if (!owner && unitCaster->
IsTotem())
2595 if (petentry == 0 || OldSummon->
GetEntry() == petentry)
2649 std::string new_name =
sObjectMgr->GeneratePetName(petentry);
2650 if (!new_name.empty())
2675 if (!learn_spellproto)
2753 float totalDamagePercentMod = 1.0f;
2754 int32 fixed_bonus = 0;
2755 int32 spell_bonus = 0;
2764 unitCaster->
CastSpell(
nullptr, 38430, aurEff);
2769 bool normalized =
false;
2770 float weaponDamagePercentMod = 1.0f;
2773 switch (spellEffectInfo.Effect)
2807 fixed_bonus =
int32(fixed_bonus * weapon_total_pct);
2809 spell_bonus =
int32(spell_bonus * weapon_total_pct);
2820 switch (spellEffectInfo.Effect)
2825 weaponDamage += fixed_bonus;
2828 weaponDamage =
int32(weaponDamage * weaponDamagePercentMod);
2835 mechanic = spellEffectInfo.Mechanic;
2838 weaponDamage += spell_bonus;
2839 weaponDamage =
int32(weaponDamage * totalDamagePercentMod);
2842 weaponDamage = std::max(weaponDamage, 0);
2855 if (!unitCaster || !unitCaster->
IsAlive())
2879 int32 addhealth = 0;
2905 SpellInfo const* curSpellInfo = spell->m_spellInfo;
2968 linkedTrap->SetRespawnTime(duration > 0 ? duration /
IN_MILLISECONDS : 0);
3024 Item* item =
nullptr;
3029 if (item && item->
GetEntry() == 38587)
3067 for (
uint8 i = 0; i < 15; ++i)
3107 unitCaster->
CastSpell(parent, 62496,
this);
3109 .SetTriggeringSpell(
this));
3133 auto isAffectedBySanctuary = [](
Unit const* attacker)
3148 if (isAffectedBySanctuary(ref->GetOwner()))
3149 ref->ScaleThreat(0.0f);
3227 caster->
duel = std::make_unique<DuelInfo>(target, caster, isMounted);
3228 target->
duel = std::make_unique<DuelInfo>(caster, caster, isMounted);
3233 sScriptMgr->OnPlayerDuelRequest(target, caster);
3319 std::size_t replacedGlyph = glyphs.size();
3320 for (std::size_t i = 0; i < glyphs.size(); ++i)
3322 if (std::vector<uint32>
const* activeGlyphBindableSpells =
sDB2Manager.GetGlyphBindableSpells(glyphs[i]))
3324 if (std::find(activeGlyphBindableSpells->begin(), activeGlyphBindableSpells->end(),
m_misc.SpellId) != activeGlyphBindableSpells->end())
3334 if (replacedGlyph < glyphs.size())
3337 glyphs[replacedGlyph] = glyphId;
3339 glyphs.erase(glyphs.begin() + replacedGlyph);
3342 glyphs.push_back(glyphId);
3347 player->
CastSpell(player, glyphProperties->SpellID,
this);
3430 uint8 drunkValue = std::clamp<int32>(
damage + currentDrunkValue, 0, 100);
3431 if (currentDrunkValue == 100 && currentDrunkValue == drunkValue)
3434 .SetTriggeringSpell(
this));
3463 if (levelDiff >= 30)
3465 else if (levelDiff >= 20)
3467 else if (levelDiff >= 10)
3562 Player* player =
nullptr;
3691 breakTarget.
Data.Write();
3698 clearTarget.
Data.Write();
3704 for (Unit::AttackerSet::const_iterator itr = unitCaster->
getAttackers().begin(); itr != unitCaster->
getAttackers().end(); ++itr)
3705 if ((*itr)->GetTypeId() ==
TYPEID_UNIT && !(*itr)->CanHaveThreatList())
3706 attackerSet.insert(*itr);
3708 for (Unit::AttackerSet::const_iterator itr = attackerSet.begin(); itr != attackerSet.end(); ++itr)
3709 (*itr)->AttackStop();
3781 if (targetLevel <= 10)
3783 else if (targetLevel < 20)
3784 reqValue = (targetLevel - 10) * 10;
3785 else if (targetLevel <= 73)
3786 reqValue = targetLevel * 5;
3787 else if (targetLevel < 80)
3788 reqValue = targetLevel * 10 - 365;
3789 else if (targetLevel <= 84)
3790 reqValue = targetLevel * 5 + 35;
3791 else if (targetLevel <= 87)
3792 reqValue = targetLevel * 15 - 805;
3793 else if (targetLevel <= 92)
3794 reqValue = (targetLevel - 62) * 20;
3795 else if (targetLevel <= 104)
3796 reqValue = targetLevel * 5 + 175;
3797 else if (targetLevel <= 107)
3798 reqValue = targetLevel * 15 - 905;
3799 else if (targetLevel <= 112)
3800 reqValue = (targetLevel - 72) * 20;
3801 else if (targetLevel <= 122)
3802 reqValue = (targetLevel - 32) * 10;
3842 spellEffectExtraData.emplace();
3873 .SetTriggeringSpell(
this));
3915 .SetTriggeringSpell(
this));
3929 if (creatureTarget->isWorldBoss() || creatureTarget->IsDungeonBoss())
3942 float speedz = float(
damage) * ratio;
3943 if (speedxy < 0.01f && speedz < 0.01f)
3972 float speedz =
damage / 10.f;
4007 if (logQuest == quest_id)
4026 sScriptMgr->OnQuestStatusChange(player, quest_id);
4060 float speedZ = (2 * speedXY * speedXY * distZ +
Movement::gravity * distXY * distXY) / (2 * speedXY * distXY);
4062 if (!std::isfinite(speedZ))
4096 float speedZ = (2 * speedXY * speedXY * distZ +
Movement::gravity * distXY * distXY) / (2 * speedXY * distXY);
4098 if (!std::isfinite(speedZ))
4137 for (Unit::AuraMap::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
4139 Aura* aura = itr->second;
4147 if (dispel_list.empty())
4150 for (
auto itr = dispel_list.begin(); itr != dispel_list.end(); ++itr)
4176 return petInfo && !petInfo->Health;
4183 player->
SummonPet(0, slot, 0.0f, 0.0f, 0.0f, 0.0f, 0);
4242 if (totem && totem->
IsTotem())
4249 auto m = std::find_if(costs.begin(), costs.end(), [](
SpellPowerCost const& cost) { return cost.Power == POWER_MANA; });
4250 if (m != costs.end())
4265 unitCaster->
CastSpell(unitCaster, 39104, args);
4350 for (
AuraEffect const* aurEff : overrideSummonedGameObjects)
4352 if (
uint32(aurEff->GetMiscValue()) == name_id)
4354 name_id =
uint32(aurEff->GetMiscValueB());
4362 TC_LOG_ERROR(
"sql.sql",
"Gameobject (Entry: {}) does not exist and is not created by spell (ID: {}) cast.", name_id,
m_spellInfo->
Id);
4366 float fx, fy, fz, fo;
4382 float dis =
rand_norm() * (max_dis - min_dis) + min_dis;
4403 switch (goinfo->
type)
4416 switch (
urand(0, 2))
4418 case 0: lastSec = 3;
break;
4419 case 1: lastSec = 7;
break;
4420 case 2: lastSec = 13;
break;
4454 TC_LOG_DEBUG(
"spells",
"AddObject at SpellEfects.cpp EffectTransmitted");
4464 linkedTrap->SetRespawnTime(duration > 0 ? duration /
IN_MILLISECONDS : 0);
4467 linkedTrap->SetOwnerGUID(unitCaster->
GetGUID());
4555 skillval = maxSkillVal;
4571 if (!playerTarget->IsInWorld())
4575 if (!playerTarget->CanAcceptAreaSpiritHealFrom(caster))
4578 playerTarget->ResurrectPlayer(1.0f);
4581 playerTarget->SpawnCorpseBones(
false);
4595 Player* target =
nullptr;
4601 if (!player || !target || target->
IsAlive())
4622 for (Unit::AuraMap::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
4624 Aura* aura = itr->second;
4646 stealList.emplace_back(aura, chance, charges);
4650 if (stealList.empty())
4653 size_t remaining = stealList.size();
4656 std::vector<std::tuple<uint32, ObjectGuid, int32>> successList;
4657 successList.reserve(
damage);
4665 for (
int32 count = 0; count < damage && remaining > 0;)
4668 DispelChargesList::iterator itr = stealList.begin();
4669 std::advance(itr,
urand(0, remaining - 1));
4671 if (itr->RollDispel())
4673 uint8 stolenCharges = 1;
4675 stolenCharges = itr->GetDispelCharges();
4677 successList.emplace_back(itr->GetAura()->GetId(), itr->GetAura()->GetCasterGUID(),
int32(stolenCharges));
4678 if (!itr->DecrementCharge(stolenCharges))
4681 std::swap(*itr, stealList[remaining]);
4694 if (successList.empty())
4698 spellDispellLog.
IsBreak =
false;
4699 spellDispellLog.
IsSteal =
true;
4705 for (
auto const& [spellId, auraCaster, stolenCharges] : successList)
4708 dispellData.
SpellID = spellId;
4713 spellDispellLog.
DispellData.emplace_back(dispellData);
4772 if (quest->IsAutoAccept() && player->
CanAddQuest(quest,
false))
4858 if (!targetFaction || (casterFaction && !casterFaction->
IsFriendlyTo(targetFaction)))
4894 float radius = 5.0f;
4899 for (
uint32 count = 0; count < numGuardians; ++count)
4919 static_cast<Guardian*
>(summon)->InitStatsForLevel(skill202 / 5);
5071 for (; n_buttons; --n_buttons, ++button_id)
5116 if (itemEffect->LegacySlotIndex <= item->m_itemData->SpellCharges.size())
5117 item->SetSpellCharges(itemEffect->LegacySlotIndex, itemEffect->Charges);
5147 TC_LOG_DEBUG(
"spells",
"EffectBind: New homebind X: {}, Y: {}, Z: {} O: {}, MapId: {}, AreaId: {}",
5243 linkedTrap->SetRespawnTime(duration > 0 ? duration /
IN_MILLISECONDS : 0);
5270 uint32 resurrectAura = 0;
5274 if (resurrectAura && target->
HasAura(resurrectAura))
5324 player->
DestroyItem(item->GetBagSlot(), item->GetSlot(),
true);
5384 std::vector<WorldObject*> objs;
5421 std::vector<int32> bonusList;
5465 playerTarget->
GiveXP(xp,
nullptr);
5490 battlePetMgr->HealBattlePetsPct(
damage);
5520 return a1->MaxQualityRoll < selector;
5592 if (
CollectionMgr* collectionMgr = player->GetSession()->GetCollectionMgr())
5649 if (
Item* artifact = playerCaster->
GetItemByGuid(artifactAura->GetCastItemGUID()))
5677template<
typename TargetInfo>
5684 if (target.EffectMask & (1 << spellEffectInfo.EffectIndex) && spellEffectInfo.IsUnitOwnedAuraEffect())
5703 return IsUnitTargetSceneObjectAura(this, target);
5706 if (hasAuraTargetingCaster)
5707 sceneObject->SetCreatedBySpellCast(
m_castId);
5724 return IsUnitTargetSceneObjectAura(this, target);
5727 if (hasAuraTargetingCaster)
5728 sceneObject->SetCreatedBySpellCast(
m_castId);
5776 float speed =
params->Speed;
5777 if (
params->TreatSpeedAsMoveTimeSeconds)
5783 arrivalCast.emplace();
5790 effectExtra.emplace();
5791 if (
params->SpellVisualId)
5792 effectExtra->SpellVisualId = *
params->SpellVisualId;
5794 if (
params->ProgressCurveId)
5795 effectExtra->ProgressCurveId = *
params->ProgressCurveId;
5797 if (
params->ParabolicCurveId)
5798 effectExtra->ParabolicCurveId = *
params->ParabolicCurveId;
5802 arrivalCast ? &*arrivalCast :
nullptr,
5803 effectExtra ? &*effectExtra :
nullptr);
5855 if (!heartOfAzeroth)
5989 reqFlag[bitIndex / 32] = 1u << (bitIndex % 32);
6035 if (existingConfigForSystem < 0)
constexpr uint32 ITEM_ID_HEART_OF_AZEROTH
@ SPELL_RESURRECTION_VISUAL
DB2Storage< BattlePetBreedQualityEntry > sBattlePetBreedQualityStore("BattlePetBreedQuality.db2", &BattlePetBreedQualityLoadInfo::Instance)
DB2Storage< TaxiNodesEntry > sTaxiNodesStore("TaxiNodes.db2", &TaxiNodesLoadInfo::Instance)
DB2Storage< TransmogIllusionEntry > sTransmogIllusionStore("TransmogIllusion.db2", &TransmogIllusionLoadInfo::Instance)
DB2Storage< TraitTreeEntry > sTraitTreeStore("TraitTree.db2", &TraitTreeLoadInfo::Instance)
DB2Storage< ChrSpecializationEntry > sChrSpecializationStore("ChrSpecialization.db2", &ChrSpecializationLoadInfo::Instance)
DB2Storage< BattlePetSpeciesEntry > sBattlePetSpeciesStore("BattlePetSpecies.db2", &BattlePetSpeciesLoadInfo::Instance)
DB2Storage< SummonPropertiesEntry > sSummonPropertiesStore("SummonProperties.db2", &SummonPropertiesLoadInfo::Instance)
DB2Storage< BroadcastTextEntry > sBroadcastTextStore("BroadcastText.db2", &BroadcastTextLoadInfo::Instance)
DB2Storage< CurrencyTypesEntry > sCurrencyTypesStore("CurrencyTypes.db2", &CurrencyTypesLoadInfo::Instance)
DB2Storage< GlyphPropertiesEntry > sGlyphPropertiesStore("GlyphProperties.db2", &GlyphPropertiesLoadInfo::Instance)
DB2Storage< ContentTuningEntry > sContentTuningStore("ContentTuning.db2", &ContentTuningLoadInfo::Instance)
DB2Storage< SpellItemEnchantmentEntry > sSpellItemEnchantmentStore("SpellItemEnchantment.db2", &SpellItemEnchantmentLoadInfo::Instance)
DB2Storage< TalentEntry > sTalentStore("Talent.db2", &TalentLoadInfo::Instance)
DB2Storage< MovieEntry > sMovieStore("Movie.db2", &MovieLoadInfo::Instance)
DB2Storage< FactionTemplateEntry > sFactionTemplateStore("FactionTemplate.db2", &FactionTemplateLoadInfo::Instance)
DB2Storage< SoundKitEntry > sSoundKitStore("SoundKit.db2", &SoundKitLoadInfo::Instance)
DB2Storage< AreaTableEntry > sAreaTableStore("AreaTable.db2", &AreaTableLoadInfo::Instance)
DB2Storage< FactionEntry > sFactionStore("Faction.db2", &FactionLoadInfo::Instance)
#define MAX_VEHICLE_SEATS
#define MAX_ITEM_ENCHANTMENT_EFFECTS
@ SKILL_FLAG_ALWAYS_MAX_VALUE
@ ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET
#define MAX_AZERITE_ESSENCE_RANK
#define MAX_SPELL_EFFECTS
#define MAX_AZERITE_ESSENCE_SLOT
@ OnlyVisibleToSummonerGroup
std::unordered_set< uint32 > params[2]
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ DYNAMIC_OBJECT_FARSIGHT_FOCUS
@ DYNAMIC_OBJECT_AREA_SPELL
#define ASSERT_NOTNULL(pointer)
#define FISHING_BOBBER_READY_TIME
@ GRID_MAP_TYPE_MASK_CONVERSATION
uint32 const MinNewsItemLevel
@ GUILD_NEWS_ITEM_CRAFTED
@ PRISMATIC_ENCHANTMENT_SLOT
@ EQUIP_ERR_CLIENT_LOCKED_OUT
@ EQUIP_ERR_ITEM_NOT_FOUND
@ EQUIP_ERR_ITEM_MAX_COUNT
@ ITEM_MODIFIER_ENCHANT_ILLUSION_ALL_SPECS
@ ITEM_MODIFIER_BATTLE_PET_DISPLAY_ID
@ ITEM_MODIFIER_BATTLE_PET_BREED_DATA
@ ITEM_MODIFIER_BATTLE_PET_SPECIES_ID
@ ITEM_MODIFIER_BATTLE_PET_LEVEL
ItemRandomBonusListId GenerateItemRandomBonusListId(uint32 item_id)
@ ITEM_FIELD_FLAG_UNLOCKED
@ ITEM_SPELLTRIGGER_ON_LEARN
@ ITEM_FLAG_NO_REAGENT_COST
@ ITEM_FLAG_IS_PROSPECTABLE
#define TC_LOG_WARN(filterType__,...)
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
LootStore LootTemplates_Spell("spell_loot_template", "spell id (random item creating)", false)
LootStore LootTemplates_Skinning("skinning_loot_template", "creature skinning id", true)
LootStore LootTemplates_Milling("milling_loot_template", "item entry (herb)", true)
LootStore LootTemplates_Disenchant("disenchant_loot_template", "item disenchant id", true)
LootStore LootTemplates_Prospecting("prospecting_loot_template", "item entry (ore)", true)
LootStore LootTemplates_Pickpocketing("pickpocketing_loot_template", "creature pickpocket lootid", true)
@ LOOT_ERROR_ALREADY_PICKPOCKETED
@ TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_MANUAL_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
#define DEFAULT_PLAYER_BOUNDING_RADIUS
std::set< ObjectGuid > GuidSet
ScriptMapMap sSpellScripts
std::optional< T > Optional
Optional helper class to wrap optional values within.
@ EQUIPMENT_SLOT_MAINHAND
std::vector< ItemPosCount > ItemPosCountVec
@ TELE_TO_NOT_LEAVE_COMBAT
@ TELE_TO_NOT_UNSUMMON_PET
@ TELE_TO_NOT_LEAVE_TRANSPORT
@ PLAYER_FLAGS_PET_BATTLES_UNLOCKED
#define INVENTORY_SLOT_BAG_0
@ REPUTATION_SOURCE_SPELL
#define MAX_QUEST_LOG_SIZE
@ QUEST_FLAGS_TRACKING_EVENT
uint32 urand(uint32 min, uint32 max)
bool roll_chance_f(float chance)
bool roll_chance_i(int chance)
if(posix_memalign(&__mallocedMemory, __align, __size)) return NULL
@ PlayerNonInteractablePhased
@ SPELL_ATTR9_SPECIAL_DELAY_CALCULATION
@ SPELL_ATTR7_DISPEL_REMOVES_CHARGES
@ SPELL_ATTR7_CAN_BE_MULTI_CAST
@ SPELL_ATTR7_ATTACK_ON_CHARGE_TO_UNIT
@ GAMEOBJECT_TYPE_DUEL_ARBITER
@ GAMEOBJECT_TYPE_FISHINGHOLE
@ GAMEOBJECT_TYPE_FLAGDROP
@ GAMEOBJECT_TYPE_FLAGSTAND
@ GAMEOBJECT_TYPE_FISHINGNODE
@ SPELL_SCHOOL_MASK_NORMAL
@ SPELL_ATTR2_RETAIN_ITEM_CAST
@ SPELL_ATTR1_DISPEL_ALL_STACKS
@ SPELL_EFFECT_TRIGGER_MISSILE_SPELL_WITH_VALUE
@ SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE
@ SPELL_EFFECT_SUMMON_OBJECT_SLOT1
@ SPELL_EFFECT_WEAPON_DAMAGE
@ SPELL_EFFECT_NORMALIZED_WEAPON_DMG
@ SPELL_EFFECT_TRIGGER_SPELL
@ SPELL_EFFECT_WEAPON_PERCENT_DAMAGE
@ SPELL_EFFECT_KNOCK_BACK_DEST
@ SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL
@ SPELL_EFFECT_PERSISTENT_AREA_AURA
@ SPELL_EFFECT_FORCE_CAST
@ SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC
@ SPELL_EFFECT_FORCE_CAST_WITH_VALUE
GameObjectDestructibleState
@ SPELL_ATTR0_IS_TRADESKILL
@ SPELL_FAILED_DONT_REPORT
@ SPELL_FAILED_NO_DUELING
@ SPELL_FAILED_CANT_ADD_BATTLE_PET
@ SPELLFAMILY_DEATHKNIGHT
@ SPELL_ATTR4_CANNOT_BE_STOLEN
@ SUMMON_CATEGORY_VEHICLE
@ SPELL_ATTR6_IGNORE_CASTER_DAMAGE_MODIFIERS
@ AURA_REMOVE_BY_ENEMY_SPELL
@ SPELL_AURA_CONTROL_VEHICLE
@ SPELL_AURA_OVERRIDE_SUMMONED_OBJECT
@ TARGET_FLAG_DEST_LOCATION
@ TARGET_FLAG_GAMEOBJECT_MASK
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_CAST_DIRECTLY
In Spell::prepare, will be cast directly without setting containers for executed spell.
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
@ TRIGGERED_IGNORE_GCD
Will ignore GCD.
@ TRIGGERED_DONT_REPORT_CAST_ERROR
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
@ SPELLVALUE_PARENT_SPELL_TARGET_COUNT
@ SPELLVALUE_PARENT_SPELL_TARGET_INDEX
TeleportToOptions GetTeleportOptions(WorldObject const *caster, Unit const *unitTarget, SpellDestination const &targetDest)
bool IsUnitTargetSceneObjectAura(Spell const *spell, TargetInfo const &target)
NonDefaultConstructible< SpellEffectHandlerFn > SpellEffectHandlers[TOTAL_SPELL_EFFECTS]
@ SPELL_ATTR0_CU_SHARE_DAMAGE
bool IsPartOfSkillLine(uint32 skillId, uint32 spellId)
@ PROC_SPELL_TYPE_MASK_ALL
std::vector< std::pair< uint32, ObjectGuid > > DispelList
@ SPELL_EFFECT_HANDLE_LAUNCH_TARGET
@ SPELL_EFFECT_HANDLE_LAUNCH
@ SPELL_EFFECT_HANDLE_HIT
@ SPELL_EFFECT_HANDLE_HIT_TARGET
@ UNIT_PET_FLAG_CAN_BE_RENAMED
@ UNIT_FLAG3_ALREADY_SKINNED
@ UNIT_MOD_DAMAGE_OFFHAND
@ UNIT_MOD_DAMAGE_MAINHAND
#define CURRENT_FIRST_NON_MELEE_SPELL
@ CURRENT_AUTOREPEAT_SPELL
@ UNIT_STATE_ALL_ERASABLE
std::vector< DispelableAura > DispelChargesList
#define ARTIFACTS_ALL_WEAPONS_GENERAL_WEAPON_EQUIPPED_PASSIVE
T ApplyPct(T &base, U pct)
T CalculatePct(T base, U pct)
@ VEHICLE_SPELL_RIDE_HARDCODED
static AreaTrigger * CreateAreaTrigger(AreaTriggerCreatePropertiesId areaTriggerCreatePropertiesId, Position const &pos, int32 duration, Unit *caster, Unit *target, SpellCastVisual spellVisual={ 0, 0 }, SpellInfo const *spellInfo=nullptr, Spell *spell=nullptr, AuraEffect const *aurEff=nullptr)
uint32 GetEffectsToApply() const
void UpdateApplyEffectMask(uint32 newEffMask, bool canHandleNewEffects)
static Aura * TryCreate(AuraCreateInfo &createInfo)
void SetStackAmount(uint8 num)
AuraApplication const * GetApplicationOfTarget(ObjectGuid guid) const
DynamicObject * GetDynobjOwner() const
void _RegisterForTargets()
ObjectGuid GetCasterGUID() const
int32 CalcDispelChance(Unit const *auraTarget, bool offensive) const
DynObjAura * ToDynObjAura()
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT, bool resetPeriodicTimer=true)
uint8 GetStackAmount() const
void _ApplyEffectForTargets(uint8 effIndex)
SpellInfo const * GetSpellInfo() const
void ClearSelectedAzeritePowers()
int64 GetRespecCost() const
UF::SelectedAzeriteEssences const * GetSelectedAzeriteEssences() const
void SetEssenceRank(uint32 azeriteEssenceId, uint32 rank)
void GrantBattlePetExperience(ObjectGuid guid, uint16 xp, BattlePetXpSource xpSource)
static uint16 RollPetBreed(uint32 species)
uint16 GetMaxPetLevel() const
static uint32 SelectPetDisplay(BattlePetSpeciesEntry const *speciesEntry)
void UnlockSlot(BattlePetSlot slot)
static BattlePetSpeciesEntry const * GetBattlePetSpeciesBySpell(uint32 spellId)
void AddPet(uint32 species, uint32 display, uint16 breed, BattlePetBreedQuality quality, uint16 level=1)
void GrantBattlePetLevel(ObjectGuid guid, uint16 grantedLevels)
bool HasMaxPetCount(BattlePetSpeciesEntry const *battlePetSpecies, ObjectGuid ownerGuid) const
void SendError(BattlePetError error, uint32 creatureId)
void ChangeBattlePetQuality(ObjectGuid guid, BattlePetBreedQuality quality)
static BattlePetBreedQuality GetDefaultPetQuality(uint32 species)
void AddTransmogSet(uint32 transmogSetId)
uint32 GetHeirloomBonus(uint32 itemId) const
void AddTransmogIllusion(uint32 transmogIllusionId)
static Conversation * CreateConversation(uint32 conversationEntry, Unit *creator, Position const &pos, ObjectGuid privateObjectOwner, SpellInfo const *spellInfo=nullptr, bool autoStart=true)
ObjectGuid GetOwnerGUID() const override
static float GetRangeForChatType(ChatMsg msgType)
std::unique_ptr< Loot > m_loot
CreatureDifficulty const * GetCreatureDifficulty() const
std::unordered_map< ObjectGuid, std::unique_ptr< Loot > > m_personalLoot
uint8 GetLevelForTarget(WorldObject const *target) const override
void StartPickPocketRefillTimer()
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool CanGeneratePickPocketLoot() const
void SetImmuneToAll(bool apply) override
bool IsIgnoringSanctuarySpellEffect() const
void SetDisplayId(uint32 displayId, bool setNative=false) override
WorldLocation _targetDest
TeleportToOptions _options
DelayedSpellTeleportEvent(Unit *target, WorldLocation const &targetDest, TeleportToOptions options, uint32 spellId)
bool Execute(uint64, uint32) override
void SetCasterViewpoint()
void SetDuration(int32 newDuration)
bool CreateDynamicObject(ObjectGuid::LowType guidlow, Unit *caster, SpellInfo const *spell, Position const &pos, float radius, DynamicObjectType type, SpellCastVisual spellVisual)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
GameObjectTemplate const * GetGOInfo() const
uint32 GetFaction() const override
static GameObject * CreateGameObject(uint32 entry, Map *map, Position const &pos, QuaternionData const &rotation, uint32 animProgress, GOState goState, uint32 artKit=0)
void SetOwnerGUID(ObjectGuid owner)
void SetDestructibleState(GameObjectDestructibleState state, WorldObject *attackerOrHealer=nullptr, bool setHealth=false)
void AddToSkillupList(ObjectGuid const &PlayerGuidLow)
void SetLootState(LootState s, Unit *unit=nullptr)
GameObject * GetLinkedTrap()
void SetRespawnTime(int32 respawn)
bool IsInSkillupList(ObjectGuid const &playerGuid) const
GameobjectTypes GetGoType() const
void SetLevel(uint32 level)
void ModifyHealth(int32 change, WorldObject *attackerOrHealer=nullptr, uint32 spellId=0)
void ActivateObject(GameObjectActions action, int32 param, WorldObject *spellCaster=nullptr, uint32 spellId=0, int32 effectIndex=-1)
void AddUniqueUse(Player *player)
void SetSpellId(uint32 id)
void SetFaction(uint32 faction) override
bool IsAssistant(ObjectGuid guid) const
void AddRaidMarker(uint8 markerId, uint32 mapId, float positionX, float positionY, float positionZ, ObjectGuid transportGuid=ObjectGuid::Empty)
bool IsLeader(ObjectGuid guid) const
ObjectGuid GetGUID() const
void SetState(ItemUpdateState state, Player *forplayer=nullptr)
void SetItemFlag(ItemFieldFlags flags)
Trinity::IteratorPair< ItemEffectEntry const *const * > GetEffects() const
uint32 GetEnchantmentId(EnchantmentSlot slot) const
bool IsAzeriteEmpoweredItem() const
AzeriteItem * ToAzeriteItem()
uint32 GetEnchantmentDuration(EnchantmentSlot slot) const
void SetCount(uint32 value)
void SetModifier(ItemModifier modifier, uint32 value)
ItemTemplate const * GetTemplate() const
ItemContext GetContext() const
Player * GetOwner() const
ObjectGuid GetOwnerGUID() const
ItemDisenchantLootEntry const * GetDisenchantLoot(Player const *owner) const
std::unique_ptr< Loot > m_loot
uint32 GetEnchantmentCharges(EnchantmentSlot slot) const
void ClearSoulboundTradeable(Player *currentOwner)
AzeriteEmpoweredItem * ToAzeriteEmpoweredItem()
uint32 GetModifier(ItemModifier modifier) const
void SetEnchantment(EnchantmentSlot slot, uint32 id, uint32 duration, uint32 charges, ObjectGuid caster=ObjectGuid::Empty)
UF::UpdateField< UF::ItemData, 0, TYPEID_ITEM > m_itemData
static Item * CreateItem(uint32 itemEntry, uint32 count, ItemContext context, Player const *player=nullptr, bool addDefaultBonuses=true)
void ScriptsStart(std::map< uint32, std::multimap< uint32, ScriptInfo > > const &scripts, uint32 id, Object *source, Object *target)
Put scripts in the execution queue.
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, Milliseconds duration=0ms, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty, SmoothPhasingInfo const *smoothPhasingInfo=nullptr)
ObjectGuid::LowType GenerateLowGuid()
GameObject * GetGameObject(ObjectGuid const &guid)
Creature * GetCreature(ObjectGuid const &guid)
float GetFollowAngle() const override
void MoveJumpWithGravity(Position const &pos, float speedXY, float gravity, uint32 id=EVENT_JUMP, bool hasOrientation=false, JumpArrivalCastArgs const *arrivalCast=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void MoveJump(Position const &pos, float speedXY, float speedZ, uint32 id=EVENT_JUMP, bool hasOrientation=false, JumpArrivalCastArgs const *arrivalCast=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void CalculateJumpSpeeds(float dist, UnitMoveType moveType, float speedMultiplier, float minHeight, float maxHeight, float &speedXY, float &speedZ) const
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, bool generatePath=false, Unit const *target=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void MoveDistract(uint32 time, float orientation)
static ObjectGuid const Empty
std::string ToString() const
void SetDynamicFlag(uint32 flag)
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
static GameObject * ToGameObject(Object *o)
static Conversation * ToConversation(Object *o)
void ReplaceAllDynamicFlags(uint32 flag)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
float GetPathLength() const
bool CalculatePath(float destX, float destY, float destZ, bool forceDest=false)
std::array< Optional< PetInfo >, MAX_ACTIVE_PETS > ActivePets
void SetSpecialization(uint16 spec)
Player * GetOwner() const
void SavePetToDB(PetSaveMode mode)
bool isControlled() const
void setDeathState(DeathState s) override
void Remove(PetSaveMode mode, bool returnreagent=false)
bool learnSpell(uint32 spell_id)
static void InheritPhaseShift(WorldObject *target, WorldObject const *source)
static bool OnConditionChange(WorldObject *object, bool updateVisibility=true)
bool HasIgnore(ObjectGuid const &ignoreGuid, ObjectGuid const &ignoreAccountGuid)
void LearnSpell(uint32 spell_id, bool dependent, int32 fromSkill=0, bool suppressMessaging=false, Optional< int32 > traitDefinitionId={})
void AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const &store, ItemContext context=ItemContext::NONE, bool broadcast=false, bool createdByPlayer=false)
void SendMovieStart(uint32 movieId)
void SendLootError(ObjectGuid const &lootObj, ObjectGuid const &owner, LootError error) const
void SendEquipError(InventoryResult msg, Item const *item1=nullptr, Item const *item2=nullptr, uint32 itemId=0) const
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
void SendPlayerBound(ObjectGuid const &binderGuid, uint32 areaId) const
uint32 GetArmorProficiency() const
static bool IsEquipmentPos(uint16 pos)
void ApplyAzeriteEssence(AzeriteItem *item, uint32 azeriteEssenceId, uint32 rank, bool major, bool apply)
uint8 GetNumRespecs() const
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 itemId, bool update, ItemRandomBonusListId randomBonusListId=0, GuidSet const &allowedLooters=GuidSet(), ItemContext context=ItemContext::NONE, std::vector< int32 > const *bonusListIDs=nullptr, bool addToCollection=true)
bool HasPvPForcingQuest() const
uint32 GetNextResetTalentsCost() const
bool ModifyMoney(int64 amount, bool sendError=true)
InventoryResult CanEquipItem(uint8 slot, uint16 &dest, Item *pItem, bool swap, bool not_loading=true) const
void SetPlayerFlag(PlayerFlags flags)
PlayerSocial * GetSocial() const
UF::UpdateField< UF::PlayerData, 0, TYPEID_PLAYER > m_playerData
void SendBindPointUpdate() const
uint32 EnvironmentalDamage(EnviromentalDamage type, uint32 damage)
uint8 GetDrunkValue() const
void SendDirectMessage(WorldPacket const *data) const
uint16 GetSkillValue(uint32 skill) const
Item * BankItem(ItemPosCountVec const &dest, Item *pItem, bool update)
void RemoveTalent(TalentEntry const *talent)
void DespawnPersonalSummonsForQuest(uint32 questId)
uint16 FindQuestSlot(uint32 quest_id) const
void SetCanParry(bool value)
InventoryResult CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, Item *pItem, bool swap=false) const
void CreateGarrison(uint32 garrSiteId)
Pet * SummonPet(uint32 entry, Optional< PetSaveMode > slot, float x, float y, float z, float ang, uint32 despwtime, bool *isNew=nullptr)
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, TeleportToOptions options=TELE_TO_NONE, Optional< uint32 > instanceId={})
void SetCanTitanGrip(bool value, uint32 penaltySpellId=0)
void SendProficiency(ItemClass itemClass, uint32 itemSubclassMask) const
void SendTalentsInfoData()
void UpdatePvPState(bool onlyFFA=false)
void DurabilityLossAll(double percent, bool inventory)
void AddHonorXP(uint32 xp)
uint32 GetDeathTimer() const
void SendPlayerChoice(ObjectGuid sender, int32 choiceId)
void _ApplyItemMods(Item *item, uint8 slot, bool apply, bool updateItemAuras=true)
void GiveXP(uint32 xp, Unit *victim, float group_rate=1.0f)
void SetResurrectRequestData(WorldObject const *caster, uint32 health, uint32 mana, uint32 appliedAura)
Item * GetItemByEntry(uint32 entry, ItemSearchLocation where=ItemSearchLocation::Default) const
void SpawnCorpseBones(bool triggerSave=true)
void SetDrunkValue(uint8 newDrunkValue, uint32 itemId=0)
std::vector< uint32 > const & GetGlyphs(uint8 spec) const
PetStable * GetPetStable()
void PetSpellInitialize()
void SetFallInformation(uint32 time, float z)
void ApplyEnchantment(Item *item, EnchantmentSlot slot, bool apply, bool apply_dur=true, bool ignore_condition=false)
void ActivateTalentGroup(ChrSpecializationEntry const *spec)
bool UpdateCraftSkill(SpellInfo const *spellInfo)
bool CanAddQuest(Quest const *quest, bool msg) const
InventoryResult CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, Item *pItem, bool swap, bool not_loading=true, bool reagentBankOnly=false) const
void SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal)
void SetNumRespecs(uint8 numRespecs)
uint16 GetPureSkillValue(uint32 skill) const
void RemoveTradeableItem(Item *item)
void SetCanBlock(bool value)
bool GetCommandStatus(uint32 command) const
Item * StoreItem(ItemPosCountVec const &pos, Item *pItem, bool update)
WorldSession * GetSession() const
void UpdateAreaDependentAuras(uint32 area_id)
Item * GetItemByPos(uint16 pos) const
RestMgr & GetRestMgr() const
uint32 GetQuestSlotQuestId(uint16 slot) const
void DestroyItem(uint8 bag, uint8 slot, bool update)
bool IsResurrectRequested() const
static bool IsInventoryPos(uint16 pos)
bool ActivateTaxiPathTo(std::vector< uint32 > const &nodes, Creature *npc=nullptr, uint32 spellid=0, uint32 preferredMountDisplay=0)
void SendLoot(Loot &loot, bool aeLooting=false)
void UpdateTraitConfig(WorldPackets::Traits::TraitConfig &&newConfig, int32 savedConfigId, bool withCastTime)
uint32 DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
void RemovePet(Pet *pet, PetSaveMode mode, bool returnreagent=false)
int32 CalculateReputationGain(ReputationSource source, uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool noQuestBonus=false)
ActionButton const * GetActionButton(uint8 button)
void DurabilityLoss(Item *item, double percent)
uint32 GetWeaponProficiency() const
void SendRespecWipeConfirm(ObjectGuid const &guid, uint32 cost, SpecResetType respecType) const
Battleground * GetBattleground() const
void SetRewardedQuest(uint32 quest_id)
uint16 GetSkillStep(uint32 skill) const
void AutoUnequipOffhandIfNeed(bool force=false)
void ItemAddedQuestCheck(uint32 entry, uint32 count, Optional< bool > boundItemFlagRequirement={}, bool *hadBoundItemObjective=nullptr)
Item * EquipItem(uint16 pos, Item *pItem, bool update)
void SetDuelArbiter(ObjectGuid guid)
void SetQuestSlot(uint16 slot, uint32 quest_id)
void AddQuestAndCheckCompletion(Quest const *quest, Object *questGiver)
void DurabilityPointsLossAll(int32 points, bool inventory)
bool CanTakeQuest(Quest const *quest, bool msg) const
uint32 GetProfessionSkillForExp(uint32 skill, int32 expansion) const
uint8 GetActiveTalentGroup() const
void RemoveSpell(uint32 spell_id, bool disabled=false, bool learn_low_rank=true, bool suppressMessaging=false)
void SendSummonRequestFrom(Unit *summoner)
void AreaExploredOrEventHappens(uint32 questId)
bool TakeQuestSourceItem(uint32 questId, bool msg)
void RemoveActiveQuest(uint32 questId, bool update=true)
QuestStatus GetQuestStatus(uint32 quest_id) const
UF::UpdateField< UF::ActivePlayerData, 0, TYPEID_ACTIVE_PLAYER > m_activePlayerData
Garrison * GetGarrison() const
void CreateTraitConfig(WorldPackets::Traits::TraitConfig &traitConfig)
void AddArmorProficiency(uint32 newflag)
void SetHomebind(WorldLocation const &loc, uint32 areaId)
void FailQuest(uint32 quest_id)
static bool IsBankPos(uint16 pos)
void RemoveItem(uint8 bag, uint8 slot, bool update)
bool HasSpell(uint32 spell) const override
Group * GetGroup(Optional< uint8 > partyIndex)
std::unique_ptr< DuelInfo > duel
void RemoveRewardedQuest(uint32 questId, bool update=true)
void DurabilityPointsLoss(Item *item, int32 points)
void SetVisibleItemSlot(uint8 slot, Item *pItem)
Item * GetItemByGuid(ObjectGuid guid) const
void RemovedInsignia(Player *looterPlr)
bool UpdateGatherSkill(uint32 skillId, uint32 skillValue, uint32 redLevel, uint32 multiplicator=1, WorldObject const *object=nullptr)
void AddWeaponProficiency(uint32 newflag)
void ModifyCurrency(uint32 id, int32 amount, CurrencyGainSource gainSource=CurrencyGainSource::Cheat, CurrencyDestroyReason destroyReason=CurrencyDestroyReason::Cheat)
Modify currency amount.
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
std::unique_ptr< PlayerMenu > PlayerTalkClass
ReputationMgr & GetReputationMgr()
void AddPetAura(PetAura const *petSpell)
void RewardPlayerAndGroupAtEvent(uint32 creature_id, WorldObject *pRewardSource)
void SendNewItem(Item *item, uint32 quantity, bool received, bool created, bool broadcast=false, uint32 dungeonEncounterId=0)
void ResurrectPlayer(float restore_percent, bool applySickness=false)
uint32 XPValue(Player const *player) const
bool HasFlag(QuestFlags flag) const
bool ModifyReputation(FactionEntry const *factionEntry, int32 standing, bool spillOverOnly=false, bool noSpillover=false)
void AddRestBonus(RestTypes restType, float restBonus)
float CalcExtraPerSec(RestTypes restType, float bubble) const
uint32 PlaySceneByPackageId(uint32 sceneScriptPackageId, EnumFlag< SceneFlag > playbackflags, Position const *position=nullptr)
uint32 PlayScene(uint32 sceneId, Position const *position=nullptr)
static SceneObject * CreateSceneObject(uint32 sceneId, Unit *creator, Position const &pos, ObjectGuid privateObjectOwner)
void SetItemTarget(Item *item)
void SetDst(float x, float y, float z, float orientation, uint32 mapId=MAPID_INVALID)
void SetGOTarget(GameObject *target)
ObjectGuid GetObjectTargetGUID() const
void SetUnitTarget(Unit *target)
Item * GetItemTarget() const
Unit * GetUnitTarget() const
void Update(WorldObject *caster)
WorldLocation const * GetDstPos() const
bool HasRadius(SpellTargetIndex targetIndex) const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
float CalcValueMultiplier(WorldObject *caster, Spell *spell=nullptr) const
SpellEffIndex EffectIndex
uint32 GetProvidedTargetMask() const
float CalcRadius(WorldObject *caster=nullptr, SpellTargetIndex targetIndex=SpellTargetIndex::TargetA, Spell *=nullptr) const
void RestoreCharge(uint32 chargeCategoryId)
void LockSpellSchool(SpellSchoolMask schoolMask, Duration lockoutTime)
void ModifyCoooldowns(Predicate &&predicate, Duration cooldownMod, bool withoutCategoryCooldown=false)
void ModifyCooldown(uint32 spellId, Duration cooldownMod, bool withoutCategoryCooldown=false)
bool HasCooldown(SpellInfo const *spellInfo, uint32 itemId=0) const
Optional< SpellPowerCost > CalcPowerCost(Powers powerType, bool optionalCost, WorldObject const *caster, SpellSchoolMask schoolMask, Spell *spell=nullptr) const
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
uint64 GetAllEffectsMechanicMask() const
bool IsLootCrafting() const
uint32 GetDispelMask() const
bool NeedsToBeTriggeredByCaster(SpellInfo const *triggeringSpell) const
float GetMinRange(bool positive=false) const
SpellSchoolMask GetSchoolMask() const
bool HasAttribute(SpellAttr0 attribute) const
int32 GetDuration() const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
std::vector< SpellEffectInfo > const & GetEffects() const
int32 EquippedItemSubClassMask
uint32 GetExplicitTargetMask() const
int32 CalcDuration(WorldObject const *caster=nullptr) const
bool HasAura(AuraType aura) const
bool CanBeInterrupted(WorldObject const *interruptCaster, Unit const *interruptTarget, bool ignoreImmunity=false) const
int32 CalculateDamage(SpellEffectInfo const &spellEffectInfo, Unit const *target, float *var=nullptr) const
void EffectSummonRaFFriend()
SpellInfo const * GetSpellInfo() const
void ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit *target, uint32 powerType, uint32 points, float amplitude)
void EffectUpgradeHeirloom()
void ExecuteLogEffectSummonObject(SpellEffectName effect, WorldObject *obj)
void EffectRemoveAuraBySpellLabel()
void EffectChangeBattlePetQuality()
GameObject * gameObjTarget
void EffectGrantBattlePetExperience()
SpellMissInfo targetMissInfo
void UpdateDelayMomentForUnitTarget(Unit *unit, uint64 hitDelay)
void EffectEnchantHeldItem()
void EffectHealMaxHealth()
void ExecuteLogEffectUnsummonObject(SpellEffectName effect, WorldObject *obj)
void EffectSummonObject()
void ExecuteLogEffectResurrect(SpellEffectName effect, Unit *target)
void ExecuteLogEffectDestroyItem(SpellEffectName effect, uint32 entry)
void EffectTameCreature()
void ExecuteLogEffectOpenLock(SpellEffectName effect, Object *obj)
void EffectGameObjectDamage()
SpellCastTargets m_targets
void EffectSummonChangeItem()
std::unique_ptr< PathGenerator > m_preGeneratedPath
Difficulty GetCastDifficulty() const
void EffectLearnAzeriteEssencePower()
void EffectActivateGarrisonBuilding()
void EffectStealBeneficialBuff()
void EffectCancelConversation()
void EffectInterruptCast()
void EffectSummonPlayer()
SpellCastResult CanOpenLock(SpellEffectInfo const &effect, uint32 lockid, SkillType &skillid, int32 &reqSkillValue, int32 &skillValue)
void EffectEnchantItemPrismatic()
void EffectSkinPlayerCorpse()
SpellEffectHandleMode effectHandleMode
void SummonGuardian(SpellEffectInfo const *effect, uint32 entry, SummonPropertiesEntry const *properties, uint32 numSummons, ObjectGuid privateObjectOwner)
void EffectHealMechanical()
void EffectGameObjectRepair()
void EffectCreateGarrison()
void EffectSummonObjectWild()
void EffectSendChatMessage()
void EffectActivateObject()
std::vector< TargetInfo > m_UniqueTargetInfo
SpellDestination m_destTargets[MAX_SPELL_EFFECTS]
void UpdateDelayMomentForDst(uint64 hitDelay)
void EffectPersistentAA()
void EffectModifyThreatPercent()
void EffectForceDeselect()
void ExecuteLogEffectExtraAttacks(SpellEffectName effect, Unit *victim, uint32 numAttacks)
void EffectDestroyAllTotems()
WeaponAttackType m_attackType
void EffectCreateTraitTreeConfig()
void EffectResurrectPet()
void EffectApplyEnchantIllusion()
void EffectTriggerSpell()
void SendSpellInterruptLog(Unit *victim, uint32 spellId)
ObjectGuid m_originalCasterGUID
WorldObject *const m_caster
void EffectCreatePrivateSceneObject()
void EffectRechargeItem()
void EffectLearnGarrisonBuilding()
std::string GetDebugInfo() const
void EffectDurabilityDamage()
void ExecuteLogEffectDurabilityDamage(SpellEffectName effect, Unit *victim, int32 itemId, int32 amount)
void EffectHealBattlePetPct()
static void SendCastResult(Player *caster, SpellInfo const *spellInfo, SpellCastVisual spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError=SPELL_CUSTOM_ERROR_NONE, int32 *param1=nullptr, int32 *param2=nullptr)
void EffectGiveArtifactPower()
void DoCreateItem(uint32 itemId, ItemContext context=ItemContext::NONE, std::vector< int32 > const *bonusListIDs=nullptr)
void EffectRespecAzeriteEmpoweredItem()
void EffectModifyCooldownsByCategory()
void EffectDispelMechanic()
void EffectSelfResurrect()
void EffectGiveRestedExperience()
void EffectLearnTransmogIllusion()
void EffectUncageBattlePet()
void EffectTriggerRitualOfSummoning()
void EffectCreateAreaTrigger()
void EffectEnvironmentalDMG()
void EffectRedirectThreat()
void EffectChangeActiveCombatTraitConfig()
void EffectLearnTransmogSet()
void EffectUpdatePlayerPhase()
void EffectTeleportUnitsWithVisualLoadingScreen()
void EffectModifyAuraStacks()
void EffectSummonPersonalGameObject()
SpellEffectInfo const * effectInfo
void EffectEnableBattlePets()
void EffectGiveArtifactPowerNoBonus()
Unit * GetUnitCasterForEffectHandlers() const
void EffectTeleportToReturnPoint()
void EffectAddExtraAttacks()
void EffectTriggerMissileSpell()
void EffectModifyCooldown()
void EffectEnchantItemTmp()
SpellSchoolMask m_spellSchoolMask
void EffectCreateRandomItem()
void EffectTeleUnitsFaceCaster()
void EffectDamageFromMaxHealthPCT()
void EffectCreateHeirloomItem()
WorldObject * GetCaster() const
void EffectPullTowardsDest()
void EffectKillCreditPersonal()
void CalculateJumpSpeeds(SpellEffectInfo const *effInfo, float dist, float &speedXY, float &speedZ)
void EffectLaunchQuestChoice()
void EffectChangeRaidMarker()
void EffectGrantBattlePetLevel()
void EffectResurrectNew()
void EffectUntrainTalents()
void EffectUnlockGuildVaultTab()
void ExecuteLogEffectCreateItem(SpellEffectName effect, uint32 entry)
void EffectScriptEffect()
void EffectCreateSceneObject()
WorldLocation * destTarget
void EffectGameObjectSetDestructionState()
void EffectIncreaseCurrencyCap()
void EffectResurrectWithAura()
void EffectGiveCurrency()
void EffectModifyCooldowns()
void EffectQuestComplete()
void EffectDiscoverTaxi()
void EffectModifySpellCharges()
void EffectTeleportUnits()
void EffectGiveExperience()
void EffectCreatePrivateConversation()
void EffectPlaySceneScriptPackage()
void EffectLearnPetSpell()
void EffectTeleportGraveyard()
void CallScriptSuccessfulDispel(SpellEffIndex effIndex)
int32 GetUnitTargetIndexForEffect(ObjectGuid const &target, SpellEffIndex effect) const
void EffectDurabilityDamagePCT()
SpellValue *const m_spellValue
void finish(SpellCastResult result=SPELL_CAST_OK)
void SendResurrectRequest(Player *target)
void EffectActivateSpec()
void EffectEnchantItemPerm()
void EffectCreateTamedPet()
void EffectAddGarrisonFollower()
ObjectGuid m_castItemGUID
void EffectRemoveTalent()
SpellCastVisual m_SpellVisual
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const
SpellInfo const *const m_spellInfo
void EffectUnlearnSpecialization()
void EffectUpdateZoneAurasAndPhases()
void EffectCreateConversation()
virtual void UnSummon(uint32 msTime=0)
void SetTempSummonType(TempSummonType type)
void ModifyThreatByPercent(Unit *target, int32 percent)
Unit * GetCurrentVictim()
auto const & GetThreatenedByMeList() const
bool IsThreatListEmpty(bool includeOffline=false) const
void AddThreat(Unit *target, float amount, SpellInfo const *spell=nullptr, bool ignoreModifiers=false, bool ignoreRedirects=false)
== AFFECT MY THREAT LIST ==
void RegisterRedirectThreat(uint32 spellId, ObjectGuid const &victim, uint32 pct)
== REDIRECT SYSTEM ==
void MatchUnitThreatToHighestThreat(Unit *target)
void UnSummon(uint32 msTime=0) override
float GetPctModifierValue(UnitMods unitMod, UnitModifierPctType modifierType) const
void ClearUnitState(uint32 f)
int32 GetContentTuning() const
void SetMinion(Minion *minion, bool apply)
int32 ModifyPower(Powers power, int32 val, bool withPowerUpdate=true)
void KnockbackFrom(Position const &origin, float speedXY, float speedZ, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
int32 SpellDamageBonusDone(Unit *victim, SpellInfo const *spellProto, int32 pdamage, DamageEffectType damagetype, SpellEffectInfo const &spellEffectInfo, uint32 stack=1, Spell *spell=nullptr, AuraEffect const *aurEff=nullptr) const
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveGameObject(GameObject *gameObj, bool del)
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
void CombatStop(bool includingCast=false, bool mutualPvP=true, bool(*unitFilter)(Unit const *otherUnit)=nullptr)
uint32 m_lastSanctuaryTime
int32 MeleeDamageBonusTaken(Unit *attacker, int32 pdamage, WeaponAttackType attType, DamageEffectType damagetype, SpellInfo const *spellProto=nullptr, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL)
void JumpTo(float speedXY, float speedZ, float angle, Optional< Position > dest={})
void SetHealth(uint64 val)
void SetVirtualItem(uint32 slot, uint32 itemId, uint16 appearanceModId=0, uint16 itemVisual=0)
int32 SpellHealingBonusTaken(Unit *caster, SpellInfo const *spellProto, int32 healamount, DamageEffectType damagetype) const
bool CanHaveThreatList() const
====================== THREAT & COMBAT ====================
void SetUnitFlag3(UnitFlags3 flags)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void EnergizeBySpell(Unit *victim, SpellInfo const *spellInfo, int32 damage, Powers powerType)
ThreatManager & GetThreatManager()
virtual void SetCanDualWield(bool value)
UF::UpdateField< UF::UnitData, 0, TYPEID_UNIT > m_unitData
std::array< ObjectGuid, MAX_SUMMON_SLOT > m_SummonSlot
int64 GetHealthGain(int64 dVal)
void RemoveAurasDueToSpellByDispel(uint32 spellId, uint32 dispellerSpellId, ObjectGuid casterGUID, WorldObject *dispeller, uint8 chargesRemoved=1)
std::forward_list< AuraEffect * > AuraEffectList
void SetPower(Powers power, int32 val, bool withPowerUpdate=true)
Pet * CreateTamedPetFrom(Creature *creatureTarget, uint32 spell_id=0)
uint32 CalculateDamage(WeaponAttackType attType, bool normalized, bool addTotalPct) const
static void CalcAbsorbResist(DamageInfo &damageInfo, Spell *spell=nullptr)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Unit * GetVehicleBase() const
MotionMaster * GetMotionMaster()
Powers GetPowerType() const
bool HasUnitFlag(UnitFlags flags) const
std::array< ObjectGuid, MAX_GAMEOBJECT_SLOT > m_ObjectSlot
void SetCreatedBySpell(int32 spellId)
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
void SetDemonCreatorGUID(ObjectGuid guid)
int32 MeleeDamageBonusDone(Unit *pVictim, int32 damage, WeaponAttackType attType, DamageEffectType damagetype, SpellInfo const *spellProto=nullptr, Mechanics mechanic=MECHANIC_NONE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, Spell *spell=nullptr, AuraEffect const *aurEff=nullptr)
AuraEffect * IsScriptOverriden(SpellInfo const *spell, int32 script) const
float GetCombatReach() const override
int32 GetMaxPower(Powers power) const
int32 HealBySpell(HealInfo &healInfo, bool critical=false)
void SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const *log)
void SetPetFlag(UnitPetFlag flags)
TempSummon * ToTempSummon()
CharmInfo * GetCharmInfo()
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
void AddGameObject(GameObject *gameObj)
void SetChannelObject(uint32 slot, ObjectGuid guid)
uint64 GetMaxHealth() const
bool Attack(Unit *victim, bool meleeAttack)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
uint32 GetFaction() const override
void GetDispellableAuraList(WorldObject const *caster, uint32 dispelMask, DispelChargesList &dispelList, bool isReflect=false) const
AttackerSet const & getAttackers() const
std::multimap< uint32, Aura * > AuraMap
void NearTeleportTo(Position const &pos, bool casting=false)
void SetFullPower(Powers power)
void RemoveAurasWithInterruptFlags(InterruptFlags flag, SpellInfo const *source=nullptr)
void SetMaxHealth(uint64 val)
std::set< Unit * > AttackerSet
void RemoveAppliedAuras(std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
uint64 CountPctFromMaxHealth(int32 pct) const
void AddExtraAttacks(uint32 count)
void SetOwnerGUID(ObjectGuid owner)
ObjectGuid GetTransGUID() const override
bool HasUnitState(const uint32 f) const
AuraApplication * _CreateAuraApplication(Aura *aura, uint32 effMask)
int32 SpellDamageBonusTaken(Unit *caster, SpellInfo const *spellProto, int32 pdamage, DamageEffectType damagetype) const
void SetLevel(uint8 lvl, bool sendUpdate=true)
std::unique_ptr< Movement::MoveSpline > movespline
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
uint32 HasUnitTypeMask(uint32 mask) const
SpellHistory * GetSpellHistory()
void SetCreatorGUID(ObjectGuid creator)
void RemoveMovementImpairingAuras(bool withRoot)
ObjectGuid GetBattlePetCompanionGUID() const
void KillSelf(bool durabilityLoss=true, bool skipSettingDeathState=false)
virtual void Talk(std::string_view text, ChatMsg msgType, Language language, float textRange, WorldObject const *target)
static void ProcSkillsAndAuras(Unit *actor, Unit *actionTarget, ProcFlagsInit const &typeMaskActor, ProcFlagsInit const &typeMaskActionTarget, ProcFlagsSpellType spellTypeMask, ProcFlagsSpellPhase spellPhaseMask, ProcFlagsHit hitMask, Spell *spell, DamageInfo *damageInfo, HealInfo *healInfo)
virtual bool IsEngaged() const
AuraMap & GetOwnedAuras()
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
static void Kill(Unit *attacker, Unit *victim, bool durabilityLoss=true, bool skipSettingDeathState=false)
int32 SpellHealingBonusDone(Unit *victim, SpellInfo const *spellProto, int32 healamount, DamageEffectType damagetype, SpellEffectInfo const &spellEffectInfo, uint32 stack=1, Spell *spell=nullptr, AuraEffect const *aurEff=nullptr) const
ObjectGuid GetTarget() const
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true)
void RemoveUnitFlag(UnitFlags flags)
void RemoveAurasDueToSpellBySteal(uint32 spellId, ObjectGuid casterGUID, WorldObject *stealer, int32 stolenCharges=1)
ObjectGuid GetPetGUID() const
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
constexpr void WorldRelocate(WorldLocation const &loc)
constexpr uint32 GetMapId() const
constexpr WorldLocation GetWorldLocation() const
void PlayDirectSound(uint32 soundId, Player const *target=nullptr, uint32 broadcastTextId=0) const
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
virtual uint8 GetLevelForTarget(WorldObject const *) const
bool IsWithinLOS(float x, float y, float z, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
ObjectGuid GetPrivateObjectOwner() const
void GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float relAngle=0) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsPrivateObject() const
void SetPrivateObjectOwner(ObjectGuid const &owner)
int32 ModSpellDuration(SpellInfo const *spellInfo, WorldObject const *target, int32 duration, bool positive, uint32 effectMask) const
std::string const & GetName() const
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
void SetName(std::string newname)
float GetVisibilityRange() const
float GetDistance(WorldObject const *obj) const
Position GetFirstCollisionPosition(float dist, float angle)
bool IsFriendlyTo(WorldObject const *target) const
virtual float GetCombatReach() const
Player * GetAffectingPlayer() const
void GetRandomPoint(Position const &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
FactionTemplateEntry const * GetFactionTemplateEntry() const
WorldPacket const * Write() override
std::vector< SpellDispellData > DispellData
WorldPacket const * Write() override
WorldPacket const * Write() override
ObjectGuid RequestedByGUID
WorldPacket const * Write() override
ObjectGuid RequestedByWowAccount
WorldPacket const * Write() override
std::vector< int32 > FailedSpells
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< GlyphBinding > Glyphs
WorldPacket const * Write() override
void SendNotification(char const *format,...) ATTR_PRINTF(2
ObjectGuid GetAccountGUID() const
bool HasPermission(uint32 permissionId)
uint32 GetAccountId() const
CollectionMgr * GetCollectionMgr() const
void SendDiscoverNewTaxiNode(uint32 nodeid)
BattlePets::BattlePetMgr * GetBattlePetMgr() const
@ CONFIG_SKILL_PROSPECTING
@ CONFIG_NO_RESET_TALENT_COST
@ SPELL_VISUAL_UNCAGE_PET
TC_GAME_API void Trigger(uint32 gameEventId, WorldObject *source, WorldObject *target)
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
TraitConfigType GetConfigTypeForTree(int32 traitTreeId)
constexpr std::size_t size()
EnumFlag< AreaFlags > GetFlags() const
AuraCreateInfo & SetBaseAmount(int32 const *bp)
AuraCreateInfo & SetCaster(Unit *caster)
AuraCreateInfo & SetCastItem(ObjectGuid const &guid, uint32 itemId, int32 itemLevel)
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
void SetIsCommandFollow(bool val)
void SetIsAtStay(bool val)
void SetIsFollowing(bool val)
void SetIsReturning(bool val)
bool HasCommandState(CommandStates state) const
void SetIsCommandAttack(bool val)
bool IsPetSpecialization() const
SkillType GetRequiredLootSkill() const
bool IsFriendlyTo(FactionTemplateEntry const *entry) const
uint32 GetNoDamageImmune() const
uint32 GetRequiredSkillRank() const
uint32 GetBaseItemLevel() const
uint32 GetMaxStackSize() const
bool HasFlag(ItemFlags flag) const
char const * GetDefaultLocaleName() const
bool FillLoot(uint32 lootId, LootStore const &store, Player *lootOwner, bool personal, bool noEmptyError=false, uint16 lootMode=LOOT_MODE_DEFAULT, ItemContext context=ItemContext::NONE)
constexpr void SetOrientation(float orientation)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
float GetExactDist2d(const float x, const float y) const
float GetRelativeAngle(float x, float y) const
float GetExactDist(float x, float y, float z) const
float GetAbsoluteAngle(float x, float y) const
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X)
uint32 GetValueForTierIndex(uint32 tierIndex) const
ObjectGuid _transportGUID
std::array< uint8, MAX_ITEM_ENCHANTMENT_EFFECTS > Effect
int32 EffectBasePoints[MAX_SPELL_EFFECTS]
EnumFlag< SummonPropertiesFlags > GetFlags() const
UpdateField< int32, 4, 5 > Type
UpdateField< int32, 8, 11 > TraitSystemID
UpdateField< uint16, 0, 4 > ItemAppearanceModID
UpdateField< uint16, 0, 5 > ItemVisual
UpdateField< int32, 0, 1 > ItemID