Scripts/EasternKingdoms: ScareltMonastery

* Script Standardizations done,
- Removed SD2 Hieroglyphics.
- Removed Hungarian Notations.
- Fixed Enums in Defines.
This commit is contained in:
Bootz
2012-01-26 02:21:15 -06:00
parent 9089ad2d61
commit 2db052b109
12 changed files with 232 additions and 219 deletions

View File

@@ -49,7 +49,7 @@ public:
struct boss_arcanist_doanAI : public ScriptedAI
{
boss_arcanist_doanAI(Creature* c) : ScriptedAI(c) {}
boss_arcanist_doanAI(Creature* creature) : ScriptedAI(creature) {}
uint32 Polymorph_Timer;
uint32 AoESilence_Timer;
@@ -124,7 +124,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_arcanist_doan()

View File

@@ -24,10 +24,12 @@ SDCategory: Scarlet Monastery
EndScriptData */
#include "ScriptPCH.h"
#define SPELL_CALLOFTHEGRAVE 17831
#define SPELL_TERRIFY 7399
#define SPELL_SOULSIPHON 7290
enum Spells
{
SPELL_CALLOFTHEGRAVE = 17831,
SPELL_TERRIFY = 7399,
SPELL_SOULSIPHON = 7290
};
class boss_azshir_the_sleepless : public CreatureScript
{
@@ -41,7 +43,7 @@ public:
struct boss_azshir_the_sleeplessAI : public ScriptedAI
{
boss_azshir_the_sleeplessAI(Creature* c) : ScriptedAI(c) {}
boss_azshir_the_sleeplessAI(Creature* creature) : ScriptedAI(creature) {}
uint32 SoulSiphon_Timer;
uint32 CallOftheGrave_Timer;
@@ -54,9 +56,7 @@ public:
Terrify_Timer = 20000;
}
void EnterCombat(Unit* /*who*/)
{
}
void EnterCombat(Unit* /*who*/) {}
void UpdateAI(const uint32 diff)
{
@@ -93,7 +93,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_azshir_the_sleepless()

View File

@@ -49,7 +49,7 @@ public:
struct boss_bloodmage_thalnosAI : public ScriptedAI
{
boss_bloodmage_thalnosAI(Creature* c) : ScriptedAI(c) {}
boss_bloodmage_thalnosAI(Creature* creature) : ScriptedAI(creature) {}
bool HpYell;
uint32 FlameShock_Timer;
@@ -119,7 +119,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_bloodmage_thalnos()

View File

@@ -28,59 +28,66 @@ EndScriptData */
#include "scarlet_monastery.h"
//this texts are already used by 3975 and 3976
#define SAY_ENTRANCE -1189001
#define SAY_REJOINED -1189002
#define SAY_LOST_HEAD -1189003
#define SAY_CONFLAGRATION -1189004
#define SAY_SPROUTING_PUMPKINS -1189005
#define SAY_PLAYER_DEATH -1189006
#define SAY_DEATH -1189007
enum Says
{
SAY_ENTRANCE = -1189001,
SAY_REJOINED = -1189002,
SAY_LOST_HEAD = -1189003,
SAY_CONFLAGRATION = -1189004,
SAY_SPROUTING_PUMPKINS = -1189005,
SAY_PLAYER_DEATH = -1189006,
SAY_DEATH = -1189007
};
uint32 RandomLaugh[] = {11965, 11975, 11976};
// Entryes
#define HH_MOUNTED 23682
#define HH_UNHORSED 23800
#define HEAD 23775
#define PULSING_PUMPKIN 23694
#define PUMPKIN_FIEND 23545
#define HELPER 23686
#define WISP_INVIS 24034
enum Entry
{
HH_MOUNTED = 23682,
HH_DISMOUNTED = 23800, // unhorsed?? wtf type of engrish was that?
HEAD = 23775,
PULSING_PUMPKIN = 23694,
PUMPKIN_FIEND = 23545,
HELPER = 23686,
WISP_INVIS = 24034
};
//Spells
#define SPELL_CLEAVE 42587
#define SPELL_CONFLAGRATION 42380 //Phase 2, can't find real spell(Dim Fire?)
//#define SPELL_CONFL_SPEED 22587 //8% increase speed, value 22587 from SPELL_CONFLAGRATION mains that spell?
#define SPELL_SUMMON_PUMPKIN 42394
enum Spells
{
SPELL_CLEAVE = 42587,
SPELL_CONFLAGRATION = 42380, //Phase 2, can't find real spell(Dim Fire?)
// SPELL_CONFL_SPEED = 22587, //8% increase speed, value 22587 from SPELL_CONFLAGRATION mains that spell?
SPELL_SUMMON_PUMPKIN = 42394,
#define SPELL_WHIRLWIND 43116
#define SPELL_IMMUNE 42556
#define SPELL_BODY_REGEN 42403
#define SPELL_CONFUSE 43105
SPELL_WHIRLWIND = 43116,
SPELL_IMMUNE = 42556,
SPELL_BODY_REGEN = 42403,
SPELL_CONFUSE = 43105,
#define SPELL_FLYING_HEAD 42399 //visual flying head
#define SPELL_HEAD 42413 //visual buff, "head"
#define SPELL_HEAD_IS_DEAD 42428 //at killing head, Phase 3
SPELL_FLYING_HEAD = 42399, //visual flying head
SPELL_HEAD = 42413, //visual buff, "head"
SPELL_HEAD_IS_DEAD = 42428, //at killing head, Phase 3
#define SPELL_PUMPKIN_AURA 42280
#define SPELL_PUMPKIN_AURA_GREEN 42294
#define SPELL_SQUASH_SOUL 42514
#define SPELL_SPROUTING 42281
#define SPELL_SPROUT_BODY 42285
SPELL_PUMPKIN_AURA = 42280,
SPELL_PUMPKIN_AURA_GREEN = 42294,
SPELL_SQUASH_SOUL = 42514,
SPELL_SPROUTING = 42281,
SPELL_SPROUT_BODY = 42285,
//Effects
#define SPELL_RHYME_BIG 42909
//#define SPELL_RHYME_SMALL 42910
#define SPELL_HEAD_SPEAKS 43129
#define SPELL_HEAD_LANDS 42400
#define SPELL_BODY_FLAME 42074
#define SPELL_HEAD_FLAME 42971
//#define SPELL_ENRAGE_VISUAL 42438 // he uses this spell?
#define SPELL_WISP_BLUE 42821
#define SPELL_WISP_FLIGHT_PORT 42818
//#define SPELL_WISP_INVIS 42823
#define SPELL_SMOKE 42355
#define SPELL_DEATH 42566 //not correct spell
SPELL_RHYME_BIG = 42909,
// SPELL_RHYME_SMALL = 42910,
SPELL_HEAD_SPEAKS = 43129,
SPELL_HEAD_LANDS = 42400,
SPELL_BODY_FLAME = 42074,
SPELL_HEAD_FLAME = 42971,
// SPELL_ENRAGE_VISUAL = 42438, // he uses this spell?
SPELL_WISP_BLUE = 42821,
SPELL_WISP_FLIGHT_PORT = 42818,
// SPELL_WISP_INVIS = 42823,
SPELL_SMOKE = 42355,
SPELL_DEATH = 42566 //not correct spell
};
struct Locations
{
@@ -114,7 +121,7 @@ static Locations FlightPoint[]=
static Locations Spawn[]=
{
{1776.27f, 1348.74f, 19.20f}, //spawn point for pumpkin shrine mob
{1776.27f, 1348.74f, 19.20f}, //spawn point for pumpkin shrine mob
{1765.28f, 1347.46f, 17.55f} //spawn point for smoke
};
@@ -126,7 +133,7 @@ static const char* Text[]=
"Now, know demise!"
};
#define EMOTE_LAUGHS "Headless Horseman laughs"
#define EMOTE_LAUGHS "Headless Horseman laughs" // needs assigned to db.
class mob_wisp_invis : public CreatureScript
{
@@ -140,7 +147,7 @@ public:
struct mob_wisp_invisAI : public ScriptedAI
{
mob_wisp_invisAI(Creature* c) : ScriptedAI(c)
mob_wisp_invisAI(Creature* creature) : ScriptedAI(creature)
{
Creaturetype = delay = spell = spell2 = 0;
}
@@ -149,8 +156,8 @@ public:
uint32 delay;
uint32 spell;
uint32 spell2;
void Reset(){}
void EnterCombat(Unit* /*who*/){}
void Reset() {}
void EnterCombat(Unit* /*who*/) {}
void SetType(uint32 _type)
{
switch (Creaturetype = _type)
@@ -205,7 +212,6 @@ public:
}
}
};
};
class mob_head : public CreatureScript
@@ -220,7 +226,7 @@ public:
struct mob_headAI : public ScriptedAI
{
mob_headAI(Creature* c) : ScriptedAI(c) {}
mob_headAI(Creature* creature) : ScriptedAI(creature) {}
uint64 bodyGUID;
@@ -344,7 +350,6 @@ public:
}
}
};
};
class boss_headless_horseman : public CreatureScript
@@ -359,9 +364,9 @@ public:
struct boss_headless_horsemanAI : public ScriptedAI
{
boss_headless_horsemanAI(Creature* c) : ScriptedAI(c)
boss_headless_horsemanAI(Creature* creature) : ScriptedAI(creature)
{
instance = c->GetInstanceScript();
instance = creature->GetInstanceScript();
}
InstanceScript* instance;
@@ -731,7 +736,6 @@ public:
}
}
};
};
class mob_pulsing_pumpkin : public CreatureScript
@@ -746,7 +750,7 @@ public:
struct mob_pulsing_pumpkinAI : public ScriptedAI
{
mob_pulsing_pumpkinAI(Creature* c) : ScriptedAI(c) {}
mob_pulsing_pumpkinAI(Creature* creature) : ScriptedAI(creature) {}
bool sprouted;
uint64 debuffGUID;
@@ -771,7 +775,7 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
}
void EnterCombat(Unit* /*who*/){}
void EnterCombat(Unit* /*who*/) {}
void SpellHit(Unit* /*caster*/, const SpellInfo* spell)
{
@@ -813,7 +817,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
class go_loosely_turned_soil : public GameObjectScript
@@ -846,7 +849,6 @@ public:
//}
return true;
}
};
void mob_head::mob_headAI::Disappear()

View File

@@ -26,19 +26,31 @@ EndScriptData */
#include "ScriptPCH.h"
#include "ScriptedEscortAI.h"
#define SAY_AGGRO -1189000
#define SAY_WHIRLWIND -1189001
#define SAY_ENRAGE -1189002
#define SAY_KILL -1189003
#define EMOTE_ENRAGE -1189004
enum Says
{
SAY_AGGRO = -1189000,
SAY_WHIRLWIND = -1189001,
SAY_ENRAGE = -1189002,
SAY_KILL = -1189003
};
enum Emotes
{
EMOTE_ENRAGE = -1189004
};
#define SPELL_RUSHINGCHARGE 8260
#define SPELL_CLEAVE 15496
#define SPELL_WHIRLWIND 8989
#define SPELL_FRENZY 8269
enum Spells
{
SPELL_RUSHINGCHARGE = 8260,
SPELL_CLEAVE = 15496,
SPELL_WHIRLWIND = 8989,
SPELL_FRENZY = 8269
};
#define ENTRY_SCARLET_TRAINEE 6575
#define ENTRY_SCARLET_MYRMIDON 4295
enum Entry
{
ENTRY_SCARLET_TRAINEE = 6575,
ENTRY_SCARLET_MYRMIDON = 4295
};
class boss_herod : public CreatureScript
{
@@ -52,7 +64,7 @@ public:
struct boss_herodAI : public ScriptedAI
{
boss_herodAI(Creature* c) : ScriptedAI(c) {}
boss_herodAI(Creature* creature) : ScriptedAI(creature) {}
bool Enrage;
@@ -115,7 +127,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
class mob_scarlet_trainee : public CreatureScript
@@ -130,7 +141,7 @@ public:
struct mob_scarlet_traineeAI : public npc_escortAI
{
mob_scarlet_traineeAI(Creature* c) : npc_escortAI(c)
mob_scarlet_traineeAI(Creature* creature) : npc_escortAI(creature)
{
Start_Timer = urand(1000, 6000);
}
@@ -138,7 +149,7 @@ public:
uint32 Start_Timer;
void Reset() {}
void WaypointReached(uint32 /*uiPoint*/) {}
void WaypointReached(uint32 /*point*/) {}
void EnterCombat(Unit* /*who*/) {}
void UpdateAI(const uint32 diff)
@@ -155,7 +166,6 @@ public:
npc_escortAI::UpdateAI(diff);
}
};
};
void AddSC_boss_herod()

View File

@@ -47,7 +47,7 @@ public:
struct boss_high_inquisitor_fairbanksAI : public ScriptedAI
{
boss_high_inquisitor_fairbanksAI(Creature* c) : ScriptedAI(c) {}
boss_high_inquisitor_fairbanksAI(Creature* creature) : ScriptedAI(creature) {}
uint32 CurseOfBlood_Timer;
uint32 DispelMagic_Timer;
@@ -68,9 +68,7 @@ public:
PowerWordShield = false;
}
void EnterCombat(Unit* /*who*/)
{
}
void EnterCombat(Unit* /*who*/) {}
void UpdateAI(const uint32 diff)
{
@@ -128,7 +126,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_high_inquisitor_fairbanks()

View File

@@ -44,7 +44,7 @@ public:
struct boss_houndmaster_lokseyAI : public ScriptedAI
{
boss_houndmaster_lokseyAI(Creature* c) : ScriptedAI(c) {}
boss_houndmaster_lokseyAI(Creature* creature) : ScriptedAI(creature) {}
uint32 BloodLust_Timer;
@@ -72,7 +72,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_houndmaster_loksey()

View File

@@ -26,15 +26,18 @@ EndScriptData */
#include "ScriptPCH.h"
#include "scarlet_monastery.h"
enum eEnums
enum Says
{
SAY_AGGRO = -1189011,
SAY_HEALTH1 = -1189012,
SAY_HEALTH2 = -1189013,
SAY_KILL = -1189014,
SAY_TRIGGER_VORREL = -1189015,
SAY_TRIGGER_VORREL = -1189015
};
SPELL_SHADOWWORDPAIN = 2767,
enum Spells
{
SPELL_SHADOWWORDPAIN = 2767
};
class boss_interrogator_vishas : public CreatureScript
@@ -49,7 +52,7 @@ public:
struct boss_interrogator_vishasAI : public ScriptedAI
{
boss_interrogator_vishasAI(Creature* c) : ScriptedAI(c)
boss_interrogator_vishasAI(Creature* creature) : ScriptedAI(creature)
{
instance = me->GetInstanceScript();
}
@@ -113,7 +116,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_interrogator_vishas()

View File

@@ -26,7 +26,7 @@ EndScriptData */
#include "ScriptPCH.h"
#include "scarlet_monastery.h"
enum eEnums
enum Says
{
//Mograine says
SAY_MO_AGGRO = -1189005,
@@ -37,7 +37,10 @@ enum eEnums
SAY_WH_INTRO = -1189008,
SAY_WH_KILL = -1189009,
SAY_WH_RESSURECT = -1189010,
};
enum Spells
{
//Mograine Spells
SPELL_CRUSADERSTRIKE = 14518,
SPELL_HAMMEROFJUSTICE = 5589,
@@ -67,43 +70,43 @@ public:
{
boss_scarlet_commander_mograineAI(Creature* creature) : ScriptedAI(creature)
{
m_instance = creature->GetInstanceScript();
instance = creature->GetInstanceScript();
}
InstanceScript* m_instance;
InstanceScript* instance;
uint32 m_uiCrusaderStrike_Timer;
uint32 m_uiHammerOfJustice_Timer;
uint32 CrusaderStrike_Timer;
uint32 HammerOfJustice_Timer;
bool m_bHasDied;
bool m_bHeal;
bool m_bFakeDeath;
bool _bHasDied;
bool _bHeal;
bool _bFakeDeath;
void Reset()
{
m_uiCrusaderStrike_Timer = 10000;
m_uiHammerOfJustice_Timer = 10000;
CrusaderStrike_Timer = 10000;
HammerOfJustice_Timer = 10000;
//Incase wipe during phase that mograine fake death
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetStandState(UNIT_STAND_STATE_STAND);
if (m_instance)
if (instance)
if (me->isAlive())
m_instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
m_bHasDied = false;
m_bHeal = false;
m_bFakeDeath = false;
_bHasDied = false;
_bHeal = false;
_bFakeDeath = false;
}
void JustReachedHome()
{
if (m_instance)
if (instance)
{
if (m_instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) != NOT_STARTED)
m_instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, FAIL);
if (instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) != NOT_STARTED)
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, FAIL);
}
}
@@ -120,18 +123,18 @@ public:
DoScriptText(SAY_MO_KILL, me);
}
void DamageTaken(Unit* /*pDoneBy*/, uint32 &uiDamage)
void DamageTaken(Unit* /*doneBy*/, uint32 &damage)
{
if (uiDamage < me->GetHealth() || m_bHasDied || m_bFakeDeath)
if (damage < me->GetHealth() || _bHasDied || _bFakeDeath)
return;
if (!m_instance)
if (!instance)
return;
//On first death, fake death and open door, as well as initiate whitemane if exist
if (Unit* Whitemane = Unit::GetUnit((*me), m_instance->GetData64(DATA_WHITEMANE)))
if (Unit* Whitemane = Unit::GetUnit((*me), instance->GetData64(DATA_WHITEMANE)))
{
m_instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, IN_PROGRESS);
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, IN_PROGRESS);
Whitemane->GetMotionMaster()->MovePoint(1, 1163.113370f, 1398.856812f, 32.527786f);
@@ -150,72 +153,71 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetStandState(UNIT_STAND_STATE_DEAD);
m_bHasDied = true;
m_bFakeDeath = true;
_bHasDied = true;
_bFakeDeath = true;
uiDamage = 0;
damage = 0;
}
}
void SpellHit(Unit* /*who*/, const SpellInfo* pSpell)
void SpellHit(Unit* /*who*/, const SpellInfo* spell)
{
//When hit with ressurection say text
if (pSpell->Id == SPELL_SCARLETRESURRECTION)
if (spell->Id == SPELL_SCARLETRESURRECTION)
{
DoScriptText(SAY_MO_RESSURECTED, me);
m_bFakeDeath = false;
_bFakeDeath = false;
if (m_instance)
m_instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, SPECIAL);
if (instance)
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, SPECIAL);
}
}
void UpdateAI(const uint32 uiDiff)
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (m_bHasDied && !m_bHeal && m_instance && m_instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == SPECIAL)
if (_bHasDied && !_bHeal && instance && instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == SPECIAL)
{
//On ressurection, stop fake death and heal whitemane and resume fight
if (Unit* Whitemane = Unit::GetUnit((*me), m_instance->GetData64(DATA_WHITEMANE)))
if (Unit* Whitemane = Unit::GetUnit((*me), instance->GetData64(DATA_WHITEMANE)))
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetStandState(UNIT_STAND_STATE_STAND);
DoCast(Whitemane, SPELL_LAYONHANDS);
m_uiCrusaderStrike_Timer = 10000;
m_uiHammerOfJustice_Timer = 10000;
CrusaderStrike_Timer = 10000;
HammerOfJustice_Timer = 10000;
if (me->getVictim())
me->GetMotionMaster()->MoveChase(me->getVictim());
m_bHeal = true;
_bHeal = true;
}
}
//This if-check to make sure mograine does not attack while fake death
if (m_bFakeDeath)
if (_bFakeDeath)
return;
//m_uiCrusaderStrike_Timer
if (m_uiCrusaderStrike_Timer <= uiDiff)
//CrusaderStrike_Timer
if (CrusaderStrike_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_CRUSADERSTRIKE);
m_uiCrusaderStrike_Timer = 10000;
} else m_uiCrusaderStrike_Timer -= uiDiff;
CrusaderStrike_Timer = 10000;
} else CrusaderStrike_Timer -= diff;
//m_uiHammerOfJustice_Timer
if (m_uiHammerOfJustice_Timer <= uiDiff)
//HammerOfJustice_Timer
if (HammerOfJustice_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_HAMMEROFJUSTICE);
m_uiHammerOfJustice_Timer = 60000;
} else m_uiHammerOfJustice_Timer -= uiDiff;
HammerOfJustice_Timer = 60000;
} else HammerOfJustice_Timer -= diff;
DoMeleeAttackIfReady();
}
};
};
class boss_high_inquisitor_whitemane : public CreatureScript
@@ -232,37 +234,37 @@ public:
{
boss_high_inquisitor_whitemaneAI(Creature* creature) : ScriptedAI(creature)
{
m_instance = creature->GetInstanceScript();
instance = creature->GetInstanceScript();
}
InstanceScript* m_instance;
InstanceScript* instance;
uint32 m_uiHeal_Timer;
uint32 m_uiPowerWordShield_Timer;
uint32 m_uiHolySmite_Timer;
uint32 m_uiWait_Timer;
uint32 Heal_Timer;
uint32 PowerWordShield_Timer;
uint32 HolySmite_Timer;
uint32 Wait_Timer;
bool m_bCanResurrectCheck;
bool m_bCanResurrect;
bool _bCanResurrectCheck;
bool _bCanResurrect;
void Reset()
{
m_uiWait_Timer = 7000;
m_uiHeal_Timer = 10000;
m_uiPowerWordShield_Timer = 15000;
m_uiHolySmite_Timer = 6000;
Wait_Timer = 7000;
Heal_Timer = 10000;
PowerWordShield_Timer = 15000;
HolySmite_Timer = 6000;
m_bCanResurrectCheck = false;
m_bCanResurrect = false;
_bCanResurrectCheck = false;
_bCanResurrect = false;
if (m_instance)
if (instance)
if (me->isAlive())
m_instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
}
void AttackStart(Unit* who)
{
if (m_instance && m_instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == NOT_STARTED)
if (instance && instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == NOT_STARTED)
return;
ScriptedAI::AttackStart(who);
@@ -278,84 +280,83 @@ public:
DoScriptText(SAY_WH_KILL, me);
}
void UpdateAI(const uint32 uiDiff)
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (m_bCanResurrect)
if (_bCanResurrect)
{
//When casting resuruction make sure to delay so on rez when reinstate battle deepsleep runs out
if (m_instance && m_uiWait_Timer <= uiDiff)
if (instance && Wait_Timer <= diff)
{
if (Unit* Mograine = Unit::GetUnit((*me), m_instance->GetData64(DATA_MOGRAINE)))
if (Unit* Mograine = Unit::GetUnit((*me), instance->GetData64(DATA_MOGRAINE)))
{
DoCast(Mograine, SPELL_SCARLETRESURRECTION);
DoScriptText(SAY_WH_RESSURECT, me);
m_bCanResurrect = false;
_bCanResurrect = false;
}
}
else m_uiWait_Timer -= uiDiff;
else Wait_Timer -= diff;
}
//Cast Deep sleep when health is less than 50%
if (!m_bCanResurrectCheck && !HealthAbovePct(50))
if (!_bCanResurrectCheck && !HealthAbovePct(50))
{
if (me->IsNonMeleeSpellCasted(false))
me->InterruptNonMeleeSpells(false);
DoCast(me->getVictim(), SPELL_DEEPSLEEP);
m_bCanResurrectCheck = true;
m_bCanResurrect = true;
_bCanResurrectCheck = true;
_bCanResurrect = true;
return;
}
//while in "resurrect-mode", don't do anything
if (m_bCanResurrect)
if (_bCanResurrect)
return;
//If we are <75% hp cast healing spells at self or Mograine
if (m_uiHeal_Timer <= uiDiff)
if (Heal_Timer <= diff)
{
Creature* target = NULL;
if (!HealthAbovePct(75))
target = me;
if (m_instance)
if (instance)
{
if (Creature* pMograine = Unit::GetCreature((*me), m_instance->GetData64(DATA_MOGRAINE)))
if (Creature* mograine = Unit::GetCreature((*me), instance->GetData64(DATA_MOGRAINE)))
{
// checking m_bCanResurrectCheck prevents her healing Mograine while he is "faking death"
if (m_bCanResurrectCheck && pMograine->isAlive() && !pMograine->HealthAbovePct(75))
target = pMograine;
// checking _bCanResurrectCheck prevents her healing Mograine while he is "faking death"
if (_bCanResurrectCheck && mograine->isAlive() && !mograine->HealthAbovePct(75))
target = mograine;
}
}
if (target)
DoCast(target, SPELL_HEAL);
m_uiHeal_Timer = 13000;
} else m_uiHeal_Timer -= uiDiff;
Heal_Timer = 13000;
} else Heal_Timer -= diff;
//m_uiPowerWordShield_Timer
if (m_uiPowerWordShield_Timer <= uiDiff)
//PowerWordShield_Timer
if (PowerWordShield_Timer <= diff)
{
DoCast(me, SPELL_POWERWORDSHIELD);
m_uiPowerWordShield_Timer = 15000;
} else m_uiPowerWordShield_Timer -= uiDiff;
PowerWordShield_Timer = 15000;
} else PowerWordShield_Timer -= diff;
//m_uiHolySmite_Timer
if (m_uiHolySmite_Timer <= uiDiff)
//HolySmite_Timer
if (HolySmite_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_HOLYSMITE);
m_uiHolySmite_Timer = 6000;
} else m_uiHolySmite_Timer -= uiDiff;
HolySmite_Timer = 6000;
} else HolySmite_Timer -= diff;
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_mograine_and_whitemane()

View File

@@ -25,10 +25,13 @@ EndScriptData */
#include "ScriptPCH.h"
#define SPELL_LICHSLAP 28873
#define SPELL_FROSTBOLTVOLLEY 8398
#define SPELL_MINDFLAY 17313
#define SPELL_FROSTNOVA 15531
enum Spells
{
SPELL_LICHSLAP = 28873,
SPELL_FROSTBOLTVOLLEY = 8398,
SPELL_MINDFLAY = 17313,
SPELL_FROSTNOVA = 15531
};
class boss_scorn : public CreatureScript
{
@@ -42,7 +45,7 @@ public:
struct boss_scornAI : public ScriptedAI
{
boss_scornAI(Creature* c) : ScriptedAI(c) {}
boss_scornAI(Creature* creature) : ScriptedAI(creature) {}
uint32 LichSlap_Timer;
uint32 FrostboltVolley_Timer;
@@ -57,9 +60,7 @@ public:
FrostNova_Timer = 30000;
}
void EnterCombat(Unit* /*who*/)
{
}
void EnterCombat(Unit* /*who*/) {}
void UpdateAI(const uint32 diff)
{
@@ -97,7 +98,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_boss_scorn()

View File

@@ -26,10 +26,13 @@ EndScriptData */
#include "ScriptPCH.h"
#include "scarlet_monastery.h"
#define ENTRY_PUMPKIN_SHRINE 186267
#define ENTRY_HORSEMAN 23682
#define ENTRY_HEAD 23775
#define ENTRY_PUMPKIN 23694
enum Entry
{
ENTRY_PUMPKIN_SHRINE = 186267,
ENTRY_HORSEMAN = 23682,
ENTRY_HEAD = 23775,
ENTRY_PUMPKIN = 23694
};
#define MAX_ENCOUNTER 2
@@ -57,11 +60,11 @@ public:
uint64 VorrelGUID;
uint64 DoorHighInquisitorGUID;
uint32 m_auiEncounter[MAX_ENCOUNTER];
uint32 encounter[MAX_ENCOUNTER];
void Initialize()
{
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
memset(&encounter, 0, sizeof(encounter));
PumpkinShrineGUID = 0;
HorsemanGUID = 0;
@@ -106,13 +109,13 @@ public:
if (data == FAIL)
DoUseDoorOrButton(DoorHighInquisitorGUID);
m_auiEncounter[0] = data;
encounter[0] = data;
break;
case GAMEOBJECT_PUMPKIN_SHRINE:
HandleGameObject(PumpkinShrineGUID, false);
break;
case DATA_HORSEMAN_EVENT:
m_auiEncounter[1] = data;
encounter[1] = data;
if (data == DONE)
{
for (std::set<uint64>::const_iterator itr = HorsemanAdds.begin(); itr != HorsemanAdds.end(); ++itr)
@@ -146,13 +149,12 @@ public:
uint32 GetData(uint32 type)
{
if (type == TYPE_MOGRAINE_AND_WHITE_EVENT)
return m_auiEncounter[0];
return encounter[0];
if (type == DATA_HORSEMAN_EVENT)
return m_auiEncounter[1];
return encounter[1];
return 0;
}
};
};
void AddSC_instance_scarlet_monastery()

View File

@@ -19,14 +19,17 @@
#ifndef DEF_SCARLET_M
#define DEF_SCARLET_M
#define TYPE_MOGRAINE_AND_WHITE_EVENT 1
#define DATA_MOGRAINE 2
#define DATA_WHITEMANE 3
#define DATA_DOOR_WHITEMANE 4
enum eEnums
{
TYPE_MOGRAINE_AND_WHITE_EVENT = 1,
#define DATA_HORSEMAN_EVENT 5
#define GAMEOBJECT_PUMPKIN_SHRINE 6
DATA_MOGRAINE = 2,
DATA_WHITEMANE = 3,
DATA_DOOR_WHITEMANE = 4,
#define DATA_VORREL 7
DATA_HORSEMAN_EVENT = 5,
GAMEOBJECT_PUMPKIN_SHRINE = 6,
DATA_VORREL = 7
};
#endif