diff --git a/conf/individualProgression.conf.dist b/conf/individualProgression.conf.dist index 50c4571..39fd4e9 100644 --- a/conf/individualProgression.conf.dist +++ b/conf/individualProgression.conf.dist @@ -331,7 +331,7 @@ IndividualProgression.PvPGearRequirements = 1 # # IndividualProgression.DisableRDF # Description: Enable or disable the Random Dungeon Finder feature within the context of Individual Progression. -# Queing for specific dungeons will still be possible. (See worldserver.conf for total LFG removal). +# Queing for specific dungeons and Holiday Events will still be possible. (See worldserver.conf for total LFG removal). # Default: 0 - Enabled # 1 - Disabled # diff --git a/sql/world/base/naxx40_creatures.sql b/sql/world/base/naxx40_creatures.sql index 815d58e..3680007 100644 --- a/sql/world/base/naxx40_creatures.sql +++ b/sql/world/base/naxx40_creatures.sql @@ -83,7 +83,7 @@ REPLACE INTO `creature_template` (`entry`, `modelid1`, `name`, `subname`, `minle (351080, 16605, "Naxxramas Follower", "", 61, 61, 21, 1.0, 1.42857, 20.0, 1.0, 1, 0, 59.2, 2000, 1265, 1.0, 1.0, 8, 32832, 2048, 0, 7, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 45.0, 10.0, 1.15, 1.0, 144, 1, 1023391482, 0, 0, ''), (351081, 16603, "Naxxramas Worshipper", "", 61, 61, 21, 1.0, 1.42857, 20.0, 1.0, 1, 0, 35.0, 2000, 1265, 1.0, 1.0, 8, 32832, 2048, 0, 7, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 40.0, 10.0, 1.0, 1.0, 144, 1, 1023391482, 0, 0, ''), (351082, 14698, "Crypt Guard", "", 61, 61, 21, 1.0, 1.42857, 20.0, 1.0, 1, 0, 14.7, 1000, 1265, 1.0, 1.0, 1, 64, 2048, 0, 6, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 65.0, 1.0, 1.15, 1.0, 144, 1, 1023391482, 0, 0, ''), -(351083, 10005, "Corpse Scarab", "", 60, 60, 21, 0.833332, 2.14286, 18.0, 1.0, 0, 0, 2.1, 1000, 1265, 1.0, 1.0, 1, 0, 2048, 0, 10, 72, 0, 0, 0, 0, 0, 'SmartAI', 2, 1.0, 2.0, 1.0, 0.7, 1.0, 188, 1, 1022042641, 0, 0, ''), +(351083, 10005, "Corpse Scarab", "", 60, 60, 21, 0.833332, 2.14286, 18.0, 1.0, 0, 0, 2.1, 1000, 1265, 1.0, 1.0, 1, 0, 2048, 0, 10, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 2.0, 1.0, 0.7, 1.0, 188, 1, 1022042641, 0, 0, ''), (351084, 16539, "Deathknight Understudy", "", 60, 60, 21, 1.0, 1.42857, 20.0, 1.0, 1, 0, 45.5, 3500, 1265, 1.0, 1.0, 1, 32832, 2048, 0, 7, 72, 0, 0, 0, 0, 0, '', 0, 1.0, 30.0, 2.0, 2.0, 1.0, 144, 1, 1022049874, 0, 0, 'boss_razuvious_minion_40'), (351085, 2606, "Plagued Guardian", "", 61, 61, 21, 1.0, 1.42857, 20.0, 1.0, 1, 0, 24.25, 3000, 2000, 1.0, 1.0, 8, 0, 2048, 0, 6, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 8.0, 18.0, 1.15, 1.0, 144, 1, 1015751184, 0, 0, ''), (351086, 7847, "Plagued Champion", "", 61, 61, 21, 0.888888, 1.42857, 20.0, 1.0, 1, 0, 26.85, 2000, 2000, 1.0, 1.0, 1, 64, 2048, 0, 6, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 11.0, 1.0, 1.15, 1.0, 144, 1, 1015226896, 0, 0, ''), diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index c8228fb..6a13745 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -347,29 +347,35 @@ public: } void OnQueueRandomDungeon(Player* player, uint32& rDungeonId) override - { - // Check if RDF is disabled in the context of Individual Progression - if (sConfigMgr->GetOption("IndividualProgression.DisableRDF", false)) - { - // Notify the player - player->GetSession()->SendNotification("The Random Dungeon feature is currently disabled by the Individual Progression module."); - rDungeonId = 1000; // Set dungeon ID to an invalid value to cancel the queuing - return; - } +{ + // List of exceptions for seasonal event dungeons + std::set seasonalEventDungeons = { 285, 286, 287, 288 }; + if (seasonalEventDungeons.find(rDungeonId) != seasonalEventDungeons.end()) + { + return; + } - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40)) - { - rDungeonId = RDF_CLASSIC; - } - else if (rDungeonId == RDF_WRATH_OF_THE_LICH_KING && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) - { - rDungeonId = RDF_THE_BURNING_CRUSADE; - } - else if (rDungeonId == RDF_WRATH_OF_THE_LICH_KING_HEROIC && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) - { - rDungeonId = RDF_THE_BURNING_CRUSADE_HEROIC; - } - } + // Check if RDF is disabled in the context of Individual Progression + if (sConfigMgr->GetOption("IndividualProgression.DisableRDF", false)) + { + player->GetSession()->SendNotification("The Random Dungeon feature is currently disabled by the Individual Progression module."); + rDungeonId = 1000; // Set dungeon ID to an invalid value to cancel the queuing + return; + } + + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40)) + { + rDungeonId = RDF_CLASSIC; + } + else if (rDungeonId == RDF_WRATH_OF_THE_LICH_KING && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) + { + rDungeonId = RDF_THE_BURNING_CRUSADE; + } + else if (rDungeonId == RDF_WRATH_OF_THE_LICH_KING_HEROIC && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) + { + rDungeonId = RDF_THE_BURNING_CRUSADE_HEROIC; + } +} bool CanEquipItem(Player* player, uint8 /*slot*/, uint16& /*dest*/, Item* pItem, bool /*swap*/, bool /*not_loading*/) override { diff --git a/src/naxx40Scripts/boss_anubrekhan_40.cpp b/src/naxx40Scripts/boss_anubrekhan_40.cpp index 3301d71..fcaab47 100644 --- a/src/naxx40Scripts/boss_anubrekhan_40.cpp +++ b/src/naxx40Scripts/boss_anubrekhan_40.cpp @@ -94,7 +94,6 @@ public: me->SummonCreature(NPC_CRYPT_GUARD, 3299.086f, -3450.929f, 287.077f, 3.999f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000); } - void Reset() override { BossAI::Reset(); @@ -112,15 +111,19 @@ public: void JustSummoned(Creature* cr) override { - if (me->IsInCombat()) - { - cr->SetInCombatWithZone(); + if (me->IsInCombat()) + { + cr->SetInCombatWithZone(); // This line will set the creature in combat with the zone. if (cr->GetEntry() == NPC_CRYPT_GUARD) { - cr->AI()->Talk(EMOTE_SPAWN, me); + cr->AI()->Talk(EMOTE_SPAWN, me); } - } - summons.Summon(cr); + else if (cr->GetEntry() == NPC_CORPSE_SCARAB) // Explicitly check for Corpse Scarabs here. + { + cr->SetInCombatWithZone(); // Set the Corpse Scarabs in combat with the zone too. + } + } + summons.Summon(cr); } void SummonedCreatureDies(Creature* cr, Unit*) override