From 6a73c38eb62f0b3ef2fa44b3f60736aad5ba051b Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 21 May 2023 18:11:31 -0300 Subject: [PATCH] fix(Scripts/ShatteredHalls): Rework Nethekurse (#16265) --- .../rev_1684108506441826000.sql | 44 +++ .../game/Spells/SpellInfoCorrections.cpp | 6 + .../ShatteredHalls/boss_nethekurse.cpp | 305 ++++++------------ .../instance_shattered_halls.cpp | 64 +--- 4 files changed, 169 insertions(+), 250 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1684108506441826000.sql diff --git a/data/sql/updates/pending_db_world/rev_1684108506441826000.sql b/data/sql/updates/pending_db_world/rev_1684108506441826000.sql new file mode 100644 index 000000000..aa96370ae --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1684108506441826000.sql @@ -0,0 +1,44 @@ +-- +SET @NPC := 151089 * 10; +DELETE FROM `waypoint_data` WHERE `id` = @NPC; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`) VALUES +(@NPC, 1, 184.78966, 290.3699, -8.18139, 0), +(@NPC, 2, 178.51125, 287.97794, -8.183065, 0), +(@NPC, 3, 171.82281, 289.97687, -8.185595, 0), +(@NPC, 4, 178.51125, 287.97794, -8.183065, 0); + +UPDATE `creature` SET `MovementType` = 2 WHERE `ID1` IN (16807, 20568); + +DELETE FROM `creature_template_addon` WHERE `entry` IN (16807, 20568); +INSERT INTO `creature_template_addon` (`entry`, `path_id`) VALUES +(16807, @NPC), +(20568, @NPC); + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 17083) AND (`source_type` = 0) AND (`id` IN (1, 2, 3)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(17083, 0, 2, 0, 4, 0, 100, 512, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 16807, 50, 0, 0, 0, 0, 0, 0, 'Fel Orc Convert - On Aggro - Set Data 1 1'), +(17083, 0, 3, 0, 6, 0, 100, 512, 0, 0, 0, 0, 0, 45, 1, 2, 0, 0, 0, 0, 19, 16807, 50, 0, 0, 0, 0, 0, 0, 'Fel Orc Convert - On Just Died - Set Data 1 2'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 3) AND (`SourceEntry` = 17083) AND (`SourceId` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 3, 17083, 0, 0, 31, 0, 4, 0, 0, 0, 0, 0, '', 'Only play SAI Event if Invoker is a Player'); + +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_tsh_shadow_sear'; + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 3) AND (`SourceEntry` = 30741); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 3, 30741, 0, 0, 31, 0, 3, 17083, 151090, 0, 0, 0, '', 'Death Coil (30741) can only target Fel Orc Convert (17083) of specific guids'), +(13, 3, 30741, 0, 1, 31, 0, 3, 17083, 151091, 0, 0, 0, '', 'Death Coil (30741) can only target Fel Orc Convert (17083) of specific guids'), +(13, 3, 30741, 0, 2, 31, 0, 3, 17083, 151092, 0, 0, 0, '', 'Death Coil (30741) can only target Fel Orc Convert (17083) of specific guids'), +(13, 3, 30741, 0, 3, 31, 0, 3, 17083, 151093, 0, 0, 0, '', 'Death Coil (30741) can only target Fel Orc Convert (17083) of specific guids'); + +DELETE FROM `spell_script_names` WHERE `spell_id` = 30745; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(30745, 'spell_target_fissures'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 3) AND (`SourceEntry` = 30745); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 30745, 0, 0, 31, 0, 3, 17083, 151090, 0, 0, 0, '', 'Target Fissures (30745) can only target Fel Orc Convert (17083) of specific guids'), +(13, 1, 30745, 0, 1, 31, 0, 3, 17083, 151091, 0, 0, 0, '', 'Target Fissures (30745) can only target Fel Orc Convert (17083) of specific guids'), +(13, 1, 30745, 0, 2, 31, 0, 3, 17083, 151092, 0, 0, 0, '', 'Target Fissures (30745) can only target Fel Orc Convert (17083) of specific guids'), +(13, 1, 30745, 0, 3, 31, 0, 3, 17083, 151093, 0, 0, 0, '', 'Target Fissures (30745) can only target Fel Orc Convert (17083) of specific guids'); diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 9c51fe10f..e37231d02 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4528,6 +4528,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].MiscValue = 224; }); + // Target Fissures + ApplySpellFix({ 30745 }, [](SpellInfo* spellInfo) + { + spellInfo->MaxAffectedTargets = 1; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp index 606abfbdb..52136278e 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp @@ -20,29 +20,30 @@ #include "ScriptedCreature.h" #include "shattered_halls.h" -enum Says +enum Texts { - SAY_INTRO = 0, - SAY_INTRO_2 = 1, - SAY_PEON_ATTACKED = 2, - SAY_PEON_DIES = 3, - SAY_SHADOW_SEAR = 4, - SAY_SHADOW_FISSURE = 5, - SAY_DEATH_COIL = 6, - SAY_SLAY = 7, - SAY_DIE = 8 + SAY_SKIP_INTRO = 0, + SAY_INTRO_2 = 1, + SAY_PEON_ATTACKED = 2, + SAY_PEON_DIES = 3, + SAY_SHADOW_SEAR = 4, + SAY_SHADOW_FISSURE = 5, + SAY_DEATH_COIL = 6, + SAY_SLAY = 7, + SAY_DIE = 8 }; enum Spells { - SPELL_DEATH_COIL = 30500, - SPELL_DARK_SPIN = 30502, - SPELL_SHADOW_FISSURE = 30496, - SPELL_SHADOW_CLEAVE = 30495, + SPELL_DEATH_COIL = 30500, + SPELL_DARK_SPIN = 30502, + SPELL_SHADOW_FISSURE = 30496, + SPELL_SHADOW_CLEAVE = 30495, - SPELL_SHADOW_SEAR = 30735, - SPELL_DEATH_COIL_RP = 30741, - SPELL_SHADOW_FISSURE_RP = 30745 + SPELL_SHADOW_SEAR = 30735, + SPELL_DEATH_COIL_RP = 30741, + SPELL_SHADOW_FISSURE_RP = 30745, + SPELL_LESSER_SHADOW_FISSURE = 30744 }; enum Events @@ -75,12 +76,22 @@ enum Actions ACTION_START_COMBAT = 2, }; -float NethekurseIntroPath[4][3] = +enum Creatures { - {184.78966f, 290.3699f, -8.18139f}, - {178.51125f, 278.779022f, -8.183065f}, - {171.82281f, 289.97687f, -8.185595f}, - {178.51125f, 287.97794f, -8.183065f} + NPC_PEON = 17083 +}; + +struct PeonRoleplay +{ + uint32 spellId; + uint8 textId; +}; + +PeonRoleplay PeonRoleplayData[3] = +{ + { SPELL_DEATH_COIL_RP, SAY_DEATH_COIL }, + { SPELL_SHADOW_FISSURE_RP, SAY_SHADOW_FISSURE }, + { SPELL_SHADOW_SEAR, SAY_SHADOW_SEAR } }; struct boss_grand_warlock_nethekurse : public BossAI @@ -93,16 +104,13 @@ struct boss_grand_warlock_nethekurse : public BossAI }); } - EventMap events2; - void Reset() override { - EventStage = EVENT_STAGE_NONE; - _Reset(); - events2.Reset(); ScheduleHealthCheckEvent(25, [&] { DoCastSelf(SPELL_DARK_SPIN); }); + + instance->SetBossState(DATA_NETHEKURSE, NOT_STARTED); } void JustDied(Unit* /*killer*/) override @@ -116,58 +124,69 @@ struct boss_grand_warlock_nethekurse : public BossAI if (data != SETDATA_DATA) return; - switch (value) + if (value == SETDATA_PEON_AGGRO && PeonEngagedCount <= 4) { - case SETDATA_PEON_AGGRO: - if (PeonEngagedCount >= 4) - return; + Talk(SAY_PEON_ATTACKED); + } + else if (value == SETDATA_PEON_DEATH && PeonKilledCount <= 4) + { + me->GetMotionMaster()->Clear(); + me->GetMotionMaster()->MoveIdle(); + me->SetFacingTo(4.572762489318847656f); - if (EventStage < EVENT_STAGE_TAUNT) - { - Talk(SAY_PEON_ATTACKED); - } - break; - case SETDATA_PEON_DEATH: - if (PeonKilledCount >= 4) - return; + scheduler.Schedule(500ms, GROUP_RP, [this](TaskContext /*context*/) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_APPLAUD); + me->GetMotionMaster()->Initialize(); + Talk(SAY_PEON_DIES); - if (EventStage < EVENT_STAGE_TAUNT) - { - PeonDieRP(); - } if (++PeonKilledCount == 4) { + Talk(SAY_INTRO_2); DoAction(ACTION_CANCEL_INTRO); + if (Unit* target = me->SelectNearestPlayer(80.0f)) + { + AttackStart(target); + } } - break; + }); } } - void PeonDieRP() + void IntroRP() { - me->GetMotionMaster()->Clear(); - me->SetFacingTo(4.572762489318847656f); - scheduler.Schedule(500ms, GROUP_RP, [this](TaskContext /*context*/) + scheduler.Schedule(500ms, GROUP_RP, [this](TaskContext context) { - me->HandleEmoteCommand(EMOTE_ONESHOT_APPLAUD); - Talk(SAY_PEON_DIES); + me->GetMotionMaster()->Clear(); + me->GetMotionMaster()->MoveIdle(); + me->SetFacingTo(4.572762489318847656f); + + scheduler.Schedule(500ms, GROUP_RP, [this](TaskContext /*context*/) + { + scheduler.Schedule(2500ms, GROUP_RP, [this](TaskContext /*context*/) + { + PeonRoleplay roleplayData = Acore::Containers::SelectRandomContainerElement(PeonRoleplayData); + DoCast(me, roleplayData.spellId); + Talk(roleplayData.textId); + me->GetMotionMaster()->Initialize(); + }); + }); + context.Repeat(16400ms, 28500ms); }); } - void AttackStart(Unit* who) override + void JustEngagedWith(Unit* who) override { - if (EventStage < EVENT_STAGE_MAIN) - return; - - if (me->Attack(who, true)) + if (who->GetEntry() == NPC_PEON) { - DoStartMovement(who); - CombatEventScheduler(); + return; } - } - void CombatEventScheduler() - { + _JustEngagedWith(); + DoAction(ACTION_CANCEL_INTRO); + + scheduler.CancelAll(); + scheduler.Schedule(12150ms, 19850ms, [this](TaskContext context) { if (me->HealthBelowPct(90)) @@ -184,64 +203,10 @@ struct boss_grand_warlock_nethekurse : public BossAI DoCastVictim(SPELL_SHADOW_CLEAVE); context.Repeat(1200ms, 23900ms); }); - } - void MoveInLineOfSight(Unit* /*who*/) override - { - if (EventStage == EVENT_STAGE_NONE) + if (PeonKilledCount < 4) { - if (me->SelectNearestPlayer(30.0f)) - { - DoAction(ACTION_CANCEL_INTRO); - } - } - } - - void IntroRP() - { - scheduler.Schedule(500ms, GROUP_RP, [this](TaskContext context) - { - me->GetMotionMaster()->Clear(); - scheduler.Schedule(500ms, GROUP_RP, [this](TaskContext /*context*/) - { - uint32 choicelocation = urand(1, 3); - me->GetMotionMaster()->MoveIdle(); - me->GetMotionMaster()->MovePoint(0, NethekurseIntroPath[choicelocation][0], NethekurseIntroPath[choicelocation][1], NethekurseIntroPath[choicelocation][2]); - scheduler.Schedule(2500ms, GROUP_RP, [this, choicelocation](TaskContext /*context*/) - { - CastRandomPeonSpell(choicelocation); - }); - }); - context.Repeat(16400ms, 28500ms); - }); - } - - void JustEngagedWith(Unit* /*who*/) override - { - _JustEngagedWith(); - if (EventStage == EVENT_STAGE_NONE) - { - DoAction(ACTION_CANCEL_INTRO); - CombatEventScheduler(); - } - } - - void CastRandomPeonSpell(uint32 choice) - { - if (choice == 1) - { - Talk(SAY_DEATH_COIL); - me->CastSpell(me, SPELL_DEATH_COIL_RP, false); - } - else if (choice == 2) - { - Talk(SAY_SHADOW_FISSURE); - me->CastSpell(me, SPELL_SHADOW_FISSURE_RP, false); - } - else if (choice == 3) - { - Talk(SAY_SHADOW_SEAR); - me->CastSpell(me, SPELL_SHADOW_SEAR, false); + Talk(SAY_SKIP_INTRO); } } @@ -254,60 +219,24 @@ struct boss_grand_warlock_nethekurse : public BossAI { if (action == ACTION_CANCEL_INTRO) { - introDone = true; scheduler.CancelGroup(GROUP_RP); - events2.ScheduleEvent(EVENT_START_ATTACK, 1000); - instance->SetBossState(DATA_NETHEKURSE, IN_PROGRESS); me->SetInCombatWithZone(); - Talk(SAY_INTRO_2); - me->SetHomePosition(NethekurseIntroPath[3][0], NethekurseIntroPath[3][1], NethekurseIntroPath[3][2], 4.572762489318847656f); - me->RemoveUnitFlag(UNIT_FLAG_NOT_ATTACKABLE_1); return; } - - if (action != ACTION_START_INTRO) - return; - - if (ATreached == true) - return; - - ATreached = true; - me->SetUnitFlag(UNIT_FLAG_NOT_ATTACKABLE_1); - events2.ScheduleEvent(EVENT_INTRO, 90000); - Talk(SAY_INTRO); - EventStage = EVENT_STAGE_INTRO; - instance->SetBossState(DATA_NETHEKURSE, IN_PROGRESS); - me->SetInCombatWithZone(); - IntroRP(); + else if (action == ACTION_START_INTRO) + { + IntroRP(); + } } void UpdateAI(uint32 diff) override { - events2.Update(diff); scheduler.Update(diff); - uint32 eventId = events2.ExecuteEvent(); - if (EventStage < EVENT_STAGE_MAIN && instance->GetBossState(DATA_NETHEKURSE) == IN_PROGRESS) - { - if (eventId == EVENT_INTRO) - { - EventStage = EVENT_STAGE_TAUNT; - } - else if (eventId == EVENT_START_ATTACK) - { - EventStage = EVENT_STAGE_MAIN; - if (Unit* target = me->SelectNearestPlayer(50.0f)) - { - AttackStart(target); - } - DoAction(ACTION_CANCEL_INTRO); - return; - } - } if (!UpdateVictim()) return; - if (EventStage < EVENT_STAGE_MAIN || me->HasUnitState(UNIT_STATE_CASTING)) + if (me->HasUnitState(UNIT_STATE_CASTING)) return; if (!me->HealthBelowPct(25)) @@ -317,24 +246,6 @@ struct boss_grand_warlock_nethekurse : public BossAI private: uint8 PeonEngagedCount = 0; uint8 PeonKilledCount = 0; - uint8 EventStage; - bool introDone; - bool ATreached = false; -}; - -class spell_tsh_shadow_sear : public AuraScript -{ - PrepareAuraScript(spell_tsh_shadow_sear); - - void CalculateDamageAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) - { - amount = 0; - } - - void Register() override - { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_tsh_shadow_sear::CalculateDamageAmount, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); - } }; class spell_tsh_shadow_bolt : public SpellScript @@ -345,22 +256,9 @@ class spell_tsh_shadow_bolt : public SpellScript { if (Creature* caster = GetCaster()->ToCreature()) { - std::list playerList; - Map::PlayerList const& players = caster->GetMap()->GetPlayers(); - for (auto itr = players.begin(); itr != players.end(); ++itr) + if (Unit* randomTarget = caster->AI()->SelectTarget(SelectTargetMethod::Random, 0, 100.0f)) { - if (Player* player = itr->GetSource()->ToPlayer()) - { - if (player->IsWithinDist(caster, 100.0f) && player->IsAlive()) - { - playerList.push_back(player); - } - } - } - - if (!playerList.empty()) - { - target = Acore::Containers::SelectRandomContainerElement(playerList); + target = randomTarget; } } } @@ -371,17 +269,28 @@ class spell_tsh_shadow_bolt : public SpellScript } }; -class at_rp_nethekurse : public AreaTriggerScript +class spell_target_fissures : public SpellScript +{ + PrepareSpellScript(spell_target_fissures); + + void HandleEffect(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_LESSER_SHADOW_FISSURE, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_target_fissures::HandleEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class at_rp_nethekurse : public OnlyOnceAreaTriggerScript { public: - at_rp_nethekurse() : AreaTriggerScript("at_rp_nethekurse") { } + at_rp_nethekurse() : OnlyOnceAreaTriggerScript("at_rp_nethekurse") { } - bool OnTrigger(Player* player, AreaTrigger const* /*at*/) override + bool _OnTrigger(Player* player, AreaTrigger const* /*at*/) override { - if (player->IsGameMaster()) - { - return false; - } if (InstanceScript* instance = player->GetInstanceScript()) { if (instance->GetBossState(DATA_NETHEKURSE) != DONE && instance->GetBossState(DATA_NETHEKURSE) != IN_PROGRESS) @@ -399,7 +308,7 @@ public: void AddSC_boss_grand_warlock_nethekurse() { RegisterShatteredHallsCreatureAI(boss_grand_warlock_nethekurse); - RegisterSpellScript(spell_tsh_shadow_sear); RegisterSpellScript(spell_tsh_shadow_bolt); + RegisterSpellScript(spell_target_fissures); new at_rp_nethekurse(); } diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp index 4860b4207..7f5fbcee7 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp @@ -22,9 +22,16 @@ ObjectData const creatureData[] = { - { NPC_GRAND_WARLOCK_NETHEKURSE , DATA_NETHEKURSE }, - { NPC_WARCHIEF_KARGATH , DATA_KARGATH }, - { 0, 0 } + { NPC_GRAND_WARLOCK_NETHEKURSE, DATA_NETHEKURSE }, + { NPC_WARCHIEF_KARGATH, DATA_KARGATH }, + { 0, 0 } +}; + +DoorData const doorData[] = +{ + { GO_GRAND_WARLOCK_CHAMBER_DOOR_1, DATA_NETHEKURSE, DOOR_TYPE_PASSAGE }, + { GO_GRAND_WARLOCK_CHAMBER_DOOR_2, DATA_NETHEKURSE, DOOR_TYPE_PASSAGE }, + { 0, 0, DOOR_TYPE_ROOM } // END }; class instance_shattered_halls : public InstanceMapScript @@ -45,6 +52,7 @@ public: { SetBossNumber(ENCOUNTER_COUNT); LoadObjectData(creatureData, nullptr); + LoadDoorData(doorData); TeamIdInInstance = TEAM_NEUTRAL; RescueTimer = 100 * MINUTE * IN_MILLISECONDS; @@ -56,23 +64,6 @@ public: TeamIdInInstance = player->GetTeamId(); } - void OnGameObjectCreate(GameObject* go) override - { - switch (go->GetEntry()) - { - case GO_GRAND_WARLOCK_CHAMBER_DOOR_1: - nethekurseDoor1GUID = go->GetGUID(); - if (GetBossState(DATA_NETHEKURSE) == DONE) - HandleGameObject(ObjectGuid::Empty, true, go); - break; - case GO_GRAND_WARLOCK_CHAMBER_DOOR_2: - nethekurseDoor2GUID = go->GetGUID(); - if (GetBossState(DATA_NETHEKURSE) == DONE) - HandleGameObject(ObjectGuid::Empty, true, go); - break; - } - } - void OnCreatureCreate(Creature* creature) override { if (TeamIdInInstance == TEAM_NEUTRAL) @@ -85,9 +76,6 @@ public: switch (creature->GetEntry()) { - case NPC_WARCHIEF_KARGATH: - warchiefKargathGUID = creature->GetGUID(); - break; case NPC_SHATTERED_EXECUTIONER: if (RescueTimer > 25 * MINUTE * IN_MILLISECONDS) creature->AddLootMode(2); @@ -112,29 +100,6 @@ public: InstanceScript::OnCreatureCreate(creature); } - bool SetBossState(uint32 type, EncounterState state) override - { - if (!InstanceScript::SetBossState(type, state)) - return false; - - switch (type) - { - case DATA_NETHEKURSE: - if (state == IN_PROGRESS) - { - HandleGameObject(nethekurseDoor1GUID, false); - HandleGameObject(nethekurseDoor2GUID, false); - } - else - { - HandleGameObject(nethekurseDoor1GUID, true); - HandleGameObject(nethekurseDoor2GUID, true); - } - break; - } - return true; - } - void SetData(uint32 type, uint32 data) override { if (type == DATA_ENTERED_ROOM && data == DATA_ENTERED_ROOM && RescueTimer == 100 * MINUTE * IN_MILLISECONDS) @@ -142,7 +107,7 @@ public: DoCastSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_1); instance->LoadGrid(230, -80); - if (Creature* kargath = instance->GetCreature(warchiefKargathGUID)) + if (Creature* kargath = GetCreature(DATA_KARGATH)) sCreatureTextMgr->SendChat(kargath, TeamIdInInstance == TEAM_ALLIANCE ? 3 : 4, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP); RescueTimer = 80 * MINUTE * IN_MILLISECONDS; @@ -206,11 +171,6 @@ public: } protected: - ObjectGuid warchiefKargathGUID; - ObjectGuid grandWarlockNethekurseGUID; - ObjectGuid nethekurseDoor1GUID; - ObjectGuid nethekurseDoor2GUID; - ObjectGuid executionerGUID; ObjectGuid prisonerGUID[3]; uint32 RescueTimer;