@@ -32,15 +32,21 @@ void BossAI::AddOnAggroText(uint32 text)
3232 m_onAggroTexts.push_back (text);
3333}
3434
35+ void BossAI::Reset ()
36+ {
37+ CombatAI::Reset ();
38+ m_creature->SetSpellList (m_creature->GetCreatureInfo ()->SpellList );
39+ }
40+
3541void BossAI::JustDied (Unit* killer)
3642{
43+ CombatAI::JustDied (killer);
3744 if (!m_onKilledTexts.empty ())
3845 DoBroadcastText (m_onKilledTexts[urand (0 , m_onKilledTexts.size () - 1 )], m_creature, killer);
3946 if (m_instanceDataType == -1 )
4047 return ;
4148 if (ScriptedInstance* instance = static_cast <ScriptedInstance*>(m_creature->GetInstanceData ()))
4249 instance->SetData (m_instanceDataType, DONE);
43- CombatAI::JustDied (killer);
4450 OpenEntrances ();
4551 OpenExits ();
4652}
@@ -78,4 +84,25 @@ void BossAI::AddEntranceObject(uint32 value)
7884void BossAI::AddExitObject (uint32 value)
7985{
8086 m_exitObjects.push_back (value);
87+ }
88+
89+ void BossAI::EnterEvadeMode ()
90+ {
91+ if (m_instanceDataType == -1 )
92+ return ;
93+ if (ScriptedInstance* instance = static_cast <ScriptedInstance*>(m_creature->GetInstanceData ()))
94+ instance->SetData (m_instanceDataType, FAIL);
95+ OpenEntrances ();
96+ if (m_respawnDelay == -1 )
97+ {
98+ CombatAI::EnterEvadeMode ();
99+ return ;
100+ }
101+ m_creature->SetRespawnDelay (m_respawnDelay, true );
102+ m_creature->ForcedDespawn ();
103+ }
104+
105+ void BossAI::AddRespawnOnEvade (std::chrono::seconds delay)
106+ {
107+ m_respawnDelay = delay.count ();
81108}
0 commit comments