From 903820077ca4ad34d58283e37810e757b19a25af Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Fri, 8 Mar 2024 07:55:42 +0100 Subject: [PATCH] fix(Scripts/TheEye): make Solarian not overlap casts and not cast arcane missiles into p2 transition (#18480) * initial * add voiceline * move position of yells * change voicings --- .../pending_db_world/change_voicelines.sql | 12 ++++++++++ .../TempestKeep/Eye/boss_astromancer.cpp | 23 +++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 data/sql/updates/pending_db_world/change_voicelines.sql diff --git a/data/sql/updates/pending_db_world/change_voicelines.sql b/data/sql/updates/pending_db_world/change_voicelines.sql new file mode 100644 index 000000000..f1a19d3ee --- /dev/null +++ b/data/sql/updates/pending_db_world/change_voicelines.sql @@ -0,0 +1,12 @@ +-- +DELETE FROM `creature_text` WHERE `CreatureID` = 18805; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(18805, 0, 0, 'Tal anu\'men no sin\'dorei!', 14, 0, 100, 0, 0, 11134, 20849, 0, 'solarian SAY_AGGRO'), +(18805, 1, 0, 'You are hopelessly outmatched!', 14, 0, 100, 0, 0, 11139, 20854, 0, 'solarian SAY_SUMMON1'), +(18805, 1, 1, 'I will crush your delusions of grandeur!', 14, 0, 100, 0, 0, 11140, 20855, 0, 'solarian SAY_SUMMON2'), +(18805, 2, 0, 'Your soul belongs to the abyss!', 14, 0, 100, 0, 0, 11136, 20851, 0, 'solarian SAY_KILL1'), +(18805, 2, 1, 'By the blood of the Highborne!', 14, 0, 100, 0, 0, 11137, 20852, 0, 'solarian SAY_KILL2'), +(18805, 2, 2, 'For the Sunwell!', 14, 0, 100, 0, 0, 11138, 20853, 0, 'solarian SAY_KILL3'), +(18805, 3, 0, 'The warmth of the sun... awaits.', 14, 0, 100, 0, 0, 11135, 20850, 0, 'solarian SAY_DEATH'), +(18805, 4, 0, 'Enough of this! Now I call upon the fury of the cosmos itself.', 14, 0, 100, 0, 0, 0, 20372, 0, 'solarian SAY_VOID1'), +(18805, 4, 1, 'I become ONE... with the VOID!', 14, 0, 100, 0, 0, 0, 20373, 0, 'solarian SAY_VOID2'); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index a9b2eb987..3bb4678ef 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -23,12 +23,10 @@ enum Yells { SAY_AGGRO = 0, - SAY_SUMMON1 = 1, - SAY_SUMMON2 = 2, - SAY_KILL = 3, - SAY_DEATH = 4, - SAY_VOIDA = 5, - SAY_VOIDB = 6 + SAY_SUMMON = 1, + SAY_KILL = 2, + SAY_DEATH = 3, + SAY_VOID = 4 }; enum Spells @@ -59,7 +57,13 @@ enum Misc struct boss_high_astromancer_solarian : public BossAI { - boss_high_astromancer_solarian(Creature* creature) : BossAI(creature, DATA_ASTROMANCER) { } + boss_high_astromancer_solarian(Creature* creature) : BossAI(creature, DATA_ASTROMANCER) + { + scheduler.SetValidator([this] + { + return !me->HasUnitState(UNIT_STATE_CASTING); + }); + } void Reset() override { @@ -68,6 +72,8 @@ struct boss_high_astromancer_solarian : public BossAI me->SetReactState(REACT_AGGRESSIVE); ScheduleHealthCheckEvent(20, [&]{ + Talk(SAY_VOID); + me->InterruptNonMeleeSpells(false); scheduler.CancelAll(); me->ResumeChasingVictim(); scheduler.Schedule(3s, [this](TaskContext context) @@ -138,11 +144,11 @@ struct boss_high_astromancer_solarian : public BossAI }).Schedule(52100ms, [this](TaskContext context) { me->SetReactState(REACT_PASSIVE); + Talk(SAY_SUMMON); me->SetModelVisible(false); scheduler.DelayAll(21s); scheduler.Schedule(6s, [this](TaskContext) { - Talk(SAY_SUMMON1); summons.DoForAllSummons([&](WorldObject* summon) { if (Creature* light = summon->ToCreature()) @@ -164,7 +170,6 @@ struct boss_high_astromancer_solarian : public BossAI }).Schedule(20s, [this](TaskContext) { me->SetReactState(REACT_AGGRESSIVE); - Talk(SAY_SUMMON2); summons.DoForAllSummons([&](WorldObject* summon) { if (Creature* light = summon->ToCreature())