aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp56
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp50
3 files changed, 55 insertions, 53 deletions
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
index 7d2c8807eeb..51aab7c20d0 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
@@ -79,11 +79,7 @@ class boss_arlokk : public CreatureScript
struct boss_arlokkAI : public BossAI
{
- boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) {}
-
- uint32 summonCount;
- // Unit* markedTarget;
- uint64 markedTargetGUID;
+ boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) { }
void Reset()
{
@@ -113,13 +109,15 @@ class boss_arlokk : public CreatureScript
void JustReachedHome()
{
- if (instance)
- instance->SetData(DATA_ARLOKK, NOT_STARTED);
+ instance->SetBossState(DATA_ARLOKK, NOT_STARTED);
me->DespawnOrUnsummon();
}
void DoSummonPhanters()
{
+ if (summonCount > 30)
+ return;
+
if (markedTargetGUID)
Talk(SAY_FEAST_PANTHER, markedTargetGUID);
me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
@@ -152,7 +150,8 @@ class boss_arlokk : public CreatureScript
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 15000, 0, PHASE_ONE);
break;
case EVENT_MARK:
- DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_MARK);
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ DoCast(target, SPELL_MARK);
events.ScheduleEvent(EVENT_MARK, 15000, 0, PHASE_ONE);
break;
case EVENT_CLEAVE:
@@ -164,8 +163,7 @@ class boss_arlokk : public CreatureScript
events.ScheduleEvent(EVENT_GOUGE, urand(17000, 27000), 0, PHASE_TWO);
break;
case EVENT_SUMMON:
- if (summonCount <= 30)
- DoSummonPhanters();
+ DoSummonPhanters();
events.ScheduleEvent(EVENT_SUMMON, 5000);
break;
case EVENT_VANISH:
@@ -176,21 +174,21 @@ class boss_arlokk : public CreatureScript
events.ScheduleEvent(EVENT_VISIBLE, 6000);
break;
case EVENT_VISIBLE:
- {
- me->SetDisplayId(MODEL_ID_PANTHER);
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- const CreatureTemplate* cinfo = me->GetCreatureTemplate();
- me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35)));
- me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35)));
- me->UpdateDamagePhysical(BASE_ATTACK);
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- AttackStart(target);
- events.ScheduleEvent(EVENT_VANISH, 39000);
- events.ScheduleEvent(EVENT_CLEAVE, 0, PHASE_TWO);
- events.ScheduleEvent(EVENT_GOUGE, 14000, 0, PHASE_TWO);
- events.SetPhase(PHASE_TWO);
- break;
- }
+ {
+ me->SetDisplayId(MODEL_ID_PANTHER);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ const CreatureTemplate* cinfo = me->GetCreatureTemplate();
+ me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35)));
+ me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35)));
+ me->UpdateDamagePhysical(BASE_ATTACK);
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
+ AttackStart(target);
+ events.ScheduleEvent(EVENT_VANISH, 39000);
+ events.ScheduleEvent(EVENT_CLEAVE, 0, PHASE_TWO);
+ events.ScheduleEvent(EVENT_GOUGE, 14000, 0, PHASE_TWO);
+ events.SetPhase(PHASE_TWO);
+ break;
+ }
default:
break;
}
@@ -198,11 +196,15 @@ class boss_arlokk : public CreatureScript
DoMeleeAttackIfReady();
}
+
+ private:
+ uint32 summonCount;
+ uint64 markedTargetGUID;
};
CreatureAI* GetAI(Creature* creature) const
{
- return new boss_arlokkAI(creature);
+ return GetZulGurubAI<boss_arlokkAI>(creature);
}
};
@@ -214,7 +216,7 @@ class go_gong_of_bethekk : public GameObjectScript
{
if (InstanceScript* instance = go->GetInstanceScript())
{
- if (instance->GetData(DATA_ARLOKK) == DONE || instance->GetBossState(DATA_ARLOKK) == IN_PROGRESS)
+ if (instance->GetBossState(DATA_ARLOKK) == DONE || instance->GetBossState(DATA_ARLOKK) == IN_PROGRESS)
return true;
instance->SetBossState(DATA_ARLOKK, IN_PROGRESS);
return true;
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
index b4edc6553e6..e402480609b 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
@@ -23,12 +23,12 @@ SDComment: Ohgan function needs improvements.
SDCategory: Zul'Gurub
EndScriptData */
-#include "zulgurub.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "Spell.h"
#include "SpellAuras.h"
#include "SpellScript.h"
+#include "zulgurub.h"
enum Says
{
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
index 2e8bfd621b9..fbe8550d16a 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
@@ -38,27 +38,18 @@ class instance_zulgurub : public InstanceMapScript
SetBossNumber(EncounterCount);
}
- //If all High Priest bosses were killed. Lorkhan, Zath and Ohgan are added too.
- //Storing Lorkhan, Zath and Thekal because we need to cast on them later. Jindo is needed for healfunction too.
-
- uint64 lorKhanGUID;
- uint64 zathGUID;
- uint64 thekalGUID;
- uint64 jindoGUID;
- uint64 speakerGUID;
-
void Initialize()
{
- lorKhanGUID = 0;
- zathGUID = 0;
- thekalGUID = 0;
- jindoGUID = 0;
- speakerGUID = 0;
+ ZealotLorkhanGUID = 0;
+ ZealotZathGUID = 0;
+ HighPriestTekalGUID = 0;
+ JindoTheHexxerGUID = 0;
+ VilebranchSpeakerGUID = 0;
}
bool IsEncounterInProgress() const
{
- //not active in Zul'Gurub
+ // not active in Zul'Gurub
return false;
}
@@ -67,19 +58,19 @@ class instance_zulgurub : public InstanceMapScript
switch (creature->GetEntry())
{
case NPC_ZEALOT_LORKHAN:
- lorKhanGUID = creature->GetGUID();
+ ZealotLorkhanGUID = creature->GetGUID();
break;
case NPC_ZEALOT_ZATH:
- zathGUID = creature->GetGUID();
+ ZealotZathGUID = creature->GetGUID();
break;
case NPC_HIGH_PRIEST_THEKAL:
- thekalGUID = creature->GetGUID();
+ HighPriestTekalGUID = creature->GetGUID();
break;
case NPC_JINDO_THE_HEXXER:
- jindoGUID = creature->GetGUID();
+ JindoTheHexxerGUID = creature->GetGUID();
break;
- case NPC_SPEAKER:
- speakerGUID = creature->GetGUID();
+ case NPC_VILEBRANCH_SPEAKER:
+ VilebranchSpeakerGUID = creature->GetGUID();
break;
case NPC_MANDOKIR:
if (GetBossState(DATA_MANDOKIR) == DONE)
@@ -93,16 +84,16 @@ class instance_zulgurub : public InstanceMapScript
switch (uiData)
{
case DATA_LORKHAN:
- return lorKhanGUID;
+ return ZealotLorkhanGUID;
break;
case DATA_ZATH:
- return zathGUID;
+ return ZealotZathGUID;
break;
case DATA_THEKAL:
- return thekalGUID;
+ return HighPriestTekalGUID;
break;
case DATA_JINDO:
- return jindoGUID;
+ return JindoTheHexxerGUID;
break;
}
return 0;
@@ -150,6 +141,15 @@ class instance_zulgurub : public InstanceMapScript
OUT_LOAD_INST_DATA_COMPLETE;
}
+ private:
+ //If all High Priest bosses were killed. Lorkhan, Zath and Ohgan are added too.
+ //Storing Lorkhan, Zath and Thekal because we need to cast on them later. Jindo is needed for healfunction too.
+
+ uint64 ZealotLorkhanGUID;
+ uint64 ZealotZathGUID;
+ uint64 HighPriestTekalGUID;
+ uint64 JindoTheHexxerGUID;
+ uint64 VilebranchSpeakerGUID
};
InstanceScript* GetInstanceScript(InstanceMap* map) const