diff options
-rw-r--r-- | sql/updates/world/master/2023_09_23_00_world.sql | 72 | ||||
-rw-r--r-- | src/server/scripts/Draenor/zone_assault_on_the_dark_portal.cpp | 75 |
2 files changed, 146 insertions, 1 deletions
diff --git a/sql/updates/world/master/2023_09_23_00_world.sql b/sql/updates/world/master/2023_09_23_00_world.sql new file mode 100644 index 00000000000..179194c2977 --- /dev/null +++ b/sql/updates/world/master/2023_09_23_00_world.sql @@ -0,0 +1,72 @@ +SET @CGUID := 5000132; + +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+9; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 78430, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3837.99560546875, -2776.723876953125, 93.9245758056640625, 5.573551177978515625, 120, 0, 0, 400000, 100, 0, NULL, NULL, NULL, NULL, 51130), -- Cordana Felsong (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+1, 78553, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3844.734375, -2786.68408203125, 94.16998291015625, 5.674098968505859375, 120, 0, 0, 4800000, 320750, 0, NULL, NULL, NULL, NULL, 51130), -- Thrall (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+2, 78556, 1265, 7025, 7041, '0', 3655, 0, 0, 1, 3842.366455078125, -2787.322998046875, 94.377410888671875, 5.560853958129882812, 120, 0, 0, 20000, 0, 0, NULL, NULL, NULL, NULL, 51130), -- Ariok (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+3, 78568, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3837.892333984375, -2768.734375, 93.89243316650390625, 0.200779974460601806, 120, 0, 0, 20000, 0, 0, NULL, NULL, NULL, NULL, 51130), -- Thaelin Darkanvil (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+4, 79315, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3840.3359375, -2767.654541015625, 93.88391876220703125, 3.119690895080566406, 120, 0, 0, 20000, 0, 0, NULL, NULL, NULL, NULL, 51130), -- Olin Umberhide (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+5, 79675, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3844.427978515625, -2769.032958984375, 93.99267578125, 4.584816455841064453, 120, 0, 0, 400000, 0, 0, NULL, NULL, NULL, NULL, 51130), -- Lady Liadrin (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+6, 78569, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3838.14501953125, -2767.05908203125, 93.86634063720703125, 5.749032974243164062, 120, 0, 0, 20000, 0, 0, NULL, NULL, NULL, NULL, 51130), -- Hansel Heavyhands (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+7, 79316, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3832.265625, -2775.342041015625, 94.3538818359375, 6.141648769378662109, 120, 0, 0, 20000, 1283, 0, NULL, NULL, NULL, NULL, 51130), -- Qiana Moonshadow (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+8, 78559, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3839.858642578125, -2777.1181640625, 93.9246368408203125, 5.596025943756103515, 120, 0, 0, 640000, 9573, 0, NULL, NULL, NULL, NULL, 51130), -- Archmage Khadgar (Area: Heartblood - Difficulty: 0) CreateObject1 +(@CGUID+9, 78554, 1265, 7025, 7041, '0', 3265, 0, 0, 1, 3834.88720703125, -2775.640625, 94.0558013916015625, 3.19539046287536621, 120, 0, 0, 4800000, 128300, 0, NULL, NULL, NULL, NULL, 51130); -- Vindicator Maraad (Area: Heartblood - Difficulty: 0) CreateObject1 (Auras: 165746 - Retribution Aura) + +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+9; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '165746'); -- Vindicator Maraad - 165746 - Retribution Aura + +-- Phases +DELETE FROM `phase_name` WHERE `ID` = 3655; +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(3655, 'Cosmetic - Ariok at Bleeding Hollow Altar (E)'); + +DELETE FROM `phase_area` WHERE `AreaId` IN (7025, 7041, 7039, 7129) AND `PhaseId` IN (3265, 3655); +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(7025, 3265, 'See Questgivers at Bleeding Hollow Altar'), +(7041, 3655, 'See Ariok at Bleeding Hollow Altar'), +(7039, 3655, 'See Ariok at Bleeding Hollow Altar'), +(7129, 3655, 'See Ariok at Bleeding Hollow Altar'); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup`=3265 AND `ConditionValue1`=35297; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(26, 3265, 0, 0, 0, 47, 0, 35297, 2 | 64, 0, 0, 0, 0, '', 'Apply Phase 3264 if Quest 35297 is complete | rewarded'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup`=3655 AND `ConditionValue1`=35297; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(26, 3655, 0, 0, 0, 47, 0, 35297, 2 | 64, 0, 0, 0, 0, '', 'Apply Phase 3264 if Quest 35297 is complete | rewarded'); + +-- Previous conditions already added +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup`=3264 AND `ConditionValue1`=34422; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(26, 3264, 0, 0, 0, 47, 0, 34422, 2 | 8 | 64, 0, 1, 0, 0, '', 'Apply Phase 3264 if Quest 34422 is not in progress | complete | rewarded'); + +-- Quest +UPDATE `quest_poi` SET `VerifiedBuild`=51130 WHERE (`QuestID`=34422 AND `BlobIndex`=0 AND `Idx1`=2) OR (`QuestID`=34422 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=34422 AND `BlobIndex`=0 AND `Idx1`=0); +UPDATE `quest_poi_points` SET `VerifiedBuild`=51130 WHERE (`QuestID`=34422 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=11) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=10) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=9) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=8) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=7) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=6) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=5) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=4) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=3) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=2) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=1) OR (`QuestID`=34422 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=34422 AND `Idx1`=0 AND `Idx2`=0); +UPDATE `creature_queststarter` SET `VerifiedBuild`=51130 WHERE (`id`=78559 AND `quest`=34422); +UPDATE `quest_details` SET `VerifiedBuild`=51130 WHERE `ID` = 34422; + +DELETE FROM `quest_template_addon` WHERE `ID`=34422; +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(34422, 0, 0, 0, 34420, 34423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'quest_blaze_of_glory'); + +-- Scene +UPDATE `scene_template` SET `ScriptName` = 'scene_bleeding_hollow_holdout' WHERE `SceneId`=770; +UPDATE `scene_template` SET `ScriptName` = 'scene_bleeding_hollow_trail_of_flame' WHERE `SceneId`=771; + +-- Serverside spell +DELETE FROM `serverside_spell` WHERE `Id`=164613 AND `DifficultyID`=0; +INSERT INTO `serverside_spell` (`Id`, `DifficultyID`, `CategoryId`, `Dispel`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `AttributesEx11`, `AttributesEx12`, `AttributesEx13`, `AttributesEx14`, `Stances`, `StancesNot`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CasterAuraType`, `TargetAuraType`, `ExcludeCasterAuraType`, `ExcludeTargetAuraType`, `CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `StartRecoveryCategory`, `StartRecoveryTime`, `InterruptFlags`, `AuraInterruptFlags1`, `AuraInterruptFlags2`, `ChannelInterruptFlags1`, `ChannelInterruptFlags2`, `ProcFlags`, `ProcFlags2`, `ProcChance`, `ProcCharges`, `ProcCooldown`, `ProcBasePPM`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `Speed`, `LaunchDelay`, `StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`, `ContentTuningId`, `SpellName`, `ConeAngle`, `ConeWidth`, `MaxTargetLevel`, `MaxAffectedTargets`, `SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `SpellFamilyFlags4`, `DmgClass`, `PreventionType`, `AreaGroupId`, `SchoolMask`, `ChargeCategoryId`) VALUES +(164613, 0, 0, 0, 0, 128, 0, 268435456, 0, 128, 0, 4, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, -1, 0, 0, 0, 'Hut Credit', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0); + +DELETE FROM `serverside_spell_effect` WHERE `SpellID`=164613 AND `EffectIndex`=0 AND `DifficultyID`=0; +INSERT INTO `serverside_spell_effect` (`SpellID`, `EffectIndex`, `DifficultyID`, `Effect`, `EffectAura`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`) VALUES +(164613, 0, 0, 90, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81760, 0, 0, 0, 0, 0, 0, 0, 1, 0); + +DELETE FROM `spell_area` WHERE `spell` IN(164609, 164611); +INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`) VALUES +(164609, 7025, 34422, 35297, 0, 0, 2, 3, 10, 1), +(164611, 7025, 34422, 35297, 0, 0, 2, 3, 8, 1); diff --git a/src/server/scripts/Draenor/zone_assault_on_the_dark_portal.cpp b/src/server/scripts/Draenor/zone_assault_on_the_dark_portal.cpp index fdbb9628d51..4ac8dea6db0 100644 --- a/src/server/scripts/Draenor/zone_assault_on_the_dark_portal.cpp +++ b/src/server/scripts/Draenor/zone_assault_on_the_dark_portal.cpp @@ -24,7 +24,18 @@ enum AssaultOnTheDarkPortalSpells { - SPELL_DARK_PORTAL_RUN_AWAY = 158985 + SPELL_BLEEDING_HOLLOW_HOLDOUT = 164609, + SPELL_BLEEDING_HOLLOW_TRAIL_OF_FLAME = 164611, + SPELL_CANCEL_TRAIL_OF_FLAME_VISUAL = 165993, + SPELL_DARK_PORTAL_RUN_AWAY = 158985, + SPELL_HUT_CREDIT = 164613, // Serverside Spell + SPELL_PUSH_ARMY = 165072, + SPELL_TRAIL_OF_FLAME_LARGE = 165991 +}; + +enum AssaultOnTheDarkPortalQuests +{ + QUEST_FLAG_ARMY_PUSHED = 35297 }; // 621 - Dark Portal: Run away @@ -61,8 +72,70 @@ public: } }; +// 34422 - Blaze of Glory +class quest_blaze_of_glory : public QuestScript +{ +public: + quest_blaze_of_glory() : QuestScript("quest_blaze_of_glory") { } + + void OnQuestStatusChange(Player* player, Quest const* /*quest*/, QuestStatus /*oldStatus*/, QuestStatus newStatus) override + { + if (newStatus == QUEST_STATUS_NONE) + { + player->RemoveAurasDueToSpell(SPELL_BLEEDING_HOLLOW_HOLDOUT); + player->RemoveAurasDueToSpell(SPELL_BLEEDING_HOLLOW_TRAIL_OF_FLAME); + player->RemoveAurasDueToSpell(SPELL_PUSH_ARMY); + player->RemoveRewardedQuest(QUEST_FLAG_ARMY_PUSHED); + PhasingHandler::OnConditionChange(player); + } + else if (newStatus == QUEST_STATUS_INCOMPLETE) + PhasingHandler::OnConditionChange(player); + else if (newStatus == QUEST_STATUS_COMPLETE) + player->RemoveAurasDueToSpell(SPELL_BLEEDING_HOLLOW_TRAIL_OF_FLAME); + } +}; + +// 770 - Bleeding Hollow: Holdout +class scene_bleeding_hollow_holdout : public SceneScript +{ +public: + scene_bleeding_hollow_holdout() : SceneScript("scene_bleeding_hollow_holdout") { } + + void OnSceneComplete(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override + { + player->RemoveAurasDueToSpell(SPELL_BLEEDING_HOLLOW_HOLDOUT); + PhasingHandler::OnConditionChange(player); + } + + void OnSceneTriggerEvent(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/, std::string const& triggerName) override + { + if (triggerName == "Push") + player->CastSpell(player, SPELL_PUSH_ARMY, false); + } +}; + +// 771 - Bleeding Hollow: Trail of Flame +class scene_bleeding_hollow_trail_of_flame : public SceneScript +{ + public: + scene_bleeding_hollow_trail_of_flame() : SceneScript("scene_bleeding_hollow_trail_of_flame") { } + + void OnSceneTriggerEvent(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/, std::string const& triggerName) override + { + if (triggerName == "Visual") + player->CastSpell(player, SPELL_TRAIL_OF_FLAME_LARGE, true); + else if (triggerName == "Clear") + player->CastSpell(player, SPELL_CANCEL_TRAIL_OF_FLAME_VISUAL, true); + else if (triggerName == "Credit") + player->CastSpell(player, SPELL_HUT_CREDIT, true); + } +}; + void AddSC_assault_on_the_dark_portal() { new scene_dark_portal_run_away(); new quest_the_cost_of_war(); + new quest_blaze_of_glory(); + new scene_bleeding_hollow_holdout(); + new scene_bleeding_hollow_trail_of_flame(); }; |