Added Sunwell SQL and update few scripts
--HG-- branch : trunk
This commit is contained in:
@@ -16,62 +16,75 @@
|
||||
|
||||
/* ScriptData
|
||||
SDName: Boss_Brutallus
|
||||
SD%Complete: 50
|
||||
SDComment: Intro not made. Script for Madrigosa to be added here.
|
||||
SD%Complete: 80
|
||||
SDComment: Find a way to start the intro, best code for the intro
|
||||
EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
#include "def_sunwell_plateau.h"
|
||||
|
||||
#define YELL_INTRO -1580017
|
||||
#define YELL_INTRO_BREAK_ICE -1580018
|
||||
#define YELL_INTRO_CHARGE -1580019
|
||||
#define YELL_INTRO_KILL_MADRIGOSA -1580020
|
||||
#define YELL_INTRO_TAUNT -1580021
|
||||
enum Quotes
|
||||
{
|
||||
YELL_INTRO = -1580017,
|
||||
YELL_INTRO_BREAK_ICE = -1580018,
|
||||
YELL_INTRO_CHARGE = -1580019,
|
||||
YELL_INTRO_KILL_MADRIGOSA = -1580020,
|
||||
YELL_INTRO_TAUNT = -1580021,
|
||||
|
||||
YELL_MADR_ICE_BARRIER = -1580031,
|
||||
YELL_MADR_INTRO = -1580032,
|
||||
YELL_MADR_ICE_BLOCK = -1580033,
|
||||
YELL_MADR_TRAP = -1580034,
|
||||
YELL_MADR_DEATH = -1580035,
|
||||
|
||||
#define YELL_MADR_ICE_BARRIER -1580031
|
||||
#define YELL_MADR_INTRO -1580032
|
||||
#define YELL_MADR_ICE_BLOCK -1580033
|
||||
#define YELL_MADR_TRAP -1580034
|
||||
#define YELL_MADR_DEATH -1580035
|
||||
YELL_AGGRO = -1580022,
|
||||
YELL_KILL1 = -1580023,
|
||||
YELL_KILL2 = -1580024,
|
||||
YELL_KILL3 = -1580025,
|
||||
YELL_LOVE1 = -1580026,
|
||||
YELL_LOVE2 = -1580027,
|
||||
YELL_LOVE3 = -1580028,
|
||||
YELL_BERSERK = -1580029,
|
||||
YELL_DEATH = -1580030
|
||||
};
|
||||
|
||||
#define YELL_AGGRO -1580022
|
||||
#define YELL_KILL1 -1580023
|
||||
#define YELL_KILL2 -1580024
|
||||
#define YELL_KILL3 -1580025
|
||||
#define YELL_LOVE1 -1580026
|
||||
#define YELL_LOVE2 -1580027
|
||||
#define YELL_LOVE3 -1580028
|
||||
#define YELL_BERSERK -1580029
|
||||
#define YELL_DEATH -1580030
|
||||
enum Spells
|
||||
{
|
||||
SPELL_METEOR_SLASH = 45150,
|
||||
SPELL_BURN = 46394,
|
||||
SPELL_STOMP = 45185,
|
||||
SPELL_BERSERK = 26662,
|
||||
SPELL_DUAL_WIELD = 42459,
|
||||
|
||||
#define SPELL_METEOR_SLASH 45150
|
||||
#define SPELL_BURN 45141
|
||||
#define SPELL_STOMP 45185
|
||||
#define SPELL_BERSERK 26662
|
||||
#define SPELL_DUAL_WIELD 42459
|
||||
SPELL_INTRO_FROST_BLAST = 45203,
|
||||
SPELL_INTRO_FROSTBOLT = 44843,
|
||||
SPELL_INTRO_ENCAPSULATE = 45665,
|
||||
SPELL_INTRO_ENCAPSULATE_CHANELLING = 45661
|
||||
};
|
||||
|
||||
#define FREEZING 45203
|
||||
#define FROST_BOLT 44843
|
||||
#define ENCAPSULATE 45665
|
||||
#define ENCAPSULATE_CHANELLING 45661
|
||||
#define FELMYST 25038
|
||||
|
||||
struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
{
|
||||
boss_brutallusAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
boss_brutallusAI(Creature *c) : ScriptedAI(c){
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
Unit* Madrigosa;
|
||||
|
||||
uint32 SlashTimer;
|
||||
uint32 BurnTimer;
|
||||
uint32 StompTimer;
|
||||
uint32 BerserkTimer;
|
||||
|
||||
uint32 ConversationTimer;
|
||||
uint32 IntroPhase;
|
||||
uint32 IntroPhaseTimer;
|
||||
uint32 IntroFrostBoltTimer;
|
||||
|
||||
bool Intro;
|
||||
bool IsIntro;
|
||||
bool Enraged;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -79,10 +92,31 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
StompTimer = 30000;
|
||||
BurnTimer = 60000;
|
||||
BerserkTimer = 360000;
|
||||
|
||||
IntroPhase = 0;
|
||||
IntroPhaseTimer = 0;
|
||||
IntroFrostBoltTimer = 0;
|
||||
|
||||
IsIntro = false;
|
||||
Enraged = false;
|
||||
Intro = true; //for debug
|
||||
|
||||
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
Madrigosa = Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_MADRIGOSA));
|
||||
//Creature* boss = Unit::GetCreature((*m_creature),AzgalorGUID);
|
||||
if(!Madrigosa) error_log("Madrigosa ist nicht zu finden");
|
||||
|
||||
if(Intro && Madrigosa){
|
||||
if(!Madrigosa->isAlive())
|
||||
EndIntro();
|
||||
else error_log("Madrigosa is Tod");
|
||||
}
|
||||
else
|
||||
EndIntro();
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_BRUTALLUS, NOT_STARTED);
|
||||
pInstance->SetData(DATA_BRUTALLUS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void Aggro(Unit *who)
|
||||
@@ -90,16 +124,16 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
DoScriptText(YELL_AGGRO, m_creature);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_BRUTALLUS, IN_PROGRESS);
|
||||
pInstance->SetData(DATA_BRUTALLUS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(YELL_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_KILL2, m_creature); break;
|
||||
case 2: DoScriptText(YELL_KILL3, m_creature); break;
|
||||
case 0: DoScriptText(YELL_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_KILL2, m_creature); break;
|
||||
case 2: DoScriptText(YELL_KILL3, m_creature); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,18 +141,142 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(YELL_DEATH, m_creature);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_BRUTALLUS, DONE);
|
||||
if(pInstance){
|
||||
pInstance->SetData(DATA_BRUTALLUS_EVENT, DONE);
|
||||
float x,y,z;
|
||||
m_creature->GetPosition(x,y,z);
|
||||
m_creature->SummonCreature(FELMYST, x,y, z+30, m_creature->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void StartIntro()
|
||||
{
|
||||
if(!Intro)
|
||||
return;
|
||||
if(Madrigosa){
|
||||
Madrigosa->setDeathState(ALIVE);
|
||||
Madrigosa->setActive(true);
|
||||
IsIntro = true;
|
||||
}
|
||||
error_log("Starte das Intro");
|
||||
}
|
||||
|
||||
void EndIntro()
|
||||
{
|
||||
error_log("Beende das Intro");
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
Intro = false;
|
||||
IsIntro = false;
|
||||
}
|
||||
|
||||
void DoIntro()
|
||||
{
|
||||
if(!Madrigosa)
|
||||
return;
|
||||
|
||||
switch(IntroPhase)
|
||||
{
|
||||
case 0:
|
||||
DoScriptText(YELL_MADR_ICE_BARRIER, Madrigosa);
|
||||
IntroPhaseTimer = 5000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 1:
|
||||
m_creature->SetInFront(Madrigosa);
|
||||
Madrigosa->SetInFront(m_creature);
|
||||
DoScriptText(YELL_MADR_INTRO, Madrigosa, m_creature);
|
||||
IntroPhaseTimer = 9000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(YELL_INTRO, m_creature, Madrigosa);
|
||||
IntroPhaseTimer = 13000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 3:
|
||||
DoCast(m_creature, SPELL_INTRO_FROST_BLAST);
|
||||
Madrigosa->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
|
||||
IntroFrostBoltTimer = 3000;
|
||||
IntroPhaseTimer = 28000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 4:
|
||||
DoScriptText(YELL_INTRO_BREAK_ICE, m_creature);
|
||||
IntroPhaseTimer = 6000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 5:
|
||||
Madrigosa->CastSpell(m_creature, SPELL_INTRO_ENCAPSULATE_CHANELLING, false);
|
||||
DoScriptText(YELL_MADR_TRAP, Madrigosa);
|
||||
DoCast(m_creature, SPELL_INTRO_ENCAPSULATE);
|
||||
IntroPhaseTimer = 11000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 6:
|
||||
m_creature->SetSpeed(MOVE_RUN, 4.0f, true);
|
||||
DoScriptText(YELL_INTRO_CHARGE, m_creature);
|
||||
IntroPhaseTimer = 3000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 7:
|
||||
m_creature->DealDamage(Madrigosa, Madrigosa->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, true);
|
||||
DoScriptText(YELL_MADR_DEATH, Madrigosa);
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
m_creature->AttackStop();
|
||||
m_creature->SetSpeed(MOVE_RUN, 1.0f, true);
|
||||
IntroPhaseTimer = 3000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 8:
|
||||
DoScriptText(YELL_INTRO_KILL_MADRIGOSA, m_creature);
|
||||
m_creature->SetOrientation(0.14);
|
||||
Madrigosa->setDeathState(CORPSE);
|
||||
IntroPhaseTimer = 5000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 9:
|
||||
DoScriptText(YELL_INTRO_TAUNT, m_creature);
|
||||
IntroPhaseTimer = 5000;
|
||||
++IntroPhase;
|
||||
break;
|
||||
case 10:
|
||||
EndIntro();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who){
|
||||
if(pInstance && Intro)
|
||||
pInstance->SetData(DATA_BRUTALLUS_EVENT, SPECIAL);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim() )
|
||||
return;
|
||||
if(Intro && !IsIntro)
|
||||
StartIntro();
|
||||
|
||||
if(IsIntro)
|
||||
{
|
||||
if(IntroPhaseTimer < diff){
|
||||
DoIntro();
|
||||
}else IntroPhaseTimer -= diff;
|
||||
|
||||
if(IntroPhase == 3 + 1){
|
||||
if(IntroFrostBoltTimer < diff){
|
||||
if(Madrigosa){
|
||||
Madrigosa->CastSpell(m_creature, SPELL_INTRO_FROSTBOLT, false);
|
||||
IntroFrostBoltTimer = 2000;
|
||||
}
|
||||
}else IntroFrostBoltTimer -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
if(!UpdateVictim() || IsIntro)
|
||||
return;
|
||||
|
||||
if(SlashTimer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_METEOR_SLASH);
|
||||
DoCast(m_creature->getVictim(), SPELL_METEOR_SLASH);
|
||||
SlashTimer = 11000;
|
||||
}else SlashTimer -= diff;
|
||||
|
||||
@@ -126,14 +284,11 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(YELL_LOVE1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_LOVE2, m_creature); break;
|
||||
case 2: DoScriptText(YELL_LOVE3, m_creature); break;
|
||||
case 0: DoScriptText(YELL_LOVE1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_LOVE2, m_creature); break;
|
||||
case 2: DoScriptText(YELL_LOVE3, m_creature); break;
|
||||
}
|
||||
|
||||
Unit *Target = m_creature->getVictim();
|
||||
DoCast(Target,SPELL_STOMP);
|
||||
if(Target->HasAura(45151,0)) Target->RemoveAura(45151,0);
|
||||
DoCast(m_creature->getVictim(), SPELL_STOMP);
|
||||
StompTimer = 30000;
|
||||
}else StompTimer -= diff;
|
||||
|
||||
@@ -142,33 +297,30 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
target->CastSpell(target,SPELL_BURN,true);
|
||||
BurnTimer = 60000;
|
||||
}
|
||||
else BurnTimer -= diff;
|
||||
}else BurnTimer -= diff;
|
||||
|
||||
if(BerserkTimer < diff)
|
||||
if(BerserkTimer < diff && !Enraged)
|
||||
{
|
||||
DoScriptText(YELL_BERSERK, m_creature);
|
||||
DoCast(m_creature,SPELL_BERSERK);
|
||||
BerserkTimer = 20000;
|
||||
}
|
||||
else BerserkTimer -= diff;
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
Enraged = true;
|
||||
}else BerserkTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_brutallus(Creature *_Creature)
|
||||
{
|
||||
return new boss_brutallusAI (_Creature);
|
||||
}
|
||||
|
||||
|
||||
void AddSC_boss_brutallus()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="boss_brutallus";
|
||||
newscript->GetAI = &GetAI_boss_brutallus;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
/* Copyright (C) 2009 Trinity <http://www.trinitycore.org/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
@@ -23,99 +23,98 @@ EndScriptData */
|
||||
#include "precompiled.h"
|
||||
#include "def_sunwell_plateau.h"
|
||||
|
||||
//Intro
|
||||
#define YELL_INTRO_SAC_1 "Misery..."
|
||||
#define YELL_INTRO_ALY_2 "Depravity..."
|
||||
#define YELL_INTRO_SAC_3 "Confusion..."
|
||||
#define YELL_INTRO_ALY_4 "Hatred..."
|
||||
#define YELL_INTRO_SAC_5 "Mistrust..."
|
||||
#define YELL_INTRO_ALY_6 "Chaos..."
|
||||
#define YELL_INTRO_SAC_7 "These are the hallmarks..."
|
||||
#define YELL_INTRO_ALY_8 "These are the pillars..."
|
||||
enum Quotes
|
||||
{
|
||||
//Alytesh
|
||||
YELL_CANFLAGRATION = -1580044,
|
||||
YELL_SISTER_SACROLASH_DEAD = -1580045,
|
||||
YELL_ALY_KILL_1 = -1580046,
|
||||
YELL_ALY_KILL_2 = -1580047,
|
||||
YELL_ALY_DEAD = -1580048,
|
||||
YELL_BERSERK = -1580049,
|
||||
|
||||
// Lady Sacrolash
|
||||
#define LADY_SACROLASH 25165
|
||||
//Sacrolash
|
||||
YELL_SHADOW_NOVA = -1580050,
|
||||
YELL_SISTER_ALYTHESS_DEAD = -1580051,
|
||||
YELL_SAC_KILL_1 = -1580052,
|
||||
YELL_SAC_KILL_2 = -1580053,
|
||||
SAY_SAC_DEAD = -1580054,
|
||||
YELL_ENRAGE = -1580055,
|
||||
|
||||
#define SPELL_DARK_TOUCHED 45347
|
||||
#define SPELL_SHADOW_BLADES 45248//10 secs
|
||||
#define SPELL_DARK_STRIKE 45271
|
||||
#define SPELL_SHADOW_NOVA 45329//30-35 secs
|
||||
#define SPELL_CONFOUNDING_BLOW 45256//25 secs
|
||||
//Intro
|
||||
YELL_INTRO_SAC_1 = -1580056,
|
||||
YELL_INTRO_ALY_2 = -1580057,
|
||||
YELL_INTRO_SAC_3 = -1580058,
|
||||
YELL_INTRO_ALY_4 = -1580059,
|
||||
YELL_INTRO_SAC_5 = -1580060,
|
||||
YELL_INTRO_ALY_6 = -1580061,
|
||||
YELL_INTRO_SAC_7 = -1580062,
|
||||
YELL_INTRO_ALY_8 = -1580063,
|
||||
|
||||
#define MOB_SHADOW_IMAGE 25214
|
||||
#define SPELL_SHADOW_FURY 45270
|
||||
#define SPELL_IMAGE_VISUAL 45263
|
||||
//Emote
|
||||
EMOTE_SHADOW_NOVA = -1580064,
|
||||
EMOTE_CONFLAGRATION = -1580065
|
||||
};
|
||||
|
||||
#define SOUND_INTRO 12484
|
||||
#define YELL_SHADOW_NOVA "Shadow to the aid of fire!" //only if Alythess is not dead
|
||||
#define SOUND_SHADOW_NOVA 12485
|
||||
#define YELL_SISTER_ALYTHESS_DEAD "Alythess! Your fire burns within me!"
|
||||
#define SOUND_SISTER_ALYTHESS_DEAD 12488
|
||||
#define YELL_SAC_KILL_1 "Shadow engulf."
|
||||
#define SOUND_SAC_KILL_1 12486
|
||||
#define YELL_SAC_KILL_2 "Ee-nok Kryul!"
|
||||
#define SOUND_SAC_KILL_2 12487
|
||||
#define SAY_SAC_DEAD "I... fade."
|
||||
#define YELL_ENRAGE "Time is a luxury you no longer possess!"
|
||||
enum Spells
|
||||
{
|
||||
//Lady Sacrolash spells
|
||||
SPELL_DARK_TOUCHED = 45347,
|
||||
SPELL_SHADOW_BLADES = 45248, //10 secs
|
||||
SPELL_DARK_STRIKE = 45271,
|
||||
SPELL_SHADOW_NOVA = 45329, //30-35 secs
|
||||
SPELL_CONFOUNDING_BLOW = 45256, //25 secs
|
||||
|
||||
//enrage 6 minutes
|
||||
#define SPELL_ENRAGE 46587
|
||||
//empower after sister is death
|
||||
#define SPELL_EMPOWER 45366
|
||||
//Shadow Image spells
|
||||
SPELL_SHADOW_FURY = 45270,
|
||||
SPELL_IMAGE_VISUAL = 45263,
|
||||
|
||||
//debuff prevents touched spell for 3 secounds
|
||||
#define SPELL_DARK_FLAME 45345
|
||||
//Misc spells
|
||||
SPELL_ENRAGE = 46587,
|
||||
SPELL_EMPOWER = 45366,
|
||||
SPELL_DARK_FLAME = 45345,
|
||||
|
||||
//Grand Warlock Alythess
|
||||
// Don't move only spamm spells ...
|
||||
#define GRAND_WARLOCK_ALYTHESS 25166
|
||||
|
||||
#define SPELL_PYROGENICS 45230//15secs
|
||||
#define SPELL_FLAME_TOUCHED 45348
|
||||
#define SPELL_CONFLAGRATION 45342//30-35 secs
|
||||
#define SPELL_BLAZE 45235//on main target every 3 secs
|
||||
#define SPELL_FLAME_SEAR 46771
|
||||
#define SPELL_BLAZE_SUMMON 45236 //187366 GO
|
||||
#define SPELL_BLAZE_BURN 45246
|
||||
|
||||
#define YELL_CANFLAGRATION "Fire to the aid of shadow!" //only if Sacrolash is not dead
|
||||
#define SOUND_CANFLAGRATION 12489
|
||||
#define YELL_SISTER_SACROLASH_DEAD "Sacrolash!"
|
||||
#define SOUND_SISTER_SACROLASH_DEAD 12492
|
||||
#define YELL_ALY_KILL_1 "Fire consume."
|
||||
#define SOUND_ALY_KILL_1 12490
|
||||
#define YELL_ALY_KILL_2 "Ed-ir Halach!"
|
||||
#define SOUND_ALY_KILL_2 12491
|
||||
#define YELL_ALY_DEAD "De-ek Anur!"
|
||||
#define SOUND_ALY_DEAD 12494
|
||||
#define YELL_BERSERK "Your luck has run its curse!"
|
||||
#define SOUND_BERSERK 12493
|
||||
//Grand Warlock Alythess spells
|
||||
SPELL_PYROGENICS = 45230, //15secs
|
||||
SPELL_FLAME_TOUCHED = 45348,
|
||||
SPELL_CONFLAGRATION = 45342, //30-35 secs
|
||||
SPELL_BLAZE = 45235, //on main target every 3 secs
|
||||
SPELL_FLAME_SEAR = 46771,
|
||||
SPELL_BLAZE_SUMMON = 45236, //187366 GO
|
||||
SPELL_BLAZE_BURN = 45246
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
{
|
||||
GRAND_WARLOCK_ALYTHESS = 25166,
|
||||
MOB_SHADOW_IMAGE = 25214,
|
||||
LADY_SACROLASH = 25165
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
{
|
||||
boss_sacrolashAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
boss_sacrolashAI(Creature *c) : ScriptedAI(c){
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||
}
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
bool InCombat;
|
||||
bool sisterdeath;
|
||||
bool SisterDeath;
|
||||
bool Enraged;
|
||||
|
||||
uint32 shadowblades_timer;
|
||||
uint32 shadownova_timer;
|
||||
uint32 confoundingblow_timer;
|
||||
uint32 shadowimage_timer;
|
||||
|
||||
uint32 conflagration_timer;
|
||||
|
||||
|
||||
uint32 enrage_timer;
|
||||
uint32 ShadowbladesTimer;
|
||||
uint32 ShadownovaTimer;
|
||||
uint32 ConfoundingblowTimer;
|
||||
uint32 ShadowimageTimer;
|
||||
uint32 ConflagrationTimer;
|
||||
uint32 EnrageTimer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
InCombat = false;
|
||||
Enraged = false;
|
||||
|
||||
if(pInstance)
|
||||
{
|
||||
Unit* Temp = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_ALYTHESS));
|
||||
@@ -135,26 +134,33 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
|
||||
if(!InCombat)
|
||||
{
|
||||
shadowblades_timer = 10000;
|
||||
shadownova_timer = 30000;
|
||||
confoundingblow_timer = 25000;
|
||||
shadowimage_timer = 20000;
|
||||
conflagration_timer = 30000;
|
||||
sisterdeath = false;
|
||||
ShadowbladesTimer = 10000;
|
||||
ShadownovaTimer = 30000;
|
||||
ConfoundingblowTimer = 25000;
|
||||
ShadowimageTimer = 20000;
|
||||
ConflagrationTimer = 30000;
|
||||
EnrageTimer = 360000;
|
||||
|
||||
enrage_timer = 360000;
|
||||
SisterDeath = false;
|
||||
}
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_EREDAR_TWINS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void Aggro(Unit *who)
|
||||
{
|
||||
DoZoneInCombat();
|
||||
|
||||
if(pInstance)
|
||||
{
|
||||
Unit* Temp = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_ALYTHESS));
|
||||
if (Temp && Temp->isAlive() && !(Temp->getVictim()))
|
||||
((Creature*)Temp)->AI()->AttackStart(who);
|
||||
}
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_EREDAR_TWINS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
@@ -163,14 +169,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
{
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0:
|
||||
DoPlaySoundToSet(m_creature,SOUND_SAC_KILL_1);
|
||||
DoYell(YELL_SAC_KILL_1 ,LANG_UNIVERSAL,NULL);
|
||||
break;
|
||||
case 1:
|
||||
DoPlaySoundToSet(m_creature,SOUND_SAC_KILL_2);
|
||||
DoYell(YELL_SAC_KILL_2 ,LANG_UNIVERSAL,NULL);
|
||||
break;
|
||||
case 0: DoScriptText(YELL_SAC_KILL_1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_SAC_KILL_2, m_creature); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,14 +178,15 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
// only if ALY death
|
||||
if (sisterdeath)
|
||||
if (SisterDeath)
|
||||
{
|
||||
DoYell(SAY_SAC_DEAD ,LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(SAY_SAC_DEAD, m_creature);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_EREDAR_TWINS_EVENT, DONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target,const SpellEntry* spell)
|
||||
@@ -209,29 +210,23 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
switch(TouchedType)
|
||||
{
|
||||
case SPELL_FLAME_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME, 0))
|
||||
{
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED, 0))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_DARK_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
}else
|
||||
{
|
||||
target->CastSpell(target,SPELL_FLAME_TOUCHED,true);
|
||||
}
|
||||
target->CastSpell(target, SPELL_DARK_FLAME, true);
|
||||
}else target->CastSpell(target, SPELL_FLAME_TOUCHED, true);
|
||||
}
|
||||
break;
|
||||
case SPELL_DARK_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME, 0))
|
||||
{
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED, 0))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
}else
|
||||
{
|
||||
target->CastSpell(target,SPELL_DARK_TOUCHED,true);
|
||||
}
|
||||
target->CastSpell(target, SPELL_DARK_FLAME, true);
|
||||
}else target->CastSpell(target, SPELL_DARK_TOUCHED, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -239,7 +234,7 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if(!sisterdeath)
|
||||
if(!SisterDeath)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -247,12 +242,10 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
Temp = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_ALYTHESS));
|
||||
if (Temp && Temp->isDead())
|
||||
{
|
||||
DoYell(YELL_SISTER_ALYTHESS_DEAD ,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,SOUND_SISTER_ALYTHESS_DEAD);
|
||||
sisterdeath = true;
|
||||
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
DoScriptText(YELL_SISTER_ALYTHESS_DEAD, m_creature);
|
||||
DoCast(m_creature,SPELL_EMPOWER);
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
SisterDeath = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,54 +253,52 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if(sisterdeath)
|
||||
if(SisterDeath)
|
||||
{
|
||||
if (conflagration_timer < diff)
|
||||
if (ConflagrationTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(target,SPELL_CONFLAGRATION);
|
||||
conflagration_timer = 30000+(rand()%5000);
|
||||
DoCast(target, SPELL_CONFLAGRATION);
|
||||
ConflagrationTimer = 30000+(rand()%5000);
|
||||
}
|
||||
}else conflagration_timer -= diff;
|
||||
}else ConflagrationTimer -= diff;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(shadownova_timer < diff)
|
||||
if(ShadownovaTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(target,SPELL_SHADOW_NOVA);
|
||||
DoCast(target, SPELL_SHADOW_NOVA);
|
||||
|
||||
if(!sisterdeath)
|
||||
if(!SisterDeath)
|
||||
{
|
||||
m_creature->MonsterTextEmote("directs Shadow Nova at $N",target->GetGUID(),true);
|
||||
DoPlaySoundToSet(m_creature,SOUND_SHADOW_NOVA);
|
||||
DoYell(YELL_SHADOW_NOVA,LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(EMOTE_SHADOW_NOVA, m_creature, target);
|
||||
DoScriptText(YELL_SHADOW_NOVA, m_creature);
|
||||
}
|
||||
|
||||
shadownova_timer= 30000+(rand()%5000);
|
||||
ShadownovaTimer = 30000+(rand()%5000);
|
||||
}
|
||||
}else shadownova_timer -=diff;
|
||||
}else ShadownovaTimer -=diff;
|
||||
}
|
||||
|
||||
if(confoundingblow_timer < diff)
|
||||
if(ConfoundingblowTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(target,SPELL_CONFOUNDING_BLOW);
|
||||
confoundingblow_timer = 20000 + (rand()%5000);
|
||||
DoCast(target, SPELL_CONFOUNDING_BLOW);
|
||||
ConfoundingblowTimer = 20000 + (rand()%5000);
|
||||
}
|
||||
}else confoundingblow_timer -=diff;
|
||||
}else ConfoundingblowTimer -=diff;
|
||||
|
||||
if(shadowimage_timer < diff)
|
||||
if(ShadowimageTimer < diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
Creature* temp = NULL;
|
||||
@@ -317,26 +308,25 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
temp = DoSpawnCreature(MOB_SHADOW_IMAGE,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN,10000);
|
||||
temp->AI()->AttackStart(target);
|
||||
}
|
||||
shadowimage_timer = 20000;
|
||||
}else shadowimage_timer -=diff;
|
||||
ShadowimageTimer = 20000;
|
||||
}else ShadowimageTimer -=diff;
|
||||
|
||||
if(shadowblades_timer < diff)
|
||||
if(ShadowbladesTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(m_creature,SPELL_SHADOW_BLADES);
|
||||
shadowblades_timer = 10000;
|
||||
|
||||
DoCast(m_creature, SPELL_SHADOW_BLADES);
|
||||
ShadowbladesTimer = 10000;
|
||||
}
|
||||
}else shadowblades_timer -=diff;
|
||||
}else ShadowbladesTimer -=diff;
|
||||
|
||||
if (enrage_timer < diff)
|
||||
if (EnrageTimer < diff && !Enraged)
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
DoYell(YELL_ENRAGE ,LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(YELL_ENRAGE, m_creature);
|
||||
DoCast(m_creature,SPELL_ENRAGE);
|
||||
enrage_timer = 300000;
|
||||
}else enrage_timer -= diff;
|
||||
Enraged = true;
|
||||
}else EnrageTimer -= diff;
|
||||
|
||||
if( m_creature->isAttackReady() && !m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
@@ -358,29 +348,32 @@ CreatureAI* GetAI_boss_sacrolash(Creature *_Creature)
|
||||
|
||||
struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
{
|
||||
boss_alythessAI(Creature *c) : Scripted_NoMovementAI(c)
|
||||
{
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData()); IntroStepCounter = 10;
|
||||
boss_alythessAI(Creature *c) : Scripted_NoMovementAI(c){
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||
IntroStepCounter = 10;
|
||||
}
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
bool InCombat;
|
||||
bool sisterdeath;
|
||||
bool SisterDeath;
|
||||
bool Enraged;
|
||||
|
||||
uint32 IntroStepCounter;
|
||||
uint32 IntroYell_Timer;
|
||||
uint32 IntroYellTimer;
|
||||
|
||||
uint32 conflagration_timer;
|
||||
uint32 blaze_timer;
|
||||
uint32 pyrogenics_timer;
|
||||
|
||||
uint32 shadownova_timer;
|
||||
uint32 flamesear_timer;
|
||||
|
||||
uint32 enrage_timer;
|
||||
uint32 ConflagrationTimer;
|
||||
uint32 BlazeTimer;
|
||||
uint32 PyrogenicsTimer;
|
||||
uint32 ShadownovaTimer;
|
||||
uint32 FlamesearTimer;
|
||||
uint32 EnrageTimer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
InCombat = false;
|
||||
Enraged = false;
|
||||
|
||||
if(pInstance)
|
||||
{
|
||||
Unit* Temp = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH));
|
||||
@@ -400,25 +393,34 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
|
||||
if(!InCombat)
|
||||
{
|
||||
conflagration_timer = 45000;
|
||||
blaze_timer = 100;
|
||||
pyrogenics_timer = 15000;
|
||||
shadownova_timer = 40000;
|
||||
sisterdeath = false;
|
||||
enrage_timer = 360000;
|
||||
flamesear_timer = 15000;
|
||||
IntroYell_Timer = 10000;
|
||||
ConflagrationTimer = 45000;
|
||||
BlazeTimer = 100;
|
||||
PyrogenicsTimer = 15000;
|
||||
ShadownovaTimer = 40000;
|
||||
EnrageTimer = 360000;
|
||||
FlamesearTimer = 15000;
|
||||
IntroYellTimer = 10000;
|
||||
|
||||
SisterDeath = false;
|
||||
}
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_EREDAR_TWINS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void Aggro(Unit *who)
|
||||
{
|
||||
DoZoneInCombat();
|
||||
|
||||
if(pInstance)
|
||||
{
|
||||
Unit* Temp = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH));
|
||||
if (Temp && Temp->isAlive() && !(Temp->getVictim()))
|
||||
((Creature*)Temp)->AI()->AttackStart(who);
|
||||
}
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_EREDAR_TWINS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void AttackStart(Unit *who)
|
||||
@@ -460,29 +462,23 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
{
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0:
|
||||
DoPlaySoundToSet(m_creature,SOUND_ALY_KILL_1);
|
||||
DoYell(YELL_ALY_KILL_1 ,LANG_UNIVERSAL,NULL);
|
||||
break;
|
||||
case 1:
|
||||
DoPlaySoundToSet(m_creature,SOUND_ALY_KILL_2);
|
||||
DoYell(YELL_ALY_KILL_2 ,LANG_UNIVERSAL,NULL);
|
||||
break;
|
||||
case 0: DoScriptText(YELL_ALY_KILL_1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_ALY_KILL_2, m_creature); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
if (sisterdeath)
|
||||
if (SisterDeath)
|
||||
{
|
||||
DoYell(YELL_ALY_DEAD ,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,SOUND_ALY_DEAD);
|
||||
DoScriptText(YELL_ALY_DEAD, m_creature);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_EREDAR_TWINS_EVENT, NOT_STARTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target,const SpellEntry* spell)
|
||||
@@ -491,7 +487,7 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
{
|
||||
|
||||
case SPELL_BLAZE:
|
||||
target->CastSpell(target,SPELL_BLAZE_SUMMON,true);
|
||||
target->CastSpell(target, SPELL_BLAZE_SUMMON, true);
|
||||
case SPELL_CONFLAGRATION:
|
||||
case SPELL_FLAME_SEAR:
|
||||
HandleTouchedSpells(target, SPELL_FLAME_TOUCHED);
|
||||
@@ -507,29 +503,26 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
switch(TouchedType)
|
||||
{
|
||||
case SPELL_FLAME_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME, 0))
|
||||
{
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED, 0))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_DARK_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
target->CastSpell(target, SPELL_DARK_FLAME, true);
|
||||
}else
|
||||
{
|
||||
target->CastSpell(target,SPELL_FLAME_TOUCHED,true);
|
||||
target->CastSpell(target, SPELL_FLAME_TOUCHED, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SPELL_DARK_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME, 0))
|
||||
{
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED, 0))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
}else
|
||||
{
|
||||
target->CastSpell(target,SPELL_DARK_TOUCHED,true);
|
||||
}
|
||||
target->CastSpell(target, SPELL_DARK_FLAME, true);
|
||||
}else target->CastSpell(target, SPELL_DARK_TOUCHED, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -537,38 +530,30 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
|
||||
uint32 IntroStep(uint32 step)
|
||||
{
|
||||
Creature* Sacrolash = Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_SACROLASH));
|
||||
Creature* Sacrolash = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH));
|
||||
switch (step)
|
||||
{
|
||||
case 0: DoPlaySoundToSet(m_creature,SOUND_INTRO); return 0;
|
||||
case 1:
|
||||
case 0: return 0;
|
||||
case 1:
|
||||
if(Sacrolash)
|
||||
Sacrolash->Yell(YELL_INTRO_SAC_1, LANG_UNIVERSAL,NULL);
|
||||
return 1000;
|
||||
case 2:
|
||||
m_creature->Yell(YELL_INTRO_ALY_2, LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(YELL_INTRO_SAC_1, Sacrolash);
|
||||
return 1000;
|
||||
case 2: DoScriptText(YELL_INTRO_ALY_2, m_creature); return 1000;
|
||||
case 3:
|
||||
if(Sacrolash)
|
||||
Sacrolash->Yell(YELL_INTRO_SAC_3, LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(YELL_INTRO_SAC_3, Sacrolash);
|
||||
return 2000;
|
||||
case 4:
|
||||
m_creature->Yell(YELL_INTRO_ALY_4, LANG_UNIVERSAL,NULL);
|
||||
return 1000;
|
||||
case 4: DoScriptText(YELL_INTRO_ALY_4, m_creature); return 1000;
|
||||
case 5:
|
||||
if(Sacrolash)
|
||||
Sacrolash->Yell(YELL_INTRO_SAC_5, LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(YELL_INTRO_SAC_5, Sacrolash);
|
||||
return 2000;
|
||||
case 6:
|
||||
m_creature->Yell(YELL_INTRO_ALY_6, LANG_UNIVERSAL,NULL);
|
||||
return 1000;
|
||||
case 7:
|
||||
case 6: DoScriptText(YELL_INTRO_ALY_6, m_creature); return 1000;
|
||||
case 7:
|
||||
if(Sacrolash)
|
||||
Sacrolash->Yell(YELL_INTRO_SAC_7, LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(YELL_INTRO_SAC_7, Sacrolash);
|
||||
return 3000;
|
||||
case 8:
|
||||
m_creature->Yell(YELL_INTRO_ALY_8, LANG_UNIVERSAL,NULL);
|
||||
return 900000;
|
||||
case 8: DoScriptText(YELL_INTRO_ALY_8, m_creature); return 900000;
|
||||
}
|
||||
return 10000;
|
||||
}
|
||||
@@ -577,13 +562,13 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
{
|
||||
if(IntroStepCounter < 9)
|
||||
{
|
||||
if(IntroYell_Timer < diff)
|
||||
if(IntroYellTimer < diff)
|
||||
{
|
||||
IntroYell_Timer = IntroStep(IntroStepCounter++);
|
||||
}else IntroYell_Timer -= diff;
|
||||
IntroYellTimer = IntroStep(++IntroStepCounter);
|
||||
}else IntroYellTimer -= diff;
|
||||
}
|
||||
|
||||
if(!sisterdeath)
|
||||
if(!SisterDeath)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -591,12 +576,10 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
Temp = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH));
|
||||
if (Temp && Temp->isDead())
|
||||
{
|
||||
DoYell(YELL_SISTER_SACROLASH_DEAD ,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,SOUND_SISTER_SACROLASH_DEAD);
|
||||
sisterdeath = true;
|
||||
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
DoCast(m_creature,SPELL_EMPOWER);
|
||||
DoScriptText(YELL_SISTER_SACROLASH_DEAD, m_creature);
|
||||
DoCast(m_creature, SPELL_EMPOWER);
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
SisterDeath = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -604,78 +587,76 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if(sisterdeath)
|
||||
if(SisterDeath)
|
||||
{
|
||||
if(shadownova_timer < diff)
|
||||
if(ShadownovaTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(target,SPELL_SHADOW_NOVA);
|
||||
shadownova_timer= 30000+(rand()%5000);
|
||||
DoCast(target, SPELL_SHADOW_NOVA);
|
||||
ShadownovaTimer= 30000+(rand()%5000);
|
||||
}
|
||||
}else shadownova_timer -=diff;
|
||||
}else ShadownovaTimer -=diff;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (conflagration_timer < diff)
|
||||
if(ConflagrationTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(target,SPELL_CONFLAGRATION);
|
||||
conflagration_timer = 30000+(rand()%5000);
|
||||
DoCast(target, SPELL_CONFLAGRATION);
|
||||
ConflagrationTimer = 30000+(rand()%5000);
|
||||
|
||||
if(!sisterdeath)
|
||||
if(!SisterDeath)
|
||||
{
|
||||
m_creature->MonsterTextEmote("directs Conflagration at $N",target->GetGUID(),true);
|
||||
DoPlaySoundToSet(m_creature,SOUND_CANFLAGRATION);
|
||||
DoYell(YELL_CANFLAGRATION,LANG_UNIVERSAL,NULL);
|
||||
DoScriptText(EMOTE_CONFLAGRATION, m_creature, target);
|
||||
DoScriptText(YELL_CANFLAGRATION, m_creature);
|
||||
}
|
||||
|
||||
blaze_timer = 4000;
|
||||
BlazeTimer = 4000;
|
||||
}
|
||||
}else conflagration_timer -= diff;
|
||||
}else ConflagrationTimer -= diff;
|
||||
}
|
||||
|
||||
if (flamesear_timer < diff)
|
||||
if(FlamesearTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
if(!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(m_creature,SPELL_FLAME_SEAR);
|
||||
flamesear_timer = 15000;
|
||||
DoCast(m_creature, SPELL_FLAME_SEAR);
|
||||
FlamesearTimer = 15000;
|
||||
}
|
||||
}else flamesear_timer -=diff;
|
||||
}else FlamesearTimer -=diff;
|
||||
|
||||
if (pyrogenics_timer < diff)
|
||||
if (PyrogenicsTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
if(!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(m_creature,SPELL_PYROGENICS,true);
|
||||
pyrogenics_timer = 15000;
|
||||
DoCast(m_creature, SPELL_PYROGENICS,true);
|
||||
PyrogenicsTimer = 15000;
|
||||
}
|
||||
}else pyrogenics_timer -= diff;
|
||||
}else PyrogenicsTimer -= diff;
|
||||
|
||||
if (blaze_timer < diff)
|
||||
if (BlazeTimer < diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
if(!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_BLAZE);
|
||||
blaze_timer = 3800;
|
||||
DoCast(m_creature->getVictim(), SPELL_BLAZE);
|
||||
BlazeTimer = 3800;
|
||||
}
|
||||
}else blaze_timer -= diff;
|
||||
}else BlazeTimer -= diff;
|
||||
|
||||
if (enrage_timer < diff)
|
||||
if (EnrageTimer < diff && !Enraged)
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
DoPlaySoundToSet(m_creature,SOUND_BERSERK);
|
||||
DoYell(YELL_BERSERK ,LANG_UNIVERSAL,NULL);
|
||||
DoCast(m_creature,SPELL_ENRAGE);
|
||||
enrage_timer = 300000;
|
||||
}else enrage_timer -= diff;
|
||||
DoScriptText(YELL_BERSERK, m_creature);
|
||||
DoCast(m_creature, SPELL_ENRAGE);
|
||||
Enraged = true;
|
||||
}else EnrageTimer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -688,16 +669,15 @@ struct TRINITY_DLL_DECL mob_shadow_imageAI : public ScriptedAI
|
||||
{
|
||||
mob_shadow_imageAI(Creature *c) : ScriptedAI(c) {}
|
||||
|
||||
uint32 shadowfury_timer;
|
||||
uint32 kill_timer;
|
||||
uint32 darkstrike_timer;
|
||||
uint32 ShadowfuryTimer;
|
||||
uint32 KillTimer;
|
||||
uint32 DarkstrikeTimer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
shadowfury_timer = 5000 + (rand()%15000);
|
||||
darkstrike_timer = 3000;
|
||||
kill_timer = 15000;
|
||||
|
||||
ShadowfuryTimer = 5000 + (rand()%15000);
|
||||
DarkstrikeTimer = 3000;
|
||||
KillTimer = 15000;
|
||||
}
|
||||
|
||||
void Aggro(Unit *who){}
|
||||
@@ -709,16 +689,13 @@ struct TRINITY_DLL_DECL mob_shadow_imageAI : public ScriptedAI
|
||||
|
||||
case SPELL_SHADOW_FURY:
|
||||
case SPELL_DARK_STRIKE:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME, 0))
|
||||
{
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED, 0))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
}else
|
||||
{
|
||||
target->CastSpell(target,SPELL_DARK_TOUCHED,true);
|
||||
}
|
||||
target->CastSpell(target, SPELL_DARK_FLAME, true);
|
||||
}else target->CastSpell(target,SPELL_DARK_TOUCHED,true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -726,37 +703,35 @@ struct TRINITY_DLL_DECL mob_shadow_imageAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if(!m_creature->HasAura(SPELL_IMAGE_VISUAL,0))
|
||||
DoCast(m_creature,SPELL_IMAGE_VISUAL);
|
||||
if(!m_creature->HasAura(SPELL_IMAGE_VISUAL, 0))
|
||||
DoCast(m_creature, SPELL_IMAGE_VISUAL);
|
||||
|
||||
if(kill_timer < diff)
|
||||
if(KillTimer < diff)
|
||||
{
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
kill_timer = 9999999;
|
||||
}else kill_timer -=diff;
|
||||
KillTimer = 9999999;
|
||||
}else KillTimer -=diff;
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if(shadowfury_timer < diff)
|
||||
if(ShadowfuryTimer < diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_SHADOW_FURY);
|
||||
shadowfury_timer = 10000;
|
||||
}else shadowfury_timer -=diff;
|
||||
DoCast(m_creature, SPELL_SHADOW_FURY);
|
||||
ShadowfuryTimer = 10000;
|
||||
}else ShadowfuryTimer -=diff;
|
||||
|
||||
if(darkstrike_timer < diff)
|
||||
if(DarkstrikeTimer < diff)
|
||||
{
|
||||
if(!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
//If we are within range melee the target
|
||||
if( m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_DARK_STRIKE);
|
||||
}
|
||||
if( m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
DoCast(m_creature->getVictim(), SPELL_DARK_STRIKE);
|
||||
}
|
||||
darkstrike_timer = 3000;
|
||||
DarkstrikeTimer = 3000;
|
||||
}
|
||||
else darkstrike_timer -= diff;
|
||||
else DarkstrikeTimer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -768,6 +743,7 @@ CreatureAI* GetAI_mob_shadow_image(Creature *_Creature)
|
||||
void AddSC_boss_eredar_twins()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="boss_sacrolash";
|
||||
newscript->GetAI = &GetAI_boss_sacrolash;
|
||||
@@ -783,4 +759,3 @@ void AddSC_boss_eredar_twins()
|
||||
newscript->GetAI = &GetAI_mob_shadow_image;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright ?2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
/* Copyright (C) 2009 Trinity <http://www.trinitycore.org/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
@@ -22,76 +22,77 @@ EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
#include "def_sunwell_plateau.h"
|
||||
#include "Player.h"
|
||||
|
||||
// AURA
|
||||
#define AURA_SUNWELL_RADIANCE 45769
|
||||
#define AURA_NOXIOUS_FUMES 47002
|
||||
// LAND PHASE SPELL
|
||||
#define SPELL_CLEAVE 19983
|
||||
#define SPELL_CORROSION 45866
|
||||
#define SPELL_GAS_NOVA 45855
|
||||
#define SPELL_ENCAPSULATE_CHANNEL 45661
|
||||
#define SPELL_ENCAPSULATE_EFFECT 45665
|
||||
#define SPELL_ENCAPSULATE_AOE 45662
|
||||
// FLIGHT PHASE SPELL
|
||||
#define SPELL_VAPOR_SELECT 45391 // fel to player, force cast 45392, 50000y selete target
|
||||
#define SPELL_VAPOR_SUMMON 45392 // player summon vapor, radius around caster, 5y,
|
||||
#define SPELL_VAPOR_FORCE 45388 // vapor to fel, force cast 45389
|
||||
#define SPELL_VAPOR_CHANNEL 45389 // fel to vapor, green beam channel
|
||||
#define SPELL_VAPOR_TRIGGER 45411 // linked to 45389, vapor to self, trigger 45410 and 46931
|
||||
#define SPELL_VAPOR_DAMAGE 46931 // vapor damage, 4000
|
||||
#define SPELL_TRAIL_SUMMON 45410 // vapor summon trail
|
||||
#define SPELL_TRAIL_TRIGGER 45399 // trail to self, trigger 45402
|
||||
#define SPELL_TRAIL_DAMAGE 45402 // trail damage, 2000 + 2000 dot
|
||||
#define SPELL_DEAD_SUMMON 45400 // summon blazing dead, 5min
|
||||
#define SPELL_DEAD_PASSIVE 45415
|
||||
#define SPELL_FOG_BREATH 45495 // fel to self, speed burst
|
||||
#define SPELL_FOG_TRIGGER 45582 // fog to self, trigger 45782
|
||||
#define SPELL_FOG_FORCE 45782 // fog to player, force cast 45714
|
||||
#define SPELL_FOG_INFORM 45714 // player let fel cast 45717, script effect
|
||||
#define SPELL_FOG_CHARM 45717 // fel to player
|
||||
#define SPELL_FOG_CHARM2 45726 // link to 45717
|
||||
enum Quotes
|
||||
{
|
||||
YELL_BIRTH = -1580036,
|
||||
YELL_KILL1 = -1580037,
|
||||
YELL_KILL2 = -1580038,
|
||||
YELL_BREATH = -1580039,
|
||||
YELL_TAKEOFF = -1580040,
|
||||
YELL_BERSERK = -1580041,
|
||||
YELL_DEATH = -1580042,
|
||||
YELL_KALECGOS = -1580043 //after felmyst's death spawned and say this
|
||||
};
|
||||
|
||||
#define SPELL_TRANSFORM_TRIGGER 44885 // madrigosa to self, trigger 46350
|
||||
#define SPELL_TRANSFORM_VISUAL 46350 //46411stun?
|
||||
#define SPELL_TRANSFORM_FELMYST 45068 // become fel
|
||||
#define SPELL_FELMYST_SUMMON 45069
|
||||
// OTHER
|
||||
#define SPELL_BERSERK 45078
|
||||
#define SPELL_CLOUD_VISUAL 45212
|
||||
#define SPELL_CLOUD_SUMMON 45884
|
||||
enum Spells
|
||||
{
|
||||
//Aura
|
||||
AURA_SUNWELL_RADIANCE = 45769,
|
||||
AURA_NOXIOUS_FUMES = 47002,
|
||||
|
||||
//Creatures
|
||||
#define MOB_FELMYST 25038
|
||||
#define MOB_BRUTALLUS
|
||||
#define MOB_KALECGOS
|
||||
#define MOB_DEAD 25268
|
||||
#define MOB_MADRIGOSA 25160
|
||||
#define MOB_FELMYST_VISUAL 25041
|
||||
#define MOB_FLIGHT_LEFT 25357
|
||||
#define MOB_FLIGHT_RIGHT 25358
|
||||
#define MOB_DEATH_CLOUD 25703
|
||||
#define MOB_VAPOR 25265
|
||||
#define MOB_VAPOR_TRAIL 25267
|
||||
//Land phase
|
||||
SPELL_CLEAVE = 19983,
|
||||
SPELL_CORROSION = 45866,
|
||||
SPELL_GAS_NOVA = 45855,
|
||||
SPELL_ENCAPSULATE_CHANNEL = 45661,
|
||||
SPELL_ENCAPSULATE_EFFECT = 45665,
|
||||
SPELL_ENCAPSULATE_AOE = 45662,
|
||||
|
||||
//Yells and Sounds
|
||||
#define YELL_BIRTH "Glory to Kil'jaeden! Death to all who oppose!"
|
||||
#define SOUND_BIRTH 12477
|
||||
#define YELL_KILL1 "I kill for the master!"
|
||||
#define SOUND_KILL1 12480
|
||||
#define YELL_KILL2 "The end has come!"
|
||||
#define SOUND_KILL2 12481
|
||||
#define YELL_BREATH "Choke on your final breath!"
|
||||
#define SOUND_BREATH 12478
|
||||
#define YELL_TAKEOFF "I am stronger than ever before!"
|
||||
#define SOUND_TAKEOFF 12479
|
||||
#define YELL_BERSERK "No more hesitation! Your fates are written!"
|
||||
#define SOUND_BERSERK 12482
|
||||
#define YELL_DEATH "Kil'jaeden... will... prevail..."
|
||||
#define SOUND_DEATH 12483
|
||||
//Flight phase
|
||||
SPELL_VAPOR_SELECT = 45391, // fel to player, force cast 45392, 50000y selete target
|
||||
SPELL_VAPOR_SUMMON = 45392, // player summon vapor, radius around caster, 5y,
|
||||
SPELL_VAPOR_FORCE = 45388, // vapor to fel, force cast 45389
|
||||
SPELL_VAPOR_CHANNEL = 45389, // fel to vapor, green beam channel
|
||||
SPELL_VAPOR_TRIGGER = 45411, // linked to 45389, vapor to self, trigger 45410 and 46931
|
||||
SPELL_VAPOR_DAMAGE = 46931, // vapor damage, 4000
|
||||
SPELL_TRAIL_SUMMON = 45410, // vapor summon trail
|
||||
SPELL_TRAIL_TRIGGER = 45399, // trail to self, trigger 45402
|
||||
SPELL_TRAIL_DAMAGE = 45402, // trail damage, 2000 + 2000 dot
|
||||
SPELL_DEAD_SUMMON = 45400, // summon blazing dead, 5min
|
||||
SPELL_DEAD_PASSIVE = 45415,
|
||||
SPELL_FOG_BREATH = 45495, // fel to self, speed burst
|
||||
SPELL_FOG_TRIGGER = 45582, // fog to self, trigger 45782
|
||||
SPELL_FOG_FORCE = 45782, // fog to player, force cast 45714
|
||||
SPELL_FOG_INFORM = 45714, // player let fel cast 45717, script effect
|
||||
SPELL_FOG_CHARM = 45717, // fel to player
|
||||
SPELL_FOG_CHARM2 = 45726, // link to 45717
|
||||
|
||||
#define YELL_KALECGOS "Madrigosa deserved a far better fate. You did what had to be done, but this battle is far from over."
|
||||
SPELL_TRANSFORM_TRIGGER = 44885, // madrigosa to self, trigger 46350
|
||||
SPELL_TRANSFORM_VISUAL = 46350, //46411stun?
|
||||
SPELL_TRANSFORM_FELMYST = 45068, // become fel
|
||||
SPELL_FELMYST_SUMMON = 45069,
|
||||
|
||||
//Other
|
||||
SPELL_BERSERK = 45078,
|
||||
SPELL_CLOUD_VISUAL = 45212,
|
||||
SPELL_CLOUD_SUMMON = 45884
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
{
|
||||
MOB_FELMYST = 25038,
|
||||
//MOB_BRUTALLUS =
|
||||
//MOB_KALECGOS =
|
||||
MOB_DEAD = 25268,
|
||||
MOB_MADRIGOSA = 25160,
|
||||
MOB_FELMYST_VISUAL = 25041,
|
||||
MOB_FLIGHT_LEFT = 25357,
|
||||
MOB_FLIGHT_RIGHT = 25358,
|
||||
MOB_DEATH_CLOUD = 25703,
|
||||
MOB_VAPOR = 25265,
|
||||
MOB_VAPOR_TRAIL = 25267
|
||||
};
|
||||
|
||||
enum PhaseFelmyst
|
||||
{
|
||||
@@ -125,10 +126,11 @@ static EventFelmyst MaxTimer[]=
|
||||
|
||||
struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
{
|
||||
boss_felmystAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
boss_felmystAI(Creature *c) : ScriptedAI(c){
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||
|
||||
// wait for core patch be accepted
|
||||
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_ENCAPSULATE_EFFECT);
|
||||
/*SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_ENCAPSULATE_EFFECT);
|
||||
if(TempSpell->SpellIconID == 2294)
|
||||
TempSpell->SpellIconID = 2295;
|
||||
TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_VAPOR_TRIGGER);
|
||||
@@ -136,9 +138,10 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
TempSpell->Attributes |= SPELL_ATTR_PASSIVE;
|
||||
TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_FOG_CHARM2);
|
||||
if((TempSpell->Attributes & SPELL_ATTR_PASSIVE) == 0)
|
||||
TempSpell->Attributes |= SPELL_ATTR_PASSIVE;
|
||||
TempSpell->Attributes |= SPELL_ATTR_PASSIVE;*/
|
||||
}
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
PhaseFelmyst Phase;
|
||||
EventFelmyst Event;
|
||||
uint32 Timer[EVENT_FLIGHT + 1];
|
||||
@@ -155,21 +158,27 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
Timer[EVENT_BERSERK] = 600000;
|
||||
FlightCount = 0;
|
||||
|
||||
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
|
||||
m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
|
||||
m_creature->SetFloatValue(UNIT_FIELD_COMBATREACH, 10);
|
||||
|
||||
DespawnSummons(MOB_VAPOR_TRAIL);
|
||||
m_creature->setActive(false);
|
||||
m_creature->setActive(false);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_FELMYST_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void Aggro(Unit *who)
|
||||
{
|
||||
m_creature->setActive(true);
|
||||
m_creature->setActive(true);
|
||||
DoZoneInCombat();
|
||||
m_creature->CastSpell(m_creature, AURA_SUNWELL_RADIANCE, true);
|
||||
m_creature->CastSpell(m_creature, AURA_NOXIOUS_FUMES, true);
|
||||
EnterPhase(PHASE_GROUND);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_FELMYST_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void AttackStart(Unit *who)
|
||||
@@ -188,21 +197,22 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0:
|
||||
DoYell(YELL_KILL1,LANG_UNIVERSAL, NULL);
|
||||
DoPlaySoundToSet(m_creature, SOUND_KILL1);
|
||||
break;
|
||||
case 1:
|
||||
DoYell(YELL_KILL2,LANG_UNIVERSAL, NULL);
|
||||
DoPlaySoundToSet(m_creature, SOUND_KILL2);
|
||||
break;
|
||||
case 0: DoScriptText(YELL_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_KILL2, m_creature); break;
|
||||
}
|
||||
}
|
||||
|
||||
void JustRespawned()
|
||||
{
|
||||
DoScriptText(YELL_BIRTH, m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
DoYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
|
||||
DoPlaySoundToSet(m_creature, SOUND_DEATH);
|
||||
DoScriptText(YELL_DEATH, m_creature);
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_FELMYST_EVENT, DONE);
|
||||
}
|
||||
|
||||
void SpellHit(Unit *caster, const SpellEntry *spell)
|
||||
@@ -279,21 +289,26 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
switch(FlightCount)
|
||||
{
|
||||
case 0:
|
||||
m_creature->AttackStop();
|
||||
//m_creature->AttackStop();
|
||||
error_log("prevent fly phase");
|
||||
m_creature->GetMotionMaster()->Clear(false);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
|
||||
m_creature->StopMoving();
|
||||
DoYell(YELL_TAKEOFF, LANG_UNIVERSAL, NULL);
|
||||
DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
|
||||
DoScriptText(YELL_TAKEOFF, m_creature);
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
|
||||
break;
|
||||
case 1:
|
||||
error_log("Move to Fly point");
|
||||
m_creature->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX()+1, m_creature->GetPositionY(), m_creature->GetPositionZ()+10);
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
|
||||
break;
|
||||
case 2:
|
||||
if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
|
||||
case 2:{
|
||||
error_log("Summon Vapor case 2");
|
||||
Unit* target;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true);
|
||||
if(!target) target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_PLAYER_GUID));
|
||||
if(target)
|
||||
{
|
||||
Creature* Vapor = m_creature->SummonCreature(MOB_VAPOR, target->GetPositionX()-5+rand()%10, target->GetPositionY()-5+rand()%10, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 9000);
|
||||
if(Vapor)
|
||||
@@ -305,11 +320,15 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
}
|
||||
}else EnterEvadeMode();
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
||||
break;
|
||||
case 3:
|
||||
break;}
|
||||
case 3: {
|
||||
DespawnSummons(MOB_VAPOR_TRAIL);
|
||||
error_log("Summon Vapor case3");
|
||||
//m_creature->CastSpell(m_creature, SPELL_VAPOR_SELECT); need core support
|
||||
if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
|
||||
Unit* target;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true);
|
||||
if(!target) target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_PLAYER_GUID));
|
||||
if(target)
|
||||
{
|
||||
//target->CastSpell(target, SPELL_VAPOR_SUMMON, true); need core support
|
||||
Creature* Vapor = m_creature->SummonCreature(MOB_VAPOR, target->GetPositionX()-5+rand()%10, target->GetPositionY()-5+rand()%10, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 9000);
|
||||
@@ -322,13 +341,16 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
}
|
||||
}else EnterEvadeMode();
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
||||
break;
|
||||
break;}
|
||||
case 4:
|
||||
DespawnSummons(MOB_VAPOR_TRAIL);
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 1;
|
||||
break;
|
||||
case 5:
|
||||
if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
|
||||
case 5:{
|
||||
Unit* target;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true);
|
||||
if(!target) target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_PLAYER_GUID));
|
||||
if(target)
|
||||
{
|
||||
BreathX = target->GetPositionX();
|
||||
BreathY = target->GetPositionY();
|
||||
@@ -337,11 +359,11 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
m_creature->GetMotionMaster()->MovePoint(0, x, y, z+10);
|
||||
}else EnterEvadeMode();
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
|
||||
break;
|
||||
break;}
|
||||
case 6:
|
||||
m_creature->SetOrientation(m_creature->GetAngle(BreathX, BreathY));
|
||||
m_creature->StopMoving();
|
||||
DoTextEmote("takes a deep breath.", NULL);
|
||||
//DoTextEmote("takes a deep breath.", NULL);
|
||||
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
||||
break;
|
||||
case 7:
|
||||
@@ -413,10 +435,9 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
switch(Event)
|
||||
{
|
||||
case EVENT_BERSERK:
|
||||
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
|
||||
DoPlaySoundToSet(m_creature, SOUND_BERSERK);
|
||||
DoScriptText(YELL_BERSERK, m_creature);
|
||||
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
|
||||
Timer[EVENT_BERSERK] = 0;
|
||||
Timer[EVENT_BERSERK] = 10000;
|
||||
break;
|
||||
case EVENT_CLEAVE:
|
||||
m_creature->CastSpell(m_creature->getVictim(), SPELL_CLEAVE, false);
|
||||
@@ -451,8 +472,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
switch(Event)
|
||||
{
|
||||
case EVENT_BERSERK:
|
||||
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
|
||||
DoPlaySoundToSet(m_creature, SOUND_BERSERK);
|
||||
DoScriptText(YELL_BERSERK, m_creature);
|
||||
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
|
||||
Timer[EVENT_BERSERK] = 0;
|
||||
break;
|
||||
@@ -584,4 +604,3 @@ void AddSC_boss_felmyst()
|
||||
newscript->GetAI = &GetAI_mob_felmyst_trail;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,70 +24,80 @@ EndScriptData */
|
||||
#include "precompiled.h"
|
||||
#include "def_sunwell_plateau.h"
|
||||
|
||||
//kalecgos dragon form
|
||||
#define SAY_EVIL_AGGRO -1580000
|
||||
#define SAY_EVIL_SPELL1 -1580001
|
||||
#define SAY_EVIL_SPELL2 -1580002
|
||||
#define SAY_EVIL_SLAY1 -1580003
|
||||
#define SAY_EVIL_SLAY2 -1580004
|
||||
#define SAY_EVIL_ENRAGE -1580005
|
||||
//kalecgos humanoid form
|
||||
#define SAY_GOOD_AGGRO -1580006
|
||||
#define SAY_GOOD_NEAR_DEATH -1580007
|
||||
#define SAY_GOOD_NEAR_DEATH2 -1580008
|
||||
#define SAY_GOOD_PLRWIN -1580009
|
||||
enum Quotes
|
||||
{
|
||||
//Kalecgos dragon form
|
||||
SAY_EVIL_AGGRO = -1580000,
|
||||
SAY_EVIL_SPELL1 = -1580001,
|
||||
SAY_EVIL_SPELL2 = -1580002,
|
||||
SAY_EVIL_SLAY1 = -1580003,
|
||||
SAY_EVIL_SLAY2 = -1580004,
|
||||
SAY_EVIL_ENRAGE = -1580005,
|
||||
|
||||
//Kalecgos humanoid form
|
||||
SAY_GOOD_AGGRO = -1580006,
|
||||
SAY_GOOD_NEAR_DEATH = -1580007,
|
||||
SAY_GOOD_NEAR_DEATH2 = -1580008,
|
||||
SAY_GOOD_PLRWIN = -1580009,
|
||||
|
||||
#define SAY_SATH_AGGRO -1580010
|
||||
#define SAY_SATH_DEATH -1580011
|
||||
#define SAY_SATH_SPELL1 -1580012
|
||||
#define SAY_SATH_SPELL2 -1580013
|
||||
#define SAY_SATH_SLAY1 -1580014
|
||||
#define SAY_SATH_SLAY2 -1580015
|
||||
#define SAY_SATH_ENRAGE -1580016
|
||||
//Shattrowar
|
||||
SAY_SATH_AGGRO = -1580010,
|
||||
SAY_SATH_DEATH = -1580011,
|
||||
SAY_SATH_SPELL1 = -1580012,
|
||||
SAY_SATH_SPELL2 = -1580013,
|
||||
SAY_SATH_SLAY1 = -1580014,
|
||||
SAY_SATH_SLAY2 = -1580015,
|
||||
SAY_SATH_ENRAGE = -1580016
|
||||
};
|
||||
|
||||
#define GO_FAILED "You are unable to use this currently."
|
||||
enum SpellIds
|
||||
{
|
||||
AURA_SUNWELL_RADIANCE = 45769,
|
||||
AURA_SPECTRAL_EXHAUSTION = 44867,
|
||||
AURA_SPECTRAL_REALM = 46021,
|
||||
AURA_SPECTRAL_INVISIBILITY = 44801,
|
||||
AURA_DEMONIC_VISUAL = 44800,
|
||||
|
||||
#define FLY_X 1679
|
||||
#define FLY_Y 900
|
||||
#define FLY_Z 82
|
||||
SPELL_SPECTRAL_BLAST = 44869,
|
||||
SPELL_TELEPORT_SPECTRAL = 46019,
|
||||
SPELL_ARCANE_BUFFET = 45018,
|
||||
SPELL_FROST_BREATH = 44799,
|
||||
SPELL_TAIL_LASH = 45122,
|
||||
|
||||
SPELL_BANISH = 44836,
|
||||
SPELL_TRANSFORM_KALEC = 44670,
|
||||
SPELL_ENRAGE = 44807,
|
||||
|
||||
SPELL_CORRUPTION_STRIKE = 45029,
|
||||
SPELL_AGONY_CURSE = 45032,
|
||||
SPELL_SHADOW_BOLT = 45031,
|
||||
|
||||
SPELL_HEROIC_STRIKE = 45026,
|
||||
SPELL_REVITALIZE = 45027
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
{
|
||||
MOB_KALECGOS = 24850,
|
||||
MOB_KALEC = 24891,
|
||||
MOB_SATHROVARR = 24892
|
||||
};
|
||||
|
||||
#define GO_FAILED "You are unable to use this currently."
|
||||
|
||||
#define FLY_X 1679
|
||||
#define FLY_Y 900
|
||||
#define FLY_Z 82
|
||||
|
||||
#define CENTER_X 1705
|
||||
#define CENTER_Y 930
|
||||
#define RADIUS 30
|
||||
|
||||
#define AURA_SUNWELL_RADIANCE 45769
|
||||
#define AURA_SPECTRAL_EXHAUSTION 44867
|
||||
#define AURA_SPECTRAL_REALM 46021
|
||||
#define AURA_SPECTRAL_INVISIBILITY 44801
|
||||
#define AURA_DEMONIC_VISUAL 44800
|
||||
|
||||
#define SPELL_SPECTRAL_BLAST 44869
|
||||
#define SPELL_TELEPORT_SPECTRAL 46019
|
||||
#define SPELL_ARCANE_BUFFET 45018
|
||||
#define SPELL_FROST_BREATH 44799
|
||||
#define SPELL_TAIL_LASH 45122
|
||||
|
||||
#define SPELL_BANISH 44836
|
||||
#define SPELL_TRANSFORM_KALEC 44670
|
||||
#define SPELL_ENRAGE 44807
|
||||
|
||||
#define SPELL_CORRUPTION_STRIKE 45029
|
||||
#define SPELL_AGONY_CURSE 45032
|
||||
#define SPELL_SHADOW_BOLT 45031
|
||||
|
||||
#define SPELL_HEROIC_STRIKE 45026
|
||||
#define SPELL_REVITALIZE 45027
|
||||
|
||||
#define MOB_KALECGOS 24850
|
||||
#define MOB_KALEC 24891
|
||||
#define MOB_SATHROVARR 24892
|
||||
|
||||
#define DRAGON_REALM_Z 53.079
|
||||
#define DEMON_REALM_Z -74.558
|
||||
|
||||
uint32 WildMagic[]= { 44978, 45001, 45002, 45004, 45006, 45010 };
|
||||
|
||||
|
||||
struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI
|
||||
{
|
||||
boss_kalecgosAI(Creature *c) : ScriptedAI(c)
|
||||
@@ -162,6 +172,9 @@ struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI
|
||||
GameObject *Door = GameObject::GetGameObject(*m_creature, DoorGUID);
|
||||
if(Door) Door->SetLootState(GO_ACTIVATED);
|
||||
DoZoneInCombat();
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_KALECGOS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
@@ -275,6 +288,9 @@ struct TRINITY_DLL_DECL boss_sathrovarrAI : public ScriptedAI
|
||||
ResetThreat = 1000;
|
||||
isEnraged = false;
|
||||
isBanished = false;
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_KALECGOS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void Aggro(Unit* who)
|
||||
@@ -325,6 +341,9 @@ struct TRINITY_DLL_DECL boss_sathrovarrAI : public ScriptedAI
|
||||
((boss_kalecgosAI*)((Creature*)Kalecgos)->AI())->TalkTimer = 1;
|
||||
((boss_kalecgosAI*)((Creature*)Kalecgos)->AI())->isFriendly = true;
|
||||
}
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_KALECGOS_EVENT, DONE);
|
||||
}
|
||||
|
||||
void TeleportAllPlayersBack()
|
||||
@@ -437,8 +456,7 @@ struct TRINITY_DLL_DECL boss_kalecAI : public ScriptedAI
|
||||
|
||||
bool isEnraged; // if demon is enraged
|
||||
|
||||
boss_kalecAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
boss_kalecAI(Creature *c) : ScriptedAI(c){
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||
}
|
||||
|
||||
@@ -671,4 +689,3 @@ void AddSC_boss_kalecgos()
|
||||
newscript->pGOHello = &GOkalocegos_teleporter;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -6,36 +6,38 @@
|
||||
#define DEF_SUNWELLPLATEAU_H
|
||||
|
||||
/*** Encounters ***/
|
||||
#define DATA_KALECGOS_EVENT 0
|
||||
#define DATA_BRUTALLUS_EVENT 1
|
||||
#define DATA_FELMYST_EVENT 2
|
||||
#define DATA_EREDAR_TWINS_EVENT 3
|
||||
#define DATA_MURU_EVENT 4
|
||||
#define DATA_KILJAEDEN_EVENT 5
|
||||
#define DATA_KALECGOS_EVENT 1
|
||||
#define DATA_BRUTALLUS_EVENT 2
|
||||
#define DATA_FELMYST_EVENT 3
|
||||
#define DATA_EREDAR_TWINS_EVENT 4
|
||||
#define DATA_MURU_EVENT 5
|
||||
#define DATA_KILJAEDEN_EVENT 6
|
||||
|
||||
/*** Creatures ***/
|
||||
#define DATA_KALECGOS_DRAGON 6
|
||||
#define DATA_KALECGOS_HUMAN 7
|
||||
#define DATA_SATHROVARR 8
|
||||
#define DATA_BRUTALLUS 9
|
||||
#define DATA_MADRIGOSA 24
|
||||
#define DATA_FELMYST 10
|
||||
#define DATA_ALYTHESS 11
|
||||
#define DATA_SACROLASH 12
|
||||
#define DATA_MURU 13
|
||||
#define DATA_KILJAEDEN 14
|
||||
#define DATA_KILJAEDEN_CONTROLLER 15
|
||||
#define DATA_ANVEENA 16
|
||||
#define DATA_KALECGOS_DRAGON 7
|
||||
#define DATA_KALECGOS_HUMAN 8
|
||||
#define DATA_SATHROVARR 9
|
||||
#define DATA_BRUTALLUS 10
|
||||
#define DATA_MADRIGOSA 11
|
||||
#define DATA_FELMYST 12
|
||||
#define DATA_ALYTHESS 13
|
||||
#define DATA_SACROLASH 14
|
||||
#define DATA_MURU 15
|
||||
#define DATA_KILJAEDEN 16
|
||||
#define DATA_KILJAEDEN_CONTROLLER 17
|
||||
#define DATA_ANVEENA 18
|
||||
#define DATA_KALECGOS_KJ 19
|
||||
|
||||
/*** GameObjects ***/
|
||||
#define DATA_GO_FORCEFIELD 17
|
||||
#define DATA_GO_FIRE_BARRIER 18
|
||||
#define DATA_GATE_1 19
|
||||
#define DATA_GATE_2 20
|
||||
#define DATA_GATE_3 21
|
||||
#define DATA_GATE_4 22
|
||||
#define DATA_GATE_5 23
|
||||
#define DATA_GO_FORCEFIELD 20
|
||||
#define DATA_GO_FIRE_BARRIER 21
|
||||
#define DATA_GATE_1 22
|
||||
#define DATA_GATE_2 23
|
||||
#define DATA_GATE_3 24
|
||||
#define DATA_GATE_4 25
|
||||
#define DATA_GATE_5 26
|
||||
|
||||
/*** Misc ***/
|
||||
#define DATA_PLAYER_GUID 27
|
||||
#endif
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
/* ScriptData
|
||||
SDName: Instance_Sunwell_Plateau
|
||||
SD%Complete: 0
|
||||
SDComment: VERIFY SCRIPT
|
||||
SD%Complete: 20
|
||||
SDComment: VERIFY SCRIPT, rename Gates
|
||||
SDCategory: Sunwell_Plateau
|
||||
EndScriptData */
|
||||
|
||||
@@ -14,6 +14,11 @@ EndScriptData */
|
||||
|
||||
#define ENCOUNTERS 6
|
||||
|
||||
enum GoState{
|
||||
CLOSE = 1,
|
||||
OPEN = 0
|
||||
};
|
||||
|
||||
/* Sunwell Plateau:
|
||||
0 - Kalecgos and Sathrovarr
|
||||
1 - Brutallus
|
||||
@@ -42,6 +47,7 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
uint64 KilJaeden;
|
||||
uint64 KilJaedenController;
|
||||
uint64 Anveena;
|
||||
uint64 KalecgosKJ;
|
||||
|
||||
/** GameObjects **/
|
||||
uint64 ForceField; // Kalecgos Encounter
|
||||
@@ -67,6 +73,7 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
KilJaeden = 0;
|
||||
KilJaedenController = 0;
|
||||
Anveena = 0;
|
||||
KalecgosKJ = 0;
|
||||
|
||||
/*** GameObjects ***/
|
||||
ForceField = 0;
|
||||
@@ -94,6 +101,38 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
return false;
|
||||
}
|
||||
|
||||
Player* GetPlayerInMap()
|
||||
{
|
||||
Map::PlayerList const& players = instance->GetPlayers();
|
||||
|
||||
if (!players.isEmpty())
|
||||
{
|
||||
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
{
|
||||
Player* plr = itr->getSource();
|
||||
if (plr && !plr->HasAura(45839,0))
|
||||
return plr;
|
||||
}
|
||||
}
|
||||
|
||||
debug_log("TSCR: Instance Sunwell Plateau: GetPlayerInMap, but PlayerList is empty!");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void HandleGameObject(uint64 guid, uint32 state)
|
||||
{
|
||||
Player *player = GetPlayerInMap();
|
||||
|
||||
if (!player || !guid)
|
||||
{
|
||||
debug_log("TSCR: Sunwell Plateau: HandleGameObject fail");
|
||||
return;
|
||||
}
|
||||
|
||||
if (GameObject *go = GameObject::GetGameObject(*player,guid))
|
||||
go->SetGoState(state);
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature, uint32 entry)
|
||||
{
|
||||
switch(entry)
|
||||
@@ -110,6 +149,7 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
case 25315: KilJaeden = creature->GetGUID(); break;
|
||||
case 25608: KilJaedenController = creature->GetGUID(); break;
|
||||
case 26046: Anveena = creature->GetGUID(); break;
|
||||
case 25319: KalecgosKJ = creature->GetGUID(); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,6 +198,11 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
case DATA_KILJAEDEN: return KilJaeden; break;
|
||||
case DATA_KILJAEDEN_CONTROLLER: return KilJaedenController; break;
|
||||
case DATA_ANVEENA: return Anveena; break;
|
||||
case DATA_KALECGOS_KJ: return KalecgosKJ; break;
|
||||
case DATA_PLAYER_GUID:
|
||||
Player* Target = GetPlayerInMap();
|
||||
return Target->GetGUID();
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -169,11 +214,32 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
{
|
||||
case DATA_KALECGOS_EVENT: Encounters[0] = data; break;
|
||||
case DATA_BRUTALLUS_EVENT: Encounters[1] = data; break;
|
||||
case DATA_FELMYST_EVENT: Encounters[2] = data; break;
|
||||
case DATA_FELMYST_EVENT:
|
||||
if(data == DONE)
|
||||
HandleGameObject(FireBarrier, 1);
|
||||
Encounters[2] = data; break;
|
||||
case DATA_EREDAR_TWINS_EVENT: Encounters[3] = data; break;
|
||||
case DATA_MURU_EVENT: Encounters[4] = data; break;
|
||||
case DATA_MURU_EVENT:
|
||||
switch(data){
|
||||
case DONE:
|
||||
HandleGameObject(Gate[4], OPEN);
|
||||
HandleGameObject(Gate[3], OPEN);
|
||||
break;
|
||||
case IN_PROGRESS:
|
||||
HandleGameObject(Gate[4], CLOSE);
|
||||
HandleGameObject(Gate[3], CLOSE);
|
||||
break;
|
||||
case NOT_STARTED:
|
||||
HandleGameObject(Gate[4], CLOSE);
|
||||
HandleGameObject(Gate[3], OPEN);
|
||||
break;
|
||||
}
|
||||
Encounters[4] = data; break;
|
||||
case DATA_KILJAEDEN_EVENT: Encounters[5] = data; break;
|
||||
}
|
||||
|
||||
if(data == DONE)
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
void SetData64(uint32 id, uint64 guid)
|
||||
@@ -183,6 +249,41 @@ struct TRINITY_DLL_DECL instance_sunwell_plateau : public ScriptedInstance
|
||||
void Update(uint32 diff)
|
||||
{
|
||||
}
|
||||
|
||||
const char* Save()
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
std::ostringstream stream;
|
||||
stream << Encounters[0] << " " << Encounters[1] << " " << Encounters[2] << " " << Encounters[3] << " "
|
||||
<< Encounters[4] << " " << Encounters[5];
|
||||
char* out = new char[stream.str().length() + 1];
|
||||
strcpy(out, stream.str().c_str());
|
||||
if(out)
|
||||
{
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return out;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Load(const char* in)
|
||||
{
|
||||
if(!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
std::istringstream stream(in);
|
||||
stream >> Encounters[0] >> Encounters[1] >> Encounters[2] >> Encounters[3]
|
||||
>> Encounters[4] >> Encounters[5];
|
||||
for(uint8 i = 0; i < ENCOUNTERS; ++i)
|
||||
if(Encounters[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead.
|
||||
Encounters[i] = NOT_STARTED;
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
};
|
||||
|
||||
InstanceData* GetInstanceData_instance_sunwell_plateau(Map* map)
|
||||
|
||||
@@ -15,12 +15,52 @@
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: sunwell_plateau
|
||||
SDName: Sunwell_Plateau
|
||||
SD%Complete: 0
|
||||
SDComment: Placeholer
|
||||
SDCategory: Sunwell_Plateau
|
||||
SDComment: Placeholder, Epilogue after Kil'jaeden, Captain Selana Gossips
|
||||
EndScriptData */
|
||||
|
||||
/* ContentData
|
||||
npc_prophet_velen
|
||||
npc_captain_selana
|
||||
EndContentData */
|
||||
|
||||
#include "precompiled.h"
|
||||
#include "def_sunwell_plateau.h"
|
||||
|
||||
/*######
|
||||
## npc_prophet_velen
|
||||
######*/
|
||||
|
||||
enum ProphetSpeeches
|
||||
{
|
||||
PROPHET_SAY1 = -1580099,
|
||||
PROPHET_SAY2 = -1580100,
|
||||
PROPHET_SAY3 = -1580101,
|
||||
PROPHET_SAY4 = -1580102,
|
||||
PROPHET_SAY5 = -1580103,
|
||||
PROPHET_SAY6 = -1580104,
|
||||
PROPHET_SAY7 = -1580105,
|
||||
PROPHET_SAY8 = -1580106
|
||||
};
|
||||
|
||||
enum LiadrinnSpeeches
|
||||
{
|
||||
LIADRIN_SAY1 = -1580107,
|
||||
LIADRIN_SAY2 = -1580108,
|
||||
LIADRIN_SAY3 = -1580109
|
||||
};
|
||||
|
||||
|
||||
/*######
|
||||
## npc_captain_selana
|
||||
######*/
|
||||
|
||||
#define CS_GOSSIP1 "Give me a situation report, Captain."
|
||||
#define CS_GOSSIP2 "What went wrong?"
|
||||
#define CS_GOSSIP3 "Why did they stop?"
|
||||
#define CS_GOSSIP4 "Your insight is appreciated."
|
||||
|
||||
void AddSC_sunwell_plateau()
|
||||
{};
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user