aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo <sirikfoll@hotmail.com>2017-02-12 06:43:55 -0200
committerKeader <keader.android@gmail.com>2017-02-12 05:43:55 -0300
commit4536846d7d30508a046f394d1f561a2c3fdcf5f0 (patch)
treeb03e7f3ef6276df519b21db05f0b7b5f6c6ea5f7
parent865a3a47eaa518cb9c7827e863d679697e38b03e (diff)
Core/Scripts Update boss Skadi the Ruthless (#19114)
-rw-r--r--sql/updates/world/3.3.5/2017_02_12_00_world.sql54
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp300
2 files changed, 200 insertions, 154 deletions
diff --git a/sql/updates/world/3.3.5/2017_02_12_00_world.sql b/sql/updates/world/3.3.5/2017_02_12_00_world.sql
new file mode 100644
index 00000000000..7a86fc91e34
--- /dev/null
+++ b/sql/updates/world/3.3.5/2017_02_12_00_world.sql
@@ -0,0 +1,54 @@
+SET @PATH := 2689300;
+
+DELETE FROM `waypoint_data` WHERE `id` IN(@PATH, @PATH+1, @PATH+2);
+DELETE FROM `script_spline_chain_meta` WHERE `entry`=26893;
+INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
+(26893, 1, 0, 15064, 0),
+(26893, 2, 0, 3397, 0),
+(26893, 3, 0, 4472, 0),
+(26893, 4, 0, 23930, 0),
+(26893, 5, 0, 24026, 0);
+
+DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=26893;
+INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
+(26893, 1, 0, 0, 341.74110, -516.95450, 104.66950), -- INITIAL
+(26893, 1, 0, 1, 310.21650, -510.53020, 120.54870),
+(26893, 1, 0, 2, 300.86850, -520.32490, 133.36640),
+(26893, 1, 0, 3, 298.34470, -529.48180, 137.28310),
+(26893, 1, 0, 4, 309.09590, -540.31950, 134.97740),
+(26893, 1, 0, 5, 323.64150, -547.97150, 130.31060),
+(26893, 1, 0, 6, 357.07800, -549.15970, 116.31050),
+(26893, 1, 0, 7, 401.25730, -550.27680, 114.92160),
+(26893, 1, 0, 8, 464.50620, -555.94420, 114.44940),
+(26893, 1, 0, 9, 496.19200, -556.96280, 114.86610),
+(26893, 1, 0, 10, 523.20110, -548.99160, 114.86610),
+(26893, 2, 0, 0, 520.48270, -541.56330, 119.84160), -- BREACH RIGHT
+(26893, 2, 0, 1, 496.43400, -517.57800, 120.00000),
+(26893, 3, 0, 0, 520.48270, -541.56330, 119.84160), -- BREACH LEFT
+(26893, 3, 0, 1, 500.24300, -501.69300, 120.00000),
+(26893, 4, 0, 0, 496.43400, -517.57800, 120.00000), -- RIGHT
+(26893, 4, 0, 1, 453.12420, -517.17000, 120.02730),
+(26893, 4, 0, 2, 388.33120, -514.37680, 121.11930),
+(26893, 4, 0, 3, 340.27520, -512.09260, 122.31380),
+(26893, 4, 0, 4, 313.07560, -509.13800, 125.17500),
+(26893, 4, 0, 5, 296.69640, -522.67050, 133.70260),
+(26893, 4, 0, 6, 301.29570, -549.45830, 137.42490),
+(26893, 4, 0, 7, 335.07460, -552.12110, 119.84160),
+(26893, 4, 0, 8, 397.62370, -553.92030, 119.84160),
+(26893, 4, 0, 9, 459.63210, -558.00780, 119.84160),
+(26893, 4, 0, 10, 505.54580, -568.78150, 119.84160),
+(26893, 4, 0, 11, 518.09900, -560.84990, 119.84160),
+(26893, 4, 0, 12, 520.48270, -541.56330, 119.84160),
+(26893, 5, 0, 0, 500.24300, -501.69300, 120.00000), -- LEFT
+(26893, 5, 0, 1, 451.98240, -509.25080, 120.02730),
+(26893, 5, 0, 2, 399.26070, -510.07190, 121.11930),
+(26893, 5, 0, 3, 350.60990, -508.39010, 122.31380),
+(26893, 5, 0, 4, 325.82170, -506.77690, 125.17500),
+(26893, 5, 0, 5, 301.29410, -516.67060, 133.70260),
+(26893, 5, 0, 6, 301.29570, -549.45830, 137.42490),
+(26893, 5, 0, 7, 335.07460, -552.12110, 119.84160),
+(26893, 5, 0, 8, 397.62370, -553.92030, 119.84160),
+(26893, 5, 0, 9, 459.63210, -558.00780, 119.84160),
+(26893, 5, 0, 10, 505.54580, -568.78150, 119.84160),
+(26893, 5, 0, 11, 518.09900, -560.84990, 119.84160),
+(26893, 5, 0, 12, 520.48270, -541.56330, 119.84160);
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index e3b49ca46b9..1e2da34120e 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -34,12 +34,10 @@ enum Spells
SPELL_SKADI_TELEPORT = 61790,
SPELL_LAUNCH_HARPOON = 48642,
SPELL_SUMMON_GAUNLET_MOBS_PERIODIC = 59275,
- SPELL_FREEZING_CLOUD = 47579,
SPELL_RIDE_GRAUF = 61791,
+ SPELL_FREEZING_CLOUD = 47579,
SPELL_FREEZING_CLOUD_RIGHT_PERIODIC = 47592,
SPELL_FREEZING_CLOUD_LEFT_PERIODIC = 47590,
- SPELL_FREEZING_CLOUD_RIGHT = 47593,
- SPELL_FREEZING_CLOUD_LEFT = 47563,
SPELL_FREEZING_CLOUD_RIGHT_AREA = 47594,
SPELL_FREEZING_CLOUD_LEFT_AREA = 47574,
SPELL_SUMMON_YMIRJAR_WARRIOR_W = 48631,
@@ -60,64 +58,66 @@ enum Spells
SPELL_SUMMON_HARPOON = 56789,
};
-enum Yells
+enum Texts
{
- SAY_AGGRO = 0,
- SAY_KILL = 1,
- SAY_DEATH = 3,
- SAY_DRAKE_DEATH = 5,
- SAY_DRAKE_BREATH = 6
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_DEATH = 3,
+ SAY_DRAKE_DEATH = 5,
+ SAY_DRAKE_BREATH = 6,
+ EMOTE_BREATH = 0,
+ EMOTE_ON_RANGE = 1
};
-enum Emotes
-{
- EMOTE_BREATH = 0,
- EMOTE_ON_RANGE
-};
-
-enum Data
+enum Points
{
-
- DATA_LOVE_TO_SKADI = 0,
- FIRST_WAVE_MAX_WARRIORS = 10,
- FIRST_WAVE_SIZE = 13,
- GRAUF_PATH_INITIAL = 2689300,
- GRAUF_PATH_RIGHT = 2689301,
- GRAUF_PATH_LEFT = 2689302,
- ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI = 17726,
+ POINT_0 = 0,
+ POINT_1 = 1,
+ POINT_2 = 2,
+ POINT_BREACH = 0,
+ POINT_LEFT = 1,
+ POINT_RIGHT = 2
};
-enum Points
+enum SplineChainIds
{
- POINT_0 = 0,
- POINT_1 = 1,
- POINT_9 = 9,
- POINT_11 = 11,
- POINT_LEFT = 21,
- POINT_RIGHT = 22
+ SPLINE_CHAIN_INITIAL = 1,
+ SPLINE_CHAIN_BREACH_RIGHT = 2,
+ SPLINE_CHAIN_BREACH_LEFT = 3,
+ SPLINE_CHAIN_RIGHT = 4,
+ SPLINE_CHAIN_LEFT = 5
};
enum Actions
{
- ACTION_START_ENCOUNTER = 0,
- ACTION_FLAME,
+ ACTION_START_ENCOUNTER = 0,
+ ACTION_DRAKE_BREATH,
ACTION_GAUNTLET_END,
ACTION_HARPOON_HIT,
};
enum CombatPhase
{
- PHASE_FLYING = 0,
+ PHASE_FLYING = 0,
PHASE_GROUND
};
-Position const BreachPoint = { 0.0f, 0.0f, 0.0f, 2.670354f };
+enum MiscData
+{
+
+ DATA_LOVE_TO_SKADI = 0,
+ FIRST_WAVE_MAX_WARRIORS = 10,
+ FIRST_WAVE_SIZE = 13,
+ ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI = 17726,
+};
+
+float const BreachPoint = 2.670354f;
+float const BreathPointRight = 3.124139f;
+float const BreathPointLeft = 3.228859f;
Position const SecondaryWavesInitialPoint = { 478.7434f, -505.5758f, 104.7237f };
Position const SecondaryWavesFinalPoint = { 318.177f, -503.8898f, 104.5326f };
Position const SpawnLoc = { 477.5808f, -484.5591f, 104.8221f, 4.677482f };
Position const GraufLoc = { 341.7411f, -516.9545f, 104.6695f, 3.124139f };
-Position const BreathPointRight = { 496.434f, -517.578f, 120.0f, 3.124139f };
-Position const BreathPointLeft = { 500.243f, -501.693f, 120.0f, 3.228859f };
Position const FirstWaveLocations[FIRST_WAVE_SIZE] =
{
{ 458.5323f, -516.2537f, 104.617f },
@@ -150,8 +150,8 @@ public:
void Initialize()
{
firstWaveSummoned = false;
- harpoonHit = 0;
- loveSkadi = 0;
+ _harpoonHit = 0;
+ _loveSkadi = 0;
_phase = PHASE_GROUND;
scheduler.SetValidator([this]
{
@@ -252,9 +252,9 @@ public:
if (Creature* combatTrigger = me->SummonCreature(NPC_COMBAT_TRIGGER, SpawnLoc))
combatTrigger->AI()->DoZoneInCombat();
break;
- case ACTION_FLAME:
- if (loveSkadi == 1)
- loveSkadi++;
+ case ACTION_DRAKE_BREATH:
+ if (_loveSkadi == 1)
+ _loveSkadi++;
Talk(SAY_DRAKE_BREATH);
break;
case ACTION_GAUNTLET_END:
@@ -285,9 +285,9 @@ public:
});
break;
case ACTION_HARPOON_HIT:
- harpoonHit++;
- if (harpoonHit == 1)
- loveSkadi = 1;
+ _harpoonHit++;
+ if (_harpoonHit == 1)
+ _loveSkadi = 1;
break;
}
}
@@ -295,7 +295,7 @@ public:
uint32 GetData(uint32 id) const override
{
if (id == DATA_LOVE_TO_SKADI)
- return loveSkadi;
+ return _loveSkadi;
return 0;
}
@@ -315,8 +315,8 @@ public:
private:
CombatPhase _phase;
- uint8 harpoonHit;
- uint8 loveSkadi;
+ uint8 _harpoonHit;
+ uint8 _loveSkadi;
bool firstWaveSummoned;
};
@@ -333,16 +333,13 @@ public:
struct npc_graufAI : public ScriptedAI
{
- npc_graufAI(Creature* creature) : ScriptedAI(creature)
- {
- _isFirstFly = true;
- _instance = me->GetInstanceScript();
- }
+ npc_graufAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
void Reset() override
{
me->SetReactState(REACT_PASSIVE);
me->setRegeneratingHealth(false);
+ me->SetSpeedRate(MOVE_RUN, 2.5f);
}
void JustDied(Unit* /*killer*/) override
@@ -350,7 +347,7 @@ public:
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
skadi->AI()->DoAction(ACTION_GAUNTLET_END);
- me->DespawnOrUnsummon(6000);
+ me->DespawnOrUnsummon(Seconds(6));
}
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply) override
@@ -370,50 +367,45 @@ public:
_scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MovePath(GRAUF_PATH_INITIAL, false);
+ me->GetMotionMaster()->MoveAlongSplineChain(POINT_BREACH, SPLINE_CHAIN_INITIAL, false);
});
}
void MovementInform(uint32 type, uint32 pointId) override
{
- if (type != POINT_MOTION_TYPE && type != WAYPOINT_MOTION_TYPE)
+ if (type != SPLINE_CHAIN_MOTION_TYPE)
return;
switch (pointId)
{
- case POINT_9:
- if (!_isFirstFly)
- break;
- _isFirstFly = false;
- // no break
- case POINT_11:
+ case POINT_BREACH:
_scheduler
.Schedule(Milliseconds(1), [this](TaskContext /*context*/)
{
- me->SetFacingTo(BreachPoint.GetOrientation());
+ me->SetFacingTo(BreachPoint);
Talk(EMOTE_ON_RANGE);
})
.Schedule(Seconds(10), [this](TaskContext /*context*/)
{
- if (RAND(POINT_LEFT,POINT_RIGHT) == POINT_LEFT)
- me->GetMotionMaster()->MovePoint(POINT_LEFT, BreathPointLeft);
+ if (RAND(POINT_LEFT, POINT_RIGHT) == POINT_LEFT)
+ me->GetMotionMaster()->MoveAlongSplineChain(POINT_LEFT, SPLINE_CHAIN_BREACH_LEFT, false);
else
- me->GetMotionMaster()->MovePoint(POINT_RIGHT, BreathPointRight);
+ me->GetMotionMaster()->MoveAlongSplineChain(POINT_RIGHT, SPLINE_CHAIN_BREACH_RIGHT, false);
});
break;
case POINT_LEFT:
_scheduler
.Schedule(Milliseconds(1), [this](TaskContext /*context*/)
{
- me->SetFacingTo(BreathPointLeft.GetOrientation());
+ me->SetFacingTo(BreathPointLeft);
Talk(EMOTE_BREATH);
})
.Schedule(Seconds(2), [this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MovePath(GRAUF_PATH_LEFT, false);
+ me->GetMotionMaster()->MoveAlongSplineChain(POINT_BREACH, SPLINE_CHAIN_LEFT, false);
DoCast(SPELL_FREEZING_CLOUD_LEFT_PERIODIC);
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
- skadi->AI()->DoAction(ACTION_FLAME);
+ skadi->AI()->DoAction(ACTION_DRAKE_BREATH);
})
.Schedule(Seconds(10), [this](TaskContext /*context*/)
{
@@ -424,23 +416,23 @@ public:
_scheduler
.Schedule(Milliseconds(1), [this](TaskContext /*context*/)
{
- me->SetFacingTo(BreathPointRight.GetOrientation());
+ me->SetFacingTo(BreathPointRight);
Talk(EMOTE_BREATH);
})
.Schedule(Seconds(2), [this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MovePath(GRAUF_PATH_RIGHT, false);
+ me->GetMotionMaster()->MoveAlongSplineChain(POINT_BREACH, SPLINE_CHAIN_RIGHT, false);
DoCast(SPELL_FREEZING_CLOUD_RIGHT_PERIODIC);
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
- skadi->AI()->DoAction(ACTION_FLAME);
+ skadi->AI()->DoAction(ACTION_DRAKE_BREATH);
})
.Schedule(Seconds(10), [this](TaskContext /*context*/)
{
me->RemoveAurasDueToSpell(SPELL_FREEZING_CLOUD_RIGHT_PERIODIC);
});
break;
- default:
- break;
+ default:
+ break;
}
}
@@ -459,7 +451,6 @@ public:
private:
TaskScheduler _scheduler;
InstanceScript* _instance;
- bool _isFirstFly;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -505,11 +496,11 @@ struct npc_skadi_trashAI : public ScriptedAI
case POINT_1:
_scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MovePoint(POINT_9, SecondaryWavesFinalPoint);
+ me->GetMotionMaster()->MovePoint(POINT_2, SecondaryWavesFinalPoint);
});
break;
- case POINT_9:
- DoZoneInCombat(me, 200);
+ case POINT_2:
+ DoZoneInCombat();
break;
default:
break;
@@ -634,80 +625,80 @@ public:
class spell_freezing_cloud_area_right : public SpellScriptLoader
{
-public:
- spell_freezing_cloud_area_right() : SpellScriptLoader("spell_freezing_cloud_area_right") { }
-
- class spell_freezing_cloud_area_right_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_freezing_cloud_area_right_SpellScript);
+ public:
+ spell_freezing_cloud_area_right() : SpellScriptLoader("spell_freezing_cloud_area_right") { }
- bool Validate(SpellInfo const* /*spell*/) override
+ class spell_freezing_cloud_area_right_SpellScript : public SpellScript
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FREEZING_CLOUD))
- return false;
- return true;
- }
+ PrepareSpellScript(spell_freezing_cloud_area_right_SpellScript);
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if([](WorldObject* obj) { return obj->GetPositionY() > -511.0f; });
- }
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_FREEZING_CLOUD))
+ return false;
+ return true;
+ }
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- GetHitUnit()->CastSpell(GetHitUnit(), SPELL_FREEZING_CLOUD, true);
- }
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if([](WorldObject* obj) { return obj->GetPositionY() > -511.0f; });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_FREEZING_CLOUD, true);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_freezing_cloud_area_right_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
+ OnEffectHitTarget += SpellEffectFn(spell_freezing_cloud_area_right_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
+ }
+ };
- void Register() override
+ SpellScript* GetSpellScript() const override
{
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_freezing_cloud_area_right_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
- OnEffectHitTarget += SpellEffectFn(spell_freezing_cloud_area_right_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
+ return new spell_freezing_cloud_area_right_SpellScript();
}
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_freezing_cloud_area_right_SpellScript();
- }
};
class spell_freezing_cloud_area_left : public SpellScriptLoader
{
-public:
- spell_freezing_cloud_area_left() : SpellScriptLoader("spell_freezing_cloud_area_left") { }
-
- class spell_freezing_cloud_area_left_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_freezing_cloud_area_left_SpellScript);
+ public:
+ spell_freezing_cloud_area_left() : SpellScriptLoader("spell_freezing_cloud_area_left") { }
- bool Validate(SpellInfo const* /*spell*/) override
+ class spell_freezing_cloud_area_left_SpellScript : public SpellScript
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FREEZING_CLOUD))
- return false;
- return true;
- }
+ PrepareSpellScript(spell_freezing_cloud_area_left_SpellScript);
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if([](WorldObject* obj) { return obj->GetPositionY() < -511.0f; });
- }
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_FREEZING_CLOUD))
+ return false;
+ return true;
+ }
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- GetHitUnit()->CastSpell(GetHitUnit(), SPELL_FREEZING_CLOUD, true);
- }
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if([](WorldObject* obj) { return obj->GetPositionY() < -511.0f; });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_FREEZING_CLOUD, true);
+ }
- void Register() override
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_freezing_cloud_area_left_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
+ OnEffectHitTarget += SpellEffectFn(spell_freezing_cloud_area_left_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
{
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_freezing_cloud_area_left_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
- OnEffectHitTarget += SpellEffectFn(spell_freezing_cloud_area_left_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
+ return new spell_freezing_cloud_area_left_SpellScript();
}
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_freezing_cloud_area_left_SpellScript();
- }
};
class spell_freezing_cloud_damage : public SpellScriptLoader
@@ -920,20 +911,20 @@ class spell_summon_gauntlet_mobs_periodic : public SpellScriptLoader
class achievement_girl_love_to_skadi : public AchievementCriteriaScript
{
-public:
- achievement_girl_love_to_skadi() : AchievementCriteriaScript("achievement_girl_love_to_skadi") { }
+ public:
+ achievement_girl_love_to_skadi() : AchievementCriteriaScript("achievement_girl_love_to_skadi") { }
- bool OnCheck(Player* /*player*/, Unit* target) override
- {
- if (!target)
- return false;
+ bool OnCheck(Player* /*player*/, Unit* target) override
+ {
+ if (!target)
+ return false;
- if (Creature* skadi = target->ToCreature())
- if (skadi->AI()->GetData(DATA_LOVE_TO_SKADI) == 1)
- return true;
+ if (Creature* skadi = target->ToCreature())
+ if (skadi->AI()->GetData(DATA_LOVE_TO_SKADI) == 1)
+ return true;
- return false;
- }
+ return false;
+ }
};
class at_skadi_gaunlet : public AreaTriggerScript
@@ -943,15 +934,16 @@ class at_skadi_gaunlet : public AreaTriggerScript
bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
- if (InstanceScript* instance = player->GetInstanceScript())
- {
- if (instance->GetBossState(DATA_SKADI_THE_RUTHLESS) == NOT_STARTED)
- if (Creature* skadi = instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
- {
- skadi->AI()->DoAction(ACTION_START_ENCOUNTER);
- return true;
- }
- }
+ InstanceScript* instance = player->GetInstanceScript();
+ if (!instance || player->IsGameMaster())
+ return true;
+
+ if (instance->GetBossState(DATA_SKADI_THE_RUTHLESS) == NOT_STARTED)
+ if (Creature* skadi = instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
+ {
+ skadi->AI()->DoAction(ACTION_START_ENCOUNTER);
+ return true;
+ }
return true;
}