diff options
| author | Smirnov Sergey <lyns@lyns.pro> | 2025-06-12 12:22:17 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-12 11:22:17 +0200 |
| commit | 40a4ed5fc71e2d0ebfdb87f040e47da85208e125 (patch) | |
| tree | 0b21c568527a9714936124b74c5910817e3530f0 /src/server/scripts | |
| parent | 8060e2afbcb3eedbbc915a77c0d5437acef0358f (diff) | |
fix(DB/SAI/Scripts) [Sholazar Basin] Quest: A Hero's Burden -- Behavior of all NPCs (#22278)
Diffstat (limited to 'src/server/scripts')
| -rw-r--r-- | src/server/scripts/Northrend/zone_sholazar_basin.cpp | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index af32ca1ea0..100a90a869 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -65,201 +65,6 @@ class spell_q12726_song_of_wind_and_water : public SpellScript } }; -enum AHerosBurden -{ - SPELL_TOMB_OF_THE_HEARTLESS = 52182, - SPELL_ARTRUIS_FROST_NOVA = 11831, - SPELL_ARTRUIS_FROSTBOLT = 15530, - SPELL_ARTRUIS_ICE_LANCE = 54261, - SPELL_ARTRUIS_ICY_VEINS = 54792, - SPELL_ARTRUIS_BINDING = 52185, - - NPC_JALOOT = 28667, - NPC_ZEPIK = 28668, - NPC_ARTRUIS = 28659, - - EVENT_CAST_FROST_BOLT = 1, - EVENT_CAST_FROST_NOVA = 2, - EVENT_CAST_ICE_LANCE = 3, - EVENT_CAST_ICY_VEINS = 4, - EVENT_ARTRUIS_HP_CHECK = 5, - EVENT_ARTRUIS_TALK1 = 6, - EVENT_ARTRUIS_TALK2 = 7, - EVENT_ARTRUIS_TALK3 = 8, - - ACTION_BIND_MINIONS = 1, - ACTION_MAKE_FRIENDLY = 2, - - GO_ARTRUIS_PHYLACTERY = 190777, - - // Texts - SAY_TURNED_FRIENDLY = 0, // Zepik and Jaloot - - SAY_ARTRUIS_AGGRO = 0, - SAY_ARTRUIS_TALK_1 = 1, - SAY_ARTRUIS_TALK_2 = 2, - SAY_ARTRUIS_TALK_3 = 3, - SAY_ARTRUIS_SHIELD = 4, // Boss emote - SAY_ARTRUIS_TALK_4 = 5, -}; - -class npc_artruis_the_hearthless : public CreatureScript -{ -public: - npc_artruis_the_hearthless() : CreatureScript("npc_artruis_the_hearthless") { } - - struct npc_artruis_the_hearthlessAI : public ScriptedAI - { - npc_artruis_the_hearthlessAI(Creature* creature) : ScriptedAI(creature), summons(me) { } - - EventMap events; - SummonList summons; - void Reset() override - { - events.Reset(); - summons.DespawnAll(); - me->SetControlled(false, UNIT_STATE_STUNNED); - - Creature* cr; - if ((cr = me->SummonCreature(NPC_JALOOT, 5616.91f, 3772.67f, -94.26f, 1.78f))) - { - summons.Summon(cr); - cr->CastSpell(cr, SPELL_TOMB_OF_THE_HEARTLESS, true); - cr->SetFaction(me->GetFaction()); - } - if ((cr = me->SummonCreature(NPC_ZEPIK, 5631.63f, 3794.36f, -92.24f, 3.45f))) - { - summons.Summon(cr); - cr->CastSpell(cr, SPELL_TOMB_OF_THE_HEARTLESS, true); - cr->SetFaction(me->GetFaction()); - } - } - - void MoveInLineOfSight(Unit* who) override - { - if (who->GetEntry() == NPC_JALOOT || who->GetEntry() == NPC_ZEPIK) - return; - - ScriptedAI::MoveInLineOfSight(who); - } - - void JustEngagedWith(Unit* /*who*/) override - { - Talk(SAY_ARTRUIS_AGGRO); - me->CastSpell(me, SPELL_ARTRUIS_ICY_VEINS, true); - events.RescheduleEvent(EVENT_CAST_FROST_BOLT, 4s); - events.RescheduleEvent(EVENT_CAST_FROST_NOVA, 15s); - events.RescheduleEvent(EVENT_CAST_ICE_LANCE, 8500ms); - events.RescheduleEvent(EVENT_CAST_ICY_VEINS, 30s); - events.RescheduleEvent(EVENT_ARTRUIS_HP_CHECK, 1s); - events.RescheduleEvent(EVENT_ARTRUIS_TALK1, 6s); - } - - void JustDied(Unit* /*killer*/) override - { - if (GameObject* go = me->SummonGameObject(GO_ARTRUIS_PHYLACTERY, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 600000)) - me->RemoveGameObject(go, false); - } - - void SummonedCreatureDies(Creature* summon, Unit*) override - { - SummonsAction(ACTION_MAKE_FRIENDLY); - me->RemoveAurasDueToSpell(SPELL_ARTRUIS_BINDING); - summon->DespawnOrUnsummon(60000); - me->SetControlled(false, UNIT_STATE_STUNNED); - } - - void SummonsAction(uint8 action) - { - if (!summons.empty()) - { - if (action == ACTION_BIND_MINIONS) - me->CastSpell(me, SPELL_ARTRUIS_BINDING, true); - - for (ObjectGuid const& guid : summons) - { - Creature* minion = ObjectAccessor::GetCreature(*me, guid); - if (minion && minion->IsAlive()) - { - if (action == ACTION_BIND_MINIONS) - { - minion->RemoveAurasDueToSpell(SPELL_TOMB_OF_THE_HEARTLESS); - if (me->GetVictim()) - minion->AI()->AttackStart(me->GetVictim()); - } - else if (action == ACTION_MAKE_FRIENDLY && me->GetVictim()) - { - minion->AI()->Talk(SAY_TURNED_FRIENDLY); - minion->RemoveAurasDueToSpell(SPELL_ARTRUIS_BINDING); - minion->SetFaction(me->GetVictim()->GetFaction()); - minion->AddThreat(me, 100000.0f); - minion->AI()->AttackStart(me); - minion->DespawnOrUnsummon(900000); - events.RescheduleEvent(EVENT_ARTRUIS_TALK3, 5s); - } - } - } - } - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case EVENT_ARTRUIS_HP_CHECK: - if (me->GetHealthPct() <= 30) - { - me->SetControlled(true, UNIT_STATE_STUNNED); - Talk(SAY_ARTRUIS_SHIELD); - Talk(SAY_ARTRUIS_TALK_3); - SummonsAction(ACTION_BIND_MINIONS); - break; - } - events.Repeat(1s); - break; - case EVENT_ARTRUIS_TALK1: - Talk(SAY_ARTRUIS_TALK_1); - events.RescheduleEvent(EVENT_ARTRUIS_TALK2, 10s); - break; - case EVENT_ARTRUIS_TALK2: - Talk(SAY_ARTRUIS_TALK_2); - break; - case EVENT_ARTRUIS_TALK3: - Talk(SAY_ARTRUIS_TALK_4); - break; - case EVENT_CAST_FROST_BOLT: - me->CastSpell(me->GetVictim(), SPELL_ARTRUIS_FROSTBOLT, false); - events.Repeat(4s); - break; - case EVENT_CAST_ICE_LANCE: - me->CastSpell(me->GetVictim(), SPELL_ARTRUIS_ICE_LANCE, false); - events.Repeat(8500ms); - break; - case EVENT_CAST_FROST_NOVA: - me->CastSpell(me, SPELL_ARTRUIS_FROST_NOVA, false); - events.Repeat(15s); - break; - case EVENT_CAST_ICY_VEINS: - me->CastSpell(me, SPELL_ARTRUIS_ICY_VEINS, false); - events.Repeat(30s); - break; - } - } - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_artruis_the_hearthlessAI(creature); - } -}; - /****** quest Still At It (12644) ******/ @@ -1488,7 +1293,6 @@ class spell_q12611_deathbolt : public SpellScript void AddSC_sholazar_basin() { RegisterSpellScript(spell_q12726_song_of_wind_and_water); - new npc_artruis_the_hearthless(); new npc_still_at_it_trigger(); new npc_mcmanus(); new go_pressure_valve(); |
