From a76c07698c0b0224abe30686a11440e6496bd524 Mon Sep 17 00:00:00 2001 From: patou01 <2592673+patou01@users.noreply.github.com> Date: Sun, 19 Feb 2023 19:39:02 +0100 Subject: [PATCH] fix(Scripts/Scholomance): Kirtonos the Herald event now starts correctly again (#15131) --- .../rev_1676822987463062600.sql | 3 +++ .../Scholomance/boss_kirtonos_the_herald.cpp | 26 ++++++++++++------- .../Scholomance/instance_scholomance.cpp | 5 +++- 3 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1676822987463062600.sql diff --git a/data/sql/updates/pending_db_world/rev_1676822987463062600.sql b/data/sql/updates/pending_db_world/rev_1676822987463062600.sql new file mode 100644 index 000000000..869b2f4d0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676822987463062600.sql @@ -0,0 +1,3 @@ +-- add NO_MOVEMENT_UPDATE flag + +UPDATE `creature_template` SET `flags_extra` = 512 WHERE (`entry` = 10506); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index 51f14aad9..b29c2e291 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -106,16 +106,6 @@ public: me->DespawnOrUnsummon(1); } - void IsSummonedBy(WorldObject* /*summoner*/) override - { - events2.Reset(); - events2.ScheduleEvent(INTRO_1, 1s); - me->SetDisableGravity(true); - me->SetReactState(REACT_PASSIVE); - me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - me->SetImmuneToAll(true); // for some reason he aggroes if we don't have this. - } - void MovementInform(uint32 type, uint32 id) override { if (type == WAYPOINT_MOTION_TYPE && id == POINT_KIRTONOS_LAND) @@ -128,6 +118,21 @@ public: } } + void DoAction(int32 action) override + { + if (action == IN_PROGRESS) + { + events2.Reset(); + events2.ScheduleEvent(INTRO_1, 1s); + me->SetCanFly(true); + me->SetDisableGravity(true); + me->SendMovementFlagUpdate(); + me->SetReactState(REACT_PASSIVE); + me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetImmuneToAll(true); // for some reason he aggroes if we don't have this. + } + } + void UpdateAI(uint32 diff) override { events2.Update(diff); @@ -148,6 +153,7 @@ public: me->SetCanFly(false); me->SetDisableGravity(false); me->CastSpell(me, SPELL_KIRTONOS_TRANSFORM, true); + me->SendMovementFlagUpdate(); break; case INTRO_5: me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp index e13e4a5b3..3bafef4d7 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp @@ -131,7 +131,10 @@ public: // summon kirtonos and close door if (_kirtonosState == NOT_STARTED) { - instance->SummonCreature(NPC_KIRTONOS, KirtonosSpawn); + if (Creature* kirtonos = instance->SummonCreature(NPC_KIRTONOS, KirtonosSpawn)) + { + kirtonos->AI()->DoAction(IN_PROGRESS); + } if (GameObject* gate = instance->GetGameObject(GetGuidData(GO_GATE_KIRTONOS))) { gate->SetGoState(GO_STATE_READY);