diff options
-rw-r--r-- | sql/updates/world/master/2022_01_24_00_world_2020_07_29_00_world.sql | 4 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/scripts/Outland/zone_shadowmoon_valley.cpp | 48 |
3 files changed, 26 insertions, 27 deletions
diff --git a/sql/updates/world/master/2022_01_24_00_world_2020_07_29_00_world.sql b/sql/updates/world/master/2022_01_24_00_world_2020_07_29_00_world.sql new file mode 100644 index 00000000000..4e3b7bb4769 --- /dev/null +++ b/sql/updates/world/master/2022_01_24_00_world_2020_07_29_00_world.sql @@ -0,0 +1,4 @@ +-- +-- The Force of Neltharaku: Enslaved Netherwing Drake (21722) +UPDATE `creature_template_movement` SET `Flight`= 1 WHERE `CreatureId`= 21722; +UPDATE `creature_addon` SET `bytes1`= 0 WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id`= 21722); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 27023887431..de75e59205c 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3566,6 +3566,7 @@ void SpellMgr::LoadSpellInfoCorrections() 58552, // Return to Orgrimmar 58533, // Return to Stormwind 21855, // Challenge Flag + 38762, // Force of Neltharaku 51122, // Fierce Lightning Stike 71848 // Toxic Wasteling Find Target }, [](SpellInfo* spellInfo) diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 21abe9e7e2e..de8146baf60 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -346,8 +346,13 @@ enum EnshlavedNetherwingDrake // Creatures NPC_DRAGONMAW_SUBJUGATOR = 21718, - NPC_ESCAPE_DUMMY = 22317 + NPC_ESCAPE_DUMMY = 22317, + // Quests + QUEST_THE_FORCE_OF_NELTHARAKU = 10854, + + // Movement + POINT_MOVE_UP = 1 }; class npc_enslaved_netherwing_drake : public CreatureScript @@ -355,11 +360,6 @@ class npc_enslaved_netherwing_drake : public CreatureScript public: npc_enslaved_netherwing_drake() : CreatureScript("npc_enslaved_netherwing_drake") { } - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_enslaved_netherwing_drakeAI(creature); - } - struct npc_enslaved_netherwing_drakeAI : public ScriptedAI { npc_enslaved_netherwing_drakeAI(Creature* creature) : ScriptedAI(creature) @@ -368,16 +368,11 @@ public: Reset(); } - ObjectGuid PlayerGUID; - uint32 FlyTimer; - bool Tapped; - void Reset() override { if (!Tapped) me->SetFaction(FACTION_ORC_DRAGONMAW); - FlyTimer = 10000; me->SetDisableGravity(false); } @@ -393,7 +388,6 @@ public: PlayerGUID = playerCaster->GetGUID(); me->SetFaction(FACTION_FLAYER_HUNTER); - DoCast(playerCaster, SPELL_FORCE_OF_NELTHARAKU, true); Unit* Dragonmaw = me->FindNearestCreature(NPC_DRAGONMAW_SUBJUGATOR, 50); if (Dragonmaw) @@ -402,6 +396,7 @@ public: AttackStart(Dragonmaw); } + FlyTimer = 10 * IN_MILLISECONDS; me->GetThreatManager().ClearThreat(playerCaster); } } @@ -414,13 +409,7 @@ public: if (id == 1) { if (!PlayerGUID.IsEmpty()) - { - Unit* player = ObjectAccessor::GetUnit(*me, PlayerGUID); - if (player) - DoCast(player, SPELL_FORCE_OF_NELTHARAKU, true); - PlayerGUID.Clear(); - } me->DespawnOrUnsummon(1ms); } @@ -438,16 +427,9 @@ public: if (!PlayerGUID.IsEmpty()) { Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID); - if (player && player->GetQuestStatus(10854) == QUEST_STATUS_INCOMPLETE) + if (player && player->GetQuestStatus(QUEST_THE_FORCE_OF_NELTHARAKU) == QUEST_STATUS_INCOMPLETE) { DoCast(player, SPELL_FORCE_OF_NELTHARAKU, true); - /* - float x, y, z; - me->GetPosition(x, y, z); - - float dx, dy, dz; - me->GetRandomPoint(x, y, z, 20, dx, dy, dz); - dz += 20; // so it's in the air, not ground*/ Position pos; if (Unit* EscapeDummy = me->FindNearestCreature(NPC_ESCAPE_DUMMY, 30)) @@ -458,8 +440,10 @@ public: pos.m_positionZ += 25; } + me->SetCanFly(true); me->SetDisableGravity(true); - me->GetMotionMaster()->MovePoint(1, pos); + me->SetAnimTier(UnitBytes1_Flags(UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER), true); + me->GetMotionMaster()->MoveTakeoff(POINT_MOVE_UP, pos); } } } else FlyTimer -= diff; @@ -469,7 +453,17 @@ public: DoMeleeAttackIfReady(); } + + private: + ObjectGuid PlayerGUID; + uint32 FlyTimer; + bool Tapped; }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_enslaved_netherwing_drakeAI(creature); + } }; /*##### |