[svn] More C++ scripts converted to use script_texts.

- Blackwing Lair
- Black Morass
- Old Hillsbrad
source: ScriptDev2

--HG--
branch : trunk
This commit is contained in:
slg
2008-10-27 15:17:06 -05:00
parent bbd5c8fd40
commit 1b820f93eb
15 changed files with 402 additions and 431 deletions
@@ -23,16 +23,14 @@ EndScriptData */
#include "precompiled.h"
#define SAY_AGGRO -1469000
#define SAY_LEASH -1469001
#define SPELL_CLEAVE 26350
#define SPELL_BLASTWAVE 23331
#define SPELL_MORTALSTRIKE 24573
#define SPELL_KNOCKBACK 25778
#define SAY_AGGRO "None of your kind should be here! You've doomed only yourselves!"
#define SAY_LEASH "Clever Mortals but I am not so easily lured away from my sanctum!"
#define SOUND_AGGRO 8286
#define SOUND_LEASH 8287
struct TRINITY_DLL_DECL boss_broodlordAI : public ScriptedAI
{
boss_broodlordAI(Creature *c) : ScriptedAI(c) {Reset();}
@@ -57,8 +55,7 @@ struct TRINITY_DLL_DECL boss_broodlordAI : public ScriptedAI
void Aggro(Unit *who)
{
DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO);
DoScriptText(SAY_AGGRO, m_creature);
DoZoneInCombat();
}
@@ -75,6 +72,7 @@ struct TRINITY_DLL_DECL boss_broodlordAI : public ScriptedAI
float spawndist = m_creature->GetDistance(rx,ry,rz);
if ( spawndist > 250 )
{
DoScriptText(SAY_LEASH, m_creature);
EnterEvadeMode();
return;
}
@@ -106,7 +104,7 @@ struct TRINITY_DLL_DECL boss_broodlordAI : public ScriptedAI
{
DoCast(m_creature->getVictim(),SPELL_KNOCKBACK);
//Drop 50% aggro
if(m_creature->getThreatManager().getThreat(m_creature->getVictim()))
if (m_creature->getThreatManager().getThreat(m_creature->getVictim()))
m_creature->getThreatManager().modifyThreatPercent(m_creature->getVictim(),-50);
KnockBack_Timer = 15000 + rand()%15000;
@@ -23,6 +23,9 @@ EndScriptData */
#include "precompiled.h"
#define EMOTE_FRENZY -1469002
#define EMOTE_SHIMMER -1469003
//These spells are actually called elemental shield
//What they do is decrease all damage by 75% then they increase
//One school of damage by 1100%
@@ -32,30 +35,24 @@ EndScriptData */
#define SPELL_NATURE_VURNALBILTY 22280
#define SPELL_ARCANE_VURNALBILTY 22281
#define EMOTE_FRENZY "goes into a killing frenzy!"
#define EMOTE_SHIMMER "flinches as its skin shimmers"
#define SPELL_INCINERATE 23308 //Incinerate 23308,23309
#define SPELL_TIMELAPSE 23310 //Time lapse 23310, 23311(old threat mod that was removed in 2.01)
#define SPELL_CORROSIVEACID 23313 //Corrosive Acid 23313, 23314
#define SPELL_IGNITEFLESH 23315 //Ignite Flesh 23315,23316
#define SPELL_FROSTBURN 23187 //Frost burn 23187, 23189
#define SPELL_INCINERATE 23308 //Incinerate 23308,23309
#define SPELL_TIMELAPSE 23310 //Time lapse 23310, 23311(old threat mod that was removed in 2.01)
#define SPELL_CORROSIVEACID 23313 //Corrosive Acid 23313, 23314
#define SPELL_IGNITEFLESH 23315 //Ignite Flesh 23315,23316
#define SPELL_FROSTBURN 23187 //Frost burn 23187, 23189
//Brood Affliction 23173 - Scripted Spell that cycles through all targets within 100 yards and has a chance to cast one of the afflictions on them
//Since Scripted spells arn't coded I'll just write a function that does the same thing
#define SPELL_BROODAF_BLUE 23153 //Blue affliction 23153
#define SPELL_BROODAF_BLACK 23154 //Black affliction 23154
#define SPELL_BROODAF_RED 23155 //Red affliction 23155 (23168 on death)
#define SPELL_BROODAF_BRONZE 23170 //Bronze Affliction 23170
#define SPELL_BROODAF_GREEN 23169 //Brood Affliction Green 23169
#define SPELL_BROODAF_BLUE 23153 //Blue affliction 23153
#define SPELL_BROODAF_BLACK 23154 //Black affliction 23154
#define SPELL_BROODAF_RED 23155 //Red affliction 23155 (23168 on death)
#define SPELL_BROODAF_BRONZE 23170 //Bronze Affliction 23170
#define SPELL_BROODAF_GREEN 23169 //Brood Affliction Green 23169
#define SPELL_CHROMATIC_MUT_1 23174 //Spell cast on player if they get all 5 debuffs
#define SPELL_CHROMATIC_MUT_1 23174 //Spell cast on player if they get all 5 debuffs
#define SPELL_FRENZY 28371 //The frenzy spell may be wrong
#define SPELL_ENRAGE 28747
#define TEMP_MUTATE_WHISPER "[SD2 Debug] You would be mind controlled here!"
#define SPELL_FRENZY 28371 //The frenzy spell may be wrong
#define SPELL_ENRAGE 28747
struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
{
@@ -216,7 +213,7 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
DoCast(m_creature,spell);
CurrentVurln_Spell = spell;
DoTextEmote(EMOTE_SHIMMER, NULL);
DoScriptText(EMOTE_SHIMMER, m_creature);
Shimmer_Timer = 45000;
}else Shimmer_Timer -= diff;
@@ -255,7 +252,7 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
Unit* pUnit = NULL;
pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid());
if(pUnit)
if (pUnit)
{
//Cast affliction
DoCast(pUnit, SpellAfflict, true);
@@ -276,10 +273,7 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
//WORKAROUND
if (pUnit->GetTypeId() == TYPEID_PLAYER)
{
DoWhisper(TEMP_MUTATE_WHISPER, pUnit);
pUnit->CastSpell(pUnit, 5, false);
}
}
}
}
@@ -291,7 +285,7 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
if (Frenzy_Timer < diff)
{
DoCast(m_creature,SPELL_FRENZY);
DoTextEmote(EMOTE_FRENZY,NULL);
DoScriptText(EMOTE_FRENZY, m_creature);
Frenzy_Timer = 10000 + (rand() % 5000);
}else Frenzy_Timer -= diff;
@@ -16,30 +16,29 @@
/* ScriptData
SDName: Boss_Nefarian
SD%Complete: 100
SD%Complete: 80
SDComment: Some issues with class calls effecting more than one class
SDCategory: Blackwing Lair
EndScriptData */
#include "precompiled.h"
#define SAY_AGGRO "Well done, my minions. The mortals' courage begins to wane! Now, let's see how they contend with the true Lord of Blackrock Spire!"
#define SAY_DEATH "This cannot be! I am the Master here! You mortals are nothing to my kind! DO YOU HEAR? NOTHING!"
#define SAY_RAISE_SKELETONS "Impossible! Rise my minions! Serve your master once more!"
#define SAY_SHADOWFLAME "Burn, you wretches! Burn!"
#define SAY_SLAY "Worthless $N! Your friends will join you soon enough!"
#define SAY_XHEALTH "Enough! Now you vermin shall feel the force of my birthright, the fury of the earth itself."
#define SAY_GAMESBEGIN "Let the games begin!"
#define SAY_START "<unknown>"
#define SAY_AGGRO -1469007
#define SAY_XHEALTH -1469008
#define SAY_SHADOWFLAME -1469009
#define SAY_RAISE_SKELETONS -1469010
#define SAY_SLAY -1469011
#define SAY_DEATH -1469012
#define SOUND_AGGRO 8288
#define SOUND_DEATH 8292
#define SOUND_RAISE_SKELETONS 8291
#define SOUND_SHADOWFLAME 8290
#define SOUND_SLAY 8293
#define SOUND_XHEALTH 8289
#define SOUND_GAMESBEGIN 8279
#define SOUND_START 8280
#define SAY_MAGE -1469013
#define SAY_WARRIOR -1469014
#define SAY_DRUID -1469015
#define SAY_PRIEST -1469016
#define SAY_PALADIN -1469017
#define SAY_SHAMAN -1469018
#define SAY_WARLOCK -1469019
#define SAY_HUNTER -1469020
#define SAY_ROGUE -1469021
#define SPELL_SHADOWFLAME_INITIAL 22972
#define SPELL_SHADOWFLAME 22539
@@ -59,16 +58,6 @@ EndScriptData */
#define SPELL_HUNTER 23436 //bow broke
#define SPELL_ROGUE 23414 //Paralise
#define SAY_MAGE "Mages too? You should be more careful when you play with magic..."
#define SAY_WARRIOR "Warriors, I know you can hit harder than that! Let's see it!"
#define SAY_DRUID "Druids and your silly shapeshifting. Let's see it in action!"
#define SAY_PRIEST "Priests! If you're going to keep healing like that, we might as well make it a little more interesting!"
#define SAY_PALADIN "Paladins, I've heard you have many lives. Show me."
#define SAY_SHAMAN "Shamans, show me what your totems can do!"
#define SAY_WARLOCK "Warlocks, you shouldn't be playing with magic you don't understand. See what happens?"
#define SAY_HUNTER "Hunters and your annoying pea-shooters!"
#define SAY_ROGUE "Rogues? Stop hiding and face me!"
struct TRINITY_DLL_DECL boss_nefarianAI : public ScriptedAI
{
boss_nefarianAI(Creature *c) : ScriptedAI(c) {Reset();}
@@ -100,32 +89,21 @@ struct TRINITY_DLL_DECL boss_nefarianAI : public ScriptedAI
if (rand()%5)
return;
DoYell(SAY_SLAY,LANG_UNIVERSAL,Victim);
DoPlaySoundToSet(m_creature, SOUND_SLAY);
DoScriptText(SAY_SLAY, m_creature, Victim);
}
void JustDied(Unit* Killer)
{
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
DoScriptText(SAY_DEATH, m_creature);
}
void Aggro(Unit *who)
{
switch (rand()%3)
{
case 0:
DoYell(SAY_XHEALTH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_XHEALTH);
break;
case 1:
DoYell(SAY_AGGRO,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_AGGRO);
break;
case 2:
DoYell(SAY_SHADOWFLAME,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_SHADOWFLAME);
break;
case 0: DoScriptText(SAY_XHEALTH, m_creature); break;
case 1: DoScriptText(SAY_AGGRO, m_creature); break;
case 2: DoScriptText(SAY_SHADOWFLAME, m_creature); break;
}
DoCast(who,SPELL_SHADOWFLAME_INITIAL);
@@ -184,39 +162,39 @@ struct TRINITY_DLL_DECL boss_nefarianAI : public ScriptedAI
switch (rand()%9)
{
case 0:
DoYell(SAY_MAGE,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_MAGE, m_creature);
DoCast(m_creature,SPELL_MAGE);
break;
case 1:
DoYell(SAY_WARRIOR,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_WARRIOR, m_creature);
DoCast(m_creature,SPELL_WARRIOR);
break;
case 2:
DoYell(SAY_DRUID,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_DRUID, m_creature);
DoCast(m_creature,SPELL_DRUID);
break;
case 3:
DoYell(SAY_PRIEST,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_PRIEST, m_creature);
DoCast(m_creature,SPELL_PRIEST);
break;
case 4:
DoYell(SAY_PALADIN,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_PALADIN, m_creature);
DoCast(m_creature,SPELL_PALADIN);
break;
case 5:
DoYell(SAY_SHAMAN,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_SHAMAN, m_creature);
DoCast(m_creature,SPELL_SHAMAN);
break;
case 6:
DoYell(SAY_WARLOCK,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_WARLOCK, m_creature);
DoCast(m_creature,SPELL_WARLOCK);
break;
case 7:
DoYell(SAY_HUNTER,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_HUNTER, m_creature);
DoCast(m_creature,SPELL_HUNTER);
break;
case 8:
DoYell(SAY_ROGUE,LANG_UNIVERSAL,NULL);
DoScriptText(SAY_ROGUE, m_creature);
DoCast(m_creature,SPELL_ROGUE);
break;
}
@@ -228,8 +206,7 @@ struct TRINITY_DLL_DECL boss_nefarianAI : public ScriptedAI
if (!Phase3 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 20)
{
Phase3 = true;
DoYell(SAY_RAISE_SKELETONS,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_RAISE_SKELETONS);
DoScriptText(SAY_RAISE_SKELETONS, m_creature);
}
DoMeleeAttackIfReady();
@@ -17,7 +17,7 @@
/* ScriptData
SDName: Boss_Razorgore
SD%Complete: 50
SDComment: Needs additional review. Phase 1 NYI
SDComment: Needs additional review. Phase 1 NYI (Grethok the Controller)
SDCategory: Blackwing Lair
EndScriptData */
@@ -25,10 +25,10 @@ EndScriptData */
//Razorgore Phase 2 Script
#define SAY_NPC_DEATH "If I fall into the abyss I'll take all of you mortals with me..."
#define SOUND_NPC_DEATH 8278
#define SAY_EGGS_BREAK3 "No! Not another one! I'll have your heads for this atrocity."
#define SOUND_EGGS_BREAK3 8277
#define SAY_EGGS_BROKEN1 -1469022
#define SAY_EGGS_BROKEN2 -1469023
#define SAY_EGGS_BROKEN3 -1469024
#define SAY_DEATH -1469025
#define SPELL_CLEAVE 22540
#define SPELL_WARSTOMP 24375
@@ -60,6 +60,11 @@ struct TRINITY_DLL_DECL boss_razorgoreAI : public ScriptedAI
DoZoneInCombat();
}
void JustDied(Unit* Killer)
{
DoScriptText(SAY_DEATH, m_creature);
}
void UpdateAI(const uint32 diff)
{
if (!m_creature->SelectHostilTarget() || !m_creature->getVictim() )
@@ -23,6 +23,14 @@ EndScriptData */
#include "precompiled.h"
#define SAY_LINE1 -1469026
#define SAY_LINE2 -1469027
#define SAY_LINE3 -1469028
#define SAY_HALFLIFE -1469029
#define SAY_KILLTARGET -1469030
#define GOSSIP_ITEM "Start Event <Needs Gossip Text>"
#define SPELL_ESSENCEOFTHERED 23513
#define SPELL_FLAMEBREATH 23461
#define SPELL_FIRENOVA 23462
@@ -30,23 +38,6 @@ EndScriptData */
#define SPELL_BURNINGADRENALINE 23620
#define SPELL_CLEAVE 20684 //Chain cleave is most likely named something different and contains a dummy effect
#define SAY_LINE1 "Too late...friends. Nefarius' corruption has taken hold. I cannot...control myself. "
#define SOUND_LINE1 8281
#define SAY_LINE2 "I beg you Mortals, flee! Flee before I lose all control. The Black Fire rages within my heart. I must release it!"
#define SOUND_LINE2 8282
#define SAY_LINE3 "FLAME! DEATH! DESTRUCTION! COWER MORTALS BEFORE THE WRATH OF LORD....NO! I MUST FIGHT THIS!"
#define SOUND_LINE3 8283
#define SAY_HALFLIFE "Nefarius' hate has made me stronger than ever before. You should have fled, while you could, mortals! The fury of Blackrock courses through my veins! "
#define SOUND_HALFLIFE 8285
#define SAY_KILLTARGET "Forgive me $N, your death only adds to my failure."
#define SOUND_KILLTARGET 8284
#define GOSSIP_ITEM "Start Event <Needs Gossip Text>"
struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
{
boss_vaelAI(Creature *c) : ScriptedAI(c)
@@ -93,8 +84,8 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
PlayerGUID = target->GetGUID();
//10 seconds
DoYell(SAY_LINE1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_LINE1);
DoScriptText(SAY_LINE1, m_creature);
SpeachTimer = 10000;
SpeachNum = 0;
DoingSpeach = true;
@@ -105,8 +96,7 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
if (rand()%5)
return;
DoYell(SAY_KILLTARGET,LANG_UNIVERSAL,victim);
DoPlaySoundToSet(m_creature,SOUND_KILLTARGET);
DoScriptText(SAY_KILLTARGET, m_creature, victim);
}
void Aggro(Unit *who)
@@ -126,15 +116,13 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
{
case 0:
//16 seconds till next line
DoYell(SAY_LINE2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_LINE2);
DoScriptText(SAY_LINE2, m_creature);
SpeachTimer = 16000;
SpeachNum++;
break;
case 1:
//This one is actually 16 seconds but we only go to 10 seconds because he starts attacking after he says "I must fight this!"
DoYell(SAY_LINE3,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_LINE3);
DoScriptText(SAY_LINE3, m_creature);
SpeachTimer = 10000;
SpeachNum++;
break;
@@ -160,9 +148,7 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
// Yell if hp lower than 15%
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 15 && !HasYelled)
{
//Say our dialog
DoYell(SAY_HALFLIFE,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_HALFLIFE);
DoScriptText(SAY_HALFLIFE, m_creature);
HasYelled = true;
}
@@ -205,7 +191,6 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
{
// have the victim cast the spell on himself otherwise the third effect aura will be applied
// to Vael instead of the player
m_creature->getVictim()->CastSpell(m_creature->getVictim(),SPELL_BURNINGADRENALINE,1);
BurningAdrenalineTank_Timer = 45000;
@@ -23,12 +23,9 @@ EndScriptData */
#include "precompiled.h"
#define SAY_GAMESBEGIN_1 "In this world where time is your enemy, it is my greatest ally. This grand game of life that you think you play in fact plays you. To that I say..."
#define SAY_GAMESBEGIN_2 "Let the games begin!"
#define SAY_VAEL_INTRO "<unknown>"
#define SOUND_GAMESBEGIN 8280
#define SOUND_VAEL_INTRO 8279
#define SAY_GAMESBEGIN_1 -1469004
#define SAY_GAMESBEGIN_2 -1469005
#define SAY_VAEL_INTRO -1469006 //when he corrupts Vaelastrasz
#define GOSSIP_ITEM_1 "I've made no mistakes."
#define GOSSIP_ITEM_2 "You have lost your mind, Nefarius. You speak in riddles."
@@ -41,7 +38,6 @@ EndScriptData */
#define CREATURE_BLACK_DRAKANOID 14265
#define CREATURE_CHROMATIC_DRAKANOID 14302
#define CREATURE_NEFARIAN 11583
#define ADD_X1 -7591.151855
@@ -191,8 +187,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
void BeginEvent(Player* target)
{
DoYell(SAY_GAMESBEGIN_2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature,SOUND_GAMESBEGIN);
DoScriptText(SAY_GAMESBEGIN_2, m_creature);
//Trinity::Singleton<MapManager>::Instance().GetMap(m_creature->GetMapId(), m_creature)->GetPlayers().begin();
/*
@@ -326,7 +321,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
Nefarian->setFaction(103);
NefarianGUID = Nefarian->GetGUID();
}
else DoYell("UNABLE TO SPAWN NEF PROPERLY",LANG_UNIVERSAL,NULL);
else error_log("SD2: Blackwing Lair: Unable to spawn nefarian properly.");
}
AddSpawnTimer = 4000;
@@ -379,7 +374,7 @@ bool GossipSelect_boss_victor_nefarius(Player *player, Creature *_Creature, uint
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterSay(SAY_GAMESBEGIN_1,LANG_UNIVERSAL,0);
DoScriptText(SAY_GAMESBEGIN_1, _Creature);
((boss_victor_nefariusAI*)_Creature->AI())->BeginEvent(player);
break;
}
@@ -16,30 +16,25 @@
/* ScriptData
SDName: Boss_Aeonus
SD%Complete: 100
SDComment:
SD%Complete: 80
SDComment: Some spells not implemented
SDCategory: Caverns of Time, The Dark Portal
EndScriptData */
#include "precompiled.h"
#define SAND_BREATH 31478
#define TIME_STOP 31422
#define FRENZY 19812
#define SAY_ENTER -1269012
#define SAY_AGGRO -1269013
#define SAY_BANISH -1269014
#define SAY_SLAY1 -1269015
#define SAY_SLAY2 -1269016
#define SAY_DEATH -1269017
#define SAY_ENTER "The time has come to shatter this clockwork universe forever! Let us no longer be slaves of the hourglass! I warn you: those who do not embrace the greater path shall become victims of its passing!"
#define SAY_AGGRO "Let us see what fate lays in store..."
#define SAY_BANISH "Your time is up, slave of the past!"
#define SAY_SLAY1 "One less obstacle in our way!"
#define SAY_SLAY2 "No one can stop us! No one!"
#define SAY_DEATH "It is only a matter...of time."
#define SOUND_ENTER 10400
#define SOUND_AGGRO 10402
#define SOUND_BANISH 10401
#define SOUND_SLAY1 10403
#define SOUND_SLAY2 10404
#define SOUND_DEATH 10405
#define SPELL_CLEAVE 40504
#define SPELL_TIME_STOP 31422
#define SPELL_ENRAGE 37605
#define SPELL_SAND_BREATH 31473
#define H_SPELL_SAND_BREATH 39049
struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
{
@@ -58,30 +53,20 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
void Aggro(Unit *who)
{
DoYell(SAY_AGGRO,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO);
DoScriptText(SAY_AGGRO, m_creature);
}
void JustDied(Unit *victim)
{
//Just Died
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
DoScriptText(SAY_DEATH, m_creature);
}
void KilledUnit(Unit *victim)
{
//Killed Unit
switch(rand()%2)
{
case 0:
DoYell(SAY_SLAY1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY1);
break;
case 1:
DoYell(SAY_SLAY2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY2);
break;
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
}
}
@@ -97,24 +82,23 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
Unit* target = NULL;
target = m_creature->getVictim();
if (target)
DoCast(target, SAND_BREATH);
DoCast(target, SPELL_SAND_BREATH);
SandBreath_Timer = 30000;
}else SandBreath_Timer -= diff;
//Time Stop
if (TimeStop_Timer < diff)
{
DoYell(SAY_BANISH, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_BANISH);
DoScriptText(SAY_BANISH, m_creature);
DoCast(m_creature->getVictim(), TIME_STOP);
DoCast(m_creature->getVictim(), SPELL_TIME_STOP);
TimeStop_Timer = 40000;
}else TimeStop_Timer -= diff;
//Frenzy
if (Frenzy_Timer < diff)
{
DoCast(m_creature, FRENZY);
DoCast(m_creature, SPELL_ENRAGE);
Frenzy_Timer = 120000;
}else Frenzy_Timer -= diff;
@@ -16,30 +16,26 @@
/* ScriptData
SDName: Boss_Chrono_Lord_Deja
SD%Complete: 100
SDComment:
SD%Complete: 65
SDComment: All abilities not implemented
SDCategory: Caverns of Time, The Dark Portal
EndScriptData */
#include "precompiled.h"
#define ARCANE_BLAST 24857
#define TIME_LAPSE 31467
#define MAGNETIC_PULL 28337 //Not Implemented (Heroic mod)
#define SAY_ENTER -1269006
#define SAY_AGGRO -1269007
#define SAY_BANISH -1269008
#define SAY_SLAY1 -1269009
#define SAY_SLAY2 -1269010
#define SAY_DEATH -1269011
#define SAY_ENTER "Why do you aid the Magus? Just think of how many lives could be saved if the portal is never opened, if the resulting wars could be erased ..."
#define SAY_AGGRO "If you will not cease this foolish quest, then you will die!"
#define SAY_BANISH "You have outstayed your welcome, Timekeeper. Begone!"
#define SAY_SLAY1 "I told you it was a fool's quest!"
#define SAY_SLAY2 "Leaving so soon?"
#define SAY_DEATH "Time ... is on our side."
#define SOUND_ENTER 10412
#define SOUND_AGGRO 10414
#define SOUND_BANISH 10413
#define SOUND_SLAY1 10415
#define SOUND_SLAY2 10416
#define SOUND_DEATH 10417
#define SPELL_ARCANE_BLAST 31457
#define H_SPELL_ARCANE_BLAST 38538
#define SPELL_ARCANE_DISCHARGE 31472
#define H_SPELL_ARCANE_DISCHARGE 38539
#define SPELL_TIME_LAPSE 31467
#define SPELL_ATTRACTION 38540 //Not Implemented (Heroic mode)
struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
{
@@ -56,30 +52,21 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
void Aggro(Unit *who)
{
DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO);
DoScriptText(SAY_AGGRO, m_creature);
}
void KilledUnit(Unit *victim)
{
switch(rand()%2)
{
case 0:
DoYell(SAY_SLAY1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY1);
break;
case 1:
DoYell(SAY_SLAY2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY2);
break;
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
}
}
void JustDied(Unit *victim)
{
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
DoScriptText(SAY_DEATH, m_creature);
}
void UpdateAI(const uint32 diff)
@@ -91,21 +78,19 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
//Arcane Blast
if (ArcaneBlast_Timer < diff)
{
DoCast(m_creature->getVictim(), ARCANE_BLAST);
DoCast(m_creature->getVictim(), SPELL_ARCANE_BLAST);
ArcaneBlast_Timer = 20000+rand()%5000;
}else ArcaneBlast_Timer -= diff;
//Time Lapse
if (TimeLapse_Timer < diff)
{
DoYell(SAY_BANISH, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_BANISH);
DoCast(m_creature, TIME_LAPSE);
DoScriptText(SAY_BANISH, m_creature);
DoCast(m_creature, SPELL_TIME_LAPSE);
TimeLapse_Timer = 15000+rand()%10000;
}else TimeLapse_Timer -= diff;
DoMeleeAttackIfReady();
}
};
@@ -16,31 +16,25 @@
/* ScriptData
SDName: Boss_Temporus
SD%Complete: 100
SDComment:
SD%Complete: 75
SDComment: More abilities need to be implemented
SDCategory: Caverns of Time, The Dark Portal
EndScriptData */
#include "precompiled.h"
#define SPELL_TAUNT 355
#define SPELL_HASTE 31458
#define SPELL_MORTAL_WOUND 28467
#define SPELL_REFLECT 23920 //Not Implemented (Heroic mod)
#define SAY_ENTER -1269000
#define SAY_AGGRO -1269001
#define SAY_BANISH -1269002
#define SAY_SLAY1 -1269003
#define SAY_SLAY2 -1269004
#define SAY_DEATH -1269005
#define SAY_ENTER "Why do you persist? Surely you can see the futility of it all. It is not too late! You may still leave with your lives ..."
#define SAY_AGGRO "So be it ... you have been warned."
#define SAY_BANISH "Time... sands of time is run out for you."
#define SAY_SLAY1 "You should have left when you had the chance."
#define SAY_SLAY2 "Your days are done."
#define SAY_DEATH "My death means ... little."
#define SOUND_ENTER 10442
#define SOUND_AGGRO 10444
#define SOUND_BANISH 10443
#define SOUND_SLAY1 10445
#define SOUND_SLAY2 10446
#define SOUND_DEATH 10447
#define SPELL_HASTE 31458
#define SPELL_MORTAL_WOUND 31464
#define SPELL_WING_BUFFET 31475
#define H_SPELL_WING_BUFFET 38593
#define SPELL_REFLECT 38592 //Not Implemented (Heroic mod)
struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
{
@@ -51,35 +45,30 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
void Reset()
{
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
Haste_Timer = 20000;
SpellReflection_Timer = 40000;
}
void Aggro(Unit *who)
{
DoYell(SAY_AGGRO,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO);
DoScriptText(SAY_AGGRO, m_creature);
}
void KilledUnit(Unit *victim)
{
switch(rand()%2)
{
case 0:
DoYell(SAY_SLAY1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY1);
break;
case 1:
DoYell(SAY_SLAY2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY2);
break;
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
}
}
void JustDied(Unit *victim)
{
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
DoScriptText(SAY_DEATH, m_creature);
}
void MoveInLineOfSight(Unit *who)
@@ -93,8 +82,7 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
if(((Creature*)who)->GetEntry() == 17918 && m_creature->IsWithinDistInMap(who,20))
{
//This is the wrong yell & sound for despawning time keepers!
DoYell(SAY_ENTER, LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_ENTER);
DoScriptText(SAY_ENTER, m_creature);
m_creature->DealDamage(who, who->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
}
@@ -117,33 +105,26 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
void UpdateAI(const uint32 diff)
{
//Return since we have no target
if (!m_creature->SelectHostilTarget() || !m_creature->getVictim() )
if (!m_creature->SelectHostilTarget() || !m_creature->getVictim())
return;
//Check if we have a current target
if( m_creature->getVictim() && m_creature->isAlive())
//Attack Haste
if (Haste_Timer < diff)
{
DoCast(m_creature, SPELL_HASTE);
Haste_Timer = 20000+rand()%5000;
}else Haste_Timer -= diff;
//Attack Haste
if (Haste_Timer < diff)
{
DoCast(m_creature, SPELL_HASTE);
Haste_Timer = 20000+rand()%5000;
}else Haste_Timer -= diff;
//Spell Reflection
if (SpellReflection_Timer < diff)
{
DoScriptText(SAY_BANISH, m_creature);
//Spell Reflection
if (SpellReflection_Timer < diff)
{
DoYell(SAY_BANISH, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_BANISH);
DoCast(m_creature, SPELL_REFLECT);
SpellReflection_Timer = 40000+rand()%10000;
}else SpellReflection_Timer -= diff;
DoCast(m_creature, SPELL_REFLECT);
SpellReflection_Timer = 40000+rand()%10000;
}else SpellReflection_Timer -= diff;
DoMeleeAttackIfReady();
}
DoMeleeAttackIfReady();
}
};
@@ -24,26 +24,19 @@ EndScriptData */
#include "precompiled.h"
#include "def_old_hillsbrad.h"
#define HOLY_LIGHT 29562
#define CLEANSE 39078
#define HAMMER_OF_JUSTICE 13005
#define HOLY_SHIELD 31904
#define DEVOTION_AURA 41452
#define CONSECRATION 41541
#define SAY_ENTER -1560000
#define SAY_TAUNT1 -1560001
#define SAY_TAUNT2 -1560002
#define SAY_SLAY1 -1560003
#define SAY_SLAY2 -1560004
#define SAY_DEATH -1560005
#define SAY_ENTER "Thrall! You didn't really think you would escape did you? You and your allies shall answer to Blackmoore - after I've had my fun!"
#define SAY_AGGRO1 "You're a slave. That's all you'll ever be.'"
#define SAY_AGGRO2 "I don't know what Blackmoore sees in you. For my money, you're just another ignorant savage!"
#define SAY_SLAY1 "Thrall will never be free!"
#define SAY_SLAY2 "Did you really think you would leave here alive?"
#define SAY_DEATH "Guards! Urgh..Guards..!'"
#define SOUND_ENTER 10406
#define SOUND_AGGRO1 10407
#define SOUND_AGGRO2 10408
#define SOUND_SLAY1 10409
#define SOUND_SLAY2 10410
#define SOUND_DEATH 10411
#define SPELL_HOLY_LIGHT 29427
#define SPELL_CLEANSE 29380
#define SPELL_HAMMER_OF_JUSTICE 13005
#define SPELL_HOLY_SHIELD 31904
#define SPELL_DEVOTION_AURA 8258
#define SPELL_CONSECRATION 38385
struct TRINITY_DLL_DECL boss_captain_skarlocAI : public ScriptedAI
{
@@ -68,45 +61,31 @@ struct TRINITY_DLL_DECL boss_captain_skarlocAI : public ScriptedAI
Cleanse_Timer = 10000;
HammerOfJustice_Timer = 60000;
HolyShield_Timer = 240000;
DevotionAura_Timer = 60000;
DevotionAura_Timer = 3000;
Consecration_Timer = 8000;
}
void Aggro(Unit *who)
{
switch(rand()%2)
{
case 0:
DoYell(SAY_AGGRO1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO1);
break;
case 1:
DoYell(SAY_AGGRO2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO2);
break;
}
//This is not correct. Should taunt Thrall before engage in combat
DoScriptText(SAY_TAUNT1, m_creature);
DoScriptText(SAY_TAUNT2, m_creature);
}
void KilledUnit(Unit *victim)
{
switch(rand()%2)
{
case 0:
DoYell(SAY_SLAY1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY1);
break;
case 1:
DoYell(SAY_SLAY2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY2);
break;
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
}
}
void JustDied(Unit *victim)
{
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
if( pInstance && pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS )
DoScriptText(SAY_DEATH, m_creature);
if (pInstance && pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS)
pInstance->SetData(TYPE_THRALL_PART1, DONE);
}
@@ -119,42 +98,42 @@ struct TRINITY_DLL_DECL boss_captain_skarlocAI : public ScriptedAI
//Holy_Light
if (Holy_Light_Timer < diff)
{
DoCast(m_creature, HOLY_LIGHT);
DoCast(m_creature, SPELL_HOLY_LIGHT);
Holy_Light_Timer = 30000;
}else Holy_Light_Timer -= diff;
//Cleanse
if(Cleanse_Timer < diff)
{
DoCast(m_creature, CLEANSE);
Cleanse_Timer = 10000 ;
DoCast(m_creature, SPELL_CLEANSE);
Cleanse_Timer = 10000;
} else Cleanse_Timer -= diff;
//Hammer of Justice
if (HammerOfJustice_Timer < diff)
{
DoCast(m_creature->getVictim(), HAMMER_OF_JUSTICE);
DoCast(m_creature->getVictim(), SPELL_HAMMER_OF_JUSTICE);
HammerOfJustice_Timer = 60000;
}else HammerOfJustice_Timer -= diff;
//Holy Shield
if (HolyShield_Timer < diff)
{
DoCast(m_creature,HOLY_SHIELD);
DoCast(m_creature, SPELL_HOLY_SHIELD);
HolyShield_Timer = 240000;
}else HolyShield_Timer -= diff;
//Devotion_Aura
if (DevotionAura_Timer < diff)
{
DoCast(m_creature,DEVOTION_AURA);
DoCast(m_creature, SPELL_DEVOTION_AURA);
DevotionAura_Timer = 60000;
}else DevotionAura_Timer -= diff;
//Consecration
if (Consecration_Timer < diff)
{
//DoCast(m_creature->getVictim(),CONSECRATION);
//DoCast(m_creature->getVictim(), SPELL_CONSECRATION);
Consecration_Timer = 8000;
}else Consecration_Timer -= diff;
@@ -24,30 +24,16 @@ EndScriptData */
#include "precompiled.h"
#include "def_old_hillsbrad.h"
#define SAY_ENTER1 "Thrall! Come outside and face your fate!"
#define SOUND_ENTER1 10418
#define SAY_ENTER2 "Taretha's life hangs in the balance. Surely you care for her. Surely you wish to save her..."
#define SOUND_ENTER2 10419
#define SAY_ENTER3 "Ah, there you are. I had hoped to accomplish this with a bit of subtlety, but I suppose direct confrontation was inevitable. Your future, Thrall, must not come to pass and so...you and your troublesome friends must die!"
#define SOUND_ENTER3 10420
#define SAY_AGGRO1 "Enough! I will erase your very existence!"
#define SOUND_AGGRO1 10421
#define SAY_AGGRO2 "You cannot fight fate!"
#define SOUND_AGGRO2 10422
#define SAY_SLAY1 "You are...irrelevant."
#define SOUND_SLAY1 10425
#define SAY_SLAY2 "Thrall will remain a slave. Taretha will die. You have failed."
#define SOUND_SLAY2 10426
#define SAY_BREATH1 "Not so fast!"
#define SOUND_BREATH1 10423
#define SAY_BREATH2 "Struggle as much as you like!"
#define SOUND_BREATH2 10424
#define SAY_DEATH "No!...The master... will not... be pleased."
#define SOUND_DEATH 10427
#define SAY_ENTER1 -1560013
#define SAY_ENTER2 -1560014
#define SAY_ENTER3 -1560015
#define SAY_AGGRO1 -1560016
#define SAY_AGGRO2 -1560017
#define SAY_SLAY1 -1560018
#define SAY_SLAY2 -1560019
#define SAY_BREATH1 -1560020
#define SAY_BREATH2 -1560021
#define SAY_DEATH -1560022
#define SPELL_SAND_BREATH 31914
#define SPELL_IMPENDING_DEATH 31916
@@ -81,14 +67,8 @@ struct TRINITY_DLL_DECL boss_epoch_hunterAI : public ScriptedAI
{
switch(rand()%2)
{
case 0:
DoYell(SAY_AGGRO1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO1);
break;
case 1:
DoYell(SAY_AGGRO2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO2);
break;
case 0: DoScriptText(SAY_AGGRO1, m_creature); break;
case 1: DoScriptText(SAY_AGGRO2, m_creature); break;
}
}
@@ -96,23 +76,16 @@ struct TRINITY_DLL_DECL boss_epoch_hunterAI : public ScriptedAI
{
switch(rand()%2)
{
case 0:
DoYell(SAY_SLAY1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY1);
break;
case 1:
DoYell(SAY_SLAY2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY2);
break;
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
}
}
void JustDied(Unit *victim)
{
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
DoScriptText(SAY_DEATH, m_creature);
if( pInstance && pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS )
if (pInstance && pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS)
pInstance->SetData(TYPE_THRALL_PART4, DONE);
}
@@ -123,42 +96,36 @@ struct TRINITY_DLL_DECL boss_epoch_hunterAI : public ScriptedAI
return;
//Sand Breath
if( SandBreath_Timer < diff )
if (SandBreath_Timer < diff)
{
if( m_creature->IsNonMeleeSpellCasted(false) )
if (m_creature->IsNonMeleeSpellCasted(false))
m_creature->InterruptNonMeleeSpells(false);
DoCast(m_creature->getVictim(),SPELL_SAND_BREATH);
switch(rand()%2)
{
case 0:
DoYell(SAY_BREATH1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_BREATH1);
break;
case 1:
DoYell(SAY_BREATH2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_BREATH2);
break;
case 0: DoScriptText(SAY_BREATH1, m_creature); break;
case 1: DoScriptText(SAY_BREATH2, m_creature); break;
}
SandBreath_Timer = 25000+rand()%5000;
}else SandBreath_Timer -= diff;
if( ImpendingDeath_Timer < diff )
if (ImpendingDeath_Timer < diff)
{
DoCast(m_creature->getVictim(),SPELL_IMPENDING_DEATH);
ImpendingDeath_Timer = 30000+rand()%5000;
}else ImpendingDeath_Timer -= diff;
if( WingBuffet_Timer < diff )
if (WingBuffet_Timer < diff)
{
if( Unit *target = SelectUnit(SELECT_TARGET_RANDOM,0) )
if (Unit *target = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(target,SPELL_WING_BUFFET);
WingBuffet_Timer = 25000+rand()%10000;
}else WingBuffet_Timer -= diff;
if( Mda_Timer < diff )
if (Mda_Timer < diff)
{
DoCast(m_creature,SPELL_MAGIC_DISRUPTION_AURA);
Mda_Timer = 15000;
@@ -56,28 +56,18 @@ bool GOHello_go_barrel_old_hillsbrad(Player *player, GameObject* _GO)
## boss_lieutenant_drake
######*/
#define WHIRLWIND 40236
#define FEAR 33789
#define MORTAL_STRIKE 40220
#define EXPLODIG_SHOUT 33792
#define SAY_ENTER -1560006
#define SAY_AGGRO -1560007
#define SAY_SLAY1 -1560008
#define SAY_SLAY2 -1560009
#define SAY_MORTAL -1560010
#define SAY_SHOUT -1560011
#define SAY_DEATH -1560012
#define SAY_ENTER1 "You there, fetch water quickly!"
#define SAY_ENTER2 "Get these flames out before they spread to the rest of the keep!"
#define SAY_ENTER3 "Hurry, damn you!"
#define SAY_AGGRO "I know what you're up to, and I mean to put an end to it, permanently!"
#define SAY_SLAY1 "No more middling for you."
#define SAY_SLAY2 "You will not interfere!"
#define SAY_MORTAL "Time to bleed!"
#define SAY_SHOUT "Run, you blasted cowards!"
#define SAY_DEATH "Thrall... must not... go free."
#define SOUND_ENTER 10428
#define SOUND_AGGRO 10429
#define SOUND_SLAY1 10432
#define SOUND_SLAY2 10433
#define SOUND_MORTAL 10430
#define SOUND_SHOUT 10431
#define SOUND_DEATH 10434
#define SPELL_WHIRLWIND 31909
#define SPELL_HAMSTRING 9080
#define SPELL_MORTAL_STRIKE 31911
#define SPELL_FRIGHTENING_SHOUT 33789
struct Location
{
@@ -135,92 +125,59 @@ struct TRINITY_DLL_DECL boss_lieutenant_drakeAI : public ScriptedAI
void Aggro(Unit *who)
{
DoYell(SAY_AGGRO,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_AGGRO);
DoScriptText(SAY_AGGRO, m_creature);
}
void KilledUnit(Unit *victim)
{
switch(rand()%2)
{
case 0:
DoYell(SAY_SLAY1,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY1);
break;
case 1:
DoYell(SAY_SLAY2,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_SLAY2);
break;
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
}
}
void JustDied(Unit *victim)
{
DoYell(SAY_DEATH,LANG_UNIVERSAL,NULL);
DoPlaySoundToSet(m_creature, SOUND_DEATH);
DoScriptText(SAY_DEATH, m_creature);
}
void UpdateAI(const uint32 diff)
{
//TODO: make this work
if( CanPatrol && wpId == 0 )
if (CanPatrol && wpId == 0)
{
m_creature->GetMotionMaster()->MovePoint(DrakeWP[0].wpId, DrakeWP[0].x, DrakeWP[0].y, DrakeWP[0].z);
wpId++;
}
//Return since we have no target
if (!m_creature->SelectHostilTarget() || !m_creature->getVictim() )
if (!m_creature->SelectHostilTarget() || !m_creature->getVictim())
return;
//Whirlwind
if (Whirlwind_Timer < diff)
{
DoCast(m_creature->getVictim(), WHIRLWIND);
DoCast(m_creature->getVictim(), SPELL_WHIRLWIND);
Whirlwind_Timer = 20000+rand()%5000;
}else Whirlwind_Timer -= diff;
//Fear
if (Fear_Timer < diff)
{
Unit* target = NULL;
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
if (target)
DoCast(target, FEAR);
DoScriptText(SAY_SHOUT, m_creature);
DoCast(m_creature->getVictim(), SPELL_FRIGHTENING_SHOUT);
Fear_Timer = 30000+rand()%10000;
}else Fear_Timer -= diff;
//Mortal Strike
if (MortalStrike_Timer < diff)
{
DoYell(SAY_MORTAL, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_MORTAL);
DoCast(m_creature->getVictim(), MORTAL_STRIKE);
DoScriptText(SAY_MORTAL, m_creature);
DoCast(m_creature->getVictim(), SPELL_MORTAL_STRIKE);
MortalStrike_Timer = 45000+rand()%5000;
}else MortalStrike_Timer -= diff;
/*
//This only enabled on heroic?
//Exploding Shout
if (m_creature->IsHeroicCreature())
{
if (ExplodingShout_Timer < diff)
{
Unit* target = NULL;
target = SelectUnit(SELECT_TARGET_RANDOM,0);
if (target)
DoYell(SAY_SHOUT, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_SHOUT);
DoCast(target,EXPLODING_SHOUT);
ExplodingShout_Timer = 25000+rand()%5000;
}else ExplodingShout_Timer -= diff;
}
*/
DoMeleeAttackIfReady();
}
};