diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index fedda2816..c8a2c4d7d 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -784,7 +784,7 @@ bool Creature::Create(uint32 guidlow, CreatureCreatePos& cPos, CreatureInfo cons cPos.GetMap()->GetCreatureLinkingHolder()->AddMasterToHolder(this); } - LoadCreatureAddon(); + LoadCreatureAddon(false, cPos.GetMap()); return true; } @@ -1911,7 +1911,7 @@ CreatureDataAddon const* Creature::GetCreatureAddon() const } //creature_addon table -bool Creature::LoadCreatureAddon(bool reload) +bool Creature::LoadCreatureAddon(bool reload /*= false*/, Map* map /*= NULL*/) { CreatureDataAddon const *cainfo = GetCreatureAddon(); if(!cainfo) @@ -1965,7 +1965,14 @@ bool Creature::LoadCreatureAddon(bool reload) continue; } - CastSpell(this, *cAura, true); + SpellEntry const* spellInfo = sSpellStore.LookupEntry(*cAura); // Already checked on load + + // Get Difficulty mode for initial case (npc not yet added to map) + if (spellInfo->SpellDifficultyId && !reload && map && map->IsDungeon()) + if (SpellEntry const* spellEntry = GetSpellEntryByDifficulty(spellInfo->SpellDifficultyId, map->GetDifficulty(), map->IsRaid())) + spellInfo = spellEntry; + + CastSpell(this, spellInfo, true); } } return true; diff --git a/src/game/Creature.h b/src/game/Creature.h index d6ff27c2d..6bb2b2e50 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -462,7 +462,7 @@ class MANGOS_DLL_SPEC Creature : public Unit void RemoveFromWorld(); bool Create(uint32 guidlow, CreatureCreatePos& cPos, CreatureInfo const* cinfo, Team team = TEAM_NONE, const CreatureData *data = NULL, GameEventCreatureData const* eventData = NULL); - bool LoadCreatureAddon(bool reload = false); + bool LoadCreatureAddon(bool reload = false, Map* map = NULL); void SelectLevel(const CreatureInfo *cinfo, float percentHealth = 100.0f, float percentMana = 100.0f); void LoadEquipment(uint32 equip_entry, bool force=false); diff --git a/src/game/Totem.cpp b/src/game/Totem.cpp index 123f131fb..9d17e3ead 100644 --- a/src/game/Totem.cpp +++ b/src/game/Totem.cpp @@ -64,7 +64,7 @@ bool Totem::Create(uint32 guidlow, CreatureCreatePos& cPos, CreatureInfo const* if (InstanceData* iData = GetMap()->GetInstanceData()) iData->OnCreatureCreate(this); - LoadCreatureAddon(); + LoadCreatureAddon(false, cPos.GetMap()); return true; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index f940b8f22..973d9ec58 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11841" + #define REVISION_NR "11842" #endif // __REVISION_NR_H__