diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index cc0fd66dd..6344ff474 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -2585,12 +2585,6 @@ namespace Game.Entities GetVehicleKit().RelocatePassengers(); } - public bool IsDungeonBoss() - { - CreatureTemplate cinfo = Global.ObjectMgr.GetCreatureTemplate(GetEntry()); - return cinfo != null && (cinfo.FlagsExtra.HasAnyFlag(CreatureFlagsExtra.DungeonBoss)); - } - public float GetAggroRange(Unit target) { // Determines the aggro range for creatures (usually pets), used mainly for aggressive pet target selection. @@ -2879,6 +2873,7 @@ namespace Game.Entities { return GetCreatureTemplate().InhabitType.HasAnyFlag(InhabitType.Air); } + public bool IsDungeonBoss() { return (GetCreatureTemplate().FlagsExtra.HasAnyFlag(CreatureFlagsExtra.DungeonBoss); } public void SetReactState(ReactStates st) { diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index c3541941b..7159865a9 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -5167,7 +5167,17 @@ namespace Game continue; } creatureInfo.FlagsExtra |= CreatureFlagsExtra.DungeonBoss; - break; + for (byte diff = 0; diff < SharedConst.MaxCreatureDifficulties; ++diff) + { + uint diffEntry = creatureInfo.DifficultyEntry[diff]; + if (diffEntry != 0) + { + CreatureTemplate diffInfo = GetCreatureTemplate(diffEntry); + if (diffInfo != null) + diffInfo.FlagsExtra |= CreatureFlagsExtra.DungeonBoss; + } + } + break; } case EncounterCreditType.CastSpell: if (!Global.SpellMgr.HasSpellInfo(creditEntry))