Merge pull request #6996 from 4m1g0/cleanup3

Core/Scripts: Use proper headers, code style, creature_texts and cleanup (Battle for Mount Hyjal)
This commit is contained in:
Subv
2012-07-01 14:01:28 -07:00
12 changed files with 286 additions and 372 deletions
@@ -0,0 +1,66 @@
DELETE FROM `script_texts` WHERE entry IN (-1534019, -1534020, -1534021, -1534022, -1534023, -1534024, -1534025, -1534026, -1534027, -1534028, -1534029 , -1534030);
-- Anetheron
DELETE FROM `creature_text` WHERE `entry`=17808;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(17808,0,0, 'The clock... is still... ticking.',14,0,100,0,0,10982, 'Anetheron - SAY_ONDEATH'),
(17808,1,0, 'Your hopes are lost!',14,0,100,0,0,10981, 'Anetheron - SAY_ONSLAY1'),
(17808,1,1, 'Scream for me!',14,0,100,0,0,11038, 'Anetheron - SAY_ONSLAY2'),
(17808,1,2, 'Pity, no time for a slow death!',14,0,100,0,0,11039, 'Anetheron - SAY_ONSLAY3'),
(17808,2,0, 'The swarm is eager to feed!',14,0,100,0,0,10979, 'Anetheron - SAY_SWARM1'),
(17808,2,1, 'Pestilence upon you!',14,0,100,0,0,11037, 'Anetheron - SAY_SWARM2'),
(17808,3,0, 'You look tired...',14,0,100,0,0,10978, 'Anetheron - SAY_SLEEP1'),
(17808,3,1, 'Sweet dreams...',14,0,100,0,0,11545, 'Anetheron - SAY_SLEEP2'),
(17808,4,0, 'Let fire rain from above!',14,0,100,0,0,10980, 'Anetheron - SAY_INFERNO1'),
(17808,4,1, 'Earth and sky shall burn!',14,0,100,0,0,11036, 'Anetheron - SAY_INFERNO2'),
(17808,5,0, 'You are defenders of a doomed world! Flee here, and perhaps you will prolong your pathetic lives!',14,0,100,0,0,10977, 'Anetheron - SAY_ONAGGRO');
-- Azgalor
DELETE FROM `creature_text` WHERE `entry`=17842;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(17842,0,0, 'Your time is almost... up',14,0,100,0,0,11002, 'Azgalor - SAY_ONDEATH'),
(17842,1,0, 'Reesh, hokta!',14,0,100,0,0,11001, 'Azgalor - SAY_ONSLAY1'),
(17842,1,1, 'Don''t fight it',14,0,100,0,0,11048, 'Azgalor - SAY_ONSLAY2'),
(17842,1,2, 'No one is going to save you',14,0,100,0,0,11047, 'Azgalor - SAY_ONSLAY3'),
(17842,2,0, 'Just a taste... of what awaits you',14,0,100,0,0,11046, 'Azgalor - SAY_DOOM1'),
(17842,2,1, 'Suffer you despicable insect!',14,0,100,0,0,11000, 'Azgalor - SAY_DOOM2'),
(17842,3,0, 'Abandon all hope! The legion has returned to finish what was begun so many years ago. This time there will be no escape!',14,0,100,0,0,10999, 'Azgalor - SAY_ONAGGRO');
-- Kazrogal
DELETE FROM `creature_text` WHERE `entry`=17888;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(17888,0,0, 'Shaza-Kiel!',14,0,100,0,0,11017, 'Kazrogal - SAY_ONSLAY1'),
(17888,0,1, 'You... are nothing!',14,0,100,0,0,11053, 'Kazrogal - SAY_ONSLAY2'),
(17888,0,2, 'Miserable nuisance!',14,0,100,0,0,11054, 'Kazrogal - SAY_ONSLAY3'),
(17888,1,0, 'Your death will be a painful one.',14,0,100,0,0,11016, 'Kazrogal - SAY_MARK1'),
(17888,1,1, 'You... are marked.',14,0,100,0,0,11052, 'Kazrogal - SAY_MARK2'),
(17888,2,0, 'Cry for mercy! Your meaningless lives will soon be forfeit.',14,0,100,0,0,11015, 'Kazrogal - SAY_ONAGGRO');
-- Rage Winterchill
DELETE FROM `creature_text` WHERE `entry`=17767;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(17767,0,0, 'You have won this battle, but not... the... war',14,0,100,0,0,11026, 'Rage Winterchill - SAY_ONDEATH'),
(17767,1,0, 'All life must perish!',14,0,100,0,0,11025, 'Rage Winterchill - SAY_ONSLAY1'),
(17767,1,1, 'Victory to the Legion!',14,0,100,0,0,11057, 'Rage Winterchill - SAY_ONSLAY2'),
(17767,2,0, 'Crumble and rot!',14,0,100,0,0,11023, 'Rage Winterchill - SAY_DECAY1'),
(17767,2,1, 'Ashes to ashes, dust to dust',14,0,100,0,0,11055, 'Rage Winterchill - SAY_DECAY2'),
(17767,3,0, 'Succumb to the icy chill... of death!',14,0,100,0,0,11024, 'Rage Winterchill - SAY_NOVA1'),
(17767,3,1, 'It will be much colder in your grave',14,0,100,0,0,11058, 'Rage Winterchill - SAY_NOVA2'),
(17767,4,0, 'The Legion''s final conquest has begun! Once again the subjugation of this world is within our grasp. Let none survive!',14,0,100,0,0,11022, 'Rage Winterchill - SAY_ONAGGRO');
-- Archimonde
DELETE FROM `creature_text` WHERE `entry`=17968;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
(17968,1,0, 'Your resistance is insignificant.',14,0,100,0,0,10987, 'Archimonde - SAY_AGGRO'),
(17968,2,0, 'This world will burn!',14,0,100,0,0,10990, 'Archimonde - SAY_DOOMFIRE1'),
(17968,2,1, 'Manach sheek-thrish!',14,0,100,0,0,11041, 'Archimonde - SAY_DOOMFIRE2'),
(17968,3,0, 'A-kreesh!',14,0,100,0,0,11041, 'Archimonde - SAY_AIR_BURST1'),
(17968,3,1, 'Away vermin!',14,0,100,0,0,10989, 'Archimonde - SAY_AIR_BURST2'),
(17968,4,0, 'All creation will be devoured!',14,0,100,0,0,11044, 'Archimonde - SAY_SLAY1'),
(17968,4,1, 'Your soul will languish for eternity.',14,0,100,0,0,10991, 'Archimonde - SAY_SLAY12'),
(17968,4,2, 'I am the coming of the end!',14,0,100,0,0,11045, 'Archimonde - SAY_SLAY3'),
(17968,5,0, 'At last it is here. Mourn and lament the passing of all you have ever known and all that would have been! Akmin-kurai!',14,0,100,0,0,10993, 'Archimonde - SAY_ENRAGE'),
(17968,6,0, 'No, it cannot be! Nooo!',14,0,100,0,0,10992, 'Archimonde - SAY_DEATH'),
(17968,7,0, 'You are mine now.',14,0,100,0,0,10988, 'Archimonde - SAY_SOUL_CHARGE1'),
(17968,7,1, 'Bow to my will.',14,0,100,0,0,11042, 'Archimonde - SAY_SOUL_CHARGE2');
@@ -15,42 +15,30 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "hyjal.h" #include "hyjal.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
#define SPELL_CARRION_SWARM 31306 enum Spells
#define SPELL_SLEEP 31298 {
#define SPELL_VAMPIRIC_AURA 38196 SPELL_CARRION_SWARM = 31306,
#define SPELL_INFERNO 31299 SPELL_SLEEP = 31298,
SPELL_VAMPIRIC_AURA = 38196,
SPELL_INFERNO = 31299,
SPELL_IMMOLATION = 31303,
SPELL_INFERNO_EFFECT = 31302,
};
#define SAY_ONDEATH "The clock... is still... ticking." enum Texts
#define SOUND_ONDEATH 10982 {
SAY_ONDEATH = 0,
#define SAY_ONSLAY1 "Your hopes are lost!" SAY_ONSLAY = 1,
#define SAY_ONSLAY2 "Scream for me!" SAY_SWARM = 2,
#define SAY_ONSLAY3 "Pity, no time for a slow death!" SAY_SLEEP = 3,
#define SOUND_ONSLAY1 10981 SAY_INFERNO = 4,
#define SOUND_ONSLAY2 11038 SAY_ONAGGRO = 5,
#define SOUND_ONSLAY3 11039 };
#define SAY_SWARM1 "The swarm is eager to feed!"
#define SAY_SWARM2 "Pestilence upon you!"
#define SOUND_SWARM1 10979
#define SOUND_SWARM2 11037
#define SAY_SLEEP1 "You look tired..."
#define SAY_SLEEP2 "Sweet dreams..."
#define SOUND_SLEEP1 10978
#define SOUND_SLEEP2 11545
#define SAY_INFERNO1 "Let fire rain from above!"
#define SAY_INFERNO2 "Earth and sky shall burn!"
#define SOUND_INFERNO1 10980
#define SOUND_INFERNO2 11036
#define SAY_ONAGGRO "You are defenders of a doomed world! Flee here, and perhaps you will prolong your pathetic lives!"
#define SOUND_ONAGGRO 10977
class boss_anetheron : public CreatureScript class boss_anetheron : public CreatureScript
{ {
@@ -92,27 +80,12 @@ public:
{ {
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_ANETHERONEVENT, IN_PROGRESS); instance->SetData(DATA_ANETHERONEVENT, IN_PROGRESS);
DoPlaySoundToSet(me, SOUND_ONAGGRO); Talk(SAY_ONAGGRO);
me->MonsterYell(SAY_ONAGGRO, LANG_UNIVERSAL, 0);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
{ {
switch (urand(0, 2)) Talk(SAY_ONSLAY);
{
case 0:
DoPlaySoundToSet(me, SOUND_ONSLAY1);
me->MonsterYell(SAY_ONSLAY1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_ONSLAY2);
me->MonsterYell(SAY_ONSLAY2, LANG_UNIVERSAL, 0);
break;
case 2:
DoPlaySoundToSet(me, SOUND_ONSLAY3);
me->MonsterYell(SAY_ONSLAY3, LANG_UNIVERSAL, 0);
break;
}
} }
void WaypointReached(uint32 waypointId) void WaypointReached(uint32 waypointId)
@@ -130,8 +103,7 @@ public:
hyjal_trashAI::JustDied(killer); hyjal_trashAI::JustDied(killer);
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_ANETHERONEVENT, DONE); instance->SetData(DATA_ANETHERONEVENT, DONE);
DoPlaySoundToSet(me, SOUND_ONDEATH); Talk(SAY_ONDEATH);
me->MonsterYell(SAY_ONDEATH, LANG_UNIVERSAL, 0);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -169,17 +141,7 @@ public:
DoCast(target, SPELL_CARRION_SWARM); DoCast(target, SPELL_CARRION_SWARM);
SwarmTimer = urand(45000, 60000); SwarmTimer = urand(45000, 60000);
switch (urand(0, 1)) Talk(SAY_SWARM);
{
case 0:
DoPlaySoundToSet(me, SOUND_SWARM1);
me->MonsterYell(SAY_SWARM1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_SWARM2);
me->MonsterYell(SAY_SWARM2, LANG_UNIVERSAL, 0);
break;
}
} else SwarmTimer -= diff; } else SwarmTimer -= diff;
if (SleepTimer <= diff) if (SleepTimer <= diff)
@@ -190,17 +152,7 @@ public:
target->CastSpell(target, SPELL_SLEEP, true); target->CastSpell(target, SPELL_SLEEP, true);
} }
SleepTimer = 60000; SleepTimer = 60000;
switch (urand(0, 1)) Talk(SAY_SLEEP);
{
case 0:
DoPlaySoundToSet(me, SOUND_SLEEP1);
me->MonsterYell(SAY_SLEEP1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_SLEEP2);
me->MonsterYell(SAY_SLEEP2, LANG_UNIVERSAL, 0);
break;
}
} else SleepTimer -= diff; } else SleepTimer -= diff;
if (AuraTimer <= diff) if (AuraTimer <= diff)
{ {
@@ -211,17 +163,7 @@ public:
{ {
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_INFERNO); DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_INFERNO);
InfernoTimer = 45000; InfernoTimer = 45000;
switch (urand(0, 1)) Talk(SAY_INFERNO);
{
case 0:
DoPlaySoundToSet(me, SOUND_INFERNO1);
me->MonsterYell(SAY_INFERNO1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_INFERNO2);
me->MonsterYell(SAY_INFERNO2, LANG_UNIVERSAL, 0);
break;
}
} else InfernoTimer -= diff; } else InfernoTimer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -230,9 +172,6 @@ public:
}; };
#define SPELL_IMMOLATION 31303
#define SPELL_INFERNO_EFFECT 31302
class mob_towering_infernal : public CreatureScript class mob_towering_infernal : public CreatureScript
{ {
public: public:
@@ -23,56 +23,57 @@ SDComment: Doomfires not completely offlike due to core limitations for random m
SDCategory: Caverns of Time, Mount Hyjal SDCategory: Caverns of Time, Mount Hyjal
EndScriptData */ EndScriptData */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "hyjal.h" #include "hyjal.h"
#include "SpellAuras.h" #include "SpellAuras.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
//text id -1534018 are the text used when previous events complete. Not part of this script. enum Texts
#define SAY_AGGRO -1534019 {
#define SAY_DOOMFIRE1 -1534020 SAY_AGGRO = 1,
#define SAY_DOOMFIRE2 -1534021 SAY_DOOMFIRE = 2,
#define SAY_AIR_BURST1 -1534022 SAY_AIR_BURST = 3,
#define SAY_AIR_BURST2 -1534023 SAY_SLAY = 4,
#define SAY_SLAY1 -1534024 SAY_ENRAGE = 5,
#define SAY_SLAY2 -1534025 SAY_DEATH = 6,
#define SAY_SLAY3 -1534026 SAY_SOUL_CHARGE = 7,
#define SAY_ENRAGE -1534027 };
#define SAY_DEATH -1534028
#define SAY_SOUL_CHARGE1 -1534029
#define SAY_SOUL_CHARGE2 -1534030
#define SPELL_DENOUEMENT_WISP 32124 enum Spells
#define SPELL_ANCIENT_SPARK 39349 {
#define SPELL_PROTECTION_OF_ELUNE 38528 SPELL_DENOUEMENT_WISP = 32124,
SPELL_ANCIENT_SPARK = 39349,
SPELL_PROTECTION_OF_ELUNE = 38528,
#define SPELL_DRAIN_WORLD_TREE 39140 SPELL_DRAIN_WORLD_TREE = 39140,
#define SPELL_DRAIN_WORLD_TREE_2 39141 SPELL_DRAIN_WORLD_TREE_2 = 39141,
#define SPELL_FINGER_OF_DEATH 31984 SPELL_FINGER_OF_DEATH = 31984,
#define SPELL_HAND_OF_DEATH 35354 SPELL_HAND_OF_DEATH = 35354,
#define SPELL_AIR_BURST 32014 SPELL_AIR_BURST = 32014,
#define SPELL_GRIP_OF_THE_LEGION 31972 SPELL_GRIP_OF_THE_LEGION = 31972,
#define SPELL_DOOMFIRE_STRIKE 31903 //summons two creatures SPELL_DOOMFIRE_STRIKE = 31903, //summons two creatures
#define SPELL_DOOMFIRE_SPAWN 32074 SPELL_DOOMFIRE_SPAWN = 32074,
#define SPELL_DOOMFIRE 31945 SPELL_DOOMFIRE = 31945,
#define SPELL_SOUL_CHARGE_YELLOW 32045 SPELL_SOUL_CHARGE_YELLOW = 32045,
#define SPELL_SOUL_CHARGE_GREEN 32051 SPELL_SOUL_CHARGE_GREEN = 32051,
#define SPELL_SOUL_CHARGE_RED 32052 SPELL_SOUL_CHARGE_RED = 32052,
#define SPELL_UNLEASH_SOUL_YELLOW 32054 SPELL_UNLEASH_SOUL_YELLOW = 32054,
#define SPELL_UNLEASH_SOUL_GREEN 32057 SPELL_UNLEASH_SOUL_GREEN = 32057,
#define SPELL_UNLEASH_SOUL_RED 32053 SPELL_UNLEASH_SOUL_RED = 32053,
#define SPELL_FEAR 31970 SPELL_FEAR = 31970,
};
#define CREATURE_ARCHIMONDE 17968 enum Summons
#define CREATURE_DOOMFIRE 18095 {
#define CREATURE_DOOMFIRE_SPIRIT 18104 CREATURE_DOOMFIRE = 18095,
#define CREATURE_ANCIENT_WISP 17946 CREATURE_DOOMFIRE_SPIRIT = 18104,
#define CREATURE_CHANNEL_TARGET 22418 CREATURE_ANCIENT_WISP = 17946,
CREATURE_CHANNEL_TARGET = 22418,
};
#define NORDRASSIL_X 5503.713f Position const NordrassilLoc = {5503.713f, -3523.436f, 1608.781f, 0.0f};
#define NORDRASSIL_Y -3523.436f
#define NORDRASSIL_Z 1608.781f
class mob_ancient_wisp : public CreatureScript class mob_ancient_wisp : public CreatureScript
{ {
@@ -258,11 +259,11 @@ public:
uint32 GripOfTheLegionTimer; uint32 GripOfTheLegionTimer;
uint32 DoomfireTimer; uint32 DoomfireTimer;
uint32 SoulChargeTimer; uint32 SoulChargeTimer;
uint32 SoulChargeCount; uint8 SoulChargeCount;
uint32 MeleeRangeCheckTimer; uint32 MeleeRangeCheckTimer;
uint32 HandOfDeathTimer; uint32 HandOfDeathTimer;
uint32 SummonWispTimer; uint32 SummonWispTimer;
uint32 WispCount; uint8 WispCount;
uint32 EnrageTimer; uint32 EnrageTimer;
uint32 CheckDistanceTimer; uint32 CheckDistanceTimer;
@@ -303,7 +304,7 @@ public:
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
me->InterruptSpell(CURRENT_CHANNELED_SPELL); me->InterruptSpell(CURRENT_CHANNELED_SPELL);
DoScriptText(SAY_AGGRO, me); Talk(SAY_AGGRO);
DoZoneInCombat(); DoZoneInCombat();
if (instance) if (instance)
@@ -312,7 +313,7 @@ public:
void KilledUnit(Unit* victim) void KilledUnit(Unit* victim)
{ {
DoScriptText(RAND(SAY_SLAY1, SAY_SLAY2, SAY_SLAY3), me); Talk(SAY_SLAY);
if (victim && (victim->GetTypeId() == TYPEID_PLAYER)) if (victim && (victim->GetTypeId() == TYPEID_PLAYER))
GainSoulCharge(CAST_PLR(victim)); GainSoulCharge(CAST_PLR(victim));
@@ -346,7 +347,7 @@ public:
void JustDied(Unit* killer) void JustDied(Unit* killer)
{ {
hyjal_trashAI::JustDied(killer); hyjal_trashAI::JustDied(killer);
DoScriptText(SAY_DEATH, me); Talk(SAY_DEATH);
if (instance) if (instance)
instance->SetData(DATA_ARCHIMONDEEVENT, DONE); instance->SetData(DATA_ARCHIMONDEEVENT, DONE);
@@ -488,7 +489,7 @@ public:
{ {
if (!IsChanneling) if (!IsChanneling)
{ {
Creature* temp = me->SummonCreature(CREATURE_CHANNEL_TARGET, NORDRASSIL_X, NORDRASSIL_Y, NORDRASSIL_Z, 0, TEMPSUMMON_TIMED_DESPAWN, 1200000); Creature* temp = me->SummonCreature(CREATURE_CHANNEL_TARGET, NordrassilLoc, TEMPSUMMON_TIMED_DESPAWN, 1200000);
if (temp) if (temp)
WorldTreeGUID = temp->GetGUID(); WorldTreeGUID = temp->GetGUID();
@@ -525,14 +526,14 @@ public:
me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->Clear(false);
me->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MoveIdle();
Enraged = true; Enraged = true;
DoScriptText(SAY_ENRAGE, me); Talk(SAY_ENRAGE);
} }
} else EnrageTimer -= diff; } else EnrageTimer -= diff;
if (CheckDistanceTimer <= diff) if (CheckDistanceTimer <= diff)
{ {
// To simplify the check, we simply summon a Creature in the location and then check how far we are from the creature // To simplify the check, we simply summon a Creature in the location and then check how far we are from the creature
Creature* Check = me->SummonCreature(CREATURE_CHANNEL_TARGET, NORDRASSIL_X, NORDRASSIL_Y, NORDRASSIL_Z, 0, TEMPSUMMON_TIMED_DESPAWN, 2000); Creature* Check = me->SummonCreature(CREATURE_CHANNEL_TARGET, NordrassilLoc, TEMPSUMMON_TIMED_DESPAWN, 2000);
if (Check) if (Check)
{ {
Check->SetVisible(false); Check->SetVisible(false);
@@ -542,7 +543,7 @@ public:
me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->Clear(false);
me->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MoveIdle();
Enraged = true; Enraged = true;
DoScriptText(SAY_ENRAGE, me); Talk(SAY_ENRAGE);
} }
} }
CheckDistanceTimer = 5000; CheckDistanceTimer = 5000;
@@ -598,11 +599,7 @@ public:
if (AirBurstTimer <= diff) if (AirBurstTimer <= diff)
{ {
if (urand(0, 1)) Talk(SAY_AIR_BURST);
DoScriptText(SAY_AIR_BURST1, me);
else
DoScriptText(SAY_AIR_BURST2, me);
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 1), SPELL_AIR_BURST);//not on tank DoCast(SelectTarget(SELECT_TARGET_RANDOM, 1), SPELL_AIR_BURST);//not on tank
AirBurstTimer = urand(25000, 40000); AirBurstTimer = urand(25000, 40000);
} else AirBurstTimer -= diff; } else AirBurstTimer -= diff;
@@ -615,11 +612,7 @@ public:
if (DoomfireTimer <= diff) if (DoomfireTimer <= diff)
{ {
if (urand(0, 1)) Talk(SAY_DOOMFIRE);
DoScriptText(SAY_DOOMFIRE1, me);
else
DoScriptText(SAY_DOOMFIRE2, me);
Unit* temp = SelectTarget(SELECT_TARGET_RANDOM, 1); Unit* temp = SelectTarget(SELECT_TARGET_RANDOM, 1);
if (!temp) if (!temp)
temp = me->getVictim(); temp = me->getVictim();
@@ -15,33 +15,31 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "hyjal.h" #include "hyjal.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
#define SPELL_RAIN_OF_FIRE 31340 enum Spells
#define SPELL_DOOM 31347 {
#define SPELL_HOWL_OF_AZGALOR 31344 SPELL_RAIN_OF_FIRE = 31340,
#define SPELL_CLEAVE 31345 SPELL_DOOM = 31347,
#define SPELL_BERSERK 26662 SPELL_HOWL_OF_AZGALOR = 31344,
SPELL_CLEAVE = 31345,
SPELL_BERSERK = 26662,
#define SAY_ONDEATH "Your time is almost... up" SPELL_THRASH = 12787,
#define SOUND_ONDEATH 11002 SPELL_CRIPPLE = 31406,
SPELL_WARSTOMP = 31408,
};
#define SAY_ONSLAY1 "Reesh, hokta!" enum Texts
#define SAY_ONSLAY2 "Don't fight it" {
#define SAY_ONSLAY3 "No one is going to save you" SAY_ONDEATH = 0,
#define SOUND_ONSLAY1 11001 SAY_ONSLAY = 1,
#define SOUND_ONSLAY2 11048 SAY_DOOM = 2, // Not used?
#define SOUND_ONSLAY3 11047 SAY_ONAGGRO = 3,
};
#define SAY_DOOM1 "Just a taste... of what awaits you"
#define SAY_DOOM2 "Suffer you despicable insect!"
#define SOUND_DOOM1 11046
#define SOUND_DOOM2 11000
#define SAY_ONAGGRO "Abandon all hope! The legion has returned to finish what was begun so many years ago. This time there will be no escape!"
#define SOUND_ONAGGRO 10999
class boss_azgalor : public CreatureScript class boss_azgalor : public CreatureScript
{ {
@@ -88,27 +86,12 @@ public:
{ {
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_AZGALOREVENT, IN_PROGRESS); instance->SetData(DATA_AZGALOREVENT, IN_PROGRESS);
DoPlaySoundToSet(me, SOUND_ONAGGRO); Talk(SAY_ONAGGRO);
me->MonsterYell(SAY_ONAGGRO, LANG_UNIVERSAL, 0);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
{ {
switch (urand(0, 2)) Talk(SAY_ONSLAY);
{
case 0:
DoPlaySoundToSet(me, SOUND_ONSLAY1);
me->MonsterYell(SAY_ONSLAY1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_ONSLAY2);
me->MonsterYell(SAY_ONSLAY2, LANG_UNIVERSAL, 0);
break;
case 2:
DoPlaySoundToSet(me, SOUND_ONSLAY3);
me->MonsterYell(SAY_ONSLAY3, LANG_UNIVERSAL, 0);
break;
}
} }
void WaypointReached(uint32 waypointId) void WaypointReached(uint32 waypointId)
@@ -126,7 +109,7 @@ public:
hyjal_trashAI::JustDied(killer); hyjal_trashAI::JustDied(killer);
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_AZGALOREVENT, DONE); instance->SetData(DATA_AZGALOREVENT, DONE);
DoPlaySoundToSet(me, SOUND_ONDEATH); Talk(SAY_ONDEATH);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -196,10 +179,6 @@ public:
}; };
#define SPELL_THRASH 12787
#define SPELL_CRIPPLE 31406
#define SPELL_WARSTOMP 31408
class mob_lesser_doomguard : public CreatureScript class mob_lesser_doomguard : public CreatureScript
{ {
public: public:
@@ -30,22 +30,17 @@ enum Spells
SPELL_MARK_DAMAGE = 31463 SPELL_MARK_DAMAGE = 31463
}; };
#define SOUND_ONDEATH 11018 enum Texts
{
SAY_ONSLAY = 0,
SAY_MARK = 1,
SAY_ONAGGRO = 2,
};
#define SAY_ONSLAY1 "Shaza-Kiel!" enum Sounds
#define SAY_ONSLAY2 "You... are nothing!" {
#define SAY_ONSLAY3 "Miserable nuisance!" SOUND_ONDEATH = 11018,
#define SOUND_ONSLAY1 11017 };
#define SOUND_ONSLAY2 11053
#define SOUND_ONSLAY3 11054
#define SAY_MARK1 "Your death will be a painful one."
#define SAY_MARK2 "You... are marked."
#define SOUND_MARK1 11016
#define SOUND_MARK2 11052
#define SAY_ONAGGRO "Cry for mercy! Your meaningless lives will soon be forfeit."
#define SOUND_ONAGGRO 11015
class boss_kazrogal : public CreatureScript class boss_kazrogal : public CreatureScript
{ {
@@ -87,27 +82,12 @@ public:
{ {
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_KAZROGALEVENT, IN_PROGRESS); instance->SetData(DATA_KAZROGALEVENT, IN_PROGRESS);
DoPlaySoundToSet(me, SOUND_ONAGGRO); Talk(SAY_ONAGGRO);
me->MonsterYell(SAY_ONAGGRO, LANG_UNIVERSAL, 0);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
{ {
switch (urand(0, 2)) Talk(SAY_ONSLAY);
{
case 0:
DoPlaySoundToSet(me, SOUND_ONSLAY1);
me->MonsterYell(SAY_ONSLAY1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_ONSLAY2);
me->MonsterYell(SAY_ONSLAY2, LANG_UNIVERSAL, 0);
break;
case 2:
DoPlaySoundToSet(me, SOUND_ONSLAY3);
me->MonsterYell(SAY_ONSLAY3, LANG_UNIVERSAL, 0);
break;
}
} }
void WaypointReached(uint32 waypointId) void WaypointReached(uint32 waypointId)
@@ -177,17 +157,7 @@ public:
if (MarkTimerBase < 5500) if (MarkTimerBase < 5500)
MarkTimerBase = 5500; MarkTimerBase = 5500;
MarkTimer = MarkTimerBase; MarkTimer = MarkTimerBase;
switch (urand(0, 2)) Talk(SAY_MARK);
{
case 0:
DoPlaySoundToSet(me, SOUND_MARK1);
me->MonsterYell(SAY_MARK1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_MARK2);
me->MonsterYell(SAY_MARK2, LANG_UNIVERSAL, 0);
break;
}
} else MarkTimer -= diff; } else MarkTimer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -15,36 +15,27 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "hyjal.h" #include "hyjal.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
#define SPELL_FROST_ARMOR 31256 enum Spells
#define SPELL_DEATH_AND_DECAY 31258 {
SPELL_FROST_ARMOR = 31256,
SPELL_DEATH_AND_DECAY = 31258,
SPELL_FROST_NOVA = 31250,
SPELL_ICEBOLT = 31249,
};
#define SPELL_FROST_NOVA 31250 enum Texts
#define SPELL_ICEBOLT 31249 {
SAY_ONDEATH = 0,
#define SAY_ONDEATH "You have won this battle, but not... the... war" SAY_ONSLAY = 1,
#define SOUND_ONDEATH 11026 SAY_DECAY = 2,
SAY_NOVA = 3,
#define SAY_ONSLAY1 "All life must perish!" SAY_ONAGGRO = 4,
#define SAY_ONSLAY2 "Victory to the Legion!" };
#define SOUND_ONSLAY1 11025
#define SOUND_ONSLAY2 11057
#define SAY_DECAY1 "Crumble and rot!"
#define SAY_DECAY2 "Ashes to ashes, dust to dust"
#define SOUND_DECAY1 11023
#define SOUND_DECAY2 11055
#define SAY_NOVA1 "Succumb to the icy chill... of death!"
#define SAY_NOVA2 "It will be much colder in your grave"
#define SOUND_NOVA1 11024
#define SOUND_NOVA2 11058
#define SAY_ONAGGRO "The Legion's final conquest has begun! Once again the subjugation of this world is within our grasp. Let none survive!"
#define SOUND_ONAGGRO 11022
class boss_rage_winterchill : public CreatureScript class boss_rage_winterchill : public CreatureScript
{ {
@@ -86,23 +77,12 @@ public:
{ {
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_RAGEWINTERCHILLEVENT, IN_PROGRESS); instance->SetData(DATA_RAGEWINTERCHILLEVENT, IN_PROGRESS);
DoPlaySoundToSet(me, SOUND_ONAGGRO); Talk(SAY_ONAGGRO);
me->MonsterYell(SAY_ONAGGRO, LANG_UNIVERSAL, 0);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
{ {
switch (urand(0, 1)) Talk(SAY_ONSLAY);
{
case 0:
DoPlaySoundToSet(me, SOUND_ONSLAY1);
me->MonsterYell(SAY_ONSLAY1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_ONSLAY2);
me->MonsterYell(SAY_ONSLAY2, LANG_UNIVERSAL, 0);
break;
}
} }
void WaypointReached(uint32 waypointId) void WaypointReached(uint32 waypointId)
@@ -120,8 +100,7 @@ public:
hyjal_trashAI::JustDied(killer); hyjal_trashAI::JustDied(killer);
if (instance && IsEvent) if (instance && IsEvent)
instance->SetData(DATA_RAGEWINTERCHILLEVENT, DONE); instance->SetData(DATA_RAGEWINTERCHILLEVENT, DONE);
DoPlaySoundToSet(me, SOUND_ONDEATH); Talk(SAY_ONDEATH);
me->MonsterYell(SAY_ONDEATH, LANG_UNIVERSAL, 0);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -162,33 +141,13 @@ public:
{ {
DoCast(me->getVictim(), SPELL_DEATH_AND_DECAY); DoCast(me->getVictim(), SPELL_DEATH_AND_DECAY);
DecayTimer = 60000+rand()%20000; DecayTimer = 60000+rand()%20000;
switch (urand(0, 1)) Talk(SAY_DECAY);
{
case 0:
DoPlaySoundToSet(me, SOUND_DECAY1);
me->MonsterYell(SAY_DECAY1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_DECAY2);
me->MonsterYell(SAY_DECAY2, LANG_UNIVERSAL, 0);
break;
}
} else DecayTimer -= diff; } else DecayTimer -= diff;
if (NovaTimer <= diff) if (NovaTimer <= diff)
{ {
DoCast(me->getVictim(), SPELL_FROST_NOVA); DoCast(me->getVictim(), SPELL_FROST_NOVA);
NovaTimer = 30000+rand()%15000; NovaTimer = 30000+rand()%15000;
switch (urand(0, 1)) Talk(SAY_NOVA);
{
case 0:
DoPlaySoundToSet(me, SOUND_NOVA1);
me->MonsterYell(SAY_NOVA1, LANG_UNIVERSAL, 0);
break;
case 1:
DoPlaySoundToSet(me, SOUND_NOVA2);
me->MonsterYell(SAY_NOVA2, LANG_UNIVERSAL, 0);
break;
}
} else NovaTimer -= diff; } else NovaTimer -= diff;
if (IceboltTimer <= diff) if (IceboltTimer <= diff)
{ {
@@ -29,7 +29,9 @@ npc_thrall
npc_tyrande_whisperwind npc_tyrande_whisperwind
EndContentData */ EndContentData */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "hyjalAI.h" #include "hyjalAI.h"
#define GOSSIP_ITEM_BEGIN_ALLY "My companions and I are with you, Lady Proudmoore." #define GOSSIP_ITEM_BEGIN_ALLY "My companions and I are with you, Lady Proudmoore."
@@ -21,7 +21,7 @@
#define ERROR_INST_DATA "TSCR: Instance data not set properly for Mount Hyjal. Encounters will be buggy." #define ERROR_INST_DATA "TSCR: Instance data not set properly for Mount Hyjal. Encounters will be buggy."
enum eTypes enum Types
{ {
WORLD_STATE_WAVES = 2842, WORLD_STATE_WAVES = 2842,
WORLD_STATE_ENEMY = 2453, WORLD_STATE_ENEMY = 2453,
@@ -23,17 +23,21 @@ SDComment:
SDCategory: Caverns of Time, Mount Hyjal SDCategory: Caverns of Time, Mount Hyjal
EndScriptData */ EndScriptData */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "GridNotifiers.h"
#include "Cell.h"
#include "CellImpl.h"
#include "hyjalAI.h" #include "hyjalAI.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
#include "MapManager.h"
#include "Language.h"
#include "Chat.h"
#include "Object.h"
#define SPAWN_GARG_GATE 0 enum Spawns
#define SPAWN_WYRM_GATE 1 {
#define SPAWN_NEAR_TOWER 2 SPAWN_GARG_GATE = 0,
SPAWN_WYRM_GATE = 1,
SPAWN_NEAR_TOWER = 2,
};
#define YELL_HURRY "Hurry, we don't have much time" #define YELL_HURRY "Hurry, we don't have much time"
@@ -24,43 +24,49 @@
#define HYJAL_AI_MAX_SPELLS 3 #define HYJAL_AI_MAX_SPELLS 3
// Trash Mobs summoned in waves enum CreaturesIds
#define NECROMANCER 17899//done {
#define ABOMINATION 17898//done // Trash Mobs summoned in waves
#define GHOUL 17895//done NECROMANCER = 17899,
#define BANSHEE 17905//done ABOMINATION = 17898,
#define CRYPT_FIEND 17897//done GHOUL = 17895,
#define GARGOYLE 17906//done BANSHEE = 17905,
#define FROST_WYRM 17907//done CRYPT_FIEND = 17897,
#define GIANT_INFERNAL 17908//done GARGOYLE = 17906,
#define FEL_STALKER 17916//done FROST_WYRM = 17907,
GIANT_INFERNAL = 17908,
FEL_STALKER = 17916,
#define JAINA 17772 JAINA = 17772,
#define THRALL 17852 THRALL = 17852,
#define TYRANDE 17948 TYRANDE = 17948,
#define ANCIENT_VEIN 185557 ANCIENT_VEIN = 185557,
#define FLAMEOBJECT 182592 FLAMEOBJECT = 182592,
// Bosses summoned after every 8 waves // Bosses summoned after every 8 waves
#define RAGE_WINTERCHILL 17767 RAGE_WINTERCHILL = 17767,
#define ANETHERON 17808 ANETHERON = 17808,
#define KAZROGAL 17888 KAZROGAL = 17888,
#define AZGALOR 17842 AZGALOR = 17842,
#define ARCHIMONDE 17968 ARCHIMONDE = 17968,
};
#define SPELL_TELEPORT_VISUAL 41232 enum SpellIds
#define SPELL_MASS_TELEPORT 16807 {
SPELL_TELEPORT_VISUAL = 41232,
SPELL_MASS_TELEPORT = 16807,
//Spells for Jaina //Spells for Jaina
#define SPELL_BRILLIANCE_AURA 31260 // The database must handle this spell via creature_addon(it should, but is removed in evade..) SPELL_BRILLIANCE_AURA = 31260, // The database must handle this spell via creature_addon(it should, but is removed in evade..)
#define SPELL_BLIZZARD 31266 SPELL_BLIZZARD = 31266,
#define SPELL_PYROBLAST 31263 SPELL_PYROBLAST = 31263,
#define SPELL_SUMMON_ELEMENTALS 31264 SPELL_SUMMON_ELEMENTALS = 31264,
//Thrall spells //Thrall spells
#define SPELL_CHAIN_LIGHTNING 31330 SPELL_CHAIN_LIGHTNING = 31330,
#define SPELL_SUMMON_DIRE_WOLF 31331 SPELL_SUMMON_DIRE_WOLF = 31331,
};
struct Wave struct Wave
{ {
@@ -15,16 +15,35 @@
* with this program. If not, see <http://www.gnu.org/licenses/>. * with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "hyjal.h" #include "hyjal.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
#include "hyjalAI.h" #include "hyjalAI.h"
#define SPELL_METEOR 33814 //infernal visual enum Spells
#define SPELL_IMMOLATION 37059 {
#define SPELL_FLAME_BUFFET 31724 SPELL_METEOR = 33814, //infernal visual
#define NPC_TRIGGER 21987 //World Trigger (Tiny) SPELL_IMMOLATION = 37059,
#define MODEL_INVIS 11686 //invisible model SPELL_FLAME_BUFFET = 31724,
NPC_TRIGGER = 21987, //World Trigger (Tiny)
MODEL_INVIS = 11686, //invisible model
SPELL_DISEASE_CLOUD = 31607,
SPELL_KNOCKDOWN = 31610,
SPELL_FRENZY = 31540,
SPELL_RAISE_DEAD_1 = 31617,
SPELL_RAISE_DEAD_2 = 31624,
SPELL_RAISE_DEAD_3 = 31625,
SPELL_SHADOW_BOLT = 31627,
SPELL_BANSHEE_CURSE = 31651,
SPELL_BANSHEE_WAIL = 38183,
SPELL_ANTI_MAGIC_SHELL = 31662,
SPELL_WEB = 28991,
SPELL_MANA_BURN = 31729,
SPELL_FROST_BREATH = 31688,
SPELL_GARGOYLE_STRIKE = 31664,
SPELL_EXPLODING_SHOT = 7896,
};
float HordeWPs[8][3]=//basic waypoints from spawn to leader float HordeWPs[8][3]=//basic waypoints from spawn to leader
{ {
@@ -522,9 +541,6 @@ public:
} }
}; };
#define SPELL_DISEASE_CLOUD 31607
#define SPELL_KNOCKDOWN 31610
class mob_abomination : public CreatureScript class mob_abomination : public CreatureScript
{ {
public: public:
@@ -623,8 +639,6 @@ public:
}; };
#define SPELL_FRENZY 31540
class mob_ghoul : public CreatureScript class mob_ghoul : public CreatureScript
{ {
public: public:
@@ -727,11 +741,6 @@ public:
}; };
#define SPELL_RAISE_DEAD_1 31617
#define SPELL_RAISE_DEAD_2 31624
#define SPELL_RAISE_DEAD_3 31625
#define SPELL_SHADOW_BOLT 31627
class mob_necromancer : public CreatureScript class mob_necromancer : public CreatureScript
{ {
public: public:
@@ -859,10 +868,6 @@ public:
}; };
#define SPELL_BANSHEE_CURSE 31651
#define SPELL_BANSHEE_WAIL 38183
#define SPELL_ANTI_MAGIC_SHELL 31662
class mob_banshee : public CreatureScript class mob_banshee : public CreatureScript
{ {
public: public:
@@ -966,8 +971,6 @@ public:
}; };
#define SPELL_WEB 28991
class mob_crypt_fiend : public CreatureScript class mob_crypt_fiend : public CreatureScript
{ {
public: public:
@@ -1058,8 +1061,6 @@ public:
}; };
#define SPELL_MANA_BURN 31729
class mob_fel_stalker : public CreatureScript class mob_fel_stalker : public CreatureScript
{ {
public: public:
@@ -1150,8 +1151,6 @@ public:
}; };
#define SPELL_FROST_BREATH 31688
class mob_frost_wyrm : public CreatureScript class mob_frost_wyrm : public CreatureScript
{ {
public: public:
@@ -1264,8 +1263,6 @@ public:
}; };
#define SPELL_GARGOYLE_STRIKE 31664
class mob_gargoyle : public CreatureScript class mob_gargoyle : public CreatureScript
{ {
public: public:
@@ -1402,8 +1399,6 @@ public:
}; };
#define SPELL_EXPLODING_SHOT 7896
class alliance_rifleman : public CreatureScript class alliance_rifleman : public CreatureScript
{ {
public: public:
@@ -23,15 +23,16 @@ SDComment: Instance Data Scripts and functions to acquire mobs and set encounter
SDCategory: Caverns of Time, Mount Hyjal SDCategory: Caverns of Time, Mount Hyjal
EndScriptData */ EndScriptData */
#include "ScriptPCH.h" #include "ScriptMgr.h"
#include "hyjal.h" #include "InstanceScript.h"
#include "ScriptedCreature.h"
#include "hyjal_trash.h" #include "hyjal_trash.h"
enum eEnums enum Misc
{ {
MAX_ENCOUNTER = 5, MAX_ENCOUNTER = 5,
GO_ANCIENT_GEM = 185557 GO_ANCIENT_GEM = 185557,
}; };
/* Battle of Mount Hyjal encounters: /* Battle of Mount Hyjal encounters:
0 - Rage Winterchill event 0 - Rage Winterchill event