diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp index 70f2fc41f6c..0c8cca36103 100644 --- a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp +++ b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp @@ -45,6 +45,11 @@ enum Creatures CREATURE_FORGED_IRON_DWARF = 27982 }; +enum Misc +{ + DATA_TIME_BEFORE_OOZE = 150000 //2min 30 secs +}; + struct Locations { float x, y, z; @@ -56,6 +61,8 @@ static Locations PipeLocations[] = {1297.7, 595.6, 199.9} //right }; +static Locations CenterPoint = {295.21, 667.157, 189.691}; + struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI { boss_sjonnirAI(Creature *c) : ScriptedAI(c) @@ -71,6 +78,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI uint32 uiLightningRingTimer; uint32 uiSummonTimer; uint32 uiFrenzyTimer; + uint32 uiEncounterTimer; ScriptedInstance* pInstance; @@ -78,6 +86,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI { bIsFrenzy = false; + uiEncounterTimer = 0; uiChainLightningTimer = 3000 + rand()%5000; uiLightningShieldTimer = 20000 + rand()%5000; uiStaticChargeTimer = 20000 + rand()%5000; @@ -93,6 +102,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI { DoScriptText(SAY_AGGRO, m_creature); + uiEncounterTimer = 0; + if (pInstance) pInstance->SetData(DATA_SJONNIR_EVENT, IN_PROGRESS); } @@ -136,7 +147,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI if (uiSummonTimer < diff) { uint32 uiSummonPipe = rand()%2; - m_creature->SummonCreature(RAND(CREATURE_FORGED_IRON_DWARF,CREATURE_FORGED_IRON_TROGG,CREATURE_MALFORMED_OOZE), + m_creature->SummonCreature(uiEncounterTimer > DATA_TIME_BEFORE_OOZE ? CREATURE_MALFORMED_OOZE : + RAND(CREATURE_FORGED_IRON_DWARF,CREATURE_FORGED_IRON_TROGG), PipeLocations[uiSummonPipe].x, PipeLocations[uiSummonPipe].y, PipeLocations[uiSummonPipe].z, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000); uiSummonTimer = 20000; @@ -151,17 +163,20 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI } else uiFrenzyTimer -= diff; } + + uiEncounterTimer +=diff; DoMeleeAttackIfReady(); } void JustSummoned(Creature* summon) { + summon->GetMotionMaster()->MovePoint(0, CenterPoint.x, CenterPoint.y, CenterPoint.z); Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); - while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER) + /*while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER) pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); if (pTarget) - summon->AI()->AttackStart(pTarget); + summon->AI()->AttackStart(pTarget);*/ } void JustDied(Unit* killer) |