*Use SetReactState(REACT_PASSIVE) to force creatures such as halazzi and reliquary of souls to stop combat and merge.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-08 18:04:53 -06:00
parent 26259a5fa4
commit 8e4928a21a
2 changed files with 10 additions and 17 deletions
@@ -370,6 +370,7 @@ struct TRINITY_DLL_DECL boss_essence_of_sufferingAI : public ScriptedAI
{
damage = 0;
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->SetReactState(REACT_PASSIVE);
m_creature->Yell(SUFF_SAY_RECAP,LANG_UNIVERSAL,0);
DoPlaySoundToSet(m_creature, SUFF_SOUND_RECAP);
}
@@ -482,6 +483,7 @@ struct TRINITY_DLL_DECL boss_essence_of_desireAI : public ScriptedAI
{
damage = 0;
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->SetReactState(REACT_PASSIVE);
m_creature->Yell(DESI_SAY_RECAP,LANG_UNIVERSAL,0);
DoPlaySoundToSet(m_creature, DESI_SOUND_RECAP);
}
@@ -107,7 +107,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
BerserkTimer = 600000;
CheckTimer = 1000;
DoCast(m_creature, SPELL_DUAL_WIELD, true);
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
Phase = PHASE_NONE;
EnterPhase(PHASE_LYNX);
@@ -143,17 +143,13 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
EnterPhase(PHASE_HUMAN);
}
void AttackStart(Unit *who)
{
if(Phase != PHASE_MERGE) ScriptedAI::AttackStart(who);
}
void EnterPhase(PhaseHalazzi NextPhase)
{
switch(NextPhase)
{
case PHASE_LYNX:
case PHASE_ENRAGE:
m_creature->SetReactState(REACT_AGGRESSIVE);
if(Phase == PHASE_MERGE)
{
m_creature->CastSpell(m_creature, SPELL_TRANSFORM_MERGE, true);
@@ -193,8 +189,10 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
Lynx->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
Lynx->GetMotionMaster()->Clear();
Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
((Creature*)Lynx)->SetReactState(REACT_PASSIVE);
m_creature->GetMotionMaster()->Clear();
m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
m_creature->SetReactState(REACT_PASSIVE);
TransformCount++;
}break;
default:
@@ -203,7 +201,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
Phase = NextPhase;
}
void UpdateAI(const uint32 diff)
void UpdateAI(const uint32 diff)
{
if(!m_creature->SelectHostilTarget() && !m_creature->getVictim())
return;
@@ -281,11 +279,10 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
{
if(CheckTimer < diff)
{
Unit *Lynx = Unit::GetUnit(*m_creature, LynxGUID);
if(Lynx)
if(Unit *Lynx = Unit::GetUnit(*m_creature, LynxGUID))
{
Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
//Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
//m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
if(m_creature->IsWithinDistInMap(Lynx, 6.0f))
{
if(TransformCount < 3)
@@ -348,12 +345,6 @@ struct TRINITY_DLL_DECL boss_spiritlynxAI : public ScriptedAI
damage = 0;
}
void AttackStart(Unit *who)
{
if(!m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
ScriptedAI::AttackStart(who);
}
void Aggro(Unit *who) {/*DoZoneInCombat();*/}
void UpdateAI(const uint32 diff)