More Naxx40 progress, Vanilla world level adjustments

This commit is contained in:
郑佩茹
2022-08-30 18:37:10 -06:00
parent 470481190b
commit af39f0cbe1
7 changed files with 3970 additions and 2079 deletions

View File

@@ -2,6 +2,6 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN (16
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,15609,15540,15704,15693,15431,15903,15610,15180, 15499); 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,15609,15540,15704,15693,15431,15903,15610,15180, 15499);
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` IN (29611); UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` IN (29611, 27616, 27618, 27619, 27620, 27624, 34084);
UPDATE `gameobject_template` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `entry` IN (195141); UPDATE `gameobject_template` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `entry` IN (195141);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,52 @@
/* To make NPCs added later to the original world maps better fit the Vanilla world, this adjusts their levels to fit Vanilla range */
/* Reduce the level of BG Emissaries to be the same as Vanilla BG emissaries */
UPDATE `creature_template` SET `minlevel` = 55, `maxlevel` = 55 WHERE `entry` IN (30566, 34948, 34950, 34951, 30567, 34949);
/* Stormwind Harbor guards should be the same level as other guards */
UPDATE `creature_template` SET `minlevel` = 45, `maxlevel` = 46 WHERE `entry` IN (29019);
UPDATE `creature_template` SET `minlevel` = 45, `maxlevel` = 45 WHERE `entry` IN (29088, 29152);
UPDATE `creature_template` SET `minlevel` = 55, `maxlevel` = 55 WHERE `entry` IN (29712, 29016, 29154, 28050, 28051);
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE `entry` IN (28048, 29144);
UPDATE `creature_template` SET `minlevel` = 58, `maxlevel` = 58 WHERE `entry` IN (28049);
/* Undercity NPCs */
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE `entry` IN (36224, 36225, 36226);
/* Locksmiths */
UPDATE `creature_template` SET `minlevel` = 55, `maxlevel` = 55 WHERE `entry` IN (29725, 29728);
/* Event vendors */
UPDATE `creature_template` SET `minlevel` = 35, `maxlevel` = 35 WHERE `entry` IN (34382, 34383, 34653, 38065, 32798, 32799, 26124,
23486, 23710, 26221, 25909, 25925, 25941, 27215,
25944, 34382, 34383, 34653, 34654, 38065, );
UPDATE `creature_template` SET `minlevel` = 37, `maxlevel` = 37 WHERE `entry` IN (25915, 25920);
UPDATE `creature_template` SET `minlevel` = 30, `maxlevel` = 37 WHERE `entry` IN (26123, 26124);
UPDATE `creature_template` SET `minlevel` = 32, `maxlevel` = 37 WHERE `entry` IN (25975, 25920);
/* Karazhan Quest NPCs */
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE `entry` IN (17613);
UPDATE `creature_template` SET `minlevel` = 59, `maxlevel` = 59 WHERE `entry` IN (18253);
UPDATE `creature_template` SET `minlevel` = 58, `maxlevel` = 58 WHERE `entry` IN (18255);
/* Arena NPCs */
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60, `ScriptName`='npc_ipp_tbc' WHERE `entry` IN
(19915, 19909, 19911, 26012, 26007, 26075, 26307, 26309, 26760);
/* PvP Vendors */
UPDATE `creature_template` SET `minlevel` = 55, `maxlevel` = 55 WHERE `entry` IN (32834, 34075, 34078, 34081);
/* Wintergrasp NPCs */
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60, `ScriptName`='npc_ipp_wotlk' WHERE `entry` IN (35611, 35598, 35600);
/* Battlemasters */
UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE `entry` IN (34997, 34998, 35007, 34991, 30578, 30579, 30583, 35021, 35024, 35025, 35598, 35600, 35611);
UPDATE `creature_template` SET `minlevel` = 59, `maxlevel` = 59 WHERE `entry` IN (19848);
UPDATE `creature_template` SET `minlevel` = 51, `maxlevel` = 51 WHERE `entry` IN (20374, 20381, 20386);
/* New flightmasters */
UPDATE `creature_template` SET `minlevel` = 55, `maxlevel` = 55 WHERE `entry` IN (24366, 37888, 29480, 37915);
/* Alicia */
UPDATE `creature_template` SET `minlevel` = 5, `maxlevel` = 5 WHERE `entry` IN (24729);

View File

@@ -1,3 +1,44 @@
-- Summon Felsteed (Warlock) -- Summon Felsteed (Warlock)
DELETE FROM `creature_queststarter` WHERE `id`=4563 AND `quest`=4489; DELETE FROM `creature_queststarter` WHERE `id`=4563 AND `quest`=4489;
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (4563, 4489); INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (4563, 4489);
/* Replace orc guards with pre-wrathgate abomination guards */
UPDATE `creature` SET `id1`=5624 WHERE `id1`=36213;
DELETE FROM `gossip_menu_option` WHERE (`MenuID`) IN (2847, 2848, 2849);
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
(2847, 0, 0, 'Alchemy', 3460, 1, 1, 2834, 336, 0, 0, NULL, 0, 0),
(2847, 1, 0, 'Blacksmithing', 3461, 1, 1, 2835, 337, 0, 0, NULL, 0, 0),
(2847, 2, 0, 'Cooking', 3462, 1, 1, 2836, 338, 0, 0, NULL, 0, 0),
(2847, 3, 0, 'Enchanting', 3463, 1, 1, 2837, 339, 0, 0, NULL, 0, 0),
(2847, 4, 0, 'Engineering', 4976, 1, 1, 2838, 340, 0, 0, NULL, 0, 0),
(2847, 5, 0, 'First Aid', 3464, 1, 1, 2839, 341, 0, 0, NULL, 0, 0),
(2847, 6, 0, 'Fishing', 3465, 1, 1, 2840, 342, 0, 0, NULL, 0, 0),
(2847, 7, 0, 'Herbalism', 3466, 1, 1, 2841, 343, 0, 0, NULL, 0, 0),
(2847, 9, 0, 'Leatherworking', 3467, 1, 1, 2842, 345, 0, 0, NULL, 0, 0),
(2847, 10, 0, 'Mining', 3468, 1, 1, 2843, 347, 0, 0, NULL, 0, 0),
(2847, 11, 0, 'Skinning', 3471, 1, 1, 2844, 346, 0, 0, NULL, 0, 0),
(2847, 12, 0, 'Tailoring', 3469, 1, 1, 2845, 348, 0, 0, NULL, 0, 0),
(2848, 0, 0, 'Mage', 3448, 1, 1, 2821, 331, 0, 0, NULL, 0, 0),
(2848, 2, 0, 'Priest', 3449, 1, 1, 2829, 332, 0, 0, NULL, 0, 0),
(2848, 3, 0, 'Rogue', 4885, 1, 1, 2830, 333, 0, 0, NULL, 0, 0),
(2848, 4, 0, 'Warlock', 4886, 1, 1, 2832, 334, 0, 0, NULL, 0, 0),
(2848, 5, 0, 'Warrior', 2910, 1, 1, 2833, 335, 0, 0, NULL, 0, 0),
(2849, 0, 0, 'The bank', 4888, 1, 1, 2822, 319, 0, 0, NULL, 0, 0),
(2849, 1, 0, 'The bat handler', 6790, 1, 1, 2823, 321, 0, 0, NULL, 0, 0),
(2849, 2, 0, 'The guild master', 3428, 1, 1, 2824, 323, 0, 0, NULL, 0, 0),
(2849, 3, 0, 'The inn', 5090, 1, 1, 2825, 324, 0, 0, NULL, 0, 0),
(2849, 4, 0, 'The mailbox', 5514, 1, 1, 2826, 326, 0, 0, NULL, 0, 0),
(2849, 5, 0, 'The auction house', 5515, 1, 1, 2827, 318, 0, 0, NULL, 0, 0),
(2849, 6, 0, 'The zeppelin master', 5518, 1, 1, 2828, 451, 0, 0, NULL, 0, 0),
(2849, 7, 0, 'The weapon master', 7253, 1, 1, 3726, 328, 0, 0, NULL, 0, 0),
(2849, 8, 0, 'The stable master', 8508, 1, 1, 4906, 327, 0, 0, NULL, 0, 0),
(2849, 9, 0, 'The battlemaster', 10359, 1, 1, 6334, 322, 0, 0, NULL, 0, 0),
(2849, 10, 0, 'A class trainer', 5338, 1, 1, 2848, 0, 0, 0, NULL, 0, 0),
(2849, 11, 0, 'A profession trainer', 6635, 1, 1, 2847, 0, 0, 0, NULL, 0, 0);
/* Restore Varimathras */
UPDATE `creature` SET `id1`=2425 WHERE `id1`=36273;
/* Wrathgate NPCs - just deleting for now, but maybe can implement a post-Wrathgate world state later */
DELETE FROM `creature` WHERE `guid` IN (43466, 79263);

View File

@@ -137,6 +137,67 @@ public:
} }
}; };
class npc_naxx40_area_trigger : public CreatureScript
{
private:
static bool isAttuned(Player* player)
{
if (player->GetQuestStatus(NAXX40_ATTUNEMENT_1) == 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;
}
public:
npc_naxx40_area_trigger() : CreatureScript("npc_naxx40_area_trigger") {}
struct npc_naxx40_area_triggerAI: public ScriptedAI
{
npc_naxx40_area_triggerAI(Creature* creature) : ScriptedAI(creature)
{
me->SetDisplayId(11686); // Invisible
}
void MoveInLineOfSight(Unit* who) override
{
if (who && me->GetDistance2d(who) < 5.0f)
{
if (Player* player = who->ToPlayer())
{
if (isAttuned(player))
{
player->SetRaidDifficulty(RAID_DIFFICULTY_10MAN_HEROIC);
player->TeleportTo(533, 3005.68f, -3447.77f, 293.93f, 4.65f);
}
}
}
else if (who && me->GetDistance2d(who) < 20.0f)
{
if (Player* player = who->ToPlayer())
{
if (isAttuned(player))
{
GameObject* door = me->FindNearestGameObject(NAXX_STRATH_GATE, 100.0f);
if (door)
{
door->SetGoState(GO_STATE_ACTIVE);
}
}
}
}
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_naxx40_area_triggerAI(creature);
}
};
class IndividualPlayerProgression_WorldScript : public WorldScript class IndividualPlayerProgression_WorldScript : public WorldScript
{ {
private: private:
@@ -653,6 +714,7 @@ void AddSC_mod_individual_progression()
new npc_ipp_aq(); new npc_ipp_aq();
new npc_ipp_tbc(); new npc_ipp_tbc();
new npc_ipp_wotlk(); new npc_ipp_wotlk();
new npc_naxx40_area_trigger();
new gobject_ipp_tbc(); new gobject_ipp_tbc();
new gobject_ipp_wotlk(); new gobject_ipp_wotlk();
} }

View File

@@ -12,6 +12,8 @@
#include "Group.h" #include "Group.h"
#include "Pet.h" #include "Pet.h"
#include "DBCEnums.h" #include "DBCEnums.h"
#include "QuestDef.h"
#include "GameObject.h"
typedef std::unordered_map<uint32, uint32> questXpMapType; typedef std::unordered_map<uint32, uint32> questXpMapType;
questXpMapType questXpMap; questXpMapType questXpMap;
@@ -46,7 +48,10 @@ enum BuffSpells
enum ProgressionQuestIDs enum ProgressionQuestIDs
{ {
MIGHT_OF_KALIMDOR = 8742 MIGHT_OF_KALIMDOR = 8742,
NAXX40_ATTUNEMENT_1 = 9121,
NAXX40_ATTUNEMENT_2 = 9122,
NAXX40_ATTUNEMENT_3 = 9123,
}; };
enum NaxxGraveyards enum NaxxGraveyards
@@ -108,4 +113,9 @@ enum ProgressionState : uint8
PROGRESSION_WOTLK_TIER_5 = 16 // Ruby Sanctum PROGRESSION_WOTLK_TIER_5 = 16 // Ruby Sanctum
}; };
enum ProgressionObjects
{
NAXX_STRATH_GATE = 176424
};
#endif //AZEROTHCORE_INDIVIDUALPROGRESSION_H #endif //AZEROTHCORE_INDIVIDUALPROGRESSION_H