Gundrak: Use of GetUnit instead of grid searcher in LivingMojoAI and DrakkariElementalAI

--HG--
branch : trunk
This commit is contained in:
maanuel
2009-12-20 04:01:33 -03:00
parent 7a2fc5e43d
commit 8b574fadf7
3 changed files with 31 additions and 12 deletions
@@ -145,12 +145,17 @@ struct TRINITY_DLL_DECL boss_drakkari_colossusAI : public ScriptedAI
struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
{
boss_drakkari_elementalAI(Creature *c) : ScriptedAI(c)
boss_drakkari_elementalAI(Creature* pCreature) : ScriptedAI(pCreature)
{
Colossus = c->FindNearestCreature(DRAKKARI_COLOSSUS, 30.0f, true);
pInstance = pCreature->GetInstanceData();
if (pCreature->GetMap()->IsDungeon())
Colossus = pCreature->GetUnit(*pCreature, pInstance->GetData64(DATA_DRAKKARI_COLOSSUS));
}
Creature* Colossus;
Unit* Colossus;
ScriptedInstance* pInstance;
uint32 SurgeTimer;
@@ -173,7 +178,7 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
void UpdateAI(const uint32 diff)
{
//Return since we have no target
if(!UpdateVictim())
if(!UpdateVictim() || !Colossus)
return;
if(GoToColossus == false && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50)
@@ -189,6 +194,7 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
{
m_creature->addUnitState(UNIT_STAT_STUNNED);
m_creature->SetVisibility(VISIBILITY_OFF);
DoCast(Colossus, SPELL_MERGE, true);
PreparationDone = false;
@@ -223,6 +229,9 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
void JustDied(Unit* killer)
{
if (!Colossus)
return;
Colossus->Kill(Colossus);
Colossus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
}
@@ -230,11 +239,19 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
struct TRINITY_DLL_DECL npc_living_mojoAI : public ScriptedAI
{
npc_living_mojoAI(Creature *c) : ScriptedAI(c)
npc_living_mojoAI(Creature* pCreature) : ScriptedAI(pCreature)
{
HeroicMode = c->GetMap()->IsHeroic();
HeroicMode = pCreature->GetMap()->IsHeroic();
pInstance = pCreature->GetInstanceData();
if (pCreature->GetMap()->IsDungeon())
Colossus = pCreature->GetUnit(*pCreature, pInstance->GetData64(DATA_DRAKKARI_COLOSSUS));
}
Unit* Colossus;
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 MojoWaveTimer;
@@ -257,12 +274,12 @@ struct TRINITY_DLL_DECL npc_living_mojoAI : public ScriptedAI
{
if (m_creature->HasReactState(REACT_PASSIVE))
{
if (Creature* Colossus = m_creature->FindNearestCreature(DRAKKARI_COLOSSUS, 30.0f, true))
if (Colossus)
{
Colossus->RemoveAura(SPELL_FREEZE_ANIM);
Colossus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
Colossus->SetReactState(REACT_AGGRESSIVE);
Colossus->AI()->AttackStart(pDone_by);
CAST_CRE(Colossus)->SetReactState(REACT_AGGRESSIVE);
CAST_CRE(Colossus)->AI()->AttackStart(pDone_by);
EnterEvadeMode();
}
}
@@ -17,7 +17,8 @@ enum Data64
DATA_DRAKKARI_COLOSSUS_ALTAR,
DATA_SLAD_RAN_STATUE,
DATA_MOORABI_STATUE,
DATA_DRAKKARI_COLOSSUS_STATUE
DATA_DRAKKARI_COLOSSUS_STATUE,
DATA_DRAKKARI_COLOSSUS
};
#endif
@@ -21,7 +21,7 @@ struct TRINITY_DLL_DECL instance_gundrak : public ScriptedInstance
bool bHeroicMode;
bool spawnSupport;
uint32 timer;
uint32 phase;
uint64 toActivate;
@@ -293,6 +293,7 @@ struct TRINITY_DLL_DECL instance_gundrak : public ScriptedInstance
case DATA_SLAD_RAN_STATUE: return uiSladRanStatue;
case DATA_MOORABI_STATUE: return uiMoorabiStatue;
case DATA_DRAKKARI_COLOSSUS_STATUE: return uiDrakkariColossusStatue;
case DATA_DRAKKARI_COLOSSUS: return uiDrakkariColossus;
}
return 0;
@@ -308,7 +309,7 @@ struct TRINITY_DLL_DECL instance_gundrak : public ScriptedInstance
<< (uiSladRanStatue ? GetObjState(uiSladRanStatue) : GO_STATE_ACTIVE) << " " << (uiMoorabiStatue ? GetObjState(uiMoorabiStatue) : GO_STATE_ACTIVE) << " "
<< (uiDrakkariColossusStatue ? GetObjState(uiDrakkariColossusStatue) : GO_STATE_ACTIVE) << " " << (uiGalDarahStatue ? GetObjState(uiGalDarahStatue) : GO_STATE_READY) << " "
<< (uiBridge ? GetObjState(uiBridge) : GO_STATE_ACTIVE) << " " << (uiCollision ? GetObjState(uiCollision) : GO_STATE_READY);
str_data = saveStream.str();