mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-02 23:26:37 +01:00
Naxxramas, Grand Widow Faerlina: script adds. Closes #15
--HG-- branch : trunk
This commit is contained in:
@@ -799,6 +799,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_maghar_captive' WHERE `entry`=1
|
||||
UPDATE `instance_template` SET `script`='instance_naxxramas' WHERE `map`=533;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_anubrekhan' WHERE `entry`=15956;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_faerlina' WHERE `entry`=15953;
|
||||
UPDATE `creature_template` SET `ScriptName`='mob_faerlina_add' WHERE `entry`=16506;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_maexxna' WHERE `entry`=15952;
|
||||
UPDATE `creature_template` SET `ScriptName`='mob_webwrap' WHERE `entry`=16486;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_noth' WHERE `entry`=15954;
|
||||
|
||||
1
sql/updates/6210_world_scripts.sql
Normal file
1
sql/updates/6210_world_scripts.sql
Normal file
@@ -0,0 +1 @@
|
||||
UPDATE `creature_template` SET `ScriptName`='mob_faerlina_add' WHERE `entry`=16506;
|
||||
@@ -62,6 +62,13 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI
|
||||
boss_faerlinaAI(Creature *c) : BossAI(c, BOSS_FAERLINA), greet(false) {}
|
||||
|
||||
bool greet;
|
||||
bool delayFrenzy;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
delayFrenzy = false;
|
||||
_Reset();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
@@ -69,7 +76,7 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI
|
||||
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2,SAY_AGGRO_3,SAY_AGGRO_4), me);
|
||||
events.ScheduleEvent(EVENT_POISON, urand(12000,15000));
|
||||
events.ScheduleEvent(EVENT_FIRE, urand(6000,18000));
|
||||
events.ScheduleEvent(EVENT_FRENZY, urand(60000,80000));
|
||||
events.ScheduleEvent(EVENT_FRENZY, urand(60000,80000),1);
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
@@ -117,9 +124,10 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI
|
||||
return;
|
||||
case EVENT_FRENZY:
|
||||
DoCast(me,HEROIC(SPELL_FRENZY,H_SPELL_FRENZY));
|
||||
delayFrenzy = false;
|
||||
return;
|
||||
case EVENT_AFTERENRAGE:
|
||||
events.ScheduleEvent(EVENT_FRENZY, urand(60000,80000));
|
||||
case EVENT_AFTERENRAGE:
|
||||
events.ScheduleEvent(EVENT_FRENZY, urand(60000,80000));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,8 +136,19 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI
|
||||
|
||||
void SpellHit(Unit* caster, const SpellEntry *spell)
|
||||
{
|
||||
if (caster->GetEntry() == NPC_WORSHIPPER && spell->Id == HEROIC(SPELL_FRENZY,H_SPELL_FRENZY))
|
||||
events.ScheduleEvent(EVENT_FRENZY, urand(60000,80000));
|
||||
if (spell->Id == SPELL_WIDOWS_EMBRACE || spell->Id == H_SPELL_WIDOWS_EMBRACE)
|
||||
{
|
||||
if (m_creature->HasAura(HEROIC(SPELL_FRENZY,H_SPELL_FRENZY)))
|
||||
{
|
||||
if (!delayFrenzy)
|
||||
{
|
||||
events.DelayEvents(30000, 1);
|
||||
delayFrenzy = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
events.ScheduleEvent(EVENT_AFTERENRAGE, 60000);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -138,6 +157,37 @@ CreatureAI* GetAI_boss_faerlina(Creature* pCreature)
|
||||
return new boss_faerlinaAI (pCreature);
|
||||
}
|
||||
|
||||
struct TRINITY_DLL_DECL mob_faerlina_addAI : public ScriptedAI
|
||||
{
|
||||
mob_faerlina_addAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (!HeroicMode)
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_MECHANIC, SPELL_EFFECT_BIND, true);
|
||||
}
|
||||
|
||||
void JustDied(Unit *killer)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature *pFaerlina = pInstance->instance->GetCreature(pInstance->GetData64(DATA_FAERLINA)))
|
||||
DoCast(pFaerlina,HEROIC(SPELL_WIDOWS_EMBRACE,H_SPELL_WIDOWS_EMBRACE));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_faerlina_add(Creature* pCreature)
|
||||
{
|
||||
return new mob_faerlina_addAI (pCreature);
|
||||
}
|
||||
|
||||
void AddSC_boss_faerlina()
|
||||
{
|
||||
Script *newscript;
|
||||
@@ -145,6 +195,11 @@ void AddSC_boss_faerlina()
|
||||
newscript->Name = "boss_faerlina";
|
||||
newscript->GetAI = &GetAI_boss_faerlina;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_faerlina_add";
|
||||
newscript->GetAI = &GetAI_mob_faerlina_add;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -109,12 +109,14 @@ struct TRINITY_DLL_DECL instance_naxxramas : public InstanceData
|
||||
GameObject* pGothikGate, *HorsemenChest;
|
||||
Creature* Sapphiron;
|
||||
uint32 HorsemenNum;
|
||||
uint64 uiFaerlina;
|
||||
|
||||
void OnCreatureCreate(Creature* pCreature, bool add)
|
||||
{
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case 15989: Sapphiron = add ? pCreature : NULL; return;
|
||||
case 15953: uiFaerlina = pCreature->GetGUID(); return;
|
||||
}
|
||||
|
||||
AddMinion(pCreature, add);
|
||||
@@ -157,6 +159,13 @@ struct TRINITY_DLL_DECL instance_naxxramas : public InstanceData
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 id)
|
||||
{
|
||||
if (id == DATA_FAERLINA)
|
||||
return uiFaerlina;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool SetBossState(uint32 id, EncounterState state)
|
||||
{
|
||||
if (!InstanceData::SetBossState(id, state))
|
||||
|
||||
@@ -44,6 +44,7 @@ enum Data
|
||||
DATA_HEIGAN_ERUPT,
|
||||
DATA_GOTHIK_GATE,
|
||||
DATA_SAPPHIRON_BIRTH,
|
||||
DATA_FAERLINA
|
||||
};
|
||||
|
||||
#define GO_BIRTH 181356
|
||||
|
||||
Reference in New Issue
Block a user