aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp86
1 files changed, 50 insertions, 36 deletions
diff --git a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp
index dd4f0b37f66..978c1522f48 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp
@@ -290,59 +290,59 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI
if(!EventBegun) return;
if(EndEventTimer)
- {
- if(EndEventTimer <= diff)
{
- if(DeathCount > 3)
+ if(EndEventTimer <= diff)
{
- if(pInstance)
+ if(DeathCount > 3)
{
- if(Creature* VoiceTrigger = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE))))
- VoiceTrigger->DealDamage(VoiceTrigger, VoiceTrigger->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
- pInstance->SetData(DATA_ILLIDARICOUNCILEVENT, DONE);
+ if(pInstance)
+ {
+ if(Creature* VoiceTrigger = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE))))
+ VoiceTrigger->DealDamage(VoiceTrigger, VoiceTrigger->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ pInstance->SetData(DATA_ILLIDARICOUNCILEVENT, DONE);
+ }
+ m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ return;
}
- m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
- return;
- }
- Creature* pMember = ((Creature*)Unit::GetUnit(*m_creature, Council[DeathCount]));
- if(pMember && pMember->isAlive())
- pMember->DealDamage(pMember, pMember->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
- ++DeathCount;
- EndEventTimer = 1500;
- }else EndEventTimer -= diff;
- }
+ Creature* pMember = ((Creature*)Unit::GetUnit(*m_creature, Council[DeathCount]));
+ if(pMember && pMember->isAlive())
+ pMember->DealDamage(pMember, pMember->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ ++DeathCount;
+ EndEventTimer = 1500;
+ }else EndEventTimer -= diff;
+ }
if(CheckTimer)
- {
- if(CheckTimer <= diff)
{
- uint8 EvadeCheck = 0;
- for(uint8 i = 0; i < 4; ++i)
+ if(CheckTimer <= diff)
{
- if(Council[i])
+ uint8 EvadeCheck = 0;
+ for(uint8 i = 0; i < 4; ++i)
{
- if(Creature* Member = ((Creature*)Unit::GetUnit((*m_creature), Council[i])))
+ if(Council[i])
{
- // This is the evade/death check.
- if(Member->isAlive() && !Member->SelectHostilTarget())
- ++EvadeCheck; //If all members evade, we reset so that players can properly reset the event
- else if(!Member->isAlive()) // If even one member dies, kill the rest, set instance data, and kill self.
+ if(Creature* Member = ((Creature*)Unit::GetUnit((*m_creature), Council[i])))
{
- EndEventTimer = 1000;
- CheckTimer = 0;
- return;
+ // This is the evade/death check.
+ if(Member->isAlive() && !Member->SelectHostilTarget())
+ ++EvadeCheck; //If all members evade, we reset so that players can properly reset the event
+ else if(!Member->isAlive()) // If even one member dies, kill the rest, set instance data, and kill self.
+ {
+ EndEventTimer = 1000;
+ CheckTimer = 0;
+ return;
+ }
}
}
}
- }
- if(EvadeCheck > 3)
- Reset();
+ if(EvadeCheck > 3)
+ Reset();
- CheckTimer = 2000;
- }else CheckTimer -= diff;
- }
+ CheckTimer = 2000;
+ }else CheckTimer -= diff;
+ }
}
};
@@ -385,6 +385,20 @@ struct TRINITY_DLL_DECL boss_illidari_councilAI : public ScriptedAI
LoadGUIDs();
}
+ void EnterEvadeMode()
+ {
+ for(uint8 i = 0; i < 4; ++i)
+ {
+ if(Unit* pUnit = Unit::GetUnit(*m_creature, Council[i]))
+ if(pUnit != m_creature && pUnit->getVictim())
+ {
+ AttackStart(pUnit->getVictim());
+ return;
+ }
+ }
+ ScriptedAI::EnterEvadeMode();
+ }
+
void DamageTaken(Unit* done_by, uint32 &damage)
{
if(done_by == m_creature)