diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_svala.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_svala.cpp b/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_svala.cpp index 137b445e93a..37a871bfde5 100644 --- a/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_svala.cpp +++ b/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_svala.cpp @@ -45,7 +45,10 @@ enum Creatures CREATURE_ARTHAS = 24266, // Image of Arthas CREATURE_SVALA_SORROWGRAVE = 26668, // Svala after transformation CREATURE_SVALA = 29281, // Svala before transformation - CREATURE_RITUAL_CHANNELER = 27281, + CREATURE_RITUAL_CHANNELER = 27281 +}; +enum ChannelerSpells +{ //ritual channeler's spells SPELL_PARALYZE = 48278, SPELL_SHADOWS_IN_THE_DARK = 59407 @@ -115,8 +118,7 @@ struct TRINITY_DLL_DECL boss_svalaAI : public ScriptedAI if (pArthas = m_creature->SummonCreature(CREATURE_ARTHAS, 295.81, -366.16, 92.57, 1.58, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 20000)) { - pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE); pArthas->SetFloatValue(OBJECT_FIELD_SCALE_X, 5); } } @@ -170,8 +172,7 @@ struct TRINITY_DLL_DECL boss_svalaAI : public ScriptedAI case 6: if (Creature* pSvalaSorrowgrave = m_creature->SummonCreature(CREATURE_SVALA_SORROWGRAVE, 296.632, -346.075, 90.6307, 1.58, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000)) { - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE); m_creature->SetDisplayId(DATA_SVALA_DISPLAY_ID); pArthas->DisappearAndDie(); Phase = FINISHED; @@ -183,9 +184,9 @@ struct TRINITY_DLL_DECL boss_svalaAI : public ScriptedAI } }; -struct TRINITY_DLL_DECL mob_ritual_channelerAI : public ScriptedAI +struct TRINITY_DLL_DECL mob_ritual_channelerAI : public Scripted_NoMovementAI { - mob_ritual_channelerAI(Creature *c) :ScriptedAI(c) + mob_ritual_channelerAI(Creature *c) :Scripted_NoMovementAI(c) { pInstance = c->GetInstanceData(); } @@ -199,7 +200,7 @@ struct TRINITY_DLL_DECL mob_ritual_channelerAI : public ScriptedAI void EnterCombat(Unit* who) { - if (who && who->HasAura(SPELL_PARALYZE,0)) + if (who && !who->HasAura(SPELL_PARALYZE,0)) DoCast(who,SPELL_PARALYZE); return; } @@ -234,6 +235,7 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI Phase = NORMAL; DoTeleportTo(296.632, -346.075, 90.6307); + m_creature->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE); for (uint8 i = 0; i < 3; ++i) pRitualChanneler[i] = NULL; @@ -262,16 +264,15 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI if (uiSinsterStrikeTimer < diff) { DoCast(m_creature->getVictim(), HEROIC(SPELL_SINSTER_STRIKE, H_SPELL_SINSTER_STRIKE)); - uiSinsterStrikeTimer = 5000 + rand()%4000; + uiSinsterStrikeTimer = urand(5000,9000); } else uiSinsterStrikeTimer -= diff; if (uiCallFlamesTimer < diff) { - Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); - if (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER) + if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) { DoCast(pTarget, SPELL_CALL_FLAMES); - uiCallFlamesTimer = 8000 + rand()%4000; + uiCallFlamesTimer = urand(8000,12000); } } else uiCallFlamesTimer -= diff; |