From 84f2aa1e2805aced52733125462cc7ecd6a93126 Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 3 May 2009 11:11:35 -0500 Subject: *Fix the bug that grobbulus spams mutating injection. *Fix the bug that kelthuzad enter evade mode immediately after enter combat. --HG-- branch : trunk --- src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp | 5 +++-- src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/bindings/scripts') diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp index 0c139ddefb2..f18cd81064a 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp @@ -96,8 +96,9 @@ struct TRINITY_DLL_DECL boss_grobbulusAI : public ScriptedAI return; case EVENT_INJECT: if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_MUTATING_INJECTION); - events.ScheduleEvent(EVENT_INJECT, 8000 + 12000 * me->GetHealth() / me->GetMaxHealth()); + if(!target->HasAura(SPELL_MUTATING_INJECTION)) + DoCast(target, SPELL_MUTATING_INJECTION); + events.ScheduleEvent(EVENT_INJECT, 8000 + 12000 * ((float)me->GetHealth() / me->GetMaxHealth())); return; } } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp index 2d827bd4ff0..5e7bd69e41a 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp @@ -214,7 +214,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI if(Phase == 1) { m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - EnterEvadeMode(); + //EnterEvadeMode(); //SummonWasters_Timer at far positon if ( SummonWasters_Timer< diff) { -- cgit v1.2.3 From 193b0634dfa42fcce9904003f9c0d3f6b5ec54af Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 3 May 2009 11:28:14 -0500 Subject: *Some fix of sapphiron script. --HG-- branch : trunk --- .../scripts/zone/naxxramas/boss_sapphiron.cpp | 33 ++++++++-------------- src/game/SpellMgr.cpp | 4 +++ 2 files changed, 15 insertions(+), 22 deletions(-) (limited to 'src/bindings/scripts') diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp index 0e2498dc679..a0cfb77c06c 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp @@ -28,8 +28,8 @@ EndScriptData */ #define SPELL_ICEBOLT 28522 #define SPELL_FROST_BREATH 29318 -#define SPELL_FROST_AURA 28531 -#define SPELL_LIFE_DRAIN 28542 +#define SPELL_FROST_AURA HEROIC(28531,55799) +#define SPELL_LIFE_DRAIN HEROIC(28542,55665) //#define SPELL_CHILL 28560 #define SPELL_BLIZZARD 28547 #define SPELL_BESERK 26662 @@ -66,7 +66,7 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI Fly_Timer = 45000; Icebolt_Timer = 4000; land_Timer = 0; - Beserk_Timer = 0; + Beserk_Timer = 15*60000; phase = 1; Icebolt_Count = 0; IsInFly = false; @@ -76,6 +76,8 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI void EnterCombat(Unit *who) { + DoZoneInCombat(); + me->CastSpell(me, SPELL_FROST_AURA, true); } void UpdateAI(const uint32 diff) @@ -85,19 +87,9 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI if(phase == 1) { - if(FrostAura_Timer < diff) - { - DoCast(m_creature->getVictim(),SPELL_FROST_AURA); - FrostAura_Timer = 5000; - }else FrostAura_Timer -= diff; - if(LifeDrain_Timer < diff) { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) - DoCast(target,SPELL_LIFE_DRAIN); - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) - DoCast(target,SPELL_LIFE_DRAIN); - + DoCastAOE(SPELL_LIFE_DRAIN); LifeDrain_Timer = 24000; }else LifeDrain_Timer -= diff; @@ -178,15 +170,12 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI }else land_Timer -= diff; } - if ((m_creature->GetHealth()*100) / m_creature->GetMaxHealth() <= 10) + if (Beserk_Timer < diff) { - if (Beserk_Timer < diff) - { - DoScriptText(EMOTE_ENRAGE, m_creature); - DoCast(m_creature,SPELL_BESERK); - Beserk_Timer = 300000; - }else Beserk_Timer -= diff; - } + DoScriptText(EMOTE_ENRAGE, m_creature); + DoCast(m_creature,SPELL_BESERK); + Beserk_Timer = 300000; + }else Beserk_Timer -= diff; if (phase!=2) DoMeleeAttackIfReady(); diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 31195f67bca..fde5d63631f 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2427,6 +2427,9 @@ void SpellMgr::LoadSpellCustomAttr() case 41071: // Raise Dead (HACK) spellInfo->MaxAffectedTargets = 1; break; + case 28542: // Life Drain - Sapphiron + spellInfo->MaxAffectedTargets = 1; + break; case 41376: // Spite case 39992: // Needle Spine case 29576: //Multi-Shot @@ -2447,6 +2450,7 @@ void SpellMgr::LoadSpellCustomAttr() case 46009: //Negative Energy case 45641: //Fire Bloom case 54937: //Glyph of Holy Light + case 55665: // Life Drain - Sapphiron spellInfo->MaxAffectedTargets = 5; break; case 40827: //Sinful Beam -- cgit v1.2.3