diff options
Diffstat (limited to 'src/server/scripts')
| -rw-r--r-- | src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp | 35 | 
1 files changed, 30 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 d6682e272fd..53dbe095155 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -48,7 +48,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 @@ -138,7 +138,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 @@ -171,7 +172,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 @@ -201,7 +202,8 @@ struct CorporealityEntry      uint32 materialRealmSpell;  }; -CorporealityEntry const _corporealityReference[MAX_CORPOREALITY_STATE] = { +CorporealityEntry const _corporealityReference[MAX_CORPOREALITY_STATE] = +{      {74836, 74831},      {74835, 74830},      {74834, 74829}, @@ -561,7 +563,7 @@ class npc_halion_controller : public CreatureScript              void JustRespawned() override              { -                if (_instance->GetGuidData(DATA_HALION)) +                if (_instance->GetGuidData(DATA_HALION) || _instance->GetBossState(DATA_GENERAL_ZARITHRIAN) != DONE)                      return;                  Reset(); @@ -596,6 +598,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 @@ -744,12 +747,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) @@ -1765,6 +1783,13 @@ class spell_halion_twilight_phasing : public SpellScriptLoader          {              PrepareSpellScript(spell_halion_twilight_phasing_SpellScript); +            bool Validate(SpellInfo const* /*spellInfo*/) override +            { +                if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_TWILIGHT_PORTAL)) +                    return false; +                return true; +            } +              void Phase()              {                  Unit* caster = GetCaster();  | 
