diff options
Diffstat (limited to 'src/server')
3 files changed, 55 insertions, 14 deletions
diff --git a/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp b/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp index 7da92e05f4d..14113e37fe2 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp @@ -21,7 +21,6 @@ Category: Tanaris, ZulFarrak  */  #include "ScriptMgr.h" -#include "InstanceScript.h"  #include "ScriptedCreature.h"  #include "zulfarrak.h" @@ -55,7 +54,7 @@ public:      struct boss_zum_rahAI : public BossAI      { -        boss_zum_rahAI(Creature* creature) : BossAI(creature, DATA_ZUM_RAH) +        boss_zum_rahAI(Creature* creature) : BossAI(creature, BOSS_WITCH_DOCTOR_ZUM_RAH)          {              Initialize();          } @@ -69,22 +68,19 @@ public:          void Reset() override          { +            _Reset();              me->SetFaction(FACTION_FRIENDLY); // areatrigger sets faction to enemy              Initialize();          } -        void JustEngagedWith(Unit* /*who*/) override +        void JustEngagedWith(Unit* who) override          { +            _JustEngagedWith(who);              Talk(SAY_SANCT_INVADE);              events.ScheduleEvent(EVENT_SHADOW_BOLT, 1s);              events.ScheduleEvent(EVENT_SHADOWBOLT_VOLLEY, 10s);          } -        void JustDied(Unit* /*killer*/) override -        { -            instance->SetData(DATA_ZUM_RAH, DONE); -        } -          void KilledUnit(Unit* /*victim*/) override          {              Talk(SAY_KILL); diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp index 7700bcfe5a0..e86f39bd4da 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp @@ -32,6 +32,18 @@ enum Misc      PATH_ADDS           = 652424  }; +static constexpr DungeonEncounterData Encounters[] = +{ +    { BOSS_HYDROMANCER_VELRATHA, { { 593 } } }, +    { BOSS_GAHZ_RILLA, { { 594 } } }, +    { BOSS_ANTU_SUL, { { 595 } } }, +    { BOSS_THEKA_THE_MARTYR, { { 596 } } }, +    { BOSS_WITCH_DOCTOR_ZUM_RAH, { { 597 } } }, +    { BOSS_NEKRUM_GUTCHEWER, { { 598 } } }, +    { BOSS_SHADOWPRIEST_SEZZ_ZIZ, { { 599 } } }, +    { BOSS_CHIEF_UKORZ_SANDSCALP, { { 600 } } }, +}; +  int const pyramidSpawnTotal = 54;  /* list of wave spawns: 0 = wave ID, 1 = creature id, 2 = x, 3 = y  no z coordinat b/c they're all the same */ @@ -113,6 +125,8 @@ public:          instance_zulfarrak_InstanceMapScript(InstanceMap* map) : InstanceScript(map)          {              SetHeaders(DataHeader); +            SetBossNumber(MAX_ENCOUNTER); +            LoadDungeonEncounterData(Encounters);              GahzRillaEncounter = NOT_STARTED;              PyramidPhase = 0;              major_wave_Timer = 0; @@ -164,13 +178,28 @@ public:                      break;                  case NPC_GAHZRILLA:                      if (GahzRillaEncounter >= IN_PROGRESS) -                        creature->DisappearAndDie(); +                        creature->DespawnOrUnsummon();                      else                          GahzRillaEncounter = IN_PROGRESS;                      break;              }          } +        void OnUnitDeath(Unit* unit) override +        { +            switch (unit->GetEntry()) +            { +                case ENTRY_VELRTHA:     SetBossState(BOSS_HYDROMANCER_VELRATHA, DONE); break; +                case ENTRY_GAHZRILLA:   SetBossState(BOSS_GAHZ_RILLA, DONE); break; +                case ENTRY_ANTUSUL:     SetBossState(BOSS_ANTU_SUL, DONE); break; +                case ENTRY_THEKA:       SetBossState(BOSS_THEKA_THE_MARTYR, DONE); break; +                case ENTRY_NEKRUM:      SetBossState(BOSS_NEKRUM_GUTCHEWER, DONE); break; +                case ENTRY_SEZZZIZ:     SetBossState(BOSS_SHADOWPRIEST_SEZZ_ZIZ, DONE); break; +                case ENTRY_SANDSCALP:   SetBossState(BOSS_CHIEF_UKORZ_SANDSCALP, DONE); break; +                default: break; +            } +        } +          void OnGameObjectCreate(GameObject* go) override          {              switch (go->GetEntry()) diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h index a4eaca7664d..39dbaa66feb 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h @@ -23,14 +23,35 @@  #define ZFScriptName "instance_zulfarrak"  #define DataHeader "ZF" +enum ZFBossIds +{ +    BOSS_HYDROMANCER_VELRATHA   = 0, +    BOSS_GAHZ_RILLA             = 1, +    BOSS_ANTU_SUL               = 2, +    BOSS_THEKA_THE_MARTYR       = 3, +    BOSS_WITCH_DOCTOR_ZUM_RAH   = 4, +    BOSS_NEKRUM_GUTCHEWER       = 5, +    BOSS_SHADOWPRIEST_SEZZ_ZIZ  = 6, +    BOSS_CHIEF_UKORZ_SANDSCALP  = 7, + +    MAX_ENCOUNTER +}; +  enum ZFEntries  { +    ENTRY_SANDSCALP     = 7267,      ENTRY_ZUM_RAH       = 7271, +    ENTRY_THEKA         = 7272, +    ENTRY_GAHZRILLA     = 7273, +    ENTRY_SEZZZIZ       = 7275,      ENTRY_BLY           = 7604,      ENTRY_RAVEN         = 7605,      ENTRY_ORO           = 7606,      ENTRY_WEEGLI        = 7607,      ENTRY_MURTA         = 7608, +    ENTRY_VELRTHA       = 7795, +    ENTRY_NEKRUM        = 7796, +    ENTRY_ANTUSUL       = 8127,      GO_END_DOOR         = 146084, @@ -38,11 +59,6 @@ enum ZFEntries      EVENT_GAHZRILLA  }; -enum ZFDataTypes -{ -    DATA_ZUM_RAH = 0 -}; -  enum ZFPyramidPhases  {      PYRAMID_NOT_STARTED, //default  | 
