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