summaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorSmirnov Sergey <lyns@lyns.pro>2025-06-12 12:22:17 +0300
committerGitHub <noreply@github.com>2025-06-12 11:22:17 +0200
commit40a4ed5fc71e2d0ebfdb87f040e47da85208e125 (patch)
tree0b21c568527a9714936124b74c5910817e3530f0 /src/server/scripts
parent8060e2afbcb3eedbbc915a77c0d5437acef0358f (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.cpp196
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();