From 3981d381ee4174b39b788e37d07945d7572a5e21 Mon Sep 17 00:00:00 2001 From: Grimfeather <88028633+Grimfeather@users.noreply.github.com> Date: Mon, 17 Nov 2025 15:25:08 +0100 Subject: [PATCH] Phase Draenei at Forest Song in Ashenvale (#863) added to optional_vanilla_phasing --- optional/sql/world/zz_optional_vanilla_phasing.sql | 5 +++++ src/IndividualProgression.h | 1 + src/IndividualProgressionPlayer.cpp | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/optional/sql/world/zz_optional_vanilla_phasing.sql b/optional/sql/world/zz_optional_vanilla_phasing.sql index d05f15d..e8c4454 100644 --- a/optional/sql/world/zz_optional_vanilla_phasing.sql +++ b/optional/sql/world/zz_optional_vanilla_phasing.sql @@ -73,6 +73,11 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN ( 37915 -- Timothy Cunningham, The Bulwark, Flight Master ); +SET @IPPPHASE := 65536; + +-- Forest Song - Ashenvale - Draenei camp +UPDATE `creature` SET `phaseMask` = @IPPPHASE WHERE `id1` IN (17291, 17303, 17406, 17409, 17412, 17541, 22935, 22936); + /* Remove interactions between Cersei, Lorrin and the orcs in Stonard */ UPDATE `creature_template` SET `AIName` = '' WHERE `entry` IN (12807, 17109, 27705); diff --git a/src/IndividualProgression.h b/src/IndividualProgression.h index 12f2dfa..924c084 100644 --- a/src/IndividualProgression.h +++ b/src/IndividualProgression.h @@ -139,6 +139,7 @@ enum ProgressionAreas AREA_ICE_THISTLE_HILLS = 2247, AREA_THE_MARRIS_STEAD = 2260, AREA_LIGHTS_HOPE = 2268, + AREA_FOREST_SONG = 2358, AREA_DRACO_DAR = 2421, AREA_RISE_OF_THE_DEFILER = 2517, AREA_PESTILENT_SCAR = 2622, diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index a5f37db..c6f0b8a 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -1026,6 +1026,15 @@ public: 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: