diff --git a/sql/updates/world/custom/custom_2020_01_05_00_world.sql b/sql/updates/world/custom/custom_2020_01_05_00_world.sql new file mode 100644 index 00000000000..d16111508f3 --- /dev/null +++ b/sql/updates/world/custom/custom_2020_01_05_00_world.sql @@ -0,0 +1,16 @@ +DELETE FROM `creature` WHERE `guid` IN (137743, 208786, 208778, 208777, 95035, 137744, 137745, 137788, 137787, 137786, 137785, 137784); +DELETE FROM `creature_addon` WHERE `guid` IN (137743, 208786, 208778, 208777, 95035, 137744, 137745, 137788, 137787, 137786, 137785, 137784); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (-137743, -208786, -208778, -208777, -95035, -137744, -137745, -137788, -137787, -137786, -137785, -137784) AND `source_type`= 0; +UPDATE `creature_template` SET `AIName`= '' WHERE `entry` IN (38471, 38491, 38492, 38490, 38494, 38501, 38551, 38558, 39123, 38557, 38589); + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN +('spell_rotface_slime_spray', +'spell_frost_giant_death_plague', +'spell_icc_harvest_blight_specimen'); + +UPDATE `creature_template` SET `ScriptName`= '' WHERE `ScriptName` IN +('npc_alchemist_adrianna', +'npc_rotting_frost_giant', +'npc_darnavan'); + +DELETE FROM `areatrigger_scripts` WHERE `ScriptName`= 'at_icc_start_blood_quickening'; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index d25dd04a88d..1f6c24e30cc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -68,7 +68,6 @@ enum Spells SPELL_TWILIGHT_BLOODBOLT = 71446, SPELL_INCITE_TERROR = 73070, SPELL_BLOODBOLT_WHIRL = 71772, - SPELL_ANNIHILATE = 71322, // Blood Infusion SPELL_BLOOD_INFUSION_CREDIT = 72934 @@ -123,12 +122,10 @@ enum Points POINT_CENTER = 1, POINT_AIR = 2, POINT_GROUND = 3, - POINT_MINCHAR = 4, }; Position const centerPos = {4595.7090f, 2769.4190f, 400.6368f, 0.000000f}; Position const airPos = {4595.7090f, 2769.4190f, 422.3893f, 0.000000f}; -Position const mincharPos = {4629.3711f, 2782.6089f, 424.6390f, 0.000000f}; bool IsVampire(Unit const* unit) { @@ -153,8 +150,6 @@ class boss_blood_queen_lana_thel : public CreatureScript void Initialize() { _offtankGUID.Clear(); - _creditBloodQuickening = false; - _killMinchar = false; } void Reset() override @@ -190,10 +185,9 @@ class boss_blood_queen_lana_thel : public CreatureScript DoCast(me, SPELL_SHROUD_OF_SORROW, true); DoCast(me, SPELL_FRENZIED_BLOODTHIRST_VISUAL, true); - _creditBloodQuickening = instance->GetData(DATA_BLOOD_QUICKENING_STATE) == IN_PROGRESS; } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { _JustDied(); Talk(SAY_DEATH); @@ -202,25 +196,6 @@ class boss_blood_queen_lana_thel : public CreatureScript DoCastAOE(SPELL_BLOOD_INFUSION_CREDIT, true); CleanAuras(); - - if (!killer) - return; - - // Blah, credit the quest - if (_creditBloodQuickening) - { - instance->SetData(DATA_BLOOD_QUICKENING_STATE, DONE); - if (Player* player = killer->ToPlayer()) - player->RewardPlayerAndGroupAtEvent(Is25ManRaid() ? NPC_INFILTRATOR_MINCHAR_BQ_25 : NPC_INFILTRATOR_MINCHAR_BQ, player); - if (Creature* minchar = me->FindNearestCreature(NPC_INFILTRATOR_MINCHAR_BQ, 200.0f)) - { - minchar->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); - minchar->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND); - minchar->SetCanFly(false); - minchar->RemoveAllAuras(); - minchar->GetMotionMaster()->MoveCharge(4629.3711f, 2782.6089f, 401.5301f, SPEED_CHARGE / 3.0f); - } - } } void CleanAuras() @@ -237,40 +212,15 @@ class boss_blood_queen_lana_thel : public CreatureScript instance->DoRemoveAurasDueToSpellOnPlayers(PRESENCE_OF_THE_DARKFALLEN); } - void DoAction(int32 action) override - { - if (action != ACTION_KILL_MINCHAR) - return; - - if (instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == IN_PROGRESS) - _killMinchar = true; - else - { - me->SetDisableGravity(true); - me->SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND); - me->GetMotionMaster()->MovePoint(POINT_MINCHAR, mincharPos); - } - } - void EnterEvadeMode(EvadeReason why) override { if (!_EnterEvadeMode(why)) return; CleanAuras(); - if (_killMinchar) - { - _killMinchar = false; - me->SetDisableGravity(true); - me->SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND); - me->GetMotionMaster()->MovePoint(POINT_MINCHAR, mincharPos); - } - else - { - me->AddUnitState(UNIT_STATE_EVADE); - me->GetMotionMaster()->MoveTargetedHome(); - Reset(); - } + me->AddUnitState(UNIT_STATE_EVADE); + me->GetMotionMaster()->MoveTargetedHome(); + Reset(); } void JustReachedHome() override @@ -332,12 +282,6 @@ class boss_blood_queen_lana_thel : public CreatureScript AttackStart(victim); events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500, EVENT_GROUP_CANCELLABLE); break; - case POINT_MINCHAR: - DoCast(me, SPELL_ANNIHILATE, true); - // already in evade mode - me->GetMotionMaster()->MoveTargetedHome(); - Reset(); - break; default: break; } @@ -519,8 +463,6 @@ class boss_blood_queen_lana_thel : public CreatureScript GuidSet _vampires; GuidSet _bloodboltedPlayers; ObjectGuid _offtankGUID; - bool _creditBloodQuickening; - bool _killMinchar; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index 659432563d6..42dbbf1e391 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -459,24 +459,6 @@ class spell_festergut_blighted_spores : public SpellScriptLoader if (InstanceScript* instance = GetTarget()->GetInstanceScript()) if (Creature* festergut = ObjectAccessor::GetCreature(*GetTarget(), instance->GetGuidData(DATA_FESTERGUT))) festergut->AI()->SetData(DATA_INOCULATED_STACK, GetStackAmount()); - - HandleResidue(); - } - - void HandleResidue() - { - Player* target = GetUnitOwner()->ToPlayer(); - if (!target) - return; - - if (target->HasAura(SPELL_ORANGE_BLIGHT_RESIDUE)) - return; - - uint32 questId = target->GetMap()->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10; - if (target->GetQuestStatus(questId) != QUEST_STATUS_INCOMPLETE) - return; - - target->CastSpell(target, SPELL_ORANGE_BLIGHT_RESIDUE, TRIGGERED_FULL_MASK); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 8742dff2de6..0600ff562b8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -48,10 +48,6 @@ enum ScriptTexts SAY_KILL = 14, SAY_BERSERK = 15, SAY_DEATH = 16, - - // Darnavan - SAY_DARNAVAN_AGGRO = 0, - SAY_DARNAVAN_RESCUED = 1, }; enum Spells @@ -111,14 +107,6 @@ enum Spells SPELL_VENGEFUL_BLAST_25N = 72010, SPELL_VENGEFUL_BLAST_10H = 72011, SPELL_VENGEFUL_BLAST_25H = 72012, - - // Darnavan - SPELL_BLADESTORM = 65947, - SPELL_CHARGE = 65927, - SPELL_INTIMIDATING_SHOUT = 65930, - SPELL_MORTAL_STRIKE = 65926, - SPELL_SHATTERING_THROW = 65940, - SPELL_SUNDER_ARMOR = 65936, }; enum EventTypes @@ -147,26 +135,11 @@ enum Groups GROUP_TWO = 2 }; -enum DeprogrammingData -{ - NPC_DARNAVAN_10 = 38472, - NPC_DARNAVAN_25 = 38485, - NPC_DARNAVAN_CREDIT_10 = 39091, - NPC_DARNAVAN_CREDIT_25 = 39092, - - ACTION_COMPLETE_QUEST = -384720, - POINT_DESPAWN = 384721, -}; - enum Actions { ACTION_START_INTRO }; -#define NPC_DARNAVAN RAID_MODE(NPC_DARNAVAN_10, NPC_DARNAVAN_25, NPC_DARNAVAN_10, NPC_DARNAVAN_25) -#define NPC_DARNAVAN_CREDIT RAID_MODE(NPC_DARNAVAN_CREDIT_10, NPC_DARNAVAN_CREDIT_25, NPC_DARNAVAN_CREDIT_10, NPC_DARNAVAN_CREDIT_25) -#define QUEST_DEPROGRAMMING RAID_MODE(QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25, QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25) - uint32 const SummonEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT}; Position const SummonPositions[7] = @@ -180,21 +153,6 @@ Position const SummonPositions[7] = {-524.2480f, 2211.920f, 62.90960f, 3.141592f}, // 7 Upper (Random Cultist) }; -class DarnavanMoveEvent : public BasicEvent -{ - public: - DarnavanMoveEvent(Creature& darnavan) : _darnavan(darnavan) { } - - bool Execute(uint64 /*time*/, uint32 /*diff*/) override - { - _darnavan.GetMotionMaster()->MovePoint(POINT_DESPAWN, SummonPositions[6]); - return true; - } - - private: - Creature& _darnavan; -}; - class boss_lady_deathwhisper : public CreatureScript { public: @@ -343,7 +301,7 @@ class boss_lady_deathwhisper : public CreatureScript instance->SetBossState(DATA_LADY_DEATHWHISPER, IN_PROGRESS); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); @@ -357,35 +315,6 @@ class boss_lady_deathwhisper : public CreatureScript if (livingAddEntries.size() >= 5) instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_FULL_HOUSE, 0, me); - if (Creature* darnavan = ObjectAccessor::GetCreature(*me, _darnavanGUID)) - { - if (darnavan->IsAlive()) - { - darnavan->SetFaction(FACTION_FRIENDLY); - darnavan->CombatStop(true); - darnavan->GetMotionMaster()->MoveIdle(); - darnavan->SetReactState(REACT_PASSIVE); - darnavan->m_Events.AddEvent(new DarnavanMoveEvent(*darnavan), darnavan->m_Events.CalculateTime(10000)); - darnavan->AI()->Talk(SAY_DARNAVAN_RESCUED); - - if (!killer) - return; - - if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) - { - if (Group* group = owner->GetGroup()) - { - for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) - if (Player* member = itr->GetSource()) - if (member->IsInMap(owner)) - member->KilledMonsterCredit(NPC_DARNAVAN_CREDIT); - } - else - owner->KilledMonsterCredit(NPC_DARNAVAN_CREDIT); - } - } - } - _JustDied(); } @@ -467,11 +396,6 @@ class boss_lady_deathwhisper : public CreatureScript { switch (summon->GetEntry()) { - case NPC_DARNAVAN_10: - case NPC_DARNAVAN_25: - _darnavanGUID = summon->GetGUID(); - summon->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM)); - return; case NPC_VENGEFUL_SHADE: if (_nextVengefulShadeTargetGUID.empty()) break; @@ -508,12 +432,7 @@ class boss_lady_deathwhisper : public CreatureScript uint8 addIndex = _waveCounter & 1; uint8 addIndexOther = uint8(addIndex ^ 1); - // Summon first add, replace it with Darnavan if weekly quest is active - if (_waveCounter || !sPoolMgr->IsSpawnedObject(QUEST_DEPROGRAMMING)) - Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3]); - else - Summon(NPC_DARNAVAN, SummonPositions[addIndex * 3]); - + Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3]); Summon(SummonEntries[addIndexOther], SummonPositions[addIndex * 3 + 1]); Summon(SummonEntries[addIndex], SummonPositions[addIndex * 3 + 2]); if (Is25ManRaid()) @@ -860,138 +779,6 @@ class npc_vengeful_shade : public CreatureScript } }; -class npc_darnavan : public CreatureScript -{ - public: - npc_darnavan() : CreatureScript("npc_darnavan") { } - - struct npc_darnavanAI : public ScriptedAI - { - npc_darnavanAI(Creature* creature) : ScriptedAI(creature) - { - Initialize(); - } - - void Initialize() - { - _canCharge = true; - _canShatter = true; - } - - void Reset() override - { - _events.Reset(); - _events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, Seconds(10)); - _events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, Seconds(20), Seconds(25)); - _events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, Seconds(25), Seconds(30)); - _events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, Seconds(5), Seconds(8)); - Initialize(); - } - - void JustDied(Unit* killer) override - { - _events.Reset(); - - if (!killer) - return; - - if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) - { - if (Group* group = owner->GetGroup()) - { - for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) - if (Player* member = itr->GetSource()) - if (member->IsInMap(owner)) - member->FailQuest(QUEST_DEPROGRAMMING); - } - else - owner->FailQuest(QUEST_DEPROGRAMMING); - } - } - - void MovementInform(uint32 type, uint32 id) override - { - if (type != POINT_MOTION_TYPE || id != POINT_DESPAWN) - return; - - me->DespawnOrUnsummon(); - } - - void JustEngagedWith(Unit* /*victim*/) override - { - Talk(SAY_DARNAVAN_AGGRO); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - _events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - if (_canShatter && me->GetVictim() && me->EnsureVictim()->IsImmunedToDamage(SPELL_SCHOOL_MASK_NORMAL)) - { - DoCastVictim(SPELL_SHATTERING_THROW); - _canShatter = false; - _events.ScheduleEvent(EVENT_DARNAVAN_SHATTERING_THROW, Seconds(30)); - return; - } - - if (_canCharge && !me->IsWithinMeleeRange(me->GetVictim())) - { - DoCastVictim(SPELL_CHARGE); - _canCharge = false; - _events.ScheduleEvent(EVENT_DARNAVAN_CHARGE, Seconds(20)); - return; - } - - while (uint32 eventId = _events.ExecuteEvent()) - { - switch (eventId) - { - case EVENT_DARNAVAN_BLADESTORM: - DoCast(SPELL_BLADESTORM); - _events.ScheduleEvent(EVENT_DARNAVAN_BLADESTORM, Seconds(90), Seconds(100)); - break; - case EVENT_DARNAVAN_CHARGE: - _canCharge = true; - break; - case EVENT_DARNAVAN_INTIMIDATING_SHOUT: - DoCast(SPELL_INTIMIDATING_SHOUT); - _events.ScheduleEvent(EVENT_DARNAVAN_INTIMIDATING_SHOUT, Seconds(90), Minutes(2)); - break; - case EVENT_DARNAVAN_MORTAL_STRIKE: - DoCastVictim(SPELL_MORTAL_STRIKE); - _events.ScheduleEvent(EVENT_DARNAVAN_MORTAL_STRIKE, Seconds(15), Seconds(30)); - break; - case EVENT_DARNAVAN_SHATTERING_THROW: - _canShatter = true; - break; - case EVENT_DARNAVAN_SUNDER_ARMOR: - DoCastVictim(SPELL_SUNDER_ARMOR); - _events.ScheduleEvent(EVENT_DARNAVAN_SUNDER_ARMOR, Seconds(3), Seconds(7)); - break; - } - } - - DoMeleeAttackIfReady(); - } - - private: - EventMap _events; - bool _canCharge; - bool _canShatter; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetIcecrownCitadelAI(creature); - } -}; - class spell_deathwhisper_mana_barrier : public SpellScriptLoader { public: @@ -1109,7 +896,6 @@ void AddSC_boss_lady_deathwhisper() new npc_cult_fanatic(); new npc_cult_adherent(); new npc_vengeful_shade(); - new npc_darnavan(); new spell_deathwhisper_mana_barrier(); new spell_deathwhisper_dominated_mind(); new spell_deathwhisper_summon_spirits(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index a4fd5edd69a..44c328d1749 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -872,43 +872,6 @@ class spell_rotface_vile_gas_trigger : public SpellScriptLoader } }; -class spell_rotface_slime_spray : public SpellScriptLoader -{ - public: - spell_rotface_slime_spray() : SpellScriptLoader("spell_rotface_slime_spray") { } - - class spell_rotface_slime_spray_SpellScript : public SpellScript - { - PrepareSpellScript(spell_rotface_slime_spray_SpellScript); - - void HandleResidue() - { - Player* target = GetHitPlayer(); - if (!target) - return; - - if (target->HasAura(SPELL_GREEN_BLIGHT_RESIDUE)) - return; - - uint32 questId = target->GetMap()->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10; - if (target->GetQuestStatus(questId) != QUEST_STATUS_INCOMPLETE) - return; - - target->CastSpell(target, SPELL_GREEN_BLIGHT_RESIDUE, TRIGGERED_FULL_MASK); - } - - void Register() override - { - OnHit += SpellHitFn(spell_rotface_slime_spray_SpellScript::HandleResidue); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_rotface_slime_spray_SpellScript(); - } -}; - void AddSC_boss_rotface() { new boss_rotface(); @@ -924,5 +887,4 @@ void AddSC_boss_rotface() new spell_rotface_unstable_ooze_explosion(); new spell_rotface_unstable_ooze_explosion_suicide(); new spell_rotface_vile_gas_trigger(); - new spell_rotface_slime_spray(); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 1156c89866e..d9c6c487c0d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -1638,9 +1638,6 @@ class at_sindragosa_lair : public AreaTriggerScript if (!instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) && !instance->GetGuidData(DATA_SINDRAGOSA) && instance->GetBossState(DATA_SINDRAGOSA) != DONE) { - if (player->GetMap()->IsHeroic() && !instance->GetData(DATA_HEROIC_ATTEMPTS)) - return true; - player->GetMap()->LoadGrid(SindragosaSpawnPos.GetPositionX(), SindragosaSpawnPos.GetPositionY()); if (Creature* sindragosa = player->GetMap()->SummonCreature(NPC_SINDRAGOSA, SindragosaSpawnPos)) sindragosa->AI()->DoAction(ACTION_START_FROSTWYRM); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 3828c35a9e8..16625d61291 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -151,8 +151,6 @@ enum Misc DATA_SUPPRESSERS_COUNT = 4 }; -Position const ValithriaSpawnPos = {4210.813f, 2484.443f, 364.9558f, 0.01745329f}; - class RisenArchmageCheck { public: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 0138815b0a3..d03b45086e8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -29,13 +29,6 @@ #include "TemporarySummon.h" #include "VehicleDefines.h" -// Weekly quest support -// * Deprogramming (DONE) -// * Securing the Ramparts (DONE) -// * Residue Rendezvous (DONE) -// * Blood Quickening (DONE) -// * Respite for a Tormented Soul - enum ICCTexts { // Highlord Tirion Fordring (at Light's Hammer) @@ -70,9 +63,6 @@ enum ICCTexts // Deathbound Ward SAY_TRAP_ACTIVATE = 0, - // Rotting Frost Giant - EMOTE_DEATH_PLAGUE_WARNING = 0, - // Sister Svalna SAY_SVALNA_KILL_CAPTAIN = 1, // happens when she kills a captain SAY_SVALNA_KILL = 4, @@ -103,21 +93,9 @@ enum ICCTexts enum ICCSpells { - // Rotting Frost Giant - SPELL_DEATH_PLAGUE = 72879, - SPELL_DEATH_PLAGUE_AURA = 72865, - SPELL_RECENTLY_INFECTED = 72884, - SPELL_DEATH_PLAGUE_KILL = 72867, - SPELL_STOMP = 64652, - SPELL_ARCTIC_BREATH = 72848, - // Frost Freeze Trap SPELL_COLDFLAME_JETS = 70460, - // Alchemist Adrianna - SPELL_HARVEST_BLIGHT_SPECIMEN = 72155, - SPELL_HARVEST_BLIGHT_SPECIMEN25 = 72162, - // Crok Scourgebane SPELL_ICEBOUND_ARMOR = 70714, SPELL_SCOURGE_STRIKE = 71488, @@ -601,78 +579,6 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript } }; -class npc_rotting_frost_giant : public CreatureScript -{ - public: - npc_rotting_frost_giant() : CreatureScript("npc_rotting_frost_giant") { } - - struct npc_rotting_frost_giantAI : public ScriptedAI - { - npc_rotting_frost_giantAI(Creature* creature) : ScriptedAI(creature) - { - } - - void Reset() override - { - _events.Reset(); - _events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000); - _events.ScheduleEvent(EVENT_STOMP, urand(5000, 8000)); - _events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(10000, 15000)); - } - - void JustDied(Unit* /*killer*/) override - { - _events.Reset(); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - _events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventId = _events.ExecuteEvent()) - { - switch (eventId) - { - case EVENT_DEATH_PLAGUE: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true)) - { - Talk(EMOTE_DEATH_PLAGUE_WARNING, target); - DoCast(target, SPELL_DEATH_PLAGUE); - } - _events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000); - break; - case EVENT_STOMP: - DoCastVictim(SPELL_STOMP); - _events.ScheduleEvent(EVENT_STOMP, urand(15000, 18000)); - break; - case EVENT_ARCTIC_BREATH: - DoCastVictim(SPELL_ARCTIC_BREATH); - _events.ScheduleEvent(EVENT_ARCTIC_BREATH, urand(26000, 33000)); - break; - default: - break; - } - } - - DoMeleeAttackIfReady(); - } - - private: - EventMap _events; - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetIcecrownCitadelAI(creature); - } -}; - class npc_frost_freeze_trap : public CreatureScript { public: @@ -719,30 +625,6 @@ class npc_frost_freeze_trap : public CreatureScript } }; -class npc_alchemist_adrianna : public CreatureScript -{ - public: - npc_alchemist_adrianna() : CreatureScript("npc_alchemist_adrianna") { } - - struct npc_alchemist_adriannaAI : public ScriptedAI - { - npc_alchemist_adriannaAI(Creature* creature) : ScriptedAI(creature) { } - - bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override - { - if (!me->FindCurrentSpellBySpellId(SPELL_HARVEST_BLIGHT_SPECIMEN) && !me->FindCurrentSpellBySpellId(SPELL_HARVEST_BLIGHT_SPECIMEN25)) - if (player->HasAura(SPELL_ORANGE_BLIGHT_RESIDUE) && player->HasAura(SPELL_GREEN_BLIGHT_RESIDUE)) - me->CastSpell(me, SPELL_HARVEST_BLIGHT_SPECIMEN, false); - return false; - } - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetIcecrownCitadelAI(creature); - } -}; - class boss_sister_svalna : public CreatureScript { public: @@ -1888,118 +1770,6 @@ class spell_icc_sprit_alarm : public SpellScriptLoader } }; -class DeathPlagueTargetSelector -{ - public: - explicit DeathPlagueTargetSelector(Unit* caster) : _caster(caster) { } - - bool operator()(WorldObject* object) const - { - if (object == _caster) - return true; - - if (object->GetTypeId() != TYPEID_PLAYER) - return true; - - if (object->ToUnit()->HasAura(SPELL_RECENTLY_INFECTED) || object->ToUnit()->HasAura(SPELL_DEATH_PLAGUE_AURA)) - return true; - - return false; - } - - private: - Unit* _caster; -}; - -class spell_frost_giant_death_plague : public SpellScriptLoader -{ - public: - spell_frost_giant_death_plague() : SpellScriptLoader("spell_frost_giant_death_plague") { } - - class spell_frost_giant_death_plague_SpellScript : public SpellScript - { - PrepareSpellScript(spell_frost_giant_death_plague_SpellScript); - - // First effect - void CountTargets(std::list& targets) - { - targets.remove(GetCaster()); - _failed = targets.empty(); - } - - // Second effect - void FilterTargets(std::list& targets) - { - // Select valid targets for jump - targets.remove_if(DeathPlagueTargetSelector(GetCaster())); - if (!targets.empty()) - { - WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets); - targets.clear(); - targets.push_back(target); - } - - targets.push_back(GetCaster()); - } - - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - if (GetHitUnit() != GetCaster()) - GetCaster()->CastSpell(GetHitUnit(), SPELL_DEATH_PLAGUE_AURA, true); - else if (_failed) - GetCaster()->CastSpell(GetCaster(), SPELL_DEATH_PLAGUE_KILL, true); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_frost_giant_death_plague_SpellScript::CountTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_frost_giant_death_plague_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ALLY); - OnEffectHitTarget += SpellEffectFn(spell_frost_giant_death_plague_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); - } - - bool _failed = false; - }; - - SpellScript* GetSpellScript() const override - { - return new spell_frost_giant_death_plague_SpellScript(); - } -}; - -class spell_icc_harvest_blight_specimen : public SpellScriptLoader -{ - public: - spell_icc_harvest_blight_specimen() : SpellScriptLoader("spell_icc_harvest_blight_specimen") { } - - class spell_icc_harvest_blight_specimen_SpellScript : public SpellScript - { - PrepareSpellScript(spell_icc_harvest_blight_specimen_SpellScript); - - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); - } - - void HandleQuestComplete(SpellEffIndex /*effIndex*/) - { - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_icc_harvest_blight_specimen_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - OnEffectHitTarget += SpellEffectFn(spell_icc_harvest_blight_specimen_SpellScript::HandleQuestComplete, EFFECT_1, SPELL_EFFECT_QUEST_COMPLETE); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_icc_harvest_blight_specimen_SpellScript(); - } -}; - class AliveCheck { public: @@ -2203,20 +1973,6 @@ class at_icc_shutdown_traps : public AreaTriggerScript } }; -class at_icc_start_blood_quickening : public AreaTriggerScript -{ - public: - at_icc_start_blood_quickening() : AreaTriggerScript("at_icc_start_blood_quickening") { } - - bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override - { - if (InstanceScript* instance = player->GetInstanceScript()) - if (instance->GetData(DATA_BLOOD_QUICKENING_STATE) == NOT_STARTED) - instance->SetData(DATA_BLOOD_QUICKENING_STATE, IN_PROGRESS); - return true; - } -}; - class at_icc_start_frostwing_gauntlet : public AreaTriggerScript { public: @@ -2234,9 +1990,7 @@ class at_icc_start_frostwing_gauntlet : public AreaTriggerScript void AddSC_icecrown_citadel() { new npc_highlord_tirion_fordring_lh(); - new npc_rotting_frost_giant(); new npc_frost_freeze_trap(); - new npc_alchemist_adrianna(); new boss_sister_svalna(); new npc_crok_scourgebane(); new npc_captain_arnath(); @@ -2248,14 +2002,11 @@ void AddSC_icecrown_citadel() new npc_arthas_teleport_visual(); new spell_icc_stoneform(); new spell_icc_sprit_alarm(); - new spell_frost_giant_death_plague(); - new spell_icc_harvest_blight_specimen(); new spell_trigger_spell_from_caster("spell_svalna_caress_of_death", SPELL_IMPALING_SPEAR_KILL); new spell_svalna_revive_champion(); new spell_svalna_remove_spear(); new spell_icc_soul_missile(); new at_icc_saurfang_portal(); new at_icc_shutdown_traps(); - new at_icc_start_blood_quickening(); new at_icc_start_frostwing_gauntlet(); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index c5d47c8e470..67f1716ef82 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -29,10 +29,7 @@ enum TriggerCastFlags : uint32; uint32 const EncounterCount = 13; uint32 const WeeklyNPCs = 9; -uint32 const MaxHeroicAttempts = 50; -// Defined in boss_valithria_dreamwalker.cpp -extern Position const ValithriaSpawnPos; // Defined in boss_sindragosa.cpp extern Position const SindragosaSpawnPos; // Defined in boss_the_lich_king.cpp @@ -106,8 +103,6 @@ enum ICDataTypes DATA_RIMEFANG = 25, DATA_COLDFLAME_JETS = 26, DATA_TEAM_IN_INSTANCE = 27, - DATA_BLOOD_QUICKENING_STATE = 28, - DATA_HEROIC_ATTEMPTS = 29, DATA_CROK_SCOURGEBANE = 30, DATA_CAPTAIN_ARNATH = 31, DATA_CAPTAIN_BRANDON = 32, @@ -153,19 +148,6 @@ enum ICCreaturesIds NPC_UTHER_THE_LIGHTBRINGER_QUEST = 38608, NPC_LADY_SYLVANAS_WINDRUNNER_QUEST = 38609, - // Weekly quests - NPC_INFILTRATOR_MINCHAR = 38471, - NPC_KOR_KRON_LIEUTENANT = 38491, - NPC_SKYBREAKER_LIEUTENANT = 38492, - NPC_ROTTING_FROST_GIANT_10 = 38490, - NPC_ROTTING_FROST_GIANT_25 = 38494, - NPC_ALCHEMIST_ADRIANNA = 38501, - NPC_ALRIN_THE_AGILE = 38551, - NPC_INFILTRATOR_MINCHAR_BQ = 38558, - NPC_INFILTRATOR_MINCHAR_BQ_25 = 39123, - NPC_MINCHAR_BEAM_STALKER = 38557, - NPC_VALITHRIA_DREAMWALKER_QUEST = 38589, - // Lord Marrowgar NPC_LORD_MARROWGAR = 36612, NPC_COLDFLAME = 36672, @@ -487,9 +469,6 @@ enum ICSharedActions ACTION_ROTFACE_DEATH = -366272, ACTION_CHANGE_PHASE = -366780, - // Blood-Queen Lana'thel - ACTION_KILL_MINCHAR = -379550, - // Frostwing Halls gauntlet event ACTION_VRYKUL_DEATH = 37129, @@ -502,29 +481,6 @@ enum ICSharedActions ACTION_FROSTMOURNE_INTRO = -36823 }; -enum ICWeekliesICC -{ - QUEST_DEPROGRAMMING_10 = 24869, - QUEST_DEPROGRAMMING_25 = 24875, - QUEST_SECURING_THE_RAMPARTS_10 = 24870, - QUEST_SECURING_THE_RAMPARTS_25 = 24877, - QUEST_RESIDUE_RENDEZVOUS_10 = 24873, - QUEST_RESIDUE_RENDEZVOUS_25 = 24878, - QUEST_BLOOD_QUICKENING_10 = 24874, - QUEST_BLOOD_QUICKENING_25 = 24879, - QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_10 = 24872, - QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25 = 24880 -}; - -enum ICWorldStatesICC -{ - WORLDSTATE_SHOW_TIMER = 4903, - WORLDSTATE_EXECUTION_TIME = 4904, - WORLDSTATE_SHOW_ATTEMPTS = 4940, - WORLDSTATE_ATTEMPTS_REMAINING = 4941, - WORLDSTATE_ATTEMPTS_MAX = 4942 -}; - enum ICAreaIds { AREA_ICECROWN_CITADEL = 4812 diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 13243efdfa9..6ca82bfcd15 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -44,7 +44,6 @@ enum EventIds enum TimedEvents { - EVENT_UPDATE_EXECUTION_TIME = 1, EVENT_QUAKE_SHATTER = 2, EVENT_REBUILD_PLATFORM = 3, EVENT_RESPAWN_GUNSHIP = 4 @@ -98,27 +97,6 @@ DoorData const doorData[] = {0, 0, DOOR_TYPE_ROOM } // END }; -// this doesnt have to only store questgivers, also can be used for related quest spawns -struct WeeklyQuest -{ - uint32 creatureEntry; - uint32 questId[2]; // 10 and 25 man versions -}; - -// when changing the content, remember to update SetData, DATA_BLOOD_QUICKENING_STATE case for NPC_ALRIN_THE_AGILE index -WeeklyQuest const WeeklyQuestData[WeeklyNPCs] = -{ - {NPC_INFILTRATOR_MINCHAR, {QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25 }}, // Deprogramming - {NPC_KOR_KRON_LIEUTENANT, {QUEST_SECURING_THE_RAMPARTS_10, QUEST_SECURING_THE_RAMPARTS_25 }}, // Securing the Ramparts - {NPC_ROTTING_FROST_GIANT_10, {QUEST_SECURING_THE_RAMPARTS_10, QUEST_SECURING_THE_RAMPARTS_25 }}, // Securing the Ramparts - {NPC_ROTTING_FROST_GIANT_25, {QUEST_SECURING_THE_RAMPARTS_10, QUEST_SECURING_THE_RAMPARTS_25 }}, // Securing the Ramparts - {NPC_ALCHEMIST_ADRIANNA, {QUEST_RESIDUE_RENDEZVOUS_10, QUEST_RESIDUE_RENDEZVOUS_25 }}, // Residue Rendezvous - {NPC_ALRIN_THE_AGILE, {QUEST_BLOOD_QUICKENING_10, QUEST_BLOOD_QUICKENING_25 }}, // Blood Quickening - {NPC_INFILTRATOR_MINCHAR_BQ, {QUEST_BLOOD_QUICKENING_10, QUEST_BLOOD_QUICKENING_25 }}, // Blood Quickening - {NPC_MINCHAR_BEAM_STALKER, {QUEST_BLOOD_QUICKENING_10, QUEST_BLOOD_QUICKENING_25 }}, // Blood Quickening - {NPC_VALITHRIA_DREAMWALKER_QUEST, {QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_10, QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25}} // Respite for a Tormented Soul -}; - // NPCs spawned at Light's Hammer on Lich King dead Position const JainaSpawnPos = { -48.65278f, 2211.026f, 27.98586f, 3.124139f }; Position const MuradinSpawnPos = { -47.34549f, 2208.087f, 27.98586f, 3.106686f }; @@ -139,15 +117,12 @@ class instance_icecrown_citadel : public InstanceMapScript LoadBossBoundaries(boundaries); LoadDoorData(doorData); TeamInInstance = 0; - HeroicAttempts = MaxHeroicAttempts; IsBonedEligible = true; IsOozeDanceEligible = true; IsNauseaEligible = true; IsOrbWhispererEligible = true; ColdflameJetsState = NOT_STARTED; UpperSpireTeleporterActiveState = NOT_STARTED; - BloodQuickeningState = NOT_STARTED; - BloodQuickeningMinutes = 0; BloodPrinceIntro = 1; SindragosaIntro = 1; LadyDeathwhisperElevatorTimer = 3000; @@ -168,15 +143,6 @@ class instance_icecrown_citadel : public InstanceMapScript } } - void FillInitialWorldStates(WorldPacket& data) override - { - data << uint32(WORLDSTATE_SHOW_TIMER) << uint32(BloodQuickeningState == IN_PROGRESS); - data << uint32(WORLDSTATE_EXECUTION_TIME) << uint32(BloodQuickeningMinutes); - data << uint32(WORLDSTATE_SHOW_ATTEMPTS) << uint32(instance->IsHeroic()); - data << uint32(WORLDSTATE_ATTEMPTS_REMAINING) << uint32(HeroicAttempts); - data << uint32(WORLDSTATE_ATTEMPTS_MAX) << uint32(MaxHeroicAttempts); - } - void OnPlayerEnter(Player* player) override { if (!TeamInInstance) @@ -318,29 +284,6 @@ class instance_icecrown_citadel : public InstanceMapScript uint32 entry = data->id; switch (entry) { - case NPC_INFILTRATOR_MINCHAR: - case NPC_KOR_KRON_LIEUTENANT: - case NPC_ALCHEMIST_ADRIANNA: - case NPC_ALRIN_THE_AGILE: - case NPC_INFILTRATOR_MINCHAR_BQ: - case NPC_MINCHAR_BEAM_STALKER: - case NPC_VALITHRIA_DREAMWALKER_QUEST: - { - for (uint8 questIndex = 0; questIndex < WeeklyNPCs; ++questIndex) - { - if (WeeklyQuestData[questIndex].creatureEntry == entry) - { - uint8 diffIndex = uint8(instance->GetSpawnMode() & 1); - if (!sPoolMgr->IsSpawnedObject(WeeklyQuestData[questIndex].questId[diffIndex])) - return 0; - break; - } - } - - if (entry == NPC_KOR_KRON_LIEUTENANT && TeamInInstance == ALLIANCE) - return NPC_SKYBREAKER_LIEUTENANT; - break; - } case NPC_HORDE_GUNSHIP_CANNON: case NPC_ORGRIMS_HAMMER_CREW: case NPC_SKY_REAVER_KORM_BLACKSCAR: @@ -454,9 +397,6 @@ class instance_icecrown_citadel : public InstanceMapScript case NPC_RIMEFANG: case NPC_SPINESTALKER: { - if (instance->IsHeroic() && !HeroicAttempts) - return; - if (GetBossState(DATA_SINDRAGOSA) == DONE) return; @@ -712,10 +652,6 @@ class instance_icecrown_citadel : public InstanceMapScript return UpperSpireTeleporterActiveState; case DATA_TEAM_IN_INSTANCE: return TeamInInstance; - case DATA_BLOOD_QUICKENING_STATE: - return BloodQuickeningState; - case DATA_HEROIC_ATTEMPTS: - return HeroicAttempts; case DATA_BLOOD_PRINCE_COUNCIL_INTRO: return BloodPrinceIntro; case DATA_SINDRAGOSA_INTRO: @@ -916,39 +852,15 @@ class instance_icecrown_citadel : public InstanceMapScript HandleGameObject(PlagueSigilGUID, state != DONE); 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) 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) { - if (sPoolMgr->IsSpawnedObject(WeeklyQuestData[8].questId[instance->GetSpawnMode() & 1])) - instance->SummonCreature(NPC_VALITHRIA_DREAMWALKER_QUEST, ValithriaSpawnPos); if (GameObject* teleporter = instance->GetGameObject(TeleporterSindragosaGUID)) SetTeleporterState(teleporter, true); } @@ -957,17 +869,6 @@ class instance_icecrown_citadel : public InstanceMapScript HandleGameObject(FrostwingSigilGUID, state != DONE); 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: { @@ -979,18 +880,6 @@ 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 (GameObject* bolvar = instance->GetGameObject(FrozenBolvarGUID)) @@ -1055,37 +944,6 @@ class instance_icecrown_citadel : public InstanceMapScript if (ColdflameJetsState == DONE) SaveToDB(); break; - case DATA_BLOOD_QUICKENING_STATE: - { - // skip if nothing changes - if (BloodQuickeningState == data) - break; - - // 5 is the index of Blood Quickening - if (!sPoolMgr->IsSpawnedObject(WeeklyQuestData[5].questId[instance->GetSpawnMode() & 1])) - break; - - switch (data) - { - case IN_PROGRESS: - Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000); - BloodQuickeningMinutes = 30; - DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1); - DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes); - break; - case DONE: - Events.CancelEvent(EVENT_UPDATE_EXECUTION_TIME); - BloodQuickeningMinutes = 0; - DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0); - break; - default: - break; - } - - BloodQuickeningState = data; - SaveToDB(); - break; - } case DATA_UPPERSPIRE_TELE_ACT: UpperSpireTeleporterActiveState = data; if (UpperSpireTeleporterActiveState == DONE) @@ -1303,17 +1161,12 @@ class instance_icecrown_citadel : public InstanceMapScript void WriteSaveDataMore(std::ostringstream& data) override { - data << HeroicAttempts << ' ' - << ColdflameJetsState << ' ' - << BloodQuickeningState << ' ' - << BloodQuickeningMinutes << ' ' + data << ColdflameJetsState << ' ' << UpperSpireTeleporterActiveState; } void ReadSaveDataMore(std::istringstream& data) override { - data >> HeroicAttempts; - uint32 temp = 0; data >> temp; if (temp == IN_PROGRESS) @@ -1321,10 +1174,6 @@ class instance_icecrown_citadel : public InstanceMapScript else ColdflameJetsState = temp ? DONE : NOT_STARTED; - data >> temp; - BloodQuickeningState = temp ? DONE : NOT_STARTED; // DONE means finished (not success/fail) - data >> BloodQuickeningMinutes; - data >> temp; UpperSpireTeleporterActiveState = temp ? DONE : NOT_STARTED; } @@ -1353,7 +1202,7 @@ class instance_icecrown_citadel : public InstanceMapScript else LadyDeathwhisperElevatorTimer -= diff; - if (BloodQuickeningState != IN_PROGRESS && GetBossState(DATA_THE_LICH_KING) != IN_PROGRESS && GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != FAIL) + if (GetBossState(DATA_THE_LICH_KING) != IN_PROGRESS && GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != FAIL) return; Events.Update(diff); @@ -1362,25 +1211,6 @@ class instance_icecrown_citadel : public InstanceMapScript { switch (eventId) { - case EVENT_UPDATE_EXECUTION_TIME: - { - --BloodQuickeningMinutes; - if (BloodQuickeningMinutes) - { - Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000); - DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1); - DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes); - } - else - { - BloodQuickeningState = DONE; - DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0); - if (Creature* bq = instance->GetCreature(BloodQueenLanaThelGUID)) - bq->AI()->DoAction(ACTION_KILL_MINCHAR); - } - SaveToDB(); - break; - } case EVENT_QUAKE_SHATTER: { if (GameObject* platform = instance->GetGameObject(ArthasPlatformGUID)) @@ -1534,9 +1364,6 @@ class instance_icecrown_citadel : public InstanceMapScript std::set FrostwyrmGUIDs; std::set SpinestalkerTrash; std::set RimefangTrash; - uint32 BloodQuickeningState; - uint32 HeroicAttempts; - uint16 BloodQuickeningMinutes; uint8 BloodPrinceIntro; uint8 SindragosaIntro; uint32 LadyDeathwhisperElevatorTimer;