fix AQ war issues (#880)

- Chaos and Destruction quest has been changed. 
- Before you get the Chaos and Destruction quest you have to finish 3 quests to kill the hive lords.
- after each hive lord quest you can pick up a quest in the Cenarion Hold from the researchers.
- IPPhase changes are now instant, no longer only on area changes
- the AQ gate opening animation now properly displays
- during the AQ war you have to manually open the AQ gate. it only stays open for 16 minutes
- fixed spawn of Lieutenant General Nokhor
- added 3 Colossal Anubisath Warbringer spawns (more can be added later)
This commit is contained in:
Grimfeather
2025-11-24 17:37:46 +01:00
committed by GitHub
parent d826270885
commit 28de6ca146
10 changed files with 575 additions and 687 deletions

View File

@@ -15,6 +15,16 @@ DELETE FROM `game_event_creature` WHERE `guid` IN (208207, 208240, 208251, 20835
-- remove AzerothCore area triggers used by WotLK Scourge Invasion Event -- remove AzerothCore area triggers used by WotLK Scourge Invasion Event
DELETE FROM `areatrigger_involvedrelation` WHERE `id` IN (4092, 4094, 4095, 4096, 4098, 4099, 4100, 4101, 4103, 4104, 4105, 5151, 5152, 5153, 5154, 5158, 5159, 5160, 5161); DELETE FROM `areatrigger_involvedrelation` WHERE `id` IN (4092, 4094, 4095, 4096, 4098, 4099, 4100, 4101, 4103, 4104, 4105, 5151, 5152, 5153, 5154, 5158, 5159, 5160, 5161);
/* the following edits are temporary */
-- restore AC entries that were wrongly overwritten by AQ war bosses
DELETE FROM `pool_template` WHERE `entry` IN (15813, 15818);
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
(15813,1,'Thousand Needles - Ore Pool - Iron Deposit / Silver Vein / Gold Vein'),
(15818,1,'Thousand Needles - Ore Pool - Iron Deposit / Silver Vein / Gold Vein');
-- undo Shattrath phasing, now done with phasemask -- undo Shattrath phasing, now done with phasemask
UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` IN (18594, 25167, 27666, 27667); UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` IN (18594, 25167, 27666, 27667);

View File

@@ -51,7 +51,7 @@ UPDATE `quest_template_locale` SET `Details` = 'Commençons par le commencement
-- New 'Bang a Gong!' quest. No rewards for completing this version. No mount, no title. Currently the Mallet of Zul'Farrak is required to bang the gong. -- New 'Bang a Gong!' quest. No rewards for completing this version. No mount, no title. Currently the Mallet of Zul'Farrak is required to bang the gong.
-- New 'Chaos and Destruction' quest. Kill Colossus of Zora(15740), Regal(15741) and Ashi(15742) -- New 'Chaos and Destruction' quest. Kill Colossus of Zora(15740), Regal(15741) and Ashi(15742)
DELETE FROM `quest_template` WHERE `ID` IN (108743, 108744); DELETE FROM `quest_template` WHERE `ID` IN (108743, 108744, 108745, 108746, 108747);
INSERT INTO `quest_template` (`ID`, `QuestType`, `QuestLevel`, `MinLevel`, `QuestSortID`, `QuestInfoID`, `SuggestedGroupNum`, `RequiredFactionId1`, `RequiredFactionId2`, `RequiredFactionValue1`, `RequiredFactionValue2`, `RewardNextQuest`, `RewardXPDifficulty`, `RewardMoney`, `RewardMoneyDifficulty`, `RewardDisplaySpell`, `RewardSpell`, `RewardHonor`, `RewardKillHonor`, INSERT INTO `quest_template` (`ID`, `QuestType`, `QuestLevel`, `MinLevel`, `QuestSortID`, `QuestInfoID`, `SuggestedGroupNum`, `RequiredFactionId1`, `RequiredFactionId2`, `RequiredFactionValue1`, `RequiredFactionValue2`, `RewardNextQuest`, `RewardXPDifficulty`, `RewardMoney`, `RewardMoneyDifficulty`, `RewardDisplaySpell`, `RewardSpell`, `RewardHonor`, `RewardKillHonor`,
`StartItem`, `Flags`, `RequiredPlayerKills`, `RewardItem1`, `RewardAmount1`, `RewardItem2`, `RewardAmount2`, `RewardItem3`, `RewardAmount3`, `RewardItem4`, `RewardAmount4`, `ItemDrop1`, `ItemDropQuantity1`, `ItemDrop2`, `ItemDropQuantity2`, `ItemDrop3`, `ItemDropQuantity3`, `ItemDrop4`, `ItemDropQuantity4`, `StartItem`, `Flags`, `RequiredPlayerKills`, `RewardItem1`, `RewardAmount1`, `RewardItem2`, `RewardAmount2`, `RewardItem3`, `RewardAmount3`, `RewardItem4`, `RewardAmount4`, `ItemDrop1`, `ItemDropQuantity1`, `ItemDrop2`, `ItemDropQuantity2`, `ItemDrop3`, `ItemDropQuantity3`, `ItemDrop4`, `ItemDropQuantity4`,
`RewardChoiceItemID1`, `RewardChoiceItemQuantity1`, `RewardChoiceItemID2`, `RewardChoiceItemQuantity2`, `RewardChoiceItemID3`, `RewardChoiceItemQuantity3`, `RewardChoiceItemID4`, `RewardChoiceItemQuantity4`, `RewardChoiceItemID5`, `RewardChoiceItemQuantity5`, `RewardChoiceItemID6`, `RewardChoiceItemQuantity6`, `RewardChoiceItemID1`, `RewardChoiceItemQuantity1`, `RewardChoiceItemID2`, `RewardChoiceItemQuantity2`, `RewardChoiceItemID3`, `RewardChoiceItemQuantity3`, `RewardChoiceItemID4`, `RewardChoiceItemQuantity4`, `RewardChoiceItemID5`, `RewardChoiceItemQuantity5`, `RewardChoiceItemID6`, `RewardChoiceItemQuantity6`,
@@ -60,11 +60,37 @@ INSERT INTO `quest_template` (`ID`, `QuestType`, `QuestLevel`, `MinLevel`, `Ques
`RequiredItemCount1`, `RequiredItemCount2`, `RequiredItemCount3`, `RequiredItemCount4`, `RequiredItemCount5`, `RequiredItemCount6`, `Unknown0`, `ObjectiveText1`, `ObjectiveText2`, `ObjectiveText3`, `ObjectiveText4`, `VerifiedBuild`) VALUES `RequiredItemCount1`, `RequiredItemCount2`, `RequiredItemCount3`, `RequiredItemCount4`, `RequiredItemCount5`, `RequiredItemCount6`, `Unknown0`, `ObjectiveText1`, `ObjectiveText2`, `ObjectiveText3`, `ObjectiveText4`, `VerifiedBuild`) VALUES
(108743, 0, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Simply Bang a Gong!', '', '', NULL, 'Return to The Scarab Gong in Silithus.', 0, 0, 0, 0, 0, 0, 0, 0, 9240, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '', '', '', '', 12340), (108743, 0, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Simply Bang a Gong!', '', '', NULL, 'Return to The Scarab Gong in Silithus.', 0, 0, 0, 0, 0, 0, 0, 0, 9240, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '', '', '', '', 12340),
(108744, 2, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 7, 0, 609, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172800, 0, 'Chaos and Destruction', 'Kill the Colossus of Ashi, Regal and Zora.', '', '', 'Return to Jonathan the Revelator at the Scarab Gong.', 15740, 15741, 15742, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', NULL); (108744, 2, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 7, 0, 609, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Chaos and Destruction', 'Kill Lieutenant General Nokhor, 3 Colossal Anubisath Warbringers and 12 Supreme Anubisath Warbringers.', '', '', 'Return to Jonathan the Revelator at the Scarab Gong.', 15818, 15743, 15758, 0, 1, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', NULL),
(108745, 2, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 7, 0, 609, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Zora', 'Kill the Colossus of Zora.', '', '', 'Return to Jonathan the Revelator at the Scarab Gong.', 15740, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', NULL),
(108746, 2, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 7, 0, 609, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Regal', 'Kill the Colossus of Regal.', '', '', 'Return to Jonathan the Revelator at the Scarab Gong.', 15741, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', NULL),
(108747, 2, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 7, 0, 609, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Ashi', 'Kill the Colossus of Ashi.', '', '', 'Return to Jonathan the Revelator at the Scarab Gong.', 15742, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', NULL);
UPDATE `quest_template` SET `RewardNextQuest` = 108744 WHERE `ID` = 8743; UPDATE `quest_template` SET `RewardNextQuest` = 0 WHERE `ID` = 8743; -- can be removed later
-- update quest texts for the new 'Bang a Gong!' quest DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `ConditionTypeOrReference` = 8 AND `SourceEntry` IN (8286, 8857, 8858, 8859, 108743, 108744, 108745, 108746, 108747);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`,
`ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
--
(19, 0, 8286, 0, 0, 8, 0, 108850, 0, 0, 0, 0, 0, '', 'Quest \'What Tomorrow Brings\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 8286, 0, 1, 8, 0, 108855, 0, 0, 0, 0, 0, '', 'Quest \'What Tomorrow Brings\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 8857, 0, 1, 8, 0, 108747, 0, 0, 0, 0, 0, '', 'Quest \'Secrets of the Colossus - Ashi\' requires the \'Colossus of Ashi\' quest to be completed'),
(19, 0, 8858, 0, 1, 8, 0, 108746, 0, 0, 0, 0, 0, '', 'Quest \'Secrets of the Colossus - Regal\' requires the \'Colossus of Regal\' quest to be completed'),
(19, 0, 8859, 0, 1, 8, 0, 108745, 0, 0, 0, 0, 0, '', 'Quest \'Secrets of the Colossus - Zora\' requires the \'Colossus of Zora\' quest to be completed'),
(19, 0, 108743, 0, 0, 8, 0, 8743, 0, 0, 1, 0, 0, '', 'Quest \'Simply Bang a Gong!\' requires the \'Bang a Gong!\' quest to NOT be completed'),
(19, 0, 108743, 0, 0, 8, 0, 108850, 0, 0, 0, 0, 0, '', 'Quest \'Simply Bang a Gong!\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 108743, 0, 1, 8, 0, 8743, 0, 0, 1, 0, 0, '', 'Quest \'Simply Bang a Gong!\' requires the \'Bang a Gong!\' quest to NOT be completed'),
(19, 0, 108743, 0, 1, 8, 0, 108855, 0, 0, 0, 0, 0, '', 'Quest \'Simply Bang a Gong!\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 108744, 0, 0, 8, 0, 108745, 0, 0, 0, 0, 0, '', 'Quest \'Chaos and Destruction\' requires the \'Colossus of Zora\' quest to be completed'),
(19, 0, 108744, 0, 0, 8, 0, 108746, 0, 0, 0, 0, 0, '', 'Quest \'Chaos and Destruction\' requires the \'Colossus of Regal\' quest to be completed'),
(19, 0, 108744, 0, 0, 8, 0, 108747, 0, 0, 0, 0, 0, '', 'Quest \'Chaos and Destruction\' requires the \'Colossus of Ashi\' quest to be completed'),
(19, 0, 108745, 0, 0, 8, 0, 8743, 0, 0, 0, 0, 0, '', 'Quest \'Colossus of Zora\' requires either quest 8743 or 108743 to be completed'),
(19, 0, 108745, 0, 1, 8, 0, 108743, 0, 0, 0, 0, 0, '', 'Quest \'Colossus of Zora\' requires either quest 8743 or 108743 to be completed'),
(19, 0, 108746, 0, 0, 8, 0, 8743, 0, 0, 0, 0, 0, '', 'Quest \'Colossus of Regal\' requires either quest 8743 or 108743 to be completed'),
(19, 0, 108746, 0, 1, 8, 0, 108743, 0, 0, 0, 0, 0, '', 'Quest \'Colossus of Regal\' requires either quest 8743 or 108743 to be completed'),
(19, 0, 108747, 0, 0, 8, 0, 8743, 0, 0, 0, 0, 0, '', 'Quest \'Colossus of Ashi\' requires either quest 8743 or 108743 to be completed'),
(19, 0, 108747, 0, 1, 8, 0, 108743, 0, 0, 0, 0, 0, '', 'Quest \'Colossus of Ashi\' requires either quest 8743 or 108743 to be completed');
-- update quest texts for the new 'Simply Bang a Gong!' quest
DELETE FROM `quest_request_items` WHERE `ID` IN (108743, 108744); DELETE FROM `quest_request_items` WHERE `ID` IN (108743, 108744);
INSERT INTO `quest_request_items` (`ID`, `EmoteOnComplete`, `EmoteOnIncomplete`, `CompletionText`, `VerifiedBuild`) VALUES INSERT INTO `quest_request_items` (`ID`, `EmoteOnComplete`, `EmoteOnIncomplete`, `CompletionText`, `VerifiedBuild`) VALUES
(108743, 1, 0, 'The Scarab Gong looms ominously before you. Steel yourself, $N; for once the Scarab Gong is rung, the gates of Ahn\'Qiraj will be opened.$B$BHowever, the Brood of Nozdomu and the Cenarion Circle will not reward you, unless you aid them.', 12340), (108743, 1, 0, 'The Scarab Gong looms ominously before you. Steel yourself, $N; for once the Scarab Gong is rung, the gates of Ahn\'Qiraj will be opened.$B$BHowever, the Brood of Nozdomu and the Cenarion Circle will not reward you, unless you aid them.', 12340),
@@ -82,13 +108,6 @@ INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `Sourc
(108743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (108743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(108744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); (108744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `ConditionTypeOrReference` = 8 AND `SourceEntry` IN (108744);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`,
`ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
--
(19, 0, 108744, 0, 0, 8, 0, 8743, 0, 0, 0, 0, 0, '', 'Quest: Chaos and Destruction is only available after the player completes either 8743 or 108743'),
(19, 0, 108744, 0, 1, 8, 0, 108743, 0, 0, 0, 0, 0, '', 'Quest: Chaos and Destruction is only available after the player completes either 8743 or 108743');
UPDATE `quest_template` SET `QuestDescription` = '' WHERE `ID` = 108743; UPDATE `quest_template` SET `QuestDescription` = '' WHERE `ID` = 108743;
-- Connect new 'Bang a Gong!' quest to the Scarab Gong in Silithus -- Connect new 'Bang a Gong!' quest to the Scarab Gong in Silithus
@@ -98,8 +117,8 @@ INSERT INTO `gameobject_queststarter` (`id`, `quest`) VALUES (180717, 8743), (18
DELETE FROM `gameobject_questender` WHERE `id` = 180717 AND `quest` IN (8743, 108743); DELETE FROM `gameobject_questender` WHERE `id` = 180717 AND `quest` IN (8743, 108743);
INSERT INTO `gameobject_questender` (`id`, `quest`) VALUES (180717, 8743), (180717, 108743); INSERT INTO `gameobject_questender` (`id`, `quest`) VALUES (180717, 8743), (180717, 108743);
DELETE FROM `creature_queststarter` WHERE `id` = 15693 AND `quest` = 108744; DELETE FROM `creature_queststarter` WHERE `id` = 15693 AND `quest` IN (108744, 108745, 108746, 108747);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (15693, 108744); INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (15693, 108744), (15693, 108745), (15693, 108746), (15693, 108747);
DELETE FROM `creature_questender` WHERE `id` = 15693 AND `quest` IN (8745, 108744); DELETE FROM `creature_questender` WHERE `id` = 15693 AND `quest` IN (8745, 108744, 108745, 108746, 108747);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (15693, 8745), (15693, 108744); INSERT INTO `creature_questender` (`id`, `quest`) VALUES (15693, 8745), (15693, 108744), (15693, 108745), (15693, 108746), (15693, 108747);

View File

@@ -13,7 +13,7 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
`action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`,
`target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
-- --
(15634, 0, 0, 0, 14, 0, 100, 0, 1000, 200, 50000, 60000, 0, 0, 11, 25839, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Priestess of the Moon - On Friendly Health - Cast Mass Healing'), (15634, 0, 0, 0, 101, 0, 100, 0, 1, 20, 0, 50000, 60000, 0, 11, 25839, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Priestess of the Moon - On Near Player - Cast Mass Healing'),
-- --
(15740, 0, 0, 0, 0, 0, 100, 0, 60000, 60000, 60000, 60000, 0, 0, 11, 26167, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Zora - In Combat - Cast Colossal Smash'), (15740, 0, 0, 0, 0, 0, 100, 0, 60000, 60000, 60000, 60000, 0, 0, 11, 26167, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Zora - In Combat - Cast Colossal Smash'),
(15741, 0, 0, 0, 0, 0, 100, 0, 60000, 60000, 60000, 60000, 0, 0, 11, 26167, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Regal - In Combat - Cast Colossal Smash'), -- https://www.youtube.com/watch?v=F4aAAo_GSrw (15741, 0, 0, 0, 0, 0, 100, 0, 60000, 60000, 60000, 60000, 0, 0, 11, 26167, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus of Regal - In Combat - Cast Colossal Smash'), -- https://www.youtube.com/watch?v=F4aAAo_GSrw
@@ -35,7 +35,7 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
DELETE FROM `creature_text` WHERE `CreatureID` IN (15813, 15818); DELETE FROM `creature_text` WHERE `CreatureID` IN (15813, 15818);
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(15813, 0, 0, 'Kneel before me, mortal! Kneel before Zod!', 12, 7, 100, 0, 0, 0, 11471, 0, 'Qiraji Officer Zod'), (15813, 0, 0, 'Kneel before me, mortal! Kneel before Zod!', 12, 7, 100, 0, 0, 0, 11471, 0, 'Qiraji Officer Zod'),
(15818, 0, 0, 'Burn in hate, $r.', 12, 7, 100, 0, 0, 0, 11475, 0, 'Lieutenant General Nokhor'); (15818, 0, 0, 'Burn in hate, $r.', 12, 7, 100, 0, 0, 0, 11475, 0, 'Lieutenant General Nokhor'); -- need to check language, set to common, currently can't understand it.
DELETE FROM `creature_text` WHERE `CreatureID`= 15693; DELETE FROM `creature_text` WHERE `CreatureID`= 15693;
INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`, `TextRange`, `comment`) VALUES INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`, `TextRange`, `comment`) VALUES
@@ -46,7 +46,7 @@ INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language
(15693, 4, 0, 'Colossus of Regal hears the call to battle and rises to serve its master.', 16, 0, 100, 1, 0, 0, 0, 4, 'EMOTE_AQ_GONG_5'); (15693, 4, 0, 'Colossus of Regal hears the call to battle and rises to serve its master.', 16, 0, 100, 1, 0, 0, 0, 4, 'EMOTE_AQ_GONG_5');
-- add bosses to Silithus and Darkshore -- add bosses to Silithus and Darkshore
DELETE FROM `creature` WHERE `id1` IN (15740, 15741, 15742, 15758, 15810, 15813, 15818); DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+101 AND @CGUID+140;
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, 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 `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
(@CGUID+101,15810,0,0,1,0,0,1,@IPPPHASE,0,4386.996582, 550.179260, 54.762119, 0.581150,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+101,15810,0,0,1,0,0,1,@IPPPHASE,0,4386.996582, 550.179260, 54.762119, 0.581150,1800,5,0,0,0,1,0,0,0,'',0),
@@ -71,40 +71,58 @@ INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`,
(@CGUID+117,15741,0,0,1,0,0,1,@IPPPHASE,0, -7824.52, 663.901, -34.1379, 2.20763,3600,5,0,0,0,1,0,0,0,'',0), -- Colossus of Regal (@CGUID+117,15741,0,0,1,0,0,1,@IPPPHASE,0, -7824.52, 663.901, -34.1379, 2.20763,3600,5,0,0,0,1,0,0,0,'',0), -- Colossus of Regal
(@CGUID+118,15740,0,0,1,0,0,1,@IPPPHASE,0, -7340.2, 1643.75, -34.0787, 4.01405,3600,5,0,0,0,1,0,0,0,'',0), -- Colossus of Zora (@CGUID+118,15740,0,0,1,0,0,1,@IPPPHASE,0, -7340.2, 1643.75, -34.0787, 4.01405,3600,5,0,0,0,1,0,0,0,'',0), -- Colossus of Zora
-- --
(@CGUID+119,15758,0,0,1,0,0,1,@IPPPHASE,0,-7623.261719, 1416.035767, 4.126772, 4.945646,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+119,15758,0,0,1,0,0,1,@IPPPHASE,0, -7623.261719, 1416.035767, 4.126772, 4.945646,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+120,15758,0,0,1,0,0,1,@IPPPHASE,0,-7659.168457, 1392.619751, 3.995544, 3.687438,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+120,15758,0,0,1,0,0,1,@IPPPHASE,0, -7659.168457, 1392.619751, 3.995544, 3.687438,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+121,15758,0,0,1,0,0,1,@IPPPHASE,0,-7688.503418, 1428.886963, 3.855407, 2.550966,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+121,15758,0,0,1,0,0,1,@IPPPHASE,0, -7688.503418, 1428.886963, 3.855407, 2.550966,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+122,15758,0,0,1,0,0,1,@IPPPHASE,0, -7652.402344, 1464.758667, 4.526736, 0.600033,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+122,15758,0,0,1,0,0,1,@IPPPHASE,0, -7652.402344, 1464.758667, 4.526736, 0.600033,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+123,15818,0,0,1,0,0,1,@IPPPHASE,1, -7644.985840, 1422.093628, 3.326948, 5.378395,1800,0,0,0,0,0,0,0,0,'',0), -- boss Silithus 1 (@CGUID+123,15818,0,0,1,0,0,1,@IPPPHASE,1, -7644.985840, 1422.093628, 3.326948, 5.378395,1800,15,0,0,0,1,0,0,0,'',0), -- boss Silithus 1
-- --
(@CGUID+124,15758,0,0,1,0,0,1,@IPPPHASE,0, -7806.652832, 855.699951, -4.778733, 0.353429,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+124,15758,0,0,1,0,0,1,@IPPPHASE,0, -7806.652832, 855.699951, -4.778733, 0.353429,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+125,15758,0,0,1,0,0,1,@IPPPHASE,0, -7831.444336, 808.078979, -9.832852, 4.501119,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+125,15758,0,0,1,0,0,1,@IPPPHASE,0, -7831.444336, 808.078979, -9.832852, 4.501119,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+126,15758,0,0,1,0,0,1,@IPPPHASE,0, -7881.184082, 864.466614, -1.765002, 2.737900,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+126,15758,0,0,1,0,0,1,@IPPPHASE,0, -7881.184082, 864.466614, -1.765002, 2.737900,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+127,15758,0,0,1,0,0,1,@IPPPHASE,0, -7832.478027, 912.945801, -2.498297, 0.817600,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+127,15758,0,0,1,0,0,1,@IPPPHASE,0, -7832.478027, 912.945801, -2.498297, 0.817600,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+128,15818,0,0,1,0,0,1,@IPPPHASE,1, -7830.405273, 851.316223, -4.844313, 4.929938,1800,0,0,0,0,0,0,0,0,'',0), -- boss Silithus 2 (@CGUID+128,15818,0,0,1,0,0,1,@IPPPHASE,1, -7830.405273, 851.316223, -4.844313, 4.929938,1800,15,0,0,0,1,0,0,0,'',0), -- boss Silithus 2
-- --
(@CGUID+129,15758,0,0,1,0,0,1,@IPPPHASE,0,-6290.943848, 736.276489, 11.109619, 5.837865,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+129,15758,0,0,1,0,0,1,@IPPPHASE,0, -6290.943848, 736.276489, 11.109619, 5.837865,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+130,15758,0,0,1,0,0,1,@IPPPHASE,0,-6303.743652, 703.045105, 11.219690, 4.562379,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+130,15758,0,0,1,0,0,1,@IPPPHASE,0, -6303.743652, 703.045105, 11.219690, 4.562379,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+131,15758,0,0,1,0,0,1,@IPPPHASE,0, -6349.953613, 715.365662, 2.037906, 3.263330,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+131,15758,0,0,1,0,0,1,@IPPPHASE,0, -6349.953613, 715.365662, 2.037906, 3.263330,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+132,15758,0,0,1,0,0,1,@IPPPHASE,0, -6346.292969, 777.375793, 1.782544, 1.899878,1800,5,0,0,0,1,0,0,0,'',0), (@CGUID+132,15758,0,0,1,0,0,1,@IPPPHASE,0, -6346.292969, 777.375793, 1.782544, 1.899878,1800,5,0,0,0,1,0,0,0,'',0),
(@CGUID+133,15818,0,0,1,0,0,1,@IPPPHASE,1, -6322.091797, 738.599060, 8.332182, 2.500710,1800,0,0,0,0,0,0,0,0,'',0); -- boss Silithus 3 (@CGUID+133,15818,0,0,1,0,0,1,@IPPPHASE,1, -6322.091797, 738.599060, 8.332182, 2.500710,1800,15,0,0,0,1,0,0,0,'',0), -- boss Silithus 3
--
(@CGUID+134,15743,0,0,1,0,0,1,@IPPPHASE,0, -7953.03, 1588.4, -2.4214, 0.0139782, 1800, 0, 0, 345840, 0, 0, 0, 0, 0, '', 0),
(@CGUID+135,15743,0,0,1,0,0,1,@IPPPHASE,0, -7947.04, 1538.89, 0.298302, 6.05763, 1800, 0, 0, 345840, 0, 0, 0, 0, 0, '', 0),
(@CGUID+136,15743,0,0,1,0,0,1,@IPPPHASE,0, -8107.13, 1522.33, 2.60935, 6.03569, 1800, 0, 0, 345840, 0, 0, 0, 0, 0, '', 0),
(@CGUID+137,15744,0,0,1,0,0,1,@IPPPHASE,0, -8107.33, 1536.68, 3.37718, 0.315558, 1800, 5, 0, 194250, 51360, 1, 0, 0, 0, '', 0),
--
(@CGUID+138, 15797,0,0,1,0,0,1,1,0, -6826.11, 813.571, 51.6444, 5.49779, 300, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_ipp_aqwar', 0), -- Colossus Researcher Sophia
(@CGUID+139, 15798,0,0,1,0,0,1,1,0, -6824.03, 813.17, 51.4418, 3.52557, 300, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_ipp_aqwar', 0), -- Colossus Researcher Nestor
(@CGUID+140, 15799,0,0,1,0,0,1,1,0, -6825.01, 811.389, 51.8466, 1.67552, 300, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_ipp_aqwar', 0); -- Colossus Researcher Eazel
-- remove flags_extra = 1 for Lieutenant General Nokhor -- nerf hive boss HP so they're doable for a raid of 40
UPDATE `creature_template` SET `HealthModifier` = 600 WHERE entry IN (15740, 15741, 15742);
-- remove flags_extra = 1 (CREATURE_FLAG_EXTRA_INSTANCE_BIND) for Lieutenant General Nokhor
UPDATE `creature_template` SET `flags_extra` = 0 WHERE `entry` = 15818; UPDATE `creature_template` SET `flags_extra` = 0 WHERE `entry` = 15818;
DELETE FROM `pool_template` WHERE `entry` IN (15813, 15818); -- Supreme Anubisath Warbringer
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES UPDATE `creature_template` SET `maxgold` = 23909 WHERE `entry` = 15758; -- previously 83909
(15813, 1, "AQ War Event Darkshore Boss"),
(15818, 1, "AQ War Event Silithus Boss");
DELETE FROM `pool_creature` WHERE `pool_entry` = 15813; -- General Rajaxx
UPDATE `creature_text` SET `TextRange` = 4 WHERE `CreatureID` = 15341 AND `GroupID` = 12;
DELETE FROM `pool_template` WHERE `entry` IN (601053, 601054);
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
(601053, 1, "AQ War Event Darkshore Boss"),
(601054, 1, "AQ War Event Silithus Boss");
DELETE FROM `pool_creature` WHERE `pool_entry` IN (15813, 15818, 601053, 601054); -- 15813, 15818 need to be removed later on
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
(@CGUID+105, 15813, 0, 'AQ War Event Darkshore Boss'), (@CGUID+105, 601053, 0, 'AQ War Event Darkshore Boss'),
(@CGUID+110, 15813, 0, 'AQ War Event Darkshore Boss'), (@CGUID+110, 601053, 0, 'AQ War Event Darkshore Boss'),
(@CGUID+115, 15813, 0, 'AQ War Event Darkshore Boss'), (@CGUID+115, 601053, 0, 'AQ War Event Darkshore Boss'),
(@CGUID+123, 15813, 0, 'AQ War Event Silithus Boss'), (@CGUID+123, 601054, 0, 'AQ War Event Silithus Boss'),
(@CGUID+128, 15813, 0, 'AQ War Event Slithus Boss'), (@CGUID+128, 601054, 0, 'AQ War Event Silithus Boss'),
(@CGUID+133, 15813, 0, 'AQ War Event Silithus Boss'); (@CGUID+133, 601054, 0, 'AQ War Event Silithus Boss');
-- add Resonating Crystal Formations to Silithus and Darkshore -- add Resonating Crystal Formations to Silithus and Darkshore
DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+101 AND @OGUID+106; DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+101 AND @OGUID+106;
@@ -119,10 +137,6 @@ INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`,
-- set Resonating Crystal Formations to 'Not selectable' -- set Resonating Crystal Formations to 'Not selectable'
UPDATE `gameobject_template_addon` SET `flags` = 16 WHERE `entry` = 180810; UPDATE `gameobject_template_addon` SET `flags` = 16 WHERE `entry` = 180810;
-- Remove Colossus pathing
DELETE FROM `waypoint_data` WHERE `id` IN (157400, 157410, 157420);
DELETE FROM `creature_template_addon` WHERE `entry` IN (15740, 15741, 15742);
-- add loot to Colossus of Zora, Regal and Ashi -- add loot to Colossus of Zora, Regal and Ashi
DELETE FROM `creature_loot_template` WHERE `entry` = 15740; DELETE FROM `creature_loot_template` WHERE `entry` = 15740;
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
@@ -195,9 +209,3 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `Q
-- same lootID for all 3 Colossus bosses -- same lootID for all 3 Colossus bosses
DELETE FROM `creature_loot_template` WHERE `entry` IN (15741, 15742); DELETE FROM `creature_loot_template` WHERE `entry` IN (15741, 15742);
UPDATE `creature_template` SET `LootId` = 15740 WHERE `entry` IN (15740, 15741, 15742); UPDATE `creature_template` SET `LootId` = 15740 WHERE `entry` IN (15740, 15741, 15742);
-- General Rajaxx
UPDATE `creature_text` SET `TextRange` = 4 WHERE `CreatureID` = 15341 AND `GroupID` = 12;
-- Supreme Anubisath Warbringer
UPDATE `creature_template` SET `maxgold` = 23909 WHERE `entry` = 15758; -- previously 83909

View File

@@ -211,14 +211,9 @@ INSERT INTO `creature_questender` (`id`, `quest`) VALUES
(15701, 108850); (15701, 108850);
-- Hide 'Complete the War Effort' quests until the player has completed all collection quests at least once -- Hide 'Complete the War Effort' quests until the player has completed all collection quests at least once
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `ConditionTypeOrReference` = 8 AND `SourceEntry` IN (8286, 108743, 108850, 108855); DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `ConditionTypeOrReference` = 8 AND `SourceEntry` IN (108850, 108855);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`,
`ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
--
(19, 0, 108743, 0, 0, 8, 0, 108850, 0, 0, 0, 0, 0, '', 'Quest \'Simply Bang a Gong!\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 108743, 0, 1, 8, 0, 108855, 0, 0, 0, 0, 0, '', 'Quest \'Simply Bang a Gong!\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 8286, 0, 0, 8, 0, 108850, 0, 0, 0, 0, 0, '', 'Quest \'What Tomorrow Brings\' requires the \'Complete the War Effort\' quest to be completed'),
(19, 0, 8286, 0, 1, 8, 0, 108855, 0, 0, 0, 0, 0, '', 'Quest \'What Tomorrow Brings\' requires the \'Complete the War Effort\' quest to be completed'),
-- Alliance -- Alliance
(19, 0, 108850, 0, 0, 8, 0, 8492, 0, 0, 0, 0, 0, '', 'Quest \'Complete the War Effort\' requires QUEST_COPPER_BARS_A'), (19, 0, 108850, 0, 0, 8, 0, 8492, 0, 0, 0, 0, 0, '', 'Quest \'Complete the War Effort\' requires QUEST_COPPER_BARS_A'),
(19, 0, 108850, 0, 0, 8, 0, 8494, 0, 0, 0, 0, 0, '', 'Quest \'Complete the War Effort\' requires QUEST_IRON_BARS'), (19, 0, 108850, 0, 0, 8, 0, 8494, 0, 0, 0, 0, 0, '', 'Quest \'Complete the War Effort\' requires QUEST_IRON_BARS'),

View File

@@ -188,6 +188,449 @@ bool IndividualProgression::isExcludedFromProgression(Player* player)
return (accountNameFound && std::regex_match(accountName, excludedAccountsRegex)); return (accountNameFound && std::regex_match(accountName, excludedAccountsRegex));
} }
void IndividualProgression::checkIPPhasing(Player* player, uint32 newArea)
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
switch (newArea) {
case AREA_DARKSHORE:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
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->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_WILDBEND_RIVER:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TWILIGHT_VALE:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_SILITHUS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
player->CastSpell(player, IPP_PHASE_II, false);
}
break;
case AREA_SCARAB_WALL:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_SCARAB_DAIS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_HIVE_ASHI:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
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->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
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)))
{
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
player->CastSpell(player, IPP_PHASE_II, false);
}
break;
case AREA_BOUGH_SHADOW:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_SERADANE:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DREAM_BOUGH:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_JADEMIR_LAKE:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TWILIGHT_GROVE:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DUROTAR:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_ROCKTUSK_FARM:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TIRISFAL_GLADES:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_RUINS_OF_LORDAERON:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_MULGORE:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_VALLEY_OF_HEROES:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_ELWYNN_FOREST:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DUN_MOROGH:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TELDRASSIL:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_EASTERN_PLAGUELANDS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_PESTILENT_SCAR:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_THE_MARRIS_STEAD:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_BLASTED_LANDS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
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->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DREADMAUL_HOLD:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DREADMAUL_POST:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_THE_DARK_PORTAL:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
else if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_PRE_TBC)))
{
player->CastSpell(player, IPP_PHASE_II, false);
}
break;
case AREA_SERPENTS_COIL:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TANARIS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_GADGETZAN:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_ABYSSAL_SANDS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_BROKEN_PILLAR:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_WINTERSPRING:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TIMBERMAW_POST:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_FROSTSABER_ROCK:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_ICE_THISTLE_HILLS:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_MAZTHORIL:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_AZSHARA:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_HALDARR_ENCAMPMENT:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_THE_SHATTERED_STRAND:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_SOUTHRIDGE_BEACH:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_BURNING_STEPPES:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DRACO_DAR:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_BLACKROCK_MOUNTAIN:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DREADMAUL_ROCK:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_RUINS_OF_THAURISSAN:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_PURGATION_ISLE:
if (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ))
{
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ))
{
player->CastSpell(player, IPP_PHASE_II, false);
}
break;
case AREA_IRONTREE_WOOD:
if ((player->getClass() == CLASS_HUNTER) && ((player->GetQuestStatus(QUEST_THE_ANCIENT_LEAF) == QUEST_STATUS_INCOMPLETE) || (player->GetQuestStatus(QUEST_THE_ANCIENT_LEAF) == QUEST_STATUS_REWARDED)))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TERRACE_OF_LIGHT:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_4))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_FOREST_SONG:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_ARGENT_TOURNAMENT_GROUNDS:
case AREA_ARGENT_SUNREAVER_PAVILION:
case AREA_ARGENT_SILVER_COVENANT_PAVILION:
case AREA_THE_RING_OF_CHAMPIONS:
case AREA_THE_ASPIRANTS_RING:
case AREA_THE_ARGENT_VALIANTS_RING:
case AREA_THE_ALLIANCE_VALIANTS_RING:
case AREA_THE_HORDE_VALIANTS_RING:
case AREA_ARGENT_PAVILION:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_2))
{
player->CastSpell(player, IPP_PHASE, false);
}
break;
default:
uint32 mapid = player->GetMapId();
if (mapid == MAP_VAULT_OF_ARCHAVON)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_1) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_WOTLK_TIER_2))
{
player->CastSpell(player, IPP_PHASE, false);
break;
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_2) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_WOTLK_TIER_3))
{
player->CastSpell(player, IPP_PHASE, false);
player->CastSpell(player, IPP_PHASE_II, false);
break;
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_3))
{
player->CastSpell(player, IPP_PHASE, false);
player->CastSpell(player, IPP_PHASE_II, false);
player->CastSpell(player, IPP_PHASE_III, false);
break;
}
}
if (mapid == MAP_SHADOWFANG_KEEP)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_RAZORFEN_DOWNS)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_SCARLET_MONASTERY)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_STRATHOLME)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_DIRE_MAUL)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
}
}
void IndividualProgression::checkIPProgression(Player* killer) void IndividualProgression::checkIPProgression(Player* killer)
{ {
if (!enabled || disableDefaultProgression) if (!enabled || disableDefaultProgression)

View File

@@ -179,6 +179,8 @@ enum ProgressionAreas
AREA_DRACO_DAR = 2421, AREA_DRACO_DAR = 2421,
AREA_RISE_OF_THE_DEFILER = 2517, AREA_RISE_OF_THE_DEFILER = 2517,
AREA_PESTILENT_SCAR = 2622, AREA_PESTILENT_SCAR = 2622,
AREA_SCARAB_WALL = 2737,
AREA_SCARAB_DAIS = 2741,
AREA_HIVE_ASHI = 2742, AREA_HIVE_ASHI = 2742,
AREA_HIVE_ZORA = 2743, AREA_HIVE_ZORA = 2743,
AREA_HIVE_REGAL = 2744, AREA_HIVE_REGAL = 2744,
@@ -395,6 +397,7 @@ public:
bool hasCustomProgressionValue(uint32 creatureEntry); bool hasCustomProgressionValue(uint32 creatureEntry);
bool isExcludedFromProgression(Player* player); bool isExcludedFromProgression(Player* player);
bool isAttuned(Player* player); bool isAttuned(Player* player);
void checkIPPhasing(Player* player, uint32 newArea);
void checkIPProgression(Player* player); void checkIPProgression(Player* player);
void UpdateProgressionQuests(Player* player); void UpdateProgressionQuests(Player* player);
void UpdateProgressionAchievements(Player* player, uint16 achievementID); void UpdateProgressionAchievements(Player* player, uint16 achievementID);

View File

@@ -386,6 +386,43 @@ public:
} }
}; };
class npc_ipp_aqwar : public CreatureScript
{
public:
npc_ipp_aqwar() : CreatureScript("npc_ipp_aqwar") { }
struct npc_ipp_aqwarAI: ScriptedAI
{
explicit npc_ipp_aqwarAI(Creature* creature) : ScriptedAI(creature) { };
bool CanBeSeen(Player const* player) override
{
if (player->IsGameMaster())
{
return true;
}
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_AQ_WAR))
{
return false;
}
else if (sIndividualProgression->hasPassedProgression(target, PROGRESSION_PRE_AQ))
{
return true;
}
return false;
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_ipp_aqwarAI(creature);
}
};
class npc_ipp_si : public CreatureScript class npc_ipp_si : public CreatureScript
{ {
public: public:
@@ -754,6 +791,7 @@ void AddSC_mod_individual_progression_awareness()
new npc_ipp_preaq(); // Cenarion Hold NPCs new npc_ipp_preaq(); // Cenarion Hold NPCs
new npc_ipp_we(); // War Effort NPCs in cities new npc_ipp_we(); // War Effort NPCs in cities
new npc_ipp_aq(); new npc_ipp_aq();
new npc_ipp_aqwar(); // only visible during AQ war
new npc_ipp_si(); // Scourge Invasion new npc_ipp_si(); // Scourge Invasion
new npc_ipp_pre_naxx40(); // Scourge Invasion new npc_ipp_pre_naxx40(); // Scourge Invasion
new npc_ipp_naxx40(); new npc_ipp_naxx40();

View File

@@ -523,637 +523,7 @@ public:
void OnPlayerUpdateArea(Player* player, uint32 /*oldArea*/, uint32 newArea) override void OnPlayerUpdateArea(Player* player, uint32 /*oldArea*/, uint32 newArea) override
{ {
switch (newArea) { sIndividualProgression->checkIPPhasing(player, 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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TWILIGHT_VALE:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ_WAR)))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
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)))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ_WAR))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE_II, false);
}
break;
case AREA_BOUGH_SHADOW:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TWILIGHT_GROVE:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_ONYXIA))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_DREADMAUL_POST:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_THE_DARK_PORTAL:
if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40)))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
else if ((sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40)) && (sIndividualProgression->isBeforeProgression(player, PROGRESSION_PRE_TBC)))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
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->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_PURGATION_ISLE:
if (sIndividualProgression->isBeforeProgression(player, PROGRESSION_AQ))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE_II, false);
}
break;
case AREA_IRONTREE_WOOD:
if ((player->getClass() == CLASS_HUNTER) && ((player->GetQuestStatus(QUEST_THE_ANCIENT_LEAF) == QUEST_STATUS_INCOMPLETE) || (player->GetQuestStatus(QUEST_THE_ANCIENT_LEAF) == QUEST_STATUS_REWARDED)))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_TERRACE_OF_LIGHT:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_4))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_FOREST_SONG:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_PRE_TBC))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
case AREA_ARGENT_TOURNAMENT_GROUNDS:
case AREA_ARGENT_SUNREAVER_PAVILION:
case AREA_ARGENT_SILVER_COVENANT_PAVILION:
case AREA_THE_RING_OF_CHAMPIONS:
case AREA_THE_ASPIRANTS_RING:
case AREA_THE_ARGENT_VALIANTS_RING:
case AREA_THE_ALLIANCE_VALIANTS_RING:
case AREA_THE_HORDE_VALIANTS_RING:
case AREA_ARGENT_PAVILION:
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_2))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
}
break;
default:
uint32 mapid = player->GetMapId();
if (mapid == MAP_VAULT_OF_ARCHAVON)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_1) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_WOTLK_TIER_2))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
break;
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_2) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_WOTLK_TIER_3))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
player->CastSpell(player, IPP_PHASE_II, false);
break;
}
else if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_WOTLK_TIER_3))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
player->CastSpell(player, IPP_PHASE_II, false);
player->CastSpell(player, IPP_PHASE_III, false);
break;
}
}
if (mapid == MAP_SHADOWFANG_KEEP)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_RAZORFEN_DOWNS)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_SCARLET_MONASTERY)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_STRATHOLME)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
if (mapid == MAP_DIRE_MAUL)
{
if (sIndividualProgression->hasPassedProgression(player, PROGRESSION_AQ) && sIndividualProgression->isBeforeProgression(player, PROGRESSION_NAXX40))
{
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
player->CastSpell(player, IPP_PHASE, false);
break;
}
}
player->RemoveAura(IPP_PHASE);
player->RemoveAura(IPP_PHASE_II);
player->RemoveAura(IPP_PHASE_III);
}
} }
}; };

View File

@@ -55,6 +55,7 @@ public:
std::string playername = target->GetName(); std::string playername = target->GetName();
uint16 playerGUID = target->GetGUID().GetCounter(); uint16 playerGUID = target->GetGUID().GetCounter();
uint8 currentState = target->GetPlayerSetting("mod-individual-progression", SETTING_PROGRESSION_STATE).value; uint8 currentState = target->GetPlayerSetting("mod-individual-progression", SETTING_PROGRESSION_STATE).value;
uint32 currentArea = target->GetAreaId();
if (progressionLevel < currentState) if (progressionLevel < currentState)
{ {
@@ -117,6 +118,7 @@ public:
sIndividualProgression->ForceUpdateProgressionState(target, static_cast<ProgressionState>(progressionLevel)); sIndividualProgression->ForceUpdateProgressionState(target, static_cast<ProgressionState>(progressionLevel));
sIndividualProgression->UpdateProgressionQuests(target); sIndividualProgression->UpdateProgressionQuests(target);
sIndividualProgression->checkIPPhasing(target, currentArea);
handler->PSendSysMessage("Updated Progression Level for |cff00ffff{}|r = |cff00ffff{}|r", playername, progressionLevel); handler->PSendSysMessage("Updated Progression Level for |cff00ffff{}|r = |cff00ffff{}|r", playername, progressionLevel);
return true; return true;

View File

@@ -457,7 +457,7 @@ public:
return false; return false;
} }
return sIndividualProgression->isBeforeProgression(target, PROGRESSION_PRE_AQ); return sIndividualProgression->isBeforeProgression(target, PROGRESSION_AQ_WAR); // gate can be opened during the AQ WAR by interacting with the Scarab Gong
} }
}; };