Allow Dungeon Set 2 before AQ progression phase

This commit is contained in:
郑佩茹
2022-11-09 09:48:23 -07:00
parent affb14bdd1
commit 17e820ab2e
5 changed files with 48 additions and 2 deletions

View File

@@ -292,3 +292,15 @@ IndividualProgression.DisableDefaultProgression = 0
#
IndividualProgression.CustomProgression = ""
#
# IndividualProgression.AllowEarlyDungeonSet2
# Description: Dungeon Set 2 was introduced in patch 1.10 and requires completing some AQ content that is normally not available until a later phase
# When enabled, this allows the relevant content to be accessed early so that Dungeon Set 2 can be acquired before it is made obsolete
# by raid gear.
#
# Default: 0 - Disabled
# 1 - Enabled
#
#
IndividualProgression.AllowEarlyDungeonSet2 = 1

View File

@@ -4,7 +4,9 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN (16
20026, 20027, 20053, 20054, 20069, 18542, 20080, 20081, 20082, 21643, 20130,
19934, 19936, 19950, 19951, 19959, 22889, 22902, 22835, 22837);
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_aq' WHERE `entry` IN (15293,15270,15306,15191,15181,15182,15306,15599,15282,15183,15194,15176,15270,16091,15701,15612,15613,15540,15704,15693,15431,15903,15180, 15499);
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_ds2' WHERE `entry` IN (15282, 15270);
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_aq' WHERE `entry` IN (15293,15306,15191,15181,15182,15306,15599,15183,15194,15176,15270,16091,15701,15612,15613,15540,15704,15693,15431,15903,15180, 15499, 15500, 15498);
# Two Cenarion Scouts - 15609 and 15610 - should be in this progression but they have some quest AI that we don't want to override, so leave them for now
# Light's Hope Chapel

View File

@@ -264,6 +264,7 @@ private:
sIndividualProgression->deathKnightProgressionLevel = sConfigMgr->GetOption<uint8>("IndividualProgression.DeathKnightUnlockProgression", 11);
sIndividualProgression->deathKnightStartingProgression = sConfigMgr->GetOption<uint8>("IndividualProgression.DeathKnightStartingProgression", 11);
sIndividualProgression->LoadCustomProgressionEntries(sConfigMgr->GetOption<std::string>("IndividualProgression.CustomProgression", ""));
sIndividualProgression->earlyDungeonSet2 = sConfigMgr->GetOption<bool>("IndividualProgression.AllowEarlyDungeonSet2", true);
}
static void LoadXpValues()

View File

@@ -135,7 +135,7 @@ public:
std::map<uint32, uint8> customProgressionMap;
questXpMapType questXpMap;
float vanillaPowerAdjustment, vanillaHealthAdjustment, tbcPowerAdjustment, tbcHealthAdjustment, vanillaHealingAdjustment, tbcHealingAdjustment, previousGearTuning;
bool enabled, questXpFix, hunterPetLevelFix, requirePreAQQuests, enforceGroupRules, fishingFix, simpleConfigOverride, questMoneyAtLevelCap, repeatableVanillaQuestsXp, disableDefaultProgression;
bool enabled, questXpFix, hunterPetLevelFix, requirePreAQQuests, enforceGroupRules, fishingFix, simpleConfigOverride, questMoneyAtLevelCap, repeatableVanillaQuestsXp, disableDefaultProgression, earlyDungeonSet2;
int progressionLimit, startingProgression, tbcRacesProgressionLevel, deathKnightProgressionLevel, deathKnightStartingProgression;
bool hasPassedProgression(Player* player, ProgressionState state) const;

View File

@@ -260,6 +260,36 @@ public:
}
};
class npc_ipp_ds2 : public CreatureScript
{
public:
npc_ipp_ds2() : CreatureScript("npc_ipp_ds2") { }
struct npc_ipp_ds2AI: ScriptedAI
{
explicit npc_ipp_ds2AI(Creature* creature) : ScriptedAI(creature) { };
bool CanBeSeen(Player const* player) override
{
if (player->IsGameMaster() || !sIndividualProgression->enabled)
{
return true;
}
if (sIndividualProgression->earlyDungeonSet2)
{
return true;
}
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_BLACKWING_LAIR);
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_ipp_ds2AI(creature);
}
};
class npc_ipp_naxx40 : public CreatureScript
{
public:
@@ -290,6 +320,7 @@ void AddSC_mod_individual_progression_awareness()
{
new npc_ipp_aq();
// new npc_ipp_naxx40(); // Not used yet
new npc_ipp_ds2();
new npc_ipp_tbc();
new npc_ipp_tbc_t4();
new npc_ipp_tbc_pre_t4();