diff --git a/data/sql/world/base/adjustment_auras.sql b/data/sql/world/base/adjustment_auras.sql index acdb589..672ad12 100644 --- a/data/sql/world/base/adjustment_auras.sql +++ b/data/sql/world/base/adjustment_auras.sql @@ -1,5 +1,6 @@ -SET @IPPPHASE := 65536; -SET @IPPPHASE_II := 131072; +SET @IPPPHASE := 65536; +SET @IPPPHASE_II := 131072; +SET @IPPPHASE_III := 262144; DELETE FROM `spell_dbc` WHERE `ID` IN (89501, 89505, 89507, 89509, 89511); @@ -14,4 +15,5 @@ INSERT INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`Att INSERT INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`EffectBonusMultiplier_1`,`EffectBonusMultiplier_2`,`EffectBonusMultiplier_3`,`SpellDescriptionVariableID`,`SpellDifficultyID`) VALUES (89509,0,0,0,2843738496,3072,16385,1048576,128,393224,4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,0,1,0,0,0,0,0,-1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@IPPPHASE + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,'Phase Shift: IPP','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), -(89511,0,0,0,2843738496,3072,16385,1048576,128,393224,4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,0,1,0,0,0,0,0,-1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@IPPPHASE_II + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,'Phase Shift: IPP','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0); +(89511,0,0,0,2843738496,3072,16385,1048576,128,393224,4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,0,1,0,0,0,0,0,-1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@IPPPHASE_II + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,'Phase Shift: IPP','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), +(89513,0,0,0,2843738496,3072,16385,1048576,128,393224,4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,0,1,0,0,0,0,0,-1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@IPPPHASE_III + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,'Phase Shift: IPP','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0); diff --git a/data/sql/world/base/ipp_aware_npcs.sql b/data/sql/world/base/ipp_aware_npcs.sql index d7f48f9..d6c4a5d 100644 --- a/data/sql/world/base/ipp_aware_npcs.sql +++ b/data/sql/world/base/ipp_aware_npcs.sql @@ -1,5 +1,6 @@ -SET @IPPPHASE := 65536; -- this method of phasing is useful for aggressive creatures -SET @IPPPHASE_II := 131072; +SET @IPPPHASE := 65536; -- this method of phasing is useful for aggressive creatures +SET @IPPPHASE_II := 131072; +SET @IPPPHASE_III := 262144; UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN (16841, 19254, 16840, 20026, 20027, 20053, 20054, 20069, 18542, 20080, 20081, 20082, 21643, 20130, @@ -64,6 +65,11 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc_t5' WHERE `entry` IN -- Dragons of Nightmare UPDATE `creature` SET `phaseMask` = @IPPPHASE WHERE `id1` IN (14887, 14888, 14889, 14890); +-- Vault of Archavon +UPDATE `creature` SET `phaseMask` = @IPPPHASE WHERE `id1` = 33993; -- Emalon the Storm Watcher +UPDATE `creature` SET `phaseMask` = @IPPPHASE_II WHERE `id1` = 35013; -- Koralon the Flame Watcher +UPDATE `creature` SET `phaseMask` = @IPPPHASE_III WHERE `id1` = 38433; -- Toravon the Ice Watcher + -- Argent Tournament UPDATE `creature` SET `phaseMask` = @IPPPHASE WHERE `guid` IN (25, 63129, 63236, 63370, 63371, 65274, 65275, 65283, 65284, 65285, 65325, 65327, 65350, 65351, 65371, 65451, 65522, 65523, 65526, 65901, 66478, 66479, 66741, 66753, 66788, 66790, 66792, 66910, 66941, 67185, 67187, 68005, 68457, 68583, 68906, 68941, 68947, 68987, 68989, 68990, 69010, diff --git a/src/IndividualProgression.h b/src/IndividualProgression.h index 76af46a..09bc73f 100644 --- a/src/IndividualProgression.h +++ b/src/IndividualProgression.h @@ -55,7 +55,8 @@ enum BuffSpells SPELL_RUNE_TAP = 48982, SPELL_LIFE_STEAL = 20004, IPP_PHASE = 89509, - IPP_PHASE_II = 89511 + IPP_PHASE_II = 89511, + IPP_PHASE_III = 89513 }; enum ProgressionQuestIDs diff --git a/src/IndividualProgressionPlayer.cpp b/src/IndividualProgressionPlayer.cpp index 16cf28b..6ba8257 100644 --- a/src/IndividualProgressionPlayer.cpp +++ b/src/IndividualProgressionPlayer.cpp @@ -551,6 +551,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -559,6 +560,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -567,6 +569,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -575,6 +578,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -583,12 +587,14 @@ public: { 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; @@ -597,12 +603,14 @@ public: { 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; @@ -611,12 +619,14 @@ public: { 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; @@ -625,12 +635,14 @@ public: { 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; @@ -639,6 +651,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -647,6 +660,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -655,6 +669,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -663,6 +678,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -671,6 +687,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -679,6 +696,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -687,6 +705,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -695,6 +714,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -703,6 +723,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -711,6 +732,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -719,6 +741,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -727,6 +750,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -735,6 +759,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -743,6 +768,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -751,6 +777,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -759,6 +786,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -767,6 +795,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -775,6 +804,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -783,6 +813,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -791,6 +822,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -799,6 +831,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -807,12 +840,14 @@ public: { 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; @@ -821,6 +856,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -829,6 +865,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -837,6 +874,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -845,6 +883,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -853,6 +892,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -861,6 +901,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -869,6 +910,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -877,6 +919,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -885,6 +928,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -893,6 +937,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -901,6 +946,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -909,6 +955,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -917,6 +964,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -925,6 +973,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -933,6 +982,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -941,6 +991,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -949,6 +1000,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -957,6 +1009,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -965,6 +1018,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -973,12 +1027,14 @@ public: { 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; @@ -996,6 +1052,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); } break; @@ -1003,12 +1060,43 @@ public: uint32 mapid = player->GetMapId(); - if (mapid == MAP_SHADOWFANG_KEEP) + 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; } @@ -1019,6 +1107,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); break; } @@ -1029,6 +1118,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); break; } @@ -1039,6 +1129,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); break; } @@ -1049,6 +1140,7 @@ public: { player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); player->CastSpell(player, IPP_PHASE, false); break; } @@ -1056,6 +1148,7 @@ public: player->RemoveAura(IPP_PHASE); player->RemoveAura(IPP_PHASE_II); + player->RemoveAura(IPP_PHASE_III); } }