From e8b76f2625fdb7181d857b60890557566ac650c1 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 18 Feb 2023 14:16:53 +0100 Subject: [PATCH 01/43] fix(Scripts/BlackMorass): Implemented wipe event. (#14860) --- .../instance_the_black_morass.cpp | 135 +++++++++++++++--- .../TheBlackMorass/the_black_morass.cpp | 36 +---- .../TheBlackMorass/the_black_morass.h | 33 ++++- 3 files changed, 150 insertions(+), 54 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index 876dc4a7d..a1539a192 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -116,6 +116,7 @@ public: case NPC_INFINITE_CRONOMANCER: case NPC_INFINITE_EXECUTIONER: case NPC_INFINITE_VANQUISHER: + case NPC_DP_BEAM_STALKER: encounterNPCs.insert(creature->GetGUID()); break; } @@ -150,26 +151,36 @@ public: switch (type) { case TYPE_AEONUS: + { + encounters[type] = DONE; + SaveToDB(); + + if (Creature* medivh = instance->GetCreature(_medivhGUID)) { - encounters[type] = DONE; - SaveToDB(); - - if (Creature* medivh = instance->GetCreature(_medivhGUID)) - medivh->AI()->DoAction(ACTION_OUTRO); - - Map::PlayerList const& players = instance->GetPlayers(); - if (!players.IsEmpty()) - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if (Player* player = itr->GetSource()) - { - if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE) - player->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL); - - if (player->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE) - player->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH); - } - break; + medivh->AI()->DoAction(ACTION_OUTRO); } + + Map::PlayerList const& players = instance->GetPlayers(); + if (!players.IsEmpty()) + { + for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + { + if (Player* player = itr->GetSource()) + { + if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE) + { + player->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL); + } + + if (player->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE) + { + player->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH); + } + } + } + } + break; + } case TYPE_CHRONO_LORD_DEJA: case TYPE_TEMPORUS: encounters[type] = DONE; @@ -182,13 +193,36 @@ public: Events.RescheduleEvent(EVENT_NEXT_PORTAL, 4000); break; case DATA_MEDIVH: + { DoUpdateWorldState(WORLD_STATE_BM, 1); DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent); DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift); Events.RescheduleEvent(EVENT_NEXT_PORTAL, 3000); + + for (ObjectGuid const& guid : encounterNPCs) + { + if (guid.GetEntry() == NPC_DP_BEAM_STALKER) + { + if (Creature* creature = instance->GetCreature(guid)) + { + if (!creature->IsAlive()) + { + creature->Respawn(true); + } + } + break; + } + } + break; + } case DATA_DAMAGE_SHIELD: { + if (_shieldPercent <= 0) + { + return; + } + _shieldPercent -= data; if (_shieldPercent < 0) { @@ -203,15 +237,20 @@ public: { if (medivh->IsAlive()) { - Unit::Kill(medivh, medivh); + medivh->SetImmuneToNPC(true); - // Xinef: delete all spawns - GuidSet eCopy = encounterNPCs; - for (ObjectGuid const& guid : eCopy) + if (medivh->IsAIEnabled) + { + medivh->AI()->Talk(SAY_MEDIVH_DEATH); + } + + Events.ScheduleEvent(EVENT_WIPE_1, 4s); + + for (ObjectGuid const& guid : encounterNPCs) { if (Creature* creature = instance->GetCreature(guid)) { - creature->DespawnOrUnsummon(); + creature->InterruptNonMeleeSpells(true); } } } @@ -219,6 +258,8 @@ public: } break; } + default: + break; } } @@ -325,6 +366,54 @@ public: case EVENT_SUMMON_KEEPER: SummonPortalKeeper(); break; + case EVENT_WIPE_1: + if (Creature* medivh = instance->GetCreature(_medivhGUID)) + { + medivh->RemoveAllAuras(); + } + Events.ScheduleEvent(EVENT_WIPE_2, 500ms); + break; + case EVENT_WIPE_2: + if (Creature* medivh = instance->GetCreature(_medivhGUID)) + { + medivh->KillSelf(false); + + GuidSet encounterNPCSCopy = encounterNPCs; + for (ObjectGuid const& guid : encounterNPCSCopy) + { + switch (guid.GetEntry()) + { + case NPC_TIME_RIFT: + case NPC_DP_EMITTER_STALKER: + case NPC_DP_CRYSTAL_STALKER: + case NPC_DP_BEAM_STALKER: + if (Creature* creature = instance->GetCreature(guid)) + { + creature->DespawnOrUnsummon(); + } + break; + default: + break; + } + } + } + Events.ScheduleEvent(EVENT_WIPE_3, 2s); + break; + case EVENT_WIPE_3: + { + GuidSet encounterNPCSCopy = encounterNPCs; + for (ObjectGuid const& guid : encounterNPCSCopy) + { + if (Creature* creature = instance->GetCreature(guid)) + { + creature->CastSpell(creature, SPELL_TELEPORT_VISUAL, true); + creature->DespawnOrUnsummon(1200ms, 0s); + } + } + break; + } + default: + break; } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index b3a27299b..cb4abba8f 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -22,33 +22,8 @@ #include "ScriptedCreature.h" #include "ScriptedGossip.h" -enum medivhSays -{ - SAY_ENTER = 0, - SAY_DEATH = 5, - SAY_WIN = 6, - SAY_ORCS_ENTER = 7, - - SAY_ORCS_ANSWER = 0 -}; - -enum medivhSpells -{ - SPELL_MANA_SHIELD = 31635, - SPELL_MEDIVH_CHANNEL = 31556, - SPELL_BLACK_CRYSTAL = 32563, - SPELL_PORTAL_CRYSTALS = 32564, - SPELL_BANISH_PURPLE = 32566, - SPELL_BANISH_GREEN = 32567, - - SPELL_CORRUPT = 31326, - SPELL_CORRUPT_AEONUS = 37853, -}; - enum medivhMisc { - NPC_DP_EMITTER_STALKER = 18582, - NPC_DP_CRYSTAL_STALKER = 18553, NPC_SHADOW_COUNCIL_ENFORCER = 17023, GO_DARK_PORTAL = 185103, @@ -120,6 +95,8 @@ struct npc_medivh_bm : public ScriptedAI { me->CastSpell(me, SPELL_MEDIVH_CHANNEL, false); } + + me->SetImmuneToNPC(false); } void JustSummoned(Creature* summon) override @@ -156,7 +133,7 @@ struct npc_medivh_bm : public ScriptedAI if (who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 20.0f)) { - Talk(SAY_ENTER); + Talk(SAY_MEDIVH_ENTER); _instance->SetData(DATA_MEDIVH, 1); me->CastSpell(me, SPELL_MEDIVH_CHANNEL, false); @@ -189,7 +166,6 @@ struct npc_medivh_bm : public ScriptedAI { me->SetRespawnTime(DAY); events.Reset(); - Talk(SAY_DEATH); } void UpdateAI(uint32 diff) override @@ -216,7 +192,7 @@ struct npc_medivh_bm : public ScriptedAI break; case EVENT_OUTRO_1: me->SetFacingTo(6.21f); - Talk(SAY_WIN); + Talk(SAY_MEDIVH_WIN); events.ScheduleEvent(EVENT_OUTRO_2, 17000); break; case EVENT_OUTRO_2: @@ -240,14 +216,14 @@ struct npc_medivh_bm : public ScriptedAI events.ScheduleEvent(EVENT_OUTRO_7, 7000); break; case EVENT_OUTRO_7: - Talk(SAY_ORCS_ENTER); + Talk(SAY_MEDIVH_ORCS_ENTER); events.ScheduleEvent(EVENT_OUTRO_8, 7000); break; case EVENT_OUTRO_8: if (Creature* cr = me->FindNearestCreature(NPC_SHADOW_COUNCIL_ENFORCER, 20.0f)) { cr->SetFacingTo(3.07f); - cr->AI()->Talk(SAY_ORCS_ANSWER); + cr->AI()->Talk(SAY_MEDIVH_ORCS_ANSWER); } break; } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h index eb6aabd17..1d5325122 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h @@ -77,19 +77,50 @@ enum CreatureIds NPC_INFINITE_WHELP = 21818, NPC_INFINITE_CRONOMANCER = 17892, NPC_INFINITE_EXECUTIONER = 18994, - NPC_INFINITE_VANQUISHER = 18995 + NPC_INFINITE_VANQUISHER = 18995, + + NPC_DP_EMITTER_STALKER = 18582, + NPC_DP_CRYSTAL_STALKER = 18553, + NPC_DP_BEAM_STALKER = 18555 }; enum Misc { SPELL_RIFT_CHANNEL = 31387, + SPELL_TELEPORT_VISUAL = 7791, EVENT_NEXT_PORTAL = 1, EVENT_SUMMON_KEEPER = 2, + EVENT_WIPE_1 = 3, + EVENT_WIPE_2 = 4, + EVENT_WIPE_3 = 5, ACTION_OUTRO = 1 }; +enum medivhSays +{ + SAY_MEDIVH_ENTER = 0, + SAY_MEDIVH_DEATH = 5, + SAY_MEDIVH_WIN = 6, + SAY_MEDIVH_ORCS_ENTER = 7, + + SAY_MEDIVH_ORCS_ANSWER = 0 +}; + +enum medivhSpells +{ + SPELL_MANA_SHIELD = 31635, + SPELL_MEDIVH_CHANNEL = 31556, + SPELL_BLACK_CRYSTAL = 32563, + SPELL_PORTAL_CRYSTALS = 32564, + SPELL_BANISH_PURPLE = 32566, + SPELL_BANISH_GREEN = 32567, + + SPELL_CORRUPT = 31326, + SPELL_CORRUPT_AEONUS = 37853, +}; + template inline AI* GetTheBlackMorassAI(T* obj) { From 333de4c0db6f3c965616950e4207f30620c31563 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 18 Feb 2023 18:20:34 +0100 Subject: [PATCH 02/43] fix(DB/SAI): Lakka escort event. (#15097) Co-authored-by: offl --- .../rev_1676735655098024400.sql | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676735655098024400.sql diff --git a/data/sql/updates/pending_db_world/rev_1676735655098024400.sql b/data/sql/updates/pending_db_world/rev_1676735655098024400.sql new file mode 100644 index 000000000..654f20200 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676735655098024400.sql @@ -0,0 +1,49 @@ +-- +DELETE FROM `smart_scripts` WHERE `entryorguid`=18956 AND `source_type`=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 +(18956, 0, 0, 2, 62, 0, 100, 1, 7868, 0, 0, 0, 0, 80, 1895600, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Gossip Option 0 Selected - Run Script (No Repeat)'), +(18956, 0, 1, 0, 40, 0, 100, 0, 9, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Waypoint 9 Reached - Despawn (0)'), +(18956, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Link - Close Gossip'); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=1895600 AND `source_type`=9; +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 +(1895600, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 33, 18956, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Quest Credit \'Brother Against Brother\''), +(1895600, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Say Line 0'), +(1895600, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Remove NPC Flag Gossip'), +(1895600, 9, 3, 0, 0, 0, 100, 0, 1500, 1500, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 20, 183051, 5, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Activate Closest Gameobject \'Sethekk Cage\''), +(1895600, 9, 4, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 53, 0, 1895600, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Start Waypoint'); + +DELETE FROM `waypoints` WHERE `entry`=1895600 AND `point_comment`='Lakka'; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `point_comment`) VALUES +(1895600, 1, -156.811, 159.9, 0.552411, NULL, 0, 'Lakka'), +(1895600, 2, -152.811, 162.15, 0.552411, NULL, 0, 'Lakka'), +(1895600, 3, -148.561, 163.65, 0.552411, NULL, 0, 'Lakka'), +(1895600, 4, -141.811, 164.9, 0.552411, NULL, 0, 'Lakka'), +(1895600, 5, -136.061, 167.4, 0.552411, NULL, 0, 'Lakka'), +(1895600, 6, -129.811, 171.4, 0.552411, NULL, 0, 'Lakka'), +(1895600, 7, -118.061, 173.9, 0.552411, NULL, 0, 'Lakka'), +(1895600, 8, -99.0612, 173.4, 0.302411, NULL, 0, 'Lakka'), +(1895600, 9, -79.8091, 172.757, 0.010726, NULL, 0, 'Lakka'); + +DELETE FROM `gossip_menu` WHERE `MenuID`=7868; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES +(7868, 9635), +(7868, 9636); + +DELETE FROM `gossip_menu_option` WHERE `MenuID`=7868; +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`) VALUES +(7868, 0, 0, 'I\'ll have you out of there in just a moment.', 16054, 1, 1, 0, 0, 0, 0, '', 0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14, 15) AND `SourceGroup`=7868; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14, 7868, 9635, 0, 0, 29, 1, 18472, 20, 0, 0, 0, 0, '', 'Gossip text requires boss Darkweaver Sith NOT defeated'), +(14, 7868, 9636, 0, 0, 29, 1, 18472, 20, 1, 0, 0, 0, '', 'Gossip text requires boss Darkweaver Sith defeated'), +(15, 7868, 0, 0, 0, 29, 1, 18472, 20, 1, 0, 0, 0, '', 'Gossip option requires boss Darkweaver Sith defeated'); + +DELETE FROM `npc_text` WHERE `ID`=9635; +INSERT INTO `npc_text` (`ID`, `text0_0`) VALUES +(9635,'Please, $r, get me out of here! Unlocking the cage will surely attract my brother\'s attention. Kill Darkweaver Syth!'); + +DELETE FROM `gameobject_template_addon` WHERE `entry`=183051; +INSERT INTO `gameobject_template_addon` VALUES +(183051,112,32,0,0,0,0,0,0); From 068227c1d97aab46858a9a545b33591261d2c793 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 18 Feb 2023 17:22:58 +0000 Subject: [PATCH 03/43] chore(DB): import pending files Referenced commit(s): 333de4c0db6f3c965616950e4207f30620c31563 --- .../rev_1676735655098024400.sql => db_world/2023_02_18_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676735655098024400.sql => db_world/2023_02_18_00.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1676735655098024400.sql b/data/sql/updates/db_world/2023_02_18_00.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676735655098024400.sql rename to data/sql/updates/db_world/2023_02_18_00.sql index 654f20200..26df1a48a 100644 --- a/data/sql/updates/pending_db_world/rev_1676735655098024400.sql +++ b/data/sql/updates/db_world/2023_02_18_00.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_17_12 -> 2023_02_18_00 -- DELETE FROM `smart_scripts` WHERE `entryorguid`=18956 AND `source_type`=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 From a7d0b8d0cb91d3b857e4c4b6835b7983ea074890 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 18 Feb 2023 14:23:48 -0300 Subject: [PATCH 04/43] fix(DB/Creature): Port Terokkar Forest rares from Mangos (#15089) --- .../rev_1676669931339119400.sql | 297 ++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676669931339119400.sql diff --git a/data/sql/updates/pending_db_world/rev_1676669931339119400.sql b/data/sql/updates/pending_db_world/rev_1676669931339119400.sql new file mode 100644 index 000000000..075d2f2a4 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676669931339119400.sql @@ -0,0 +1,297 @@ +-- Okrek +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18685); +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 +(18685, 0, 0, 0, 9, 0, 100, 0, 0, 40, 3400, 4800, 0, 11, 14034, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - Within 0-40 Range - Cast \'Fireball\''), +(18685, 0, 1, 0, 0, 0, 100, 0, 6000, 8000, 6000, 10000, 0, 11, 12471, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - In Combat - Cast \'Shadow Bolt\''), +(18685, 0, 2, 0, 9, 0, 100, 0, 0, 10, 8500, 18000, 0, 11, 32711, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - Within 0-10 Range - Cast \'Shadow Nova\''), +(18685, 0, 3, 0, 23, 0, 100, 0, 13787, 0, 15000, 30000, 0, 11, 13787, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - On Missing Aura \'Demon Armor\' - Cast \'Demon Armor\''); + +-- Doomsayer Jurim +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18686); +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 +(18686, 0, 0, 0, 0, 0, 100, 0, 14000, 19000, 19000, 25000, 0, 11, 39212, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Corruption\''), +(18686, 0, 1, 0, 0, 0, 100, 0, 9000, 14000, 11000, 16000, 0, 11, 38401, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Incinerate\''), +(18686, 0, 2, 0, 0, 0, 100, 0, 8000, 14000, 15000, 21000, 0, 11, 39210, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Fear\''), +(18686, 0, 3, 0, 0, 0, 100, 0, 3000, 8000, 5000, 11000, 0, 11, 12493, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Curse of Weakness\''), +(18686, 0, 4, 0, 9, 0, 100, 0, 0, 40, 3400, 4800, 0, 11, 12471, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - Within 0-40 Range - Cast \'Shadow Bolt\''); + +-- The Crippler AI +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18689); +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 +(18689, 0, 0, 0, 0, 0, 100, 0, 3000, 5000, 11000, 15000, 0, 11, 39214, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Crippler - In Combat - Cast \'Pierce Armor\''), +(18689, 0, 1, 0, 0, 0, 100, 0, 8000, 12000, 13000, 18000, 0, 11, 38621, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Crippler - In Combat - Cast \'Debilitating Strike\''), +(18689, 0, 2, 0, 2, 0, 100, 1, 0, 50, 0, 0, 0, 11, 38882, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crippler - Between 0-50% Health - Cast \'Bone Armor\' (No Repeat)'); + +SET @CGUID := 25087; + +DELETE FROM `creature` WHERE `id1` IN (18685, 18686); +INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES +(@CGUID+0, 18685, 530, 1, -1633.09, 4416.39, 52.1155, 5.98654, 79200, 2), +(@CGUID+1, 18685, 530, 1, -2564.99, 5437.01, 28.0524, 3.10727, 93600, 2), +(@CGUID+2, 18685, 530, 1, -1843.55, 3958.17, 46.5491, 4.04581, 100800, 2), +(@CGUID+3, 18685, 530, 1, -3551.84, 3999.6, 93.7046, 5.20977, 115200, 2), + +(@CGUID+4, 18686, 530, 0, -2847.33, 3195.11, 7.4167, 0.091094, 21600, 2), +(@CGUID+5, 18686, 530, 0, -1842.53, 4231.02, 20.9801, 2.23252, 21600, 2), +(@CGUID+6, 18686, 530, 0, -2595.42, 5118.68, 6.63357, 6.27732, 21600, 2); + +DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5,@CGUID+6,40470)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+0, (@CGUID+0)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+1, (@CGUID+1)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+2, (@CGUID+2)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+3, (@CGUID+3)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+4, (@CGUID+4)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+5, (@CGUID+5)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+6, (@CGUID+6)*10, 0, 0, 1, 0, 0, ''); + +DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+3)*10,(@CGUID+4)*10,(@CGUID+5)*10,(@CGUID+6)*10,404700); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +((@CGUID+0)*10, 1, -1633.09, 4416.39, 52.0432), +((@CGUID+0)*10, 2, -1618.41, 4410.16, 52.5576), +((@CGUID+0)*10, 3, -1606.43, 4420.26, 52.6329), +((@CGUID+0)*10, 4, -1611.34, 4435.12, 52.6265), +((@CGUID+0)*10, 5, -1624.94, 4436.8, 52.6168), +((@CGUID+0)*10, 6, -1633.09, 4416.39, 52.0432), +((@CGUID+1)*10, 1, -2564.99, 5437.01, 27.482), +((@CGUID+1)*10, 2, -2567.62, 5447.4, 27.2306), +((@CGUID+1)*10, 3, -2580.16, 5451.42, 27.2254), +((@CGUID+1)*10, 4, -2591.11, 5437.56, 27.2367), +((@CGUID+1)*10, 5, -2579.75, 5426.12, 26.9373), +((@CGUID+1)*10, 6, -2570.32, 5424.22, 26.635), +((@CGUID+1)*10, 7, -2552.85, 5407.97, 20.0038), +((@CGUID+1)*10, 8, -2535.35, 5390.59, 27.2097), +((@CGUID+1)*10, 9, -2535.96, 5370.64, 27.2342), +((@CGUID+1)*10, 10, -2515.76, 5363.92, 27.2173), +((@CGUID+1)*10, 11, -2515.27, 5379.05, 28.0072), +((@CGUID+2)*10, 1, -1843.55, 3958.17, 46.5491), +((@CGUID+2)*10, 2, -1849.11, 3959.83, 46.5567), +((@CGUID+2)*10, 3, -1856.92, 3952.97, 46.4926), +((@CGUID+2)*10, 4, -1856.12, 3938.67, 46.05), +((@CGUID+2)*10, 5, -1853.1, 3924.98, 45.3693), +((@CGUID+2)*10, 6, -1862.49, 3908.7, 39.1752), +((@CGUID+2)*10, 7, -1879.08, 3879.85, 45.4519), +((@CGUID+2)*10, 8, -1903.73, 3870.84, 45.3793), +((@CGUID+2)*10, 9, -1910.33, 3850.94, 45.4441), +((@CGUID+2)*10, 10, -1887.31, 3837.38, 45.4393), +((@CGUID+2)*10, 11, -1871.41, 3847.16, 45.4412), +((@CGUID+2)*10, 12, -1871.2, 3867.79, 45.4431), +((@CGUID+2)*10, 13, -1880.9, 3877.3, 45.4447), +((@CGUID+2)*10, 14, -1868.93, 3897.99, 39.0142), +((@CGUID+2)*10, 15, -1853.37, 3923.24, 45.3162), +((@CGUID+2)*10, 16, -1826.5, 3934.92, 46.5561), +((@CGUID+2)*10, 17, -1829.69, 3958.36, 46.5588), +((@CGUID+2)*10, 18, -1836.99, 3960.91, 46.5588), +((@CGUID+3)*10, 1, -3551.84, 3999.6, 93.7046), +((@CGUID+3)*10, 2, -3563.29, 4001.41, 91.8348), +((@CGUID+3)*10, 3, -3590.03, 4006.42, 75.3029), +((@CGUID+3)*10, 4, -3555.16, 4040.98, 69.5859), +((@CGUID+3)*10, 5, -3512.02, 4051.49, 60.9738), +((@CGUID+3)*10, 6, -3499.84, 4050.19, 59.424), +((@CGUID+3)*10, 7, -3482.48, 4033.23, 59.8893), +((@CGUID+3)*10, 8, -3461.45, 4028.88, 59.1618), +((@CGUID+3)*10, 9, -3428.89, 4011.93, 62.2547), +((@CGUID+3)*10, 10, -3386.09, 4008.06, 58.385), +((@CGUID+3)*10, 11, -3363.25, 4002.11, 58.7623), +((@CGUID+3)*10, 12, -3386.09, 4008.06, 58.385), +((@CGUID+3)*10, 13, -3428.89, 4011.93, 62.2547), +((@CGUID+3)*10, 14, -3461.45, 4028.88, 59.1618), +((@CGUID+3)*10, 15, -3482.48, 4033.23, 59.8893), +((@CGUID+3)*10, 16, -3499.84, 4050.19, 59.424), +((@CGUID+3)*10, 17, -3512.02, 4051.49, 60.9738), +((@CGUID+3)*10, 18, -3555.16, 4040.98, 69.5859), +((@CGUID+3)*10, 19, -3590.03, 4006.42, 75.3029), +((@CGUID+3)*10, 20, -3563.29, 4001.41, 91.8348), +((@CGUID+4)*10, 1, -2843.86, 3205.97, 5.45323), +((@CGUID+4)*10, 2, -2829.24, 3218.81, 9.59048), +((@CGUID+4)*10, 3, -2814.12, 3235.72, 10.1736), +((@CGUID+4)*10, 4, -2792.54, 3259.91, 5.91885), +((@CGUID+4)*10, 5, -2774.46, 3280.17, 2.8828), +((@CGUID+4)*10, 6, -2751.21, 3306.24, 0.199384), +((@CGUID+4)*10, 7, -2728.55, 3318.21, -0.833018), +((@CGUID+4)*10, 8, -2719.59, 3331.35, -1.04936), +((@CGUID+4)*10, 9, -2708.94, 3349.74, -0.819842), +((@CGUID+4)*10, 10, -2694.72, 3374.29, -0.156626), +((@CGUID+4)*10, 11, -2685.08, 3390.93, 0.328583), +((@CGUID+4)*10, 12, -2675.69, 3407.16, 0.474826), +((@CGUID+4)*10, 13, -2669.68, 3416.29, 0.743526), +((@CGUID+4)*10, 14, -2660.96, 3425.2, 0.805554), +((@CGUID+4)*10, 15, -2654.25, 3430.82, 0.77502), +((@CGUID+4)*10, 16, -2645.46, 3437.83, 1.28666), +((@CGUID+4)*10, 17, -2639.59, 3442.5, 3.25542), +((@CGUID+4)*10, 18, -2630.71, 3449.41, 1.86245), +((@CGUID+4)*10, 19, -2621.54, 3456.21, 0.653284), +((@CGUID+4)*10, 20, -2617.41, 3460.51, 0.593326), +((@CGUID+4)*10, 21, -2611.5, 3471.52, 0.520041), +((@CGUID+4)*10, 22, -2610.04, 3475.69, 0.53993), +((@CGUID+4)*10, 23, -2606.9, 3480.85, 0.492544), +((@CGUID+4)*10, 24, -2590.41, 3502.84, 0.225892), +((@CGUID+4)*10, 25, -2582.03, 3512, 0.101641), +((@CGUID+4)*10, 26, -2566.36, 3522.06, 0.189451), +((@CGUID+4)*10, 27, -2534.38, 3523.07, 1.3404), +((@CGUID+4)*10, 28, -2523.33, 3527.83, 1.66667), +((@CGUID+4)*10, 29, -2516.31, 3533.95, 1.65006), +((@CGUID+4)*10, 30, -2507.47, 3544.67, 1.56155), +((@CGUID+4)*10, 31, -2491.83, 3549.68, 1.43199), +((@CGUID+4)*10, 32, -2471.56, 3551.98, 1.23732), +((@CGUID+4)*10, 33, -2463.14, 3555.66, 1.03546), +((@CGUID+4)*10, 34, -2456.3, 3555.25, 0.942503), +((@CGUID+4)*10, 35, -2452.53, 3537.02, 0.402467), +((@CGUID+4)*10, 36, -2446.32, 3528.59, -0.236494), +((@CGUID+4)*10, 37, -2462.93, 3549.41, 1.08819), +((@CGUID+4)*10, 38, -2460.92, 3557.5, 1.00403), +((@CGUID+4)*10, 39, -2425.49, 3596.2, 0.274173), +((@CGUID+4)*10, 40, -2405.2, 3613.88, 0.217946), +((@CGUID+4)*10, 41, -2391.31, 3632.83, 0.792431), +((@CGUID+4)*10, 42, -2383.97, 3658.54, 0.99065), +((@CGUID+4)*10, 43, -2351.54, 3700.72, 0.420721), +((@CGUID+4)*10, 44, -2314.59, 3729.83, 0.0297019), +((@CGUID+4)*10, 45, -2296.57, 3749.89, 0.363868), +((@CGUID+4)*10, 46, -2285.44, 3767.7, 0.291327), +((@CGUID+4)*10, 47, -2279.3, 3787.95, 0.314858), +((@CGUID+4)*10, 48, -2276.3, 3799.32, 0.521091), +((@CGUID+4)*10, 49, -2254.61, 3831.13, 2.70024), +((@CGUID+4)*10, 50, -2251.75, 3848.92, 5.15061), +((@CGUID+4)*10, 51, -2249.52, 3869.55, 2.39354), +((@CGUID+4)*10, 52, -2244.66, 3893.46, 1.58335), +((@CGUID+4)*10, 53, -2239.88, 3904.19, 1.10899), +((@CGUID+4)*10, 54, -2224.28, 3927.45, 0.706091), +((@CGUID+4)*10, 55, -2187.45, 3958.22, 0.921813), +((@CGUID+4)*10, 56, -2175.09, 3978.98, 0.929392), +((@CGUID+4)*10, 57, -2171.14, 4011.04, 0.450247), +((@CGUID+4)*10, 58, -2175.93, 4027.88, 0.519539), +((@CGUID+4)*10, 59, -2187.96, 4064.43, 1.4281), +((@CGUID+4)*10, 60, -2166.44, 4102.49, 4.27243), +((@CGUID+4)*10, 61, -1700.15, 3993.57, 55.6859), +((@CGUID+4)*10, 62, -1710.59, 4034.97, 60.6101), +((@CGUID+4)*10, 63, -1719.95, 4059.83, 62.7452), +((@CGUID+4)*10, 64, -1718.67, 4104.32, 64.3796), +((@CGUID+4)*10, 65, -1743.77, 4151.6, 62.3929), +((@CGUID+4)*10, 66, -1754.61, 4173.29, 58.3691), +((@CGUID+4)*10, 67, -1788.41, 4206.51, 44.1839), +((@CGUID+4)*10, 68, -1818.93, 4214.12, 33.1137), +((@CGUID+4)*10, 69, -1841.51, 4228.1, 22.0741), +((@CGUID+4)*10, 70, -1871.54, 4263.5, 8.22153), +((@CGUID+4)*10, 71, -1891, 4295.91, 3.23019), +((@CGUID+4)*10, 72, -1911.96, 4351.49, 1.66825), +((@CGUID+4)*10, 73, -1910.12, 4389.42, 1.77078), +((@CGUID+4)*10, 74, -1907.67, 4417.31, 2.99456), +((@CGUID+4)*10, 75, -1917.63, 4452.07, 6.27493), +((@CGUID+4)*10, 76, -1929.4, 4473.47, 8.90937), +((@CGUID+4)*10, 77, -1942.74, 4489.67, 11.1029), +((@CGUID+4)*10, 78, -1958.47, 4508.45, 12.7432), +((@CGUID+4)*10, 79, -1975.36, 4519.94, 13.1616), +((@CGUID+4)*10, 80, -1982.19, 4524.49, 13.0993), +((@CGUID+4)*10, 81, -1983.38, 4507.03, 12.7591), +((@CGUID+4)*10, 82, -1984.02, 4496.55, 11.9535), +((@CGUID+4)*10, 83, -1984.87, 4482.57, 11.1499), +((@CGUID+4)*10, 84, -1978.92, 4509.87, 12.6695), +((@CGUID+4)*10, 85, -1978.12, 4527.35, 13.36), +((@CGUID+4)*10, 86, -1967.33, 4546.79, 12.8741), +((@CGUID+4)*10, 87, -1953.04, 4566.47, 10.1123), +((@CGUID+4)*10, 88, -1946.5, 4582.91, 7.44598), +((@CGUID+4)*10, 89, -1948.3, 4599.58, 4.61956), +((@CGUID+4)*10, 90, -1955.08, 4637.48, -0.0588505), +((@CGUID+4)*10, 91, -1943.63, 4685.04, -2.18987), +((@CGUID+4)*10, 92, -1941.99, 4705.25, -2.67768), +((@CGUID+4)*10, 93, -1945.22, 4727.47, -3.22917), +((@CGUID+4)*10, 94, -1951.89, 4748.79, -2.9388), +((@CGUID+4)*10, 95, -1957.77, 4773.7, -1.42409), +((@CGUID+4)*10, 96, -1957.36, 4798.11, -0.0807409), +((@CGUID+4)*10, 97, -1944.66, 4829.17, 0.67), +((@CGUID+4)*10, 98, -1929.68, 4851.09, 1.64973), +((@CGUID+4)*10, 99, -1918.23, 4883.89, 2.11937), +((@CGUID+4)*10, 100, -1901.18, 4906.49, -1.12705), +((@CGUID+4)*10, 101, -1881.87, 4926.69, -9.60835), +((@CGUID+4)*10, 102, -1870.05, 4946.21, -17.0149), +((@CGUID+4)*10, 103, -1866.49, 4960.25, -20.2899), +((@CGUID+4)*10, 104, -1860.94, 5033.3, -26.0991), +((@CGUID+4)*10, 105, -1869.8, 4962.46, -20.3781), +((@CGUID+4)*10, 106, -1884.86, 4924.67, -8.30171), +((@CGUID+4)*10, 107, -1904.83, 4905.16, -0.202733), +((@CGUID+4)*10, 108, -1922.67, 4912.5, 6.06643), +((@CGUID+4)*10, 109, -1937.46, 4934.99, 14.8054), +((@CGUID+4)*10, 110, -1953.22, 4961.69, 24.7149), +((@CGUID+4)*10, 111, -1958.07, 4992.99, 30.1767), +((@CGUID+4)*10, 112, -1958.74, 5013.42, 32.4293), +((@CGUID+4)*10, 113, -1947.03, 5042.52, 25.2899), +((@CGUID+4)*10, 114, -1942.58, 5058.03, 19.5292), +((@CGUID+4)*10, 115, -1963.32, 5083.08, 11.1075), +((@CGUID+4)*10, 116, -1984.5, 5100.08, 7.82778), +((@CGUID+4)*10, 117, -2004.59, 5114.07, 8.26657), +((@CGUID+4)*10, 118, -2029.48, 5123.26, 8.48839), +((@CGUID+4)*10, 119, -2055.94, 5125.38, 7.48301), +((@CGUID+4)*10, 120, -2089.33, 5115.44, 3.14184), +((@CGUID+4)*10, 121, -2112.53, 5107.32, -2.40737), +((@CGUID+4)*10, 122, -2137.4, 5108.51, -11.5709), +((@CGUID+4)*10, 123, -2155.69, 5115.97, -18.1534), +((@CGUID+4)*10, 124, -2170.6, 5125.13, -21.2824), +((@CGUID+4)*10, 125, -2182.81, 5131.87, -21.667), +((@CGUID+4)*10, 126, -2198.88, 5138.77, -21.2323), +((@CGUID+4)*10, 127, -2219.62, 5144.57, -19.6848), +((@CGUID+4)*10, 128, -2238.57, 5146.29, -17.4706), +((@CGUID+4)*10, 129, -2266.45, 5144.26, -13.0598), +((@CGUID+4)*10, 130, -2290.86, 5142.23, -9.17377), +((@CGUID+4)*10, 131, -2308.35, 5142.09, -7.11532), +((@CGUID+4)*10, 132, -2333.72, 5149.44, -5.0165), +((@CGUID+4)*10, 133, -2365.45, 5157.88, -2.8501), +((@CGUID+4)*10, 134, -2390.26, 5158.22, -1.19618), +((@CGUID+4)*10, 135, -2417.84, 5153.35, 0.775549), +((@CGUID+4)*10, 136, -2442.28, 5142.04, 3.53141), +((@CGUID+4)*10, 137, -2469.81, 5120.56, 6.76948), +((@CGUID+4)*10, 138, -2498.06, 5115.06, 7.87731), +((@CGUID+4)*10, 139, -2532.85, 5118.89, 7.54034), +((@CGUID+4)*10, 140, -2555.6, 5120.59, 7.69492), +((@CGUID+5)*10, 1, -1842.53, 4231.02, 20.9801), +((@CGUID+5)*10, 2, -1869.21, 4261.13, 8.89557), +((@CGUID+5)*10, 3, -1881.34, 4278.1, 5.5224), +((@CGUID+5)*10, 4, -1912.25, 4349.02, 1.68234), +((@CGUID+5)*10, 5, -1914.46, 4374.06, 1.6238), +((@CGUID+5)*10, 6, -1907.34, 4411.19, 2.60279), +((@CGUID+5)*10, 7, -1910.76, 4438.84, 4.91422), +((@CGUID+5)*10, 8, -1931.52, 4475.42, 9.21656), +((@CGUID+5)*10, 9, -1970.77, 4515.64, 13.0504), +((@CGUID+5)*10, 10, -1976.75, 4527.05, 13.3934), +((@CGUID+5)*10, 11, -1972.72, 4539.17, 13.3457), +((@CGUID+5)*10, 12, -1946.46, 4597.88, 4.94647), +((@CGUID+5)*10, 13, -1956.85, 4637.1, 0.01026), +((@CGUID+5)*10, 14, -1940.22, 4702.82, -2.56809), +((@CGUID+5)*10, 15, -1949.24, 4739.94, -3.13258), +((@CGUID+5)*10, 16, -1955.66, 4753.73, -2.74301), +((@CGUID+5)*10, 17, -1959.56, 4796.31, -0.128966), +((@CGUID+5)*10, 18, -1921.66, 4869.82, 1.85516), +((@CGUID+5)*10, 19, -1915.69, 4891.67, 2.15411), +((@CGUID+5)*10, 20, -1888.97, 4918.59, -5.75911), +((@CGUID+5)*10, 21, -1869.05, 4946.2, -17.1173), +((@CGUID+5)*10, 22, -1865.53, 4978.99, -22.5178), +((@CGUID+6)*10, 1, -2595.42, 5118.68, 6.63357), +((@CGUID+6)*10, 2, -2546, 5122.18, 7.52113), +((@CGUID+6)*10, 3, -2485.8, 5112.25, 7.9062), +((@CGUID+6)*10, 4, -2440.9, 5141.97, 3.35802), +((@CGUID+6)*10, 5, -2416.25, 5152.64, 0.680542), +((@CGUID+6)*10, 6, -2378.67, 5159.02, -1.98798), +((@CGUID+6)*10, 7, -2338.08, 5151.37, -4.80083), +((@CGUID+6)*10, 8, -2307.95, 5141.67, -7.15532), +((@CGUID+6)*10, 9, -2276.08, 5142.61, -11.4779), +((@CGUID+6)*10, 10, -2228.73, 5147.82, -18.686), +((@CGUID+6)*10, 11, -2200.59, 5140.23, -21.1159), +((@CGUID+6)*10, 12, -2165.21, 5123.69, -20.855), +((@CGUID+6)*10, 13, -2148.15, 5138.56, -22.1488); + +-- Pooling +DELETE FROM `pool_template` WHERE `entry`=1073 AND `description` LIKE '%Okrek%'; +DELETE FROM `pool_template` WHERE `entry`=1117 AND `description`='Doomsayer Jurim (18686)'; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(1073, 1, 'Okrek (18685)'), +(1117, 1, 'Doomsayer Jurim (18686)'); + +DELETE FROM `pool_creature` WHERE `pool_entry`=1073 AND `description` LIKE '%Okrek%'; +DELETE FROM `pool_creature` WHERE `pool_entry`=1117 AND `description`='Doomsayer Jurim (18686)'; +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@CGUID+0, 1073, 0, 'Okrek (18685)'), +(@CGUID+1, 1073, 0, 'Okrek (18685)'), +(@CGUID+2, 1073, 0, 'Okrek (18685)'), +(@CGUID+3, 1073, 0, 'Okrek (18685)'), +(@CGUID+4, 1117, 0, 'Doomsayer Jurim (18686)'), +(@CGUID+5, 1117, 0, 'Doomsayer Jurim (18686)'), +(@CGUID+6, 1117, 0, 'Doomsayer Jurim (18686)'); From daa662dd069251c07fbdc0213f5acb0496551ae0 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 18 Feb 2023 14:24:10 -0300 Subject: [PATCH 05/43] fix(DB/Creature): Port Netherstorm rares from Mangos (#15083) --- .../rev_1676644474129128500.sql | 328 ++++++++++++++++++ 1 file changed, 328 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676644474129128500.sql diff --git a/data/sql/updates/pending_db_world/rev_1676644474129128500.sql b/data/sql/updates/pending_db_world/rev_1676644474129128500.sql new file mode 100644 index 000000000..4f2bdbcc3 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676644474129128500.sql @@ -0,0 +1,328 @@ +-- Chief Engineer Lorthander +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18697); +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 +(18697, 0, 0, 0, 2, 0, 100, 1, 0, 15, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - Between 0-15% Health - Flee For Assist (No Repeat)'), +(18697, 0, 1, 0, 0, 0, 100, 0, 8000, 14000, 12000, 15000, 0, 11, 38898, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - In Combat - Cast \'Arcane Unlocking\''), +(18697, 0, 2, 0, 0, 0, 100, 0, 15000, 21000, 15000, 21000, 0, 11, 36843, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - In Combat - Cast \'Slow\''), +(18697, 0, 3, 0, 0, 0, 100, 0, 0, 0, 3400, 4800, 0, 11, 38204, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - In Combat - Cast \'Arcane Bolt\''); + +-- Ever-Core comments +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 18698) AND (`source_type` = 0) AND (`id` IN (1, 2)); +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 +(18698, 0, 1, 0, 0, 0, 100, 0, 4000, 8000, 18000, 22000, 0, 11, 35892, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ever-Core the Punisher - In Combat - Cast \'Suppression\''), +(18698, 0, 2, 0, 9, 0, 100, 0, 0, 8, 19000, 23000, 0, 11, 33860, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ever-Core the Punisher - Within 0-8 Range - Cast \'Arcane Explosion\''); + +-- Nuramoc +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 20932); +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 +(20932, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 38905, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nuramoc - On Aggro - Cast \'Prismatic Shield\''), +(20932, 0, 1, 0, 0, 0, 100, 0, 2000, 3000, 4000, 7000, 0, 11, 21971, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Nuramoc - In Combat - Cast \'Poison Bolt\''), +(20932, 0, 2, 0, 0, 0, 100, 0, 0, 0, 2000, 5000, 0, 11, 15797, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Nuramoc - In Combat - Cast \'Lightning Breath\''); + +-- Spawns +SET @CGUID := 24935; + +DELETE FROM `creature` WHERE `id1` IN (18697, 18698, 20932); +INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES +-- Chief Engineer Lorthander +(@CGUID+0, 18697, 530, 1, 4081.08, 4001.03, 119.01, 4.57457, 75600, 2), +(@CGUID+1, 18697, 530, 1, 2412.86, 2894.41, 131.323, 3.35328, 93600, 2), +(@CGUID+2, 18697, 530, 1, 3000.46, 2187.57, 164.398, 5.2995, 115200, 2), +-- Ever-Core +(@CGUID+3, 18698, 530, 0, 4029.03, 4134.35, 191.496, 4.54011, 86400, 2), +(@CGUID+4, 18698, 530, 0, 2943.06, 4351.28, 142.359, 0.000215, 104400, 2), +(@CGUID+5, 18698, 530, 0, 3706.06, 2078.25, 151.867, 1.03066, 115200, 2), +-- Nuramoc +(@CGUID+6, 20932, 530, 0, 3280.81, 1907.83, 133.229, 1.89858, 28800, 2), +(@CGUID+7, 20932, 530, 0, 2817.23, 2929.54, 130.138, 2.32736, 39600, 2), +(@CGUID+8, 20932, 530, 0, 4788.54, 3503.49, 119.851, 3.12453, 50400, 2); + +DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5,@CGUID+6,@CGUID+7,@CGUID+8,86860)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+0, (@CGUID+0)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+1, (@CGUID+1)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+2, (@CGUID+2)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+3, (@CGUID+3)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+4, (@CGUID+4)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+5, (@CGUID+5)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+6, (@CGUID+6)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+7, (@CGUID+7)*10, 0, 0, 1, 0, 0, ''), +(@CGUID+8, (@CGUID+8)*10, 0, 0, 1, 0, 0, ''); + +DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+3)*10,(@CGUID+4)*10,(@CGUID+5)*10,(@CGUID+6)*10,(@CGUID+7)*10,(@CGUID+8)*10,868600); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +-- Chief Engineer Lorthander +((@CGUID+0)*10, 1, 4081.08, 4001.03, 119.01), +((@CGUID+0)*10, 2, 4087.54, 4006.7, 117.744), +((@CGUID+0)*10, 3, 4097.75, 4003.55, 116.437), +((@CGUID+0)*10, 4, 4107.33, 3987.76, 118.036), +((@CGUID+0)*10, 5, 4074.27, 3980.02, 118.22), +((@CGUID+0)*10, 6, 4079.4, 3988.14, 118.289), +((@CGUID+1)*10, 1, 2412.86, 2894.41, 131.323), +((@CGUID+1)*10, 2, 2435.58, 2900.06, 130.183), +((@CGUID+1)*10, 3, 2463.95, 2909.32, 128.59), +((@CGUID+1)*10, 4, 2477.04, 2917.6, 128.541), +((@CGUID+1)*10, 5, 2484.46, 2904.05, 130.643), +((@CGUID+1)*10, 6, 2488, 2892.2, 132.342), +((@CGUID+1)*10, 7, 2484.72, 2881.2, 133.059), +((@CGUID+1)*10, 8, 2450.92, 2852.48, 131.622), +((@CGUID+1)*10, 9, 2424.88, 2797.83, 134.493), +((@CGUID+1)*10, 10, 2426.77, 2750.39, 133.243), +((@CGUID+1)*10, 11, 2426.77, 2750.39, 133.243), +((@CGUID+1)*10, 12, 2368, 2673.64, 132.39), +((@CGUID+1)*10, 13, 2443.76, 2745.36, 134.493), +((@CGUID+1)*10, 14, 2423.25, 2797.12, 134.491), +((@CGUID+1)*10, 15, 2448.63, 2849.79, 132.632), +((@CGUID+1)*10, 16, 2486.16, 2882.9, 133.075), +((@CGUID+1)*10, 17, 2484.64, 2905.67, 130.354), +((@CGUID+1)*10, 18, 2489.72, 2915.52, 128.954), +((@CGUID+1)*10, 19, 2476.47, 2917.2, 128.513), +((@CGUID+1)*10, 20, 2447.81, 2900.57, 129.188), +((@CGUID+2)*10, 1, 3000.46, 2187.57, 164.398), +((@CGUID+2)*10, 2, 3018.52, 2186.65, 165.329), +((@CGUID+2)*10, 3, 3076.56, 2210.99, 160.886), +((@CGUID+2)*10, 4, 3103.56, 2222.24, 155.355), +((@CGUID+2)*10, 5, 3124.82, 2243.5, 150.057), +((@CGUID+2)*10, 6, 3117.8, 2253.66, 149.953), +((@CGUID+2)*10, 7, 3096.61, 2268.98, 150.102), +((@CGUID+2)*10, 8, 3083.4, 2290.85, 150.485), +((@CGUID+2)*10, 9, 3054.61, 2284.5, 151.691), +((@CGUID+2)*10, 10, 3021.72, 2284.59, 158.405), +((@CGUID+2)*10, 11, 3009.22, 2292.73, 161.266), +((@CGUID+2)*10, 12, 2983.65, 2288.22, 161.706), +((@CGUID+2)*10, 13, 2956.54, 2284.38, 161.727), +((@CGUID+2)*10, 14, 2941.33, 2263.89, 161.708), +((@CGUID+2)*10, 15, 2966.96, 2206.15, 165.329), +-- Ever-Core +((@CGUID+3)*10, 1, 4029.03, 4134.35, 191.496), +((@CGUID+3)*10, 2, 4021.06, 4144.61, 191.502), +((@CGUID+3)*10, 3, 4007.77, 4151.29, 191.586), +((@CGUID+3)*10, 4, 3991.62, 4152.59, 191.401), +((@CGUID+3)*10, 5, 3966.21, 4145.5, 191.295), +((@CGUID+3)*10, 6, 3937.03, 4122.04, 192.695), +((@CGUID+3)*10, 7, 3924.13, 4093.4, 191.789), +((@CGUID+3)*10, 8, 3911.34, 4060.71, 187.287), +((@CGUID+3)*10, 9, 3880.16, 4036.23, 183.365), +((@CGUID+3)*10, 10, 3879.16, 4023.95, 183.11), +((@CGUID+3)*10, 11, 3890.49, 4005.85, 183.428), +((@CGUID+3)*10, 12, 3874, 3968.38, 183.774), +((@CGUID+3)*10, 13, 3873.48, 3953.19, 182.426), +((@CGUID+3)*10, 14, 3884.47, 3936.53, 179.405), +((@CGUID+3)*10, 15, 3915.08, 3918.04, 176.204), +((@CGUID+3)*10, 16, 3952.32, 3889.77, 174.977), +((@CGUID+3)*10, 17, 3965.74, 3872.72, 171.607), +((@CGUID+3)*10, 18, 3972.39, 3852.88, 166.197), +((@CGUID+3)*10, 19, 3969.66, 3840.88, 162.264), +((@CGUID+3)*10, 20, 3961.25, 3833.68, 158.329), +((@CGUID+3)*10, 21, 3908.53, 3834.6, 129.743), +((@CGUID+3)*10, 22, 3898.06, 3828.14, 123.788), +((@CGUID+3)*10, 23, 3898.27, 3787.49, 118.457), +((@CGUID+3)*10, 24, 3881.31, 3790.1, 116.619), +((@CGUID+3)*10, 25, 3865.28, 3804.66, 111.946), +((@CGUID+3)*10, 26, 3853.11, 3824.74, 106.821), +((@CGUID+3)*10, 27, 3847.02, 3830.68, 105.424), +((@CGUID+3)*10, 28, 3830.93, 3836.43, 103.431), +((@CGUID+3)*10, 29, 3817.24, 3851.85, 103.623), +((@CGUID+3)*10, 30, 3807.24, 3877.86, 105.557), +((@CGUID+3)*10, 31, 3792.14, 3888.13, 106.755), +((@CGUID+3)*10, 32, 3790.1, 3912.19, 109.532), +((@CGUID+3)*10, 33, 3798.19, 3938.67, 112.965), +((@CGUID+3)*10, 34, 3789.57, 3968.79, 114.346), +((@CGUID+3)*10, 35, 3790.27, 3993.03, 116.942), +((@CGUID+3)*10, 36, 3801.81, 4011.81, 121.598), +((@CGUID+4)*10, 1, 2943.06, 4351.28, 142.359), +((@CGUID+4)*10, 2, 2976.56, 4326.1, 146.657), +((@CGUID+4)*10, 3, 2984.38, 4318.63, 140.43), +((@CGUID+4)*10, 4, 3003.09, 4297.83, 144.609), +((@CGUID+4)*10, 5, 2997.3, 4273.92, 155.499), +((@CGUID+4)*10, 6, 2992.4, 4259.44, 159.899), +((@CGUID+4)*10, 7, 3011.36, 4227.12, 160.779), +((@CGUID+4)*10, 8, 3014.4, 4166.68, 159.855), +((@CGUID+4)*10, 9, 3022.76, 4153.83, 152.368), +((@CGUID+4)*10, 10, 3020.22, 4124.82, 150.603), +((@CGUID+4)*10, 11, 3010.89, 4107.9, 151.056), +((@CGUID+4)*10, 12, 3002.58, 4075.26, 150.101), +((@CGUID+4)*10, 13, 2986.18, 4047.61, 149.975), +((@CGUID+4)*10, 14, 2977.22, 4041.37, 149.782), +((@CGUID+4)*10, 15, 2967.34, 4049.68, 152.343), +((@CGUID+4)*10, 16, 2950.84, 4040.8, 153.404), +((@CGUID+4)*10, 17, 2910.14, 4011.95, 149.729), +((@CGUID+4)*10, 18, 2903.81, 3989.59, 148.75), +((@CGUID+4)*10, 19, 2888.34, 3972.1, 142.151), +((@CGUID+4)*10, 20, 2863.86, 3981.41, 141.777), +((@CGUID+4)*10, 21, 2836.9, 4004.29, 142.699), +((@CGUID+4)*10, 22, 2781.39, 3991.13, 144.969), +((@CGUID+4)*10, 23, 2758.93, 3999.78, 143.672), +((@CGUID+4)*10, 24, 2709.58, 4046.75, 150.37), +((@CGUID+4)*10, 25, 2650.82, 4095.06, 154.381), +((@CGUID+4)*10, 26, 2643.3, 4149.94, 158.604), +((@CGUID+4)*10, 27, 2636.57, 4196.3, 155.13), +((@CGUID+4)*10, 28, 2660.27, 4236.62, 154.33), +((@CGUID+4)*10, 29, 2669.6, 4252.5, 154.308), +((@CGUID+4)*10, 30, 2720.43, 4272.12, 153.934), +((@CGUID+4)*10, 31, 2742.16, 4288.13, 152.346), +((@CGUID+4)*10, 32, 2800.91, 4303.42, 151.593), +((@CGUID+4)*10, 33, 2830.31, 4316.65, 148.175), +((@CGUID+4)*10, 34, 2859.57, 4281.49, 158.539), +((@CGUID+4)*10, 35, 2870.11, 4280.62, 159.52), +((@CGUID+4)*10, 36, 2904.21, 4279.1, 156.87), +((@CGUID+4)*10, 37, 2931.21, 4314.67, 145.769), +((@CGUID+4)*10, 38, 2936.37, 4335.05, 147.717), +((@CGUID+4)*10, 39, 2935.57, 4348.43, 142.903), +((@CGUID+4)*10, 40, 2943.06, 4351.28, 142.359), +((@CGUID+5)*10, 1, 3706.06, 2078.25, 151.867), +((@CGUID+5)*10, 2, 3726.17, 2118.53, 149.248), +((@CGUID+5)*10, 3, 3753.52, 2168.87, 140.165), +((@CGUID+5)*10, 4, 3775.75, 2208.89, 144.852), +((@CGUID+5)*10, 5, 3780.36, 2229.51, 148.832), +((@CGUID+5)*10, 6, 3787.88, 2241.95, 149.93), +((@CGUID+5)*10, 7, 3805.08, 2254.19, 147.519), +((@CGUID+5)*10, 8, 3817.69, 2273.88, 148.95), +((@CGUID+5)*10, 9, 3855.16, 2269.88, 152.406), +((@CGUID+5)*10, 10, 3882.21, 2283.25, 154.278), +((@CGUID+5)*10, 11, 3916.8, 2277.97, 156.756), +((@CGUID+5)*10, 12, 3945.83, 2280.16, 159.016), +((@CGUID+5)*10, 13, 3994.1, 2271.92, 162.937), +((@CGUID+5)*10, 14, 4012.48, 2250.07, 163.409), +((@CGUID+5)*10, 15, 4052.18, 2235.04, 163.544), +((@CGUID+5)*10, 16, 4068.36, 2220.2, 164.592), +((@CGUID+5)*10, 17, 4079.98, 2202.1, 163.79), +((@CGUID+5)*10, 18, 4097.22, 2184.98, 160.829), +((@CGUID+5)*10, 19, 4103.19, 2154.2, 159.513), +((@CGUID+5)*10, 20, 4112.25, 2148.36, 158.521), +((@CGUID+5)*10, 21, 4143.31, 2141.96, 156.943), +((@CGUID+5)*10, 22, 4167.26, 2149.15, 157.128), +((@CGUID+5)*10, 23, 4200.38, 2173.98, 151.071), +((@CGUID+5)*10, 24, 4233.12, 2141.78, 147.754), +((@CGUID+5)*10, 25, 4244.52, 2118.75, 145.07), +((@CGUID+5)*10, 26, 4247.28, 2078.07, 143.644), +((@CGUID+5)*10, 27, 4263.61, 2039.35, 137.724), +((@CGUID+5)*10, 28, 4262.84, 2019.98, 134.967), +((@CGUID+5)*10, 29, 4256.09, 2007.07, 130.557), +((@CGUID+5)*10, 30, 4250.27, 1995.93, 135.552), +((@CGUID+5)*10, 31, 4250.13, 1967.99, 137.595), +((@CGUID+5)*10, 32, 4265.63, 1935, 137.639), +((@CGUID+5)*10, 33, 4266.21, 1898.98, 138.695), +((@CGUID+5)*10, 34, 4259, 1877.24, 140.059), +((@CGUID+5)*10, 35, 4223.69, 1842.53, 142.999), +((@CGUID+5)*10, 36, 4215.04, 1824.57, 141.276), +((@CGUID+5)*10, 37, 4207.37, 1795.16, 137.364), +((@CGUID+5)*10, 38, 4187.92, 1757.34, 130.795), +((@CGUID+5)*10, 39, 4151.56, 1755.07, 132.442), +((@CGUID+5)*10, 40, 4136.05, 1751.07, 133.77), +((@CGUID+5)*10, 41, 4124.27, 1755.99, 136.623), +((@CGUID+5)*10, 42, 4069.32, 1753.11, 144.431), +((@CGUID+5)*10, 43, 4039.85, 1741.67, 145.595), +((@CGUID+5)*10, 44, 3967.11, 1700.39, 145.255), +((@CGUID+5)*10, 45, 3943.89, 1684.72, 140.837), +((@CGUID+5)*10, 46, 3889.03, 1685.44, 138.774), +((@CGUID+5)*10, 47, 3849.84, 1667.25, 138.58), +((@CGUID+5)*10, 48, 3834.11, 1671.52, 140.663), +((@CGUID+5)*10, 49, 3813.53, 1684.09, 145.686), +((@CGUID+5)*10, 50, 3800.66, 1696.89, 151.409), +((@CGUID+5)*10, 51, 3788.9, 1727.14, 167.273), +((@CGUID+5)*10, 52, 3796.24, 1751.33, 177.772), +((@CGUID+5)*10, 53, 3775.68, 1766.3, 170.866), +((@CGUID+5)*10, 54, 3759.51, 1784.82, 163.141), +((@CGUID+5)*10, 55, 3679.22, 1853.57, 126.875), +((@CGUID+5)*10, 56, 3660.26, 1896.73, 120.891), +((@CGUID+5)*10, 57, 3662.77, 1912.97, 117.708), +((@CGUID+5)*10, 58, 3674.79, 1927.2, 115.677), +((@CGUID+5)*10, 59, 3677.09, 1977.38, 120.129), +((@CGUID+5)*10, 60, 3702.1, 2003.87, 128.244), +((@CGUID+5)*10, 61, 3701.96, 2031.67, 133.85), +((@CGUID+5)*10, 62, 3721.18, 2044.33, 142.94), +((@CGUID+5)*10, 63, 3724.31, 2061.48, 146.105), +-- Nuramoc +((@CGUID+6)*10, 1, 3250.51, 1961.25, 132.385), +((@CGUID+6)*10, 2, 3228.29, 2001.11, 138.882), +((@CGUID+6)*10, 3, 3235.93, 2084.18, 135.385), +((@CGUID+6)*10, 4, 3239.06, 2128.28, 137.825), +((@CGUID+6)*10, 5, 3207.12, 2151.5, 136.752), +((@CGUID+6)*10, 6, 3213.69, 2229.01, 138.009), +((@CGUID+6)*10, 7, 3231.47, 2305.03, 124.795), +((@CGUID+6)*10, 8, 3231.7, 2393.11, 103.663), +((@CGUID+6)*10, 9, 3269.73, 2434.75, 74.4029), +((@CGUID+6)*10, 10, 3332.71, 2467.68, 85.8992), +((@CGUID+6)*10, 11, 3384.93, 2532.03, 110.799), +((@CGUID+6)*10, 12, 3438.84, 2578.09, 142.708), +((@CGUID+6)*10, 13, 3342.11, 2593.94, 188.744), +((@CGUID+6)*10, 14, 3214.78, 2476.76, 98.5975), +((@CGUID+6)*10, 15, 3258.1, 2439.65, 112.365), +((@CGUID+6)*10, 16, 3305.8, 2397.5, 135.329), +((@CGUID+6)*10, 17, 3379.15, 2306.53, 96.941), +((@CGUID+6)*10, 18, 3302.31, 2171.94, 123.625), +((@CGUID+6)*10, 19, 3274.61, 2098.45, 115.694), +((@CGUID+6)*10, 20, 3180.44, 1989.87, 164.138), +((@CGUID+6)*10, 21, 3160.3, 1887, 152.491), +((@CGUID+6)*10, 22, 3152.02, 1758.62, 160.324), +((@CGUID+6)*10, 23, 3155.54, 1702.77, 140.429), +((@CGUID+6)*10, 24, 3255.68, 1751.95, 124.196), +((@CGUID+6)*10, 25, 3290.94, 1785.01, 139.078), +((@CGUID+6)*10, 26, 3301.79, 1853.55, 131.618), +((@CGUID+6)*10, 27, 3283.64, 1905.23, 124.957), +((@CGUID+6)*10, 28, 3280.69, 1911.33, 120.78), +((@CGUID+7)*10, 1, 2817.23, 2929.54, 122.393), +((@CGUID+7)*10, 2, 2730.13, 3012.53, 128.227), +((@CGUID+7)*10, 3, 2675.16, 3059.62, 128.247), +((@CGUID+7)*10, 4, 2645.27, 3091.27, 134.927), +((@CGUID+7)*10, 5, 2624.72, 3174.52, 141.912), +((@CGUID+7)*10, 6, 2596.74, 3254.45, 140.111), +((@CGUID+7)*10, 7, 2552.73, 3278.38, 127.29), +((@CGUID+7)*10, 8, 2510.04, 3311.72, 120.465), +((@CGUID+7)*10, 9, 2465.47, 3374.43, 123.69), +((@CGUID+7)*10, 10, 2499.48, 3465.25, 129.593), +((@CGUID+7)*10, 11, 2509.5, 3562.82, 131.936), +((@CGUID+7)*10, 12, 2486.69, 3644.09, 124.994), +((@CGUID+7)*10, 13, 2483.76, 3717.01, 126.238), +((@CGUID+7)*10, 14, 2452.58, 3773.66, 119.516), +((@CGUID+7)*10, 15, 2449.44, 3869.47, 118.01), +((@CGUID+7)*10, 16, 2441.61, 3954.58, 121.328), +((@CGUID+7)*10, 17, 2416.61, 4001.19, 115.294), +((@CGUID+7)*10, 18, 2434.59, 4063.79, 126.034), +((@CGUID+7)*10, 19, 2500.28, 4197.05, 136.513), +((@CGUID+8)*10, 1, 4788.54, 3503.49, 121.951), +((@CGUID+8)*10, 2, 4706.67, 3520.02, 136.092), +((@CGUID+8)*10, 3, 4637.13, 3533.71, 144.088), +((@CGUID+8)*10, 4, 4573.97, 3523.54, 145.267), +((@CGUID+8)*10, 5, 4513.13, 3569.78, 144.028), +((@CGUID+8)*10, 6, 4426.59, 3569.69, 159.578), +((@CGUID+8)*10, 7, 4352.02, 3594.6, 149.207), +((@CGUID+8)*10, 8, 4265.53, 3590.13, 166.896), +((@CGUID+8)*10, 9, 4201.69, 3563.6, 156.539), +((@CGUID+8)*10, 10, 4265.53, 3590.13, 166.896), +((@CGUID+8)*10, 11, 4352.02, 3594.6, 149.207), +((@CGUID+8)*10, 12, 4426.59, 3569.69, 159.578), +((@CGUID+8)*10, 13, 4513.13, 3569.78, 144.028), +((@CGUID+8)*10, 14, 4573.97, 3523.54, 145.267), +((@CGUID+8)*10, 15, 4637.13, 3533.71, 144.088), +((@CGUID+8)*10, 16, 4706.67, 3520.02, 136.092), +((@CGUID+8)*10, 17, 4788.54, 3503.49, 121.951); + +-- Pooling +DELETE FROM `pool_template` WHERE `entry`=1075; -- Description for this one is wrongly attributed to Okrek +DELETE FROM `pool_template` WHERE `entry`=1078 AND `description` LIKE '%Ever-Core%'; +DELETE FROM `pool_template` WHERE `entry`=1115 AND `description`='Nuramoc (20932)'; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(1075, 1, 'Chief Engineer Lorthander (18697)'), +(1078, 1, 'Ever-Core the Punisher (18698)'), +(1115, 1, 'Nuramoc (20932)'); + +DELETE FROM `pool_creature` WHERE `pool_entry`=1075 AND `description` LIKE '%Lorthander%'; +DELETE FROM `pool_creature` WHERE `pool_entry`=1078 AND `description` LIKE '%Ever-Core%'; +DELETE FROM `pool_creature` WHERE `pool_entry`=1115 AND `description`='Nuramoc (20932)'; +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@CGUID+0, 1075, 0, 'Chief Engineer Lorthander (18697)'), +(@CGUID+1, 1075, 0, 'Chief Engineer Lorthander (18697)'), +(@CGUID+2, 1075, 0, 'Chief Engineer Lorthander (18697)'), +(@CGUID+3, 1078, 0, 'Ever-Core the Punisher (18698)'), +(@CGUID+4, 1078, 0, 'Ever-Core the Punisher (18698)'), +(@CGUID+5, 1078, 0, 'Ever-Core the Punisher (18698)'), +(@CGUID+6, 1115, 0, 'Nuramoc (20932)'), +(@CGUID+7, 1115, 0, 'Nuramoc (20932)'), +(@CGUID+8, 1115, 0, 'Nuramoc (20932)'); + +-- Nuramoc +DELETE FROM `creature_template_movement` WHERE (`CreatureId` = 20932); +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES +(20932, 1, 0, 1, 0, 0, 0, 0); From 6f8f33dacf76c7cb1a13bdaab370fc9163b25415 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 18 Feb 2023 14:25:14 -0300 Subject: [PATCH 06/43] fix(DB/Creature): Add sniffed waypoints to Fenissa the Assassin (#15077) Co-authored-by: neifion-00000000 <91289495+neifion-00000000@users.noreply.github.com> --- .../rev_1676604656261986500.sql | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676604656261986500.sql diff --git a/data/sql/updates/pending_db_world/rev_1676604656261986500.sql b/data/sql/updates/pending_db_world/rev_1676604656261986500.sql new file mode 100644 index 000000000..8a5f7f775 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676604656261986500.sql @@ -0,0 +1,117 @@ +-- +DELETE from `creature` where `guid`=77831 AND `id1`=22060; +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(77831, 22060, 0, 0, 530, 0, 0, 1, 1, 1, -2024.52, -10786.1, 81.9137, 0.664982, 3600, 0, 0, 0, 0, 2, 0, 0, 0, '', 0); + +UPDATE `creature_template_addon` SET `bytes1` = 0 WHERE (`entry` = 22060); + +-- Pathing for Entry: 22060 +SET @NPC := 77831; +SET @CPATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-1970.9095,`position_y`=-10545.881,`position_z`=176.9451 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@CPATH,0,0,1,0,0, '34189'); +DELETE FROM `waypoint_data` WHERE `id`=@CPATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@CPATH,1,-1970.9095,-10545.881,176.9451,0,0,0,0,100,0), +(@CPATH,2,-1940.0586,-10560.943,177.81454,0,0,0,0,100,0), +(@CPATH,3,-1946.3624,-10587.011,172.94002,0,0,0,0,100,0), +(@CPATH,4,-1961.7201,-10607.221,165.48112,0,0,0,0,100,0), +(@CPATH,5,-1988.8058,-10612.373,162.95183,0,0,0,0,100,0), +(@CPATH,6,-2013.801,-10602.308,154.4991,0,0,0,0,100,0), +(@CPATH,7,-2038.0187,-10619.16,146.1079,0,0,0,0,100,0), +(@CPATH,8,-2037.1124,-10638.802,140.50319,0,0,0,0,100,0), +(@CPATH,9,-2012.5981,-10662.126,122.97834,0,0,0,0,100,0), +(@CPATH,10,-1976.1384,-10684.696,112.91368,0,0,0,0,100,0), +(@CPATH,11,-1947.3251,-10695.539,110.90299,0,0,0,0,100,0), +(@CPATH,12,-1908.1012,-10710.498,111.27751,0,0,0,0,100,0), +(@CPATH,13,-1875.1051,-10702.744,111.70239,0,0,0,0,100,0), +(@CPATH,14,-1855.2137,-10689.97,112.97398,0,0,0,0,100,0), +(@CPATH,15,-1824.9171,-10668.398,136.08665,0,0,0,0,100,0), +(@CPATH,16,-1819.2031,-10647.129,144.38739,0,0,0,0,100,0), +(@CPATH,17,-1812.0326,-10612.489,148.245,0,0,0,0,100,0), +(@CPATH,18,-1833.3806,-10588.412,157.1347,0,0,0,0,100,0), +(@CPATH,19,-1867.1841,-10566.302,174.33784,0,0,0,0,100,0), +(@CPATH,20,-1877.4294,-10545.098,177.00142,0,1200,0,0,100,0), +(@CPATH,21,-1867.1841,-10566.302,174.33784,0,0,0,0,100,0), +(@CPATH,22,-1833.3806,-10588.412,157.1347,0,0,0,0,100,0), +(@CPATH,23,-1812.0326,-10612.489,148.245,0,0,0,0,100,0), +(@CPATH,24,-1819.2179,-10647.147,144.46405,0,0,0,0,100,0), +(@CPATH,25,-1824.9171,-10668.398,136.08665,0,0,0,0,100,0), +(@CPATH,26,-1855.2137,-10689.97,112.97398,0,0,0,0,100,0), +(@CPATH,27,-1875.1051,-10702.744,111.70239,0,0,0,0,100,0), +(@CPATH,28,-1908.1012,-10710.498,111.27751,0,0,0,0,100,0), +(@CPATH,29,-1947.3251,-10695.539,110.90299,0,0,0,0,100,0), +(@CPATH,30,-1976.1384,-10684.696,112.91368,0,0,0,0,100,0), +(@CPATH,31,-2012.5981,-10662.126,122.97834,0,0,0,0,100,0), +(@CPATH,32,-2037.1124,-10638.802,140.50319,0,0,0,0,100,0), +(@CPATH,33,-2038.0187,-10619.16,146.1079,0,0,0,0,100,0), +(@CPATH,34,-2013.801,-10602.308,154.4991,0,0,0,0,100,0), +(@CPATH,35,-1988.8058,-10612.373,162.95183,0,0,0,0,100,0), +(@CPATH,36,-1961.7201,-10607.221,165.48112,0,0,0,0,100,0), +(@CPATH,37,-1946.3624,-10587.011,172.94002,0,0,0,0,100,0), +(@CPATH,38,-1940.0586,-10560.943,177.81454,0,0,0,0,100,0); +-- 0x204CB04240158B0000003E0000187A4E .go xyz -1970.9095 -10545.881 176.9451 + +-- Pathing for Entry: 22060 +SET @NPC := 77280; +SET @CPATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2062.9329,`position_y`=-10801.382,`position_z`=69.16798 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@CPATH,0,0,1,0,0, '34189'); +DELETE FROM `waypoint_data` WHERE `id`=@CPATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@CPATH,1,-2062.9329,-10801.382,69.16798,0,0,0,0,100,0), +(@CPATH,2,-2032.4478,-10792.326,79.548546,0,0,0,0,100,0), +(@CPATH,3,-2011.9824,-10776.279,85.89645,0,0,0,0,100,0), +(@CPATH,4,-1988.4141,-10782.808,89.01292,0,0,0,0,100,0), +(@CPATH,5,-1956.8325,-10795.888,88.076256,0,0,0,0,100,0), +(@CPATH,6,-1941.5137,-10813.049,83.2548,0,0,0,0,100,0), +(@CPATH,7,-1942.2377,-10845.413,71.92745,0,0,0,0,100,0), +(@CPATH,8,-1928.1111,-10873.158,65.57274,0,0,0,0,100,0), +(@CPATH,9,-1907.5723,-10881.021,64.005844,0,0,0,0,100,0), +(@CPATH,10,-1882.5653,-10890.086,67.090805,0,0,0,0,100,0), +(@CPATH,11,-1869.1376,-10890.733,66.91844,0,0,0,0,100,0), +(@CPATH,12,-1863.5938,-10877.981,66.82205,0,0,0,0,100,0), +(@CPATH,13,-1857.8864,-10870.527,66.82205,0,0,0,0,100,0), +(@CPATH,14,-1864.6426,-10848.86,66.77268,0,1200,0,0,100,0), +(@CPATH,15,-1857.8864,-10870.527,66.82205,0,0,0,0,100,0), +(@CPATH,16,-1863.5938,-10877.981,66.82205,0,0,0,0,100,0), +(@CPATH,17,-1869.1376,-10890.733,66.91844,0,0,0,0,100,0), +(@CPATH,18,-1882.5653,-10890.086,67.090805,0,0,0,0,100,0), +(@CPATH,19,-1907.4796,-10881.057,64.12523,0,0,0,0,100,0), +(@CPATH,20,-1928.1111,-10873.158,65.57274,0,0,0,0,100,0), +(@CPATH,21,-1941.4618,-10813.143,83.373695,0,0,0,0,100,0), +(@CPATH,22,-1956.7793,-10795.982,88.01302,0,0,0,0,100,0), +(@CPATH,23,-1988.4141,-10782.808,89.01292,0,0,0,0,100,0), +(@CPATH,24,-2011.9735,-10776.271,85.738,0,0,0,0,100,0), +(@CPATH,25,-2032.4478,-10792.326,79.548546,0,0,0,0,100,0), +(@CPATH,26,-2062.9329,-10801.382,69.16798,0,0,0,0,100,0), +(@CPATH,27,-2090.1667,-10768.454,68.06485,0,1200,0,0,100,0); +-- 0x204CB04240158B0000003E00001879BC .go xyz -2062.9329 -10801.382 69.16798 + +-- Pathing for Entry: 22060 Cryo Core +SET @NPC := 77281; +SET @CPATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2070.419,`position_y`=-11257.795,`position_z`=68.73054 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@CPATH,0,0,1,0,0, '34189'); +DELETE FROM `waypoint_data` WHERE `id`=@CPATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@CPATH,1,-2070.419,-11257.795,68.73054,0,0,0,0,100,0), +(@CPATH,2,-2103.6235,-11253.354,67.19258,0,0,0,0,100,0), +(@CPATH,3,-2134.2869,-11264.738,67.698784,0,0,0,0,100,0), +(@CPATH,4,-2140.428,-11280.03,65.155426,0,0,0,0,100,0), +(@CPATH,5,-2138.178,-11312.154,62.253426,0,0,0,0,100,0), +(@CPATH,6,-2136.1165,-11343.568,62.17387,0,0,0,0,100,0), +(@CPATH,7,-2126.4175,-11372.446,64.164536,0,0,0,0,100,0), +(@CPATH,8,-2098.3645,-11381.112,63.737923,0,0,0,0,100,0), +(@CPATH,9,-2076.6472,-11386.729,63.017952,0,0,0,0,100,0), +(@CPATH,10,-2055.42,-11392.572,61.29661,0,0,0,0,100,0), +(@CPATH,11,-2030.3889,-11375.75,63.414944,0,0,0,0,100,0), +(@CPATH,12,-2022.589,-11355.197,64.74541,0,0,0,0,100,0), +(@CPATH,13,-2019.8142,-11323.221,65.71863,0,0,0,0,100,0), +(@CPATH,14,-2031.3025,-11303.861,67.92053,0,0,0,0,100,0), +(@CPATH,15,-2026.8136,-11290.435,69.10076,0,0,0,0,100,0), +(@CPATH,16,-2026.6367,-11276.236,68.70916,0,0,0,0,100,0), +(@CPATH,17,-2042.9447,-11261.928,68.52818,0,0,0,0,100,0); From 9aed091dc0b323f379688a8464571d0fef25aa18 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 18 Feb 2023 17:27:44 +0000 Subject: [PATCH 07/43] chore(DB): import pending files Referenced commit(s): 6f8f33dacf76c7cb1a13bdaab370fc9163b25415 --- .../rev_1676604656261986500.sql => db_world/2023_02_18_01.sql} | 1 + .../rev_1676644474129128500.sql => db_world/2023_02_18_02.sql} | 1 + .../rev_1676669931339119400.sql => db_world/2023_02_18_03.sql} | 1 + 3 files changed, 3 insertions(+) rename data/sql/updates/{pending_db_world/rev_1676604656261986500.sql => db_world/2023_02_18_01.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1676644474129128500.sql => db_world/2023_02_18_02.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1676669931339119400.sql => db_world/2023_02_18_03.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1676604656261986500.sql b/data/sql/updates/db_world/2023_02_18_01.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676604656261986500.sql rename to data/sql/updates/db_world/2023_02_18_01.sql index 8a5f7f775..92fbadca4 100644 --- a/data/sql/updates/pending_db_world/rev_1676604656261986500.sql +++ b/data/sql/updates/db_world/2023_02_18_01.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_00 -> 2023_02_18_01 -- DELETE from `creature` where `guid`=77831 AND `id1`=22060; INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES diff --git a/data/sql/updates/pending_db_world/rev_1676644474129128500.sql b/data/sql/updates/db_world/2023_02_18_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676644474129128500.sql rename to data/sql/updates/db_world/2023_02_18_02.sql index 4f2bdbcc3..9eb1196ae 100644 --- a/data/sql/updates/pending_db_world/rev_1676644474129128500.sql +++ b/data/sql/updates/db_world/2023_02_18_02.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_01 -> 2023_02_18_02 -- Chief Engineer Lorthander DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18697); 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 diff --git a/data/sql/updates/pending_db_world/rev_1676669931339119400.sql b/data/sql/updates/db_world/2023_02_18_03.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676669931339119400.sql rename to data/sql/updates/db_world/2023_02_18_03.sql index 075d2f2a4..c81cf1759 100644 --- a/data/sql/updates/pending_db_world/rev_1676669931339119400.sql +++ b/data/sql/updates/db_world/2023_02_18_03.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_02 -> 2023_02_18_03 -- Okrek DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18685); 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 From fa706a78ff7dd340634de3be8e11dfef483ab436 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sat, 18 Feb 2023 19:44:00 +0200 Subject: [PATCH 08/43] fix(DB/SAI): Wetlands Dragonmaw Bonewarder missing Skeleton Minion (#15082) --- .../pending_db_world/rev_1676624876337239900.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676624876337239900.sql diff --git a/data/sql/updates/pending_db_world/rev_1676624876337239900.sql b/data/sql/updates/pending_db_world/rev_1676624876337239900.sql new file mode 100644 index 000000000..d0e631628 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676624876337239900.sql @@ -0,0 +1,16 @@ +-- Dragonmaw Bonewarder - spawn Skeleton on reset +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 1057; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 1057); +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 +(1057, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 11, 8853, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - On Reset - Cast \'Summon Skeleton\''), +(1057, 0, 1, 0, 4, 0, 100, 1, 0, 0, 0, 0, 0, 11, 13787, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - On Aggro - Cast \'Demon Armor\' (No Repeat)'), +(1057, 0, 2, 0, 0, 0, 100, 0, 3000, 4000, 120000, 120000, 0, 11, 6205, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - In Combat - Cast \'Curse of Weakness\''), +(1057, 0, 3, 0, 0, 0, 100, 0, 5000, 6000, 15000, 15000, 0, 11, 707, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - In Combat - Cast \'Immolate\''); + +-- Skeleton (Dragonmaw Bonewarder's pet) - force despawn on death +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 6412; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 6412); +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 +(6412, 0, 0, 0, 6, 0, 100, 513, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeleton - On Just Died - Despawn In 1000 ms (No Repeat)'); From 0d1160e205f9c3c87f82ab2c58d18f7efd3fbb92 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sat, 18 Feb 2023 19:45:31 +0200 Subject: [PATCH 09/43] fix(DB/Quest): Remove Reply-Code Alpha previous quest requirements (10 & 25) (#15086) --- data/sql/updates/pending_db_world/rev_1676663068384320000.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676663068384320000.sql diff --git a/data/sql/updates/pending_db_world/rev_1676663068384320000.sql b/data/sql/updates/pending_db_world/rev_1676663068384320000.sql new file mode 100644 index 000000000..7e4c830f0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676663068384320000.sql @@ -0,0 +1,3 @@ +-- Reply-Code Alpha - All Is Well That Ends Well 10 & 25 - Remove requirement for sigil quest completion. +UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 13631); -- Normal (10m) +UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 13819); -- Heroic (25m) From 2e9223b99ad0c06f5c6964e5e52b45c3b6d10916 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 18 Feb 2023 18:00:12 +0000 Subject: [PATCH 10/43] chore(DB): import pending files Referenced commit(s): 0d1160e205f9c3c87f82ab2c58d18f7efd3fbb92 --- .../rev_1676624876337239900.sql => db_world/2023_02_18_04.sql} | 1 + .../rev_1676663068384320000.sql => db_world/2023_02_18_05.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1676624876337239900.sql => db_world/2023_02_18_04.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1676663068384320000.sql => db_world/2023_02_18_05.sql} (86%) diff --git a/data/sql/updates/pending_db_world/rev_1676624876337239900.sql b/data/sql/updates/db_world/2023_02_18_04.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1676624876337239900.sql rename to data/sql/updates/db_world/2023_02_18_04.sql index d0e631628..586cc6568 100644 --- a/data/sql/updates/pending_db_world/rev_1676624876337239900.sql +++ b/data/sql/updates/db_world/2023_02_18_04.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_03 -> 2023_02_18_04 -- Dragonmaw Bonewarder - spawn Skeleton on reset UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 1057; diff --git a/data/sql/updates/pending_db_world/rev_1676663068384320000.sql b/data/sql/updates/db_world/2023_02_18_05.sql similarity index 86% rename from data/sql/updates/pending_db_world/rev_1676663068384320000.sql rename to data/sql/updates/db_world/2023_02_18_05.sql index 7e4c830f0..ffaf0d393 100644 --- a/data/sql/updates/pending_db_world/rev_1676663068384320000.sql +++ b/data/sql/updates/db_world/2023_02_18_05.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_04 -> 2023_02_18_05 -- Reply-Code Alpha - All Is Well That Ends Well 10 & 25 - Remove requirement for sigil quest completion. UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 13631); -- Normal (10m) UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 13819); -- Heroic (25m) From b892f60118dd72fb1c43a548e78beb9b709d9042 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 18 Feb 2023 15:46:21 -0300 Subject: [PATCH 11/43] fix(DB/Creature): Port Vorakem Doomspeaker from Mangos (#15071) --- .../rev_1676594413956062400.sql | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676594413956062400.sql diff --git a/data/sql/updates/pending_db_world/rev_1676594413956062400.sql b/data/sql/updates/pending_db_world/rev_1676594413956062400.sql new file mode 100644 index 000000000..60b5ff366 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676594413956062400.sql @@ -0,0 +1,134 @@ +-- +DELETE FROM `creature` WHERE `id1`=18679; +INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES +(24922, 18679, 530, 1, -368.807, 1845.98, 86.4098, 2.91794, 28800, 2), +(24923, 18679, 530, 1, -114.012, 1835.66, 73.8411, 0.612791, 28800, 2), +(24924, 18679, 530, 1, 494.112, 2187.12, 131.719, 1.88514, 28800, 2), +(24925, 18679, 530, 1, 442.586, 3516.65, 60.8444, 1.20665, 28800, 2); + +DELETE FROM `creature_addon` WHERE (`guid` IN (24922, 24923, 24924, 24925, 151930)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(24922, 249220, 0, 0, 1, 0, 0, ''), +(24923, 249230, 0, 0, 1, 0, 0, ''), +(24924, 249240, 0, 0, 1, 0, 0, ''), +(24925, 249250, 0, 0, 1, 0, 0, ''); + +DELETE FROM `waypoint_data` WHERE `id` IN (249220, 249230, 249240, 249250, 1519300); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +(249220, 1, -368.807, 1845.98, 86.4098), +(249220, 2, -394.117, 1765.65, 60.0718), +(249220, 3, -430.21, 1735.79, 50.2494), +(249220, 4, -467.137, 1759.59, 46.767), +(249220, 5, -481.167, 1743.93, 41.2044), +(249220, 6, -491.55, 1741.66, 46.4614), +(249220, 7, -501.393, 1756.58, 49.219), +(249220, 8, -534.742, 1790.65, 56.8644), +(249220, 9, -563.301, 1812.43, 66.1833), +(249220, 10, -582.342, 1829.4, 70.716), +(249220, 11, -541.357, 1879.13, 77.7951), +(249220, 12, -484.344, 1898.96, 87.2478), +(249220, 13, -392.494, 1897.04, 104.712), +(249230, 1, -114.012, 1835.66, 73.8411), +(249230, 2, -91.4783, 1847.82, 69.2832), +(249230, 3, -48.3747, 1834.22, 56.2454), +(249230, 4, -27.769, 1751.28, 45.8751), +(249230, 5, 7.84103, 1727.88, 42.7232), +(249230, 6, 61.2473, 1718.28, 40.0149), +(249230, 7, 83.7766, 1696.73, 39.1369), +(249230, 8, 100.682, 1697.19, 40.2013), +(249230, 9, 173.49, 1699.2, 29.6471), +(249230, 10, 187.283, 1739.6, 31.9241), +(249230, 11, 204.008, 1746.78, 24.8385), +(249230, 12, 211.648, 1786.65, 19.2764), +(249230, 13, 199.708, 1790.54, 22.2977), +(249230, 14, 173.246, 1781.3, 26.3822), +(249230, 15, 155.866, 1781.44, 33.661), +(249230, 16, 134.747, 1779.92, 34.6875), +(249230, 17, 128.552, 1783.87, 37.7445), +(249230, 18, 79.8076, 1800.09, 45.2287), +(249230, 19, 63.0398, 1800.49, 48.2331), +(249230, 20, 32.4485, 1861.2, 49.7156), +(249230, 21, 29.9901, 1871.98, 47.1418), +(249230, 22, 9.29734, 1874.98, 51.9819), +(249230, 23, -22.6535, 1868.99, 57.1755), +(249230, 24, -43.6076, 1863.96, 64.0862), +(249230, 25, -78.5294, 1861.73, 71.2376), +(249240, 1, 494.112, 2187.12, 131.719), +(249240, 2, 490.009, 2150.51, 126.99), +(249240, 3, 476.108, 2147.86, 118.362), +(249240, 4, 447.068, 2146.79, 117.958), +(249240, 5, 391.824, 2120.25, 115.876), +(249240, 6, 364.498, 2141.12, 120.353), +(249240, 7, 366.106, 2174.26, 120.116), +(249240, 8, 369.158, 2196.83, 119.376), +(249240, 9, 343.484, 2215.23, 117.934), +(249240, 10, 340.956, 2232.1, 118.971), +(249240, 11, 391.441, 2247.7, 117.091), +(249240, 12, 432.466, 2259.06, 117.991), +(249240, 13, 437.614, 2269.6, 114.766), +(249240, 14, 438.826, 2278.85, 118.556), +(249240, 15, 438.178, 2332.83, 119.533), +(249240, 16, 430.33, 2389.52, 125.334), +(249240, 17, 424.122, 2410.58, 132.903), +(249240, 18, 409.936, 2426.29, 140.293), +(249240, 19, 391.569, 2441.42, 147.378), +(249240, 20, 372.028, 2450.85, 153.994), +(249240, 21, 351.563, 2501.71, 158.671), +(249240, 22, 358.341, 2519.12, 157.017), +(249240, 23, 362.253, 2540.77, 155.273), +(249240, 24, 393.193, 2549.76, 151.156), +(249240, 25, 422.271, 2538.3, 151.843), +(249240, 26, 443.763, 2554.36, 162.211), +(249240, 27, 446.835, 2632.73, 179.099), +(249240, 28, 487.397, 2745.97, 201.314), +(249240, 29, 524.691, 2778.75, 213.732), +(249240, 30, 529.078, 2770.99, 213.393), +(249240, 31, 516.915, 2750.16, 211.931), +(249240, 32, 474.551, 2663.26, 192.277), +(249240, 33, 463.675, 2628.29, 184.522), +(249240, 34, 463.409, 2570.53, 174.952), +(249240, 35, 459.304, 2541.33, 164.87), +(249240, 36, 465.254, 2485.88, 156.33), +(249240, 37, 428.184, 2445.82, 139.387), +(249240, 38, 428.213, 2414.12, 133.002), +(249240, 39, 447.828, 2392.86, 133.544), +(249240, 40, 454.476, 2300.08, 124.765), +(249240, 41, 478.859, 2261.73, 129.556), +(249240, 42, 490.589, 2224.36, 131.317), +(249250, 1, 442.586, 3516.65, 60.8444), +(249250, 2, 430.167, 3506.58, 62.984), +(249250, 3, 380.869, 3507.06, 62.9783), +(249250, 4, 364.828, 3502.97, 62.3136), +(249250, 5, 359.136, 3482.24, 62.8538), +(249250, 6, 350.932, 3469.66, 61.7651), +(249250, 7, 333.588, 3465.64, 62.0532), +(249250, 8, 332.589, 3436.69, 61.9835), +(249250, 9, 344.644, 3424.99, 63.3763), +(249250, 10, 346.874, 3386.66, 64.2423), +(249250, 11, 341.957, 3361.83, 68.1707), +(249250, 12, 354.937, 3358.04, 62.9527), +(249250, 13, 373.619, 3362.38, 62.5949), +(249250, 14, 395.768, 3352.65, 62.7729), +(249250, 15, 417.721, 3338.98, 61.9029), +(249250, 16, 438.161, 3340.84, 62.9257), +(249250, 17, 463.486, 3377.86, 73.8103), +(249250, 18, 466.918, 3398.15, 69.5736), +(249250, 19, 505.131, 3430.84, 73.9158), +(249250, 20, 508.783, 3437.74, 73.853), +(249250, 21, 516.238, 3459.83, 74.7222), +(249250, 22, 527.515, 3486.28, 77.0556), +(249250, 23, 489.114, 3523.57, 65.8445), +(249250, 24, 468.23, 3526.64, 63.9368); + +DELETE FROM `pool_template` WHERE `entry`=1085 AND `description` LIKE '%Vorakem%'; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES (1085, 1, 'Vorakem Doomspeaker (18679)'); + +DELETE FROM `pool_creature` WHERE `pool_entry`=1085 AND `description` LIKE '%Vorakem%'; +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(24922, 1085, 0, 'Vorakem Doomspeaker (18679)'), +(24923, 1085, 0, 'Vorakem Doomspeaker (18679)'), +(24924, 1085, 0, 'Vorakem Doomspeaker (18679)'), +(24925, 1085, 0, 'Vorakem Doomspeaker (18679)'); + +-- It's another rare with DISABLE_MOVE added to it +UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~4 WHERE (`entry` = 18679); From c238cefc267b34917e908a1939105ac222d63d9a Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 18 Feb 2023 18:53:13 +0000 Subject: [PATCH 12/43] chore(DB): import pending files Referenced commit(s): b892f60118dd72fb1c43a548e78beb9b709d9042 --- .../rev_1676594413956062400.sql => db_world/2023_02_18_06.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676594413956062400.sql => db_world/2023_02_18_06.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1676594413956062400.sql b/data/sql/updates/db_world/2023_02_18_06.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676594413956062400.sql rename to data/sql/updates/db_world/2023_02_18_06.sql index 60b5ff366..f92dcb232 100644 --- a/data/sql/updates/pending_db_world/rev_1676594413956062400.sql +++ b/data/sql/updates/db_world/2023_02_18_06.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_05 -> 2023_02_18_06 -- DELETE FROM `creature` WHERE `id1`=18679; INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES From 098a21f98759964c260c4e889a21ef1481cd153c Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 18 Feb 2023 15:54:48 -0300 Subject: [PATCH 13/43] fix(DB/Creature): Stonegazer spawn and waypoints (#15030) --- .../rev_1676319745646135600.sql | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676319745646135600.sql diff --git a/data/sql/updates/pending_db_world/rev_1676319745646135600.sql b/data/sql/updates/pending_db_world/rev_1676319745646135600.sql new file mode 100644 index 000000000..2be59bbe9 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676319745646135600.sql @@ -0,0 +1,139 @@ +-- +DELETE FROM `creature` WHERE `id1`=18648 AND `guid`=86357; +INSERT INTO `creature`(`guid`, `id1`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES +(86357, 18648, 530, 1, -1996.77, 3691.44, -55.336, 4.15348, 300, 2); + +DELETE FROM `creature_addon` WHERE (`guid` = 86357); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(86357, 863570, 0, 0, 0, 0, 0, ''); + +DELETE FROM `waypoint_data` WHERE `id`=863570; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +(863570, 1, -1996.77, 3691.44, -55.336), +(863570, 2, -2003.93, 3680, -62.9563), +(863570, 3, -2012.14, 3673.5, -70.4843), +(863570, 4, -2017.82, 3668.26, -70.9137), +(863570, 5, -2025.06, 3661.79, -69.4269), +(863570, 6, -2038.99, 3660.38, -66.7324), +(863570, 7, -2053.45, 3649.44, -65.0682), +(863570, 8, -2060.97, 3637.63, -65.2084), +(863570, 9, -2065.82, 3627.13, -66.8755), +(863570, 10, -2069.63, 3618.56, -63.7202), +(863570, 11, -2075.9, 3605.38, -62.2908), +(863570, 12, -2080.72, 3593.47, -63.6726), +(863570, 13, -2086.85, 3577.68, -63.0435), +(863570, 14, -2091.53, 3561.27, -63.9136), +(863570, 15, -2091.9, 3558.99, -64.593), +(863570, 16, -2093.33, 3551.36, -71.5948), +(863570, 17, -2093.09, 3545.55, -60.957), +(863570, 18, -2095.03, 3534.02, -57.587), +(863570, 19, -2096.72, 3521.29, -56.1821), +(863570, 20, -2097.01, 3513.11, -57.028), +(863570, 21, -2099.07, 3493.34, -64.6929), +(863570, 22, -2103.58, 3483.31, -63.2184), +(863570, 23, -2105.74, 3475.41, -65.6768), +(863570, 24, -2106.44, 3467.97, -64.468), +(863570, 25, -2107.1, 3461.39, -65.8403), +(863570, 26, -2108.14, 3449.75, -63.965), +(863570, 27, -2108.91, 3436.89, -59.7906), +(863570, 28, -2109.66, 3423.51, -52.8207), +(863570, 29, -2112.76, 3413.32, -48.142), +(863570, 30, -2121.64, 3404.88, -46.3506), +(863570, 31, -2131.1, 3396.23, -44.9126), +(863570, 32, -2134.37, 3389.37, -46.1489), +(863570, 33, -2131.79, 3383.86, -49.3395), +(863570, 34, -2128.36, 3376.67, -55.9128), +(863570, 35, -2126.56, 3368.71, -56.1998), +(863570, 36, -2127.56, 3362.95, -53.5525), +(863570, 37, -2131.19, 3357.47, -46.1145), +(863570, 38, -2125.85, 3347.14, -45.6573), +(863570, 39, -2119.3, 3334.73, -47.1481), +(863570, 40, -2110.68, 3321.54, -47.8091), +(863570, 41, -2100.88, 3310.8, -48.6787), +(863570, 42, -2090.47, 3299.05, -50.4756), +(863570, 43, -2083.33, 3293.68, -55.9256), +(863570, 44, -2078.28, 3287.97, -51.4244), +(863570, 45, -2073.34, 3281.43, -52.9969), +(863570, 46, -2063.93, 3268.75, -56.6561), +(863570, 47, -2055.24, 3257.03, -59.2205), +(863570, 48, -2053.2, 3252.83, -62.8816), +(863570, 49, -2047.24, 3246.85, -73.0043), +(863570, 50, -2043.23, 3243.11, -72.4173), +(863570, 51, -2037.29, 3237.16, -69.086), +(863570, 52, -2031.93, 3231.8, -70.0572), +(863570, 53, -2037.81, 3237.48, -69.2409), +(863570, 54, -2043.55, 3243.31, -72.4278), +(863570, 55, -2047.31, 3246.89, -72.9844), +(863570, 56, -2053.51, 3253.16, -62.3759), +(863570, 57, -2055.88, 3257.93, -58.9112), +(863570, 58, -2063.94, 3268.6, -56.6398), +(863570, 59, -2073.83, 3281.86, -52.7742), +(863570, 60, -2078.86, 3288.44, -51.4462), +(863570, 61, -2083.72, 3293.82, -55.8937), +(863570, 62, -2090.97, 3299.89, -50.4188), +(863570, 63, -2101.03, 3310.92, -48.6276), +(863570, 64, -2110.38, 3321.34, -47.8336), +(863570, 65, -2118.06, 3332.77, -47.2585), +(863570, 66, -2125.31, 3345.69, -45.7645), +(863570, 67, -2131.76, 3358.36, -46.2777), +(863570, 68, -2127.94, 3363.14, -53.5166), +(863570, 69, -2126.84, 3369.1, -56.2019), +(863570, 70, -2128.84, 3377.25, -55.5198), +(863570, 71, -2132.2, 3383.99, -49.3382), +(863570, 72, -2134.55, 3389.79, -45.954), +(863570, 73, -2131.32, 3396.31, -44.8486), +(863570, 74, -2121.76, 3405.02, -46.3264), +(863570, 75, -2113.32, 3413.32, -47.9902), +(863570, 76, -2110.22, 3423.3, -52.2944), +(863570, 77, -2109.28, 3437.47, -60.2717), +(863570, 78, -2108.45, 3449.68, -63.8449), +(863570, 79, -2107.3, 3461.64, -65.6918), +(863570, 80, -2106.68, 3468.04, -64.4831), +(863570, 81, -2105.94, 3475.72, -65.4231), +(863570, 82, -2103.89, 3483.71, -63.0018), +(863570, 83, -2099.3, 3493.67, -64.4541), +(863570, 84, -2097.45, 3513.67, -56.8631), +(863570, 85, -2097.2, 3521.95, -56.0993), +(863570, 86, -2095.39, 3534.9, -57.5393), +(863570, 87, -2093.37, 3546, -61.2589), +(863570, 88, -2093.66, 3551.82, -71.882), +(863570, 89, -2092.36, 3558.82, -64.4532), +(863570, 90, -2091.93, 3561.65, -63.5573), +(863570, 91, -2086.94, 3578.34, -63.0179), +(863570, 92, -2081, 3593.7, -63.4996), +(863570, 93, -2076.34, 3605.29, -62.0478), +(863570, 94, -2070.21, 3619.16, -63.7059), +(863570, 95, -2066.15, 3627.76, -66.6732), +(863570, 96, -2061.21, 3637.91, -65.0062), +(863570, 97, -2053.49, 3650.07, -64.9078), +(863570, 98, -2039.41, 3660.59, -66.5091), +(863570, 99, -2025.45, 3662.06, -69.2666), +(863570, 100, -2018.42, 3668.33, -70.7122), +(863570, 101, -2012.08, 3674.36, -69.8961), +(863570, 102, -2003.99, 3680.59, -62.4553), +(863570, 103, -1996.95, 3691.94, -54.9681), +(863570, 104, -1987.92, 3710.84, -41.6305), +(863570, 105, -1980.74, 3729.54, -30.1387), +(863570, 106, -1970.21, 3735.92, -23.6044), +(863570, 107, -1956.11, 3741.73, -15.3974), +(863570, 108, -1944.91, 3748.26, -11.1596), +(863570, 109, -1935.12, 3754.11, -9.51987), +(863570, 110, -1918.06, 3762.94, -6.23739), +(863570, 111, -1907.43, 3768.79, -2.98779), +(863570, 112, -1894.27, 3775.38, 5.33932), +(863570, 113, -1885.92, 3779.56, 7.72026), +(863570, 114, -1865.18, 3795.66, 7.24442), +(863570, 115, -1848.48, 3803.51, 12.059), +(863570, 116, -1830.9, 3805.41, 17.8008), +(863570, 117, -1849.35, 3803.04, 11.8302), +(863570, 118, -1866.25, 3795.23, 7.0094), +(863570, 119, -1885.98, 3779.49, 7.72068), +(863570, 120, -1892.23, 3776.35, 6.22982), +(863570, 121, -1904.74, 3769.73, -1.31481), +(863570, 122, -1917.84, 3762.46, -6.18441), +(863570, 123, -1935.54, 3754.11, -9.53416), +(863570, 124, -1944.97, 3748.29, -11.1474), +(863570, 125, -1956.71, 3741.05, -16.0124), +(863570, 126, -1970.67, 3735.79, -23.8129), +(863570, 127, -1981.2, 3729.16, -30.45), +(863570, 128, -1988.06, 3710.37, -41.9423); From e759ac3c7153e895d7e93c4f4036638d32545859 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 18 Feb 2023 18:57:12 +0000 Subject: [PATCH 14/43] chore(DB): import pending files Referenced commit(s): 098a21f98759964c260c4e889a21ef1481cd153c --- .../rev_1676319745646135600.sql => db_world/2023_02_18_07.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676319745646135600.sql => db_world/2023_02_18_07.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1676319745646135600.sql b/data/sql/updates/db_world/2023_02_18_07.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676319745646135600.sql rename to data/sql/updates/db_world/2023_02_18_07.sql index 2be59bbe9..18bd5d2f9 100644 --- a/data/sql/updates/pending_db_world/rev_1676319745646135600.sql +++ b/data/sql/updates/db_world/2023_02_18_07.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_06 -> 2023_02_18_07 -- DELETE FROM `creature` WHERE `id1`=18648 AND `guid`=86357; INSERT INTO `creature`(`guid`, `id1`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES From c2208318ea8315d9a403ce946f541c97eec7bff2 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 18 Feb 2023 17:26:52 -0300 Subject: [PATCH 15/43] fix(Scripts/SethekkHalls): Update Talon King Ikiss script (#15098) --- .../rev_1676739457090257600.sql | 4 + src/server/game/AI/CoreAI/UnitAI.cpp | 21 + src/server/game/AI/CoreAI/UnitAI.h | 3 + .../SethekkHalls/boss_talon_king_ikiss.cpp | 462 ++++++++---------- .../SethekkHalls/instance_sethekk_halls.cpp | 94 +--- .../Auchindoun/SethekkHalls/sethekk_halls.h | 18 + 6 files changed, 279 insertions(+), 323 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1676739457090257600.sql diff --git a/data/sql/updates/pending_db_world/rev_1676739457090257600.sql b/data/sql/updates/pending_db_world/rev_1676739457090257600.sql new file mode 100644 index 000000000..4cf66fe89 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676739457090257600.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` = 38194; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(38194, 'spell_talon_king_ikiss_blink'); diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index 86a331eed..24ba8e825 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -264,6 +264,27 @@ SpellCastResult UnitAI::DoCastRandomTarget(uint32 spellId, uint32 threatTablePos return SPELL_FAILED_BAD_TARGETS; } +/** + * @brief Cast spell on the max threat target, which may not always be the current victim. + * + * @param uint32 spellId Spell ID to cast. + * @param uint32 Threat table position. + * @param float dist Distance from caster to target. + * @param bool playerOnly Select players only, excludes pets and other npcs. + * @param bool triggered Triggered cast (full triggered mask). + * + * @return SpellCastResult + */ +SpellCastResult UnitAI::DoCastMaxThreat(uint32 spellId, uint32 threatTablePosition, float dist, bool playerOnly, bool triggered) +{ + if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, threatTablePosition, dist, playerOnly)) + { + return DoCast(target, spellId, triggered); + } + + return SPELL_FAILED_BAD_TARGETS; +} + #define UPDATE_TARGET(a) {if (AIInfo->targettarget=a;} void UnitAI::FillAISpellInfo() diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index ce7e8a177..e69c9811d 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -372,6 +372,9 @@ public: SpellCastResult DoCastAOE(uint32 spellId, bool triggered = false); SpellCastResult DoCastRandomTarget(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false); + // Cast spell on the top threat target, which may not be the current victim. + SpellCastResult DoCastMaxThreat(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false); + float DoGetSpellMaxRange(uint32 spellId, bool positive = false); void DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp index c8e350ae9..fc0a37e42 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "sethekk_halls.h" enum TailonkingIkiss @@ -26,143 +27,146 @@ enum TailonkingIkiss SAY_SLAY = 2, SAY_DEATH = 3, EMOTE_ARCANE_EXP = 4, +}; +enum Spells +{ SPELL_BLINK = 38194, SPELL_BLINK_TELEPORT = 38203, SPELL_MANA_SHIELD = 38151, SPELL_ARCANE_BUBBLE = 9438, SPELL_SLOW = 35032, - SPELL_POLYMORPH_N = 38245, // Difficulty data - SPELL_POLYMORPH_H = 43309, - SPELL_ARCANE_VOLLEY_N = 35059, // Difficulty data - SPELL_ARCANE_VOLLEY_H = 40424, - SPELL_ARCANE_EXPLOSION_N = 38197, // Difficulty data - SPELL_ARCANE_EXPLOSION_H = 40425, - - EVENT_SPELL_BLINK = 1, - EVENT_SPELL_POLYMORPH = 2, - EVENT_SPELL_SLOW = 3, - EVENT_SPELL_ARCANE_VOLLEY = 4, - EVENT_SPELL_ARCANE_EXPLO = 5, - EVENT_HEALTH_CHECK = 6, - EVENT_SPELL_BLINK_2 = 7 + SPELL_POLYMORPH = 38245, + SPELL_ARCANE_VOLLEY = 35059, + SPELL_ARCANE_EXPLOSION = 38197, }; -class boss_talon_king_ikiss : public CreatureScript +struct boss_talon_king_ikiss : public BossAI { -public: - boss_talon_king_ikiss() : CreatureScript("boss_talon_king_ikiss") { } - - CreatureAI* GetAI(Creature* creature) const override + boss_talon_king_ikiss(Creature* creature) : BossAI(creature, DATA_IKISS), _spoken(false), _manaShield(false) { - return GetSethekkHallsAI(creature); + scheduler.SetValidator([this] + { + return !me->HasUnitState(UNIT_STATE_CASTING); + }); } - struct boss_talon_king_ikissAI : public ScriptedAI + void Reset() override { - boss_talon_king_ikissAI(Creature* creature) : ScriptedAI(creature) + _Reset(); + _spoken = false; + _manaShield = false; + } + + void MoveInLineOfSight(Unit* who) override + { + if (!_spoken && who->IsPlayer()) { + Talk(SAY_INTRO); + _spoken = true; } - EventMap events; + ScriptedAI::MoveInLineOfSight(who); + } + + void JustEngagedWith(Unit* /*who*/) override + { + _JustEngagedWith(); + Talk(SAY_AGGRO); + + scheduler.Schedule(35s, [this](TaskContext context) + { + me->InterruptNonMeleeSpells(false); + DoCastAOE(SPELL_BLINK); + Talk(EMOTE_ARCANE_EXP); + context.Repeat(35s, 40s); + + scheduler.Schedule(1s, [this](TaskContext) + { + DoCastAOE(SPELL_ARCANE_EXPLOSION); + DoCastSelf(SPELL_ARCANE_BUBBLE, true); + }); + }).Schedule(5s, [this](TaskContext context) + { + DoCastAOE(SPELL_ARCANE_VOLLEY); + context.Repeat(7s, 12s); + }).Schedule(8s, [this](TaskContext context) + { + IsHeroic() ? DoCastRandomTarget(SPELL_POLYMORPH) : DoCastMaxThreat(SPELL_POLYMORPH); + context.Repeat(15s, 17500ms); + }); + + if (IsHeroic()) + { + scheduler.Schedule(15s, 25s, [this](TaskContext context) + { + DoCastAOE(SPELL_SLOW); + context.Repeat(15s, 30s); + }); + } + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(SAY_DEATH); + + if (GameObject* coffer = instance->GetGameObject(DATA_GO_TALON_KING_COFFER)) + { + coffer->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND); + } + } + + void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) override + { + if (!_manaShield && me->HealthBelowPctDamaged(20, damage)) + { + DoCast(me, SPELL_MANA_SHIELD); + _manaShield = true; + } + } + + void KilledUnit(Unit* /*victim*/) override + { + if (urand(0, 1)) + Talk(SAY_SLAY); + } + + private: bool _spoken; + bool _manaShield; +}; - void Reset() override +// 38194 - Blink +class spell_talon_king_ikiss_blink : public SpellScript +{ + PrepareSpellScript(spell_talon_king_ikiss_blink); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return sSpellMgr->GetSpellInfo(SPELL_BLINK); + } + + void FilterTargets(std::list& targets) + { + uint8 maxSize = 1; + if (targets.size() > maxSize) { - _spoken = false; + Acore::Containers::RandomResize(targets, maxSize); } + } - void MoveInLineOfSight(Unit* who) override - { - if (!_spoken && who->GetTypeId() == TYPEID_PLAYER) - { - Talk(SAY_INTRO); - _spoken = true; - } + void HandleDummyHitTarget(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + GetHitUnit()->CastSpell(GetCaster(), SPELL_BLINK_TELEPORT, true); + } - ScriptedAI::MoveInLineOfSight(who); - } - - void JustEngagedWith(Unit* /*who*/) override - { - Talk(SAY_AGGRO); - - events.ScheduleEvent(EVENT_SPELL_BLINK, 35000); - events.ScheduleEvent(EVENT_SPELL_ARCANE_VOLLEY, 5000); - events.ScheduleEvent(EVENT_SPELL_POLYMORPH, 8000); - events.ScheduleEvent(EVENT_HEALTH_CHECK, 2000); - if (IsHeroic()) - events.ScheduleEvent(EVENT_SPELL_SLOW, urand(15000, 25000)); - } - - void JustDied(Unit* /*killer*/) override - { - Talk(SAY_DEATH); - - if (InstanceScript* instance = me->GetInstanceScript()) - instance->SetData(DATA_IKISSDOOREVENT, DONE); - } - - void KilledUnit(Unit* /*victim*/) override - { - if (urand(0, 1)) - Talk(SAY_SLAY); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case EVENT_SPELL_ARCANE_VOLLEY: - me->CastSpell(me, SPELL_ARCANE_VOLLEY_N, false); - events.RepeatEvent(urand(7000, 12000)); - break; - case EVENT_SPELL_POLYMORPH: - if (Unit* target = (IsHeroic() ? SelectTarget(SelectTargetMethod::Random, 0) : SelectTarget(SelectTargetMethod::MaxThreat, 1))) - me->CastSpell(target, SPELL_POLYMORPH_N, false); - events.RepeatEvent(urand(15000, 17500)); - break; - case EVENT_SPELL_SLOW: - me->CastSpell(me, SPELL_SLOW, false); - events.RepeatEvent(urand(15000, 30000)); - break; - case EVENT_HEALTH_CHECK: - if (me->HealthBelowPct(20)) - { - me->CastSpell(me, SPELL_MANA_SHIELD, false); - return; - } - events.RepeatEvent(1000); - break; - case EVENT_SPELL_BLINK: - Talk(EMOTE_ARCANE_EXP); - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - { - me->CastSpell(target, SPELL_BLINK, false); - me->NearTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation()); - - DoCast(target, SPELL_BLINK_TELEPORT); - } - events.RepeatEvent(urand(35000, 40000)); - events.DelayEvents(500); - events.ScheduleEvent(EVENT_SPELL_BLINK_2, 0); - return; - case EVENT_SPELL_BLINK_2: - me->CastSpell(me, SPELL_ARCANE_EXPLOSION_N, false); - me->CastSpell(me, SPELL_ARCANE_BUBBLE, true); - break; - } - - DoMeleeAttackIfReady(); - } - }; + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_talon_king_ikiss_blink::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_talon_king_ikiss_blink::HandleDummyHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; enum Anzu @@ -184,150 +188,116 @@ enum Anzu EVENT_ANZU_HEALTH2 = 5 }; -class boss_anzu : public CreatureScript +struct boss_anzu : public BossAI { -public: - boss_anzu() : CreatureScript("boss_anzu") { } - - CreatureAI* GetAI(Creature* creature) const override + boss_anzu(Creature* creature) : BossAI(creature, DATA_ANZU) { - return GetSethekkHallsAI(creature); + talkTimer = 1; + me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE); + me->AddAura(SPELL_SHADOWFORM, me); } - struct boss_anzuAI : public ScriptedAI + uint32 talkTimer; + + void SummonedCreatureDies(Creature* summon, Unit*) override { - boss_anzuAI(Creature* creature) : ScriptedAI(creature), summons(me) + summons.Despawn(summon); + summons.RemoveNotExisting(); + if (summons.empty()) + me->RemoveAurasDueToSpell(SPELL_BANISH_SELF); + } + + void JustEngagedWith(Unit* /*who*/) override + { + _JustEngagedWith(); + events.Reset(); + events.ScheduleEvent(EVENT_SPELL_SCREECH, 14000); + events.ScheduleEvent(EVENT_SPELL_BOMB, 5000); + events.ScheduleEvent(EVENT_SPELL_CYCLONE, 8000); + events.ScheduleEvent(EVENT_ANZU_HEALTH1, 2000); + events.ScheduleEvent(EVENT_ANZU_HEALTH2, 2001); + } + + void SummonBroods() + { + Talk(SAY_SUMMON); + me->CastSpell(me, SPELL_BANISH_SELF, true); + for (uint8 i = 0; i < 5; ++i) + me->SummonCreature(23132 /*NPC_BROOD_OF_ANZU*/, me->GetPositionX() + 20 * cos((float)i), me->GetPositionY() + 20 * std::sin((float)i), me->GetPositionZ() + 25.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); + } + + void UpdateAI(uint32 diff) override + { + if (talkTimer) { - talkTimer = 1; - me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE); - me->AddAura(SPELL_SHADOWFORM, me); - } - - EventMap events; - SummonList summons; - uint32 talkTimer; - - void Reset() override - { - summons.DespawnAll(); - if (InstanceScript* instance = me->GetInstanceScript()) - if (instance->GetData(TYPE_ANZU_ENCOUNTER) != DONE) - instance->SetData(TYPE_ANZU_ENCOUNTER, NOT_STARTED); - } - - void JustSummoned(Creature* summon) override - { - summons.Summon(summon); - summon->AI()->AttackStart(me->GetVictim()); - } - - void SummonedCreatureDies(Creature* summon, Unit*) override - { - summons.Despawn(summon); - summons.RemoveNotExisting(); - if (summons.empty()) - me->RemoveAurasDueToSpell(SPELL_BANISH_SELF); - } - - void JustEngagedWith(Unit* /*who*/) override - { - events.Reset(); - events.ScheduleEvent(EVENT_SPELL_SCREECH, 14000); - events.ScheduleEvent(EVENT_SPELL_BOMB, 5000); - events.ScheduleEvent(EVENT_SPELL_CYCLONE, 8000); - events.ScheduleEvent(EVENT_ANZU_HEALTH1, 2000); - events.ScheduleEvent(EVENT_ANZU_HEALTH2, 2001); - - if (InstanceScript* instance = me->GetInstanceScript()) - instance->SetData(TYPE_ANZU_ENCOUNTER, IN_PROGRESS); - } - - void JustDied(Unit* /*killer*/) override - { - if (InstanceScript* instance = me->GetInstanceScript()) - instance->SetData(TYPE_ANZU_ENCOUNTER, DONE); - } - - void SummonBroods() - { - Talk(SAY_SUMMON); - me->CastSpell(me, SPELL_BANISH_SELF, true); - for (uint8 i = 0; i < 5; ++i) - me->SummonCreature(23132 /*NPC_BROOD_OF_ANZU*/, me->GetPositionX() + 20 * cos((float)i), me->GetPositionY() + 20 * std::sin((float)i), me->GetPositionZ() + 25.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); - } - - void UpdateAI(uint32 diff) override - { - if (talkTimer) + talkTimer += diff; + if (talkTimer >= 1000 && talkTimer < 10000) { - talkTimer += diff; - if (talkTimer >= 1000 && talkTimer < 10000) - { - Talk(SAY_ANZU_INTRO1); - talkTimer = 10000; - } - else if (talkTimer >= 16000) - { - me->ReplaceAllUnitFlags(UNIT_FLAG_NONE); - me->RemoveAurasDueToSpell(SPELL_SHADOWFORM); - Talk(SAY_ANZU_INTRO2); - talkTimer = 0; - } + Talk(SAY_ANZU_INTRO1); + talkTimer = 10000; } - - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED)) - return; - - switch (events.ExecuteEvent()) + else if (talkTimer >= 16000) { - case EVENT_SPELL_SCREECH: - me->CastSpell(me, SPELL_PARALYZING_SCREECH, false); - events.RepeatEvent(23000); - events.DelayEvents(3000); - break; - case EVENT_SPELL_BOMB: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) - me->CastSpell(target, SPELL_SPELL_BOMB, false); - events.RepeatEvent(urand(16000, 24500)); - events.DelayEvents(3000); - break; - case EVENT_SPELL_CYCLONE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true)) - me->CastSpell(target, SPELL_CYCLONE, false); - events.RepeatEvent(urand(22000, 27000)); - events.DelayEvents(3000); - break; - case EVENT_ANZU_HEALTH1: - if (me->HealthBelowPct(66)) - { - SummonBroods(); - events.DelayEvents(10000); - return; - } - events.RepeatEvent(1000); - break; - case EVENT_ANZU_HEALTH2: - if (me->HealthBelowPct(33)) - { - SummonBroods(); - events.DelayEvents(10000); - return; - } - events.RepeatEvent(1000); - break; + me->ReplaceAllUnitFlags(UNIT_FLAG_NONE); + me->RemoveAurasDueToSpell(SPELL_SHADOWFORM); + Talk(SAY_ANZU_INTRO2); + talkTimer = 0; } - - DoMeleeAttackIfReady(); } - }; + + if (!UpdateVictim()) + return; + + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED)) + return; + + switch (events.ExecuteEvent()) + { + case EVENT_SPELL_SCREECH: + me->CastSpell(me, SPELL_PARALYZING_SCREECH, false); + events.RepeatEvent(23000); + events.DelayEvents(3000); + break; + case EVENT_SPELL_BOMB: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) + me->CastSpell(target, SPELL_SPELL_BOMB, false); + events.RepeatEvent(urand(16000, 24500)); + events.DelayEvents(3000); + break; + case EVENT_SPELL_CYCLONE: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true)) + me->CastSpell(target, SPELL_CYCLONE, false); + events.RepeatEvent(urand(22000, 27000)); + events.DelayEvents(3000); + break; + case EVENT_ANZU_HEALTH1: + if (me->HealthBelowPct(66)) + { + SummonBroods(); + events.DelayEvents(10000); + return; + } + events.RepeatEvent(1000); + break; + case EVENT_ANZU_HEALTH2: + if (me->HealthBelowPct(33)) + { + SummonBroods(); + events.DelayEvents(10000); + return; + } + events.RepeatEvent(1000); + break; + } + + DoMeleeAttackIfReady(); + } }; void AddSC_boss_talon_king_ikiss() { - new boss_talon_king_ikiss(); - new boss_anzu(); + RegisterSethekkHallsCreatureAI(boss_talon_king_ikiss); + RegisterSpellScript(spell_talon_king_ikiss_blink); + RegisterSethekkHallsCreatureAI(boss_anzu); } diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp index 0faee5fd1..d122ab260 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp @@ -19,6 +19,17 @@ #include "ScriptMgr.h" #include "sethekk_halls.h" +DoorData const doorData[] = +{ + { GO_IKISS_DOOR, DATA_IKISS, DOOR_TYPE_PASSAGE }, + { 0, 0, DOOR_TYPE_ROOM } // END +}; + +ObjectData const gameObjectData[] = +{ + { GO_THE_TALON_KINGS_COFFER, DATA_GO_TALON_KING_COFFER } +}; + class instance_sethekk_halls : public InstanceMapScript { public: @@ -31,91 +42,20 @@ public: struct instance_sethekk_halls_InstanceMapScript : public InstanceScript { - instance_sethekk_halls_InstanceMapScript(Map* map) : InstanceScript(map) {} - - uint32 AnzuEncounter; - ObjectGuid m_uiIkissDoorGUID; - ObjectGuid _talonKingsCofferGUID; - - void Initialize() override + instance_sethekk_halls_InstanceMapScript(Map* map) : InstanceScript(map) { - AnzuEncounter = NOT_STARTED; + SetHeaders(DataHeaders); + SetBossNumber(EncounterCount); + LoadDoorData(doorData); + LoadObjectData(nullptr, gameObjectData); } void OnCreatureCreate(Creature* creature) override { if (creature->GetEntry() == NPC_ANZU || creature->GetEntry() == NPC_VOICE_OF_THE_RAVEN_GOD) - if (AnzuEncounter >= IN_PROGRESS) + if (GetBossState(DATA_ANZU) == DONE) creature->DespawnOrUnsummon(1); } - - void OnGameObjectCreate(GameObject* go) override - { - switch (go->GetEntry()) - { - case GO_IKISS_DOOR: - m_uiIkissDoorGUID = go->GetGUID(); - break; - case GO_THE_TALON_KINGS_COFFER: - _talonKingsCofferGUID = go->GetGUID(); - break; - } - } - - void SetData(uint32 type, uint32 data) override - { - switch (type) - { - case DATA_IKISSDOOREVENT: - if (data == DONE) - { - DoUseDoorOrButton(m_uiIkissDoorGUID, DAY * IN_MILLISECONDS); - if (GameObject* coffer = instance->GetGameObject(_talonKingsCofferGUID)) - coffer->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND); - } - break; - case TYPE_ANZU_ENCOUNTER: - AnzuEncounter = data; - SaveToDB(); - break; - } - } - - std::string GetSaveData() override - { - OUT_SAVE_INST_DATA; - - std::ostringstream saveStream; - saveStream << "S H " << AnzuEncounter; - - OUT_SAVE_INST_DATA_COMPLETE; - return saveStream.str(); - } - - void Load(const char* strIn) override - { - if (!strIn) - { - OUT_LOAD_INST_DATA_FAIL; - return; - } - - OUT_LOAD_INST_DATA(strIn); - - char dataHead1, dataHead2; - - std::istringstream loadStream(strIn); - loadStream >> dataHead1 >> dataHead2; - - if (dataHead1 == 'S' && dataHead2 == 'H') - { - loadStream >> AnzuEncounter; - if (AnzuEncounter == IN_PROGRESS) - AnzuEncounter = NOT_STARTED; - } - - OUT_LOAD_INST_DATA_COMPLETE; - } }; }; diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h b/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h index 6f47cce0a..69bf90cb8 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h @@ -20,14 +20,30 @@ #include "CreatureAIImpl.h" +#define DataHeaders "SH" + +uint32 constexpr EncounterCount = 3; + #define SethekkHallsScriptName "instance_sethekk_halls" +enum Encounters +{ + DATA_DARKWEAVER_SYTH, + DATA_ANZU, + DATA_IKISS, +}; + enum eTypes { DATA_IKISSDOOREVENT = 1, TYPE_ANZU_ENCOUNTER = 2, }; +enum InstanceData +{ + DATA_GO_TALON_KING_COFFER +}; + enum eIds { NPC_VOICE_OF_THE_RAVEN_GOD = 21851, @@ -43,4 +59,6 @@ inline AI* GetSethekkHallsAI(T* obj) return GetInstanceAI(obj, SethekkHallsScriptName); } +#define RegisterSethekkHallsCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetSethekkHallsAI) + #endif From e6abccfdb3b0b23c2ca41bae1a5fe71d95d4131a Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 18 Feb 2023 20:30:27 +0000 Subject: [PATCH 16/43] chore(DB): import pending files Referenced commit(s): c2208318ea8315d9a403ce946f541c97eec7bff2 --- .../rev_1676739457090257600.sql => db_world/2023_02_18_08.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676739457090257600.sql => db_world/2023_02_18_08.sql} (79%) diff --git a/data/sql/updates/pending_db_world/rev_1676739457090257600.sql b/data/sql/updates/db_world/2023_02_18_08.sql similarity index 79% rename from data/sql/updates/pending_db_world/rev_1676739457090257600.sql rename to data/sql/updates/db_world/2023_02_18_08.sql index 4cf66fe89..962161611 100644 --- a/data/sql/updates/pending_db_world/rev_1676739457090257600.sql +++ b/data/sql/updates/db_world/2023_02_18_08.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_18_07 -> 2023_02_18_08 -- DELETE FROM `spell_script_names` WHERE `spell_id` = 38194; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES From 65471801e698ffc0ebd3560f0a2a40ba6233b54b Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 18 Feb 2023 18:47:29 -0300 Subject: [PATCH 17/43] chore(Scripts/SethekkHalls): Move Anzu script to its own file (#15109) --- .../Auchindoun/SethekkHalls/boss_anzu.cpp | 152 ++++++++++++++++++ .../SethekkHalls/boss_talon_king_ikiss.cpp | 127 --------------- .../scripts/Outland/outland_script_loader.cpp | 2 + 3 files changed, 154 insertions(+), 127 deletions(-) create mode 100644 src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp new file mode 100644 index 000000000..32ffb66d3 --- /dev/null +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp @@ -0,0 +1,152 @@ +/* + * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by the + * Free Software Foundation; either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellScript.h" +#include "sethekk_halls.h" + +enum Anzu +{ + SAY_ANZU_INTRO1 = 0, + SAY_ANZU_INTRO2 = 1, + SAY_SUMMON = 2, + + SPELL_PARALYZING_SCREECH = 40184, + SPELL_SPELL_BOMB = 40303, + SPELL_CYCLONE = 40321, + SPELL_BANISH_SELF = 42354, + SPELL_SHADOWFORM = 40973, + + EVENT_SPELL_SCREECH = 1, + EVENT_SPELL_BOMB = 2, + EVENT_SPELL_CYCLONE = 3, + EVENT_ANZU_HEALTH1 = 4, + EVENT_ANZU_HEALTH2 = 5 +}; + +struct boss_anzu : public BossAI +{ + boss_anzu(Creature* creature) : BossAI(creature, DATA_ANZU) + { + talkTimer = 1; + me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE); + me->AddAura(SPELL_SHADOWFORM, me); + } + + uint32 talkTimer; + + void SummonedCreatureDies(Creature* summon, Unit*) override + { + summons.Despawn(summon); + summons.RemoveNotExisting(); + if (summons.empty()) + me->RemoveAurasDueToSpell(SPELL_BANISH_SELF); + } + + void JustEngagedWith(Unit* /*who*/) override + { + _JustEngagedWith(); + events.Reset(); + events.ScheduleEvent(EVENT_SPELL_SCREECH, 14000); + events.ScheduleEvent(EVENT_SPELL_BOMB, 5000); + events.ScheduleEvent(EVENT_SPELL_CYCLONE, 8000); + events.ScheduleEvent(EVENT_ANZU_HEALTH1, 2000); + events.ScheduleEvent(EVENT_ANZU_HEALTH2, 2001); + } + + void SummonBroods() + { + Talk(SAY_SUMMON); + me->CastSpell(me, SPELL_BANISH_SELF, true); + for (uint8 i = 0; i < 5; ++i) + me->SummonCreature(23132 /*NPC_BROOD_OF_ANZU*/, me->GetPositionX() + 20 * cos((float)i), me->GetPositionY() + 20 * std::sin((float)i), me->GetPositionZ() + 25.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); + } + + void UpdateAI(uint32 diff) override + { + if (talkTimer) + { + talkTimer += diff; + if (talkTimer >= 1000 && talkTimer < 10000) + { + Talk(SAY_ANZU_INTRO1); + talkTimer = 10000; + } + else if (talkTimer >= 16000) + { + me->ReplaceAllUnitFlags(UNIT_FLAG_NONE); + me->RemoveAurasDueToSpell(SPELL_SHADOWFORM); + Talk(SAY_ANZU_INTRO2); + talkTimer = 0; + } + } + + if (!UpdateVictim()) + return; + + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED)) + return; + + switch (events.ExecuteEvent()) + { + case EVENT_SPELL_SCREECH: + me->CastSpell(me, SPELL_PARALYZING_SCREECH, false); + events.RepeatEvent(23000); + events.DelayEvents(3000); + break; + case EVENT_SPELL_BOMB: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) + me->CastSpell(target, SPELL_SPELL_BOMB, false); + events.RepeatEvent(urand(16000, 24500)); + events.DelayEvents(3000); + break; + case EVENT_SPELL_CYCLONE: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true)) + me->CastSpell(target, SPELL_CYCLONE, false); + events.RepeatEvent(urand(22000, 27000)); + events.DelayEvents(3000); + break; + case EVENT_ANZU_HEALTH1: + if (me->HealthBelowPct(66)) + { + SummonBroods(); + events.DelayEvents(10000); + return; + } + events.RepeatEvent(1000); + break; + case EVENT_ANZU_HEALTH2: + if (me->HealthBelowPct(33)) + { + SummonBroods(); + events.DelayEvents(10000); + return; + } + events.RepeatEvent(1000); + break; + } + + DoMeleeAttackIfReady(); + } +}; + +void AddSC_boss_anzu() +{ + RegisterSethekkHallsCreatureAI(boss_anzu); +} diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp index fc0a37e42..0f89a7116 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp @@ -169,135 +169,8 @@ class spell_talon_king_ikiss_blink : public SpellScript } }; -enum Anzu -{ - SAY_ANZU_INTRO1 = 0, - SAY_ANZU_INTRO2 = 1, - SAY_SUMMON = 2, - - SPELL_PARALYZING_SCREECH = 40184, - SPELL_SPELL_BOMB = 40303, - SPELL_CYCLONE = 40321, - SPELL_BANISH_SELF = 42354, - SPELL_SHADOWFORM = 40973, - - EVENT_SPELL_SCREECH = 1, - EVENT_SPELL_BOMB = 2, - EVENT_SPELL_CYCLONE = 3, - EVENT_ANZU_HEALTH1 = 4, - EVENT_ANZU_HEALTH2 = 5 -}; - -struct boss_anzu : public BossAI -{ - boss_anzu(Creature* creature) : BossAI(creature, DATA_ANZU) - { - talkTimer = 1; - me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE); - me->AddAura(SPELL_SHADOWFORM, me); - } - - uint32 talkTimer; - - void SummonedCreatureDies(Creature* summon, Unit*) override - { - summons.Despawn(summon); - summons.RemoveNotExisting(); - if (summons.empty()) - me->RemoveAurasDueToSpell(SPELL_BANISH_SELF); - } - - void JustEngagedWith(Unit* /*who*/) override - { - _JustEngagedWith(); - events.Reset(); - events.ScheduleEvent(EVENT_SPELL_SCREECH, 14000); - events.ScheduleEvent(EVENT_SPELL_BOMB, 5000); - events.ScheduleEvent(EVENT_SPELL_CYCLONE, 8000); - events.ScheduleEvent(EVENT_ANZU_HEALTH1, 2000); - events.ScheduleEvent(EVENT_ANZU_HEALTH2, 2001); - } - - void SummonBroods() - { - Talk(SAY_SUMMON); - me->CastSpell(me, SPELL_BANISH_SELF, true); - for (uint8 i = 0; i < 5; ++i) - me->SummonCreature(23132 /*NPC_BROOD_OF_ANZU*/, me->GetPositionX() + 20 * cos((float)i), me->GetPositionY() + 20 * std::sin((float)i), me->GetPositionZ() + 25.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); - } - - void UpdateAI(uint32 diff) override - { - if (talkTimer) - { - talkTimer += diff; - if (talkTimer >= 1000 && talkTimer < 10000) - { - Talk(SAY_ANZU_INTRO1); - talkTimer = 10000; - } - else if (talkTimer >= 16000) - { - me->ReplaceAllUnitFlags(UNIT_FLAG_NONE); - me->RemoveAurasDueToSpell(SPELL_SHADOWFORM); - Talk(SAY_ANZU_INTRO2); - talkTimer = 0; - } - } - - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED)) - return; - - switch (events.ExecuteEvent()) - { - case EVENT_SPELL_SCREECH: - me->CastSpell(me, SPELL_PARALYZING_SCREECH, false); - events.RepeatEvent(23000); - events.DelayEvents(3000); - break; - case EVENT_SPELL_BOMB: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) - me->CastSpell(target, SPELL_SPELL_BOMB, false); - events.RepeatEvent(urand(16000, 24500)); - events.DelayEvents(3000); - break; - case EVENT_SPELL_CYCLONE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true)) - me->CastSpell(target, SPELL_CYCLONE, false); - events.RepeatEvent(urand(22000, 27000)); - events.DelayEvents(3000); - break; - case EVENT_ANZU_HEALTH1: - if (me->HealthBelowPct(66)) - { - SummonBroods(); - events.DelayEvents(10000); - return; - } - events.RepeatEvent(1000); - break; - case EVENT_ANZU_HEALTH2: - if (me->HealthBelowPct(33)) - { - SummonBroods(); - events.DelayEvents(10000); - return; - } - events.RepeatEvent(1000); - break; - } - - DoMeleeAttackIfReady(); - } -}; - void AddSC_boss_talon_king_ikiss() { RegisterSethekkHallsCreatureAI(boss_talon_king_ikiss); RegisterSpellScript(spell_talon_king_ikiss_blink); - RegisterSethekkHallsCreatureAI(boss_anzu); } diff --git a/src/server/scripts/Outland/outland_script_loader.cpp b/src/server/scripts/Outland/outland_script_loader.cpp index dc084c74a..86be80f95 100644 --- a/src/server/scripts/Outland/outland_script_loader.cpp +++ b/src/server/scripts/Outland/outland_script_loader.cpp @@ -23,6 +23,7 @@ void AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs void AddSC_boss_pandemonius(); void AddSC_instance_mana_tombs(); void AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls +void AddSC_boss_anzu(); void AddSC_instance_sethekk_halls(); void AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth void AddSC_boss_ambassador_hellmaw(); @@ -119,6 +120,7 @@ void AddOutlandScripts() AddSC_boss_pandemonius(); AddSC_instance_mana_tombs(); AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls + AddSC_boss_anzu(); AddSC_instance_sethekk_halls(); AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth AddSC_boss_ambassador_hellmaw(); From 2953d97354dda09f0df3f0352ea4103c7ea6d73d Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 18 Feb 2023 22:50:56 -0300 Subject: [PATCH 18/43] fix(DB/Creature): Remove custom-placed Shadowmoon Retainers in Eclipse Point (#15112) --- data/sql/updates/pending_db_world/rev_1676764417910573100.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676764417910573100.sql diff --git a/data/sql/updates/pending_db_world/rev_1676764417910573100.sql b/data/sql/updates/pending_db_world/rev_1676764417910573100.sql new file mode 100644 index 000000000..2ace94520 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676764417910573100.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `creature` WHERE `id1`=22102 AND `guid` IN (86101, 86102); From 84dc9e2ac8182e53dfca1540b3eb4f1a601128ea Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 01:53:21 +0000 Subject: [PATCH 19/43] chore(DB): import pending files Referenced commit(s): 2953d97354dda09f0df3f0352ea4103c7ea6d73d --- .../rev_1676764417910573100.sql => db_world/2023_02_19_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676764417910573100.sql => db_world/2023_02_19_00.sql} (62%) diff --git a/data/sql/updates/pending_db_world/rev_1676764417910573100.sql b/data/sql/updates/db_world/2023_02_19_00.sql similarity index 62% rename from data/sql/updates/pending_db_world/rev_1676764417910573100.sql rename to data/sql/updates/db_world/2023_02_19_00.sql index 2ace94520..e1241d2ce 100644 --- a/data/sql/updates/pending_db_world/rev_1676764417910573100.sql +++ b/data/sql/updates/db_world/2023_02_19_00.sql @@ -1,2 +1,3 @@ +-- DB update 2023_02_18_08 -> 2023_02_19_00 -- DELETE FROM `creature` WHERE `id1`=22102 AND `guid` IN (86101, 86102); From a9fac92c8048f3c144d742cbb01130fefe840308 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 18 Feb 2023 23:11:36 -0300 Subject: [PATCH 20/43] =?UTF-8?q?feat(Core/Instance):=20Implement=20helper?= =?UTF-8?q?s=20to=20easily=20save/retrieve=20persist=E2=80=A6=20(#15113)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Instances/InstanceScript.cpp | 29 +++++++++++++++++++ src/server/game/Instances/InstanceScript.h | 7 +++++ .../Mechanar/instance_mechanar.cpp | 16 +++++----- .../Outland/TempestKeep/Mechanar/mechanar.h | 6 ++++ 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index daba9b609..c97a6a59f 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -351,6 +351,17 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) return false; } +void InstanceScript::StorePersistentData(uint32 index, uint32 data) +{ + if (index > persistentData.size()) + { + LOG_ERROR("scripts", "InstanceScript::StorePersistentData() index larger than storage size. Index: {} Size: {} Data: {}.", index, persistentData.size(), data); + return; + } + + persistentData[index] = data; +} + void InstanceScript::Load(const char* data) { if (!data) @@ -366,6 +377,7 @@ void InstanceScript::Load(const char* data) if (ReadSaveDataHeaders(loadStream)) { ReadSaveDataBossStates(loadStream); + ReadSavePersistentData(loadStream); ReadSaveDataMore(loadStream); } else @@ -403,6 +415,14 @@ void InstanceScript::ReadSaveDataBossStates(std::istringstream& data) } } +void InstanceScript::ReadSavePersistentData(std::istringstream& data) +{ + for (uint32 i = 0; i < persistentData.size(); ++i) + { + data >> persistentData[i]; + } +} + std::string InstanceScript::GetSaveData() { OUT_SAVE_INST_DATA; @@ -411,6 +431,7 @@ std::string InstanceScript::GetSaveData() WriteSaveDataHeaders(saveStream); WriteSaveDataBossStates(saveStream); + WritePersistentData(saveStream); WriteSaveDataMore(saveStream); OUT_SAVE_INST_DATA_COMPLETE; @@ -434,6 +455,14 @@ void InstanceScript::WriteSaveDataBossStates(std::ostringstream& data) } } +void InstanceScript::WritePersistentData(std::ostringstream& data) +{ + for (auto const& entry : persistentData) + { + data << entry << ' '; + } +} + void InstanceScript::DoUseDoorOrButton(ObjectGuid uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState) { if (!uiGuid) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 92c98110d..158ccced2 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -229,6 +229,9 @@ public: CreatureBoundary const* GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : nullptr; } BossInfo const* GetBossInfo(uint32 id) const { return &bosses[id]; } + uint32 GetPersistentData(uint32 index) const { return index < persistentData.size() ? persistentData[index] : 0; }; + void StorePersistentData(uint32 index, uint32 data); + // Achievement criteria additional requirements check // NOTE: not use this if same can be checked existed requirement types from AchievementCriteriaRequirementType virtual bool CheckAchievementCriteriaMeet(uint32 /*criteria_id*/, Player const* /*source*/, Unit const* /*target*/ = nullptr, uint32 /*miscvalue1*/ = 0); @@ -257,6 +260,7 @@ public: protected: void SetHeaders(std::string const& dataHeaders); void SetBossNumber(uint32 number) { bosses.resize(number); } + void SetPersistentDataCount(uint32 number) { persistentData.resize(number); } void LoadBossBoundaries(BossBoundaryData const& data); void LoadDoorData(DoorData const* data); void LoadMinionData(MinionData const* data); @@ -275,9 +279,11 @@ protected: // Instance Load and Save bool ReadSaveDataHeaders(std::istringstream& data); void ReadSaveDataBossStates(std::istringstream& data); + void ReadSavePersistentData(std::istringstream& data); virtual void ReadSaveDataMore(std::istringstream& /*data*/) { } void WriteSaveDataHeaders(std::ostringstream& data); void WriteSaveDataBossStates(std::ostringstream& data); + void WritePersistentData(std::ostringstream& data); virtual void WriteSaveDataMore(std::ostringstream& /*data*/) { } private: @@ -285,6 +291,7 @@ private: std::vector headers; std::vector bosses; + std::vector persistentData; DoorInfoMap doors; MinionInfoMap minions; ObjectInfoMap _creatureInfo; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index a13c4d32e..acb7b1e45 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -38,6 +38,7 @@ public: { SetHeaders(DataHeader); SetBossNumber(MAX_ENCOUNTER); + SetPersistentDataCount(MAX_DATA_INDEXES); LoadDoorData(doorData); _passageEncounter = 0; @@ -149,7 +150,8 @@ public: DoSummonAction(creature, player); } } - _passageEncounter++; + + StorePersistentData(DATA_INDEX_PASSAGE_ENCOUNTER, _passageEncounter++); SaveToDB(); } } @@ -186,16 +188,17 @@ public: if (Creature* creature = instance->GetCreature(_pathaleonGUID)) creature->AI()->DoAction(1); } - _passageEncounter++; + + StorePersistentData(DATA_INDEX_PASSAGE_ENCOUNTER, _passageEncounter++); SaveToDB(); } } } } - void ReadSaveDataMore(std::istringstream& data) override + void ReadSaveDataMore(std::istringstream& /*data*/) override { - data >> _passageEncounter; + _passageEncounter = GetPersistentData(DATA_INDEX_PASSAGE_ENCOUNTER); if (_passageEncounter == ENCOUNTER_PASSAGE_DONE) { @@ -203,11 +206,6 @@ public: } } - void WriteSaveDataMore(std::ostringstream& data) override - { - data << _passageEncounter; - } - private: ObjectGuid _pathaleonGUID; uint32 _passageTimer; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h index bcd8fae64..7eac01cc2 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h @@ -70,6 +70,12 @@ enum SpellIds SPELL_TELEPORT_VISUAL = 35517 }; +enum DataIndex +{ + DATA_INDEX_PASSAGE_ENCOUNTER = 0, + MAX_DATA_INDEXES +}; + template inline AI* GetMechanarAI(T* obj) { From 3a6e8adbc8c680a3bba67a4cc2eb115c57a279a5 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:39:53 -0300 Subject: [PATCH 21/43] fix(DB/Creature): Rebuild the Coilskar Cistern (#15114) --- .../rev_1676756504407801100.sql | 376 ++++++++++++++++++ 1 file changed, 376 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676756504407801100.sql diff --git a/data/sql/updates/pending_db_world/rev_1676756504407801100.sql b/data/sql/updates/pending_db_world/rev_1676756504407801100.sql new file mode 100644 index 000000000..9ff311d48 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676756504407801100.sql @@ -0,0 +1,376 @@ +-- Add Burning Spikes to Domesticated Helboar +UPDATE `creature_template_addon` SET `bytes2` = 0, `auras` = '33908' WHERE (`entry` = 21195); + +-- Water Bubble to Captured Water Spirit +DELETE FROM `creature_template_addon` WHERE (`entry` = 21029); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(21029, 0, 0, 0, 0, 0, 0, '35929'); + +-- Delete ALL Creatures exclusive to Coilskar Cistern +DELETE FROM `creature` WHERE `map`=530 AND `id1` IN ( +19765, -- Coilskar Myrmidon +19767, -- Coilskar Sorceress +19788, -- Coilskar Muckwatcher +21029, -- Captured Water Spirit +21041, -- Earthmender Wilda Trigger +21027, -- Earthmender Wilda +21044, -- Coilskar Assassin (Spawned from Escort Quest) +20795 -- Keeper of the Cistern +); + +-- Delete Coilskar Cobra in Coilskar Cistern +DELETE FROM `creature` WHERE `id1`=19784 AND `guid` BETWEEN 70801 AND 70807; + +DELETE FROM `creature` WHERE `id1` IN (19765,19767,19784,19788,21029,21041,21027,20795) AND `map`=530 AND `ZoneId`=3520 AND `guid` IN (23745,24189,24190,24191,24777,24788,24868,24869,24870,24915,24931,24944,24945,24946,24947,24948,24974,24975,24977,24978,24979,24980,24981,24982,24983,25010,25065,25094,25095,25096,25097,25098,25099,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25738,25739,25740,25741,25742,25743,25744); +INSERT INTO `creature` (`guid`, `id1`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`, `VerifiedBuild`) VALUES +(23745, 19765, 530, 3520, 3749, 1, 1, 1, -2898.98, 1382.11, 6.15595, 1.85005, 300, 0, 0, 48069), +(24189, 19765, 530, 3520, 3749, 1, 1, 1, -2913.56, 1391.4, 7.13094, 1.0472, 300, 0, 0, 48069), +(24190, 19765, 530, 3520, 3749, 1, 1, 1, -2937.48, 1354.87, 6.92214, 4.7822, 300, 0, 0, 48069), +(24191, 19765, 530, 3520, 3749, 1, 1, 1, -2902.86, 1303.16, 7.15851, 2.37365, 300, 0, 0, 48069), +(24777, 19765, 530, 3520, 3749, 1, 1, 1, -2889.05, 1314.18, 6.65059, 3.40339, 300, 0, 0, 48069), +(24788, 19765, 530, 3520, 3749, 1, 1, 1, -2902.24, 1330.04, 6.77553, 2.79253, 300, 0, 0, 48069), +(24868, 19765, 530, 3520, 3749, 1, 1, 1, -2983.65, 1309.24, 8.58929, 3.71475, 300, 8, 1, 48069), +(24869, 19765, 530, 3520, 3749, 1, 1, 1, -2942.56, 1284.57, 8.16425, 1.88496, 300, 0, 0, 48069), +(24870, 19765, 530, 3520, 3749, 1, 1, 1, -2779.55, 1304.42, 33.4497, 5.93412, 300, 0, 0, 48069), +(24915, 19765, 530, 3520, 3749, 1, 1, 1, -2817.55, 1224.34, 6.25537, 5.38328, 300, 0, 0, 48069), +(24931, 19765, 530, 3520, 3749, 1, 1, 1, -2768.09, 1273.42, 33.7681, 1.5708, 300, 0, 0, 48069), +(24944, 19765, 530, 3520, 3749, 1, 1, 1, -2764.94, 1317.1, 33.5025, 4.85202, 300, 0, 0, 48069), +(24945, 19765, 530, 3520, 3749, 1, 1, 1, -2749.51, 1247.11, 33.245, 1.84797, 300, 0, 0, 48069), +(24946, 19765, 530, 3520, 3749, 1, 1, 2, -2798.67, 1160.3, 6.693, 4.86947, 300, 0, 0, 48069), +(24947, 19765, 530, 3520, 3749, 1, 1, 1, -2787.35, 1148.32, 7.55367, 1.06465, 300, 0, 0, 48069), +(24948, 19765, 530, 3520, 3749, 1, 1, 1, -2628.65, 1223.29, 14.6047, 4.37468, 300, 0, 0, 48069), +(24974, 19765, 530, 3520, 3749, 1, 1, 2, -2725.46, 1268.64, 33.3154, 1.15192, 300, 0, 0, 48069), +(24975, 19765, 530, 3520, 3749, 1, 1, 1, -2641.38, 1229.79, 10.9875, 0.170716, 300, 3, 1, 48069), +(24977, 19765, 530, 3520, 3749, 1, 1, 1, -2677.05, 1381.3, 38.0509, 5.044, 300, 0, 0, 48069), +(24978, 19765, 530, 3520, 3749, 1, 1, 1, -2703.08, 1375.09, 38.6636, 5.88176, 300, 0, 0, 48069), +(24979, 19767, 530, 3520, 3749, 1, 1, 1, -2976.08, 1333.87, 8.76729, 2.2356, 300, 4, 1, 48069), +(24980, 19767, 530, 3520, 3749, 1, 1, 1, -2905.72, 1359.48, 6.14664, 4.48575, 300, 10, 1, 48069), +(24981, 19767, 530, 3520, 3749, 1, 1, 1, -2934.01, 1326.69, 8.1525, 2.81793, 300, 6, 1, 48069), +(24982, 19767, 530, 3520, 3749, 1, 1, 1, -2773.13, 1157.78, 7.20267, 1.13446, 300, 0, 0, 48069), +(24983, 19767, 530, 3520, 3749, 1, 1, 1, -2731.41, 1259.01, 33.7358, 2.93215, 300, 0, 0, 48069), +(25010, 19767, 530, 3520, 3749, 1, 1, 1, -2736.81, 1278.36, 33.3747, 3.22886, 300, 0, 0, 48069), +(25065, 19767, 530, 3520, 3749, 1, 1, 1, -2690.81, 1366.14, 37.1067, 3.80006, 300, 0, 0, 48069), +(25094, 19767, 530, 3520, 3749, 1, 1, 1, -2671.05, 1273.61, 27.3407, 2.36121, 300, 4, 1, 48069), +(25095, 19767, 530, 3520, 3749, 1, 1, 1, -2650.98, 1287.83, 27.5096, 1.27681, 300, 4, 1, 48069), +(25096, 19767, 530, 3520, 3749, 1, 1, 1, -2691.4, 1388.28, 38.6635, 6.05283, 300, 4, 1, 48069), +(25097, 19767, 530, 3520, 3749, 1, 1, 1, -2655.43, 1354.2, 34.7295, 1.23625, 300, 8, 1, 48069), +(25098, 19788, 530, 3520, 3749, 1, 1, 1, -2886.79, 1306.95, 5.7373, 2.81133, 300, 0, 0, 48069), +(25099, 19788, 530, 3520, 3749, 1, 1, 1, -2805.56, 1369.56, 37.8528, 4.43144, 300, 0, 0, 48069), +(25111, 19788, 530, 3520, 3749, 1, 1, 1, -2753.25, 1307.42, 33.4562, 3.61969, 300, 0, 0, 48069), +(25112, 19788, 530, 3520, 3749, 1, 1, 1, -2729.97, 1141.34, 1.72704, 2.91288, 300, 0, 0, 48069), +(25113, 19788, 530, 3520, 3749, 1, 1, 1, -2691.24, 1173.31, 5.5279, 3.77395, 300, 0, 0, 48069), +(25114, 19788, 530, 3520, 3749, 1, 1, 1, -2670.11, 1283.01, 28.1491, 2.8624, 300, 0, 0, 48069), +(25115, 19788, 530, 3520, 3749, 1, 1, 1, -2620.26, 1353.72, 37.1255, 3.66914, 300, 0, 0, 48069), +(25116, 19788, 530, 3520, 3749, 1, 1, 1, -2636.63, 1372.52, 36.0204, 3.98698, 300, 0, 0, 48069), +(25117, 19788, 530, 3520, 3749, 1, 1, 1, -2641.96, 1270.84, 24.3307, 2.474, 300, 0, 0, 48069), +(25118, 20795, 530, 3520, 3749, 1, 1, 1, -2594.66, 1384.33, 44.3154, 6.12077, 300, 5, 1, 48069), +(25119, 21027, 530, 3520, 3749, 1, 1, 0, -2616.36, 1372.07, 46.0286, 3.85718, 300, 0, 0, 48069), +(25120, 21029, 530, 3520, 3749, 1, 1, 0, -2729.85, 1215.23, 48.2141, 1.5708, 300, 0, 0, 48069), +(25121, 21029, 530, 3520, 3749, 1, 1, 0, -2721.25, 1216.49, 41.7782, 1.79769, 300, 0, 0, 48069), +(25122, 21029, 530, 3520, 3749, 1, 1, 0, -2713.19, 1221.69, 38.1432, 2.0944, 300, 0, 0, 48069), +(25123, 21029, 530, 3520, 3749, 1, 1, 0, -2711.53, 1230.92, 37.3221, 2.54818, 300, 0, 0, 48069), +(25124, 21029, 530, 3520, 3749, 1, 1, 0, -2708.88, 1239.1, 38.1921, 3.08923, 300, 0, 0, 48069), +(25125, 21041, 530, 3520, 3749, 1, 1, 0, -2638.89, 1358.96, 36.0438, 3.90954, 300, 0, 0, 48069), +(25126, 21041, 530, 3520, 3749, 1, 1, 0, -2605.25, 1369.39, 49.1248, 4.03171, 300, 0, 0, 48069), +(25127, 21041, 530, 3520, 3749, 1, 1, 0, -2605.53, 1374.24, 45.3846, 5.55015, 300, 0, 0, 48069), +(25128, 21041, 530, 3520, 3749, 1, 1, 0, -2614.51, 1381.27, 51.6831, 5.55015, 300, 0, 0, 48069), +(25129, 21041, 530, 3520, 3749, 1, 1, 0, -2610.76, 1377.7, 41.1437, 3.50811, 300, 0, 0, 48069), +(25130, 21041, 530, 3520, 3749, 1, 1, 0, -2590.76, 1387.65, 55.0794, 4.10152, 300, 0, 0, 48069), +(25713, 19784, 530, 3520, 3749, 1, 1, 0, -2924.55, 1371.39, 9.52825, 5.55015, 300, 0, 0, 48069), +(25714, 19784, 530, 3520, 3749, 1, 1, 0, -2919.43, 1372.64, 8.37301, 6.12611, 300, 0, 0, 48069), +(25715, 19784, 530, 3520, 3749, 1, 1, 0, -2960.01, 1304.2, 7.36165, 0.226893, 300, 0, 0, 48069), +(25716, 19784, 530, 3520, 3749, 1, 1, 0, -2964.3, 1312.32, 7.70759, 0.890118, 300, 0, 0, 48069), +(25717, 19784, 530, 3520, 3749, 1, 1, 0, -2851.26, 1239.81, 6.79606, 3.09596, 300, 5, 1, 48069), +(25718, 19784, 530, 3520, 3749, 1, 1, 0, -2809.98, 1254.89, 26.471, 6.0912, 300, 0, 0, 48069), +(25719, 19784, 530, 3520, 3749, 1, 1, 0, -2842.61, 1249.25, 6.79606, 1.18107, 300, 5, 1, 48069), +(25720, 19784, 530, 3520, 3749, 1, 1, 0, -2810.6, 1257.84, 26.8763, 6.23417, 300, 0, 0, 48069), +(25721, 19784, 530, 3520, 3749, 1, 1, 0, -2738.38, 1148.7, 3.50024, 3.33358, 300, 0, 0, 48069), +(25722, 19784, 530, 3520, 3749, 1, 1, 0, -2741.38, 1138.88, 4.15881, 2.46091, 300, 0, 0, 48069), +(25723, 19784, 530, 3520, 3749, 1, 1, 0, -2639.01, 1256.11, 21.8693, 5.35816, 300, 0, 0, 48069), +(25724, 19784, 530, 3520, 3749, 1, 1, 0, -2628.61, 1256.51, 19.4139, 4.7473, 300, 0, 0, 48069), +(25725, 19784, 530, 3520, 3749, 1, 1, 0, -2702.76, 1318.11, 34.033, 4.45059, 300, 0, 0, 48069), +(25726, 19784, 530, 3520, 3749, 1, 1, 0, -2714.62, 1310.4, 34.1854, 5.3058, 300, 0, 0, 48069), +(25727, 19784, 530, 3520, 3749, 1, 1, 0, -2580.79, 1389.61, 42.4415, 0.820305, 300, 0, 0, 48069), +(25738, 19784, 530, 3520, 3749, 1, 1, 0, -2583.63, 1393.74, 42.5982, 0.471239, 300, 0, 0, 48069), +(25739, 19784, 530, 3520, 3749, 1, 1, 0, -2780.42, 1393.01, 38.8631, 0.873989, 300, 5, 1, 48069), +(25740, 19784, 530, 3520, 3749, 1, 1, 0, -2790.03, 1393.41, 39.1302, 1.59271, 300, 5, 1, 48069), +(25741, 19784, 530, 3520, 3749, 1, 1, 0, -2708.27, 1223.95, 32.8727, 1.35922, 300, 5, 1, 48069), +(25742, 19784, 530, 3520, 3749, 1, 1, 0, -2720.86, 1215.66, 37.045, 2.45076, 300, 5, 1, 48069), +(25743, 19784, 530, 3520, 3749, 1, 1, 0, -2779.55, 1279.2603, 34.014435, 2.45076, 300, 0, 0, 48069), +(25744, 19784, 530, 3520, 3749, 1, 1, 0, -2779.55, 1279.2603, 34.014435, 2.45076, 300, 0, 0, 48069); + +SET @NPC := 24915; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2823.2131,`position_y`=1231.4794,`position_z`=6.2438025 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2823.2131,1231.4794,6.2438025,NULL,0,0,0,100,0), +(@PATH,2,-2812.9219,1218.5132,6.26481,NULL,0,0,0,100,0), +(@PATH,3,-2809.2012,1208.1838,6.32249,NULL,0,0,0,100,0), +(@PATH,4,-2806.4219,1203.8843,6.3185363,NULL,0,0,0,100,0), +(@PATH,5,-2809.2012,1208.1838,6.32249,NULL,0,0,0,100,0), +(@PATH,6,-2812.9219,1218.5132,6.26481,NULL,0,0,0,100,0); + +SET @NPC := 24948; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2644.4155,`position_y`=1194.6781,`position_z`=6.600725 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2644.4155,1194.6781,6.600725,NULL,0,0,0,100,0), +(@PATH,2,-2634.681,1206.1174,10.327223,NULL,0,0,0,100,0), +(@PATH,3,-2625.3433,1232.7086,16.544775,NULL,0,0,0,100,0), +(@PATH,4,-2634.681,1206.1174,10.327223,NULL,0,0,0,100,0); + +SET @NPC := 24945; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2748.4146,`position_y`=1268.3123,`position_z`=33.184956 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2748.4146,1268.3123,33.184956,NULL,0,0,0,100,0), +(@PATH,2,-2753.3994,1260.7609,33.38965,NULL,0,0,0,100,0), +(@PATH,3,-2749.2388,1246.1364,33.239746,NULL,0,0,0,100,0), +(@PATH,4,-2740.1255,1235.6766,33.070683,NULL,0,0,0,100,0), +(@PATH,5,-2722.9575,1231.541,33.249657,NULL,0,0,0,100,0), +(@PATH,6,-2740.1255,1235.6766,33.070683,NULL,0,0,0,100,0), +(@PATH,7,-2749.2388,1246.1364,33.239746,NULL,0,0,0,100,0), +(@PATH,8,-2753.3994,1260.7609,33.38965,NULL,0,0,0,100,0); + +SET @NPC := 25112; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2762.0657,`position_y`=1151.654,`position_z`=6.546216 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2762.0657,1151.654,6.546216,NULL,0,0,0,100,0), +(@PATH,2,-2748.221,1145.59,4.7005005,NULL,0,0,0,100,0), +(@PATH,3,-2728.986,1141.1119,1.6215124,NULL,0,0,0,100,0), +(@PATH,4,-2712.8843,1145.7828,2.4614542,NULL,0,0,0,100,0), +(@PATH,5,-2704.414,1160.1536,5.125069,NULL,0,0,0,100,0), +(@PATH,6,-2712.8843,1145.7828,2.4614542,NULL,0,0,0,100,0), +(@PATH,7,-2728.986,1141.1119,1.6215124,NULL,0,0,0,100,0), +(@PATH,8,-2748.221,1145.59,4.7005005,NULL,0,0,0,100,0); + +SET @NPC := 25111; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2759.5168,`position_y`=1304.1704,`position_z`=33.314373 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2759.5168,1304.1704,33.314373,NULL,0,0,0,100,0), +(@PATH,2,-2746.1182,1311.1138,33.605423,NULL,0,0,0,100,0), +(@PATH,3,-2719.3152,1324.5756,33.971096,NULL,0,0,0,100,0), +(@PATH,4,-2698.994,1332.9515,34.436684,NULL,0,0,0,100,0), +(@PATH,5,-2683.1274,1345.1252,34.436684,NULL,0,0,0,100,0), +(@PATH,6,-2668.0637,1348.902,34.48238,NULL,0,0,0,100,0), +(@PATH,7,-2683.1274,1345.1252,34.436684,NULL,0,0,0,100,0), +(@PATH,8,-2698.9836,1332.9558,34.436684,NULL,0,0,0,100,0), +(@PATH,9,-2719.3152,1324.5756,33.971096,NULL,0,0,0,100,0), +(@PATH,10,-2746.1182,1311.1138,33.605423,NULL,0,0,0,100,0); + +SET @NPC := 25117; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2641.9058,`position_y`=1268.142,`position_z`=23.927183 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1 ,-2641.9058,1268.142,23.927183,NULL,0,0,0,100,0), +(@PATH,2 ,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0), +(@PATH,3 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0), +(@PATH,4 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0), +(@PATH,5 ,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0), +(@PATH,6 ,-2709.4016,1314.3235,33.262363,NULL,0,0,0,100,0), +(@PATH,7 ,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0), +(@PATH,8 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0), +(@PATH,9 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0), +(@PATH,10,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0); + +SET @NPC := 25098; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2912.6753,`position_y`=1318.8967,`position_z`=6.3883452 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1 ,-2912.6753,1318.8967,6.3883452,NULL,0,0,0,100,0), +(@PATH,2 ,-2906.6418,1313.7617,6.6383452,NULL,0,0,0,100,0), +(@PATH,3 ,-2893.7417,1307.0945,6.3466606,NULL,0,0,0,100,0), +(@PATH,4 ,-2880.6794,1305.1588,5.410137,NULL,0,0,0,100,0), +(@PATH,5 ,-2858.01,1298.7424,6.7960815,NULL,0,0,0,100,0), +(@PATH,6 ,-2842.9072,1292.9916,6.1282473,NULL,0,0,0,100,0), +(@PATH,7 ,-2843.1912,1280.0597,7.683124,NULL,0,0,0,100,0), +(@PATH,8 ,-2848.1216,1266.8289,8.083833,NULL,0,0,0,100,0), +(@PATH,9 ,-2853.8364,1255.8324,6.9199033,NULL,0,0,0,100,0), +(@PATH,10,-2842.4497,1243.7681,6.7960606,NULL,0,0,0,100,0), +(@PATH,11,-2853.8364,1255.8324,6.9199033,NULL,0,0,0,100,0), +(@PATH,12,-2848.1216,1266.8289,8.083833,NULL,0,0,0,100,0), +(@PATH,13,-2843.1912,1280.0597,7.683124,NULL,0,0,0,100,0), +(@PATH,14,-2842.9072,1292.9916,6.1282473,NULL,0,0,0,100,0), +(@PATH,15,-2858.01,1298.7424,6.7960815,NULL,0,0,0,100,0), +(@PATH,16,-2880.6794,1305.1588,5.410137,NULL,0,0,0,100,0), +(@PATH,17,-2893.7417,1307.0945,6.3466606,NULL,0,0,0,100,0), +(@PATH,18,-2906.6418,1313.7617,6.6383452,NULL,0,0,0,100,0); + +SET @NPC := 25114; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2709.4016,`position_y`=1314.3235,`position_z`=33.262363 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1 ,-2709.4016,1314.3235,33.262363,NULL,0,0,0,100,0), +(@PATH,2 ,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0), +(@PATH,3 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0), +(@PATH,4 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0), +(@PATH,5 ,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0), +(@PATH,6 ,-2641.9058,1268.142,23.927183,NULL,0,0,0,100,0), +(@PATH,7 ,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0), +(@PATH,8 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0), +(@PATH,9 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0), +(@PATH,10,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0); + +SET @NPC := 25116; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2643.4558,`position_y`=1364.8234,`position_z`=35.86493 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1 ,-2643.4558,1364.8234,35.86493,NULL,0,0,0,100,0), +(@PATH,2 ,-2634.716,1374.6797,36.22216,NULL,0,0,0,100,0), +(@PATH,3 ,-2626.5833,1383.2074,37.50213,NULL,0,0,0,100,0), +(@PATH,4 ,-2618.2117,1387.6519,39.28746,NULL,0,0,0,100,0), +(@PATH,5 ,-2611.0234,1393.2262,41.428757,NULL,0,0,0,100,0), +(@PATH,6 ,-2602.1787,1400.6476,41.767567,NULL,0,0,0,100,0), +(@PATH,7 ,-2611.0234,1393.2262,41.428757,NULL,0,0,0,100,0), +(@PATH,8 ,-2618.2117,1387.6519,39.28746,NULL,0,0,0,100,0), +(@PATH,9 ,-2626.5833,1383.2074,37.50213,NULL,0,0,0,100,0), +(@PATH,10,-2634.716,1374.6797,36.22216,NULL,0,0,0,100,0); + +SET @NPC := 25099; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2809.3833,`position_y`=1356.3115,`position_z`=37.325497 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2809.3833,1356.3115,37.325497,NULL,0,0,0,100,0), +(@PATH,2,-2804.8496,1338.0927,36.000645,NULL,0,0,0,100,0), +(@PATH,3,-2784.9128,1322.3423,33.37369,NULL,0,0,0,100,0), +(@PATH,4,-2772.6155,1327.1848,33.624535,NULL,0,0,0,100,0), +(@PATH,5,-2767.8467,1360.8962,35.79723,NULL,0,0,0,100,0), +(@PATH,6,-2784.864,1388.3601,38.49067,NULL,0,0,0,100,0), +(@PATH,7,-2801.9087,1382.2137,38.60972,NULL,0,0,0,100,0); + +SET @NPC := 25113; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2655.3274,`position_y`=1202.3822,`position_z`=6.115521 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2655.3274,1202.3822,6.115521,NULL,0,0,0,100,0), +(@PATH,2,-2666.605,1190.8188,3.529532,NULL,0,0,0,100,0), +(@PATH,3,-2679.0286,1182.2574,4.7928033,NULL,0,0,0,100,0), +(@PATH,4,-2699.4224,1167.3142,5.547194,NULL,0,0,0,100,0), +(@PATH,5,-2679.0286,1182.2574,4.7928033,NULL,0,0,0,100,0), +(@PATH,6,-2666.6719,1190.7727,3.5094023,NULL,0,0,0,100,0); + +SET @NPC := 25115; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2634.4636,`position_y`=1345.4458,`position_z`=35.481934 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2634.4636,1345.4458,35.481934,NULL,0,0,0,100,0), +(@PATH,2,-2620.018,1353.861,37.13554,NULL,0,0,0,100,0), +(@PATH,3,-2598.73,1358.416,38.889954,NULL,0,0,0,100,0), +(@PATH,4,-2590.0383,1365.4989,40.473846,NULL,0,0,0,100,0), +(@PATH,5,-2598.73,1358.416,38.889954,NULL,0,0,0,100,0), +(@PATH,6,-2620.018,1353.861,37.13554,NULL,0,0,0,100,0); + +SET @NPC := 25743; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2779.55,`position_y`=1279.2603,`position_z`=34.014435 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-2779.55,1279.2603,34.014435,NULL,0,0,0,100,0), +(@PATH,2,-2799.971,1261.2897,33.647408,NULL,0,0,0,100,0), +(@PATH,3,-2810.8,1254.8387,31.11925,NULL,0,0,0,100,0), +(@PATH,4,-2799.971,1261.2897,33.647408,NULL,0,0,0,100,0); + +DELETE FROM `creature_formations` WHERE `memberGUID` IN (25743, 25744); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(25743, 25743, 0, 0, 3), +(25743, 25744, 3, 90, 515); + +-- Sorceress (-25065) +DELETE FROM `waypoints` WHERE `entry`=1976700 AND `point_comment`='Coilskar Sorceress'; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `orientation`, `point_comment`) VALUES +(1976700,1,-2699.7734,1352.9802,32.96573,NULL,'Coilskar Sorceress'), +(1976700,2,-2695.3882,1362.5975,35.82666,NULL,'Coilskar Sorceress'), +(1976700,3,-2687.7195,1368.574,37.474815,NULL,'Coilskar Sorceress'), +(1976700,4,-2677.8486,1371.7639,36.15712,NULL,'Coilskar Sorceress'), +(1976700,5,-2668.1536,1368.8298,33.586617,NULL,'Coilskar Sorceress'), +(1976700,6,-2677.8486,1371.7639,36.15712,NULL,'Coilskar Sorceress'), +(1976700,7,-2687.6226,1368.6053,37.475197,NULL,'Coilskar Sorceress'), +(1976700,8,-2695.3882,1362.5975,35.82666,NULL,'Coilskar Sorceress'), +(1976700,9,-2699.7734,1352.9802,32.96573,NULL,'Coilskar Sorceress'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 19767); +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 +(19767, 0, 0, 0, 0, 0, 100, 0, 0, 1000, 2500, 4700, 0, 11, 32011, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - In Combat - Cast \'Water Bolt\''), +(19767, 0, 1, 0, 2, 0, 100, 1, 0, 80, 0, 0, 0, 11, 38026, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Between 0-80% Health - Cast \'Viscous Shield\' (No Repeat)'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -25065); +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 +(-25065, 0, 0, 0, 0, 0, 100, 0, 0, 1000, 2500, 4700, 0, 11, 32011, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - In Combat - Cast \'Water Bolt\''), +(-25065, 0, 1, 0, 2, 0, 100, 1, 0, 80, 0, 0, 0, 11, 38026, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Between 0-80% Health - Cast \'Viscous Shield\' (No Repeat)'), +(-25065, 0, 1001, 1002, 11, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - On Respawn - Set Event Phase 1'), +(-25065, 0, 1002, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 53, 0, 1976700, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - On Respawn - Start Waypoint'), +(-25065, 0, 1003, 0, 1, 0, 100, 0, 60000, 120000, 60000, 120000, 0, 80, 1976700, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Out of Combat - Run Script'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 1976700); +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 +(1976700, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 54, 13000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Pause Waypoint'), +(1976700, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 2, 0, 0, 19, 19765, 30, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Move To Closest Creature \'Coilskar Myrmidon\''), +(1976700, 9, 2, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Say Line 0'), +(1976700, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 19765, 10, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Set Data 1 1'), +(1976700, 9, 5, 0, 0, 0, 100, 0, 2600, 2600, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, 19765, 10, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Set Data 2 2'), +(1976700, 9, 6, 0, 0, 0, 100, 0, 1200, 1200, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Play Emote 15'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 19765); +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 +(19765, 0, 0, 0, 9, 0, 100, 0, 0, 20, 11500, 13000, 0, 11, 38027, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Myrmidon - Within 0-20 Range - Cast \'Boiling Blood\''), +(19765, 0, 1, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 19767, 10, 0, 0, 0, 0, 0, 0, 'Coilskar Myrmidon - On Data Set 1 1 - Set Orientation Closest Creature \'Coilskar Sorceress\''), +(19765, 0, 2, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Myrmidon - On Data Set 2 2 - Say Line 0'); + +DELETE FROM `creature_text` WHERE `CreatureID` IN (19767, 19765) AND `GroupID`=0; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Probability`, `Emote`, `BroadcastTextId`, `comment`) VALUES +(19767, 0, 0, 'Stay alert!', 12, 100, 1, 17711, 'Coilskar Sorceress'), +(19767, 0, 1, 'Be wary of intruders.', 12, 100, 1, 17713, 'Coilskar Sorceress'), +(19767, 0, 2, 'We must not fail the master.', 12, 100, 1, 17715, 'Coilskar Sorceress'), +(19765, 0, 0, 'Understood.', 12, 100, 1, 18146, 'Coilskar Myrmidon'), +(19765, 0, 1, 'We will not fail.', 12, 100, 1, 18410, 'Coilskar Myrmidon'); + +-- EmoteState for Myrmidons +DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 19765); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES +(19765, 1, 28965, 0, 0, 18019), +(19765, 2, 2028, 0, 0, 18019); + +DELETE FROM `creature_addon` WHERE `guid` IN (24946, 24974); +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES +(24946,0,0,0,1,173,0, ''), +(24974,0,0,0,1,173,0, ''); From e207694bbe107fa291d0f07fb74387dfe2112749 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 03:42:17 +0000 Subject: [PATCH 22/43] chore(DB): import pending files Referenced commit(s): 3a6e8adbc8c680a3bba67a4cc2eb115c57a279a5 --- .../rev_1676756504407801100.sql => db_world/2023_02_19_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676756504407801100.sql => db_world/2023_02_19_01.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1676756504407801100.sql b/data/sql/updates/db_world/2023_02_19_01.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676756504407801100.sql rename to data/sql/updates/db_world/2023_02_19_01.sql index 9ff311d48..2b8e8928c 100644 --- a/data/sql/updates/pending_db_world/rev_1676756504407801100.sql +++ b/data/sql/updates/db_world/2023_02_19_01.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_00 -> 2023_02_19_01 -- Add Burning Spikes to Domesticated Helboar UPDATE `creature_template_addon` SET `bytes2` = 0, `auras` = '33908' WHERE (`entry` = 21195); From e750aedb6a4532aa6f8d0dd78954d7f64568c093 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 19 Feb 2023 05:22:20 +0100 Subject: [PATCH 23/43] =?UTF-8?q?fix(DB/SAI):=20Ethereal=20Crypt=20Raider'?= =?UTF-8?q?s=20Charge=20should=20be=20casted=20on=20rando=E2=80=A6=20(#151?= =?UTF-8?q?01)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/sql/updates/pending_db_world/rev_1676742228456978900.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676742228456978900.sql diff --git a/data/sql/updates/pending_db_world/rev_1676742228456978900.sql b/data/sql/updates/pending_db_world/rev_1676742228456978900.sql new file mode 100644 index 000000000..c01ad3664 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676742228456978900.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `event_type`=0, `event_param1`=2000, `event_param2`=6000, `event_param3`=12000, `target_type`=5, `target_param1`=25 WHERE `entryorguid`=18311 AND `source_type`=0 AND `id`=4; From 23a68b694eec559a8968db67d74813ec88ddc2e4 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 19 Feb 2023 05:22:27 +0100 Subject: [PATCH 24/43] =?UTF-8?q?fix(DB/Creatures):=20Fixed=20reputation?= =?UTF-8?q?=20gained=20on=20Ethereal=20Wraith/Arcane=20=E2=80=A6=20(#15100?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../updates/pending_db_world/rev_1676740896495351500.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676740896495351500.sql diff --git a/data/sql/updates/pending_db_world/rev_1676740896495351500.sql b/data/sql/updates/pending_db_world/rev_1676740896495351500.sql new file mode 100644 index 000000000..19a2829f0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676740896495351500.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_onkill_reputation` SET `MaxStanding1`=4 WHERE `creature_id` IN (18394,18429); +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (20262,20252); +INSERT INTO `creature_onkill_reputation` VALUES +(20262,933,0,7,0,15,0,0,0,0), +(20252,933,0,7,0,15,0,0,0,0); From c3a8d26109e5ac57be50ee68538661339d58de9d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 19 Feb 2023 05:22:35 +0100 Subject: [PATCH 25/43] =?UTF-8?q?fix(Scripts/OldHilsbradFoothills):=20Corr?= =?UTF-8?q?ected=20spawn=20position=20and=20waypo=E2=80=A6=20(#15099)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rev_1676740140245965800.sql | 43 +++++++++++++ .../boss_lieutenant_drake.cpp | 62 +++++++++++-------- .../instance_old_hillsbrad.cpp | 15 ++--- 3 files changed, 84 insertions(+), 36 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1676740140245965800.sql diff --git a/data/sql/updates/pending_db_world/rev_1676740140245965800.sql b/data/sql/updates/pending_db_world/rev_1676740140245965800.sql new file mode 100644 index 000000000..5618fbe51 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676740140245965800.sql @@ -0,0 +1,43 @@ +-- +DELETE FROM `waypoints` WHERE `entry`=17848; + +DELETE FROM `waypoint_data` WHERE `id` IN (178480,178481); +INSERT INTO `waypoint_data` VALUES +(178480,1,2145.6123,124.77572,76.18501,NULL,0,1,0,100,0), +(178480,2,2146.5122,117.58604,76.04292,NULL,0,1,0,100,0), +(178480,3,2148.4314,101.62945,73.041336,NULL,0,1,0,100,0), +(178480,4,2151.864,88.83778,69.48506,NULL,0,1,0,100,0), +(178480,5,2149.0708,83.53852,69.1086,NULL,0,1,0,100,0), +(178480,6,2142.1206,79.21365,68.06233,NULL,0,1,0,100,0), +(178480,7,2132.0854,73.20009,64.77117,NULL,0,1,0,100,0), +(178480,8,2128.2366,71.17936,64.41205,NULL,1200,1,0,100,0), +(178480,9,2125.2478,89.376305,54.71777,NULL,0,1,0,100,0), +(178480,10,2119.832,93.372505,52.565914,NULL,0,1,0,100,0), +(178480,11,2113.8572,93.34234,52.590572,NULL,0,1,0,100,0), + +(178481,1,2113.8572,93.34234,52.590572,NULL,0,0,0,100,0), +(178481,2,2111.2415,103.42893,52.565914,NULL,0,0,0,100,0), +(178481,3,2109.1719,113.15994,52.90283,NULL,0,0,0,100,0), +(178481,4,2107.6462,126.1786,52.565914,NULL,0,0,0,100,0), +(178481,5,2107.979,138.13727,52.546013,NULL,0,0,0,100,0), +(178481,6,2112.6594,153.49968,52.56591,NULL,0,0,0,100,0), +(178481,7,2120.5117,168.8968,52.81591,NULL,0,0,0,100,0), +(178481,8,2124.643,175.81912,52.92492,NULL,0,0,0,100,0), +(178481,9,2128.9448,182.75977,53.179924,NULL,0,0,0,100,0), +(178481,10,2138.4214,195.35818,52.565907,NULL,0,0,0,100,0), +(178481,11,2147.3398,204.56651,52.92638,NULL,0,0,0,100,0), +(178481,12,2160.0496,214.06728,52.56542,NULL,0,0,0,100,0), +(178481,13,2172.4766,224.48166,52.56554,NULL,0,0,0,100,0), +(178481,14,2179.8486,230.77225,52.565907,NULL,0,0,0,100,0), +(178481,15,2172.4766,224.48166,52.56554,NULL,0,0,0,100,0), +(178481,16,2160.0496,214.06728,52.56542,NULL,0,0,0,100,0), +(178481,17,2147.3398,204.56651,52.92638,NULL,0,0,0,100,0), +(178481,18,2138.4214,195.35818,52.565907,NULL,0,0,0,100,0), +(178481,19,2128.9448,182.75977,53.179924,NULL,0,0,0,100,0), +(178481,20,2124.643,175.81912,52.92492,NULL,0,0,0,100,0), +(178481,21,2120.5117,168.8968,52.81591,NULL,0,0,0,100,0), +(178481,22,2112.6594,153.49968,52.56591,NULL,0,0,0,100,0), +(178481,23,2107.979,138.13727,52.546013,NULL,0,0,0,100,0), +(178481,24,2107.6462,126.1786,52.565914,NULL,0,0,0,100,0), +(178481,25,2109.1719,113.15994,52.90283,NULL,0,0,0,100,0), +(178481,26,2111.2415,103.42893,52.565914,NULL,0,0,0,100,0); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp index 5288c3cec..dc0d744be 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp @@ -57,36 +57,13 @@ public: { boss_lieutenant_drakeAI(Creature* creature) : ScriptedAI(creature) { - pathPoints.clear(); - WPPath* path = sSmartWaypointMgr->GetPath(me->GetEntry()); - if (!path || path->empty()) - return; - - pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ())); - - uint32 wpCounter = 1; - WPPath::const_iterator itr; - while ((itr = path->find(wpCounter++)) != path->end()) - { - WayPoint* wp = itr->second; - pathPoints.push_back(G3D::Vector3(wp->x, wp->y, wp->z)); - } } void InitializeAI() override { - ScriptedAI::InitializeAI(); - //Talk(SAY_ENTER); - JustReachedHome(); - } - - void JustReachedHome() override - { - me->SetWalk(true); - Movement::MoveSplineInit init(me); - init.MovebyPath(pathPoints); - init.SetCyclic(); - init.Launch(); + runSecondPath = false; + pathId = me->GetEntry() * 10; + me->GetMotionMaster()->MovePath(pathId, false); } void Reset() override @@ -118,8 +95,38 @@ public: instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_DRAKE_KILLED); } + void MovementInform(uint32 type, uint32 point) override + { + if (type != WAYPOINT_MOTION_TYPE) + { + return; + } + + if (pathId == me->GetEntry() * 10) + { + switch (point) + { + case 7: + Talk(SAY_ENTER); + break; + case 10: + pathId = (me->GetEntry() * 10) + 1; + runSecondPath = true; + break; + default: + break; + } + } + } + void UpdateAI(uint32 diff) override { + if (runSecondPath) + { + runSecondPath = false; + me->GetMotionMaster()->MovePath(pathId, true); + } + if (!UpdateVictim()) return; @@ -161,7 +168,8 @@ public: private: EventMap events; - Movement::PointsArray pathPoints; + uint32 pathId; + bool runSecondPath; }; }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp index d11b888a9..b0c0f0e53 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp @@ -21,11 +21,11 @@ #include "ScriptMgr.h" #include "old_hillsbrad.h" -const Position instancePositions[INSTANCE_POSITIONS_COUNT] = +static Position const instancePositions[INSTANCE_POSITIONS_COUNT] = { - {2188.18f, 228.90f, 53.025f, 1.77f}, // Orcs Gather Point 1 - {2103.23f, 93.55f, 53.096f, 3.78f}, // Orcs Gather Point 2 - {2128.43f, 71.01f, 64.42f, 1.74f} // Lieutenant Drake Summon Position + { 2188.18f, 228.90f, 53.025f, 1.77f }, // Orcs Gather Point 1 + { 2103.23f, 93.550f, 53.096f, 3.78f }, // Orcs Gather Point 2 + { 2172.76f, 149.54f, 87.981f, 4.19f } // Lieutenant Drake Summon Position }; const Position thrallPositions[THRALL_POSITIONS_COUNT] = @@ -248,11 +248,8 @@ public: case EVENT_SUMMON_LIEUTENANT: { instance->LoadGrid(instancePositions[2].GetPositionX(), instancePositions[2].GetPositionY()); - if (Creature* drake = instance->SummonCreature(NPC_LIEUTENANT_DRAKE, instancePositions[2])) - { - drake->AI()->Talk(0); - } - [[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked. + instance->SummonCreature(NPC_LIEUTENANT_DRAKE, instancePositions[2]); + break; } case EVENT_THRALL_REPOSITION: { From d7071e87029123a00a0d84fa5f71ba322e0c6dea Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sun, 19 Feb 2023 06:22:42 +0200 Subject: [PATCH 26/43] fix(DB/SAI): Increase range of Set Data for Fenrus the Devourer. (#15107) --- data/sql/updates/pending_db_world/rev_1676750377001449200.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676750377001449200.sql diff --git a/data/sql/updates/pending_db_world/rev_1676750377001449200.sql b/data/sql/updates/pending_db_world/rev_1676750377001449200.sql new file mode 100644 index 000000000..5d25f96de --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676750377001449200.sql @@ -0,0 +1,2 @@ +-- Fenrus the Devourer - Increase MaxDistance from 100 to 200 +UPDATE `smart_scripts` SET `target_param2` = 200 WHERE `entryorguid` = 4274 AND `target_param1` = 4275; From c5ea8a747899c9930d72b01773442877dd890c42 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Sat, 18 Feb 2023 21:23:02 -0700 Subject: [PATCH 27/43] fix(DB/Creature): Andormu should not sell ammunition (#15090) --- data/sql/updates/pending_db_world/rev_1676678339159333800.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676678339159333800.sql diff --git a/data/sql/updates/pending_db_world/rev_1676678339159333800.sql b/data/sql/updates/pending_db_world/rev_1676678339159333800.sql new file mode 100644 index 000000000..4f498beeb --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676678339159333800.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `npc_vendor` WHERE `entry` = 20130; +UPDATE `creature_template` SET `npcflag` = `npcflag`&~(128) WHERE `entry` = 20130; From 195c99124cd649cbe25086e1382dd7c2bf9398dd Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 04:25:26 +0000 Subject: [PATCH 28/43] chore(DB): import pending files Referenced commit(s): c5ea8a747899c9930d72b01773442877dd890c42 --- .../rev_1676678339159333800.sql => db_world/2023_02_19_02.sql} | 1 + .../rev_1676740140245965800.sql => db_world/2023_02_19_03.sql} | 1 + .../rev_1676740896495351500.sql => db_world/2023_02_19_04.sql} | 1 + .../rev_1676742228456978900.sql => db_world/2023_02_19_05.sql} | 1 + .../rev_1676750377001449200.sql => db_world/2023_02_19_06.sql} | 1 + 5 files changed, 5 insertions(+) rename data/sql/updates/{pending_db_world/rev_1676678339159333800.sql => db_world/2023_02_19_02.sql} (75%) rename data/sql/updates/{pending_db_world/rev_1676740140245965800.sql => db_world/2023_02_19_03.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1676740896495351500.sql => db_world/2023_02_19_04.sql} (86%) rename data/sql/updates/{pending_db_world/rev_1676742228456978900.sql => db_world/2023_02_19_05.sql} (82%) rename data/sql/updates/{pending_db_world/rev_1676750377001449200.sql => db_world/2023_02_19_06.sql} (79%) diff --git a/data/sql/updates/pending_db_world/rev_1676678339159333800.sql b/data/sql/updates/db_world/2023_02_19_02.sql similarity index 75% rename from data/sql/updates/pending_db_world/rev_1676678339159333800.sql rename to data/sql/updates/db_world/2023_02_19_02.sql index 4f498beeb..f6653fb98 100644 --- a/data/sql/updates/pending_db_world/rev_1676678339159333800.sql +++ b/data/sql/updates/db_world/2023_02_19_02.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_01 -> 2023_02_19_02 -- DELETE FROM `npc_vendor` WHERE `entry` = 20130; UPDATE `creature_template` SET `npcflag` = `npcflag`&~(128) WHERE `entry` = 20130; diff --git a/data/sql/updates/pending_db_world/rev_1676740140245965800.sql b/data/sql/updates/db_world/2023_02_19_03.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1676740140245965800.sql rename to data/sql/updates/db_world/2023_02_19_03.sql index 5618fbe51..afa19d40a 100644 --- a/data/sql/updates/pending_db_world/rev_1676740140245965800.sql +++ b/data/sql/updates/db_world/2023_02_19_03.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_02 -> 2023_02_19_03 -- DELETE FROM `waypoints` WHERE `entry`=17848; diff --git a/data/sql/updates/pending_db_world/rev_1676740896495351500.sql b/data/sql/updates/db_world/2023_02_19_04.sql similarity index 86% rename from data/sql/updates/pending_db_world/rev_1676740896495351500.sql rename to data/sql/updates/db_world/2023_02_19_04.sql index 19a2829f0..fec6b2a57 100644 --- a/data/sql/updates/pending_db_world/rev_1676740896495351500.sql +++ b/data/sql/updates/db_world/2023_02_19_04.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_03 -> 2023_02_19_04 -- UPDATE `creature_onkill_reputation` SET `MaxStanding1`=4 WHERE `creature_id` IN (18394,18429); DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (20262,20252); diff --git a/data/sql/updates/pending_db_world/rev_1676742228456978900.sql b/data/sql/updates/db_world/2023_02_19_05.sql similarity index 82% rename from data/sql/updates/pending_db_world/rev_1676742228456978900.sql rename to data/sql/updates/db_world/2023_02_19_05.sql index c01ad3664..c4f57c7fa 100644 --- a/data/sql/updates/pending_db_world/rev_1676742228456978900.sql +++ b/data/sql/updates/db_world/2023_02_19_05.sql @@ -1,2 +1,3 @@ +-- DB update 2023_02_19_04 -> 2023_02_19_05 -- UPDATE `smart_scripts` SET `event_type`=0, `event_param1`=2000, `event_param2`=6000, `event_param3`=12000, `target_type`=5, `target_param1`=25 WHERE `entryorguid`=18311 AND `source_type`=0 AND `id`=4; diff --git a/data/sql/updates/pending_db_world/rev_1676750377001449200.sql b/data/sql/updates/db_world/2023_02_19_06.sql similarity index 79% rename from data/sql/updates/pending_db_world/rev_1676750377001449200.sql rename to data/sql/updates/db_world/2023_02_19_06.sql index 5d25f96de..aecbaca83 100644 --- a/data/sql/updates/pending_db_world/rev_1676750377001449200.sql +++ b/data/sql/updates/db_world/2023_02_19_06.sql @@ -1,2 +1,3 @@ +-- DB update 2023_02_19_05 -> 2023_02_19_06 -- Fenrus the Devourer - Increase MaxDistance from 100 to 200 UPDATE `smart_scripts` SET `target_param2` = 200 WHERE `entryorguid` = 4274 AND `target_param1` = 4275; From 6e7aec3b958d91b7ecd135e700530c8437acb3d5 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 19 Feb 2023 05:48:12 +0100 Subject: [PATCH 29/43] fix(Scripts/BlackMorass): Improved Opening the Dark portal encounter. (#14861) --- .../instance_the_black_morass.cpp | 156 +++++++++++++++--- .../TheBlackMorass/the_black_morass.cpp | 2 +- .../TheBlackMorass/the_black_morass.h | 11 +- 3 files changed, 138 insertions(+), 31 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index a1539a192..aa80861ad 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -23,7 +23,8 @@ #include "TemporarySummon.h" #include "the_black_morass.h" -const Position PortalLocation[4] = +#define MAX_PORTAL_LOCATIONS 4 +const Position PortalLocation[MAX_PORTAL_LOCATIONS] = { { -2030.8318f, 7024.9443f, 23.071817f, 3.14159f }, { -1961.7335f, 7029.5280f, 21.811401f, 2.12931f }, @@ -58,6 +59,7 @@ public: _currentRift = 0; _shieldPercent = 100; encounterNPCs.clear(); + _timerToNextBoss = 0; } void CleanupInstance() @@ -66,6 +68,8 @@ public: _currentRift = 0; _shieldPercent = 100; + _usedRiftPostions.fill(ObjectGuid::Empty); + instance->LoadGrid(-2023.0f, 7121.0f); if (Creature* medivh = instance->GetCreature(_medivhGUID)) { @@ -183,21 +187,48 @@ public: } case TYPE_CHRONO_LORD_DEJA: case TYPE_TEMPORUS: + { + GuidSet eCopy = encounterNPCs; + for (ObjectGuid const& guid : eCopy) + { + if (Creature* creature = instance->GetCreature(guid)) + { + switch (creature->GetEntry()) + { + case NPC_RIFT_KEEPER_WARLOCK: + case NPC_RIFT_KEEPER_MAGE: + case NPC_RIFT_LORD: + case NPC_RIFT_LORD_2: + case NPC_TIME_RIFT: + creature->DespawnOrUnsummon(); + break; + default: + break; + } + } + } encounters[type] = DONE; - Events.RescheduleEvent(EVENT_NEXT_PORTAL, 60000); + + if (!_timerToNextBoss || _timerToNextBoss > 30 * IN_MILLISECONDS) + { + Events.RescheduleEvent(EVENT_NEXT_PORTAL, 30 * IN_MILLISECONDS); + } + else + { + Events.RescheduleEvent(EVENT_NEXT_PORTAL, _timerToNextBoss); + } Events.SetPhase(1); SaveToDB(); + _timerToNextBoss = (instance->IsHeroic() ? 300 : 150) * IN_MILLISECONDS; break; - case DATA_RIFT_KILLED: - if (!Events.IsInPhase(1)) - Events.RescheduleEvent(EVENT_NEXT_PORTAL, 4000); - break; + } case DATA_MEDIVH: { DoUpdateWorldState(WORLD_STATE_BM, 1); DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent); DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift); Events.RescheduleEvent(EVENT_NEXT_PORTAL, 3000); + _timerToNextBoss = (instance->IsHeroic() ? 300 : 150) * IN_MILLISECONDS; for (ObjectGuid const& guid : encounterNPCs) { @@ -285,6 +316,34 @@ public: encounterNPCs.insert(data); else if (type == DATA_DELETED_NPC) encounterNPCs.erase(data); + else if (type == DATA_RIFT_KILLED) + { + if (!Events.IsInPhase(1)) + { + uint8 emptySpots = 0; + for (uint8 i = 0; i < MAX_PORTAL_LOCATIONS; ++i) + { + if (!_usedRiftPostions[i]) + { + ++emptySpots; + } + + if (_usedRiftPostions[i] == data) + { + _usedRiftPostions[i].Clear(); + } + } + + if (emptySpots >= MAX_PORTAL_LOCATIONS - 1) + { + Events.RescheduleEvent(EVENT_NEXT_PORTAL, 4000); + } + else if (!emptySpots) + { + Events.RescheduleEvent(EVENT_NEXT_PORTAL, (_currentRift >= 13 ? 120 : 90) * IN_MILLISECONDS); + } + } + } } ObjectGuid GetGuidData(uint32 data) const override @@ -295,17 +354,11 @@ public: return ObjectGuid::Empty; } - void SummonPortalKeeper() + void SummonPortalKeeper(uint32 eventId) { - Creature* rift = nullptr; - for (ObjectGuid const& guid : encounterNPCs) - if (Creature* summon = instance->GetCreature(guid)) - if (summon->GetEntry() == NPC_TIME_RIFT) - { - rift = summon; - break; - } - + uint8 riftPosition = eventId - EVENT_SUMMON_KEEPER_1; + ObjectGuid const& riftGUID = _usedRiftPostions[riftPosition]; + Creature* rift = instance->GetCreature(riftGUID); if (!rift) return; @@ -348,23 +401,72 @@ public: void Update(uint32 diff) override { + if (_timerToNextBoss) + { + if (_timerToNextBoss <= diff) + { + _timerToNextBoss = 0; + } + else + { + _timerToNextBoss -= diff; + } + } + Events.Update(diff); - switch (Events.ExecuteEvent()) + + uint32 eventId = Events.ExecuteEvent(); + switch (eventId) { case EVENT_NEXT_PORTAL: - ++_currentRift; - DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift); - Events.ScheduleEvent(EVENT_SUMMON_KEEPER, 6000); - Events.SetPhase(0); - + { if (instance->GetCreature(_medivhGUID)) { - uint8 position = (_currentRift - 1) % 4; - instance->SummonCreature(NPC_TIME_RIFT, PortalLocation[position]); + uint8 position = MAX_PORTAL_LOCATIONS; + + std::vector possibleSpots; + for (uint8 i = 0; i < MAX_PORTAL_LOCATIONS; ++i) + { + if (!_usedRiftPostions[i]) + { + possibleSpots.push_back(i); + } + } + + if (!possibleSpots.empty()) + { + position = Acore::Containers::SelectRandomContainerElement(possibleSpots); + } + + if (position < MAX_PORTAL_LOCATIONS) + { + ++_currentRift; + DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift); + Events.ScheduleEvent(EVENT_SUMMON_KEEPER_1 + position, 6000); + Events.SetPhase(0); + + if (Creature* rift = instance->SummonCreature(NPC_TIME_RIFT, PortalLocation[position])) + { + _usedRiftPostions[position] = rift->GetGUID(); + + for (uint8 i = 0; i < MAX_PORTAL_LOCATIONS; ++i) + { + if (!_usedRiftPostions[i]) + { + Events.RescheduleEvent(EVENT_NEXT_PORTAL, (_currentRift >= 13 ? 120 : 90) * IN_MILLISECONDS); + break; + } + } + } + } } break; - case EVENT_SUMMON_KEEPER: - SummonPortalKeeper(); + } + case EVENT_SUMMON_KEEPER_1: + case EVENT_SUMMON_KEEPER_2: + case EVENT_SUMMON_KEEPER_3: + case EVENT_SUMMON_KEEPER_4: + SummonPortalKeeper(eventId); break; case EVENT_WIPE_1: if (Creature* medivh = instance->GetCreature(_medivhGUID)) @@ -433,6 +535,8 @@ public: protected: EventMap Events; + std::array _usedRiftPostions; + uint32 _timerToNextBoss; }; }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index cb4abba8f..873411b44 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -326,7 +326,7 @@ struct npc_time_rift : public NullCreatureAI Creature* riftKeeper = ObjectAccessor::GetCreature(*me, _riftKeeperGUID); if (!riftKeeper || !riftKeeper->IsAlive()) { - _instance->SetData(DATA_RIFT_KILLED, 1); + _instance->SetGuidData(DATA_RIFT_KILLED, me->GetGUID()); me->DespawnOrUnsummon(0); break; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h index 1d5325122..6d895c210 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h @@ -90,10 +90,13 @@ enum Misc SPELL_TELEPORT_VISUAL = 7791, EVENT_NEXT_PORTAL = 1, - EVENT_SUMMON_KEEPER = 2, - EVENT_WIPE_1 = 3, - EVENT_WIPE_2 = 4, - EVENT_WIPE_3 = 5, + EVENT_SUMMON_KEEPER_1 = 2, + EVENT_SUMMON_KEEPER_2 = 3, + EVENT_SUMMON_KEEPER_3 = 4, + EVENT_SUMMON_KEEPER_4 = 5, + EVENT_WIPE_1 = 6, + EVENT_WIPE_2 = 7, + EVENT_WIPE_3 = 8, ACTION_OUTRO = 1 }; From cefbf94448c34c19f3334867453ff9f047fcffff Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 19 Feb 2023 02:54:11 -0300 Subject: [PATCH 30/43] fix(DB/Quest): The Stone Watcher (#15102) --- .../pending_db_world/rev_1676741293045096600.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676741293045096600.sql diff --git a/data/sql/updates/pending_db_world/rev_1676741293045096600.sql b/data/sql/updates/pending_db_world/rev_1676741293045096600.sql new file mode 100644 index 000000000..a968a9461 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676741293045096600.sql @@ -0,0 +1,16 @@ +-- +DELETE FROM `gameobject_queststarter` WHERE (`quest` = 2954) AND (`id` IN (142343)); +INSERT INTO `gameobject_queststarter` (`id`, `quest`) VALUES +(142343, 2954); + +DELETE FROM `creature_queststarter` WHERE `quest` = 2954; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 142343) AND (`source_type` = 1) AND (`id` IN (2)); +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 +(142343, 1, 2, 0, 19, 0, 100, 0, 2954, 0, 0, 0, 0, 80, 14234300, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Uldum Pedestal - On Quest \'The Stone Watcher\' Taken - Run Script'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceEntry` = 142343); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 142343, 1, 0, 29, 1, 7918, 10, 0, 1, 0, 0, '', 'Only summon Stone Watcher of Norgannon if there isn\'t one already spawned'), +(22, 2, 142343, 1, 0, 29, 1, 7918, 10, 0, 1, 0, 0, '', 'Only summon Stone Watcher of Norgannon if there isn\'t one already spawned'), +(22, 3, 142343, 1, 0, 29, 1, 7918, 10, 0, 1, 0, 0, '', 'Only summon Stone Watcher of Norgannon if there isn\'t one already spawned'); From 62447a2a8efaa4eba43a40a692f5df21fd8c5520 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 19 Feb 2023 02:56:34 -0300 Subject: [PATCH 31/43] fix(DB/Creature): Port Zangarmarsh rares from Mangos (#15091) --- .../rev_1676672751811724500.sql | 246 ++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676672751811724500.sql diff --git a/data/sql/updates/pending_db_world/rev_1676672751811724500.sql b/data/sql/updates/pending_db_world/rev_1676672751811724500.sql new file mode 100644 index 000000000..7b0b9a548 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676672751811724500.sql @@ -0,0 +1,246 @@ +-- Marticar (18680) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18680); +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 +(18680, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 32039, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marticar - On Aggro - Cast \'Magnetic Pull\''), +(18680, 0, 1, 0, 9, 0, 100, 0, 0, 8, 12000, 16000, 0, 11, 35493, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marticar - Within 0-8 Range - Cast \'Forked Lightning Tether\''), +(18680, 0, 2, 0, 9, 0, 100, 0, 10, 40, 12000, 16000, 0, 11, 32039, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Marticar - Within 10-40 Range - Cast \'Magnetic Pull\''); + +-- Coilfang Emissary (18681) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18681); +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 +(18681, 0, 0, 0, 9, 0, 100, 0, 0, 10, 8000, 15000, 0, 11, 33860, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - Within 0-10 Range - Cast \'Arcane Explosion\''), +(18681, 0, 1, 0, 0, 0, 100, 0, 6000, 10000, 14000, 21000, 0, 11, 39207, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - In Combat - Cast \'Water Spout\''), +(18681, 0, 2, 0, 9, 0, 100, 0, 0, 10, 12000, 16000, 0, 11, 11831, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - Within 0-10 Range - Cast \'Frost Nova\''), +(18681, 0, 3, 0, 9, 0, 100, 0, 0, 40, 3400, 4800, 0, 11, 20297, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - Within 0-40 Range - Cast \'Frostbolt\''); + +-- Bog Lurker (18682) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18682); +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 +(18682, 0, 0, 0, 9, 0, 100, 0, 0, 5, 12000, 16000, 0, 11, 35238, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Bog Lurker - Within 0-5 Range - Cast \'War Stomp\''), +(18682, 0, 1, 0, 2, 0, 100, 0, 0, 50, 22000, 26000, 0, 11, 34163, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bog Lurker - Between 0-50% Health - Cast \'Fungal Regrowth\''); + +SET @CGUID := 25101; + +DELETE FROM `creature` WHERE `id1` IN (18680, 18681, 18682); +INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`, `wander_distance`) VALUES +-- Marticar +(@CGUID+0, 18680, 530, 0, 909.798, 6974.82, 20.7275, 4.35157, 82800, 2, 0), +(@CGUID+1, 18680, 530, 0, 641.629, 5601.53, 21.7289, 1.20404, 104400, 2, 0), +(@CGUID+2, 18680, 530, 0, -35.4279, 8945.68, 18.9934, 0.34089, 122400, 2, 0), +-- Coilfang Emissary +(@CGUID+3, 18681, 530, 1, 356.366, 8154.59, 23.4664, 5.86458, 79200, 1, 20), +(@CGUID+4, 18681, 530, 1, 658.75, 6322.29, 20.6887, 2.45849, 93600, 1, 20), +(@CGUID+5, 18681, 530, 1, -246.269, 6272.19, 21.7947, 4.60655, 100800, 1, 20), +(@CGUID+6, 18681, 530, 1, -706.367, 5922.93, 21.7108, 2.34853, 115200, 1, 20), +-- Bog Lurker +(@CGUID+7, 18682, 530, 0, -294.88, 6951.41, 19.3571, 5.86619, 10506, 2, 0), +(@CGUID+8, 18682, 530, 0, -1023.69, 5095.25, 17.3841, 6.16307, 10506, 2, 0), +(@CGUID+9, 18682, 530, 0, 1172.09, 8023.15, 17.7483, 0.670779, 10506, 2, 0); + +DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+7,@CGUID+8,@CGUID+9)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+0, (@CGUID+0)*10, 0, 0, 0, 0, 0, ''), +(@CGUID+1, (@CGUID+1)*10, 0, 0, 0, 0, 0, ''), +(@CGUID+2, (@CGUID+2)*10, 0, 0, 0, 0, 0, ''), +(@CGUID+7, (@CGUID+7)*10, 0, 0, 0, 0, 0, ''), +(@CGUID+8, (@CGUID+8)*10, 0, 0, 0, 0, 0, ''), +(@CGUID+9, (@CGUID+9)*10, 0, 0, 0, 0, 0, ''); + +DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+7)*10,(@CGUID+8)*10,(@CGUID+9)*10); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +((@CGUID+0)*10, 1, 909.798, 6974.82, 20.6049), +((@CGUID+0)*10, 2, 925.955, 6984.85, 17.5734), +((@CGUID+0)*10, 3, 942.871, 7042.5, 17.8393), +((@CGUID+0)*10, 4, 934.748, 7083.6, 17.8208), +((@CGUID+0)*10, 5, 909.849, 7105.03, 19.3418), +((@CGUID+0)*10, 6, 882.136, 7096.42, 17.9662), +((@CGUID+0)*10, 7, 817.75, 7147.84, 17.446), +((@CGUID+0)*10, 8, 805.416, 7221.27, 17.3745), +((@CGUID+0)*10, 9, 770.959, 7293.45, 17.4865), +((@CGUID+0)*10, 10, 833.662, 7369.67, 17.6963), +((@CGUID+0)*10, 11, 811.041, 7439.55, 17.6798), +((@CGUID+0)*10, 12, 822.635, 7511.4, 17.7967), +((@CGUID+0)*10, 13, 777.672, 7550.08, 17.6132), +((@CGUID+0)*10, 14, 663.722, 7553.98, 17.3779), +((@CGUID+0)*10, 15, 606.491, 7575.89, 17.434), +((@CGUID+0)*10, 16, 663.722, 7553.98, 17.3779), +((@CGUID+0)*10, 17, 777.672, 7550.08, 17.6132), +((@CGUID+0)*10, 18, 822.635, 7511.4, 17.7967), +((@CGUID+0)*10, 19, 811.041, 7439.55, 17.6798), +((@CGUID+0)*10, 20, 833.662, 7369.67, 17.6963), +((@CGUID+0)*10, 21, 770.959, 7293.45, 17.4865), +((@CGUID+0)*10, 22, 805.416, 7221.27, 17.3745), +((@CGUID+0)*10, 23, 817.75, 7147.84, 17.446), +((@CGUID+0)*10, 24, 882.136, 7096.42, 17.9662), +((@CGUID+0)*10, 25, 909.849, 7105.03, 19.3418), +((@CGUID+0)*10, 26, 934.748, 7083.6, 17.8208), +((@CGUID+0)*10, 27, 942.871, 7042.5, 17.8393), +((@CGUID+0)*10, 28, 925.955, 6984.85, 17.5734), +((@CGUID+1)*10, 1, 641.629, 5601.53, 21.7289), +((@CGUID+1)*10, 2, 681.779, 5664.12, 23.5277), +((@CGUID+1)*10, 3, 719.717, 5699.03, 21.9689), +((@CGUID+1)*10, 4, 718.233, 5734.3, 17.5044), +((@CGUID+1)*10, 5, 724.722, 5783.54, 17.7705), +((@CGUID+1)*10, 6, 745.975, 5811.38, 17.2784), +((@CGUID+1)*10, 7, 739.645, 5898.54, 17.3483), +((@CGUID+1)*10, 8, 700.262, 5944.62, 17.5259), +((@CGUID+1)*10, 9, 653.386, 5949.96, 17.3741), +((@CGUID+1)*10, 10, 616.609, 5975.77, 17.3742), +((@CGUID+1)*10, 11, 594.179, 5962.99, 17.3778), +((@CGUID+1)*10, 12, 583.11, 5926.56, 17.4075), +((@CGUID+1)*10, 13, 552.184, 5898.35, 17.3766), +((@CGUID+1)*10, 14, 528.946, 5873.05, 22.473), +((@CGUID+1)*10, 15, 507.433, 5839.19, 21.8951), +((@CGUID+1)*10, 16, 496.027, 5819.39, 17.3948), +((@CGUID+1)*10, 17, 449.619, 5753.03, 17.3779), +((@CGUID+1)*10, 18, 429.245, 5718.28, 17.3731), +((@CGUID+1)*10, 19, 386.39, 5727.86, 17.3775), +((@CGUID+1)*10, 20, 334.89, 5652.7, 17.3743), +((@CGUID+1)*10, 21, 235.352, 5652.17, 17.3747), +((@CGUID+1)*10, 22, 191.524, 5600.89, 17.3743), +((@CGUID+1)*10, 23, 155.669, 5576.97, 17.3743), +((@CGUID+1)*10, 24, 115.796, 5504.53, 17.6996), +((@CGUID+1)*10, 25, 155.669, 5576.97, 17.3743), +((@CGUID+1)*10, 26, 191.524, 5600.89, 17.3743), +((@CGUID+1)*10, 27, 235.352, 5652.17, 17.3747), +((@CGUID+1)*10, 28, 334.89, 5652.7, 17.3743), +((@CGUID+1)*10, 29, 386.39, 5727.86, 17.3775), +((@CGUID+1)*10, 30, 429.245, 5718.28, 17.3731), +((@CGUID+1)*10, 31, 449.619, 5753.03, 17.3779), +((@CGUID+1)*10, 32, 496.027, 5819.39, 17.3948), +((@CGUID+1)*10, 33, 507.433, 5839.19, 21.8951), +((@CGUID+1)*10, 34, 528.946, 5873.05, 22.473), +((@CGUID+1)*10, 35, 552.184, 5898.35, 17.3766), +((@CGUID+1)*10, 36, 583.11, 5926.56, 17.4075), +((@CGUID+1)*10, 37, 594.179, 5962.99, 17.3778), +((@CGUID+1)*10, 38, 616.609, 5975.77, 17.3742), +((@CGUID+1)*10, 39, 653.386, 5949.96, 17.3741), +((@CGUID+1)*10, 40, 700.262, 5944.62, 17.5259), +((@CGUID+1)*10, 41, 739.645, 5898.54, 17.3483), +((@CGUID+1)*10, 42, 745.975, 5811.38, 17.2784), +((@CGUID+1)*10, 43, 724.722, 5783.54, 17.7705), +((@CGUID+1)*10, 44, 718.233, 5734.3, 17.5044), +((@CGUID+1)*10, 45, 719.717, 5699.03, 21.9689), +((@CGUID+1)*10, 46, 681.779, 5664.12, 23.5277), +((@CGUID+2)*10, 1, -35.4279, 8945.68, 18.9934), +((@CGUID+2)*10, 2, 17.7719, 8948.13, 20.111), +((@CGUID+2)*10, 3, 61.182, 8973.75, 24.6196), +((@CGUID+2)*10, 4, 91.2396, 8982.79, 25.6668), +((@CGUID+2)*10, 5, 106.845, 8982.03, 21.4199), +((@CGUID+2)*10, 6, 201.82, 8958.88, 17.6188), +((@CGUID+2)*10, 7, 222.732, 8932.57, 19.2304), +((@CGUID+2)*10, 8, 241.119, 8925.89, 24.0813), +((@CGUID+2)*10, 9, 278.243, 8917.19, 26.3384), +((@CGUID+2)*10, 10, 312.837, 8915.34, 28.0207), +((@CGUID+2)*10, 11, 330.796, 8887.92, 18.6883), +((@CGUID+2)*10, 12, 345.415, 8860.49, 19.3178), +((@CGUID+2)*10, 13, 395.666, 8822.86, 18.57), +((@CGUID+2)*10, 14, 381.241, 8782.36, 19.5365), +((@CGUID+2)*10, 15, 400.399, 8721.9, 19.935), +((@CGUID+2)*10, 16, 394.703, 8695.2, 22.0397), +((@CGUID+2)*10, 17, 450.314, 8638.34, 20.7326), +((@CGUID+2)*10, 18, 493.008, 8666.39, 19.728), +((@CGUID+2)*10, 19, 502.636, 8691.85, 22.1677), +((@CGUID+2)*10, 20, 555.124, 8676.63, 20.9415), +((@CGUID+2)*10, 21, 648.747, 8661.43, 18.4553), +((@CGUID+2)*10, 22, 674.204, 8656.4, 21.7503), +((@CGUID+2)*10, 23, 714.707, 8638.13, 18.9595), +((@CGUID+2)*10, 24, 760.368, 8597.12, 17.3747), +((@CGUID+2)*10, 25, 902.179, 8556.58, 17.3745), +((@CGUID+2)*10, 26, 760.368, 8597.12, 17.3747), +((@CGUID+2)*10, 27, 714.707, 8638.13, 18.9595), +((@CGUID+2)*10, 28, 674.204, 8656.4, 21.7503), +((@CGUID+2)*10, 29, 648.747, 8661.43, 18.4553), +((@CGUID+2)*10, 30, 555.124, 8676.63, 20.9415), +((@CGUID+2)*10, 31, 502.636, 8691.85, 22.1677), +((@CGUID+2)*10, 32, 493.008, 8666.39, 19.728), +((@CGUID+2)*10, 33, 450.314, 8638.34, 20.7326), +((@CGUID+2)*10, 34, 394.703, 8695.2, 22.0397), +((@CGUID+2)*10, 35, 400.399, 8721.9, 19.935), +((@CGUID+2)*10, 36, 381.241, 8782.36, 19.5365), +((@CGUID+2)*10, 37, 395.666, 8822.86, 18.57), +((@CGUID+2)*10, 38, 345.415, 8860.49, 19.3178), +((@CGUID+2)*10, 39, 330.796, 8887.92, 18.6883), +((@CGUID+2)*10, 40, 312.837, 8915.34, 28.0207), +((@CGUID+2)*10, 41, 278.243, 8917.19, 26.3384), +((@CGUID+2)*10, 42, 241.119, 8925.89, 24.0813), +((@CGUID+2)*10, 43, 222.732, 8932.57, 19.2304), +((@CGUID+2)*10, 44, 201.82, 8958.88, 17.6188), +((@CGUID+2)*10, 45, 106.845, 8982.03, 21.4199), +((@CGUID+2)*10, 46, 91.2396, 8982.79, 25.6668), +((@CGUID+2)*10, 47, 61.182, 8973.75, 24.6196), +((@CGUID+2)*10, 48, 17.7719, 8948.13, 20.111), + +((@CGUID+7)*10, 1, -294.88, 6951.41, 19.3571), +((@CGUID+7)*10, 2, -264.713, 6967.21, 18.5643), +((@CGUID+7)*10, 3, -238.936, 6962.83, 18.4649), +((@CGUID+7)*10, 4, -223.667, 6933.64, 18.847), +((@CGUID+7)*10, 5, -206.707, 6923.1, 19.2127), +((@CGUID+7)*10, 6, -174.357, 6912.01, 23.7861), +((@CGUID+7)*10, 7, -133.379, 6904.8, 19.1708), +((@CGUID+7)*10, 8, -89.2117, 6888.52, 18.7763), +((@CGUID+7)*10, 9, -10.2975, 6909.53, 18.2978), +((@CGUID+7)*10, 10, -18.0022, 6939.27, 21.741), +((@CGUID+7)*10, 11, -25.1892, 6997.55, 20.889), +((@CGUID+7)*10, 12, -24.8436, 7035.61, 17.8247), +((@CGUID+7)*10, 13, 6.85314, 7099.44, 17.3786), +((@CGUID+7)*10, 14, 25.5966, 7264.21, 17.4588), +((@CGUID+7)*10, 15, 12.2616, 7293.45, 17.3838), +((@CGUID+7)*10, 16, -41.0481, 7273.87, 17.9097), +((@CGUID+7)*10, 17, -85.6322, 7318.57, 17.6278), +((@CGUID+7)*10, 18, -89.8231, 7394.33, 17.6309), +((@CGUID+7)*10, 19, -163.533, 7388.21, 17.2929), +((@CGUID+7)*10, 20, -188.143, 7374.22, 17.5246), +((@CGUID+7)*10, 21, -209.081, 7387.84, 19.2417), +((@CGUID+7)*10, 22, -223.03, 7406.85, 17.6799), +((@CGUID+7)*10, 23, -316.638, 7413.45, 17.396), +((@CGUID+8)*10, 1, -1023.69, 5095.25, 17.3839), +((@CGUID+8)*10, 2, -931.962, 5086.47, 17.7585), +((@CGUID+8)*10, 3, -814.518, 5125.51, 17.8079), +((@CGUID+8)*10, 4, -777.376, 5149.43, 17.8128), +((@CGUID+8)*10, 5, -680.908, 5288.44, 17.7527), +((@CGUID+8)*10, 6, -689.065, 5349.76, 17.9837), +((@CGUID+9)*10, 1, 1172.09, 8023.15, 17.7483), +((@CGUID+9)*10, 2, 1205.67, 8081.13, 18.0472), +((@CGUID+9)*10, 3, 1246.97, 8119.73, 18.0185), +((@CGUID+9)*10, 4, 1244.49, 8164.48, 19.4185), +((@CGUID+9)*10, 5, 1223.65, 8202.27, 17.7094), +((@CGUID+9)*10, 6, 1221.96, 8226.97, 17.6808), +((@CGUID+9)*10, 7, 1197.53, 8287.43, 18.2173), +((@CGUID+9)*10, 8, 1216.92, 8311.79, 18.6032), +((@CGUID+9)*10, 9, 1196.57, 8343.54, 17.3991), +((@CGUID+9)*10, 10, 1088.8, 8342.08, 17.3746), +((@CGUID+9)*10, 11, 1045.06, 8342.71, 21.9398), +((@CGUID+9)*10, 12, 1011.94, 8349.03, 19.6497), +((@CGUID+9)*10, 13, 930.204, 8321.25, 17.427), +((@CGUID+9)*10, 14, 906.417, 8281.23, 18.9275), +((@CGUID+9)*10, 15, 908.587, 8226.88, 18.308), +((@CGUID+9)*10, 16, 942.57, 8148.69, 17.3847), +((@CGUID+9)*10, 17, 1006.13, 8155.76, 17.3811), +((@CGUID+9)*10, 18, 1059.14, 8110.92, 17.4296), +((@CGUID+9)*10, 19, 1108.14, 8112.69, 17.3877), +((@CGUID+9)*10, 20, 1140.55, 8059.55, 17.6974), +((@CGUID+9)*10, 21, 1151.68, 8029.68, 17.6969); + +DELETE FROM `pool_template` WHERE `entry`=1118 AND `description`='Marticar (18680)'; +DELETE FROM `pool_template` WHERE `entry`=1119 AND `description`='Coilfang Emissary (18681)'; +DELETE FROM `pool_template` WHERE `entry`=1120 AND `description`='Bog Lurker (18682)'; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(1118, 1, 'Marticar (18680)'), +(1119, 1, 'Coilfang Emissary (18681)'), +(1120, 1, 'Bog Lurker (18682)'); + +DELETE FROM `pool_creature` WHERE `pool_entry`=1118 AND `description`='Marticar (18680)'; +DELETE FROM `pool_creature` WHERE `pool_entry`=1119 AND `description`='Coilfang Emissary (18681)'; +DELETE FROM `pool_creature` WHERE `pool_entry`=1120 AND `description`='Bog Lurker (18682)'; +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@CGUID+0, 1118, 0, 'Marticar (18680)'), +(@CGUID+1, 1118, 0, 'Marticar (18680)'), +(@CGUID+2, 1118, 0, 'Marticar (18680)'), +(@CGUID+3, 1119, 0, 'Coilfang Emissary (18681)'), +(@CGUID+4, 1119, 0, 'Coilfang Emissary (18681)'), +(@CGUID+5, 1119, 0, 'Coilfang Emissary (18681)'), +(@CGUID+6, 1119, 0, 'Coilfang Emissary (18681)'), +(@CGUID+7, 1120, 0, 'Bog Lurker (18682)'), +(@CGUID+8, 1120, 0, 'Bog Lurker (18682)'), +(@CGUID+9, 1120, 0, 'Bog Lurker (18682)'); From 5b602508808a134e5df6051af7774952df00a7d0 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 05:59:10 +0000 Subject: [PATCH 32/43] chore(DB): import pending files Referenced commit(s): 62447a2a8efaa4eba43a40a692f5df21fd8c5520 --- .../rev_1676672751811724500.sql => db_world/2023_02_19_07.sql} | 1 + .../rev_1676741293045096600.sql => db_world/2023_02_19_08.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1676672751811724500.sql => db_world/2023_02_19_07.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1676741293045096600.sql => db_world/2023_02_19_08.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1676672751811724500.sql b/data/sql/updates/db_world/2023_02_19_07.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1676672751811724500.sql rename to data/sql/updates/db_world/2023_02_19_07.sql index 7b0b9a548..d3c656248 100644 --- a/data/sql/updates/pending_db_world/rev_1676672751811724500.sql +++ b/data/sql/updates/db_world/2023_02_19_07.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_06 -> 2023_02_19_07 -- Marticar (18680) DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18680); 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 diff --git a/data/sql/updates/pending_db_world/rev_1676741293045096600.sql b/data/sql/updates/db_world/2023_02_19_08.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1676741293045096600.sql rename to data/sql/updates/db_world/2023_02_19_08.sql index a968a9461..39ffed3b9 100644 --- a/data/sql/updates/pending_db_world/rev_1676741293045096600.sql +++ b/data/sql/updates/db_world/2023_02_19_08.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_07 -> 2023_02_19_08 -- DELETE FROM `gameobject_queststarter` WHERE (`quest` = 2954) AND (`id` IN (142343)); INSERT INTO `gameobject_queststarter` (`id`, `quest`) VALUES From e9937e3b7c25b91cccf784245e847a8c254f8ab1 Mon Sep 17 00:00:00 2001 From: Tereneckla <50233983+Tereneckla@users.noreply.github.com> Date: Sun, 19 Feb 2023 11:50:43 +0000 Subject: [PATCH 33/43] fix(DB/Loot) Droprate of Doctor's Key from Doctor Gutrick (#15106) Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- data/sql/updates/pending_db_world/rev_1676755297977733200.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676755297977733200.sql diff --git a/data/sql/updates/pending_db_world/rev_1676755297977733200.sql b/data/sql/updates/pending_db_world/rev_1676755297977733200.sql new file mode 100644 index 000000000..6c1eb368d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676755297977733200.sql @@ -0,0 +1 @@ +UPDATE `creature_loot_template` SET `Chance` = 100 WHERE (`Entry` = 21778) AND (`Item` = 30712); From 9d717aaa9f633988bb8c26c45c2a8e6c6f885b32 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 11:53:07 +0000 Subject: [PATCH 34/43] chore(DB): import pending files Referenced commit(s): e9937e3b7c25b91cccf784245e847a8c254f8ab1 --- .../rev_1676755297977733200.sql => db_world/2023_02_19_09.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676755297977733200.sql => db_world/2023_02_19_09.sql} (68%) diff --git a/data/sql/updates/pending_db_world/rev_1676755297977733200.sql b/data/sql/updates/db_world/2023_02_19_09.sql similarity index 68% rename from data/sql/updates/pending_db_world/rev_1676755297977733200.sql rename to data/sql/updates/db_world/2023_02_19_09.sql index 6c1eb368d..ca7893a33 100644 --- a/data/sql/updates/pending_db_world/rev_1676755297977733200.sql +++ b/data/sql/updates/db_world/2023_02_19_09.sql @@ -1 +1,2 @@ +-- DB update 2023_02_19_08 -> 2023_02_19_09 UPDATE `creature_loot_template` SET `Chance` = 100 WHERE (`Entry` = 21778) AND (`Item` = 30712); From abedfe245f176fd421a91301d97ba89a73251ab6 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 19 Feb 2023 13:33:46 +0100 Subject: [PATCH 35/43] fix(Core/PacketIO): Remove wrong QueuePacket() (#15124) --- src/server/game/Server/WorldSession.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 4381e2e03..0fd338f40 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -332,11 +332,10 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) //! the client to be in world yet. We will re-add the packets to the bottom of the queue and process them later. if (!m_playerRecentlyLogout) { - requeuePackets.push_back(packet); + // requeuePackets.push_back(packet); deletePacket = false; - QueuePacket(packet); - LOG_DEBUG("network", "Re-enqueueing packet with opcode %s with with status STATUS_LOGGEDIN. " + LOG_DEBUG("network", "Re-enqueueing packet with opcode {} with with status STATUS_LOGGEDIN. " "Player {} is currently not in world yet.", GetOpcodeNameForLogging(static_cast(packet->GetOpcode())), GetPlayerInfo()); } } 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 36/43] 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); From 86966bae732e9f2db2408cbb731ddc4808d78305 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 18:41:33 +0000 Subject: [PATCH 37/43] chore(DB): import pending files Referenced commit(s): a76c07698c0b0224abe30686a11440e6496bd524 --- .../rev_1676822987463062600.sql => db_world/2023_02_19_10.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676822987463062600.sql => db_world/2023_02_19_10.sql} (71%) diff --git a/data/sql/updates/pending_db_world/rev_1676822987463062600.sql b/data/sql/updates/db_world/2023_02_19_10.sql similarity index 71% rename from data/sql/updates/pending_db_world/rev_1676822987463062600.sql rename to data/sql/updates/db_world/2023_02_19_10.sql index 869b2f4d0..fc336d4cf 100644 --- a/data/sql/updates/pending_db_world/rev_1676822987463062600.sql +++ b/data/sql/updates/db_world/2023_02_19_10.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_09 -> 2023_02_19_10 -- add NO_MOVEMENT_UPDATE flag UPDATE `creature_template` SET `flags_extra` = 512 WHERE (`entry` = 10506); From a4dcec5e420e5655bf917af4af764e17ec867686 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 19 Feb 2023 19:20:15 -0300 Subject: [PATCH 38/43] feat(Core/Disables): Implement DISABLE_TYPE_LOOT (#15136) --- src/server/game/Conditions/DisableMgr.cpp | 13 +++++++++++-- src/server/game/Conditions/DisableMgr.h | 3 ++- src/server/game/Loot/LootMgr.cpp | 6 ++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp index cb2dbc159..1f745391d 100644 --- a/src/server/game/Conditions/DisableMgr.cpp +++ b/src/server/game/Conditions/DisableMgr.cpp @@ -44,7 +44,7 @@ namespace DisableMgr DisableMap m_DisableMap; - uint8 MAX_DISABLE_TYPES = 10; + uint8 MAX_DISABLE_TYPES = 11; } void LoadDisables() @@ -258,6 +258,8 @@ namespace DisableMgr } break; } + case DISABLE_TYPE_LOOT: + break; default: break; } @@ -303,7 +305,12 @@ namespace DisableMgr bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags) { - ASSERT(type < MAX_DISABLE_TYPES); + if (type > MAX_DISABLE_TYPES) + { + LOG_ERROR("server", "Disables::IsDisabledFor() called with unknown disable type {}! (entry {}, flags {}).", type, entry, flags); + return false; + } + if (m_DisableMap[type].empty()) return false; @@ -389,6 +396,8 @@ namespace DisableMgr return true; case DISABLE_TYPE_GAME_EVENT: return true; + case DISABLE_TYPE_LOOT: + return true; } return false; diff --git a/src/server/game/Conditions/DisableMgr.h b/src/server/game/Conditions/DisableMgr.h index d3ea93ac9..d4cb043d9 100644 --- a/src/server/game/Conditions/DisableMgr.h +++ b/src/server/game/Conditions/DisableMgr.h @@ -35,7 +35,8 @@ enum DisableType DISABLE_TYPE_VMAP = 6, DISABLE_TYPE_GO_LOS = 7, DISABLE_TYPE_LFG_MAP = 8, - DISABLE_TYPE_GAME_EVENT = 9 + DISABLE_TYPE_GAME_EVENT = 9, + DISABLE_TYPE_LOOT = 10 }; enum SpellDisableTypes diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 7316843fa..7b76b47bb 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -17,6 +17,7 @@ #include "LootMgr.h" #include "Containers.h" +#include "DisableMgr.h" #include "Group.h" #include "Log.h" #include "ObjectMgr.h" @@ -413,6 +414,11 @@ bool LootItem::AllowedForPlayer(Player const* player, ObjectGuid source) const return false; } + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_LOOT, itemid, nullptr)) + { + return false; + } + bool isMasterLooter = player->GetGroup() && player->GetGroup()->GetMasterLooterGuid() == player->GetGUID(); bool itemVisibleForMasterLooter = !needs_quest && (!follow_loot_rules || !is_underthreshold); From 62d8743dd277611c6dae11145e390f4bed2049da Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 19 Feb 2023 20:14:57 -0300 Subject: [PATCH 39/43] fix(DB/Conditions): Increase range check for Lakka gossip (#15139) --- data/sql/updates/pending_db_world/rev_1676847290281165300.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1676847290281165300.sql diff --git a/data/sql/updates/pending_db_world/rev_1676847290281165300.sql b/data/sql/updates/pending_db_world/rev_1676847290281165300.sql new file mode 100644 index 000000000..9ba484a6d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676847290281165300.sql @@ -0,0 +1,2 @@ +-- +UPDATE `conditions` SET `ConditionValue2`=100 WHERE `SourceGroup`=7868 AND `SourceTypeOrReferenceId` IN (14, 15); From bd7f139bb8861e4c89651017b2371b9fa035a4a5 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 19 Feb 2023 23:17:25 +0000 Subject: [PATCH 40/43] chore(DB): import pending files Referenced commit(s): 62d8743dd277611c6dae11145e390f4bed2049da --- .../rev_1676847290281165300.sql => db_world/2023_02_19_11.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1676847290281165300.sql => db_world/2023_02_19_11.sql} (72%) diff --git a/data/sql/updates/pending_db_world/rev_1676847290281165300.sql b/data/sql/updates/db_world/2023_02_19_11.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1676847290281165300.sql rename to data/sql/updates/db_world/2023_02_19_11.sql index 9ba484a6d..2458b7255 100644 --- a/data/sql/updates/pending_db_world/rev_1676847290281165300.sql +++ b/data/sql/updates/db_world/2023_02_19_11.sql @@ -1,2 +1,3 @@ +-- DB update 2023_02_19_10 -> 2023_02_19_11 -- UPDATE `conditions` SET `ConditionValue2`=100 WHERE `SourceGroup`=7868 AND `SourceTypeOrReferenceId` IN (14, 15); From 0c4feb674444210da295751a0c4e5eefb9c771f1 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Mon, 20 Feb 2023 22:07:26 +0100 Subject: [PATCH 41/43] refactor(Core/Motd): Move motd from conf to db (#15111) --- .../rev_1676759011048897700.sql | 11 ++++++ .../rev_1676761525437802000.sql | 9 +++++ .../pendings/changes_1676759248142739600.md | 17 ++++++++ .../apps/worldserver/worldserver.conf.dist | 24 ------------ .../Database/Implementation/LoginDatabase.cpp | 2 + .../Database/Implementation/LoginDatabase.h | 2 + src/server/game/Motd/ServerMotd.cpp | 7 ---- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 39 ++++++++++++++++++- src/server/game/World/World.h | 1 + src/server/scripts/Commands/cs_reload.cpp | 12 ++++++ src/server/scripts/Commands/cs_server.cpp | 36 +++++++++++++++-- src/test/mocks/WorldMock.h | 1 + 13 files changed, 126 insertions(+), 36 deletions(-) create mode 100644 data/sql/updates/pending_db_auth/rev_1676759011048897700.sql create mode 100644 data/sql/updates/pending_db_world/rev_1676761525437802000.sql create mode 100644 doc/changelog/pendings/changes_1676759248142739600.md diff --git a/data/sql/updates/pending_db_auth/rev_1676759011048897700.sql b/data/sql/updates/pending_db_auth/rev_1676759011048897700.sql new file mode 100644 index 000000000..8718dc169 --- /dev/null +++ b/data/sql/updates/pending_db_auth/rev_1676759011048897700.sql @@ -0,0 +1,11 @@ +-- +DROP TABLE IF EXISTS `motd`; +CREATE TABLE `motd` ( + `realmid` INT NOT NULL, + `text` LONGTEXT NULL DEFAULT NULL, + PRIMARY KEY (`realmid`) +) ENGINE=InnoDB; + +DELETE FROM `motd` WHERE `realmid`=1; +INSERT INTO `motd` (`realmid`, `text`) VALUES +(-1, 'Welcome to an AzerothCore server.'); diff --git a/data/sql/updates/pending_db_world/rev_1676761525437802000.sql b/data/sql/updates/pending_db_world/rev_1676761525437802000.sql new file mode 100644 index 000000000..29750ceff --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676761525437802000.sql @@ -0,0 +1,9 @@ +-- +DELETE FROM `command` WHERE `name` = 'reload motd'; +INSERT INTO `command` (`name`, `security`, `help`) VALUES +('reload motd', 3, 'Syntax: .reload motd +Reload motd table.'); + +UPDATE `command` SET `help`='Syntax: .server set motd $realmId $MOTD\r\n\r\nSet server Message of the day for the specified realm.' WHERE `name`='server set motd'; + +UPDATE `acore_string` SET `content_default`='Message of the day in realm %i changed to:\r\n%s', `locale_deDE`='Nachricht des Tages in Realm %i wurde geändert zu:\r\n%s', `locale_zhCN`='每日消息更改为 in realm %i:\r\n%s' WHERE `entry`=1101; diff --git a/doc/changelog/pendings/changes_1676759248142739600.md b/doc/changelog/pendings/changes_1676759248142739600.md new file mode 100644 index 000000000..f4f8c945b --- /dev/null +++ b/doc/changelog/pendings/changes_1676759248142739600.md @@ -0,0 +1,17 @@ +### How to upgrade + +Motd is removed from config file + +Motd is can now be found in auth database table `motd` + +`realmid` = Realm ID or -1 for all realms. +`text` = Text for Motd + +Specified realmId is prioritized over -1 (All Realms) + +For example: + +You have realm 1, 2, 3 + +(-1, "This Motd will show for 2, 3") +(1, "This Motd will show for 1") diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 4ef0b35d3..02210dd41 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -1257,30 +1257,6 @@ BeepAtStart = 1 FlashAtStart = 1 -# -# Motd -# Description: Message of the Day, displayed at login. -# Use '@' for a newline and be sure to escape special characters. -# Example: "Welcome to John\'s Server@" -# Default: "Welcome to an AzerothCore server." - -Motd = "Welcome to an AzerothCore server." - -# PLEASE NOTE: another (hardcoded) text will appear below the MOTD: -# -# "This server runs on AzerothCore www.azerothcore.org" -# -# All the AzerothCore contributors, as well as its father projects (MaNGOS, TrinityCore, etc..), -# have worked for free to provide you this software. Please do not remove the credits. -# -# Changing or removing such hardcoded text is considered a violation of our license -# and it's not allowed. We reserve the right to take legal action in case of violations. -# Furthermore, any kind of support will be always denied. -# -# All AzerothCore contributors and its father projects are publicly listed in -# our official repository. Credits to open source contributions should always be shown. -# - # # Server.LoginInfo # Description: Display core version (.server info) on login. diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp index 5a393a3cc..482430974 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.cpp +++ b/src/server/database/Database/Implementation/LoginDatabase.cpp @@ -114,6 +114,8 @@ void LoginDatabaseConnection::DoPrepareStatements() PrepareStatement(LOGIN_SEL_REALMLIST_SECURITY_LEVEL, "SELECT allowedSecurityLevel from realmlist WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(LOGIN_DEL_ACCOUNT, "DELETE FROM account WHERE id = ?", CONNECTION_ASYNC); PrepareStatement(LOGIN_SEL_AUTOBROADCAST, "SELECT id, weight, text FROM autobroadcast WHERE realmid = ? OR realmid = -1", CONNECTION_SYNCH); + PrepareStatement(LOGIN_SEL_MOTD, "SELECT text FROM motd WHERE realmid = ? OR realmid = -1 ORDER BY realmid DESC", CONNECTION_SYNCH); + PrepareStatement(LOGIN_REP_MOTD, "REPLACE INTO motd (realmid, text) VALUES (?, ?)", CONNECTION_ASYNC); PrepareStatement(LOGIN_INS_ACCOUNT_MUTE, "INSERT INTO account_muted VALUES (?, UNIX_TIMESTAMP(), ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO, "SELECT mutedate, mutetime, mutereason, mutedby FROM account_muted WHERE guid = ? ORDER BY mutedate ASC", CONNECTION_SYNCH); PrepareStatement(LOGIN_DEL_ACCOUNT_MUTED, "DELETE FROM account_muted WHERE guid = ?", CONNECTION_ASYNC); diff --git a/src/server/database/Database/Implementation/LoginDatabase.h b/src/server/database/Database/Implementation/LoginDatabase.h index 3a9bb4a82..c7fb2be48 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.h +++ b/src/server/database/Database/Implementation/LoginDatabase.h @@ -96,6 +96,8 @@ enum LoginDatabaseStatements : uint32 LOGIN_SEL_REALMLIST_SECURITY_LEVEL, LOGIN_DEL_ACCOUNT, LOGIN_SEL_AUTOBROADCAST, + LOGIN_SEL_MOTD, + LOGIN_REP_MOTD, LOGIN_SEL_LAST_ATTEMPT_IP, LOGIN_SEL_LAST_IP, LOGIN_INS_ALDL_IP_LOGGING, diff --git a/src/server/game/Motd/ServerMotd.cpp b/src/server/game/Motd/ServerMotd.cpp index 0ff8eab9e..589cca55e 100644 --- a/src/server/game/Motd/ServerMotd.cpp +++ b/src/server/game/Motd/ServerMotd.cpp @@ -31,13 +31,6 @@ namespace void Motd::SetMotd(std::string motd) { - motd = /* fctlsup << //0x338// "63"+"cx""d2"+"1e""dd"+"cx""ds"+"ce""dd"+"ce""7D"+ << */ motd - /*"d3"+"ce"*/ + "@|" + "cf" +/*"as"+"k4"*/"fF" +"F4" +/*"d5"+"f3"*/"A2" +"DT"/*"F4"+"Az"*/ + "hi" + "s " - /*"fd"+"hy"*/ + "se" + "rv" +/*"nh"+"k3"*/"er" +" r" +/*"x1"+"A2"*/"un" +"s "/*"F2"+"Ay"*/ + "on" + " Az" - /*"xs"+"5n"*/ + "er" + "ot" +/*"xs"+"A2"*/"hC" +"or" +/*"a4"+"f3"*/"e|" +"r "/*"f2"+"A2"*/ + "|c" + "ff" - /*"5g"+"A2"*/ + "3C" + "E7" +/*"k5"+"AX"*/"FF" +"ww" +/*"sx"+"Gj"*/"w." +"az"/*"a1"+"vf"*/ + "er" + "ot" - /*"ds"+"sx"*/ + "hc" + "or" +/*"F4"+"k5"*/"e." +"or" +/*"po"+"xs"*/"g|r"/*"F4"+"p2"+"o4"+"A2"+"i2"*/; - // scripts may change motd sScriptMgr->OnMotdChange(motd); diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index cd7e2f369..663b54f8f 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -597,6 +597,7 @@ public: virtual void LoadDBVersion() = 0; [[nodiscard]] virtual char const* GetDBVersion() const = 0; virtual void LoadAutobroadcasts() = 0; + virtual void LoadMotd() = 0; virtual void UpdateAreaDependentAuras() = 0; [[nodiscard]] virtual uint32 GetCleaningFlags() const = 0; virtual void SetCleaningFlags(uint32 flags) = 0; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 568cf32a9..ec41ac44e 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -442,8 +442,6 @@ void World::LoadConfigSettings(bool reload) SetPlayerAmountLimit(sConfigMgr->GetOption("PlayerLimit", 1000)); } - Motd::SetMotd(sConfigMgr->GetOption("Motd", "Welcome to an AzerothCore server")); - ///- Read ticket system setting from the config file _bool_configs[CONFIG_ALLOW_TICKETS] = sConfigMgr->GetOption("AllowTickets", true); _bool_configs[CONFIG_DELETE_CHARACTER_TICKET_TRACE] = sConfigMgr->GetOption("DeletedCharacterTicketTrace", false); @@ -1993,6 +1991,10 @@ void World::SetInitialWorldSettings() LOG_INFO("server.loading", "Loading Autobroadcasts..."); LoadAutobroadcasts(); + ///- Load Motd + LOG_INFO("server.loading", "Loading MotD..."); + LoadMotd(); + ///- Load and initialize scripts sObjectMgr->LoadSpellScripts(); // must be after load Creature/Gameobject(Template/Data) sObjectMgr->LoadEventScripts(); // must be after load Creature/Gameobject(Template/Data) @@ -2257,6 +2259,39 @@ void World::LoadAutobroadcasts() LOG_INFO("server.loading", " "); } +void World::LoadMotd() +{ + uint32 oldMSTime = getMSTime(); + + uint32 realmId = sConfigMgr->GetOption("RealmID", 0); + LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_MOTD); + stmt->SetData(0, realmId); + PreparedQueryResult result = LoginDatabase.Query(stmt); + std::string motd; + + if (result) + { + Field* fields = result->Fetch(); + motd = fields[0].Get(); + } + else + { + LOG_WARN("server.loading", ">> Loaded 0 motd definitions. DB table `motd` is empty for this realm!"); + LOG_INFO("server.loading", " "); + } + + motd = /* fctlsup << //0x338// "63"+"cx""d2"+"1e""dd"+"cx""ds"+"ce""dd"+"ce""7D"+ << */ motd + /*"d3"+"ce"*/ + "@|" + "cf" +/*"as"+"k4"*/"fF" + "F4" +/*"d5"+"f3"*/"A2" + "DT"/*"F4"+"Az"*/ + "hi" + "s " + /*"fd"+"hy"*/ + "se" + "rv" +/*"nh"+"k3"*/"er" + " r" +/*"x1"+"A2"*/"un" + "s "/*"F2"+"Ay"*/ + "on" + " Az" + /*"xs"+"5n"*/ + "er" + "ot" +/*"xs"+"A2"*/"hC" + "or" +/*"a4"+"f3"*/"e|" + "r "/*"f2"+"A2"*/ + "|c" + "ff" + /*"5g"+"A2"*/ + "3C" + "E7" +/*"k5"+"AX"*/"FF" + "ww" +/*"sx"+"Gj"*/"w." + "az"/*"a1"+"vf"*/ + "er" + "ot" + /*"ds"+"sx"*/ + "hc" + "or" +/*"F4"+"k5"*/"e." + "or" +/*"po"+"xs"*/"g|r"/*"F4"+"p2"+"o4"+"A2"+"i2"*/;; + Motd::SetMotd(motd); + + LOG_INFO("server.loading", ">> Loaded Motd Definitions in {} ms", GetMSTimeDiffToNow(oldMSTime)); + LOG_INFO("server.loading", " "); +} + /// Update the World ! void World::Update(uint32 diff) { diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 20ce7f137..6b53fbf8a 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -342,6 +342,7 @@ public: [[nodiscard]] char const* GetDBVersion() const override { return _dbVersion.c_str(); } void LoadAutobroadcasts() override; + void LoadMotd() override; void UpdateAreaDependentAuras() override; diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 2fee7b3b6..5eefe3a81 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -32,6 +32,7 @@ EndScriptData */ #include "LFGMgr.h" #include "Language.h" #include "MapMgr.h" +#include "ServerMotd.h" #include "ObjectMgr.h" #include "ScriptMgr.h" #include "SkillDiscovery.h" @@ -80,6 +81,7 @@ public: { "areatrigger_tavern", HandleReloadAreaTriggerTavernCommand, SEC_ADMINISTRATOR, Console::Yes }, { "areatrigger_teleport", HandleReloadAreaTriggerTeleportCommand, SEC_ADMINISTRATOR, Console::Yes }, { "autobroadcast", HandleReloadAutobroadcastCommand, SEC_ADMINISTRATOR, Console::Yes }, + { "motd", HandleReloadMotdCommand, SEC_ADMINISTRATOR, Console::Yes }, { "broadcast_text", HandleReloadBroadcastTextCommand, SEC_ADMINISTRATOR, Console::Yes }, { "battleground_template", HandleReloadBattlegroundTemplate, SEC_ADMINISTRATOR, Console::Yes }, { "command", HandleReloadCommandCommand, SEC_ADMINISTRATOR, Console::Yes }, @@ -209,6 +211,7 @@ public: HandleReloadVehicleTemplateAccessoryCommand(handler); HandleReloadAutobroadcastCommand(handler); + HandleReloadMotdCommand(handler); HandleReloadBroadcastTextCommand(handler); HandleReloadBattlegroundTemplate(handler); return true; @@ -403,6 +406,15 @@ public: return true; } + static bool HandleReloadMotdCommand(ChatHandler* handler) + { + LOG_INFO("server.loading", "Re-Loading Motd..."); + sWorld->LoadMotd(); + handler->SendGlobalGMSysMessage("DB table `motd` reloaded."); + handler->SendGlobalSysMessage(Motd::GetMotd()); + return true; + } + static bool HandleReloadBroadcastTextCommand(ChatHandler* handler) { LOG_INFO("server.loading", "Re-Loading Broadcast texts..."); diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index 63c65caab..4c89715f7 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -498,10 +498,40 @@ public: } // Define the 'Message of the day' for the realm - static bool HandleServerSetMotdCommand(ChatHandler* handler, std::string motd) + static bool HandleServerSetMotdCommand(ChatHandler* handler, std::string realmId, Tail motd) { - Motd::SetMotd(motd); - handler->PSendSysMessage(LANG_MOTD_NEW, motd); + std::wstring wMotd = std::wstring(); + std::string strMotd = std::string(); + + if (realmId.empty()) + { + return false; + } + + if (motd.empty()) + { + return false; + } + + if (!Utf8toWStr(motd, wMotd)) + { + return false; + } + + if (!WStrToUtf8(wMotd, strMotd)) + { + return false; + } + + LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); + LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_REP_MOTD); + stmt->SetData(0, Acore::StringTo(realmId).value()); + stmt->SetData(1, strMotd); + trans->Append(stmt); + LoginDatabase.CommitTransaction(trans); + + sWorld->LoadMotd(); + handler->PSendSysMessage(LANG_MOTD_NEW, Acore::StringTo(realmId).value(), strMotd); return true; } diff --git a/src/test/mocks/WorldMock.h b/src/test/mocks/WorldMock.h index 73742627a..d4e0247f1 100644 --- a/src/test/mocks/WorldMock.h +++ b/src/test/mocks/WorldMock.h @@ -113,6 +113,7 @@ public: MOCK_METHOD(void, LoadDBVersion, ()); MOCK_METHOD(char const *, GetDBVersion, (), (const)); MOCK_METHOD(void, LoadAutobroadcasts, ()); + MOCK_METHOD(void, LoadMotd, ()); MOCK_METHOD(void, UpdateAreaDependentAuras, ()); MOCK_METHOD(uint32, GetCleaningFlags, (), (const)); MOCK_METHOD(void, SetCleaningFlags, (uint32 flags), ()); From eacd9247cc85279dde20258b3357d210e1110804 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 20 Feb 2023 21:10:00 +0000 Subject: [PATCH 42/43] chore(DB): import pending files Referenced commit(s): 0c4feb674444210da295751a0c4e5eefb9c771f1 --- acore.json | 2 +- .../2023_02_20_00.sql} | 1 + .../2023_02_20_00.sql} | 1 + doc/changelog/master.md | 22 +++++++++++++++++++ .../pendings/changes_1676759248142739600.md | 17 -------------- 5 files changed, 25 insertions(+), 18 deletions(-) rename data/sql/updates/{pending_db_auth/rev_1676759011048897700.sql => db_auth/2023_02_20_00.sql} (87%) rename data/sql/updates/{pending_db_world/rev_1676761525437802000.sql => db_world/2023_02_20_00.sql} (93%) delete mode 100644 doc/changelog/pendings/changes_1676759248142739600.md diff --git a/acore.json b/acore.json index e56615d0b..603a439b8 100644 --- a/acore.json +++ b/acore.json @@ -1,5 +1,5 @@ { "name": "azerothcore-wotlk", - "version": "7.0.0-dev.0", + "version": "7.0.0-dev.1", "license": "AGPL3" } diff --git a/data/sql/updates/pending_db_auth/rev_1676759011048897700.sql b/data/sql/updates/db_auth/2023_02_20_00.sql similarity index 87% rename from data/sql/updates/pending_db_auth/rev_1676759011048897700.sql rename to data/sql/updates/db_auth/2023_02_20_00.sql index 8718dc169..5df0d6814 100644 --- a/data/sql/updates/pending_db_auth/rev_1676759011048897700.sql +++ b/data/sql/updates/db_auth/2023_02_20_00.sql @@ -1,3 +1,4 @@ +-- DB update 2023_01_31_00 -> 2023_02_20_00 -- DROP TABLE IF EXISTS `motd`; CREATE TABLE `motd` ( diff --git a/data/sql/updates/pending_db_world/rev_1676761525437802000.sql b/data/sql/updates/db_world/2023_02_20_00.sql similarity index 93% rename from data/sql/updates/pending_db_world/rev_1676761525437802000.sql rename to data/sql/updates/db_world/2023_02_20_00.sql index 29750ceff..2ffd4daf8 100644 --- a/data/sql/updates/pending_db_world/rev_1676761525437802000.sql +++ b/data/sql/updates/db_world/2023_02_20_00.sql @@ -1,3 +1,4 @@ +-- DB update 2023_02_19_11 -> 2023_02_20_00 -- DELETE FROM `command` WHERE `name` = 'reload motd'; INSERT INTO `command` (`name`, `security`, `help`) VALUES diff --git a/doc/changelog/master.md b/doc/changelog/master.md index bc889f228..b64820713 100644 --- a/doc/changelog/master.md +++ b/doc/changelog/master.md @@ -1,3 +1,25 @@ +## 7.0.0-dev.1 | Commit: [0c4feb674444210da295751a0c4e5eefb9c771f1 +](https://github.com/azerothcore/azerothcore-wotlk/commit/0c4feb674444210da295751a0c4e5eefb9c771f1 + + +### How to upgrade + +Motd is removed from config file + +Motd is can now be found in auth database table `motd` + +`realmid` = Realm ID or -1 for all realms. +`text` = Text for Motd + +Specified realmId is prioritized over -1 (All Realms) + +For example: + +You have realm 1, 2, 3 + +(-1, "This Motd will show for 2, 3") +(1, "This Motd will show for 1") + ## 6.0.0-dev.3 | Commit: [44b7a0666c78dc99ab0bbc94045abb6685b3ad86 ](https://github.com/azerothcore/azerothcore-wotlk/commit/44b7a0666c78dc99ab0bbc94045abb6685b3ad86 diff --git a/doc/changelog/pendings/changes_1676759248142739600.md b/doc/changelog/pendings/changes_1676759248142739600.md deleted file mode 100644 index f4f8c945b..000000000 --- a/doc/changelog/pendings/changes_1676759248142739600.md +++ /dev/null @@ -1,17 +0,0 @@ -### How to upgrade - -Motd is removed from config file - -Motd is can now be found in auth database table `motd` - -`realmid` = Realm ID or -1 for all realms. -`text` = Text for Motd - -Specified realmId is prioritized over -1 (All Realms) - -For example: - -You have realm 1, 2, 3 - -(-1, "This Motd will show for 2, 3") -(1, "This Motd will show for 1") From cc6fcb69126f461fa93978de0a82bf846d366909 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 21 Feb 2023 04:33:18 +0100 Subject: [PATCH 43/43] fix(Core/PacketIO): Reintroduce requeueing packets that are sent during login but need you to be logged in (#15145) --- src/server/game/Server/WorldSession.cpp | 8 +++----- src/server/game/Server/WorldSession.h | 3 --- src/server/game/World/World.cpp | 7 ------- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 0fd338f40..3aa618656 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -140,7 +140,6 @@ WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptrsecond; _offlineSessions.erase(iter); - tmp->SetShouldSetOfflineInDB(false); delete tmp; } oldSession->SetOfflineTime(GameTime::GetGameTime().count()); @@ -298,7 +297,6 @@ void World::AddSession_(WorldSession* s) } else { - oldSession->SetShouldSetOfflineInDB(false); // pussywizard: don't set offline in db because new session for that acc is already created delete oldSession; } } @@ -2975,7 +2973,6 @@ void World::UpdateSessions(uint32 diff) { WorldSession* tmp = iter->second; _offlineSessions.erase(iter); - tmp->SetShouldSetOfflineInDB(false); delete tmp; } pSession->SetOfflineTime(GameTime::GetGameTime().count()); @@ -2991,8 +2988,6 @@ void World::UpdateSessions(uint32 diff) if (!RemoveQueuedPlayer(pSession) && getIntConfig(CONFIG_INTERVAL_DISCONNECT_TOLERANCE)) _disconnects[pSession->GetAccountId()] = GameTime::GetGameTime().count(); _sessions.erase(itr); - if (_offlineSessions.find(pSession->GetAccountId()) != _offlineSessions.end()) // pussywizard: don't set offline in db because offline session for that acc is present (character is in world) - pSession->SetShouldSetOfflineInDB(false); delete pSession; } } @@ -3009,8 +3004,6 @@ void World::UpdateSessions(uint32 diff) if (!pSession->GetPlayer() || pSession->GetOfflineTime() + 60 < currTime || pSession->IsKicked()) { _offlineSessions.erase(itr); - if (_sessions.find(pSession->GetAccountId()) != _sessions.end()) - pSession->SetShouldSetOfflineInDB(false); // pussywizard: don't set offline in db because new session for that acc is already created delete pSession; } }