diff --git a/conf/individualProgression.conf.dist b/conf/individualProgression.conf.dist index d3228c5..cbe2cad 100644 --- a/conf/individualProgression.conf.dist +++ b/conf/individualProgression.conf.dist @@ -116,10 +116,10 @@ IndividualProgression.HunterPetLevelFix = 1 # before being able to use the teleportation crystal in EPL. This is consistent behavior with other Vanilla raids (MC, BL). # If disabled, players can enter Naxx 40 through the crystal as soon as they are attuned and they have reached the correct # progression level - no Stratholme run will be required. -# Default: 1 - Enabled -# 0 - Disabled +# Default: 0 - Disabled +# 1 - Enabled # -IndividualProgression.RequireNaxxStrathEntrance = 1 +IndividualProgression.RequireNaxxStrathEntrance = 0 # IndividualProgression.MoltenCore.ManualRuneHandling # Description: Defines whether Molten Core runes are handled manually (dousing through Aqual Quintessence) diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index aa873f1..2283bd7 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -1,4 +1,5 @@ #include "IndividualProgression.h" +#include "naxxramas_40.h" class IndividualPlayerProgression : public PlayerScript { @@ -171,6 +172,20 @@ public: return (accountNameFound && std::regex_match(accountName, excludedAccountsRegex)); } + static bool isAttuned(Player* player) + { + if ((player->GetQuestStatus(NAXX40_ATTUNEMENT_1) == QUEST_STATUS_REWARDED) || + (player->GetQuestStatus(NAXX40_ATTUNEMENT_2) == QUEST_STATUS_REWARDED) || + (player->GetQuestStatus(NAXX40_ATTUNEMENT_3) == QUEST_STATUS_REWARDED)) + { + return true; + } + else + { + return false; + } + } + bool OnPlayerBeforeTeleport(Player* player, uint32 mapid, float x, float y, float z, float /*orientation*/, uint32 /*options*/, Unit* /*target*/) override { if (!sIndividualProgression->enabled || player->IsGameMaster() || isExcludedFromProgression(player)) @@ -243,6 +258,10 @@ public: { return false; } + if (instanceTemplate->Parent == MAP_NORTHREND && mapid == MAP_NAXXRAMAS && player->GetLevel() < 71 && !isAttuned(player)) + { + return false; + } } return true; } diff --git a/src/naxx40Scripts/custom_gameobjects_40.cpp b/src/naxx40Scripts/custom_gameobjects_40.cpp index 88b8e8e..53606ef 100644 --- a/src/naxx40Scripts/custom_gameobjects_40.cpp +++ b/src/naxx40Scripts/custom_gameobjects_40.cpp @@ -12,13 +12,16 @@ class gobject_naxx40_tele : public GameObjectScript private: static bool isAttuned(Player* player) { - if (player->GetQuestStatus(NAXX40_ATTUNEMENT_1) == QUEST_STATUS_REWARDED) + if ((player->GetQuestStatus(NAXX40_ATTUNEMENT_1) == QUEST_STATUS_REWARDED) || + (player->GetQuestStatus(NAXX40_ATTUNEMENT_2) == QUEST_STATUS_REWARDED) || + (player->GetQuestStatus(NAXX40_ATTUNEMENT_3) == QUEST_STATUS_REWARDED)) + { return true; - if (player->GetQuestStatus(NAXX40_ATTUNEMENT_2) == QUEST_STATUS_REWARDED) - return true; - if (player->GetQuestStatus(NAXX40_ATTUNEMENT_3) == QUEST_STATUS_REWARDED) - return true; - return false; + } + else + { + return false; + } } public: @@ -35,9 +38,20 @@ public: return new gobject_naxx40_teleAI(object); } + bool isExcludedFromProgression(Player* player) + { + if(!sIndividualProgression->excludeAccounts) { + return false; + } + std::string accountName; + bool accountNameFound = AccountMgr::GetName(player->GetSession()->GetAccountId(), accountName); + std::regex excludedAccountsRegex (sIndividualProgression->excludedAccountsRegex); + return (accountNameFound && std::regex_match(accountName, excludedAccountsRegex)); + } + bool OnGossipHello(Player* player, GameObject* /*go*/) override { - if ((!sIndividualProgression->requireNaxxStrath || player->GetQuestStatus(NAXX40_ENTRANCE_FLAG) == QUEST_STATUS_REWARDED) && isAttuned(player)) + if (((!sIndividualProgression->requireNaxxStrath || player->GetQuestStatus(NAXX40_ENTRANCE_FLAG) == QUEST_STATUS_REWARDED) && isAttuned(player)) || (isExcludedFromProgression(player) && (player->GetLevel() < 71))) { player->SetRaidDifficulty(RAID_DIFFICULTY_10MAN_HEROIC); player->TeleportTo(533, 3005.51f, -3434.64f, 304.195f, 6.2831f);