aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeader <keader.android@gmail.com>2019-06-07 08:18:48 -0300
committerGitHub <noreply@github.com>2019-06-07 08:18:48 -0300
commit136964769db509d1a2238f863d57e61651d97fae (patch)
tree8c627a503bf8d60d539f102eb566088d42e2c122
parent379b8b5a77157cbaf6224f2b14f08a983354c14d (diff)
Scripts/Icecrown Citadel: Fixed Heroic Attempts logic (#23379)
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp80
1 files changed, 31 insertions, 49 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index dc7ca418e85..5c148eb9e61 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -805,6 +805,25 @@ class instance_icecrown_citadel : public InstanceMapScript
return ObjectGuid::Empty;
}
+ void HandleHeroicAttempts()
+ {
+ if (HeroicAttempts)
+ {
+ --HeroicAttempts;
+ DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
+ }
+
+ if (!HeroicAttempts)
+ {
+ for (ObjectGuid bossGuid : {ProfessorPutricideGUID, BloodQueenLanaThelGUID, SindragosaGUID, TheLichKingGUID})
+ {
+ if (Creature* boss = instance->GetCreature(bossGuid))
+ if (boss->IsAlive())
+ boss->DespawnOrUnsummon();
+ }
+ }
+ }
+
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
@@ -921,35 +940,17 @@ class instance_icecrown_citadel : public InstanceMapScript
break;
case DATA_PROFESSOR_PUTRICIDE:
HandleGameObject(PlagueSigilGUID, state != DONE);
- if (state == DONE)
+ if (instance->IsHeroic() && state == FAIL)
+ HandleHeroicAttempts();
+ else if (state == DONE)
CheckLichKingAvailability();
- if (instance->IsHeroic())
- {
- if (state == FAIL && HeroicAttempts)
- {
- --HeroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
- if (!HeroicAttempts)
- if (Creature* putricide = instance->GetCreature(ProfessorPutricideGUID))
- putricide->DespawnOrUnsummon();
- }
- }
break;
case DATA_BLOOD_QUEEN_LANA_THEL:
HandleGameObject(BloodwingSigilGUID, state != DONE);
- if (state == DONE)
+ if (instance->IsHeroic() && state == FAIL)
+ HandleHeroicAttempts();
+ else if (state == DONE)
CheckLichKingAvailability();
- if (instance->IsHeroic())
- {
- if (state == FAIL && HeroicAttempts)
- {
- --HeroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
- if (!HeroicAttempts)
- if (Creature* bq = instance->GetCreature(BloodQueenLanaThelGUID))
- bq->DespawnOrUnsummon();
- }
- }
break;
case DATA_VALITHRIA_DREAMWALKER:
if (state == DONE)
@@ -962,19 +963,10 @@ class instance_icecrown_citadel : public InstanceMapScript
break;
case DATA_SINDRAGOSA:
HandleGameObject(FrostwingSigilGUID, state != DONE);
- if (state == DONE)
+ if (instance->IsHeroic() && state == FAIL)
+ HandleHeroicAttempts();
+ else if (state == DONE)
CheckLichKingAvailability();
- if (instance->IsHeroic())
- {
- if (state == FAIL && HeroicAttempts)
- {
- --HeroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
- if (!HeroicAttempts)
- if (Creature* sindra = instance->GetCreature(SindragosaGUID))
- sindra->DespawnOrUnsummon();
- }
- }
break;
case DATA_THE_LICH_KING:
{
@@ -986,19 +978,9 @@ class instance_icecrown_citadel : public InstanceMapScript
if (GameObject* platform = instance->GetGameObject(ArthasPlatformGUID))
platform->SetFarVisible(state == IN_PROGRESS);
- if (instance->IsHeroic())
- {
- if (state == FAIL && HeroicAttempts)
- {
- --HeroicAttempts;
- DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
- if (!HeroicAttempts)
- if (Creature* theLichKing = instance->GetCreature(TheLichKingGUID))
- theLichKing->DespawnOrUnsummon();
- }
- }
-
- if (state == DONE)
+ if (instance->IsHeroic() && state == FAIL)
+ HandleHeroicAttempts();
+ else if (state == DONE)
{
if (GameObject* bolvar = instance->GetGameObject(FrozenBolvarGUID))
bolvar->SetRespawnTime(7 * DAY);