*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:
@@ -370,6 +370,7 @@ struct TRINITY_DLL_DECL boss_essence_of_sufferingAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
damage = 0;
|
damage = 0;
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
m_creature->SetReactState(REACT_PASSIVE);
|
||||||
m_creature->Yell(SUFF_SAY_RECAP,LANG_UNIVERSAL,0);
|
m_creature->Yell(SUFF_SAY_RECAP,LANG_UNIVERSAL,0);
|
||||||
DoPlaySoundToSet(m_creature, SUFF_SOUND_RECAP);
|
DoPlaySoundToSet(m_creature, SUFF_SOUND_RECAP);
|
||||||
}
|
}
|
||||||
@@ -482,6 +483,7 @@ struct TRINITY_DLL_DECL boss_essence_of_desireAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
damage = 0;
|
damage = 0;
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
m_creature->SetReactState(REACT_PASSIVE);
|
||||||
m_creature->Yell(DESI_SAY_RECAP,LANG_UNIVERSAL,0);
|
m_creature->Yell(DESI_SAY_RECAP,LANG_UNIVERSAL,0);
|
||||||
DoPlaySoundToSet(m_creature, DESI_SOUND_RECAP);
|
DoPlaySoundToSet(m_creature, DESI_SOUND_RECAP);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
|
|||||||
BerserkTimer = 600000;
|
BerserkTimer = 600000;
|
||||||
CheckTimer = 1000;
|
CheckTimer = 1000;
|
||||||
|
|
||||||
DoCast(m_creature, SPELL_DUAL_WIELD, true);
|
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
|
||||||
|
|
||||||
Phase = PHASE_NONE;
|
Phase = PHASE_NONE;
|
||||||
EnterPhase(PHASE_LYNX);
|
EnterPhase(PHASE_LYNX);
|
||||||
@@ -143,17 +143,13 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
|
|||||||
EnterPhase(PHASE_HUMAN);
|
EnterPhase(PHASE_HUMAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AttackStart(Unit *who)
|
|
||||||
{
|
|
||||||
if(Phase != PHASE_MERGE) ScriptedAI::AttackStart(who);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EnterPhase(PhaseHalazzi NextPhase)
|
void EnterPhase(PhaseHalazzi NextPhase)
|
||||||
{
|
{
|
||||||
switch(NextPhase)
|
switch(NextPhase)
|
||||||
{
|
{
|
||||||
case PHASE_LYNX:
|
case PHASE_LYNX:
|
||||||
case PHASE_ENRAGE:
|
case PHASE_ENRAGE:
|
||||||
|
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||||
if(Phase == PHASE_MERGE)
|
if(Phase == PHASE_MERGE)
|
||||||
{
|
{
|
||||||
m_creature->CastSpell(m_creature, SPELL_TRANSFORM_MERGE, true);
|
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->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
Lynx->GetMotionMaster()->Clear();
|
Lynx->GetMotionMaster()->Clear();
|
||||||
Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
|
Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
|
||||||
|
((Creature*)Lynx)->SetReactState(REACT_PASSIVE);
|
||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
|
m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
|
||||||
|
m_creature->SetReactState(REACT_PASSIVE);
|
||||||
TransformCount++;
|
TransformCount++;
|
||||||
}break;
|
}break;
|
||||||
default:
|
default:
|
||||||
@@ -203,7 +201,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
|
|||||||
Phase = NextPhase;
|
Phase = NextPhase;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if(!m_creature->SelectHostilTarget() && !m_creature->getVictim())
|
if(!m_creature->SelectHostilTarget() && !m_creature->getVictim())
|
||||||
return;
|
return;
|
||||||
@@ -281,11 +279,10 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if(CheckTimer < diff)
|
if(CheckTimer < diff)
|
||||||
{
|
{
|
||||||
Unit *Lynx = Unit::GetUnit(*m_creature, LynxGUID);
|
if(Unit *Lynx = Unit::GetUnit(*m_creature, LynxGUID))
|
||||||
if(Lynx)
|
|
||||||
{
|
{
|
||||||
Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
|
//Lynx->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
|
||||||
m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
|
//m_creature->GetMotionMaster()->MoveFollow(Lynx, 0, 0);
|
||||||
if(m_creature->IsWithinDistInMap(Lynx, 6.0f))
|
if(m_creature->IsWithinDistInMap(Lynx, 6.0f))
|
||||||
{
|
{
|
||||||
if(TransformCount < 3)
|
if(TransformCount < 3)
|
||||||
@@ -348,12 +345,6 @@ struct TRINITY_DLL_DECL boss_spiritlynxAI : public ScriptedAI
|
|||||||
damage = 0;
|
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 Aggro(Unit *who) {/*DoZoneInCombat();*/}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
|
|||||||
Reference in New Issue
Block a user