aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2013-08-10 16:35:06 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2013-08-10 16:35:06 +0200
commitba6e62fd6ec00dcd03ae1fa5332a8499ec139ca0 (patch)
tree47458f66ee00c0524e3fa8351109410aaa0d0d46 /src
parent0e7585770232b91e54837e775705264edd9d222e (diff)
Scripted/BaradinHold: Implemented Pit Lord Argaloth
Note: Need some update with sniff
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Scripting/ScriptLoader.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BaradinHold/baradin_hold.h34
-rw-r--r--src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp85
-rw-r--r--src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp200
-rw-r--r--src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp213
-rw-r--r--src/server/scripts/EasternKingdoms/CMakeLists.txt1
6 files changed, 374 insertions, 161 deletions
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
index d55ada7d090..b11ece9307d 100644
--- a/src/server/game/Scripting/ScriptLoader.cpp
+++ b/src/server/game/Scripting/ScriptLoader.cpp
@@ -102,6 +102,7 @@ void AddSC_boss_drekthar();
void AddSC_boss_galvangar();
void AddSC_boss_vanndar();
void AddSC_boss_alizabal(); //Baradin Hold
+void AddSC_boss_pit_lord_argaloth();
void AddSC_instance_baradin_hold();
void AddSC_blackrock_depths(); //Blackrock Depths
void AddSC_boss_ambassador_flamelash();
@@ -760,6 +761,7 @@ void AddEasternKingdomsScripts()
AddSC_boss_galvangar();
AddSC_boss_vanndar();
AddSC_boss_alizabal(); //Baradin Hold
+ AddSC_boss_pit_lord_argaloth();
AddSC_instance_baradin_hold();
AddSC_blackrock_depths(); //Blackrock Depths
AddSC_boss_ambassador_flamelash();
diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/baradin_hold.h b/src/server/scripts/EasternKingdoms/BaradinHold/baradin_hold.h
index 77554d29d15..bbd26b91d70 100644
--- a/src/server/scripts/EasternKingdoms/BaradinHold/baradin_hold.h
+++ b/src/server/scripts/EasternKingdoms/BaradinHold/baradin_hold.h
@@ -18,9 +18,18 @@
#ifndef DEF_BARADIN_HOLD_H_
#define DEF_BARADIN_HOLD_H_
-#define MAX_ENCOUNTERS 3
+#define BHScriptName "instance_baradin_hold"
-enum Creatures
+uint32 const EncounterCount = 3;
+
+enum DataTypes
+{
+ DATA_ARGALOTH = 0,
+ DATA_OCCUTHAR = 1,
+ DATA_ALIZABAL = 2
+};
+
+enum CreatureIds
{
BOSS_ARGALOTH = 47120,
BOSS_OCCUTHAR = 52363,
@@ -28,20 +37,23 @@ enum Creatures
NPC_EYE_OF_OCCUTHAR = 52389,
NPC_FOCUS_FIRE_DUMMY = 52369,
- NPC_OCCUTHAR_EYE = 52368,
+ NPC_OCCUTHAR_EYE = 52368
};
-enum Objects
+enum GameObjectIds
{
- GO_ARGALOTH_DOOR = 207619,
- GO_OCCUTHAR_DOOR = 208953,
+ GO_ARGALOTH_DOOR = 207619,
+ GO_OCCUTHAR_DOOR = 208953
};
-enum Data
+template<class AI>
+CreatureAI* GetBaradinHoldAI(Creature* creature)
{
- DATA_ARGALOTH = 1,
- DATA_OCCUTHAR = 2,
- DATA_ALIZABAL = 3,
-};
+ if (InstanceMap* instance = creature->GetMap()->ToInstanceMap())
+ if (instance->GetInstanceScript())
+ if (instance->GetScriptId() == sObjectMgr->GetScriptId(BHScriptName))
+ return new AI(creature);
+ return NULL;
+}
#endif
diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp
index 01104a47f30..c2b78b4827e 100644
--- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp
+++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp
@@ -15,23 +15,22 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "baradin_hold.h"
-#include "InstanceScript.h"
#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
#include "Player.h"
#include "ObjectAccessor.h"
-#include "ScriptedCreature.h"
+#include "baradin_hold.h"
enum Texts
{
- SAY_INTRO = 1,
- SAY_AGGRO = 2,
- SAY_HATE = 3,
- SAY_SKEWER = 4,
- SAY_SKEWER_ANNOUNCE = 5,
- SAY_BLADE_STORM = 6,
- SAY_SLAY = 10,
- SAY_DEATH = 12,
+ SAY_INTRO = 1,
+ SAY_AGGRO = 2,
+ SAY_HATE = 3,
+ SAY_SKEWER = 4,
+ SAY_SKEWER_ANNOUNCE = 5,
+ SAY_BLADE_STORM = 6,
+ SAY_SLAY = 10,
+ SAY_DEATH = 12
};
enum Spells
@@ -40,25 +39,25 @@ enum Spells
SPELL_BLADE_DANCE_DUMMY = 105828,
SPELL_SEETHING_HATE = 105067,
SPELL_SKEWER = 104936,
- SPELL_BERSERK = 47008,
+ SPELL_BERSERK = 47008
};
enum Actions
{
- ACTION_INTRO = 1,
+ ACTION_INTRO = 1
};
-enum Points
+ enum Points
{
- POINT_STORM = 1,
+ POINT_STORM = 1
};
enum Events
{
- EVENT_RANDOM_CAST = 1,
- EVENT_STOP_STORM = 2,
- EVENT_MOVE_STORM = 3,
- EVENT_CAST_STORM = 4,
+ EVENT_RANDOM_CAST = 1,
+ EVENT_STOP_STORM = 2,
+ EVENT_MOVE_STORM = 3,
+ EVENT_CAST_STORM = 4
};
class at_alizabal_intro : public AreaTriggerScript
@@ -84,20 +83,14 @@ class boss_alizabal : public CreatureScript
{
boss_alizabalAI(Creature* creature) : BossAI(creature, DATA_ALIZABAL)
{
- Intro = false;
- Hate = false;
- Skewer = false;
+ _intro = false;
}
- bool Intro;
- bool Hate;
- bool Skewer;
-
void Reset() OVERRIDE
{
_Reset();
- Hate = false;
- Skewer = false;
+ _hate = false;
+ _skewer = false;
}
void EnterCombat(Unit* /*who*/) OVERRIDE
@@ -133,10 +126,10 @@ class boss_alizabal : public CreatureScript
switch (action)
{
case ACTION_INTRO:
- if (!Intro)
+ if (!_intro)
{
Talk(SAY_INTRO);
- Intro = true;
+ _intro = true;
}
break;
}
@@ -167,7 +160,7 @@ class boss_alizabal : public CreatureScript
switch (urand(0, 1))
{
case 0:
- if (!Skewer)
+ if (!_skewer)
{
if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 0))
{
@@ -175,20 +168,20 @@ class boss_alizabal : public CreatureScript
Talk(SAY_SKEWER);
Talk(SAY_SKEWER_ANNOUNCE, target->GetGUID());
}
- Skewer = true;
+ _skewer = true;
events.ScheduleEvent(EVENT_RANDOM_CAST, urand(7000, 10000));
}
- else if (!Hate)
+ else if (!_hate)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(me)))
{
DoCast(target, SPELL_SEETHING_HATE, true);
Talk(SAY_HATE);
}
- Hate = true;
+ _hate = true;
events.ScheduleEvent(EVENT_RANDOM_CAST, urand(7000, 10000));
}
- else if (Hate && Skewer)
+ else if (_hate && _skewer)
{
Talk(SAY_BLADE_STORM);
DoCastAOE(SPELL_BLADE_DANCE_DUMMY);
@@ -199,17 +192,17 @@ class boss_alizabal : public CreatureScript
}
break;
case 1:
- if (!Hate)
+ if (!_hate)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(me)))
{
DoCast(target, SPELL_SEETHING_HATE, true);
Talk(SAY_HATE);
}
- Hate = true;
+ _hate = true;
events.ScheduleEvent(EVENT_RANDOM_CAST, urand(7000, 10000));
}
- else if (!Skewer)
+ else if (!_skewer)
{
if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 0))
{
@@ -217,10 +210,10 @@ class boss_alizabal : public CreatureScript
Talk(SAY_SKEWER);
Talk(SAY_SKEWER_ANNOUNCE, target->GetGUID());
}
- Skewer = true;
+ _skewer = true;
events.ScheduleEvent(EVENT_RANDOM_CAST, urand(7000, 10000));
}
- else if (Hate && Skewer)
+ else if (_hate && _skewer)
{
Talk(SAY_BLADE_STORM);
DoCastAOE(SPELL_BLADE_DANCE_DUMMY);
@@ -245,8 +238,8 @@ class boss_alizabal : public CreatureScript
me->SetSpeed(MOVE_WALK, 1.0f);
me->SetSpeed(MOVE_RUN, 1.14f);
me->GetMotionMaster()->MoveChase(me->GetVictim());
- Hate = false;
- Skewer = false;
+ _hate = false;
+ _skewer = false;
break;
case EVENT_CAST_STORM:
DoCastAOE(SPELL_BLADE_DANCE);
@@ -256,11 +249,17 @@ class boss_alizabal : public CreatureScript
DoMeleeAttackIfReady();
}
+
+ private:
+ bool _intro;
+ bool _hate;
+ bool _skewer;
+
};
CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
- return new boss_alizabalAI(creature);
+ return GetBaradinHoldAI<boss_alizabalAI>(creature);
}
};
diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp
new file mode 100644
index 00000000000..743d7715bf1
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp
@@ -0,0 +1,200 @@
+/*
+* Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
+#include "baradin_hold.h"
+
+/* TODO:
+- Fel Firestorm need completion
+- Need Correct timer
+*/
+
+enum Spells
+{
+ SPELL_METEOR_SLASH = 88942,
+ SPELL_CONSUMING_DARKNESS = 88954,
+ SPELL_FEL_FIRESTORM = 88972,
+ SPELL_BERSEKER = 47008
+};
+
+enum Events
+{
+ EVENT_METEOR_SLASH = 1,
+ EVENT_CONSUMING_DARKNESS = 2,
+ EVENT_BERSEKER = 3
+};
+
+class boss_pit_lord_argaloth : public CreatureScript
+{
+ public:
+ boss_pit_lord_argaloth() : CreatureScript("boss_pit_lord_argaloth") { }
+
+ struct boss_pit_lord_argalothAI : public BossAI
+ {
+ boss_pit_lord_argalothAI(Creature* creature) : BossAI(creature, DATA_ARGALOTH) { }
+
+ void EnterCombat(Unit* /*who*/) OVERRIDE
+ {
+ _EnterCombat();
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
+ events.ScheduleEvent(EVENT_METEOR_SLASH, urand(10 * IN_MILLISECONDS, 20 * IN_MILLISECONDS));
+ events.ScheduleEvent(EVENT_CONSUMING_DARKNESS, urand(20 * IN_MILLISECONDS, 25 * IN_MILLISECONDS));
+ events.ScheduleEvent(SPELL_BERSEKER, 5 * MINUTE * IN_MILLISECONDS);
+ }
+
+ void EnterEvadeMode() OVERRIDE
+ {
+ me->GetMotionMaster()->MoveTargetedHome();
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
+ _DespawnAtEvade();
+ }
+
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) OVERRIDE
+ {
+ if (me->HealthBelowPctDamaged(33, damage) ||
+ me->HealthBelowPctDamaged(66, damage))
+ {
+ DoCastAOE(SPELL_FEL_FIRESTORM);
+ }
+ }
+
+ void JustDied(Unit* /*killer*/) OVERRIDE
+ {
+ _JustDied();
+ instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
+ }
+
+ void UpdateAI(uint32 diff) OVERRIDE
+ {
+ if (!UpdateVictim())
+ return;
+
+ events.Update(diff);
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
+
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_METEOR_SLASH:
+ DoCastAOE(SPELL_METEOR_SLASH);
+ events.ScheduleEvent(EVENT_METEOR_SLASH, urand(15 * IN_MILLISECONDS, 20 * IN_MILLISECONDS));
+ break;
+ case EVENT_CONSUMING_DARKNESS:
+ DoCastAOE(SPELL_CONSUMING_DARKNESS, true);
+ events.ScheduleEvent(EVENT_CONSUMING_DARKNESS, urand(20 * IN_MILLISECONDS, 25 * IN_MILLISECONDS));
+ break;
+ case SPELL_BERSEKER:
+ DoCast(me, EVENT_BERSEKER, true);
+ break;
+ default:
+ break;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return GetBaradinHoldAI<boss_pit_lord_argalothAI>(creature);
+ }
+};
+
+// 88954 / 95173 - Consuming Darkness
+class spell_argaloth_consuming_darkness : public SpellScriptLoader
+{
+ public:
+ spell_argaloth_consuming_darkness() : SpellScriptLoader("spell_argaloth_consuming_darkness") { }
+
+ class spell_argaloth_consuming_darkness_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_argaloth_consuming_darkness_SpellScript);
+
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ Trinity::Containers::RandomResizeList(targets, GetCaster()->GetMap()->Is25ManRaid() ? 8 : 3);
+ }
+
+ void Register() OVERRIDE
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_argaloth_consuming_darkness_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const OVERRIDE
+ {
+ return new spell_argaloth_consuming_darkness_SpellScript();
+ }
+};
+
+// 88942 / 95172 - Meteor Slash
+class spell_argaloth_meteor_slash : public SpellScriptLoader
+{
+ public:
+ spell_argaloth_meteor_slash() : SpellScriptLoader("spell_argaloth_meteor_slash") { }
+
+ class spell_argaloth_meteor_slash_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_argaloth_meteor_slash_SpellScript);
+
+ bool Load() OVERRIDE
+ {
+ _targetCount = 0;
+ return true;
+ }
+
+ void CountTargets(std::list<WorldObject*>& targets)
+ {
+ _targetCount = targets.size();
+ }
+
+ void SplitDamage()
+ {
+ if (!_targetCount)
+ return;
+
+ SetHitDamage(GetHitDamage() / _targetCount);
+ }
+
+ void Register() OVERRIDE
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_argaloth_meteor_slash_SpellScript::CountTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
+ OnHit += SpellHitFn(spell_argaloth_meteor_slash_SpellScript::SplitDamage);
+ }
+
+ private:
+ uint32 _targetCount;
+ };
+
+ SpellScript* GetSpellScript() const OVERRIDE
+ {
+ return new spell_argaloth_meteor_slash_SpellScript();
+ }
+};
+
+void AddSC_boss_pit_lord_argaloth()
+{
+ new boss_pit_lord_argaloth();
+ new spell_argaloth_consuming_darkness();
+ new spell_argaloth_meteor_slash();
+}
diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
index 0e2b7107548..0a8ca897459 100644
--- a/src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
+++ b/src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
@@ -27,142 +27,141 @@ DoorData const doorData[] =
class instance_baradin_hold: public InstanceMapScript
{
-public:
- instance_baradin_hold() : InstanceMapScript("instance_baradin_hold", 757) { }
+ public:
+ instance_baradin_hold() : InstanceMapScript(BHScriptName, 757) { }
- InstanceScript* GetInstanceScript(InstanceMap* map) const
- {
- return new instance_baradin_hold_InstanceMapScript(map);
- }
-
- struct instance_baradin_hold_InstanceMapScript: public InstanceScript
- {
- instance_baradin_hold_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
- {
- SetBossNumber(MAX_ENCOUNTERS);
- LoadDoorData(doorData);
- _argalothGUID = 0;
- _occutharGUID = 0;
- _alizabalGUID = 0;
- _argalothDoor = 0;
- _occutharDoor = 0;
- }
-
- void Initialize()
- {
- }
-
- void OnCreatureCreate(Creature* creature)
+ struct instance_baradin_hold_InstanceMapScript: public InstanceScript
{
- switch(creature->GetEntry())
+ instance_baradin_hold_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
- case BOSS_ARGALOTH:
- _argalothGUID = creature->GetGUID();
- break;
- case BOSS_OCCUTHAR:
- _occutharGUID = creature->GetGUID();
- break;
- case BOSS_ALIZABAL:
- _alizabalGUID = creature->GetGUID();
- break;
+ SetBossNumber(EncounterCount);
+ LoadDoorData(doorData);
+
+ ArgalothGUID = 0;
+ OccutharGUID = 0;
+ AlizabalGUID = 0;
+ ArgalothDoor = 0;
+ OccutharDoor = 0;
}
- }
- void OnGameObjectCreate(GameObject* go)
- {
- switch(go->GetEntry())
+ void OnCreatureCreate(Creature* creature)
{
- case GO_ARGALOTH_DOOR:
- _argalothDoor = go->GetGUID();
- AddDoor(go, true);
- break;
- case GO_OCCUTHAR_DOOR:
- _occutharDoor = go->GetGUID();
- AddDoor(go, true);
- break;
+ switch(creature->GetEntry())
+ {
+ case BOSS_ARGALOTH:
+ ArgalothGUID = creature->GetGUID();
+ break;
+ case BOSS_OCCUTHAR:
+ OccutharGUID = creature->GetGUID();
+ break;
+ case BOSS_ALIZABAL:
+ AlizabalGUID = creature->GetGUID();
+ break;
+ }
}
- }
- uint64 GetData64(uint32 data) const
- {
- switch (data)
+ void OnGameObjectCreate(GameObject* go)
{
- case DATA_ARGALOTH:
- return _argalothGUID;
- case DATA_OCCUTHAR:
- return _occutharGUID;
- case DATA_ALIZABAL:
- return _alizabalGUID;
- default:
- break;
+ switch(go->GetEntry())
+ {
+ case GO_ARGALOTH_DOOR:
+ ArgalothDoor = go->GetGUID();
+ AddDoor(go, true);
+ break;
+ case GO_OCCUTHAR_DOOR:
+ OccutharDoor = go->GetGUID();
+ AddDoor(go, true);
+ break;
+ }
}
- return 0;
- }
+ uint64 GetData64(uint32 data) const
+ {
+ switch (data)
+ {
+ case DATA_ARGALOTH:
+ return ArgalothGUID;
+ case DATA_OCCUTHAR:
+ return OccutharGUID;
+ case DATA_ALIZABAL:
+ return AlizabalGUID;
+ default:
+ break;
+ }
- void OnGameObjectRemove(GameObject* go)
- {
- switch(go->GetEntry())
+ return 0;
+ }
+
+ void OnGameObjectRemove(GameObject* go)
{
- case GO_ARGALOTH_DOOR:
- AddDoor(go, false);
- break;
- case GO_OCCUTHAR_DOOR:
- AddDoor(go, false);
- break;
+ switch(go->GetEntry())
+ {
+ case GO_ARGALOTH_DOOR:
+ AddDoor(go, false);
+ break;
+ case GO_OCCUTHAR_DOOR:
+ AddDoor(go, false);
+ break;
+ }
}
- }
- std::string GetSaveData()
- {
- OUT_SAVE_INST_DATA;
+ std::string GetSaveData()
+ {
+ OUT_SAVE_INST_DATA;
- std::ostringstream saveStream;
- saveStream << "B H " << GetBossSaveData();
+ std::ostringstream saveStream;
+ saveStream << "B H " << GetBossSaveData();
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
+ OUT_SAVE_INST_DATA_COMPLETE;
+ return saveStream.str();
+ }
- void Load(const char* in)
- {
- if (!in)
+ void Load(const char* in)
{
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
+ if (!in)
+ {
+ OUT_LOAD_INST_DATA_FAIL;
+ return;
+ }
- OUT_LOAD_INST_DATA(in);
+ OUT_LOAD_INST_DATA(in);
- char dataHead1, dataHead2;
+ char dataHead1, dataHead2;
- std::istringstream loadStream(in);
- loadStream >> dataHead1 >> dataHead2;
+ std::istringstream loadStream(in);
+ loadStream >> dataHead1 >> dataHead2;
- if (dataHead1 == 'B' && dataHead2 == 'H')
- {
- for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
+ if (dataHead1 == 'B' && dataHead2 == 'H')
{
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
+ for (uint8 i = 0; i < EncounterCount; ++i)
+ {
+ uint32 tmpState;
+ loadStream >> tmpState;
+ if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
+ tmpState = NOT_STARTED;
+
+ SetBossState(i, EncounterState(tmpState));
+ }
- SetBossState(i, EncounterState(tmpState));
}
+ else
+ OUT_LOAD_INST_DATA_FAIL;
- } else OUT_LOAD_INST_DATA_FAIL;
+ OUT_LOAD_INST_DATA_COMPLETE;
+ }
- OUT_LOAD_INST_DATA_COMPLETE;
- }
+ protected:
+ uint64 ArgalothGUID;
+ uint64 OccutharGUID;
+ uint64 AlizabalGUID;
+ uint64 ArgalothDoor;
+ uint64 OccutharDoor;
+ };
- private:
- uint64 _argalothGUID;
- uint64 _occutharGUID;
- uint64 _alizabalGUID;
- uint64 _argalothDoor;
- uint64 _occutharDoor;
- };
+ InstanceScript* GetInstanceScript(InstanceMap* map) const
+ {
+ return new instance_baradin_hold_InstanceMapScript(map);
+ }
};
void AddSC_instance_baradin_hold()
diff --git a/src/server/scripts/EasternKingdoms/CMakeLists.txt b/src/server/scripts/EasternKingdoms/CMakeLists.txt
index 540bbfb4deb..bf650f7c64d 100644
--- a/src/server/scripts/EasternKingdoms/CMakeLists.txt
+++ b/src/server/scripts/EasternKingdoms/CMakeLists.txt
@@ -18,6 +18,7 @@ set(scripts_STAT_SRCS
EasternKingdoms/AlteracValley/boss_vanndar.cpp
EasternKingdoms/AlteracValley/alterac_valley.cpp
EasternKingdoms/BaradinHold/boss_alizabal.cpp
+ EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp
EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp
EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp