From 46789d5df648528a8920b4e5a288bb62ca4d90fd Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 26 Jun 2022 04:45:15 -0300 Subject: [PATCH] fix(Scripts/BlackwingLair): Correct Bone Constructs abilities (#12180) --- .../updates/pending_db_world/rev_1656181701026138200.sql | 6 ++++++ src/server/game/Entities/Creature/Creature.cpp | 8 +++++++- src/server/game/Entities/Creature/Creature.h | 3 ++- .../BlackrockMountain/BlackwingLair/boss_nefarian.cpp | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656181701026138200.sql diff --git a/data/sql/updates/pending_db_world/rev_1656181701026138200.sql b/data/sql/updates/pending_db_world/rev_1656181701026138200.sql new file mode 100644 index 000000000..9e5a5f306 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656181701026138200.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 14605; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 14605) AND (`source_type` = 0) AND (`id` IN (0)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(14605, 0, 0, 0, 67, 0, 100, 0, 3000, 10000, 0, 0, 0, 11, 8355, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Bone Construct - On Behind Target - Cast \'Exploit Weakness\''); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 53c796e07..6c5e10606 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -487,7 +487,7 @@ bool Creature::InitEntry(uint32 Entry, const CreatureData* data) return true; } -bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changelevel) +bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changelevel, bool updateAI) { if (!InitEntry(Entry, data)) return false; @@ -596,6 +596,12 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele SetDetectionDistance(cInfo->detection_range); LoadSpellTemplateImmunity(); + + if (updateAI) + { + AIM_Initialize(); + } + return true; } diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 4f2f3eccf..e132b7ffb 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -169,7 +169,8 @@ public: void UpdateMovementFlags(); uint32 GetRandomId(uint32 id1, uint32 id2, uint32 id3); - bool UpdateEntry(uint32 entry, const CreatureData* data = nullptr, bool changelevel = true ); + bool UpdateEntry(uint32 entry, const CreatureData* data = nullptr, bool changelevel = true, bool updateAI = false); + bool UpdateEntry(uint32 entry, bool updateAI) { return UpdateEntry(entry, nullptr, true, updateAI); } bool UpdateStats(Stats stat) override; bool UpdateAllStats() override; void UpdateResistances(uint32 school) override; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index ec924ec79..4a8fe95d7 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -982,7 +982,7 @@ struct npc_drakonid_spawner : public ScriptedAI { if (Creature* construct = ObjectAccessor::GetCreature(*me, summonGuid)) { - construct->UpdateEntry(NPC_BONE_CONSTRUCT); + construct->UpdateEntry(NPC_BONE_CONSTRUCT, true); construct->SetReactState(REACT_PASSIVE); construct->SetStandState(UNIT_STAND_STATE_DEAD); construct->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);