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:
@@ -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'),
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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();
|
||||
|
||||
+40
-16
@@ -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();
|
||||
}
|
||||
|
||||
+3
-8
@@ -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)
|
||||
|
||||
+466
-722
File diff suppressed because it is too large
Load Diff
+61
-59
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user