From 8ac367231a847104717b6bd177ca41d56f121851 Mon Sep 17 00:00:00 2001 From: valsan-azerty-boi <52854501+valsan-azerty-boi@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:12:19 +0200 Subject: [PATCH 1/4] Many little adjustments --- sql/world/base/aq_war_effort.sql | 65 +-- sql/world/base/dungeon_blackwing_lair.sql | 7 + sql/world/base/si.sql | 14 +- sql/world/base/vanilla_creature_values.sql | 3 + sql/world/base/zone_orgrimmar.sql | 1 + sql/world/base/zone_stormwind.sql | 1 + .../zz_optional_small_group_adjustments.sql | 23 + sql/world/base/zz_optional_vanilla_models.sql | 1 + .../base/zz_optional_vanilla_phasing.sql | 111 ++++- src/IndividualProgression.cpp | 12 +- src/IndividualProgression.h | 7 + src/IndividualProgressionPlayer.cpp | 412 ++---------------- src/naxx40Scripts/custom_gameobjects_40.cpp | 2 +- src/vanillaScripts/instance_onyxias_lair.cpp | 3 +- 14 files changed, 228 insertions(+), 434 deletions(-) diff --git a/sql/world/base/aq_war_effort.sql b/sql/world/base/aq_war_effort.sql index 549a085..d1c490c 100644 --- a/sql/world/base/aq_war_effort.sql +++ b/sql/world/base/aq_war_effort.sql @@ -39,23 +39,34 @@ INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, (@CGUID+29,15534,0,0,1,0,0,1,1,1,1632.55,-4091.73,35.2461,5.86929,300,0,0,14355,0,0,0,0,0,'',0), (@CGUID+30,15535,0,0,1,0,0,1,1,1,1634.37,-4087.58,36.2655,5.29543,300,0,0,15260,0,0,0,0,0,'',0); +-- Commendation Npcs +DELETE FROM `creature` WHERE `id1` IN (15731, 15733, 15734, 15735, 21969, 15736, 15737, 15738, 15739, 21968); +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES -- Alliance Commendation Npcs -DELETE FROM `creature` WHERE `id1` IN (15731, 15733, 15734, 15735, 21969); -INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES -(@CGUID+31,15731,0,0,0,0,0,1,1,0,-4938.75,-1206.29,501.658,4.03146,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+32,15733,0,0,0,0,0,1,1,0,-4936.65,-1209.73,501.658,3.95796,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+33,15734,0,0,0,0,0,1,1,0,-4943.13,-1204.78,501.658,4.62712,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+34,15735,0,0,0,0,0,1,1,0,-4936.06,-1214.82,501.639,3.21465,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+35,21969,0,0,0,0,0,1,1,0,-4946.71,-1206.24,501.658,5.19933,300,0,0,2614,0,0,0,0,0,'',0); - +(@CGUID+31,15731,0,0,0,0,0,1,1,0,-4938.75,-1206.29,501.658,4.03146,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+32,15733,0,0,0,0,0,1,1,0,-4936.65,-1209.73,501.658,3.95796,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+33,15734,0,0,0,0,0,1,1,0,-4943.13,-1204.78,501.658,4.62712,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+34,15735,0,0,0,0,0,1,1,0,-4936.06,-1214.82,501.639,3.21465,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+35,21969,0,0,0,0,0,1,1,0,-4946.71,-1206.24,501.658,5.19933,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), -- Horde Commendation Npcs -DELETE FROM `creature` WHERE `id1` IN (15736, 15737, 15738, 15739, 21968); -INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES -(@CGUID+36,15736,0,0,1,0,0,1,1,0,1592.17,-4097.91,34.9759,6.25645,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+37,15737,0,0,1,0,0,1,1,0,1595.6,-4091.94,35.8097,5.20323,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+38,15738,0,0,1,0,0,1,1,0,1598.27,-4090.5,35.8736,5.13568,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+39,15739,0,0,1,0,0,1,1,0,1592.84,-4094.01,35.6404,5.82527,300,0,0,2614,0,0,0,0,0,'',0), -(@CGUID+40,21968,0,0,1,0,0,1,1,0,1601.01,-4091.87,35.5195,4.52778,300,0,0,2614,0,0,0,0,0,'',0); +(@CGUID+36,15736,0,0,1,0,0,1,1,0,1592.17,-4097.91,34.9759,6.25645,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+37,15737,0,0,1,0,0,1,1,0,1595.6,-4091.94,35.8097,5.20323,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+38,15738,0,0,1,0,0,1,1,0,1598.27,-4090.5,35.8736,5.13568,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+39,15739,0,0,1,0,0,1,1,0,1592.84,-4094.01,35.6404,5.82527,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +(@CGUID+40,21968,0,0,1,0,0,1,1,0,1601.01,-4091.87,35.5195,4.52778,300,0,0,2614,0,0,0,0,0,'npc_ipp_we',0), +-- After AQ phase, the commendation Npcs move to their respective cities until the end of WotLK expansion, allows players to use up their marks if they have any after AQ +-- Post AQ Alliance Commendation Npcs +(@CGUID+41,15731,0,0,1,0,0,1,1,0,9949.44,2497.12,1317.629,4.7139,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+42,15733,0,0,0,0,0,1,1,0,-4824.87,-1287.68,501.868,1.38699,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+43,15734,0,0,0,0,0,1,1,0,-4974.55,-1197.28,501.662,1.925,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+44,15735,0,0,0,0,0,1,1,0,-8863.96,636.05,96.1007,1.94892,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+45,21969,0,0,530,0,0,1,1,0,-3925.42,-11606.5,-138.447,4.948,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +-- Post AQ Horde Commendation Npcs +(@CGUID+46,15736,0,0,1,0,0,1,1,0,1582.31,-4110.7,34.113,5.29359,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+47,15737,0,0,1,0,0,1,1,0,1617.93,-4100.5,33.307,4.99858,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+48,15738,0,0,0,0,0,1,1,0,1596.11,279.05,-43.102,4.69252,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+49,15739,0,0,1,0,0,1,1,0,-1213.31,51.31,130.71,2.55176,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0), +(@CGUID+50,21968,0,0,530,0,0,1,1,0,9514.08,-7170.69,14.1073,0.12504,300,0,0,2614,0,0,0,0,0,'npc_ipp_naxx40',0); -- War Effort Recruiters DELETE FROM `gossip_menu` WHERE `MenuID` IN (3118101, 3118103, 3118105, 3118107); @@ -69,7 +80,7 @@ UPDATE `creature_template` SET `gossip_menu_id` = 3118107, `npcflag` = 3 WHERE ` UPDATE `quest_template` SET `AllowableRaces` = 690 WHERE `ID` IN (8792, 8793, 8794, 10500); UPDATE `quest_template` SET `AllowableRaces` = 1101 WHERE `ID` IN (8795, 8796, 8797, 10501); -DELETE FROM `creature_queststarter` WHERE `quest` IN (8792, 8795, 8796, 8797, 10500, 10501); +DELETE FROM `creature_queststarter` WHERE `quest` IN (8792, 8793, 8794, 8795, 8796, 8797, 10500, 10501); INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (15702, 8792), (15703, 8792), (15704, 8792), (21155, 8792), (15707, 8795), (15708, 8795), (15709, 8795), (21156, 8795); DELETE FROM `creature_questender` WHERE `quest` IN (8792, 8793, 8794, 8795, 8796, 8797, 10500, 10501); @@ -77,20 +88,20 @@ INSERT INTO `creature_questender` (`id`, `quest`) VALUES (15700, 8792), (15701, DELETE FROM `creature` WHERE `id1` IN (15702, 15703, 15704, 15707, 15708, 15709, 21155, 21156); INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES -(@CGUID+41,15702,0,0,1,0,0,1,1,0,-1209.58, 100.22, 134.661, 3.15905,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+42,15703,0,0,0,0,0,1,1,0,1572.58, 272.707, -43.0193, 5.02655,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+43,15704,0,0,1,0,0,1,1,0,1653.07, -4403.81, 18.5819, 4.45059,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+44,15707,0,0,0,0,0,1,1,0,-4956.09, -931.133, 503.347, 5.37561,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+45,15708,0,0,0,0,0,1,1,0,-8813.75, 654.068, 96.1603, 4.83456,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+46,15709,0,0,1,0,0,1,1,0,9945.15, 2494.24, 1317.52, 4.20624,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+47,21155,0,0,530,0,0,1,1,0,9526.53, -7190.16, 16.1257, 1.55872,300,0,0,15260,0,0,0,0,0,'',0), -(@CGUID+48,21156,0,0,530,0,0,1,1,0,-3907.79, -11606.595, -138.176, 4.69083,300,0,0,15260,0,0,0,0,0,'',0); +(@CGUID+51,15702,0,0,1,0,0,1,1,0,-1209.58, 100.22, 134.661, 3.15905,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+52,15703,0,0,0,0,0,1,1,0,1572.58, 272.707, -43.0193, 5.02655,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+53,15704,0,0,1,0,0,1,1,0,1653.07, -4403.81, 18.5819, 4.45059,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+54,15707,0,0,0,0,0,1,1,0,-4956.09, -931.133, 503.347, 5.37561,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+55,15708,0,0,0,0,0,1,1,0,-8813.75, 654.068, 96.1603, 4.83456,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+56,15709,0,0,1,0,0,1,1,0,9945.15, 2494.24, 1317.52, 4.20624,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+57,21155,0,0,530,0,0,1,1,0,9526.53, -7190.16, 16.1257, 1.55872,300,0,0,15260,0,0,0,0,0,'',0), +(@CGUID+58,21156,0,0,530,0,0,1,1,0,-3907.79, -11606.595, -138.176, 4.69083,300,0,0,15260,0,0,0,0,0,'',0); -- War Effort Commanders DELETE FROM `creature` WHERE `id1` IN (15700, 15701); INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES -(@CGUID+49,15701,0,0,0,0,0,1,1,1,-4961.68,-1243.19,501.672,2.46488,300,0,1,30520,0,2,0,134254592,0,'',0), -(@CGUID+50,15700,0,0,1,0,0,1,1,1,1581.39,-4202.27,41.8233,4.96133,300,0,1,30520,0,2,0,134217728,0,'',0); +(@CGUID+59,15701,0,0,0,0,0,1,1,1,-4961.68,-1243.19,501.672,2.46488,300,0,1,30520,0,2,0,134254592,0,'',0), +(@CGUID+60,15700,0,0,1,0,0,1,1,1,1581.39,-4202.27,41.8233,4.96133,300,0,1,30520,0,2,0,134217728,0,'',0); SET @NPC := 15701; SET @PATH := @NPC * 10; @@ -136,7 +147,7 @@ INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes -- Phase AQ War Effort Npcs UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_we' WHERE `entry` IN (15383, 15431, 15432, 15434, 15437, 15445, 15446, 15448, 15450, 15451, 15452, 15453, 15455, 15456, 15457, 15459, 15460, 15469, 15477, 15508, 15512, 15515, 15522, 15525, -15528, 15529, 15532, 15533, 15534, 15535, 15700, 15701, 15702, 15703, 15704, 15707, 15708, 15709, 15738, 15737, 15739, 15736, 15731, 15733, 15735, 15734, 21155, 21156, 21968, 21969); +15528, 15529, 15532, 15533, 15534, 15535, 15700, 15701, 15702, 15703, 15704, 15707, 15708, 15709, 21155, 21156); -- Phase AQ War Effort Objects DELETE FROM `gameobject` WHERE `id` IN (180598, 180679, 180680, 180681, 180812, 180818, 180826, 180832, 180838); diff --git a/sql/world/base/dungeon_blackwing_lair.sql b/sql/world/base/dungeon_blackwing_lair.sql index 906a61e..594dfe2 100644 --- a/sql/world/base/dungeon_blackwing_lair.sql +++ b/sql/world/base/dungeon_blackwing_lair.sql @@ -288,3 +288,10 @@ INSERT INTO `reference_loot_template`(`Entry`, `Item`, `Reference`, `Chance`, `Q (30551, 19382, 0, 0.0, 0, 1, 1, 1,1), (30330, 30171, 30171, 100.0, 0, 1, 0, 1, 1), (30105, 30044, 30044, 100.0, 0, 1, 0, 1 ,1); + +/* Classic nefarian head quest locale fix for non EN langs */ +/* Was set as Garrosh, correct warchief is Thrall */ +UPDATE `quest_template_locale` SET `Objectives` = 'Bringt Thrall in Orgrimmar den Kopf von Nefarian.' WHERE `ID` = 7783 AND `locale` = 'deDE'; +UPDATE `quest_template_locale` SET `Objectives` = 'Lleva la cabeza de Nefarian a Thrall a Orgrimmar.' WHERE `ID` = 7783 AND `locale` = 'esES'; +UPDATE `quest_template_locale` SET `Objectives` = 'Lleva la cabeza de Nefarian a Thrall a Orgrimmar.' WHERE `ID` = 7783 AND `locale` = 'esMX'; +UPDATE `quest_template_locale` SET `Objectives` = 'Apportez la tête de Nefarian à Thrall à Orgrimmar.' WHERE `ID` = 7783 AND `locale` = 'frFR'; diff --git a/sql/world/base/si.sql b/sql/world/base/si.sql index 90819db..91c225e 100644 --- a/sql/world/base/si.sql +++ b/sql/world/base/si.sql @@ -255,6 +255,8 @@ INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, -- Lieutenants, Investigate the Scourge UPDATE `quest_template` SET `AllowableRaces` = 1101 WHERE `ID` IN (9260, 9261, 9262); -- Stormwind, Ironforge, Darnassus, Exodar(12817) UPDATE `quest_template` SET `AllowableRaces` = 690 WHERE `ID` IN (9263, 9264, 9265); -- Orgrimmar, Thunder Bluff, Undercity, Silvermoon(12816) +UPDATE `quest_template` SET `Flags` = 8, `RequiredNpcOrGo1` = 0 WHERE `ID` IN (9260, 9261, 9262, 9263, 9264, 9265); +UPDATE `quest_template_addon` SET `SpecialFlags` = 0 WHERE `ID` IN (9260, 9261, 9262, 9263, 9264, 9265); UPDATE `creature_template` SET `npcflag` = 2 WHERE `entry` IN (16478, 16484, 16490, 16493, 16494, 16495); UPDATE `creature_template` SET `npcflag` = 0 WHERE `entry` IN (29441, 29442); -- there are no scourge outside Exodar and Silvermoon. @@ -329,12 +331,12 @@ UPDATE `quest_request_items` SET `CompletionText` = 'Have you investigated the i UPDATE `quest_request_items` SET `CompletionText` = 'You\'ve come to join our order, have you not?' WHERE `ID` = 9154; -- Alliance Quartermaster and Horde Outfitter Quests -UPDATE `quest_template` SET `QuestDescription` = 'If you bring me thirty necrotic runes, I will give you your choice of hand protection in return. These should prove valuable in our fight against the undead Scourge.' WHERE `ID` IN (9094, 9333); -UPDATE `quest_template` SET `QuestDescription` = 'If you bring me eight necrotic runes from the Scourge invaders, I can give you a consecrated sharpening stone. It should be of great help in your battle against the minions of the Lich King.' WHERE `ID` IN (9317, 9335); -UPDATE `quest_template` SET `QuestDescription` = 'In exchange for the necrotic runes of the Scourge invaders, the Argent Dawn will give you one vial of blessed wizard oil.' WHERE `ID` IN (9318, 9334); -UPDATE `quest_template` SET `QuestDescription` = 'In addition to our other supplies, we also have a number of major healing potions you may find useful. I will give you one in exchange for fifteen necrotic runes.' WHERE `ID` IN (9321, 9336); -UPDATE `quest_template` SET `QuestDescription` = 'In addition to our other supplies, we also have a number of major mana potions you may find useful. I will give you one in exchange for fifteen necrotic runes.' WHERE `ID` IN (9320, 9337); -UPDATE `quest_template` SET `QuestDescription` = 'You have aided our cause greatly, $N. If you wish, I can make available the tabard of the Argent Dawn. We are proud to have you among our allies.' WHERE `ID` IN (9341, 9343); +UPDATE `quest_template` SET `LogDescription` = 'Collect 30 Necrotic Runes.', `QuestDescription` = 'If you bring me thirty necrotic runes, I will give you your choice of hand protection in return. These should prove valuable in our fight against the undead Scourge.' WHERE `ID` IN (9094, 9333); +UPDATE `quest_template` SET `LogDescription` = 'Collect 8 Necrotic Runes.', `QuestDescription` = 'If you bring me eight necrotic runes from the Scourge invaders, I can give you a consecrated sharpening stone. It should be of great help in your battle against the minions of the Lich King.' WHERE `ID` IN (9317, 9335); +UPDATE `quest_template` SET `LogDescription` = 'Collect 8 Necrotic Runes.', `QuestDescription` = 'In exchange for the necrotic runes of the Scourge invaders, the Argent Dawn will give you one vial of blessed wizard oil.' WHERE `ID` IN (9318, 9334); +UPDATE `quest_template` SET `LogDescription` = 'Collect 15 Necrotic Runes.', `QuestDescription` = 'In addition to our other supplies, we also have a number of major healing potions you may find useful. I will give you one in exchange for fifteen necrotic runes.' WHERE `ID` IN (9321, 9336); +UPDATE `quest_template` SET `LogDescription` = 'Collect 15 Necrotic Runes.', `QuestDescription` = 'In addition to our other supplies, we also have a number of major mana potions you may find useful. I will give you one in exchange for fifteen necrotic runes.' WHERE `ID` IN (9320, 9337); +UPDATE `quest_template` SET `LogDescription` = 'Collect 10 Necrotic Runes.', `QuestDescription` = 'You have aided our cause greatly, $N. If you wish, I can make available the tabard of the Argent Dawn. We are proud to have you among our allies.' WHERE `ID` IN (9341, 9343); DELETE FROM `quest_offer_reward` WHERE `ID` IN (9094, 9317, 9318, 9321, 9337, 9341, -- Alliance diff --git a/sql/world/base/vanilla_creature_values.sql b/sql/world/base/vanilla_creature_values.sql index e2909de..60b35e5 100644 --- a/sql/world/base/vanilla_creature_values.sql +++ b/sql/world/base/vanilla_creature_values.sql @@ -18357,6 +18357,7 @@ UPDATE `creature_template` SET `subname` = 'Mount Vendor', `DamageModifier` = 1. /* Sergeant Major Clate */ UPDATE `creature_template` SET `subname` = 'Food and Drink', `DamageModifier` = 2.15, `ArmorModifier` = 2.6 WHERE `entry`=12785; +UPDATE `creature_template_locale` SET `Title` = 'Nourriture et boissons' WHERE `entry` = 12785 AND `locale` = 'frFR'; /* Guard Quine */ UPDATE `creature_template` SET `DamageModifier` = 3.05, `ArmorModifier` = 1.15 WHERE `entry`=12786; @@ -18384,9 +18385,11 @@ UPDATE `creature_template` SET `subname` = 'Officer Accessories Quartermaster', /* Stone Guard Zarg */ UPDATE `creature_template` SET `subname` = 'Food and Drink', `DamageModifier` = 1.05, `RangeAttackTime` = 1606 WHERE `entry`=12794; +UPDATE `creature_template_locale` SET `Title` = 'Nourriture et boissons' WHERE `entry` = 12794 AND `locale` = 'frFR'; /* First Sergeant Hola'mahi */ UPDATE `creature_template` SET `subname` = 'Reagent Vendor', `DamageModifier` = 1.2, `RangeAttackTime` = 1551 WHERE `entry`=12795; +UPDATE `creature_template_locale` SET `Title` = 'Marchand de composants' WHERE `entry` = 12795 AND `locale` = 'frFR'; /* Raider Bork */ UPDATE `creature_template` SET `subname` = 'Mount Quartermaster', `speed_run` = 1.14286, `DamageModifier` = 1.05, `RangeAttackTime` = 1606 WHERE `entry`=12796; diff --git a/sql/world/base/zone_orgrimmar.sql b/sql/world/base/zone_orgrimmar.sql index 3cb0c2c..6e7b614 100644 --- a/sql/world/base/zone_orgrimmar.sql +++ b/sql/world/base/zone_orgrimmar.sql @@ -327,6 +327,7 @@ UPDATE `creature_template` SET `subname`='Zeppelin Master' WHERE `entry`=12136; -- Legionnaire Teena UPDATE `creature_template` SET `subname`=NULL, `npcflag`=0, `faction`=85 WHERE `entry`=12788; +UPDATE `creature_template_locale` SET `Title` = NULL WHERE `entry` = 12788; -- Lady Palanseer UPDATE `creature_template` SET `minlevel`=55, `maxlevel`=55 WHERE `entry`=12792; diff --git a/sql/world/base/zone_stormwind.sql b/sql/world/base/zone_stormwind.sql index 197e9f0..4e8fb11 100644 --- a/sql/world/base/zone_stormwind.sql +++ b/sql/world/base/zone_stormwind.sql @@ -249,6 +249,7 @@ UPDATE `creature_template` SET `subname`='Weapon Crafter' WHERE `entry`=7232; -- Lieutenant Rachel Vaccar UPDATE `creature_template` SET `subname`=NULL, `minlevel`=55, `maxlevel`=55, `npcflag`=0 WHERE `entry`=12778; +UPDATE `creature_template_locale` SET `Title` = NULL WHERE `entry` = 12778; -- Master Sergeant Biggins UPDATE `creature_template` SET `subname`='Officer Accessories Quartermaster' WHERE `entry`=12781; diff --git a/sql/world/base/zz_optional_small_group_adjustments.sql b/sql/world/base/zz_optional_small_group_adjustments.sql index 8d724dd..0f22ded 100644 --- a/sql/world/base/zz_optional_small_group_adjustments.sql +++ b/sql/world/base/zz_optional_small_group_adjustments.sql @@ -26,3 +26,26 @@ UPDATE `item_template` SET `spellcooldown_1` = 0, `spellcategorycooldown_1` = 0 DELETE FROM `creature` WHERE `guid` IN (56628, 56619, 56622, 56610); DELETE FROM `creature_formations` WHERE `memberGUID` IN (56628, 56619, 56622, 56610); DELETE FROM `linked_respawn` WHERE `guid` IN (56628, 56619, 56622, 56610); + +/* -- Restore Firesworn in Garr fight (if needed) -- */ +/* DELETE FROM `creature` WHERE `guid` IN (56628, 56619, 56622, 56610); +INSERT INTO `creature` (`guid`,`id1`,`id2`,`id3`,`map`,`zoneId`,`areaId`,`spawnMask`,`phaseMask`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`wander_distance`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`,`ScriptName`,`VerifiedBuild`,`CreateObject`,`Comment`) VALUES +(56619,12099,0,0,409,0,0,1,1,0,693.192,-494.994,-214.185,0,7200,0,0,61040,0,0,0,0,0,'',0,0,NULL), +(56610,12099,0,0,409,0,0,1,1,0,688.943,-508.177,-214.46,4.83456,7200,0,0,61040,0,0,0,0,0,'',0,0,NULL), +(56622,12099,0,0,409,0,0,1,1,0,683.891,-496.467,-213.892,6.02003,7200,0,0,61040,0,0,0,0,0,'',0,0,NULL), +(56628,12099,0,0,409,0,0,1,1,0,698.831,-507.815,-214.691,6.02004,7200,0,0,61040,0,0,0,0,0,'',0,0,NULL); + +DELETE FROM `creature_formations` WHERE `memberGUID` IN (56628, 56619, 56622, 56610); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(56609,56610,10,45,514,0,0), +(56609,56619,10,135,514,0,0), +(56609,56622,10,225,514,0,0), +(56609,56628,10,315,514,0,0); + +DELETE FROM `linked_respawn` WHERE `guid` IN (56628, 56619, 56622, 56610); +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(56610,56609,0), +(56619,56609,0), +(56622,56609,0), +(56628,56609,0); +*/ diff --git a/sql/world/base/zz_optional_vanilla_models.sql b/sql/world/base/zz_optional_vanilla_models.sql index 4954207..e648efc 100644 --- a/sql/world/base/zz_optional_vanilla_models.sql +++ b/sql/world/base/zz_optional_vanilla_models.sql @@ -3,6 +3,7 @@ There are a few exceptions due to some Vanilla models being removed from the game files. */ +UPDATE `creature_template_model` SET `CreatureDisplayID`= 6630 WHERE `CreatureID`= 14387 AND `Idx`= 0; UPDATE `creature_template_model` SET `CreatureDisplayID`=143 WHERE `CreatureID`=29 AND `Idx`=0; UPDATE `creature_template_model` SET `CreatureDisplayID`=604 WHERE `CreatureID`=69 AND `Idx`=0; UPDATE `creature_template_model` SET `CreatureDisplayID`=732 WHERE `CreatureID`=201 AND `Idx`=0; diff --git a/sql/world/base/zz_optional_vanilla_phasing.sql b/sql/world/base/zz_optional_vanilla_phasing.sql index f1232a2..f51759b 100644 --- a/sql/world/base/zz_optional_vanilla_phasing.sql +++ b/sql/world/base/zz_optional_vanilla_phasing.sql @@ -3,6 +3,25 @@ This includes quest givers and flight paths. */ +/* 1.7 - Zul Gurub */ +/* Zul Gurub meeting stone phased until appropriate phase */ +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_preaq' WHERE `map` = 0 AND `zoneId` = 33 AND `id` IN (185433); + +/* 1.9 - AQ */ +/* AQ meeting stone phased until pre-aq phase (at least) */ +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_preaq' WHERE `map` = 1 AND `id` IN (185322); + +/* 1.11 - Naxxramas */ +/* Naxx Vanilla meeting stone phased until appropriate phase */ +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_naxx40' WHERE `map` = 0 AND `id` IN (193166); + +/* Flight masters at Ratchet and Marshal's Refuge were originally added in patch 1.11 - disabled by default, because most players will expect these npcs to be there */ +/* UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_naxx40' WHERE `entry` IN ( +10583, -- Gryfe, Marshal's Refuge, Flight Master +16227 -- Bragok, Ratchet, Flight Master +); */ + +/* 2.0+ - NPCs/Gobjects added in Eastern/Kalimdor during TBC pre-patch or more */ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN ( 11701, -- Mor'Vek, Un'Goro 16288, -- Advisor Sorrelon, The Sepulcher @@ -11,17 +30,40 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN ( 17094, -- Nemeth Hawkeye, Grom'gol Base Camp 17095, -- Balandar Brightstar, Brackenwall Village 17097, -- Advisor Sarophas, Kargath +17098, -- Ambassador Dawnsinger, Orgrimmar 17099, -- Mehlar Dawnblade, The Bulwark 17103, -- Emissary Taluun, Stormwind +17104, -- Anchorite Delan, Darkshire 17106, -- Vindicator Palanaar, Astranaar 17109, -- Cersei Dusksinger, Stonard 17119, -- Ithania, North Point Tower -17104, -- Anchorite Delan, Darkshire 17218, -- Huraan, Southshore 17223, -- Ambassador Rualeth, Aerie Peak 17238, -- Anchorite Truuen, Western Plaguelands 22931, -- Gorrim, Emerald Sanctuary, Flight Master +23131, -- Blood Knight Honor Guard, Orgrimmar 24366, -- Nizzle, Rebel Camp, Flight Master +24924, -- Sky-Captain Bomblast, Zep +24926, -- Chief Officer Brassbolt, Zep +24927, -- Navigator Sparksizzle, Zep +24929, -- Crewman Crosswire, Zep +24930, -- Crewman Gazzlegear, Zep +24931, -- Crewman Fastwrench, Zep +24934, -- Snack-O-Matic IV, Zep +24935, -- Vend-O-Tron D-Luxe, Zep +25070, -- Chief Officer Coppernut, Zep +25071, -- Crewman Rusthammer, Zep +25072, -- Crewman Quickfix, Zep +25074, -- Crewman Sparkfly, Zep +25075, -- Zeppelin Controls, Zep +25076, -- Navigator Fairweather, Zep +25077, -- Sky-Captain Cloudkicker, Zep +25100, -- Chief Officer Hammerflange, Zep +25101, -- Crewman Cutpipe, Zep +25102, -- Crewman Spinshaft, Zep +25103, -- Crewman Boltshine, Zep +25104, -- Navigator Hatch, Zep +25105, -- Sky-Captain Cableclamp, Zep 27705, -- Lorrin Foxfire, Stonard 29093, -- Ian Drake, Stormwind 29095, -- Edward Cairn, Undercity @@ -34,39 +76,29 @@ UPDATE `creature` SET `ScriptName` = 'npc_ipp_tbc' WHERE `id1` IN ( 19850 -- Councilor Arial D'Anastasis ) AND `map` = 1; -- Orgrimmar only -UPDATE `creature` SET `ScriptName` = 'npc_ipp_tbc' WHERE `id1` = 19848 -- Harbinger Ennarth -AND `map` = 0; -- Stormwind only +UPDATE `creature` SET `ScriptName` = 'npc_ipp_tbc' WHERE `id1` IN ( +19848 -- Harbinger Ennarth +) AND `map` = 0; -- Stormwind only --- fix bad phasing for Wrathscale Myrmidon, Azuremyst Isle +/* Fix bad phasing for Wrathscale Myrmidon, Azuremyst Isle */ UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` = 17194; --- the flight masters at Ratchet and Marshal's Refuge were originally added in patch 1.11 - disabled by default, because most players will expect these npcs to be there -/* UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_naxx40' WHERE `entry` IN ( -10583, -- Gryfe, Marshal's Refuge, Flight Master -16227 -- Bragok, Ratchet, Flight Master -); */ +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' +WHERE `map` = 0 AND `id` = 184463; -- Karazhan meeting stone --- Outland map outside Dark Portal +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' +WHERE `map` = 1 AND `id` = 182560; -- Time cavern meeting stone + +/* Outland map outside Dark Portal */ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `guid` = 42457; --- remove interactions between Cersei, Lorrin and the orcs in Stonard +/* Remove interactions between Cersei, Lorrin and the orcs in Stonard */ UPDATE `creature_template` SET `AIName` = '' WHERE `entry` IN (12807, 17109, 27705); --- hide Rogg and his anvil + forge at the entrance of Orgrimmar until WotLK -UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` = 37072; -UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN (347, 387); - --- hide mailboxes, see: https://www.wowhead.com/classic/object=32349/mailbox +/* Hide mailboxes, see: https://www.wowhead.com/classic/object=32349/mailbox */ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `guid` = 49832; -- Darnassus -UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN ( -150747, 150748, 150749, 150750, 150751, 150752, 150753, 150755, -- Orgrimmar -100500, 100501, 100502, 100503, 268683, -- Undercity -932, 933, 100156, 100157, 100158, 100159, 100505, 100506, 150736, 150737, 150738, 150740, 150742, 150743, 150744, 150746, 151239, -- Stormwind -121574 -- Darnassus -); - --- hide guild vaults until TBC (was introduced during 2.3) - disabled by default, because most players will expect these gobject to be there +/* Hide guild vaults until TBC (was introduced during 2.3) - disabled by default, because most players will expect these gobject to be there */ /* UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `guid` IN ( 12496, 12497, 20621, @@ -81,3 +113,34 @@ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN ( 49095, 50356, 50357 ); */ + +/* 3.0+ - NPCs/Gobjects added in Eastern/Kalimdor during WotLK pre-patch or more */ +UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` IN ( +26537, -- Greeb Ramrocket, Zep +26539, -- Meefi Farthrottle, Zep +29346, -- Apothecary Karlov, Orgrimmar +31704, -- Crewman Spinwheel, Zep +31705, -- Crewman Coilspan, Zep +31706, -- Crewman Stembolt, Zep +31716, -- Sky-Captain Cryoflight, Zep +31720, -- Crewman Shubbscoop, Zep +31723, -- Crewman Barrowswizzle, Zep +31724, -- Crewman Paltertop, Zep +31725 -- Sky-Captain LaFontaine, Zep +); + +/* Hide mailboxes, see: https://www.wowhead.com/classic/object=32349/mailbox */ +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN ( +150747, 150748, 150749, 150750, 150751, 150752, 150753, 150755, -- Orgrimmar +100500, 100501, 100502, 100503, 268683, -- Undercity +932, 933, 100156, 100157, 100158, 100159, 100505, 100506, 150736, 150737, 150738, 150740, 150742, 150743, 150744, 150746, 151239, -- Stormwind +121574 -- Darnassus +); + +/* Hide Rogg and his anvil + forge at the entrance of Orgrimmar until WotLK */ +UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` = 37072; +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN (347, 387); + +/* Hide barber in Kalimdor/Eastern Kingdom/Outland until WotLK - disabled by default, because most players will expect barbers to be there */ +/* UPDATE `creature` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `map` IN (0, 1, 530) AND `id1` IN (29139, 29141, 29142, 29143, 29145); +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `map` IN (0, 1, 530) AND `id` IN (190683, 190684, 190697, 190698, 190699, 190704, 190710, 190711, 190712, 191028, 191029, 191030); */ diff --git a/src/IndividualProgression.cpp b/src/IndividualProgression.cpp index c182fdb..4ab8391 100644 --- a/src/IndividualProgression.cpp +++ b/src/IndividualProgression.cpp @@ -45,11 +45,11 @@ void IndividualProgression::CheckAdjustments(Player* player) const { return; } - if (!hasPassedProgression(player, PROGRESSION_NAXX40) || (!hasPassedProgression(player, PROGRESSION_NAXX40) && (player->GetLevel() < 61))) + if (!hasPassedProgression(player, PROGRESSION_NAXX40) || (!hasPassedProgression(player, PROGRESSION_NAXX40) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { AdjustVanillaStats(player); } - else if (!hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if (!hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { AdjustTBCStats(player); } @@ -70,8 +70,8 @@ void IndividualProgression::ApplyGearStatsTuning(Player* player, float& computed { if (item->Quality != ITEM_QUALITY_EPIC) // Non-endgame gear is okay return; - if ((hasPassedProgression(player, PROGRESSION_NAXX40) && (item->RequiredLevel <= 60)) || - (hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (item->RequiredLevel <=70))) + if ((hasPassedProgression(player, PROGRESSION_NAXX40) && (item->RequiredLevel <= IP_LEVEL_VANILLA)) || + (hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (item->RequiredLevel <= IP_LEVEL_TBC))) { computedAdjustment -= (100.0f * previousGearTuning); } @@ -81,8 +81,8 @@ void IndividualProgression::ComputeGearTuning(Player* player, float& computedAdj { if (item->Quality != ITEM_QUALITY_EPIC) // Non-endgame gear is okay return; - if ((hasPassedProgression(player, PROGRESSION_NAXX40) && (item->RequiredLevel <= 60)) || - (hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (item->RequiredLevel <=70))) + if ((hasPassedProgression(player, PROGRESSION_NAXX40) && (item->RequiredLevel <= IP_LEVEL_VANILLA)) || + (hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (item->RequiredLevel <= IP_LEVEL_TBC))) { computedAdjustment += previousGearTuning; } diff --git a/src/IndividualProgression.h b/src/IndividualProgression.h index 440c0d9..1140bf9 100644 --- a/src/IndividualProgression.h +++ b/src/IndividualProgression.h @@ -21,6 +21,13 @@ typedef std::unordered_map questXpMapType; +enum ProgressionLevelThreshold +{ + IP_LEVEL_VANILLA = 60, + IP_LEVEL_TBC = 70, + IP_LEVEL_WOTLK = 80 +}; + enum ProgressionBossIDs { RAGNAROS = 11502, diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index 171c36a..afb920f 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -201,16 +201,16 @@ public: if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC)) { - if (sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) > 60) + if (sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) > IP_LEVEL_VANILLA) { - maxPlayerLevel = 60; + maxPlayerLevel = IP_LEVEL_VANILLA; } } else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) { - if (sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) > 70) + if (sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) > IP_LEVEL_TBC) { - maxPlayerLevel = 70; + maxPlayerLevel = IP_LEVEL_TBC; } } } @@ -242,9 +242,9 @@ public: return false; } // Player is still in Vanilla content - give money at 60 level cap - return ((!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && player->GetLevel() == 60) || + return ((!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && player->GetLevel() == IP_LEVEL_VANILLA) || // Player is in TBC content - give money at 70 level cap - (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && player->GetLevel() == 70)); + (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && player->GetLevel() == IP_LEVEL_TBC)); } void OnPlayerAfterUpdateMaxHealth(Player* player, float& value) override @@ -261,7 +261,7 @@ public: sIndividualProgression->ComputeGearTuning(player, gearAdjustment, item->GetTemplate()); } // Player is still in Vanilla content - give Vanilla health adjustment - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { float adjustmentAmount = 1.0f - sIndividualProgression->vanillaHealthAdjustment; float applyPercent = ((player->GetLevel() - 10.0f) / 50.0f); @@ -269,7 +269,7 @@ public: value *= computedAdjustment; } // Player is in TBC content - give TBC health adjustment - else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { value *= (sIndividualProgression->tbcHealthAdjustment - gearAdjustment); } @@ -304,7 +304,7 @@ public: return; } // Player is still in Vanilla content - do not give XP past level 60 - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && player->GetLevel() >= 60) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && player->GetLevel() >= IP_LEVEL_VANILLA) { // Still award XP to pets - they won't be able to pass the player's level Pet* pet = player->GetPet(); @@ -313,7 +313,7 @@ public: amount = 0; } // Player is in TBC content - do not give XP past level 70 - else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && player->GetLevel() >= 70) + else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && player->GetLevel() >= IP_LEVEL_TBC) { // Still award XP to pets - they won't be able to pass the player's level Pet* pet = player->GetPet(); @@ -420,7 +420,7 @@ public: { return false; } - if (instanceTemplate->Parent == MAP_NORTHREND && mapid == MAP_NAXXRAMAS && player->GetLevel() < 71 && !isAttuned(player)) + if (instanceTemplate->Parent == MAP_NORTHREND && mapid == MAP_NAXXRAMAS && player->GetLevel() <= IP_LEVEL_TBC && !isAttuned(player)) { return false; } @@ -531,29 +531,8 @@ public: { switch (newArea) { case AREA_DARKSHORE: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_GROVE_OF_THE_ANCIENTS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_WILDBEND_RIVER: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_TWILIGHT_VALE: if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) { @@ -563,47 +542,8 @@ public: } break; case AREA_SILITHUS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE_II, false); - } - break; case AREA_HIVE_ASHI: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE_II, false); - } - break; case AREA_HIVE_ZORA: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE_II, false); - } - break; case AREA_HIVE_REGAL: if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR))) { @@ -619,37 +559,9 @@ public: } break; case AREA_BOUGH_SHADOW: - if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_SERADANE: - if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_DREAM_BOUGH: - if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_JADEMIR_LAKE: - if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA)) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_TWILIGHT_GROVE: if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA)) { @@ -659,126 +571,40 @@ public: } break; case AREA_DUROTAR: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_ROCKTUSK_FARM: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_TIRISFAL_GLADES: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_RUINS_OF_LORDAERON: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_MULGORE: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_VALLEY_OF_HEROES: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_ELWYNN_FOREST: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_DUN_MOROGH: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_TELDRASSIL: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_EASTERN_PLAGUELANDS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_PESTILENT_SCAR: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_THE_MARRIS_STEAD: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_BLASTED_LANDS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_RISE_OF_THE_DEFILER: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_DREADMAUL_HOLD: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; case AREA_DREADMAUL_POST: + case AREA_SERPENTS_COIL: + case AREA_TANARIS: + case AREA_GADGETZAN: + case AREA_ABYSSAL_SANDS: + case AREA_BROKEN_PILLAR: + case AREA_WINTERSPRING: + case AREA_TIMBERMAW_POST: + case AREA_FROSTSABER_ROCK: + case AREA_ICE_THISTLE_HILLS: + case AREA_MAZTHORIL: + case AREA_AZSHARA: + case AREA_HALDARR_ENCAMPMENT: + case AREA_THE_SHATTERED_STRAND: + case AREA_SOUTHRIDGE_BEACH: + case AREA_BURNING_STEPPES: + case AREA_DRACO_DAR: + case AREA_BLACKROCK_MOUNTAIN: + case AREA_DREADMAUL_ROCK: + case AREA_RUINS_OF_THAURISSAN: if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) { player->RemoveAura(IPP_PHASE); @@ -798,158 +624,6 @@ public: player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); player->CastSpell(player, IPP_PHASE_II, false); - } - break; - case AREA_SERPENTS_COIL: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_TANARIS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_GADGETZAN: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_ABYSSAL_SANDS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_BROKEN_PILLAR: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_WINTERSPRING: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_TIMBERMAW_POST: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_FROSTSABER_ROCK: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_ICE_THISTLE_HILLS: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_MAZTHORIL: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_AZSHARA: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_HALDARR_ENCAMPMENT: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_THE_SHATTERED_STRAND: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_SOUTHRIDGE_BEACH: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_BURNING_STEPPES: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_DRACO_DAR: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_BLACKROCK_MOUNTAIN: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_DREADMAUL_ROCK: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - } - break; - case AREA_RUINS_OF_THAURISSAN: - if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); } break; case AREA_LIGHTS_HOPE: @@ -1031,15 +705,15 @@ public: return; } - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { rDungeonId = RDF_CLASSIC; } - else if ((rDungeonId == RDF_WRATH_OF_THE_LICH_KING && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if ((rDungeonId == RDF_WRATH_OF_THE_LICH_KING && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { rDungeonId = RDF_THE_BURNING_CRUSADE; } - else if ((rDungeonId == RDF_WRATH_OF_THE_LICH_KING_HEROIC && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if ((rDungeonId == RDF_WRATH_OF_THE_LICH_KING_HEROIC && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5)) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { rDungeonId = RDF_THE_BURNING_CRUSADE_HEROIC; } @@ -1257,11 +931,11 @@ private: return; } - if (!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_PRE_TBC) || ((!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_PRE_TBC)) && (pet->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_PRE_TBC) || ((!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_PRE_TBC)) && (pet->GetLevel() <= IP_LEVEL_VANILLA))) { AdjustVanillaStats(pet); } - else if (!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_TBC_TIER_5) || ((!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_TBC_TIER_5)) && (pet->GetLevel() < 71))) + else if (!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_TBC_TIER_5) || ((!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_TBC_TIER_5)) && (pet->GetLevel() <= IP_LEVEL_TBC))) { AdjustTBCStats(pet); } @@ -1357,11 +1031,11 @@ public: } Player* player = isPet ? healer->GetOwner()->ToPlayer() : healer->ToPlayer(); float gearAdjustment = computeTotalGearTuning(player); - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { heal *= (sIndividualProgression->ComputeVanillaAdjustment(player->GetLevel(), sIndividualProgression->vanillaHealingAdjustment) - gearAdjustment); } - else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { heal *= (sIndividualProgression->tbcHealingAdjustment - gearAdjustment); } @@ -1382,11 +1056,11 @@ public: } Player* player = isPet ? attacker->GetOwner()->ToPlayer() : attacker->ToPlayer(); float gearAdjustment = computeTotalGearTuning(player); - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { damage *= (sIndividualProgression->ComputeVanillaAdjustment(player->GetLevel(), sIndividualProgression->vanillaPowerAdjustment) - gearAdjustment); } - else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { damage *= (sIndividualProgression->tbcPowerAdjustment - gearAdjustment); } @@ -1408,11 +1082,11 @@ public: } Player* player = isPet ? attacker->GetOwner()->ToPlayer() : attacker->ToPlayer(); float gearAdjustment = computeTotalGearTuning(player); - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { damage *= (sIndividualProgression->ComputeVanillaAdjustment(player->GetLevel(), sIndividualProgression->vanillaPowerAdjustment) - gearAdjustment); } - else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { damage *= (sIndividualProgression->tbcPowerAdjustment - gearAdjustment); } @@ -1443,11 +1117,11 @@ public: } Player* player = isPet ? attacker->GetOwner()->ToPlayer() : attacker->ToPlayer(); float gearAdjustment = computeTotalGearTuning(player); - if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() < 61))) + if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC) && (player->GetLevel() <= IP_LEVEL_VANILLA))) { damage *= (sIndividualProgression->ComputeVanillaAdjustment(player->GetLevel(), sIndividualProgression->vanillaPowerAdjustment) - gearAdjustment); } - else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() < 71))) + else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) || (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5) && (player->GetLevel() <= IP_LEVEL_TBC))) { damage *= (sIndividualProgression->tbcPowerAdjustment - gearAdjustment); } diff --git a/src/naxx40Scripts/custom_gameobjects_40.cpp b/src/naxx40Scripts/custom_gameobjects_40.cpp index 53606ef..a960c65 100644 --- a/src/naxx40Scripts/custom_gameobjects_40.cpp +++ b/src/naxx40Scripts/custom_gameobjects_40.cpp @@ -51,7 +51,7 @@ public: bool OnGossipHello(Player* player, GameObject* /*go*/) override { - if (((!sIndividualProgression->requireNaxxStrath || player->GetQuestStatus(NAXX40_ENTRANCE_FLAG) == QUEST_STATUS_REWARDED) && isAttuned(player)) || (isExcludedFromProgression(player) && (player->GetLevel() < 71))) + if (((!sIndividualProgression->requireNaxxStrath || player->GetQuestStatus(NAXX40_ENTRANCE_FLAG) == QUEST_STATUS_REWARDED) && isAttuned(player)) || (isExcludedFromProgression(player) && (player->GetLevel() <= IP_LEVEL_TBC))) { player->SetRaidDifficulty(RAID_DIFFICULTY_10MAN_HEROIC); player->TeleportTo(533, 3005.51f, -3434.64f, 304.195f, 6.2831f); diff --git a/src/vanillaScripts/instance_onyxias_lair.cpp b/src/vanillaScripts/instance_onyxias_lair.cpp index ec6ac84..e2008bf 100644 --- a/src/vanillaScripts/instance_onyxias_lair.cpp +++ b/src/vanillaScripts/instance_onyxias_lair.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "IndividualProgression.h" #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "SpellInfo.h" @@ -135,7 +136,7 @@ public: bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override { - if (player->GetLevel() < 80) + if (player->GetLevel() < IP_LEVEL_WOTLK) { player->SetRaidDifficulty(RAID_DIFFICULTY_10MAN_HEROIC); player->TeleportTo(249, 29.1607f, -71.3372f, -8.18032f, 4.58f); From db2183bf151c9af618c0e2f822076c96945edc3f Mon Sep 17 00:00:00 2001 From: valsan-azerty-boi <52854501+valsan-azerty-boi@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:25:29 +0200 Subject: [PATCH 2/4] fix white spaces --- src/IndividualProgressionPlayer.cpp | 86 ++++++++++++++--------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index afb920f..848b0ef 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -337,15 +337,15 @@ public: 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)) - { + (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 @@ -530,7 +530,7 @@ public: void OnPlayerUpdateArea(Player* player, uint32 /*oldArea*/, uint32 newArea) override { switch (newArea) { - case AREA_DARKSHORE: + case AREA_DARKSHORE: case AREA_GROVE_OF_THE_ANCIENTS: case AREA_WILDBEND_RIVER: case AREA_TWILIGHT_VALE: @@ -540,8 +540,8 @@ public: player->RemoveAura(IPP_PHASE_II); player->CastSpell(player, IPP_PHASE, false); } - break; - case AREA_SILITHUS: + break; + case AREA_SILITHUS: case AREA_HIVE_ASHI: case AREA_HIVE_ZORA: case AREA_HIVE_REGAL: @@ -557,7 +557,7 @@ public: player->RemoveAura(IPP_PHASE_II); player->CastSpell(player, IPP_PHASE_II, false); } - break; + break; case AREA_BOUGH_SHADOW: case AREA_SERADANE: case AREA_DREAM_BOUGH: @@ -645,44 +645,44 @@ public: break; default: - uint32 mapid = player->GetMapId(); - - if (mapid == MAP_SHADOWFANG_KEEP && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) + uint32 mapid = player->GetMapId(); + + if (mapid == MAP_SHADOWFANG_KEEP && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); player->CastSpell(player, IPP_PHASE, false); break; - } - if (mapid == MAP_RAZORFEN_DOWNS && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) + } + if (mapid == MAP_RAZORFEN_DOWNS && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) { player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - break; - } - if (mapid == MAP_SCARLET_MONASTERY && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - break; - } - if (mapid == MAP_STRATHOLME && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - break; - } - if (mapid == MAP_DIRE_MAUL && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) - { - player->RemoveAura(IPP_PHASE); - player->RemoveAura(IPP_PHASE_II); - player->CastSpell(player, IPP_PHASE, false); - break; - } - + player->RemoveAura(IPP_PHASE_II); + player->CastSpell(player, IPP_PHASE, false); + break; + } + if (mapid == MAP_SCARLET_MONASTERY && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) + { + player->RemoveAura(IPP_PHASE); + player->RemoveAura(IPP_PHASE_II); + player->CastSpell(player, IPP_PHASE, false); + break; + } + if (mapid == MAP_STRATHOLME && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) + { + player->RemoveAura(IPP_PHASE); + player->RemoveAura(IPP_PHASE_II); + player->CastSpell(player, IPP_PHASE, false); + break; + } + if (mapid == MAP_DIRE_MAUL && ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))) + { + player->RemoveAura(IPP_PHASE); + player->RemoveAura(IPP_PHASE_II); + player->CastSpell(player, IPP_PHASE, false); + break; + } + player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); } @@ -930,7 +930,7 @@ private: { return; } - + if (!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_PRE_TBC) || ((!sIndividualProgression->hasPassedProgression(pet->GetOwner(), PROGRESSION_PRE_TBC)) && (pet->GetLevel() <= IP_LEVEL_VANILLA))) { AdjustVanillaStats(pet); @@ -1130,7 +1130,7 @@ public: damage *= 1.0f - gearAdjustment; } } - + }; void AddSC_mod_individual_progression_player() From 505c8ee883c1e31a16d7f37a856dbfe021b41f35 Mon Sep 17 00:00:00 2001 From: Grimfeather <88028633+Grimfeather@users.noreply.github.com> Date: Thu, 12 Jun 2025 10:20:28 +0200 Subject: [PATCH 3/4] Update IndividualProgression.h --- src/IndividualProgression.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/IndividualProgression.h b/src/IndividualProgression.h index 1140bf9..f97e94a 100644 --- a/src/IndividualProgression.h +++ b/src/IndividualProgression.h @@ -24,8 +24,8 @@ typedef std::unordered_map questXpMapType; enum ProgressionLevelThreshold { IP_LEVEL_VANILLA = 60, - IP_LEVEL_TBC = 70, - IP_LEVEL_WOTLK = 80 + IP_LEVEL_TBC = 70, + IP_LEVEL_WOTLK = 80 }; enum ProgressionBossIDs From dd5c12c57fad631d45eccf53ec3e50295e28df6b Mon Sep 17 00:00:00 2001 From: valsan-azerty-boi <52854501+valsan-azerty-boi@users.noreply.github.com> Date: Thu, 12 Jun 2025 13:14:41 +0200 Subject: [PATCH 4/4] move outland map phasing to correct file --- sql/world/base/zone_blasted_lands.sql | 3 +++ sql/world/base/zz_optional_vanilla_phasing.sql | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/world/base/zone_blasted_lands.sql b/sql/world/base/zone_blasted_lands.sql index 87d8265..ea65599 100644 --- a/sql/world/base/zone_blasted_lands.sql +++ b/sql/world/base/zone_blasted_lands.sql @@ -325,3 +325,6 @@ INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `positio (6400190, 1, -11891.9, -3211.69, -14.6478, NULL, 0, 0, 0, 100, 0), (6400190, 2, -11847.1, -3205.97, -28.9958, NULL, 0, 1, 0, 100, 0), (6400190, 3, -11842.5, -3223.27, -28.9624, NULL, 30000, 1, 0, 100, 0); + +/* Outland map outside Dark Portal */ +UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `guid` = 42457; diff --git a/sql/world/base/zz_optional_vanilla_phasing.sql b/sql/world/base/zz_optional_vanilla_phasing.sql index f51759b..5e97e9c 100644 --- a/sql/world/base/zz_optional_vanilla_phasing.sql +++ b/sql/world/base/zz_optional_vanilla_phasing.sql @@ -89,9 +89,6 @@ WHERE `map` = 0 AND `id` = 184463; -- Karazhan meeting stone UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `map` = 1 AND `id` = 182560; -- Time cavern meeting stone -/* Outland map outside Dark Portal */ -UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `guid` = 42457; - /* Remove interactions between Cersei, Lorrin and the orcs in Stonard */ UPDATE `creature_template` SET `AIName` = '' WHERE `entry` IN (12807, 17109, 27705);