[svn] Change aura stack check.
Add some boss yells. Patched provided by BroodWyrm and Blaymoira. --HG-- branch : trunk
This commit is contained in:
@@ -7,8 +7,17 @@ EndScriptData */
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
#include "def_sunwell_plateau.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 LADY_SACROLASH 25165
|
||||||
|
|
||||||
#define SPELL_DARK_TOUCHED 45347
|
#define SPELL_DARK_TOUCHED 45347
|
||||||
@@ -338,13 +347,14 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
pInstance = (c->GetInstanceData()) ? ((ScriptedInstance*)c->GetInstanceData()) : NULL;
|
pInstance = (c->GetInstanceData()) ? ((ScriptedInstance*)c->GetInstanceData()) : NULL;
|
||||||
Reset();
|
Reset();
|
||||||
once = false;
|
IntroStepCounter = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance *pInstance;
|
ScriptedInstance *pInstance;
|
||||||
bool InCombat;
|
bool InCombat;
|
||||||
bool sisterdeath;
|
bool sisterdeath;
|
||||||
bool once;
|
uint32 IntroStepCounter;
|
||||||
|
uint32 IntroYell_Timer;
|
||||||
|
|
||||||
uint32 conflagration_timer;
|
uint32 conflagration_timer;
|
||||||
uint32 blaze_timer;
|
uint32 blaze_timer;
|
||||||
@@ -384,6 +394,7 @@ struct TRINITY_DLL_DECL boss_alythessAI : public ScriptedAI
|
|||||||
sisterdeath = false;
|
sisterdeath = false;
|
||||||
enrage_timer = 360000;
|
enrage_timer = 360000;
|
||||||
flamesear_timer = 15000;
|
flamesear_timer = 15000;
|
||||||
|
IntroYell_Timer = 10000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Aggro(Unit *who)
|
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);
|
IntroStepCounter = 0;
|
||||||
once = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
|
if(IntroStepCounter < 9)
|
||||||
|
{
|
||||||
|
if(IntroYell_Timer < diff)
|
||||||
|
{
|
||||||
|
IntroYell_Timer = IntroStep(IntroStepCounter++);
|
||||||
|
}else IntroYell_Timer -= diff;
|
||||||
|
}
|
||||||
|
|
||||||
if(!sisterdeath)
|
if(!sisterdeath)
|
||||||
{
|
{
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ EndScriptData */
|
|||||||
#define SPELL_CLOUD_VISUAL 45212
|
#define SPELL_CLOUD_VISUAL 45212
|
||||||
#define SPELL_CLOUD_SUMMON 45884
|
#define SPELL_CLOUD_SUMMON 45884
|
||||||
|
|
||||||
|
//Creatures
|
||||||
#define MOB_FELMYST 25038
|
#define MOB_FELMYST 25038
|
||||||
#define MOB_BRUTALLUS
|
#define MOB_BRUTALLUS
|
||||||
#define MOB_KALECGOS
|
#define MOB_KALECGOS
|
||||||
@@ -74,13 +75,21 @@ EndScriptData */
|
|||||||
#define MOB_VAPOR 25265
|
#define MOB_VAPOR 25265
|
||||||
#define MOB_VAPOR_TRAIL 25267
|
#define MOB_VAPOR_TRAIL 25267
|
||||||
|
|
||||||
|
//Yells and Sounds
|
||||||
#define YELL_BIRTH "Glory to Kil'jaeden! Death to all who oppose!"
|
#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 YELL_KILL1 "I kill for the master!"
|
||||||
|
#define SOUND_KILL1 12480
|
||||||
#define YELL_KILL2 "The end has come!"
|
#define YELL_KILL2 "The end has come!"
|
||||||
|
#define SOUND_KILL2 12481
|
||||||
#define YELL_BREATH "Choke on your final breath!"
|
#define YELL_BREATH "Choke on your final breath!"
|
||||||
|
#define SOUND_BREATH 12478
|
||||||
#define YELL_TAKEOFF "I am stronger than ever before!"
|
#define YELL_TAKEOFF "I am stronger than ever before!"
|
||||||
|
#define SOUND_TAKEOFF 12479
|
||||||
#define YELL_BERSERK "No more hesitation! Your fates are written!"
|
#define YELL_BERSERK "No more hesitation! Your fates are written!"
|
||||||
|
#define SOUND_BERSERK 12482
|
||||||
#define YELL_DEATH "Kil'jaeden... will... prevail..."
|
#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."
|
#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:
|
case 0:
|
||||||
DoYell(YELL_KILL1,LANG_UNIVERSAL, NULL);
|
DoYell(YELL_KILL1,LANG_UNIVERSAL, NULL);
|
||||||
//DoPlaySoundToSet(m_creature, SOUND_KILL1);
|
DoPlaySoundToSet(m_creature, SOUND_KILL1);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
DoYell(YELL_KILL2,LANG_UNIVERSAL, NULL);
|
DoYell(YELL_KILL2,LANG_UNIVERSAL, NULL);
|
||||||
//DoPlaySoundToSet(m_creature, SOUND_KILL2);
|
DoPlaySoundToSet(m_creature, SOUND_KILL2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,7 +202,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
{
|
{
|
||||||
DoYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
|
DoYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
|
||||||
//DoPlaySoundToSet(m_creature, SOUND_DEATH);
|
DoPlaySoundToSet(m_creature, SOUND_DEATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellHit(Unit *caster, const SpellEntry *spell)
|
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->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
|
||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
DoYell(YELL_TAKEOFF, LANG_UNIVERSAL, NULL);
|
DoYell(YELL_TAKEOFF, LANG_UNIVERSAL, NULL);
|
||||||
//DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
|
DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
|
||||||
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
|
Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
@@ -413,7 +422,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
case EVENT_BERSERK:
|
case EVENT_BERSERK:
|
||||||
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
|
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
|
||||||
//DoPlaySoundToSet(m_creature, SOUND_BERSERK);
|
DoPlaySoundToSet(m_creature, SOUND_BERSERK);
|
||||||
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
|
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
|
||||||
Timer[EVENT_BERSERK] = 0;
|
Timer[EVENT_BERSERK] = 0;
|
||||||
break;
|
break;
|
||||||
@@ -451,7 +460,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
case EVENT_BERSERK:
|
case EVENT_BERSERK:
|
||||||
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
|
DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
|
||||||
//DoPlaySoundToSet(m_creature, SOUND_BERSERK);
|
DoPlaySoundToSet(m_creature, SOUND_BERSERK);
|
||||||
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
|
m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
|
||||||
Timer[EVENT_BERSERK] = 0;
|
Timer[EVENT_BERSERK] = 0;
|
||||||
break;
|
break;
|
||||||
|
|||||||
+2
-19
@@ -1345,28 +1345,11 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
|
|||||||
break;
|
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))
|
if (IsRankSpellDueToSpell(spellInfo_1, spellId_2))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (spellInfo_1->SpellFamilyName == 0 || spellInfo_2->SpellFamilyName == 0)
|
if (spellInfo_1->SpellIconID != spellInfo_2->SpellIconID ||
|
||||||
|
!spellInfo_1->SpellIconID)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (spellInfo_1->SpellFamilyName != spellInfo_2->SpellFamilyName)
|
if (spellInfo_1->SpellFamilyName != spellInfo_2->SpellFamilyName)
|
||||||
|
|||||||
Reference in New Issue
Block a user