aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2013-01-14 13:58:34 +0000
committerNay <dnpd.dd@gmail.com>2013-01-14 13:58:34 +0000
commite6a07076c3b275c60598abd08e21444313e7a0da (patch)
tree34426a1d3db102089407a2e978e90299e1c71303 /src/server/scripts/EasternKingdoms
parentb06c7e77858dcad0614c96f568126aee9966fa89 (diff)
parentc9ec5b4ce871bdeae446cbc86a4f88cee635ac53 (diff)
Merge remote-tracking branch 'origin/master' into mmaps
Conflicts: src/server/game/Entities/Unit/Unit.cpp src/server/game/Movement/MotionMaster.cpp src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp src/server/game/Movement/Spline/MoveSplineInit.cpp
Diffstat (limited to 'src/server/scripts/EasternKingdoms')
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp247
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp270
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp11
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp19
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h24
26 files changed, 273 insertions, 383 deletions
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
index 3a026d23faa..ae4b6197f4c 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
@@ -603,7 +603,7 @@ public:
void netherspite_infernal::netherspite_infernalAI::Cleanup()
{
- Creature *pMalchezaar = Unit::GetCreature(*me, malchezaar);
+ Creature* pMalchezaar = Unit::GetCreature(*me, malchezaar);
if (pMalchezaar && pMalchezaar->isAlive())
CAST_AI(boss_malchezaar::boss_malchezaarAI, pMalchezaar->AI())->Cleanup(me, point);
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
index 32ce484f715..27e057ce6aa 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
@@ -104,7 +104,7 @@ public:
{
me->HandleEmoteCommand(EMOTE_ONESHOT_CUSTOM_SPELL_01);
DoCast(player, SPELL_REVIVE, true);
- Talk(WHISPER_REVIVE,player->GetGUID());
+ Talk(WHISPER_REVIVE, player->GetGUID());
}
FlyBackTimer = 5000;
break;
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
index b596ad3f609..5d164fbfafa 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp
@@ -117,7 +117,7 @@ class boss_darkmaster_gandling : public CreatureScript
case EVENT_SHADOW_PORTAL:
if (HealthAbovePct(3))
{
- DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_SHADOW_PORTAL,true);
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_SHADOW_PORTAL, true);
events.ScheduleEvent(EVENT_SHADOW_PORTAL, urand(17000, 27000));
}
}
@@ -172,7 +172,7 @@ class spell_shadow_portal : public SpellScriptLoader
{
if (attempts++ >= 6) break;
- switch (urand(0,5))
+ switch (urand(0, 5))
{
case ROOM_HALL_OF_SECRETS:
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
@@ -223,7 +223,7 @@ class spell_shadow_portal : public SpellScriptLoader
}
};
-// Script for Shadow Portal spells 17863,17939,17943,17944,17946,17948
+// Script for Shadow Portal spells 17863, 17939, 17943, 17944, 17946, 17948
Position const SummonPos[18] =
{
// Hall of Secrects
@@ -331,7 +331,7 @@ class spell_shadow_portal_rooms : public SpellScriptLoader
if (Summoned)
{
Summoned->GetMotionMaster()->MoveRandom(5);
- Summoned->AI()->SetData(0,phase_to_set);
+ Summoned->AI()->SetData(0, phase_to_set);
}
}
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp
index d09a5ae96c9..617dff17220 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp
@@ -48,7 +48,7 @@ class boss_illucia_barov : public CreatureScript
struct boss_illuciabarovAI : public BossAI
{
- boss_illuciabarovAI(Creature* creature) : BossAI(creature,DATA_LADYILLUCIABAROV) {}
+ boss_illuciabarovAI(Creature* creature) : BossAI(creature, DATA_LADYILLUCIABAROV) {}
void EnterCombat(Unit* /*who*/)
{
@@ -78,7 +78,7 @@ class boss_illucia_barov : public CreatureScript
events.ScheduleEvent(EVENT_CURSEOFAGONY, 30000);
break;
case EVENT_SHADOWSHOCK:
- DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_SHADOWSHOCK,true);
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_SHADOWSHOCK, true);
events.ScheduleEvent(EVENT_SHADOWSHOCK, 12000);
break;
case EVENT_SILENCE:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp
index 5036158cae2..e2c7287f178 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp
@@ -91,7 +91,7 @@ class boss_instructor_malicia : public CreatureScript
events.ScheduleEvent(EVENT_CALLOFGRAVES, 65000);
break;
case EVENT_CORRUPTION:
- DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_CORRUPTION,true);
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_CORRUPTION, true);
events.ScheduleEvent(EVENT_CORRUPTION, 24000);
break;
case EVENT_RENEW:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
index 32c16a1c70c..b0a2d48d053 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
@@ -152,7 +152,7 @@ class boss_kirtonos_the_herald : public CreatureScript
switch (_introEvent)
{
case INTRO_1:
- me->GetMotionMaster()->MovePath(KIRTONOS_PATH,false);
+ me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
_introEvent = 0;
break;
case INTRO_2:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp
index e8fb4324d00..3a7aee0d6c6 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp
@@ -74,7 +74,7 @@ class boss_lord_alexei_barov : public CreatureScript
switch (eventId)
{
case EVENT_IMMOLATE:
- DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_IMMOLATE,true);
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_IMMOLATE, true);
events.ScheduleEvent(EVENT_IMMOLATE, 12000);
break;
case EVENT_VEILOFSHADOW:
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
index 6e3f024ac1d..c186ada72b7 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
@@ -114,7 +114,7 @@ public:
if (instance)
{
- if (Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS)))
+ if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS)))
{
if (temp->isDead())
temp->Respawn();
@@ -145,7 +145,7 @@ public:
if (instance)
{
- Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS));
+ Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS));
if (temp && temp->isAlive() && !temp->getVictim())
temp->AI()->AttackStart(who);
}
@@ -374,7 +374,7 @@ public:
if (instance)
{
- if (Creature *temp = Unit::GetCreature((*me), instance->GetData64(DATA_SACROLASH)))
+ if (Creature* temp = Unit::GetCreature((*me), instance->GetData64(DATA_SACROLASH)))
{
if (temp->isDead())
temp->Respawn();
@@ -406,7 +406,7 @@ public:
if (instance)
{
- Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_SACROLASH));
+ Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_SACROLASH));
if (temp && temp->isAlive() && !temp->getVictim())
temp->AI()->AttackStart(who);
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
index d575b7633cb..57699a34e17 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
@@ -122,7 +122,7 @@ public:
return false;
}
- Player const * GetPlayerInMap() const
+ Player const* GetPlayerInMap() const
{
Map::PlayerList const& players = instance->GetPlayers();
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
index 22c4da74d44..81f64ce6de0 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
@@ -102,7 +102,7 @@ class boss_archaedas : public CreatureScript
DoCast(minion, SPELL_AWAKEN_VAULT_WALKER, flag);
minion->CastSpell(minion, SPELL_ARCHAEDAS_AWAKEN, true);
minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- minion->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE);
+ minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
minion->setFaction(14);
}
}
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
index ac26056c6e6..df87eaca5a8 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
@@ -205,7 +205,7 @@ class instance_uldaman : public InstanceMapScript
continue;
archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true);
target->CastSpell(target, SPELL_ARCHAEDAS_AWAKEN, true);
- target->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE);
+ target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
target->setFaction(14);
return; // only want the first one we find
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
index 59997ebaa31..44fa0f87177 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
@@ -314,7 +314,7 @@ class npc_harrison_jones : public CreatureScript
me->SetEntry(NPC_HARRISON_JONES_2);
me->SetDisplayId(MODEL_HARRISON_JONES_2);
me->SetTarget(0);
- me->SetByteValue(UNIT_FIELD_BYTES_1,0,UNIT_STAND_STATE_DEAD);
+ me->SetByteValue(UNIT_FIELD_BYTES_1, 0,UNIT_STAND_STATE_DEAD);
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
if (instance)
instance->SetData(DATA_GONGEVENT, DONE);
@@ -330,7 +330,7 @@ class npc_harrison_jones : public CreatureScript
switch (_gongEvent)
{
case GONG_EVENT_1:
- me->GetMotionMaster()->MovePath(HARRISON_MOVE_1,false);
+ me->GetMotionMaster()->MovePath(HARRISON_MOVE_1, false);
_gongEvent = GONG_EVENT_2;
_gongTimer = 12000;
break;
@@ -345,14 +345,14 @@ class npc_harrison_jones : public CreatureScript
break;
case GONG_EVENT_3:
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG)))
- gong->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE);
+ gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
_gongEvent = GONG_EVENT_4;
_gongTimer = 105000;
break;
case GONG_EVENT_4:
me->RemoveAura(SPELL_BANGING_THE_GONG);
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG)))
- gong->SetFlag(GAMEOBJECT_FLAGS,GO_FLAG_NOT_SELECTABLE);
+ gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
// trigger or gong will need to be scripted to set IN_PROGRESS after enough hits.
// This is temp workaround.
@@ -362,7 +362,7 @@ class npc_harrison_jones : public CreatureScript
if (instance->GetData(DATA_GONGEVENT) == IN_PROGRESS)
{
// Players are Now Saved to instance at SPECIAL (Player should be notified?)
- me->GetMotionMaster()->MovePath(HARRISON_MOVE_2,false);
+ me->GetMotionMaster()->MovePath(HARRISON_MOVE_2, false);
_gongEvent = GONG_EVENT_5;
_gongTimer = 5000;
}
@@ -401,12 +401,12 @@ class npc_harrison_jones : public CreatureScript
ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR));
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ptarget->SetReactState(REACT_PASSIVE);
- ptarget->AI()->SetData(0,1);
+ ptarget->AI()->SetData(0, 1);
}
else
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ptarget->SetReactState(REACT_PASSIVE);
- ptarget->AI()->SetData(0,2);
+ ptarget->AI()->SetData(0, 2);
}
}
}
@@ -421,7 +421,7 @@ class npc_harrison_jones : public CreatureScript
DoCast(me, SPELL_STEALTH);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0));
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
- me->GetMotionMaster()->MovePath(HARRISON_MOVE_3,false);
+ me->GetMotionMaster()->MovePath(HARRISON_MOVE_3, false);
_gongTimer = 1000;
_gongEvent = 0;
break;
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
index 593ee05d951..1334d587464 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
@@ -36,17 +36,41 @@ enum Says
enum Spells
{
- SPELL_SHADOWWORDPAIN = 23952,
+ SPELL_SHADOW_WORD_PAIN = 23952,
SPELL_GOUGE = 24698,
SPELL_MARK = 24210,
- SPELL_CLEAVE = 26350, //Perhaps not right. Not a red aura...
- SPELL_PANTHER_TRANSFORM = 24190,
+ SPELL_CLEAVE = 26350, // Perhaps not right. Not a red aura...
+ SPELL_PANTHER_TRANSFORM = 24190
+};
+
+enum Events
+{
+ EVENT_SHADOW_WORD_PAIN = 0,
+ EVENT_GOUGE = 1,
+ EVENT_MARK = 2,
+ EVENT_CLEAVE = 3,
+ EVENT_VANISH = 4,
+ EVENT_VISIBLE = 5,
+ EVENT_SUMMON = 6
+};
+
+enum Phases
+{
+ PHASE_ONE = 1,
+ PHASE_TWO = 2
+};
+enum ModelIds
+{
MODEL_ID_NORMAL = 15218,
MODEL_ID_PANTHER = 15215,
- MODEL_ID_BLANK = 11686,
+ MODEL_ID_BLANK = 11686
+};
- NPC_ZULIAN_PROWLER = 15101
+Position const PosSummonProwlers[2] =
+{
+ { -11532.7998f, -1649.6734f, 41.4800f, 0.0f },
+ { -11532.9970f, -1606.4840f, 41.2979f, 0.0f }
};
class boss_arlokk : public CreatureScript
@@ -57,39 +81,14 @@ class boss_arlokk : public CreatureScript
{
boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) {}
- uint32 m_uiShadowWordPain_Timer;
- uint32 m_uiGouge_Timer;
- uint32 m_uiMark_Timer;
- uint32 m_uiCleave_Timer;
- uint32 m_uiVanish_Timer;
- uint32 m_uiVisible_Timer;
-
- uint32 m_uiSummon_Timer;
- uint32 m_uiSummonCount;
-
- Unit* m_pMarkedTarget;
- uint64 MarkedTargetGUID;
-
- bool m_bIsPhaseTwo;
- bool m_bIsVanished;
+ uint32 summonCount;
+ // Unit* markedTarget;
+ uint64 markedTargetGUID;
void Reset()
{
- m_uiShadowWordPain_Timer = 8000;
- m_uiGouge_Timer = 14000;
- m_uiMark_Timer = 35000;
- m_uiCleave_Timer = 4000;
- m_uiVanish_Timer = 60000;
- m_uiVisible_Timer = 6000;
-
- m_uiSummon_Timer = 5000;
- m_uiSummonCount = 0;
-
- m_bIsPhaseTwo = false;
- m_bIsVanished = false;
-
- MarkedTargetGUID = 0;
-
+ summonCount = 0;
+ markedTargetGUID = 0;
me->SetDisplayId(MODEL_ID_NORMAL);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
@@ -105,6 +104,10 @@ class boss_arlokk : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
+ events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 8000, 0, PHASE_ONE);
+ events.ScheduleEvent(EVENT_MARK, 35000, 0, PHASE_ONE);
+ events.ScheduleEvent(EVENT_SUMMON, 5000);
+ events.ScheduleEvent(EVENT_VANISH, 60000);
Talk(SAY_AGGRO);
}
@@ -112,136 +115,88 @@ class boss_arlokk : public CreatureScript
{
if (instance)
instance->SetData(DATA_ARLOKK, NOT_STARTED);
-
- //we should be summoned, so despawn
me->DespawnOrUnsummon();
}
void DoSummonPhanters()
{
- if (MarkedTargetGUID)
- Talk(SAY_FEAST_PANTHER, MarkedTargetGUID);
-
- me->SummonCreature(NPC_ZULIAN_PROWLER, -11532.7998f, -1649.6734f, 41.4800f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
- me->SummonCreature(NPC_ZULIAN_PROWLER, -11532.9970f, -1606.4840f, 41.2979f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
+ if (markedTargetGUID)
+ Talk(SAY_FEAST_PANTHER, markedTargetGUID);
+ me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
+ me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[1], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
}
void JustSummoned(Creature* summoned)
{
- if (Unit* pMarkedTarget = Unit::GetUnit(*me, MarkedTargetGUID))
- summoned->AI()->AttackStart(pMarkedTarget);
-
- ++m_uiSummonCount;
+ if (Unit* markedTarget = Unit::GetUnit(*me, markedTargetGUID))
+ summoned->AI()->AttackStart(markedTarget);
+ ++summonCount;
}
- void UpdateAI(const uint32 uiDiff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- if (!m_bIsPhaseTwo)
- {
- if (m_uiShadowWordPain_Timer <= uiDiff)
- {
- DoCast(me->getVictim(), SPELL_SHADOWWORDPAIN);
- m_uiShadowWordPain_Timer = 15000;
- }
- else
- m_uiShadowWordPain_Timer -= uiDiff;
-
- if (m_uiMark_Timer <= uiDiff)
- {
- Unit* pMarkedTarget = SelectTarget(SELECT_TARGET_RANDOM, 0);
-
- if (pMarkedTarget)
- {
- DoCast(pMarkedTarget, SPELL_MARK);
- MarkedTargetGUID = pMarkedTarget->GetGUID();
- }
- else
- sLog->outError(LOG_FILTER_TSCR, "boss_arlokk could not accuire pMarkedTarget.");
-
- m_uiMark_Timer = 15000;
- }
- else
- m_uiMark_Timer -= uiDiff;
- }
- else
- {
- //Cleave_Timer
- if (m_uiCleave_Timer <= uiDiff)
- {
- DoCast(me->getVictim(), SPELL_CLEAVE);
- m_uiCleave_Timer = 16000;
- }
- else
- m_uiCleave_Timer -= uiDiff;
-
- //Gouge_Timer
- if (m_uiGouge_Timer <= uiDiff)
- {
- DoCast(me->getVictim(), SPELL_GOUGE);
+ events.Update(diff);
- DoModifyThreatPercent(me->getVictim(), -80);
-
- m_uiGouge_Timer = 17000+rand()%10000;
- }
- else
- m_uiGouge_Timer -= uiDiff;
- }
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- if (m_uiSummonCount <= 30)
+ while (uint32 eventId = events.ExecuteEvent())
{
- if (m_uiSummon_Timer <= uiDiff)
+ switch (eventId)
{
- DoSummonPhanters();
- m_uiSummon_Timer = 5000;
+ case EVENT_SHADOW_WORD_PAIN:
+ DoCastVictim(SPELL_SHADOW_WORD_PAIN, true);
+ events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 15000, 0, PHASE_ONE);
+ break;
+ case EVENT_MARK:
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_MARK);
+ events.ScheduleEvent(EVENT_MARK, 15000, 0, PHASE_ONE);
+ break;
+ case EVENT_CLEAVE:
+ DoCastVictim(SPELL_SHADOW_WORD_PAIN, true);
+ events.ScheduleEvent(EVENT_CLEAVE, 16000, 0, PHASE_TWO);
+ break;
+ case EVENT_GOUGE:
+ DoCastVictim(SPELL_SHADOW_WORD_PAIN, true);
+ events.ScheduleEvent(EVENT_GOUGE, urand(17000, 27000), 0, PHASE_TWO);
+ break;
+ case EVENT_SUMMON:
+ if (summonCount <= 30)
+ DoSummonPhanters();
+ events.ScheduleEvent(EVENT_SUMMON, 5000);
+ break;
+ case EVENT_VANISH:
+ me->SetDisplayId(MODEL_ID_BLANK);
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ me->AttackStop();
+ DoResetThreat();
+ 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;
+ }
+ default:
+ break;
}
- else
- m_uiSummon_Timer -= uiDiff;
}
- if (m_uiVanish_Timer <= uiDiff)
- {
- //Invisble Model
- me->SetDisplayId(MODEL_ID_BLANK);
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
-
- me->AttackStop();
- DoResetThreat();
-
- m_bIsVanished = true;
-
- m_uiVanish_Timer = 45000;
- m_uiVisible_Timer = 6000;
- }
- else
- m_uiVanish_Timer -= uiDiff;
-
- if (m_bIsVanished)
- {
- if (m_uiVisible_Timer <= uiDiff)
- {
- //The Panther Model
- 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);
-
- m_bIsPhaseTwo = true;
- m_bIsVanished = false;
- }
- else
- m_uiVisible_Timer -= uiDiff;
- }
- else
- DoMeleeAttackIfReady();
+ DoMeleeAttackIfReady();
}
};
@@ -253,10 +208,7 @@ class boss_arlokk : public CreatureScript
class go_gong_of_bethekk : public GameObjectScript
{
- public:
- go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk")
- {
- }
+ public: go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk") {}
bool OnGossipHello(Player* /*player*/, GameObject* go)
{
@@ -264,7 +216,6 @@ class go_gong_of_bethekk : public GameObjectScript
{
if (instance->GetData(DATA_ARLOKK) == DONE || instance->GetData(DATA_ARLOKK) == IN_PROGRESS)
return true;
-
instance->SetData(DATA_ARLOKK, IN_PROGRESS);
return true;
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
index 7943e51a7cd..70399b6934c 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
@@ -49,6 +49,11 @@ class boss_gahzranka : public CreatureScript // gahzranka
{
boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) {}
+ void Reset()
+ {
+ _Reset();
+ }
+
void JustDied(Unit* /*killer*/)
{
_JustDied();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
index 4b7bee5abf1..f06500694a5 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
@@ -47,6 +47,11 @@ class boss_grilek : public CreatureScript // grilek
{
boss_grilekAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {}
+ void Reset()
+ {
+ _Reset();
+ }
+
void JustDied(Unit* /*killer*/)
{
_JustDied();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
index 87a9c02e3ed..8003f4a1ed7 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* 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
@@ -16,12 +15,12 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Hakkar
-SD%Complete: 95
-SDComment: Blood siphon spell buggy cause of Core Issue.
-SDCategory: Zul'Gurub
-EndScriptData */
+/*
+Name: Boss_Hakkar
+%Complete: 95
+Comment: Blood siphon spell buggy cause of Core Issue.
+Category: Zul'Gurub
+*/
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
@@ -31,18 +30,18 @@ enum Says
{
SAY_AGGRO = 0,
SAY_FLEEING = 1,
- SAY_MINION_DESTROY = 2, //where does it belong?
- SAY_PROTECT_ALTAR = 3 //where does it belong?
+ SAY_MINION_DESTROY = 2, // Where does it belong?
+ SAY_PROTECT_ALTAR = 3 // Where does it belong?
};
enum Spells
{
- SPELL_BLOODSIPHON = 24322,
- SPELL_CORRUPTEDBLOOD = 24328,
- SPELL_CAUSEINSANITY = 24327, //Not working disabled.
- SPELL_WILLOFHAKKAR = 24178,
+ SPELL_BLOOD_SIPHON = 24322, // Buggy ?
+ SPELL_CORRUPTED_BLOOD = 24328,
+ SPELL_CAUSE_INSANITY = 24327, // Spell needs scripting.
+ SPELL_WILL_OF_HAKKAR = 24178,
SPELL_ENRAGE = 24318,
-// The Aspects of all High Priests
+ // The Aspects of all High Priests spells
SPELL_ASPECT_OF_JEKLIK = 24687,
SPELL_ASPECT_OF_VENOXIS = 24688,
SPELL_ASPECT_OF_MARLI = 24686,
@@ -50,7 +49,22 @@ enum Spells
SPELL_ASPECT_OF_ARLOKK = 24690
};
-class boss_hakkar : public CreatureScript // hakkar
+enum Events
+{
+ EVENT_BLOOD_SIPHON = 0,
+ EVENT_CORRUPTED_BLOOD = 1,
+ EVENT_CAUSE_INSANITY = 2, // Spell needs scripting. Event disabled
+ EVENT_WILL_OF_HAKKAR = 3,
+ EVENT_ENRAGE = 4,
+ // The Aspects of all High Priests events
+ EVENT_ASPECT_OF_JEKLIK = 5,
+ EVENT_ASPECT_OF_VENOXIS = 6,
+ EVENT_ASPECT_OF_MARLI = 7,
+ EVENT_ASPECT_OF_THEKAL = 8,
+ EVENT_ASPECT_OF_ARLOKK = 9
+};
+
+class boss_hakkar : public CreatureScript
{
public: boss_hakkar() : CreatureScript("boss_hakkar") {}
@@ -58,47 +72,9 @@ class boss_hakkar : public CreatureScript // hakkar
{
boss_hakkarAI(Creature* creature) : BossAI(creature, DATA_HAKKAR) {}
- uint32 BloodSiphon_Timer;
- uint32 CorruptedBlood_Timer;
- uint32 CauseInsanity_Timer;
- uint32 WillOfHakkar_Timer;
- uint32 Enrage_Timer;
-
- uint32 CheckJeklik_Timer;
- uint32 CheckVenoxis_Timer;
- uint32 CheckMarli_Timer;
- uint32 CheckThekal_Timer;
- uint32 CheckArlokk_Timer;
-
- uint32 AspectOfJeklik_Timer;
- uint32 AspectOfVenoxis_Timer;
- uint32 AspectOfMarli_Timer;
- uint32 AspectOfThekal_Timer;
- uint32 AspectOfArlokk_Timer;
-
- bool Enraged;
-
void Reset()
{
- BloodSiphon_Timer = 90000;
- CorruptedBlood_Timer = 25000;
- CauseInsanity_Timer = 17000;
- WillOfHakkar_Timer = 17000;
- Enrage_Timer = 600000;
-
- CheckJeklik_Timer = 1000;
- CheckVenoxis_Timer = 2000;
- CheckMarli_Timer = 3000;
- CheckThekal_Timer = 4000;
- CheckArlokk_Timer = 5000;
-
- AspectOfJeklik_Timer = 4000;
- AspectOfVenoxis_Timer = 7000;
- AspectOfMarli_Timer = 12000;
- AspectOfThekal_Timer = 8000;
- AspectOfArlokk_Timer = 18000;
-
- Enraged = false;
+ _Reset();
}
void JustDied(Unit* /*killer*/)
@@ -109,139 +85,83 @@ class boss_hakkar : public CreatureScript // hakkar
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
+ events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000);
+ events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, 25000);
+ events.ScheduleEvent(EVENT_CAUSE_INSANITY, 17000);
+ events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, 17000);
+ events.ScheduleEvent(EVENT_ENRAGE, 600000);
+ if (instance->GetData(DATA_JEKLIK) != DONE)
+ events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 4000);
+ if (instance->GetData(DATA_VENOXIS) != DONE)
+ events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 7000);
+ if (instance->GetData(DATA_MARLI) != DONE)
+ events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000);
+ if (instance->GetData(DATA_THEKAL) != DONE)
+ events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 8000);
+ if (instance->GetData(DATA_ARLOKK) != DONE)
+ events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 18000);
Talk(SAY_AGGRO);
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- //BloodSiphon_Timer
- if (BloodSiphon_Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_BLOODSIPHON);
- BloodSiphon_Timer = 90000;
- } else BloodSiphon_Timer -= diff;
-
- //CorruptedBlood_Timer
- if (CorruptedBlood_Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_CORRUPTEDBLOOD);
- CorruptedBlood_Timer = urand(30000, 45000);
- } else CorruptedBlood_Timer -= diff;
-
- //CauseInsanity_Timer
- /*if (CauseInsanity_Timer <= diff)
- {
- if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_CAUSEINSANITY);
-
- CauseInsanity_Timer = urand(35000, 43000);
- } else CauseInsanity_Timer -= diff;*/
-
- //WillOfHakkar_Timer
- if (WillOfHakkar_Timer <= diff)
- {
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_WILLOFHAKKAR);
-
- WillOfHakkar_Timer = urand(25000, 35000);
- } else WillOfHakkar_Timer -= diff;
+ events.Update(diff);
- if (!Enraged && Enrage_Timer <= diff)
- {
- DoCast(me, SPELL_ENRAGE);
- Enraged = true;
- } else Enrage_Timer -= diff;
-
- //Checking if Jeklik is dead. If not we cast her Aspect
- if (CheckJeklik_Timer <= diff)
- {
- if (instance)
- {
- if (instance->GetData(DATA_JEKLIK) != DONE)
- {
- if (AspectOfJeklik_Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_ASPECT_OF_JEKLIK);
- AspectOfJeklik_Timer = urand(10000, 14000);
- } else AspectOfJeklik_Timer -= diff;
- }
- }
- CheckJeklik_Timer = 1000;
- } else CheckJeklik_Timer -= diff;
-
- //Checking if Venoxis is dead. If not we cast his Aspect
- if (CheckVenoxis_Timer <= diff)
- {
- if (instance)
- {
- if (instance->GetData(DATA_VENOXIS) != DONE)
- {
- if (AspectOfVenoxis_Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_ASPECT_OF_VENOXIS);
- AspectOfVenoxis_Timer = 8000;
- } else AspectOfVenoxis_Timer -= diff;
- }
- }
- CheckVenoxis_Timer = 1000;
- } else CheckVenoxis_Timer -= diff;
-
- //Checking if Marli is dead. If not we cast her Aspect
- if (CheckMarli_Timer <= diff)
- {
- if (instance)
- {
- if (instance->GetData(DATA_MARLI) != DONE)
- {
- if (AspectOfMarli_Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI);
- AspectOfMarli_Timer = 10000;
- } else AspectOfMarli_Timer -= diff;
-
- }
- }
- CheckMarli_Timer = 1000;
- } else CheckMarli_Timer -= diff;
-
- //Checking if Thekal is dead. If not we cast his Aspect
- if (CheckThekal_Timer <= diff)
- {
- if (instance)
- {
- if (instance->GetData(DATA_THEKAL) != DONE)
- {
- if (AspectOfThekal_Timer <= diff)
- {
- DoCast(me, SPELL_ASPECT_OF_THEKAL);
- AspectOfThekal_Timer = 15000;
- } else AspectOfThekal_Timer -= diff;
- }
- }
- CheckThekal_Timer = 1000;
- } else CheckThekal_Timer -= diff;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- //Checking if Arlokk is dead. If yes we cast her Aspect
- if (CheckArlokk_Timer <= diff)
+ while (uint32 eventId = events.ExecuteEvent())
{
- if (instance)
+ switch (eventId)
{
- if (instance->GetData(DATA_ARLOKK) != DONE)
- {
- if (AspectOfArlokk_Timer <= diff)
- {
- DoCast(me, SPELL_ASPECT_OF_ARLOKK);
- DoResetThreat();
-
- AspectOfArlokk_Timer = urand(10000, 15000);
- } else AspectOfArlokk_Timer -= diff;
- }
+ case EVENT_BLOOD_SIPHON:
+ DoCastVictim(SPELL_BLOOD_SIPHON, true);
+ events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000);
+ break;
+ case EVENT_CORRUPTED_BLOOD:
+ DoCastVictim(SPELL_CORRUPTED_BLOOD, true);
+ events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, urand(30000, 45000));
+ break;
+ case EVENT_CAUSE_INSANITY:
+ // DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_CAUSE_INSANITY);
+ // events.ScheduleEvent(EVENT_CAUSE_INSANITY, urand(35000, 45000));
+ break;
+ case EVENT_WILL_OF_HAKKAR:
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_WILL_OF_HAKKAR);
+ events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, urand(25000, 35000));
+ break;
+ case EVENT_ENRAGE:
+ if (!me->HasAura(SPELL_ENRAGE))
+ DoCast(me, SPELL_ENRAGE);
+ events.ScheduleEvent(EVENT_ENRAGE, 90000);
+ break;
+ case EVENT_ASPECT_OF_JEKLIK:
+ DoCastVictim(SPELL_ASPECT_OF_JEKLIK, true);
+ events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, urand(10000, 14000));
+ break;
+ case EVENT_ASPECT_OF_VENOXIS:
+ DoCastVictim(SPELL_ASPECT_OF_VENOXIS, true);
+ events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 8000);
+ break;
+ case EVENT_ASPECT_OF_MARLI:
+ DoCastVictim(SPELL_ASPECT_OF_MARLI, true);
+ events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 10000);
+ break;
+ case EVENT_ASPECT_OF_THEKAL:
+ DoCastVictim(SPELL_ASPECT_OF_THEKAL, true);
+ events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 15000);
+ break;
+ case EVENT_ASPECT_OF_ARLOKK:
+ DoCastVictim(SPELL_ASPECT_OF_ARLOKK, true);
+ events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, urand(10000, 15000));
+ break;
+ default:
+ break;
}
- CheckArlokk_Timer = 1000;
- } else CheckArlokk_Timer -= diff;
+ }
DoMeleeAttackIfReady();
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
index cd55d648196..15228815d69 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
@@ -48,6 +48,11 @@ class boss_hazzarah : public CreatureScript
{
boss_hazzarahAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {}
+ void Reset()
+ {
+ _Reset();
+ }
+
void JustDied(Unit* /*killer*/)
{
_JustDied();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
index 4d27fd99769..7f19962e719 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
@@ -70,6 +70,7 @@ class boss_jeklik : public CreatureScript //jeklik
void Reset()
{
+ _Reset();
Charge_Timer = 20000;
SonicBurst_Timer = 8000;
Screech_Timer = 13000;
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
index dd1edcb3529..005609e88db 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
@@ -55,12 +55,6 @@ enum Events
EVENT_TELEPORT = 4
};
-enum CreatureId
-{
- NPC_SHADE_OF_JINDO = 14986,
- NPC_SACRIFICED_TROLL = 14826
-};
-
Position const TeleportLoc = {-11583.7783f, -1249.4278f, 77.5471f, 4.745f};
class boss_jindo : public CreatureScript
@@ -71,6 +65,11 @@ class boss_jindo : public CreatureScript
{
boss_jindoAI(Creature* creature) : BossAI(creature, DATA_JINDO) {}
+ void Reset()
+ {
+ _Reset();
+ }
+
void JustDied(Unit* /*killer*/)
{
_JustDied();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
index 6b527ba45f3..258dda26c11 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
@@ -51,11 +51,6 @@ enum Spells
SPELL_SUNDERARMOR = 24317
};
-enum CreatureId
-{
- NPC_SPEAKER = 11391
-};
-
class boss_mandokir : public CreatureScript
{
public: boss_mandokir() : CreatureScript("boss_mandokir") {}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
index 4d2a892d305..40850a988e4 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
@@ -77,6 +77,11 @@ class boss_marli : public CreatureScript
{
boss_marliAI(Creature* creature) : BossAI(creature, DATA_MARLI) {}
+ void Reset()
+ {
+ _Reset();
+ }
+
void JustDied(Unit* /*killer*/)
{
_JustDied();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
index 65730d1baf2..6bf87decf7e 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
@@ -57,6 +57,7 @@ class boss_renataki : public CreatureScript
void Reset()
{
+ _Reset();
Invisible_Timer = urand(8000, 18000);
Ambush_Timer = 3000;
Visible_Timer = 4000;
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
index 6710ca67863..ab45162fc35 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
@@ -89,6 +89,7 @@ class boss_thekal : public CreatureScript
void Reset()
{
+ _Reset();
Enraged = false;
WasDead = false;
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp
index f5c10631a9b..11a6e710c3c 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp
@@ -54,11 +54,6 @@ enum Spells
SPELL_FRENZY = 8269 // 20% health - frenzy
};
-enum NPCs
-{
- NPC_PARASITIC_SERPENT = 14884
-};
-
enum Events
{
// troll form
@@ -83,6 +78,11 @@ enum Phases
PHASE_TWO = 2 // snake form
};
+enum NPCs
+{
+ NPC_PARASITIC_SERPENT = 14884
+};
+
class boss_venoxis : public CreatureScript
{
public: boss_venoxis() : CreatureScript("boss_venoxis") {}
@@ -93,21 +93,14 @@ class boss_venoxis : public CreatureScript
void Reset()
{
- events.Reset();
- summons.DespawnAll();
-
- // make sure this boss is properly reset
- instance->SetBossState(DATA_VENOXIS, NOT_STARTED);
-
+ _Reset();
// remove all spells and auras from previous attempts
me->RemoveAllAuras();
me->SetReactState(REACT_PASSIVE);
-
// set some internally used variables to their defaults
_inMeleeRange = 0;
_transformed = false;
_frenzied = false;
-
events.SetPhase(PHASE_ONE);
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
index 196df2b98b9..d1e7edf0218 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
@@ -47,6 +47,11 @@ class boss_wushoolay : public CreatureScript
{
boss_wushoolayAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {}
+ void Reset()
+ {
+ _Reset();
+ }
+
void JustDied(Unit* /*killer*/)
{
_JustDied();
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
index 55bf0e50e3c..2544e4f4d5f 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
@@ -26,15 +26,15 @@ enum DataTypes
DATA_VENOXIS = 1, // Main boss
DATA_MARLI = 2, // Main boss
DATA_ARLOKK = 3, // Main boss
- DATA_HAKKAR = 4, // Main boss
- DATA_MANDOKIR = 5, // Optional boss
- DATA_JINDO = 6, // Optional boss
- DATA_GAHZRANKA = 7, // Optional boss
- DATA_EDGE_OF_MADNESS = 8, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay
- DATA_THEKAL = 9, // ??
- DATA_LORKHAN = 10, // ??
- DATA_ZATH = 11, // ??
- DATA_OHGAN = 12 // ??
+ DATA_THEKAL = 4, // Main boss
+ DATA_HAKKAR = 5, // End boss
+ DATA_MANDOKIR = 6, // Optional boss
+ DATA_JINDO = 7, // Optional boss
+ DATA_GAHZRANKA = 8, // Optional boss
+ DATA_EDGE_OF_MADNESS = 9, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay
+ DATA_LORKHAN = 10, // Zealot Lor'Khan add to High priest Thekal!
+ DATA_ZATH = 11, // Zealot Zath add to High priest Thekal!
+ DATA_OHGAN = 12 // Bloodlord Mandokir's raptor mount
};
enum CreatureIds
@@ -43,7 +43,11 @@ enum CreatureIds
NPC_ZEALOT_ZATH = 11348,
NPC_HIGH_PRIEST_THEKAL = 14509,
NPC_JINDO_THE_HEXXER = 11380,
- NPC_NIGHTMARE_ILLUSION = 15163
+ NPC_NIGHTMARE_ILLUSION = 15163,
+ NPC_ZULIAN_PROWLER = 15101,
+ NPC_SPEAKER = 11391,
+ NPC_SHADE_OF_JINDO = 14986,
+ NPC_SACRIFICED_TROLL = 14826
};
#endif