aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsirikfoll <sirikfoll@hotmail.com>2019-05-02 15:46:46 -0300
committerShauren <shauren.trinity@gmail.com>2021-12-02 23:51:51 +0100
commit03e03f3fc6ba7ff416bc79f8044e04e1969b98a4 (patch)
tree5647ccdbbeb4e83d6e770e836daab7796c2cd98d
parent46170fdf01fc4bc8475bab396d8ddf5236003fc6 (diff)
Core/Scripts: Fix Skadi dismount issue
Closes #23005 (cherry picked from commit fe3bf57aba9a5009e7e17922391a0d9374915ab5)
-rw-r--r--sql/updates/world/master/2021_12_02_09_world_2019_05_02_00_world.sql3
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp33
2 files changed, 33 insertions, 3 deletions
diff --git a/sql/updates/world/master/2021_12_02_09_world_2019_05_02_00_world.sql b/sql/updates/world/master/2021_12_02_09_world_2019_05_02_00_world.sql
new file mode 100644
index 00000000000..b939591cdaf
--- /dev/null
+++ b/sql/updates/world/master/2021_12_02_09_world_2019_05_02_00_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_skadi_ride_vehicle';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(61791,'spell_skadi_ride_vehicle');
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 54ab59570c5..cbc711ed82b 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -27,6 +27,7 @@
#include "SpellScript.h"
#include "TemporarySummon.h"
#include "utgarde_pinnacle.h"
+#include "Vehicle.h"
enum Spells
{
@@ -262,9 +263,8 @@ public:
Talk(SAY_DRAKE_BREATH);
break;
case ACTION_GAUNTLET_END:
- me->ExitVehicle();
Talk(SAY_DRAKE_DEATH);
- DoCast(me, SPELL_SKADI_TELEPORT, true);
+ DoCastSelf(SPELL_SKADI_TELEPORT);
summons.DespawnEntry(NPC_WORLD_TRIGGER);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetImmuneToPC(false);
@@ -350,7 +350,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
- skadi->AI()->DoAction(ACTION_GAUNTLET_END);
+ skadi->ExitVehicle();
me->DespawnOrUnsummon(Seconds(6));
}
@@ -358,7 +358,11 @@ public:
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply) override
{
if (!apply)
+ {
+ if (Creature * skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
+ skadi->AI()->DoAction(ACTION_GAUNTLET_END);
return;
+ }
Movement::MoveSplineInit init(who);
init.DisableTransportPathTransformations();
@@ -843,6 +847,28 @@ class spell_skadi_poisoned_spear : public SpellScriptLoader
}
};
+// 61791 - Ride Vehicle
+class spell_skadi_ride_vehicle : public AuraScript
+{
+ PrepareAuraScript(spell_skadi_ride_vehicle);
+
+ void OnRemoveVehicle(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ PreventDefaultAction();
+ Unit* caster = GetCaster();
+ if (!caster)
+ return;
+
+ GetTarget()->GetVehicleKit()->RemovePassenger(caster);
+ caster->SetControlled(false, UNIT_STATE_ROOT);
+ }
+
+ void Register() override
+ {
+ OnEffectRemove += AuraEffectRemoveFn(spell_skadi_ride_vehicle::OnRemoveVehicle, EFFECT_0, SPELL_AURA_CONTROL_VEHICLE, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
class spell_summon_gauntlet_mobs_periodic : public SpellScriptLoader
{
public:
@@ -962,6 +988,7 @@ void AddSC_boss_skadi()
new spell_skadi_reset_check();
new spell_skadi_launch_harpoon();
new spell_skadi_poisoned_spear();
+ RegisterAuraScript(spell_skadi_ride_vehicle);
new spell_summon_gauntlet_mobs_periodic();
new achievement_girl_love_to_skadi();
new at_skadi_gaunlet();