69 m_caster->ToPlayer()->SolveResearchProject(
this);
109 m_caster->ToPlayer()->SolveResearchProject(
this);
133 SF_LOG_DEBUG(
"spells",
"WORLD: Open Lock - No Player Caster!");
190 SF_LOG_DEBUG(
"spells",
"WORLD: Open Lock - No GameObject/Item Target!");
195 int32 reqSkillValue = 0;
302 SF_LOG_ERROR(
"spells",
"Spell %u Effect %u (SPELL_EFFECT_ENCHANT_ITEM_PERMANENT) have 0 as enchanting id",
m_spellInfo->Id, effIndex);
309 SF_LOG_ERROR(
"spells",
"Spell %u Effect %u (SPELL_EFFECT_ENCHANT_ITEM_PERMANENT) have non-existing enchant_id %u ",
m_spellInfo->Id, effIndex, enchant_id);
320 sLog->outCommand(player->
GetSession()->
GetAccountId(),
"GM %s (Account: %u) enchanting(perm): %s (Entry: %d) for player: %s (Account: %u)",
335 itemTarget->ClearSoulboundTradeable(item_owner);
361 bool add_socket =
false;
372 SF_LOG_ERROR(
"spells",
"Spell::EffectEnchantItemPrismatic: attempt apply enchant spell %u with SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC (%u) but without ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET (%u), not suppoted yet.",
385 sLog->outCommand(player->
GetSession()->
GetAccountId(),
"GM %s (Account: %u) enchanting(perm): %s (Entry: %d) for player: %s (Account: %u)",
400 itemTarget->ClearSoulboundTradeable(item_owner);
419 SF_LOG_ERROR(
"spells",
"Spell %u Effect %u (SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY) have 0 as enchanting id",
m_spellInfo->Id, effIndex);
426 SF_LOG_ERROR(
"spells",
"Spell %u Effect %u (SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY) have not existed enchanting id %u ",
m_spellInfo->Id, effIndex, enchant_id);
443 sLog->outCommand(player->
GetSession()->
GetAccountId(),
"GM %s (Account: %u) enchanting(temp): %s (Entry: %d) for player: %s (Account: %u)",
538 int32 reqValue = targetLevel < 10 ? 0 : targetLevel < 20 ? (targetLevel - 10) * 10 : targetLevel * 5;
540 int32 skillValue =
m_caster->ToPlayer()->GetPureSkillValue(skill);
543 m_caster->ToPlayer()->UpdateGatherSkill(skill, skillValue, reqValue, creature->
isElite() ? 2 : 1);
589 unitTarget->ToPlayer()->DurabilityLossAll(
float(
damage) / 100.0f, (slot < -1));
666 player->
DestroyItem(item->GetBagSlot(), item->GetSlot(),
true);
@ ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET
DBCStorage< SpellItemEnchantmentEntry > sSpellItemEnchantmentStore(SpellItemEnchantmentfmt)
#define MAX_ITEM_ENCHANTMENT_EFFECTS
@ PRISMATIC_ENCHANTMENT_SLOT
@ EQUIP_ERR_ITEM_NOT_FOUND
@ ITEM_PROTO_FLAG_TRIGGERED_CAST
@ ITEM_PROTO_FLAG_MILLABLE
@ ITEM_PROTO_FLAG_PROSPECTABLE
#define MAX_ITEM_PROTO_SPELLS
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
LootStore LootTemplates_Spell("spell_loot_template", "spell id (random item creating)", false)
@ EQUIPMENT_SLOT_MAINHAND
#define INVENTORY_SLOT_BAG_0
@ GAMEOBJECT_TYPE_FLAGSTAND
@ SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC
uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD
@ SPELL_EFFECT_HANDLE_HIT
@ SPELL_EFFECT_HANDLE_HIT_TARGET
@ ITEM_FIELD_DYNAMIC_FLAGS
CreatureTemplate const * GetCreatureTemplate() const
void SetEnchantment(EnchantmentSlot slot, uint32 id, uint32 duration, uint32 charges, uint64 caster=0)
uint32 GetEnchantmentId(EnchantmentSlot slot) const
uint32 GetGUIDLow() const
void RemoveFlag(uint16 index, uint32 oldFlag)
void SendEquipError(InventoryResult msg, Item *pItem, Item *pItem2=NULL, uint32 itemid=0)
void AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const &store, bool broadcast=false)
Item * GetItemByEntry(uint32 entry) const
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
bool UpdateCraftSkill(uint32 spellid)
void ApplyEnchantment(Item *item, EnchantmentSlot slot, bool apply, bool apply_dur=true, bool ignore_condition=false)
uint16 GetPureSkillValue(uint32 skill) const
void RemoveTradeableItem(Item *item)
WorldSession * GetSession() const
Item * GetItemByPos(uint16 pos) const
void DestroyItem(uint8 bag, uint8 slot, bool update)
Battleground * GetBattleground() const
bool OnArchaeologyFindUsed(GameObject *go)
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
void SendLoot(uint64 guid, LootType loot_type, bool isAoE=false)
bool UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLevel, uint32 Multiplicator=1)
GameObject * gameObjTarget
void EffectDurabilityDamage(SpellEffIndex effIndex)
void EffectMilling(SpellEffIndex effIndex)
void EffectEnchantItemTmp(SpellEffIndex effIndex)
static void SendCastResult(Player *caster, SpellInfo const *spellInfo, uint8 cast_count, SpellCastResult result, SpellCustomErrors customError=SPELL_CUSTOM_ERROR_NONE, Opcodes opcode=SMSG_CAST_FAILED)
SpellCastTargets m_targets
void EffectOpenLock(SpellEffIndex effIndex)
void EffectDisEnchant(SpellEffIndex effIndex)
SpellCastResult CanOpenLock(uint32 effIndex, uint32 lockid, SkillType &skillid, int32 &reqSkillValue, int32 &skillValue)
SpellEffectHandleMode effectHandleMode
SpellResearchData const * m_researchData
void EffectEnchantItemPerm(SpellEffIndex effIndex)
void EffectPickPocket(SpellEffIndex effIndex)
void EffectProspecting(SpellEffIndex effIndex)
void EffectEnchantHeldItem(SpellEffIndex effIndex)
void EffectDurabilityDamagePCT(SpellEffIndex effIndex)
void ExecuteLogEffectOpenLock(uint8 effIndex, Object *obj)
void EffectEnchantItemPrismatic(SpellEffIndex effIndex)
void EffectCreateItem2(SpellEffIndex effIndex)
void EffectRechargeManaGem(SpellEffIndex effIndex)
void EffectDestroyItem(SpellEffIndex effIndex)
void EffectUnlockGuildVaultTab(SpellEffIndex effIndex)
void EffectCreateItem(SpellEffIndex effIndex)
void ExecuteLogEffectCreateItem(uint8 effIndex, uint32 entry)
void EffectCreateRandomItem(SpellEffIndex effIndex)
void SendLoot(uint64 guid, LootType loottype)
void DoCreateItem(uint32 i, uint32 itemtype)
void ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit *victim, int32 itemId, int32 slot)
void EffectSkinning(SpellEffIndex effIndex)
SpellInfo const *const m_spellInfo
void EffectTradeSkill(SpellEffIndex effIndex)
std::string const & GetName() const
bool HasPermission(uint32 permissionId)
uint32 GetAccountId() const
@ CONFIG_SKILL_PROSPECTING
uint32 GetTemporaryItemEnchantDurationSeconds(uint32 spellId, uint32 spellFamilyName, uint32 spellVisual)
bool ShouldDeactivateOwnedTrapOnOpenLock(uint32 spellId, uint32 gameObjectType, bool hasOwner)
SkillType GetRequiredLootSkill() const
struct GameObjectTemplate::@046065176235271051340241126110345143267101032070::@336060043160212225074214221232260020127013174055 goober
struct GameObjectTemplate::@046065176235271051340241126110345143267101032070::@035305233304037036156142147071371001131016202245 button
_Spell Spells[MAX_ITEM_PROTO_SPELLS]
uint32 type[MAX_ITEM_ENCHANTMENT_EFFECTS]