Naxxramas, Thaddius: Fix RemoveFlag Check, by Gyullo

Clean up

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-10-27 12:19:08 +01:00
parent 6096010c31
commit 32233aeafb
@@ -20,39 +20,60 @@
#include "naxxramas.h" #include "naxxramas.h"
//Stalagg //Stalagg
#define SAY_STAL_AGGRO -1533023 //not used enum StalaggYells
#define SAY_STAL_SLAY -1533024 //not used {
#define SAY_STAL_DEATH -1533025 //not used SAY_STAL_AGGRO = -1533023, //not used
SAY_STAL_SLAY = -1533024, //not used
SAY_STAL_DEATH = -1533025 //not used
};
#define SPELL_POWERSURGE 54529 enum StalagSpells
#define SPELL_POWERSURGE_H 28134 {
SPELL_POWERSURGE = 54529,
H_SPELL_POWERSURGE = 28134
};
//Feugen //Feugen
#define SAY_FEUG_AGGRO -1533026 //not used enum FeugenYells
#define SAY_FEUG_SLAY -1533027 //not used {
#define SAY_FEUG_DEATH -1533028 //not used SAY_FEUG_AGGRO = -1533026, //not used
SAY_FEUG_SLAY = -1533027, //not used
SAY_FEUG_DEATH = -1533028 //not used
};
#define SPELL_STATICFIELD 28135 enum FeugenSpells
#define SPELL_STATICFIELD_H 54528 {
SPELL_STATICFIELD = 28135,
H_SPELL_STATICFIELD = 54528
};
//generic //generic
#define C_TESLA_COIL 16218 //the coils (emotes "Tesla Coil overloads!") #define C_TESLA_COIL 16218 //the coils (emotes "Tesla Coil overloads!")
//Thaddus //Thaddius
#define SAY_GREET -1533029 //not used enum ThaddiusYells
#define SAY_AGGRO RAND(-1533030,-1533031,-1533032) {
#define SAY_SLAY -1533033 SAY_GREET = -1533029, //not used
#define SAY_ELECT -1533034 //not used SAY_AGGRO_1 = -1533030,
#define SAY_DEATH -1533035 SAY_AGGRO_2 = -1533031,
#define SAY_SCREAM1 -1533036 //not used SAY_AGGRO_3 = -1533032,
#define SAY_SCREAM2 -1533037 //not used SAY_SLAY = -1533033,
#define SAY_SCREAM3 -1533038 //not used SAY_ELECT = -1533034, //not used
#define SAY_SCREAM4 -1533039 //not used SAY_DEATH = -1533035,
SAY_SCREAM1 = -1533036, //not used
SAY_SCREAM2 = -1533037, //not used
SAY_SCREAM3 = -1533038, //not used
SAY_SCREAM4 = -1533039 //not used
};
#define SPELL_POLARITY_SHIFT 28089 enum ThaddiusSpells
#define SPELL_BALL_LIGHTNING 28299 {
#define SPELL_CHAIN_LIGHTNING HEROIC(28167,54531) SPELL_POLARITY_SHIFT = 28089,
#define SPELL_BERSERK 27680 SPELL_BALL_LIGHTNING = 28299,
SPELL_CHAIN_LIGHTNING = 28167,
H_SPELL_CHAIN_LIGHTNING = 54531,
SPELL_BERSERK = 27680
};
enum Events enum Events
{ {
@@ -86,20 +107,20 @@ struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
{ {
_EnterCombat(); _EnterCombat();
DoScriptText(SAY_AGGRO, me); DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2,SAY_AGGRO_3), me);
events.ScheduleEvent(EVENT_SHIFT, 30000); events.ScheduleEvent(EVENT_SHIFT, 30000);
events.ScheduleEvent(EVENT_CHAIN, 10000+rand()%10000); events.ScheduleEvent(EVENT_CHAIN, urand(10000,20000));
events.ScheduleEvent(EVENT_BERSERK, 6*60000); events.ScheduleEvent(EVENT_BERSERK, 360000);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (!UpdateVictim())
return;
if (CheckStalaggAlive == false && CheckFeugenAlive == false) if (CheckStalaggAlive == false && CheckFeugenAlive == false)
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
if (!UpdateVictim())
return;
events.Update(diff); events.Update(diff);
if (me->hasUnitState(UNIT_STAT_CASTING)) if (me->hasUnitState(UNIT_STAT_CASTING))
@@ -114,8 +135,8 @@ struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI
events.ScheduleEvent(EVENT_SHIFT, 30000); events.ScheduleEvent(EVENT_SHIFT, 30000);
return; return;
case EVENT_CHAIN: case EVENT_CHAIN:
DoCast(me->getVictim(), SPELL_CHAIN_LIGHTNING); DoCast(me->getVictim(), HEROIC(SPELL_CHAIN_LIGHTNING,H_SPELL_CHAIN_LIGHTNING));
events.ScheduleEvent(EVENT_CHAIN, 10000+rand()%10000); events.ScheduleEvent(EVENT_CHAIN, urand(10000,20000));
return; return;
case EVENT_BERSERK: case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK); DoCast(me, SPELL_BERSERK);
@@ -130,22 +151,20 @@ struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI
} }
}; };
struct TRINITY_DLL_DECL mob_stalaggAI : public CombatAI CreatureAI* GetAI_boss_thaddius(Creature* pCreature)
{ {
mob_stalaggAI(Creature *c) : CombatAI(c) return new boss_thaddiusAI (pCreature);
{
m_pInstance = (ScriptedInstance*)c->GetInstanceData();
m_bIsHeroicMode = c->GetMap()->IsHeroic();
Reset();
} }
ScriptedInstance* m_pInstance; struct TRINITY_DLL_DECL mob_stalaggAI : public ScriptedAI
bool m_bIsHeroicMode; {
uint32 PowerSurge_Timer; mob_stalaggAI(Creature *c) : ScriptedAI(c) {}
uint32 PowerSurgeTimer;
void reset() void reset()
{ {
PowerSurge_Timer = 20000+rand()%5000; PowerSurgeTimer = urand(20000,25000);
} }
void JustDied(Unit *killer) void JustDied(Unit *killer)
@@ -155,32 +174,30 @@ struct TRINITY_DLL_DECL mob_stalaggAI : public CombatAI
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (PowerSurge_Timer < uiDiff) if (PowerSurgeTimer < uiDiff)
{ {
DoCast(m_creature, m_bIsHeroicMode ? SPELL_POWERSURGE_H : SPELL_POWERSURGE); DoCast(m_creature, HEROIC(SPELL_POWERSURGE,H_SPELL_POWERSURGE));
PowerSurge_Timer = 15000+rand()%5000; PowerSurgeTimer = urand(15000,20000);
}else PowerSurge_Timer -= uiDiff; }else PowerSurgeTimer -= uiDiff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
}; };
struct TRINITY_DLL_DECL mob_feugenAI : public CombatAI CreatureAI* GetAI_mob_stalagg(Creature* pCreature)
{ {
mob_feugenAI(Creature *c) : CombatAI(c) return new mob_stalaggAI(pCreature);
{
m_pInstance = (ScriptedInstance*)c->GetInstanceData();
m_bIsHeroicMode = c->GetMap()->IsHeroic();
Reset();
} }
ScriptedInstance* m_pInstance; struct TRINITY_DLL_DECL mob_feugenAI : public ScriptedAI
bool m_bIsHeroicMode; {
uint32 StaticField_Timer; mob_feugenAI(Creature *c) : ScriptedAI(c) {}
uint32 StaticFieldTimer;
uint32 Checktimer; uint32 Checktimer;
void reset() void reset()
{ {
StaticField_Timer = 5000; StaticFieldTimer = 5000;
} }
void JustDied(Unit *killer) void JustDied(Unit *killer)
@@ -190,25 +207,15 @@ struct TRINITY_DLL_DECL mob_feugenAI : public CombatAI
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (StaticField_Timer < uiDiff) if (StaticFieldTimer < uiDiff)
{ {
DoCast(m_creature, m_bIsHeroicMode ? SPELL_STATICFIELD_H : SPELL_STATICFIELD); DoCast(m_creature, HEROIC(SPELL_STATICFIELD,H_SPELL_STATICFIELD));
StaticField_Timer = 5000; StaticFieldTimer = 5000;
}else StaticField_Timer -= uiDiff; }else StaticFieldTimer -= uiDiff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
}; };
CreatureAI* GetAI_boss_thaddius(Creature* pCreature)
{
return new boss_thaddiusAI (pCreature);
}
CreatureAI* GetAI_mob_stalagg(Creature* pCreature)
{
return new mob_stalaggAI(pCreature);
}
CreatureAI* GetAI_mob_feugen(Creature* pCreature) CreatureAI* GetAI_mob_feugen(Creature* pCreature)
{ {
return new mob_feugenAI(pCreature); return new mob_feugenAI(pCreature);