Merge pull request #190 from Day36512/master

RDF Exceptions for Holidays and Crypt Scarab enhancements
This commit is contained in:
ZhengPeiRu21
2023-09-29 07:58:06 -06:00
committed by GitHub
4 changed files with 40 additions and 31 deletions

View File

@@ -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
#

View File

@@ -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, ''),

View File

@@ -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<bool>("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<uint32> 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<bool>("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
{

View File

@@ -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