diff options
author | maanuel <none@none> | 2009-12-20 04:01:33 -0300 |
---|---|---|
committer | maanuel <none@none> | 2009-12-20 04:01:33 -0300 |
commit | 8b574fadf73cd27d68f4d161506b5d3bab6aad19 (patch) | |
tree | 156bc94b63fb994b4467765f06afd46423fc2b2d /src | |
parent | 7a2fc5e43deb6e4643ca40937b3d204cb1bd4f5d (diff) |
Gundrak: Use of GetUnit instead of grid searcher in LivingMojoAI and DrakkariElementalAI
--HG--
branch : trunk
Diffstat (limited to 'src')
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(); |