mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
*Add some missed timer changes to Kelthuzad from f9f9af1c2ae7
*When Wintersgrasp Battle ends, ressurect players -before- removing buffs, not after *Fix some possible crashes in boss_svala.cpp --HG-- branch : trunk
This commit is contained in:
@@ -137,7 +137,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
||||
Phase=1;
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
events.ScheduleEvent(EVENT_WASTE, 3000);
|
||||
events.ScheduleEvent(EVENT_WASTE, 5000);
|
||||
events.ScheduleEvent(EVENT_ABOMIN, 25000);
|
||||
events.ScheduleEvent(EVENT_WEAVER, 20000);
|
||||
events.ScheduleEvent(EVENT_PHASE, 228000);
|
||||
@@ -158,7 +158,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
||||
{
|
||||
case EVENT_WASTE:
|
||||
DoSummon(MOB_WASTE, Pos[RAND(0,3,6,9)]);
|
||||
events.RepeatEvent(3000);
|
||||
events.RepeatEvent(5000);
|
||||
break;
|
||||
case EVENT_ABOMIN:
|
||||
DoSummon(MOB_ABOMINATION, Pos[RAND(1,4,7,10)]);
|
||||
@@ -170,15 +170,14 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
||||
break;
|
||||
case EVENT_PHASE:
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BOLT, 2000);
|
||||
events.ScheduleEvent(EVENT_NOVA, 15000);
|
||||
events.ScheduleEvent(EVENT_DETONATE, 20000);
|
||||
events.ScheduleEvent(EVENT_FISSURE, 25000);
|
||||
events.ScheduleEvent(EVENT_BLAST, (rand()%30+30)*1000);
|
||||
if (HeroicMode)
|
||||
events.ScheduleEvent(EVENT_CHAIN, (rand()%30+30)*1000);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(EVENT_BOLT, urand(1000,10000));
|
||||
events.ScheduleEvent(EVENT_NOVA, urand(10000,15000));
|
||||
events.ScheduleEvent(EVENT_DETONATE, 20000);
|
||||
events.ScheduleEvent(EVENT_FISSURE, 25000);
|
||||
events.ScheduleEvent(EVENT_BLAST, urand(30000,60000));
|
||||
events.ScheduleEvent(EVENT_CHAIN, urand(30000,60000));
|
||||
Phase = 2;
|
||||
return;
|
||||
default:
|
||||
@@ -221,17 +220,17 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
||||
{
|
||||
case EVENT_BOLT:
|
||||
DoCast(m_creature->getVictim(),SPELL_FROST_BOLT);
|
||||
events.RepeatEvent(2000);
|
||||
events.RepeatEvent(urand(1000,10000));
|
||||
return;
|
||||
case EVENT_NOVA:
|
||||
DoCastAOE(SPELL_FROST_BOLT_AOE);
|
||||
events.RepeatEvent(15000);
|
||||
events.RepeatEvent(urand(10000,20000));
|
||||
return;
|
||||
case EVENT_CHAIN:
|
||||
if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
|
||||
DoCast(target, SPELL_CHAINS_OF_KELTHUZAD);
|
||||
DoScriptText(SAY_CHAIN, me);
|
||||
events.RepeatEvent((rand()%30+30)*1000);
|
||||
events.RepeatEvent(urand(30000,60000));
|
||||
return;
|
||||
case EVENT_DETONATE:
|
||||
{
|
||||
@@ -266,7 +265,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
||||
DoCast(target, SPELL_FROST_BLAST);
|
||||
if (rand()%2)
|
||||
DoScriptText(SAY_FROST_BLAST, m_creature);
|
||||
events.RepeatEvent((rand()%30+30)*1000);
|
||||
events.RepeatEvent(urand(30000,60000));
|
||||
return;
|
||||
default:
|
||||
events.PopEvent();
|
||||
|
||||
@@ -171,7 +171,7 @@ struct TRINITY_DLL_DECL boss_svalaAI : public ScriptedAI
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->SetDisplayId(DATA_SVALA_DISPLAY_ID);
|
||||
pArthas->DealDamage(pArthas, pArthas->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
pArthas->Kill(pArthas, false);
|
||||
pArthas->RemoveCorpse();
|
||||
Phase = FINISHED;
|
||||
}
|
||||
@@ -303,7 +303,7 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
if (uiSacrificeTimer < diff)
|
||||
{
|
||||
bool bSacrificed = false;
|
||||
for (uint8 i=0; i < 3; ++i)
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
if (pRitualChanneler[i] && pRitualChanneler[i]->isAlive())
|
||||
{
|
||||
@@ -341,7 +341,8 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
{
|
||||
Creature* pSvala = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_SVALA));
|
||||
if (pSvala && pSvala->isAlive())
|
||||
pKiller->DealDamage(pSvala, pSvala->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
pKiller->Kill(pSvala, false);
|
||||
|
||||
pInstance->SetData(DATA_SVALA_SORROWGRAVE_EVENT, IN_PROGRESS);
|
||||
}
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
|
||||
@@ -944,6 +944,10 @@ void OPvPWintergrasp::EndBattle()
|
||||
|
||||
for (PlayerSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
|
||||
{
|
||||
// When WG ends the zone is cleaned including corpses, revive all players if dead
|
||||
if ((*itr)->isDead())
|
||||
(*itr)->ResurrectPlayer(1.0f);
|
||||
|
||||
if ((*itr)->HasAura(SPELL_LIEUTENANT))
|
||||
{
|
||||
if (!sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR))
|
||||
@@ -960,12 +964,6 @@ void OPvPWintergrasp::EndBattle()
|
||||
REMOVE_WARTIME_AURAS(*itr);
|
||||
REMOVE_TENACITY_AURA(*itr);
|
||||
(*itr)->CombatStop(true);
|
||||
|
||||
// When WG ends the zone is cleaned including corpses, revive all players if dead
|
||||
if (((*itr)->isDead()) || ((*itr)->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)))
|
||||
{
|
||||
(*itr)->ResurrectPlayer(1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
// destroyed all vehicles
|
||||
|
||||
Reference in New Issue
Block a user