aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp68
-rw-r--r--src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp21
-rw-r--r--src/game/SpellMgr.cpp21
3 files changed, 79 insertions, 31 deletions
diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp
index 6f5b6af7969..7aa9588178d 100644
--- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp
+++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp
@@ -7,8 +7,17 @@ EndScriptData */
#include "precompiled.h"
#include "def_sunwell_plateau.h"
-// Lady Sacrolash
+//Intro
+#define YELL_INTRO_SAC_1 "Misery..."
+#define YELL_INTRO_ALY_2 "Depravity..."
+#define YELL_INTRO_SAC_3 "Confusion..."
+#define YELL_INTRO_ALY_4 "Hatred..."
+#define YELL_INTRO_SAC_5 "Mistrust..."
+#define YELL_INTRO_ALY_6 "Chaos..."
+#define YELL_INTRO_SAC_7 "These are the hallmarks..."
+#define YELL_INTRO_ALY_8 "These are the pillars..."
+// Lady Sacrolash
#define LADY_SACROLASH 25165
#define SPELL_DARK_TOUCHED 45347
@@ -338,13 +347,14 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI
{
pInstance = (c->GetInstanceData()) ? ((ScriptedInstance*)c->GetInstanceData()) : NULL;
Reset();
- once = false;
+ IntroStepCounter = 10;
}
ScriptedInstance *pInstance;
bool InCombat;
bool sisterdeath;
- bool once;
+ uint32 IntroStepCounter;
+ uint32 IntroYell_Timer;
uint32 conflagration_timer;
uint32 blaze_timer;
@@ -384,6 +394,7 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI
sisterdeath = false;
enrage_timer = 360000;
flamesear_timer = 15000;
+ IntroYell_Timer = 10000;
}
}
void Aggro(Unit *who)
@@ -435,10 +446,9 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI
}
}
}
- else if (!once && m_creature->IsWithinLOSInMap(who)&& m_creature->IsWithinDistInMap(who, 30) )
+ else if (IntroStepCounter == 10 && m_creature->IsWithinLOSInMap(who)&& m_creature->IsWithinDistInMap(who, 30) )
{
- DoPlaySoundToSet(m_creature,SOUND_INTRO);
- once = true;
+ IntroStepCounter = 0;
}
}
@@ -523,8 +533,54 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI
}
}
+ uint32 IntroStep(uint32 step)
+ {
+ Creature* Sacrolash = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH));
+ switch (step)
+ {
+ case 0: DoPlaySoundToSet(m_creature,SOUND_INTRO); return 0;
+ case 1:
+ if(Sacrolash)
+ Sacrolash->Yell(YELL_INTRO_SAC_1, LANG_UNIVERSAL,NULL);
+ return 1000;
+ case 2:
+ m_creature->Yell(YELL_INTRO_ALY_2, LANG_UNIVERSAL,NULL);
+ return 1000;
+ case 3:
+ if(Sacrolash)
+ Sacrolash->Yell(YELL_INTRO_SAC_3, LANG_UNIVERSAL,NULL);
+ return 2000;
+ case 4:
+ m_creature->Yell(YELL_INTRO_ALY_4, LANG_UNIVERSAL,NULL);
+ return 1000;
+ case 5:
+ if(Sacrolash)
+ Sacrolash->Yell(YELL_INTRO_SAC_5, LANG_UNIVERSAL,NULL);
+ return 2000;
+ case 6:
+ m_creature->Yell(YELL_INTRO_ALY_6, LANG_UNIVERSAL,NULL);
+ return 1000;
+ case 7:
+ if(Sacrolash)
+ Sacrolash->Yell(YELL_INTRO_SAC_7, LANG_UNIVERSAL,NULL);
+ return 3000;
+ case 8:
+ m_creature->Yell(YELL_INTRO_ALY_8, LANG_UNIVERSAL,NULL);
+ return 900000;
+ }
+ return 10000;
+ }
+
void UpdateAI(const uint32 diff)
{
+ if(IntroStepCounter < 9)
+ {
+ if(IntroYell_Timer < diff)
+ {
+ IntroYell_Timer = IntroStep(IntroStepCounter++);
+ }else IntroYell_Timer -= diff;
+ }
+
if(!sisterdeath)
{
if (pInstance)
diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp
index d0ca538d491..16ff90f96b5 100644
--- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp
+++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp
@@ -62,6 +62,7 @@ EndScriptData */
#define SPELL_CLOUD_VISUAL 45212
#define SPELL_CLOUD_SUMMON 45884
+//Creatures
#define MOB_FELMYST 25038
#define MOB_BRUTALLUS
#define MOB_KALECGOS
@@ -74,13 +75,21 @@ EndScriptData */
#define MOB_VAPOR 25265
#define MOB_VAPOR_TRAIL 25267
+//Yells and Sounds
#define YELL_BIRTH "Glory to Kil'jaeden! Death to all who oppose!"
+#define SOUND_BIRTH 12477
#define YELL_KILL1 "I kill for the master!"
+#define SOUND_KILL1 12480
#define YELL_KILL2 "The end has come!"
+#define SOUND_KILL2 12481
#define YELL_BREATH "Choke on your final breath!"
+#define SOUND_BREATH 12478
#define YELL_TAKEOFF "I am stronger than ever before!"
+#define SOUND_TAKEOFF 12479
#define YELL_BERSERK "No more hesitation! Your fates are written!"
+#define SOUND_BERSERK 12482
#define YELL_DEATH "Kil'jaeden... will... prevail..."
+#define SOUND_DEATH 12483
#define YELL_KALECGOS "Madrigosa deserved a far better fate. You did what had to be done, but this battle is far from over."
@@ -181,11 +190,11 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{
case 0:
DoYell(YELL_KILL1,LANG_UNIVERSAL, NULL);
- //DoPlaySoundToSet(m_creature, SOUND_KILL1);
+ DoPlaySoundToSet(m_creature, SOUND_KILL1);
break;
case 1:
DoYell(YELL_KILL2,LANG_UNIVERSAL, NULL);
- //DoPlaySoundToSet(m_creature, SOUND_KILL2);
+ DoPlaySoundToSet(m_creature, SOUND_KILL2);
break;
}
}
@@ -193,7 +202,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
void JustDied(Unit* Killer)
{
DoYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
- //DoPlaySoundToSet(m_creature, SOUND_DEATH);
+ DoPlaySoundToSet(m_creature, SOUND_DEATH);
}
void SpellHit(Unit *caster, const SpellEntry *spell)
@@ -276,7 +285,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
m_creature->StopMoving();
DoYell(YELL_TAKEOFF, LANG_UNIVERSAL, NULL);
- //DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
+ DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
break;
case 1:
@@ -413,7 +422,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{
case EVENT_BERSERK:
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
- //DoPlaySoundToSet(m_creature, SOUND_BERSERK);
+ DoPlaySoundToSet(m_creature, SOUND_BERSERK);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
Timer[EVENT_BERSERK] = 0;
break;
@@ -451,7 +460,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{
case EVENT_BERSERK:
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
- //DoPlaySoundToSet(m_creature, SOUND_BERSERK);
+ DoPlaySoundToSet(m_creature, SOUND_BERSERK);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
Timer[EVENT_BERSERK] = 0;
break;
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 617a39f770a..f398f224286 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -1345,28 +1345,11 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
break;
}
- // more generic checks
- if (spellInfo_1->SpellIconID == spellInfo_2->SpellIconID &&
- spellInfo_1->SpellIconID != 0 && spellInfo_2->SpellIconID != 0)
- {
- bool isModifier = false;
- for (int i = 0; i < 3; i++)
- {
- if (spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_ADD_FLAT_MODIFIER ||
- spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_ADD_PCT_MODIFIER ||
- spellInfo_2->EffectApplyAuraName[i] == SPELL_AURA_ADD_FLAT_MODIFIER ||
- spellInfo_2->EffectApplyAuraName[i] == SPELL_AURA_ADD_PCT_MODIFIER )
- isModifier = true;
- }
-
- if (!isModifier)
- return true;
- }
-
if (IsRankSpellDueToSpell(spellInfo_1, spellId_2))
return true;
- if (spellInfo_1->SpellFamilyName == 0 || spellInfo_2->SpellFamilyName == 0)
+ if (spellInfo_1->SpellIconID != spellInfo_2->SpellIconID ||
+ !spellInfo_1->SpellIconID)
return false;
if (spellInfo_1->SpellFamilyName != spellInfo_2->SpellFamilyName)