[svn] Change aura stack check.

Add some boss yells. Patched provided by BroodWyrm and Blaymoira.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-10-19 13:56:11 -05:00
parent f064bc4ba4
commit 636d810772
3 changed files with 79 additions and 31 deletions
@@ -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)
@@ -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;
+2 -19
View File
@@ -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)