Fix crash in Chromaggus script. Fixes #55

--HG--
branch : trunk
This commit is contained in:
Machiavelli
2009-11-04 18:18:42 +01:00
parent ef420fc98c
commit d12a79807d
@@ -231,29 +231,34 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
{ {
for (std::list<HostilReference*>::iterator i = m_creature->getThreatManager().getThreatList().begin(); i != m_creature->getThreatManager().getThreatList().end(); ++i) for (std::list<HostilReference*>::iterator i = m_creature->getThreatManager().getThreatList().begin(); i != m_creature->getThreatManager().getThreatList().end(); ++i)
{ {
if (Unit* pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid())) Unit* pUnit;
if ((*i)->getSource())
{ {
//Cast affliction pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid());
DoCast(pUnit, RAND(SPELL_BROODAF_BLUE, SPELL_BROODAF_BLACK, if (pUnit)
SPELL_BROODAF_RED, SPELL_BROODAF_BRONZE, SPELL_BROODAF_GREEN), true);
//Chromatic mutation if target is effected by all afflictions
if (pUnit->HasAura(SPELL_BROODAF_BLUE)
&& pUnit->HasAura(SPELL_BROODAF_BLACK)
&& pUnit->HasAura(SPELL_BROODAF_RED)
&& pUnit->HasAura(SPELL_BROODAF_BRONZE)
&& pUnit->HasAura(SPELL_BROODAF_GREEN))
{ {
//pTarget->RemoveAllAuras(); //Cast affliction
//DoCast(pTarget,SPELL_CHROMATIC_MUT_1); DoCast(pUnit, RAND(SPELL_BROODAF_BLUE, SPELL_BROODAF_BLACK,
SPELL_BROODAF_RED, SPELL_BROODAF_BRONZE, SPELL_BROODAF_GREEN), true);
//Chromatic mutation is causing issues //Chromatic mutation if target is effected by all afflictions
//Assuming it is caused by a lack of core support for Charm if (pUnit->HasAura(SPELL_BROODAF_BLUE)
//So instead we instant kill our target && pUnit->HasAura(SPELL_BROODAF_BLACK)
&& pUnit->HasAura(SPELL_BROODAF_RED)
&& pUnit->HasAura(SPELL_BROODAF_BRONZE)
&& pUnit->HasAura(SPELL_BROODAF_GREEN))
{
//pTarget->RemoveAllAuras();
//DoCast(pTarget,SPELL_CHROMATIC_MUT_1);
//WORKAROUND //Chromatic mutation is causing issues
if (pUnit->GetTypeId() == TYPEID_PLAYER) //Assuming it is caused by a lack of core support for Charm
pUnit->CastSpell(pUnit, 5, false); //So instead we instant kill our target
//WORKAROUND
if (pUnit->GetTypeId() == TYPEID_PLAYER)
pUnit->CastSpell(pUnit, 5, false);
}
} }
} }
} }