aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsirikfoll <sirikfoll@hotmail.com>2016-12-24 00:15:00 -0300
committerDoctorKraft <DoctorKraft@users.noreply.github.com>2018-03-18 00:19:32 +0100
commitab3a4bde4e782eb00af635a33f031bf860eedc51 (patch)
tree5a109805b6ffe2cc7507c4e356639731f5ef5eb3 /src
parent7a1f2bf873dca1b89c2e66f51ce03989acc87525 (diff)
Core/Ruby: Minor fixes in Halion encounter
* Some codestyle fixes * Fixed wrong Halion summon with Hotswap system * Fixed evade issue * Fixed emblem frost exploit (cherry picked from commit 0b33a8281f6be3458ef3698349f00a1f6aabb0b5)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index c8964c55d72..d889dd42cdd 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -53,7 +53,7 @@ enum Texts
EMOTE_CORPOREALITY_TIT = 3, // Your companions' efforts force %s further into the twilight realm!
EMOTE_CORPOREALITY_TOT = 4, // Your efforts force %s further out of the twilight realm!
- EMOTE_WARN_LASER = 0, // The orbiting spheres pulse with dark energy!
+ EMOTE_WARN_LASER = 0 // The orbiting spheres pulse with dark energy!
};
enum Spells
@@ -143,7 +143,8 @@ enum Events
EVENT_SHADOW_PULSARS_SHOOT = 14,
EVENT_TRIGGER_BERSERK = 15,
EVENT_TWILIGHT_MENDING = 16,
- EVENT_ACTIVATE_EMBERS = 17
+ EVENT_ACTIVATE_EMBERS = 17,
+ EVENT_EVADE_CHECK = 18
};
enum Actions
@@ -176,7 +177,7 @@ enum Misc
DATA_MATERIAL_DAMAGE_TAKEN = 2,
DATA_STACKS_DISPELLED = 3,
DATA_FIGHT_PHASE = 4,
- DATA_SPAWNED_FLAMES = 5,
+ DATA_SPAWNED_FLAMES = 5
};
enum OrbCarrierSeats
@@ -206,7 +207,8 @@ struct CorporealityEntry
uint32 materialRealmSpell;
};
-CorporealityEntry const _corporealityReference[MAX_CORPOREALITY_STATE] = {
+CorporealityEntry const _corporealityReference[MAX_CORPOREALITY_STATE] =
+{
{74836, 74831},
{74835, 74830},
{74834, 74829},
@@ -566,7 +568,7 @@ class npc_halion_controller : public CreatureScript
void JustRespawned() override
{
- if (!_instance->GetGuidData(DATA_HALION).IsEmpty())
+ if (!_instance->GetGuidData(DATA_HALION).IsEmpty() || _instance->GetBossState(DATA_GENERAL_ZARITHRIAN) != DONE)
return;
Reset();
@@ -601,6 +603,7 @@ class npc_halion_controller : public CreatureScript
_materialDamageTaken = 0;
_events.ScheduleEvent(EVENT_TRIGGER_BERSERK, Minutes(8));
+ _events.ScheduleEvent(EVENT_EVADE_CHECK, Seconds(5));
}
void EnterEvadeMode(EvadeReason /*why*/) override
@@ -749,12 +752,27 @@ class npc_halion_controller : public CreatureScript
case EVENT_ACTIVATE_EMBERS:
_summons.DoZoneInCombat(NPC_LIVING_EMBER);
break;
+ case EVENT_EVADE_CHECK:
+ DoCheckEvade();
+ _events.Repeat(Seconds(5));
+ break;
default:
break;
}
}
}
+ void DoCheckEvade()
+ {
+ Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
+ if (Player* player = i->GetSource())
+ if (player->IsAlive() && CheckBoundary(player) && !player->IsGameMaster())
+ return;
+
+ EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
+ }
+
void SetData(uint32 id, uint32 value) override
{
switch (id)
@@ -1768,6 +1786,11 @@ class spell_halion_twilight_phasing : public SpellScriptLoader
{
PrepareSpellScript(spell_halion_twilight_phasing_SpellScript);
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SUMMON_TWILIGHT_PORTAL });
+ }
+
void Phase()
{
Unit* caster = GetCaster();