[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:
@@ -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;
|
||||
|
||||
|
||||
+21
-36
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+28
-49
@@ -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
-57
@@ -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;
|
||||
|
||||
+22
-65
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user