Merge [SD2]

r1081 Fix spell/timers for dathrohan/balnazzar
r1082 Correct summon timer for jan'alai hatcher and summon different as spells suggest.
      Redesign waypoint for hatchers and set expected run movement.
      Adjust distance check function. - skip
r1083 Correct order of events for jan'alai 'bombing phase'. Remove not needed summons and summon only expected amount.
      Replace teleport code with spells - skip
r1084 Correct spell/timers for two SM bosses.
r1085 Provide updated .patch file (made for Mangos 7842+) - skip

--HG--
branch : trunk
This commit is contained in:
Kudlaty
2009-06-28 00:16:04 +02:00
parent c688528f72
commit 6c1b64c45d
4 changed files with 118 additions and 124 deletions
@@ -15,44 +15,45 @@
*/ */
/* ScriptData /* ScriptData
SDName: Boss_High_Inquisitor_Faribanks SDName: Boss_High_Inquisitor_Fairbanks
SD%Complete: 100 SD%Complete: 100
SDComment: SDComment: TODO: if this guy not involved in some special event, remove (and let ACID script)
SDCategory: Scarlet Monastery SDCategory: Scarlet Monastery
EndScriptData */ EndScriptData */
#include "precompiled.h" #include "precompiled.h"
#define SPELL_SLEEP2 1090 enum
#define SPELL_CURSEOFBLOOD 16098 {
#define SPELL_SMITE 6060 SPELL_CURSEOFBLOOD = 8282,
#define SPELL_SHADOWWORDPAIN 2767 SPELL_DISPELMAGIC = 15090,
#define SPELL_FLASHHEAL4 9474 SPELL_FEAR = 12096,
#define SPELL_RENEW6 6078 SPELL_HEAL = 12039,
#define SPELL_DEVOURINGPLAGUE3 19277 SPELL_POWERWORDSHIELD = 11647,
#define SPELL_MINDBLAST5 8105 SPELL_SLEEP = 8399
};
struct TRINITY_DLL_DECL boss_high_inquisitor_fairbanksAI : public ScriptedAI struct TRINITY_DLL_DECL boss_high_inquisitor_fairbanksAI : public ScriptedAI
{ {
boss_high_inquisitor_fairbanksAI(Creature *c) : ScriptedAI(c) {} boss_high_inquisitor_fairbanksAI(Creature *c) : ScriptedAI(c) {}
uint32 Healing_Timer;
uint32 Sleep2_Timer;
uint32 Smite_Timer;
uint32 ShadowWordPain_Timer;
uint32 CurseOfBlood_Timer; uint32 CurseOfBlood_Timer;
uint32 DevouringPlague3_Timer; uint32 DispelMagic_Timer;
uint32 MindBlast5_Timer; uint32 Fear_Timer;
uint32 Heal_Timer;
uint32 Sleep_Timer;
uint32 Dispel_Timer;
bool PowerWordShield;
void Reset() void Reset()
{ {
Healing_Timer = 300; CurseOfBlood_Timer = 10000;
Sleep2_Timer = 45000; DispelMagic_Timer = 30000;
Smite_Timer = 30000; Fear_Timer = 40000;
ShadowWordPain_Timer = 30000; Heal_Timer = 30000;
CurseOfBlood_Timer = 45000; Sleep_Timer = 30000;
DevouringPlague3_Timer = 60000; Dispel_Timer = 20000;
MindBlast5_Timer = 20000; PowerWordShield = false;
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -64,33 +65,46 @@ struct TRINITY_DLL_DECL boss_high_inquisitor_fairbanksAI : public ScriptedAI
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
//If we are <45% hp cast Renew rank 6 or Flash heal rank 4 //If we are <25% hp cast Heal
if ( m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 45 && !m_creature->IsNonMeleeSpellCasted(false) && Healing_Timer < diff) if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25 && !m_creature->IsNonMeleeSpellCasted(false) && Heal_Timer < diff)
{ {
DoCast(m_creature->getVictim(),SPELL_RENEW6 || SPELL_FLASHHEAL4); DoCast(m_creature,SPELL_HEAL);
Healing_Timer = 30000; Heal_Timer = 30000;
}else Healing_Timer -= diff; }else Heal_Timer -= diff;
//Sleep2_Timer //Fear_Timer
if (Sleep2_Timer < diff) if (Fear_Timer < diff)
{ {
DoCast(m_creature->getVictim(),SPELL_SLEEP2); if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
Sleep2_Timer = 45000; DoCast(target,SPELL_FEAR);
}else Sleep2_Timer -= diff;
//Smite_Timer Fear_Timer = 40000;
if (Smite_Timer < diff) }else Fear_Timer -= diff;
{
DoCast(m_creature->getVictim(),SPELL_SMITE);
Smite_Timer = 20000;
}else Smite_Timer -= diff;
//ShadowWordPain_Timer //Sleep_Timer
if (ShadowWordPain_Timer < diff) if (Sleep_Timer < diff)
{ {
DoCast(m_creature->getVictim(),SPELL_SHADOWWORDPAIN); if (Unit* target = SelectUnit(SELECT_TARGET_TOPAGGRO,0))
ShadowWordPain_Timer = 30000; DoCast(target,SPELL_SLEEP);
}else ShadowWordPain_Timer -= diff;
Sleep_Timer = 30000;
}else Sleep_Timer -= diff;
//PowerWordShield_Timer
if (!PowerWordShield && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25)
{
DoCast(m_creature,SPELL_POWERWORDSHIELD);
PowerWordShield = true;
}
//Dispel_Timer
if (Dispel_Timer < diff)
{
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(target, SPELL_DISPELMAGIC);
DispelMagic_Timer = 30000;
}else DispelMagic_Timer -= diff;
//CurseOfBlood_Timer //CurseOfBlood_Timer
if (CurseOfBlood_Timer < diff) if (CurseOfBlood_Timer < diff)
@@ -99,20 +113,6 @@ struct TRINITY_DLL_DECL boss_high_inquisitor_fairbanksAI : public ScriptedAI
CurseOfBlood_Timer = 25000; CurseOfBlood_Timer = 25000;
}else CurseOfBlood_Timer -= diff; }else CurseOfBlood_Timer -= diff;
//DevouringPlague3_Timer
if (DevouringPlague3_Timer < diff)
{
DoCast(m_creature->getVictim(),SPELL_DEVOURINGPLAGUE3);
DevouringPlague3_Timer = 35000;
}else DevouringPlague3_Timer -= diff;
//MindBlast5_Timer
if (MindBlast5_Timer < diff)
{
DoCast(m_creature->getVictim(),SPELL_MINDBLAST5);
MindBlast5_Timer = 30000;
}else MindBlast5_Timer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
}; };
@@ -23,20 +23,22 @@ EndScriptData */
#include "precompiled.h" #include "precompiled.h"
#define SAY_AGGRO -1189021 enum
{
#define SPELL_SUMMONSCARLETHOUND 17164 SAY_AGGRO = -1189021,
#define SPELL_ENRAGE 6742 SPELL_SUMMONSCARLETHOUND = 17164,
SPELL_BLOODLUST = 6742
};
struct TRINITY_DLL_DECL boss_houndmaster_lokseyAI : public ScriptedAI struct TRINITY_DLL_DECL boss_houndmaster_lokseyAI : public ScriptedAI
{ {
boss_houndmaster_lokseyAI(Creature *c) : ScriptedAI(c) {} boss_houndmaster_lokseyAI(Creature *c) : ScriptedAI(c) {}
uint32 Enrage_Timer; uint32 BloodLust_Timer;
void Reset() void Reset()
{ {
Enrage_Timer = 0; BloodLust_Timer = 20000;
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -49,12 +51,11 @@ struct TRINITY_DLL_DECL boss_houndmaster_lokseyAI : public ScriptedAI
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
//If we are <25% hp, bloodlust if (BloodLust_Timer < diff)
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25 && Enrage_Timer < diff)
{ {
DoCast(m_creature,SPELL_ENRAGE); DoCast(m_creature,SPELL_BLOODLUST);
Enrage_Timer = 60000; BloodLust_Timer = 20000;
}else Enrage_Timer -= diff; }else BloodLust_Timer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
@@ -15,9 +15,9 @@
*/ */
/* ScriptData /* ScriptData
SDName: boss_darhrohan_balnazzar SDName: Boss_Dathrohan_Balnazzar
SD%Complete: 75 SD%Complete: 95
SDComment: Fix timers, fix spells, possibly fix summons after death SDComment: Possibly need to fix/improve summons after death
SDCategory: Stratholme SDCategory: Stratholme
EndScriptData */ EndScriptData */
@@ -28,17 +28,16 @@ enum
//Dathrohan spells //Dathrohan spells
SPELL_CRUSADERSHAMMER = 17286, //AOE stun SPELL_CRUSADERSHAMMER = 17286, //AOE stun
SPELL_CRUSADERSTRIKE = 17281, SPELL_CRUSADERSTRIKE = 17281,
SPELL_MINDBLAST = 17287,
SPELL_HOLYSTRIKE = 17284, //weapon dmg +3 SPELL_HOLYSTRIKE = 17284, //weapon dmg +3
//Transform //Transform
SPELL_BALNAZZARTRANSFORM = 17288, //restore full HP/mana, trigger spell Balnazzar Transform Stun SPELL_BALNAZZARTRANSFORM = 17288, //restore full HP/mana, trigger spell Balnazzar Transform Stun
//Balnazzar spells //Balnazzar spells
SPELL_SHADOWSHOCK = 20603, //AOE 740-860dmg SPELL_SHADOWSHOCK = 17399,
SPELL_PSYCHICSCREAM = 15398, //One target, might want to make a code selecting random target SPELL_MINDBLAST = 17287,
SPELL_PSYCHICSCREAM = 13704,
SPELL_SLEEP = 12098, SPELL_SLEEP = 12098,
SPELL_SHADOWBOLTVOLLEY = 20741, //AOE, 255-345dmg
SPELL_MINDCONTROL = 15690, SPELL_MINDCONTROL = 15690,
NPC_DATHROHAN = 10812, NPC_DATHROHAN = 10812,
@@ -75,20 +74,18 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
uint32 m_uiShadowShock_Timer; uint32 m_uiShadowShock_Timer;
uint32 m_uiPsychicScream_Timer; uint32 m_uiPsychicScream_Timer;
uint32 m_uiDeepSleep_Timer; uint32 m_uiDeepSleep_Timer;
uint32 m_uiShadowBoltVolley_Timer;
uint32 m_uiMindControl_Timer; uint32 m_uiMindControl_Timer;
bool m_bTransformed; bool m_bTransformed;
void Reset() void Reset()
{ {
m_uiCrusadersHammer_Timer = 8000; m_uiCrusadersHammer_Timer = 8000;
m_uiCrusaderStrike_Timer = 14000; m_uiCrusaderStrike_Timer = 12000;
m_uiMindBlast_Timer = 17000; m_uiMindBlast_Timer = 6000;
m_uiHolyStrike_Timer = 18000; m_uiHolyStrike_Timer = 18000;
m_uiShadowShock_Timer = 4000; m_uiShadowShock_Timer = 4000;
m_uiPsychicScream_Timer = 16000; m_uiPsychicScream_Timer = 16000;
m_uiDeepSleep_Timer = 20000; m_uiDeepSleep_Timer = 20000;
m_uiShadowBoltVolley_Timer = 9000;
m_uiMindControl_Timer = 10000; m_uiMindControl_Timer = 10000;
m_bTransformed = false; m_bTransformed = false;
@@ -118,6 +115,13 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
//START NOT TRANSFORMED //START NOT TRANSFORMED
if (!m_bTransformed) if (!m_bTransformed)
{ {
//MindBlast
if (m_uiMindBlast_Timer < uiDiff)
{
DoCast(m_creature->getVictim(),SPELL_MINDBLAST);
m_uiMindBlast_Timer = 15000 + rand()%5000;
}else m_uiMindBlast_Timer -= uiDiff;
//CrusadersHammer //CrusadersHammer
if (m_uiCrusadersHammer_Timer < uiDiff) if (m_uiCrusadersHammer_Timer < uiDiff)
{ {
@@ -132,13 +136,6 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
m_uiCrusaderStrike_Timer = 15000; m_uiCrusaderStrike_Timer = 15000;
}else m_uiCrusaderStrike_Timer -= uiDiff; }else m_uiCrusaderStrike_Timer -= uiDiff;
//MindBlast
if (m_uiMindBlast_Timer < uiDiff)
{
DoCast(m_creature->getVictim(),SPELL_MINDBLAST);
m_uiMindBlast_Timer = 10000;
}else m_uiMindBlast_Timer -= uiDiff;
//HolyStrike //HolyStrike
if (m_uiHolyStrike_Timer < uiDiff) if (m_uiHolyStrike_Timer < uiDiff)
{ {
@@ -164,7 +161,7 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
if (m_uiMindBlast_Timer < uiDiff) if (m_uiMindBlast_Timer < uiDiff)
{ {
DoCast(m_creature->getVictim(),SPELL_MINDBLAST); DoCast(m_creature->getVictim(),SPELL_MINDBLAST);
m_uiMindBlast_Timer = 10000; m_uiMindBlast_Timer = 15000 + rand()%5000;
}else m_uiMindBlast_Timer -= uiDiff; }else m_uiMindBlast_Timer -= uiDiff;
//ShadowShock //ShadowShock
@@ -192,13 +189,6 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
m_uiDeepSleep_Timer = 15000; m_uiDeepSleep_Timer = 15000;
}else m_uiDeepSleep_Timer -= uiDiff; }else m_uiDeepSleep_Timer -= uiDiff;
//ShadowBoltVolley
if (m_uiShadowBoltVolley_Timer < uiDiff)
{
DoCast(m_creature->getVictim(),SPELL_SHADOWBOLTVOLLEY);
m_uiShadowBoltVolley_Timer = 13000;
}else m_uiShadowBoltVolley_Timer -= uiDiff;
//MindControl //MindControl
if (m_uiMindControl_Timer < uiDiff) if (m_uiMindControl_Timer < uiDiff)
{ {
@@ -25,43 +25,46 @@ EndScriptData */
#include "def_zulaman.h" #include "def_zulaman.h"
#include "GridNotifiers.h" #include "GridNotifiers.h"
#define SAY_AGGRO -1568000 enum
#define SAY_FIRE_BOMBS -1568001 {
#define SAY_SUMMON_HATCHER -1568002 SAY_AGGRO = -1568000,
#define SAY_ALL_EGGS -1568003 SAY_FIRE_BOMBS = -1568001,
#define SAY_BERSERK -1568004 SAY_SUMMON_HATCHER = -1568002,
#define SAY_SLAY_1 -1568005 SAY_ALL_EGGS = -1568003,
#define SAY_SLAY_2 -1568006 SAY_BERSERK = -1568004,
#define SAY_DEATH -1568007 SAY_SLAY_1 = -1568005,
#define SAY_EVENT_STRANGERS -1568008 SAY_SLAY_2 = -1568006,
#define SAY_EVENT_FRIENDS -1568009 SAY_DEATH = -1568007,
SAY_EVENT_STRANGERS = -1568008,
SAY_EVENT_FRIENDS = -1568009,
// Jan'alai // Jan'alai
// --Spell SPELL_FLAME_BREATH = 43140,
#define SPELL_FLAME_BREATH 43140 SPELL_FIRE_WALL = 43113,
#define SPELL_FIRE_WALL 43113 SPELL_ENRAGE = 44779,
#define SPELL_ENRAGE 44779 SPELL_SUMMON_PLAYERS = 43097,
#define SPELL_SUMMON_PLAYERS 43097 SPELL_TELE_TO_CENTER = 43098, // coord
#define SPELL_TELE_TO_CENTER 43098 // coord SPELL_HATCH_ALL = 43144,
#define SPELL_HATCH_ALL 43144 SPELL_BERSERK = 45078,
#define SPELL_BERSERK 45078
// -- Fire Bob Spells // -- Fire Bob Spells
#define SPELL_FIRE_BOMB_CHANNEL 42621 // last forever SPELL_FIRE_BOMB_CHANNEL = 42621, // last forever
#define SPELL_FIRE_BOMB_THROW 42628 // throw visual SPELL_FIRE_BOMB_THROW = 42628, // throw visual
#define SPELL_FIRE_BOMB_DUMMY 42629 // bomb visual SPELL_FIRE_BOMB_DUMMY = 42629, // bomb visual
#define SPELL_FIRE_BOMB_DAMAGE 42630 SPELL_FIRE_BOMB_DAMAGE = 42630,
// --Summons // --Summons
#define MOB_AMANI_HATCHER 23818 MOB_AMANI_HATCHER = 23818,
#define MOB_HATCHLING 23598 // 42493 MOB_HATCHLING = 23598, // 42493
#define MOB_EGG 23817 MOB_EGG = 23817,
#define MOB_FIRE_BOMB 23920 MOB_FIRE_BOMB = 23920,
// -- Hatcher Spells // -- Hatcher Spells
#define SPELL_HATCH_EGG 43734 // 42471 SPELL_HATCH_EGG = 43734, // 42471
// -- Hatchling Spells // -- Hatchling Spells
#define SPELL_FLAMEBUFFET 43299 SPELL_FLAMEBUFFET = 43299
};
const int area_dx = 44; const int area_dx = 44;
const int area_dy = 51; const int area_dy = 51;
@@ -139,7 +142,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
BombSequenceTimer = 1000; BombSequenceTimer = 1000;
BombCount = 0; BombCount = 0;
HatcherTimer = 10000; HatcherTimer = 10000;
EnrageTimer = 300000; EnrageTimer = MINUTE*5*IN_MILISECONDS;
ResetTimer = 5000; ResetTimer = 5000;
noeggs = false; noeggs = false;