diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/northrend/naxxramas/boss_thaddius.cpp | 113 |
1 files changed, 103 insertions, 10 deletions
diff --git a/src/bindings/scripts/scripts/northrend/naxxramas/boss_thaddius.cpp b/src/bindings/scripts/scripts/northrend/naxxramas/boss_thaddius.cpp index 7d023c253a3..dc1123d5a2e 100644 --- a/src/bindings/scripts/scripts/northrend/naxxramas/boss_thaddius.cpp +++ b/src/bindings/scripts/scripts/northrend/naxxramas/boss_thaddius.cpp @@ -24,20 +24,19 @@ #define SAY_STAL_SLAY -1533024 //not used #define SAY_STAL_DEATH -1533025 //not used -#define SPELL_POWERSURGE 28134 +#define SPELL_POWERSURGE 54529 +#define SPELL_POWERSURGE_H 28134 //Feugen #define SAY_FEUG_AGGRO -1533026 //not used #define SAY_FEUG_SLAY -1533027 //not used #define SAY_FEUG_DEATH -1533028 //not used -#define SPELL_MANABURN 28135 +#define SPELL_STATICFIELD 28135 +#define SPELL_STATICFIELD_H 54528 -//both -#define SPELL_WARSTOMP 28125 - - //generic -#define C_TESLA_COIL 16218 //the coils (emotes "Tesla Coil overloads!") +//generic +#define C_TESLA_COIL 16218 //the coils (emotes "Tesla Coil overloads!") //Thaddus #define SAY_GREET -1533029 //not used @@ -62,12 +61,14 @@ enum Events EVENT_BERSERK, }; +bool CheckStalaggAlive = true; +bool CheckFeugenAlive = true; + struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI { boss_thaddiusAI(Creature *c) : BossAI(c, BOSS_THADDIUS) { - // temp - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED); } void KilledUnit(Unit* victim) @@ -96,7 +97,10 @@ struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI if (!UpdateVictim()) return; - events.Update(diff); + if (CheckStalaggAlive == false && CheckFeugenAlive == false) + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED); + + events.Update(diff); if (me->hasUnitState(UNIT_STAT_CASTING)) return; @@ -126,11 +130,90 @@ struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI } }; +struct TRINITY_DLL_DECL mob_stalaggAI : public CombatAI +{ + mob_stalaggAI(Creature *c) : CombatAI(c) + { + m_pInstance = (ScriptedInstance*)c->GetInstanceData(); + m_bIsHeroicMode = c->GetMap()->IsHeroic(); + Reset(); + } + + ScriptedInstance* m_pInstance; + bool m_bIsHeroicMode; + uint32 PowerSurge_Timer; + + void reset() + { + PowerSurge_Timer = 20000+rand()%5000; + } + + void JustDied(Unit *killer) + { + CheckStalaggAlive = false; + } + + void UpdateAI(const uint32 uiDiff) + { + if (PowerSurge_Timer < uiDiff) + { + DoCast(m_creature, m_bIsHeroicMode ? SPELL_POWERSURGE_H : SPELL_POWERSURGE); + PowerSurge_Timer = 15000+rand()%5000; + }else PowerSurge_Timer -= uiDiff; + DoMeleeAttackIfReady(); + } +}; + +struct TRINITY_DLL_DECL mob_feugenAI : public CombatAI +{ + mob_feugenAI(Creature *c) : CombatAI(c) + { + m_pInstance = (ScriptedInstance*)c->GetInstanceData(); + m_bIsHeroicMode = c->GetMap()->IsHeroic(); + Reset(); + } + + ScriptedInstance* m_pInstance; + bool m_bIsHeroicMode; + uint32 StaticField_Timer; + uint32 Checktimer; + + void reset() + { + StaticField_Timer = 5000; + } + + void JustDied(Unit *killer) + { + CheckFeugenAlive = false; + } + + void UpdateAI(const uint32 uiDiff) + { + if (StaticField_Timer < uiDiff) + { + DoCast(m_creature, m_bIsHeroicMode ? SPELL_STATICFIELD_H : SPELL_STATICFIELD); + StaticField_Timer = 5000; + }else StaticField_Timer -= uiDiff; + 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) +{ + return new mob_feugenAI(pCreature); +} + void AddSC_boss_thaddius() { Script *newscript; @@ -138,4 +221,14 @@ void AddSC_boss_thaddius() newscript->Name = "boss_thaddius"; newscript->GetAI = &GetAI_boss_thaddius; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "mob_stalagg"; + newscript->GetAI = &GetAI_mob_stalagg; + newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "mob_feugen"; + newscript->GetAI = &GetAI_mob_feugen; + newscript->RegisterSelf(); } |