diff options
Diffstat (limited to 'src')
10 files changed, 76 insertions, 77 deletions
| diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 08209bc72fc..d5793d450f0 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -54,12 +54,11 @@ public:          return GetAQ40AI<boss_kriAI>(creature);      } -    struct boss_kriAI : public ScriptedAI +    struct boss_kriAI : public BossAI      { -        boss_kriAI(Creature* creature) : ScriptedAI(creature) +        boss_kriAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO)          {              Initialize(); -            instance = creature->GetInstanceScript();          }          void Initialize() @@ -72,8 +71,6 @@ public:              Death = false;          } -        InstanceScript* instance; -          uint32 Cleave_Timer;          uint32 ToxicVolley_Timer;          uint32 Check_Timer; @@ -84,11 +81,9 @@ public:          void Reset() override          {              Initialize(); +            _Reset();          } -        void JustEngagedWith(Unit* /*who*/) override -        { -        }          void JustDied(Unit* /*killer*/) override          { @@ -153,12 +148,11 @@ public:          return GetAQ40AI<boss_vemAI>(creature);      } -    struct boss_vemAI : public ScriptedAI +    struct boss_vemAI : public BossAI      { -        boss_vemAI(Creature* creature) : ScriptedAI(creature) +        boss_vemAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO)          {              Initialize(); -            instance = creature->GetInstanceScript();          }          void Initialize() @@ -170,8 +164,6 @@ public:              Enraged = false;          } -        InstanceScript* instance; -          uint32 Charge_Timer;          uint32 KnockBack_Timer;          uint32 Enrage_Timer; @@ -181,6 +173,7 @@ public:          void Reset() override          {              Initialize(); +            _Reset();          }          void JustDied(Unit* /*killer*/) override @@ -191,10 +184,6 @@ public:              instance->SetData(DATA_BUG_TRIO_DEATH, 1);          } -        void JustEngagedWith(Unit* /*who*/) override -        { -        } -          void UpdateAI(uint32 diff) override          {              //Return since we have no target @@ -246,12 +235,11 @@ public:          return GetAQ40AI<boss_yaujAI>(creature);      } -    struct boss_yaujAI : public ScriptedAI +    struct boss_yaujAI : public BossAI      { -        boss_yaujAI(Creature* creature) : ScriptedAI(creature) +        boss_yaujAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO)          {              Initialize(); -            instance = creature->GetInstanceScript();          }          void Initialize() @@ -263,8 +251,6 @@ public:              VemDead = false;          } -        InstanceScript* instance; -          uint32 Heal_Timer;          uint32 Fear_Timer;          uint32 Check_Timer; @@ -292,10 +278,6 @@ public:              }          } -        void JustEngagedWith(Unit* /*who*/) override -        { -        } -          void UpdateAI(uint32 diff) override          {              //Return since we have no target diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index cf9a3883c1f..05d31d88a3e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -460,14 +460,12 @@ public:          return GetAQ40AI<cthunAI>(creature);      } -    struct cthunAI : public ScriptedAI +    struct cthunAI : public BossAI      { -        cthunAI(Creature* creature) : ScriptedAI(creature) +        cthunAI(Creature* creature) : BossAI(creature, DATA_CTHUN)          {              Initialize();              SetCombatMovement(false); - -            instance = creature->GetInstanceScript();          }          void Initialize() @@ -492,8 +490,6 @@ public:              StomachEnterTarget.Clear();                         //Target to be teleported to stomach          } -        InstanceScript* instance; -          //Out of combat whisper timer          uint32 WisperTimer; @@ -521,6 +517,7 @@ public:          void Reset() override          {              Initialize(); +            _Reset();              //Clear players in stomach and outside              Stomach_Map.clear(); @@ -533,11 +530,6 @@ public:              instance->SetData(DATA_CTHUN_PHASE, PHASE_NOT_STARTED);          } -        void JustEngagedWith(Unit* /*who*/) override -        { -            DoZoneInCombat(); -        } -          void SpawnEyeTentacle(float x, float y)          {              Creature* Spawned = DoSpawnCreature(NPC_EYE_TENTACLE, x, y, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 500); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index 3a70e8e3b2f..f8b1c9f86e8 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -53,9 +53,9 @@ public:          return GetAQ40AI<boss_fankrissAI>(creature);      } -    struct boss_fankrissAI : public ScriptedAI +    struct boss_fankrissAI : public BossAI      { -        boss_fankrissAI(Creature* creature) : ScriptedAI(creature) +        boss_fankrissAI(Creature* creature) : BossAI(creature, DATA_FRANKRIS)          {              Initialize();          } @@ -74,6 +74,7 @@ public:          void Reset() override          {              Initialize(); +            _Reset();          }          void SummonSpawn(Unit* victim) @@ -103,10 +104,6 @@ public:                  Spawn->AI()->AttackStart(victim);          } -        void JustEngagedWith(Unit* /*who*/) override -        { -        } -          void UpdateAI(uint32 diff) override          {              //Return since we have no target diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp index bea3e6d9318..583876e47ae 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -50,9 +50,9 @@ public:          return GetAQ40AI<boss_huhuranAI>(creature);      } -    struct boss_huhuranAI : public ScriptedAI +    struct boss_huhuranAI : public BossAI      { -        boss_huhuranAI(Creature* creature) : ScriptedAI(creature) +        boss_huhuranAI(Creature* creature) : BossAI(creature, DATA_HUHURAN)          {              Initialize();          } @@ -83,10 +83,7 @@ public:          void Reset() override          {              Initialize(); -        } - -        void JustEngagedWith(Unit* /*who*/) override -        { +            _Reset();          }          void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index a69e6f21ae5..6ba5e94feef 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -46,9 +46,9 @@ public:          return GetAQ40AI<boss_ouroAI>(creature);      } -    struct boss_ouroAI : public ScriptedAI +    struct boss_ouroAI : public BossAI      { -        boss_ouroAI(Creature* creature) : ScriptedAI(creature) +        boss_ouroAI(Creature* creature) : BossAI(creature, DATA_OURO)          {              Initialize();          } @@ -79,11 +79,13 @@ public:          void Reset() override          {              Initialize(); +            _Reset();          }          void JustEngagedWith(Unit* /*who*/) override          {              DoCastVictim(SPELL_BIRTH); +            _JustEngagedWith();          }          void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 6eef5b79c1a..3a543b679c4 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -54,9 +54,9 @@ public:          return GetAQ40AI<boss_sarturaAI>(creature);      } -    struct boss_sarturaAI : public ScriptedAI +    struct boss_sarturaAI : public BossAI      { -        boss_sarturaAI(Creature* creature) : ScriptedAI(creature) +        boss_sarturaAI(Creature* creature) : BossAI(creature, DATA_SARTURA)          {              Initialize();          } @@ -91,16 +91,19 @@ public:          void Reset() override          {              Initialize(); +            _Reset();          }          void JustEngagedWith(Unit* /*who*/) override          {              Talk(SAY_AGGRO); +            _JustEngagedWith();          }           void JustDied(Unit* /*killer*/) override           {               Talk(SAY_DEATH); +             _JustDied();           }           void KilledUnit(Unit* /*victim*/) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 3ecb5968d93..d12349572e9 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -67,14 +67,11 @@ enum Misc      TELEPORTTIME                  = 30000  }; - - -struct boss_twinemperorsAI : public ScriptedAI +struct boss_twinemperorsAI : public BossAI  { -    boss_twinemperorsAI(Creature* creature): ScriptedAI(creature) +    boss_twinemperorsAI(Creature* creature): BossAI(creature, DATA_TWIN_EMPERORS)      {          Initialize(); -        instance = creature->GetInstanceScript();      }      void Initialize() @@ -91,8 +88,6 @@ struct boss_twinemperorsAI : public ScriptedAI          EnrageTimer = 15 * 60000;      } -    InstanceScript* instance; -      uint32 Heal_Timer;      uint32 Teleport_Timer;      bool AfterTeleport; @@ -110,6 +105,7 @@ struct boss_twinemperorsAI : public ScriptedAI      {          Initialize();          me->ClearUnitState(UNIT_STATE_STUNNED); +        _Reset();      }      Creature* GetOtherBoss() @@ -146,6 +142,7 @@ struct boss_twinemperorsAI : public ScriptedAI          }          if (!DontYellWhenDead)                              // I hope AI is not threaded              DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_DEATH : SOUND_VN_DEATH); +        _JustDied();      }      void KilledUnit(Unit* /*victim*/) override @@ -155,7 +152,7 @@ struct boss_twinemperorsAI : public ScriptedAI      void JustEngagedWith(Unit* who) override      { -        DoZoneInCombat(); +        _JustEngagedWith();          Creature* pOtherBoss = GetOtherBoss();          if (pOtherBoss)          { diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index 02c31d4e95d..e71d9bb6c40 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -204,6 +204,7 @@ class boss_viscidus : public CreatureScript              {                  DoCast(me, SPELL_VISCIDUS_SUICIDE);                  summons.DespawnAll(); +                _JustDied();              }              void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp index d35f88a23e7..c6f3e9fd535 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -40,6 +40,16 @@ ObjectData const creatureData[] =      { 0,             0              } // END  }; + +DoorData const doorData[] = +{ +    { AQ40_DOOR_1, DATA_SARTURA,       DOOR_TYPE_PASSAGE }, +    { AQ40_DOOR_1, DATA_HUHURAN,       DOOR_TYPE_PASSAGE }, +    { AQ40_DOOR_2, DATA_TWIN_EMPERORS, DOOR_TYPE_PASSAGE }, +    { AQ40_DOOR_3, DATA_SKERAM,        DOOR_TYPE_PASSAGE }, +    { 0,           0,                  DOOR_TYPE_ROOM    } // END +}; +  class instance_temple_of_ahnqiraj : public InstanceMapScript  {      public: @@ -56,7 +66,8 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript              {                  SetHeaders(DataHeader);                  LoadObjectData(creatureData, nullptr); - +                SetBossNumber(EncounterCount); +                LoadDoorData(doorData);                  IsBossDied[0] = false;                  IsBossDied[1] = false;                  IsBossDied[2] = false; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index e980dcbb064..ab318434bdb 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -24,23 +24,33 @@  #define AQ40ScriptName "instance_temple_of_ahnqiraj"  #define DataHeader "AQT" +uint32 const EncounterCount = 9; +  enum AQTDataTypes  { -    DATA_SKERAM             = 1, -    DATA_KRI                = 2, -    DATA_VEM                = 3, -    DATA_VEMISDEAD          = 4, -    DATA_VEM_DEATH          = 5, -    DATA_VEKLOR             = 6, -    DATA_VEKLORISDEAD       = 7, -    DATA_VEKLOR_DEATH       = 8, -    DATA_VEKNILASH          = 9, -    DATA_VEKNILASHISDEAD    = 10, -    DATA_VEKNILASH_DEATH    = 11, -    DATA_BUG_TRIO_DEATH     = 14, -    DATA_CTHUN_PHASE        = 20, -    DATA_VISCIDUS           = 21, -    DATA_SARTURA            = 22 +    DATA_SKERAM             = 0, +    DATA_SARTURA            = 1, +    DATA_FRANKRIS           = 2, +    DATA_HUHURAN            = 3, +    DATA_TWIN_EMPERORS      = 4, +    DATA_CTHUN              = 5, +    DATA_BUG_TRIO           = 6, +    DATA_VISCIDUS           = 7, +    DATA_OURO               = 8, + +    // Others +    DATA_KRI                = 9, +    DATA_VEM                = 10, +    DATA_VEMISDEAD          = 11, +    DATA_VEM_DEATH          = 12, +    DATA_VEKLOR             = 13, +    DATA_VEKLORISDEAD       = 14, +    DATA_VEKLOR_DEATH       = 15, +    DATA_VEKNILASH          = 16, +    DATA_VEKNILASHISDEAD    = 17, +    DATA_VEKNILASH_DEATH    = 18, +    DATA_BUG_TRIO_DEATH     = 19, +    DATA_CTHUN_PHASE        = 20  };  enum AQTCreatures @@ -67,6 +77,13 @@ enum AQTCreatures      NPC_SARTURA             = 15516  }; +enum ObjectsAQ40 +{ +    AQ40_DOOR_1 = 180634, +    AQ40_DOOR_2 = 180635, +    AQ40_DOOR_3 = 180636 +}; +  template <class AI, class T>  inline AI* GetAQ40AI(T* obj)  { | 
