Scripts/Quest: Fix some movement stuff for Quest "Death Comes From On High"

This commit is contained in:
Vincent-Michael
2014-08-28 20:16:16 +02:00
parent 51418b76ae
commit eccb0ed3da
3 changed files with 215 additions and 1 deletions

View File

@@ -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)

View File

@@ -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();

View File

@@ -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();