*Some Anub'arak cleanup and fixes. Thanks trazom, closes #356
--HG-- branch : trunk
This commit is contained in:
@@ -29,7 +29,6 @@ EndScriptData */
|
|||||||
|
|
||||||
enum Spells
|
enum Spells
|
||||||
{
|
{
|
||||||
|
|
||||||
SPELL_CARRION_BEETLES = 53520,
|
SPELL_CARRION_BEETLES = 53520,
|
||||||
SPELL_SUMMON_CARRION_BEETLES = 53521,
|
SPELL_SUMMON_CARRION_BEETLES = 53521,
|
||||||
SPELL_LEECHING_SWARM = 53467,
|
SPELL_LEECHING_SWARM = 53467,
|
||||||
@@ -41,11 +40,13 @@ enum Spells
|
|||||||
H_SPELL_POUND = 59433,
|
H_SPELL_POUND = 59433,
|
||||||
|
|
||||||
SPELL_SUBMERGE = 53421,
|
SPELL_SUBMERGE = 53421,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Creatures
|
||||||
|
{
|
||||||
CREATURE_GUARDIAN = 29216,
|
CREATURE_GUARDIAN = 29216,
|
||||||
CREATURE_VENOMANCER = 29217,
|
CREATURE_VENOMANCER = 29217,
|
||||||
CREATURE_DATTER = 29213
|
CREATURE_DATTER = 29213
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// not in db
|
// not in db
|
||||||
@@ -78,7 +79,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
pInstance = c->GetInstanceData();
|
pInstance = c->GetInstanceData();
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance* pInstance;
|
ScriptedInstance *pInstance;
|
||||||
|
|
||||||
bool Channeling;
|
bool Channeling;
|
||||||
bool HeroicMode;
|
bool HeroicMode;
|
||||||
@@ -109,7 +110,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
Phase_Time = 0;
|
Phase_Time = 0;
|
||||||
Channeling = false;
|
Channeling = false;
|
||||||
|
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->RemoveAura(SPELL_SUBMERGE);
|
m_creature->RemoveAura(SPELL_SUBMERGE);
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
@@ -117,7 +118,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EnterCombat(Unit* who)
|
void EnterCombat(Unit *pWho)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_AGGRO, m_creature);
|
DoScriptText(SAY_AGGRO, m_creature);
|
||||||
|
|
||||||
@@ -134,30 +135,26 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
|
|
||||||
if (Channeling == true)
|
if (Channeling == true)
|
||||||
{
|
{
|
||||||
for(int ind = 0 ; ind < 4; ind++) DoCast(m_creature->getVictim(), SPELL_SUMMON_CARRION_BEETLES, true);
|
for (uint8 i = 0; i < 4; ++i)
|
||||||
|
DoCast(m_creature->getVictim(), SPELL_SUMMON_CARRION_BEETLES, true);
|
||||||
Channeling = false;
|
Channeling = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Phase == 1)
|
if (Phase == 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (SPELL_IMPALE_Timer <= diff)
|
if (SPELL_IMPALE_Timer <= diff)
|
||||||
{
|
{
|
||||||
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
|
||||||
m_creature->CastSpell(pTarget, HEROIC(SPELL_IMPALE,H_SPELL_IMPALE), true);
|
m_creature->CastSpell(pTarget, HEROIC(SPELL_IMPALE,H_SPELL_IMPALE), true);
|
||||||
|
|
||||||
SPELL_IMPALE_Timer = 9000;
|
SPELL_IMPALE_Timer = 9000;
|
||||||
} else SPELL_IMPALE_Timer -= diff;
|
} else SPELL_IMPALE_Timer -= diff;
|
||||||
|
|
||||||
if(!Summoned_Guardian)
|
if (!Summoned_Guardian)
|
||||||
{
|
{
|
||||||
Creature* Guardian;
|
for (uint8 i = 0; i < 2; ++i)
|
||||||
for(uint8 i=0; i < 2; ++i)
|
|
||||||
{
|
{
|
||||||
Guardian = m_creature->SummonCreature(CREATURE_GUARDIAN,SpawnPoint[i][0],SpawnPoint[i][1],SPAWNPOINT_Z,0,TEMPSUMMON_CORPSE_DESPAWN,0);
|
if (Creature *Guardian = m_creature->SummonCreature(CREATURE_GUARDIAN,SpawnPoint[i][0],SpawnPoint[i][1],SPAWNPOINT_Z,0,TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||||
if(Guardian)
|
|
||||||
{
|
{
|
||||||
Guardian->AddThreat(m_creature->getVictim(), 0.0f);
|
Guardian->AddThreat(m_creature->getVictim(), 0.0f);
|
||||||
DoZoneInCombat(Guardian);
|
DoZoneInCombat(Guardian);
|
||||||
@@ -170,14 +167,11 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (VENOMANCER_Timer <= diff)
|
if (VENOMANCER_Timer <= diff)
|
||||||
{
|
{
|
||||||
if(Phase_Time > 1)
|
if (Phase_Time > 1)
|
||||||
{
|
{
|
||||||
|
for (uint8 i = 0; i < 2; ++i)
|
||||||
Creature* Venomancer;
|
|
||||||
for(uint8 i=0; i < 2; ++i)
|
|
||||||
{
|
{
|
||||||
Venomancer = m_creature->SummonCreature(CREATURE_VENOMANCER,SpawnPoint[i][0],SpawnPoint[i][1],SPAWNPOINT_Z,0,TEMPSUMMON_CORPSE_DESPAWN,0);
|
if (Creature *Venomancer = m_creature->SummonCreature(CREATURE_VENOMANCER,SpawnPoint[i][0],SpawnPoint[i][1],SPAWNPOINT_Z,0,TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||||
if(Venomancer)
|
|
||||||
{
|
{
|
||||||
Venomancer->AddThreat(m_creature->getVictim(), 0.0f);
|
Venomancer->AddThreat(m_creature->getVictim(), 0.0f);
|
||||||
DoZoneInCombat(Venomancer);
|
DoZoneInCombat(Venomancer);
|
||||||
@@ -185,7 +179,6 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
Summoned_Venomancer = true;
|
Summoned_Venomancer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else VENOMANCER_Timer -= diff;
|
} else VENOMANCER_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,13 +186,11 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (DATTER_Timer <= diff)
|
if (DATTER_Timer <= diff)
|
||||||
{
|
{
|
||||||
if(Phase_Time > 2)
|
if (Phase_Time > 2)
|
||||||
{
|
{
|
||||||
Creature* Datter;
|
for (uint8 i = 0; i < 2; ++i)
|
||||||
for(uint8 i=0; i < 2; ++i)
|
|
||||||
{
|
{
|
||||||
Datter = m_creature->SummonCreature(CREATURE_DATTER,SpawnPoint[i][0],SpawnPoint[i][1],SPAWNPOINT_Z,0,TEMPSUMMON_CORPSE_DESPAWN,0);
|
if (Creature *Datter = m_creature->SummonCreature(CREATURE_DATTER,SpawnPoint[i][0],SpawnPoint[i][1],SPAWNPOINT_Z,0,TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||||
if(Datter)
|
|
||||||
{
|
{
|
||||||
Datter->AddThreat(m_creature->getVictim(), 0.0f);
|
Datter->AddThreat(m_creature->getVictim(), 0.0f);
|
||||||
DoZoneInCombat(Datter);
|
DoZoneInCombat(Datter);
|
||||||
@@ -213,13 +204,9 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
if (UNDERGROUND_Timer <= diff)
|
if (UNDERGROUND_Timer <= diff)
|
||||||
{
|
{
|
||||||
m_creature->RemoveAura(SPELL_SUBMERGE);
|
m_creature->RemoveAura(SPELL_SUBMERGE);
|
||||||
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
|
|
||||||
Phase = 0;
|
Phase = 0;
|
||||||
} else UNDERGROUND_Timer -= diff;
|
} else UNDERGROUND_Timer -= diff;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Phase == 0)
|
if (Phase == 0)
|
||||||
@@ -227,29 +214,26 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
if (SPELL_LEECHING_SWARM_Timer <= diff)
|
if (SPELL_LEECHING_SWARM_Timer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_LEECHING_SWARM, true);
|
DoCast(m_creature, SPELL_LEECHING_SWARM, true);
|
||||||
|
|
||||||
SPELL_LEECHING_SWARM_Timer = 19000;
|
SPELL_LEECHING_SWARM_Timer = 19000;
|
||||||
} else SPELL_LEECHING_SWARM_Timer -= diff;
|
} else SPELL_LEECHING_SWARM_Timer -= diff;
|
||||||
|
|
||||||
if (SPELL_CARRION_BEETLES_Timer <= diff)
|
if (SPELL_CARRION_BEETLES_Timer <= diff)
|
||||||
{
|
{
|
||||||
Channeling = true;
|
Channeling = true;
|
||||||
DoCast(m_creature->getVictim(), SPELL_CARRION_BEETLES, false);
|
DoCastVictim(SPELL_CARRION_BEETLES);
|
||||||
|
|
||||||
SPELL_CARRION_BEETLES_Timer = 25000;
|
SPELL_CARRION_BEETLES_Timer = 25000;
|
||||||
} else SPELL_CARRION_BEETLES_Timer -= diff;
|
} else SPELL_CARRION_BEETLES_Timer -= diff;
|
||||||
|
|
||||||
if (SPELL_POUND_Timer <= diff)
|
if (SPELL_POUND_Timer <= diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), HEROIC(SPELL_POUND, H_SPELL_POUND));
|
DoCastVictim(HEROIC(SPELL_POUND, H_SPELL_POUND));
|
||||||
SPELL_POUND_Timer = 16500;
|
SPELL_POUND_Timer = 16500;
|
||||||
} else SPELL_POUND_Timer -= diff;
|
} else SPELL_POUND_Timer -= diff;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Phase_Time == 0 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 75)
|
if ((Phase_Time == 0 && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 75)
|
||||||
|| (Phase_Time == 1 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 50)
|
|| (Phase_Time == 1 && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50)
|
||||||
|| (Phase_Time == 2 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 25))
|
|| (Phase_Time == 2 && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25))
|
||||||
{
|
{
|
||||||
++Phase_Time;
|
++Phase_Time;
|
||||||
|
|
||||||
@@ -263,20 +247,16 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
|
|
||||||
DoCast(m_creature, SPELL_SUBMERGE, false);
|
DoCast(m_creature, SPELL_SUBMERGE, false);
|
||||||
|
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
|
|
||||||
Phase = 1;
|
Phase = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Phase == 1)
|
if (Phase != 1)
|
||||||
{
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer)
|
void JustDied(Unit *pKiller)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
|
|
||||||
@@ -284,16 +264,16 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
|
|||||||
pInstance->SetData(DATA_ANUBARAK_EVENT, DONE);
|
pInstance->SetData(DATA_ANUBARAK_EVENT, DONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit *pVictim)
|
||||||
{
|
{
|
||||||
if (victim == m_creature)
|
if (pVictim == m_creature)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_boss_anub_arak(Creature* pCreature)
|
CreatureAI* GetAI_boss_anub_arak(Creature *pCreature)
|
||||||
{
|
{
|
||||||
return new boss_anub_arakAI (pCreature);
|
return new boss_anub_arakAI (pCreature);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user