Merge [SD2]

r1031 Removed empty Aggro function from most scripts. - Skip(already deleted)
r1032 Correct spell id's for Leotheras, added enrage and some missing definitions for future dev.
Change movement generator when changing forms and reset threat.
Updated texts and summon correct npc. SD2 code style applied.
r1033 Added: Heroic support for all bosses in Dark Portal / Black Morras event.
Fixed: Timers and spells in Dark Portal / Black Morras bosses and other.
r1034 Correct spellIds for boss Vashj. Remove code from UpdateAI where better used in other functions (eg JustSummoned). Prevent channel generators from cast before boss actually reach destination in phase 2. SD2 code style applied.
r1035 Simplify SpawnAdds function in boss hydross

--HG--
branch : trunk
This commit is contained in:
Kudlaty
2009-06-18 10:47:39 +02:00
parent bff6fbcf54
commit ce4a4c740a
12 changed files with 663 additions and 851 deletions
+3 -3
View File
@@ -1070,8 +1070,8 @@ INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content
(-1548006, 'I will purge you from this place.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11298, 1, 0, 0, 'hydross SAY_CORRUPT_SLAY1'),
(-1548007, 'You are no better than they!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11299, 1, 0, 0, 'hydross SAY_CORRUPT_SLAY2'),
(-1548008, 'You are the disease, not I', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11300, 1, 0, 0, 'hydross SAY_CORRUPT_DEATH'),
(-1548009, 'Finally my banishment ends!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11312, 1, 0, 0, 'leotheras SAY_AGGRO'),
(-1548010, 'Be gone trifling elf. I''m in control now.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11304, 1, 0, 0, 'leotheras SAY_SWITCH_TO_DEMON'),
(-1548009, 'Finally, my banishment ends!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11312, 1, 0, 0, 'leotheras SAY_AGGRO'),
(-1548010, 'Be gone, trifling elf. I am in control now!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11304, 1, 0, 0, 'leotheras SAY_SWITCH_TO_DEMON'),
(-1548011, 'We all have our demons...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11305, 1, 0, 0, 'leotheras SAY_INNER_DEMONS'),
(-1548012, 'I have no equal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11306, 1, 0, 0, 'leotheras SAY_DEMON_SLAY1'),
(-1548013, 'Perish, mortal.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11307, 1, 0, 0, 'leotheras SAY_DEMON_SLAY2'),
@@ -1079,7 +1079,7 @@ INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content
(-1548015, 'Kill! KILL!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11314, 1, 0, 0, 'leotheras SAY_NIGHTELF_SLAY1'),
(-1548016, 'That''s right! Yes!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11315, 1, 0, 0, 'leotheras SAY_NIGHTELF_SLAY2'),
(-1548017, 'Who''s the master now?', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11316, 1, 0, 0, 'leotheras SAY_NIGHTELF_SLAY3'),
(-1548018, 'No! NO! What have you done?! I am the master, do you hear me? I... aaghh... Can''t... contain him...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11313, 1, 0, 0, 'leotheras SAY_FINAL_FORM'),
(-1548018, 'No... no! What have you done? I am the master! Do you hear me? I am... aaggh! Can''t... contain him...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11313, 1, 0, 0, 'leotheras SAY_FINAL_FORM'),
(-1548019, 'At last I am liberated. It has been too long since I have tasted true freedom!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11309, 1, 0, 0, 'leotheras SAY_FREE'),
(-1548020, 'You cannot kill me! Fools, I''ll be back! I''ll... aarghh...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11317, 1, 0, 0, 'leotheras SAY_DEATH'),
(-1548021, 'Guards, attention! We have visitors...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11277, 1, 0, 0, 'karathress SAY_AGGRO'),
+1 -1
View File
@@ -381,7 +381,7 @@ UPDATE `gameobject_template` SET `ScriptName` = 'go_bridge_console' WHERE `entry
/* Leotheras the Blind event */
UPDATE `creature_template` SET `ScriptName`='boss_leotheras_the_blind' WHERE `entry`=21215;
UPDATE `creature_template` SET `ScriptName`='boss_leotheras_the_blind_demonform' WHERE `entry`=21845;
UPDATE `creature_template` SET `ScriptName`='boss_leotheras_the_blind_demonform' WHERE `entry`=21875;
UPDATE `creature_template` SET `ScriptName`='mob_greyheart_spellbinder' WHERE `entry`=21806;
UPDATE `creature_template` SET `ScriptName`='mob_inner_demon' WHERE `entry`=21857;
/* Fathom-lord Karathress event */
+7
View File
@@ -0,0 +1,7 @@
UPDATE creature_template SET ScriptName='' WHERE entry=21845;
UPDATE creature_template SET ScriptName='boss_leotheras_the_blind_demonform' WHERE entry=21875;
UPDATE script_texts SET content_default='Finally, my banishment ends!' WHERE entry=-1548009;
UPDATE script_texts SET content_default='Be gone, trifling elf. I am in control now!' WHERE entry=-1548010;
UPDATE script_texts SET content_default='No... no! What have you done? I am the master! Do you hear me? I am... aaggh! Can\'t... contain him...' WHERE entry=-1548018;
@@ -24,19 +24,22 @@ EndScriptData */
#include "precompiled.h"
#include "def_dark_portal.h"
#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 EMOTE_FRENZY -1269018
enum
{
SAY_ENTER = -1269012,
SAY_AGGRO = -1269013,
SAY_BANISH = -1269014,
SAY_SLAY1 = -1269015,
SAY_SLAY2 = -1269016,
SAY_DEATH = -1269017,
EMOTE_FRENZY = -1269018,
#define SPELL_CLEAVE 40504
#define SPELL_TIME_STOP 31422
#define SPELL_ENRAGE 37605
#define SPELL_SAND_BREATH 31473
#define H_SPELL_SAND_BREATH 39049
SPELL_CLEAVE = 40504,
SPELL_TIME_STOP = 31422,
SPELL_ENRAGE = 37605,
SPELL_SAND_BREATH = 31473,
H_SPELL_SAND_BREATH = 39049
};
struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
{
@@ -55,9 +58,9 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
void Reset()
{
SandBreath_Timer = 30000;
TimeStop_Timer = 40000;
Frenzy_Timer = 120000;
SandBreath_Timer = 15000+rand()%15000;
TimeStop_Timer = 10000+rand()%5000;
Frenzy_Timer = 30000+rand()%15000;
}
void EnterCombat(Unit *who)
@@ -109,15 +112,15 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
//Sand Breath
if (SandBreath_Timer < diff)
{
DoCast(m_creature->getVictim(), SPELL_SAND_BREATH);
SandBreath_Timer = 30000;
DoCast(m_creature->getVictim(), HeroicMode ? H_SPELL_SAND_BREATH : SPELL_SAND_BREATH);
SandBreath_Timer = 15000+rand()%10000;
}else SandBreath_Timer -= diff;
//Time Stop
if (TimeStop_Timer < diff)
{
DoCast(m_creature->getVictim(), SPELL_TIME_STOP);
TimeStop_Timer = 40000;
TimeStop_Timer = 20000+rand()%15000;
}else TimeStop_Timer -= diff;
//Frenzy
@@ -125,7 +128,7 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
{
DoScriptText(EMOTE_FRENZY, m_creature);
DoCast(m_creature, SPELL_ENRAGE);
Frenzy_Timer = 120000;
Frenzy_Timer = 20000+rand()%15000;
}else Frenzy_Timer -= diff;
DoMeleeAttackIfReady();
@@ -24,19 +24,22 @@ EndScriptData */
#include "precompiled.h"
#include "def_dark_portal.h"
#define SAY_ENTER -1269006
#define SAY_AGGRO -1269007
#define SAY_BANISH -1269008
#define SAY_SLAY1 -1269009
#define SAY_SLAY2 -1269010
#define SAY_DEATH -1269011
enum
{
SAY_ENTER = -1269006,
SAY_AGGRO = -1269007,
SAY_BANISH = -1269008,
SAY_SLAY1 = -1269009,
SAY_SLAY2 = -1269010,
SAY_DEATH = -1269011,
#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)
SPELL_ARCANE_BLAST = 31457,
H_SPELL_ARCANE_BLAST = 38538,
SPELL_ARCANE_DISCHARGE = 31472,
H_SPELL_ARCANE_DISCHARGE = 38539,
SPELL_TIME_LAPSE = 31467,
SPELL_ATTRACTION = 38540 //Not Implemented (Heroic mode)
};
struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
{
@@ -51,11 +54,15 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
uint32 ArcaneBlast_Timer;
uint32 TimeLapse_Timer;
uint32 Attraction_Timer;
uint32 ArcaneDischarge_Timer;
void Reset()
{
ArcaneBlast_Timer = 20000;
TimeLapse_Timer = 15000;
ArcaneBlast_Timer = 18000+rand()%5000;
TimeLapse_Timer = 10000+rand()%5000;
ArcaneDischarge_Timer = 20000+rand()%10000;
Attraction_Timer = 25000+rand()%10000;
}
void EnterCombat(Unit *who)
@@ -104,10 +111,18 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
//Arcane Blast
if (ArcaneBlast_Timer < diff)
{
DoCast(m_creature->getVictim(), SPELL_ARCANE_BLAST);
ArcaneBlast_Timer = 20000+rand()%5000;
DoCast(m_creature->getVictim(), HeroicMode ? H_SPELL_ARCANE_BLAST : SPELL_ARCANE_BLAST);
ArcaneBlast_Timer = 15000+rand()%10000;
}else ArcaneBlast_Timer -= diff;
//Arcane Discharge
if (ArcaneDischarge_Timer < diff)
{
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
DoCast(target,HeroicMode ? H_SPELL_ARCANE_DISCHARGE : SPELL_ARCANE_DISCHARGE);
ArcaneDischarge_Timer = 20000+rand()%10000;
}else ArcaneDischarge_Timer -= diff;
//Time Lapse
if (TimeLapse_Timer < diff)
{
@@ -116,6 +131,15 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
TimeLapse_Timer = 15000+rand()%10000;
}else TimeLapse_Timer -= diff;
if (HeroicMode)
{
if (Attraction_Timer < diff)
{
DoCast(m_creature,SPELL_ATTRACTION);
Attraction_Timer = 25000+rand()%10000;
}else Attraction_Timer -= diff;
}
DoMeleeAttackIfReady();
}
};
@@ -24,18 +24,21 @@ EndScriptData */
#include "precompiled.h"
#include "def_dark_portal.h"
#define SAY_ENTER -1269000
#define SAY_AGGRO -1269001
#define SAY_BANISH -1269002
#define SAY_SLAY1 -1269003
#define SAY_SLAY2 -1269004
#define SAY_DEATH -1269005
enum
{
SAY_ENTER = -1269000,
SAY_AGGRO = -1269001,
SAY_BANISH = -1269002,
SAY_SLAY1 = -1269003,
SAY_SLAY2 = -1269004,
SAY_DEATH = -1269005,
#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)
SPELL_HASTE = 31458,
SPELL_MORTAL_WOUND = 31464,
SPELL_WING_BUFFET = 31475,
H_SPELL_WING_BUFFET = 38593,
SPELL_REFLECT = 38592 //Not Implemented (Heroic mod)
};
struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
{
@@ -50,14 +53,18 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
uint32 Haste_Timer;
uint32 SpellReflection_Timer;
uint32 MortalWound_Timer;
uint32 WingBuffet_Timer;
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;
Haste_Timer = 15000+rand()%8000;
SpellReflection_Timer = 30000;
MortalWound_Timer = 8000;
WingBuffet_Timer = 25000+rand()%10000;
}
void EnterCombat(Unit *who)
@@ -111,12 +118,28 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
Haste_Timer = 20000+rand()%5000;
}else Haste_Timer -= diff;
//Spell Reflection
if (SpellReflection_Timer < diff)
//MortalWound_Timer
if (MortalWound_Timer < diff)
{
DoCast(m_creature, SPELL_REFLECT);
SpellReflection_Timer = 40000+rand()%10000;
}else SpellReflection_Timer -= diff;
DoCast(m_creature, SPELL_MORTAL_WOUND);
MortalWound_Timer = 10000+rand()%10000;
}else MortalWound_Timer -= diff;
//Wing ruffet
if (WingBuffet_Timer < diff)
{
DoCast(m_creature,HeroicMode ? H_SPELL_WING_BUFFET : SPELL_WING_BUFFET);
WingBuffet_Timer = 20000+rand()%10000;
}else WingBuffet_Timer -= diff;
if (HeroicMode)
{
if (SpellReflection_Timer < diff)
{
DoCast(m_creature,SPELL_REFLECT);
SpellReflection_Timer = 25000+rand()%10000;
}else SpellReflection_Timer -= diff;
}
DoMeleeAttackIfReady();
}
@@ -150,15 +150,10 @@ struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI
void SpawnAdds()
{
uint32 uiAdd = 0;
for(uint8 i = 0; i < 4; ++i)
DoSpawnCreature(m_bCorruptedForm ? NPC_TAINTED_SPAWN : NPC_PURE_SPAWN,
afSpawnDiffs[i][0], afSpawnDiffs[i][1], 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
if (m_bCorruptedForm)
uiAdd = NPC_TAINTED_SPAWN;
else
uiAdd = NPC_PURE_SPAWN;
for(uint8 i = 0; i < 4; i++)
DoSpawnCreature(uiAdd, afSpawnDiffs[i][0], afSpawnDiffs[i][1], 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
}
void UpdateAI(const uint32 uiDiff)
File diff suppressed because it is too large Load Diff
@@ -24,46 +24,51 @@ EndScriptData */
#include "precompiled.h"
#include "def_serpent_shrine.h"
// --- Spells used by Leotheras The Blind
#define SPELL_WHIRLWIND 37640
#define SPELL_CHAOS_BLAST 37674
#define SPELL_BERSERK 26662
#define SPELL_INSIDIOUS_WHISPER 37676
#define SPELL_DUAL_WIELD 42459
enum
{
SAY_AGGRO = -1548009,
SAY_SWITCH_TO_DEMON = -1548010,
SAY_INNER_DEMONS = -1548011,
SAY_DEMON_SLAY1 = -1548012,
SAY_DEMON_SLAY2 = -1548013,
SAY_DEMON_SLAY3 = -1548014,
SAY_NIGHTELF_SLAY1 = -1548015,
SAY_NIGHTELF_SLAY2 = -1548016,
SAY_NIGHTELF_SLAY3 = -1548017,
SAY_FINAL_FORM = -1548018,
SAY_FREE = -1548019,
SAY_DEATH = -1548020,
// --- Spells used in banish phase ---
#define BANISH_BEAM 38909
#define AURA_BANISH 37833
SPELL_BERSERK = 26662,
// --- Spells used by Greyheart Spellbinders
#define SPELL_EARTHSHOCK 39076
#define SPELL_MINDBLAST 37531
SPELL_WHIRLWIND = 37640,
SPELL_CHAOS_BLAST = 37674,
SPELL_INSIDIOUS_WHISPER = 37676,
SPELL_CONSUMING_MADNESS = 37749,
// --- Spells used by Inner Demons and creature ID
#define INNER_DEMON_ID 21857
#define AURA_DEMONIC_ALIGNMENT 37713
#define SPELL_SHADOWBOLT 39309
#define SPELL_SOUL_LINK 38007
#define SPELL_CONSUMING_MADNESS 37749 //not supported by core yet
AURA_DEMONIC_ALIGNMENT = 37713,
SPELL_SHADOWBOLT = 39309,
//Misc.
#define MODEL_DEMON 20125
#define MODEL_NIGHTELF 20514
#define DEMON_FORM 21875
#define MOB_SPELLBINDER 21806
FACTION_DEMON_1 = 1829,
FACTION_DEMON_2 = 1830,
FACTION_DEMON_3 = 1831,
FACTION_DEMON_4 = 1832,
FACTION_DEMON_5 = 1833,
#define SAY_AGGRO -1548009
#define SAY_SWITCH_TO_DEMON -1548010
#define SAY_INNER_DEMONS -1548011
#define SAY_DEMON_SLAY1 -1548012
#define SAY_DEMON_SLAY2 -1548013
#define SAY_DEMON_SLAY3 -1548014
#define SAY_NIGHTELF_SLAY1 -1548015
#define SAY_NIGHTELF_SLAY2 -1548016
#define SAY_NIGHTELF_SLAY3 -1548017
#define SAY_FINAL_FORM -1548018
#define SAY_FREE -1548019
#define SAY_DEATH -1548020
MODEL_DEMON = 20125,
MODEL_NIGHTELF = 20514,
INNER_DEMON_ID = 21857,
DEMON_FORM = 21875,
SPELL_DUAL_WIELD = 42459,
BANISH_BEAM = 38909,
AURA_BANISH = 37833,
SPELL_EARTHSHOCK = 39076,
SPELL_MINDBLAST = 37531,
SPELL_SOUL_LINK = 38007,
MOB_SPELLBINDER = 21806
};
struct TRINITY_DLL_DECL mob_inner_demonAI : public ScriptedAI
{
@@ -187,7 +192,10 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
EnrageUsed = false;
InnderDemon_Count = 0;
m_creature->SetSpeed( MOVE_RUN, 2.0f, true);
m_creature->SetDisplayId(MODEL_NIGHTELF);
if(m_creature->GetDisplayId() != MODEL_NIGHTELF)
m_creature->SetDisplayId(MODEL_NIGHTELF);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
@@ -345,23 +353,20 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
if (victim->GetTypeId() != TYPEID_PLAYER)
return;
if (DemonForm)
switch(rand()%3)
{
switch(rand()%3)
{
case 0: DoScriptText(SAY_DEMON_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_DEMON_SLAY2, m_creature); break;
case 2: DoScriptText(SAY_DEMON_SLAY3, m_creature); break;
}
case 0: DoScriptText(DemonForm ? SAY_DEMON_SLAY1 : SAY_NIGHTELF_SLAY1, m_creature); break;
case 1: DoScriptText(DemonForm ? SAY_DEMON_SLAY2 : SAY_NIGHTELF_SLAY2, m_creature); break;
case 2: DoScriptText(DemonForm ? SAY_DEMON_SLAY3 : SAY_NIGHTELF_SLAY3, m_creature); break;
}
else
}
void JustSummoned(Creature* pSummoned)
{
if (m_creature->getVictim() && pSummoned->GetEntry() == DEMON_FORM)
{
switch(rand()%3)
{
case 0: DoScriptText(SAY_NIGHTELF_SLAY1, m_creature); break;
case 1: DoScriptText(SAY_NIGHTELF_SLAY2, m_creature); break;
case 2: DoScriptText(SAY_NIGHTELF_SLAY3, m_creature); break;
}
Demon = pSummoned->GetGUID();
pSummoned->AI()->AttackStart(m_creature->getVictim());
}
}
@@ -372,10 +377,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
//despawn copy
if (Demon)
{
Unit *pUnit = NULL;
pUnit = Unit::GetUnit((*m_creature), Demon);
if (pUnit)
if (Unit* pUnit = Unit::GetUnit((*m_creature), Demon))
pUnit->DealDamage(pUnit, pUnit->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
}
if (pInstance)
@@ -446,7 +448,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
{
DoCast(m_creature, SPELL_WHIRLWIND);
// while whirlwinding this variable is used to countdown target's change
Whirlwind_Timer = 2000;
Whirlwind_Timer = 30000;
NeedThreatReset = true;
}else Whirlwind_Timer -= diff;
}
@@ -615,7 +617,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blind_demonformAI : public ScriptedAI
void UpdateAI(const uint32 diff)
{
//Return since we have no target
if (!UpdateVictim() )
if (!UpdateVictim())
return;
//ChaosBlast_Timer
if(m_creature->GetDistance(m_creature->getVictim()) < 30)
@@ -626,9 +628,9 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blind_demonformAI : public ScriptedAI
// will cast only when in range od spell
if(m_creature->GetDistance(m_creature->getVictim()) < 30)
{
//m_creature->CastSpell(m_creature->getVictim(),SPELL_CHAOS_BLAST,true);
int damage = 100;
m_creature->CastCustomSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, m_creature->GetGUID());
m_creature->CastSpell(m_creature->getVictim(),SPELL_CHAOS_BLAST,true);
//int damage = 100;
//m_creature->CastSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, m_creature->GetGUID());
ChaosBlast_Timer = 3000;
}
}else ChaosBlast_Timer -= diff;
@@ -59,9 +59,9 @@ struct TRINITY_DLL_DECL boss_doomlordkazzakAI : public ScriptedAI
void Reset()
{
ShadowVolley_Timer = 8000 + rand()%4000;
ShadowVolley_Timer = 6000 + rand()%4000;
Cleave_Timer = 7000;
ThunderClap_Timer = 16000 + rand()%4000;
ThunderClap_Timer = 14000 + rand()%4000;
VoidBolt_Timer = 30000;
MarkOfKazzak_Timer = 25000;
Enrage_Timer = 60000;
@@ -59,6 +59,8 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
BerserkTimer = 720000; //12 minutes
Enraged = false;
Evocating = false;
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_ARCANE, true);
}
void KilledUnit(Unit *victim)
@@ -39,6 +39,7 @@ EndScriptData */
#define SPELL_OVERRUN 32636
#define SPELL_ENRAGE 33653
#define SPELL_MARK_DEATH 37128
#define SPELL_AURA_DEATH 37131
struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI
{
@@ -65,6 +66,8 @@ struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI
void KilledUnit(Unit* Victim)
{
Victim->CastSpell(Victim,SPELL_MARK_DEATH,0);
if(rand()%5)
return;
@@ -74,8 +77,6 @@ struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI
case 1: DoScriptText(SAY_SLAY_2, m_creature); break;
case 2: DoScriptText(SAY_SLAY_3, m_creature); break;
}
DoCast(m_creature->getVictim(), SPELL_MARK_DEATH);
}
void JustDied(Unit* Killer)
@@ -88,6 +89,17 @@ struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI
DoScriptText(SAY_AGGRO, m_creature);
}
void MoveInLineOfSight(Unit *who)
{
if (who && who->GetTypeId() == TYPEID_PLAYER && m_creature->IsHostileTo(who))
{
if (who->HasAura(SPELL_MARK_DEATH,0))
{
who->CastSpell(who,SPELL_AURA_DEATH,1);
}
}
}
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
@@ -149,7 +161,7 @@ struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI
if (target)
DoCast(target,SPELL_CHAIN_LIGHTNING);
Chain_Timer = 10000 + rand()%25000;
Chain_Timer = 7000 + rand()%20000;
}else Chain_Timer -= diff;
//Spell Sunder Armor