diff options
Diffstat (limited to 'src')
3 files changed, 39 insertions, 38 deletions
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index 8b3eb0525dc..faa7785682f 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -158,7 +158,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) AttackLoc[i] = AttackArea[Faction][i]; } - Creature* pCreature = m_creature->SummonCreature(entry, SpawnLoc[0], SpawnLoc[1], SpawnLoc[2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000); + Creature* pCreature = m_creature->SummonCreature(entry, SpawnLoc[0], SpawnLoc[1], SpawnLoc[2], 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000); if(pCreature) { // Increment Enemy Count to be used in World States and instance script @@ -167,6 +167,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) pCreature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); pCreature->GetMotionMaster()->MovePoint(0, AttackLoc[0],AttackLoc[1],AttackLoc[2]); pCreature->AddThreat(m_creature, 0.0f); + pCreature->setActive(true); DoZoneInCombat(pCreature); // Check if creature is a boss. diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp index 5055d7ca0ed..170d6dfa3a8 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp @@ -118,6 +118,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI DoScriptText(SAY_AGGRO, m_creature); AddsAttack(); + DoZoneInCombat(); } void KilledUnit(Unit* victim) @@ -251,8 +252,10 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI { Temp = Unit::GetUnit((*m_creature),AddGUID[i]); if (Temp && Temp->isAlive()) + { ((Creature*)Temp)->AI()->AttackStart(m_creature->getVictim()); - else + DoZoneInCombat(Temp); + }else EnterEvadeMode(); } } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp index 8529ba85a77..db30c4c7593 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp @@ -50,7 +50,7 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI uint32 Fly2_Timer; uint32 Beserk_Timer; uint32 phase; - bool landoff; + bool IsInFly; uint32 land_Timer; void Reset() @@ -60,13 +60,13 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI Blizzard_Timer = 20000; Fly_Timer = 45000; Icebolt_Timer = 4000; - land_Timer = 2000; + land_Timer = 0; Beserk_Timer = 0; phase = 1; Icebolt_Count = 0; - landoff = false; + IsInFly = false; - //m_creature->ApplySpellMod(SPELL_FROST_AURA, SPELLMOD_DURATION, -1); + m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT); } void Aggro(Unit *who) @@ -105,16 +105,14 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI if(Fly_Timer < diff) { phase = 2; - m_creature->InterruptNonMeleeSpells(false); m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF); - (*m_creature).GetMotionMaster()->Clear(false); - (*m_creature).GetMotionMaster()->MoveIdle(); - DoCast(m_creature,11010); + m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT); + m_creature->GetMotionMaster()->Clear(false); + m_creature->GetMotionMaster()->MoveIdle(); m_creature->SetHover(true); - DoCast(m_creature,18430); Icebolt_Timer = 4000; Icebolt_Count = 0; - landoff = false; + IsInFly = true; }else Fly_Timer -= diff; } } @@ -124,36 +122,35 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI if(Icebolt_Timer < diff && Icebolt_Count < 5) { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) + { DoCast(target,SPELL_ICEBOLT); - Icebolt_Count ++; + ++Icebolt_Count; + error_log("Count incremented"); + } + FrostBreath_Timer = 6000; Icebolt_Timer = 4000; }else Icebolt_Timer -= diff; - if(Icebolt_Count == 5 && !landoff) - { - if(FrostBreath_Timer < diff ) - { - DoScriptText(EMOTE_BREATH, m_creature); - DoCast(m_creature->getVictim(),SPELL_FROST_BREATH); - land_Timer = 2000; - landoff = true; - FrostBreath_Timer = 6000; - }else FrostBreath_Timer -= diff; - } - - if(landoff) - { - if(land_Timer < diff) - { - phase = 1; - m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LAND); - m_creature->SetHover(false); - (*m_creature).GetMotionMaster()->Clear(false); - (*m_creature).GetMotionMaster()->MoveChase(m_creature->getVictim()); - Fly_Timer = 67000; - }else land_Timer -= diff; - } - + if(Icebolt_Count == 5 && IsInFly && FrostBreath_Timer < diff ) + { + DoScriptText(EMOTE_BREATH, m_creature); + DoCast(m_creature->getVictim(),SPELL_FROST_BREATH); + land_Timer = 2000; + IsInFly = false; + FrostBreath_Timer = 6000; + }else FrostBreath_Timer -= diff; + + if(!IsInFly && land_Timer < diff) + { + phase = 1; + m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LAND); + m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT); + m_creature->GetMotionMaster()->Clear(false); + m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); + m_creature->SetHover(true); + land_Timer = 0; + Fly_Timer = 67000; + }else land_Timer -= diff; } if ((m_creature->GetHealth()*100) / m_creature->GetMaxHealth() <= 10) |