diff options
-rw-r--r-- | sql/updates/world/2014_08_28_00_world_misc.sql | 70 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp | 113 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_quest.cpp | 33 |
3 files changed, 215 insertions, 1 deletions
diff --git a/sql/updates/world/2014_08_28_00_world_misc.sql b/sql/updates/world/2014_08_28_00_world_misc.sql new file mode 100644 index 00000000000..d97536a836d --- /dev/null +++ b/sql/updates/world/2014_08_28_00_world_misc.sql @@ -0,0 +1,70 @@ +SET @OGUID := 75529; + + +UPDATE `creature_template` SET `AIName`='SmartAi' WHERE `entry`=29525; + +DELETE FROM `smart_scripts` WHERE `entryorguid`=29525 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=30154 AND `source_type`=0 AND `id`=5; + +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(30154, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 103591, 29525, 0, 0, 0, 0, 0, 'Agnetta Tyrsdottar - On Death - Set Data to Zeev Fizzlespark'), +(29525, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 1, 0, 5000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Zeev Fizzlespark - On Data Set - Say Line'), +(29525, 0, 1, 0, 52, 0, 100, 0, 0, 29525, 0, 0, 53, 1, 29525, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Zeev Fizzlespark - On Data Set - Say Line'), +(29525, 0, 2, 0, 40, 0, 100, 0, 8, 29525, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Zeev Fizzlespark - On Reached WP8 - Despawn'); + +DELETE FROM `creature_text` WHERE `entry`=29525; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES +(29525, 0, 0, 'Thank you, thank you! Time to get away from these crazy blue women!', 12, 0, 100, 0, 0, 0, 'Zeev Fizzlespark',30803); + +DELETE FROM `waypoints` WHERE `entry` =29525; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(29525, 1,6887.515, -1586.146, 821.6108, 'Zeev Fizzlespark'), +(29525, 2,6879.559, -1576.52, 822.1594, 'Zeev Fizzlespark'), +(29525, 3,6864.559, -1565.27, 821.4094, 'Zeev Fizzlespark'), +(29525, 4,6864.395, -1565.045, 821.4877, 'Zeev Fizzlespark'), +(29525, 5,6859.145, -1561.045, 821.4877, 'Zeev Fizzlespark'), +(29525, 6,6847.645, -1552.295, 820.9877, 'Zeev Fizzlespark'), +(29525, 7,6844.395, -1549.795, 820.2377, 'Zeev Fizzlespark'), +(29525, 8,6839.645, -1546.045, 819.7377, 'Zeev Fizzlespark'); + +DELETE FROM `gameobject` WHERE `id` IN(191844,191845); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES +(@OGUID+0, 191844, 571, 1, 1, 8535.68, -496.9023, 823.1414, 0.4014249, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+1, 191844, 571, 1, 1, 8546.7, -263.9755, 807.7084, 4.886924, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+2, 191845, 571, 1, 1, 8637.927, -217.2614, 570.3714, 0.5759573, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+3, 191844, 571, 1, 1, 8573.364, -92.22021, 673.306, 4.782203, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+4, 191845, 571, 1, 1, 8560.149, -62.62316, 702.3484, 2.740162, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+5, 191845, 571, 1, 1, 8626.088, 33.92166, 572.9097, 5.497789, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+6, 191845, 571, 1, 1, 8614.603, 88.68297, 637.397, 1.832595, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+7, 191844, 571, 1, 1, 8747.084, 9.606879, 296.9369, 2.932139, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+8, 191845, 571, 1, 1, 8579.567, 82.29688, 692.7102, 5.881761, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+9, 191845, 571, 1, 1, 8547.95, -10.12207, 741.0126, 0.06981169, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+10, 191844, 571, 1, 1, 8595.69, 112.1224, 662.7746, 1.727875, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+11, 191844, 571, 1, 1, 8607.703, 209.4077, 665.7949, 4.258607, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+12, 191844, 571, 1, 1, 8611.642, 271.6101, 615.5172, 6.248279, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+13, 191844, 571, 1, 1, 8748.884, 312.8568, 299.133, 6.073746, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+14, 191845, 571, 1, 1, 8621.576, 330.7877, 541.5576, 5.393069, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+15, 191845, 571, 1, 1, 8605.192, 312.1095, 579.5255, 2.251473, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+16, 191844, 571, 1, 1, 8684.777, 359.4482, 428.7368, 4.956738, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+17, 191844, 571, 1, 1, 8789.41, 71.40159, 293.1991, 3.787367, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+18, 191844, 571, 1, 1, 8763.857, -67.66808, 138.1753, 4.677484, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+19, 191844, 571, 1, 1, 8774.313, -173.6759, 149.9866, 1.06465, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+20, 191845, 571, 1, 1, 8789.631, -235.4283, 51.76108, 1.640607, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+21, 191844, 571, 1, 1, 8804.998, -172.7898, 84.4473, 3.47321, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+22, 191844, 571, 1, 1, 8699.403, -518.3983, 548.7347, 2.740162, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+23, 191844, 571, 1, 1, 8576.837, -359.9985, 752.7386, 5.67232, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+24, 191844, 571, 1, 1, 8814.698, 129.815, 148.0139, 3.543024, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+25, 191845, 571, 1, 1, 8843.197, 133.3464, 85.0244, 6.126106, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+26, 191844, 571, 1, 1, 8804.185, 280.4642, 290.4794, 0.4363316, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+27, 191844, 571, 1, 1, 8626.088, 33.92166, 572.9097, 5.497789, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+28, 191845, 571, 1, 1, 8670.649, -96.9744, 480.4034, 4.76475, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+29, 191844, 571, 1, 1, 8532.542, 68.41764, 725.706, 0.2094394, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+30, 191845, 571, 1, 1, 8533.337, -67.05301, 737.9224, 3.769912, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+31, 191845, 571, 1, 1, 8578.229, 145.1865, 697.3944, 0.9773831, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+32, 191844, 571, 1, 1, 8549.121, 307.6241, 663.9405, 0.5759573, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+33, 191845, 571, 1, 1, 8562.427, 317.5042, 614.5561, 6.248279, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+34, 191844, 571, 1, 1, 8518.978, 314.5187, 762.0441, 0.5061446, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+35, 191844, 571, 1, 1, 8748.884, 312.8568, 299.133, 6.073746, 0, 0, 0, 1, 120, 255, 1), -- 191844 (Area: 67) +(@OGUID+36, 191845, 571, 1, 1, 8632.458, -147.1184, 579.8124, 3.665196, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+37, 191845, 571, 1, 1, 8685.321, -255.6193, 550.6371, 4.415683, 0, 0, 0, 1, 120, 255, 1), -- 191845 (Area: 67) +(@OGUID+38, 191844, 571, 1, 1, 8558.689, -286.8528, 704.2544, 2.146753, 0, 0, 0, 1, 120, 255, 1); -- 191844 (Area: 67) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index ae6aaef9999..95990f18829 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -26,6 +26,7 @@ #include "Player.h" #include "SpellInfo.h" #include "CreatureTextMgr.h" +#include "MoveSplineInit.h" /*###### ##Quest 12848 @@ -322,6 +323,117 @@ public: }; + /*###### +## npc_eye_of_acherus +######*/ + +enum EyeOfAcherus +{ + SPELL_EYE_VISUAL = 51892, + SPELL_EYE_FLIGHT_BOOST = 51923, + SPELL_EYE_FLIGHT = 51890, + + EVENT_MOVE_START = 1, + + TALK_MOVE_START = 0, + TALK_CONTROL = 1, + + POINT_EYE_FALL = 1, + POINT_EYE_MOVE_END = 3 +}; + +Position const EyeOFAcherusFallPoint = { 2361.21f, -5660.45f, 496.7444f, 0.0f }; + +class npc_eye_of_acherus : public CreatureScript +{ + public: + npc_eye_of_acherus() : CreatureScript("npc_eye_of_acherus") { } + + struct npc_eye_of_acherusAI : public ScriptedAI + { + npc_eye_of_acherusAI(Creature* creature) : ScriptedAI(creature) + { + me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); + if (Player* owner = me->GetCharmerOrOwner()->ToPlayer()) + owner->SendAutoRepeatCancel(me); + + me->SetReactState(REACT_PASSIVE); + + me->GetMotionMaster()->MovePoint(POINT_EYE_FALL, EyeOFAcherusFallPoint, false); + + Movement::MoveSplineInit init(me); + init.MoveTo(EyeOFAcherusFallPoint.GetPositionX(), EyeOFAcherusFallPoint.GetPositionY(), EyeOFAcherusFallPoint.GetPositionZ(), false); + init.SetFall(); + init.Launch(); + } + + void OnCharmed(bool /*apply*/) override { } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_MOVE_START: + { + DoCast(me, SPELL_EYE_FLIGHT_BOOST); + + me->SetControlled(false, UNIT_STATE_ROOT); + if (Player* owner = me->GetCharmerOrOwner()->ToPlayer()) + { + for (uint8 i = 0; i < MAX_MOVE_TYPE; ++i) + me->SetSpeed(UnitMoveType(i), owner->GetSpeedRate(UnitMoveType(i)), true); + Talk(TALK_MOVE_START, owner); + } + me->GetMotionMaster()->MovePath(me->GetEntry() * 100, false); + break; + } + default: + break; + } + } + } + + void MovementInform(uint32 movementType, uint32 pointId) override + { + if (movementType == WAYPOINT_MOTION_TYPE && pointId == POINT_EYE_MOVE_END - 1) + { + me->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE); + me->RemoveAllAuras(); + + if (Player* owner = me->GetCharmerOrOwner()->ToPlayer()) + { + owner->RemoveAura(SPELL_EYE_FLIGHT_BOOST); + for (uint8 i = 0; i < MAX_MOVE_TYPE; ++i) + me->SetSpeed(UnitMoveType(i), owner->GetSpeedRate(UnitMoveType(i)), true); + + TalkToMap(TALK_CONTROL, owner); + } + me->SetDisableGravity(false); + DoCast(me, SPELL_EYE_FLIGHT); + } + + if (movementType == POINT_MOTION_TYPE && pointId == POINT_EYE_FALL) + { + me->SetDisableGravity(true); + me->SetControlled(true, UNIT_STATE_ROOT); + _events.ScheduleEvent(EVENT_MOVE_START, 5000); + } + } + + private: + EventMap _events; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_eye_of_acherusAI(creature); + } +}; + /*###### ## npc_death_knight_initiate ######*/ @@ -1079,6 +1191,7 @@ void AddSC_the_scarlet_enclave_c1() new npc_unworthy_initiate(); new npc_unworthy_initiate_anchor(); new go_acherus_soul_prison(); + new npc_eye_of_acherus(); new npc_death_knight_initiate(); new npc_salanar_the_horseman(); new npc_dark_rider_of_acherus(); diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 173e03fef7c..f17aac51519 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -2026,7 +2026,6 @@ class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScriptLoa } }; - enum DeathComesFromOnHigh { SPELL_FORGE_CREDIT = 51974, @@ -2097,6 +2096,37 @@ class spell_q12641_death_comes_from_on_high : public SpellScriptLoader } }; +// 52694 - Recall Eye of Acherus +class spell_q12641_recall_eye_of_acherus : public SpellScriptLoader +{ + public: + spell_q12641_recall_eye_of_acherus() : SpellScriptLoader("spell_q12641_recall_eye_of_acherus") { } + + class spell_q12641_recall_eye_of_acherus_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q12641_recall_eye_of_acherus_SpellScript); + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Player* player = GetCaster()->GetCharmerOrOwner()->ToPlayer()) + { + player->StopCastingCharm(); + player->StopCastingBindSight(); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12641_recall_eye_of_acherus_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_q12641_recall_eye_of_acherus_SpellScript(); + } +}; + // 51769 - Emblazon Runeblade class spell_q12619_emblazon_runeblade : public SpellScriptLoader { @@ -2364,6 +2394,7 @@ void AddSC_quest_spell_scripts() new spell_q12308_escape_from_silverbrook_summon_worgen(); new spell_q12308_escape_from_silverbrook(); new spell_q12641_death_comes_from_on_high(); + new spell_q12641_recall_eye_of_acherus(); new spell_q12619_emblazon_runeblade(); new spell_q12619_emblazon_runeblade_effect(); new spell_q12919_gymers_grab(); |