aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormaanuel <none@none>2009-12-20 04:01:33 -0300
committermaanuel <none@none>2009-12-20 04:01:33 -0300
commit8b574fadf73cd27d68f4d161506b5d3bab6aad19 (patch)
tree156bc94b63fb994b4467765f06afd46423fc2b2d /src
parent7a2fc5e43deb6e4643ca40937b3d204cb1bd4f5d (diff)
Gundrak: Use of GetUnit instead of grid searcher in LivingMojoAI and DrakkariElementalAI
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/northrend/gundrak/boss_drakkari_colossus.cpp35
-rw-r--r--src/bindings/scripts/scripts/northrend/gundrak/gundrak.h3
-rw-r--r--src/bindings/scripts/scripts/northrend/gundrak/instance_gundrak.cpp5
3 files changed, 31 insertions, 12 deletions
diff --git a/src/bindings/scripts/scripts/northrend/gundrak/boss_drakkari_colossus.cpp b/src/bindings/scripts/scripts/northrend/gundrak/boss_drakkari_colossus.cpp
index 937aeee92b0..d2c13c430ee 100644
--- a/src/bindings/scripts/scripts/northrend/gundrak/boss_drakkari_colossus.cpp
+++ b/src/bindings/scripts/scripts/northrend/gundrak/boss_drakkari_colossus.cpp
@@ -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();
}
}
diff --git a/src/bindings/scripts/scripts/northrend/gundrak/gundrak.h b/src/bindings/scripts/scripts/northrend/gundrak/gundrak.h
index 957bb9d2367..d4c19f4ad35 100644
--- a/src/bindings/scripts/scripts/northrend/gundrak/gundrak.h
+++ b/src/bindings/scripts/scripts/northrend/gundrak/gundrak.h
@@ -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
diff --git a/src/bindings/scripts/scripts/northrend/gundrak/instance_gundrak.cpp b/src/bindings/scripts/scripts/northrend/gundrak/instance_gundrak.cpp
index 9a3ddb32877..5bc8efdea8c 100644
--- a/src/bindings/scripts/scripts/northrend/gundrak/instance_gundrak.cpp
+++ b/src/bindings/scripts/scripts/northrend/gundrak/instance_gundrak.cpp
@@ -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();