From 66069bcef14d7dae422feb0aaca0c008f0bc5d9f Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Tue, 14 Jul 2020 16:42:30 +0200 Subject: [PATCH] Scripts/Misc: fixed instance teleporter for Throne of the Tides, The Stonecore and Blackrock Caverns --- .../world/4.3.4/2020_07_14_03_world.sql | 76 +++++++++++++++++++ src/server/game/Spells/SpellMgr.cpp | 16 ++-- .../BlackrockCaverns/blackrock_caverns.h | 4 +- .../instance_blackrock_caverns.cpp | 3 + .../instance_throne_of_the_tides.cpp | 50 +++++++++--- .../ThroneOfTheTides/throne_of_the_tides.h | 8 +- .../Stonecore/instance_stonecore.cpp | 36 +++++---- .../scripts/Maelstrom/Stonecore/stonecore.h | 11 +-- 8 files changed, 165 insertions(+), 39 deletions(-) create mode 100644 sql/updates/world/4.3.4/2020_07_14_03_world.sql diff --git a/sql/updates/world/4.3.4/2020_07_14_03_world.sql b/sql/updates/world/4.3.4/2020_07_14_03_world.sql new file mode 100644 index 00000000000..aeadcedb99d --- /dev/null +++ b/sql/updates/world/4.3.4/2020_07_14_03_world.sql @@ -0,0 +1,76 @@ +-- Throne of the Tides +UPDATE `creature_template_addon` SET `auras`= '95293' WHERE `entry` IN (51395, 51391); +UPDATE `creature_addon` SET `auras`= '95293' WHERE `guid` IN (254995, 254849); + +DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (51395, 51391); +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`) VALUES +(51395, 0, 0, 1, 0), +(51391, 0, 0, 1, 0); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (51391, 51395); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(51391, 95284, 1, 0), +(51395, 95285, 1, 0); + +-- The Stonecore +DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (51396, 51397); +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`) VALUES +(51396, 0, 0, 1, 0), +(51397, 0, 0, 1, 0); + +DELETE FROM `creature_addon` WHERE `guid` IN (340437, 340628); +INSERT INTO `creature_addon` (`guid`, `bytes1`, `auras`) VALUES +(340437, 50331648, '95299'), +(340628, 50331648, '95299'); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (51396, 51397); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(51396, 95284, 1, 0), +(51397, 95285, 1, 0); + +UPDATE `creature_template` SET `unit_flags`= 0, `flags_extra`= 0, `AIName`= 'NullCreatureAI' WHERE `entry` IN (51396, 51397); + +-- Blackrock Caverns +UPDATE `creature_template` SET `VehicleId`= 1536, `unit_flags`= 0, `unit_flags2`= 67110912, `npcflag`= 0x01000000, `flags_extra`= 0 WHERE `entry`= 51340; +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`= 51340; +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(51340, 84965, 1, 1); + +SET @ENTRY := 51340; +SET @GUID := -361878; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@GUID, 0, 0, 0, 27, 0, 100, 0, 0, 0, 0, 0, 11, 95210, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "On passenger boarded (vehicle) - Self: Cast spell 95210 on Action invoker // "); + +SET @GUID := -361877; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@GUID, 0, 0, 0, 27, 0, 100, 0, 0, 0, 0, 0, 11, 95012, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "On passenger boarded (vehicle) - Self: Cast spell 95012 on Action invoker // "); + + +-- Conditions +DELETE FROM `conditions` WHERE `SourceEntry` IN (95284, 95285, 95209, 95013) AND `SourceTypeOrReferenceId`= 13; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES +(13, 1, 95284, 0, 0, 31, 0, 3, 51395, 0, 0, 0, '', 'Teleport - Target Throne of the Tides Teleporter'), +(13, 1, 95284, 0, 1, 31, 0, 3, 51397, 0, 0, 0, '', 'Teleport - Target Stonecore Teleporter'), +(13, 1, 95285, 0, 0, 31, 0, 3, 51391, 0, 0, 0, '', 'Teleport - Target Throne of the Tides Teleporter'), +(13, 1, 95285, 0, 1, 31, 0, 3, 51396, 0, 0, 0, '', 'Teleport - Target Stonecore Teleporter'), +(13, 1, 95209, 0, 1, 31, 0, 3, 51340, 361877, 0, 0, '', 'Twilight Portal - Target Twilight Portal'), +(13, 1, 95013, 0, 1, 31, 0, 3, 51340, 361878, 0, 0, '', 'Twilight Portal - Target Twilight Portal'); + +DELETE FROM `spell_target_position` WHERE `ID` IN (95284, 95285); + +-- Spawn Groups +DELETE FROM `spawn_group_template` WHERE `groupId`= 434; +INSERT INTO `spawn_group_template` (`groupId`, `groupName`, `groupFlags`) VALUES +(434, 'Blackrock Caverns - Twilight Portals', 4); + +DELETE FROM `instance_spawn_groups` WHERE `instanceMapId`= 645 AND `spawnGroupId`= 434; +INSERT INTO `instance_spawn_groups` (`instanceMapId`, `bossStateId`, `bossStates`, `spawnGroupId`, `flags`) VALUES +(645, 2, 8, 434, 1); + +DELETE FROM `spawn_group` WHERE `groupId`= 434; +INSERT INTO `spawn_group` (`groupId`, `spawnType`, `spawnId`) VALUES +(434, 0, 361878), +(434, 0, 361877); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index b4991721085..c55d382ace7 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4195,13 +4195,6 @@ void SpellMgr::LoadSpellInfoCorrections() // // STONECORE SPELLS // - ApplySpellFix({ - 95284, // Teleport (from entrance to Slabhide) - 95285 // Teleport (from Slabhide to entrance) - }, [](SpellInfo* spellInfo) - { - spellInfo->Effects[EFFECT_0].TargetB = SpellImplicitTargetInfo(TARGET_DEST_DB); - }); // Paralyze ApplySpellFix({ 92426 }, [](SpellInfo* spellInfo) @@ -4834,6 +4827,15 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AuraInterruptFlags &= ~AURA_INTERRUPT_FLAG_TURNING; }); + // Twilight Portal + ApplySpellFix({ + 95210, + 95012 + }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].AuraPeriod = 1250; + }); + // ENDOF BLACKROCK CAVERNS SPELLS // diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h index ae62288c54f..9401326ccd3 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h @@ -72,8 +72,10 @@ enum BRCCreatureIds /*Ascendant Lord Obsidius*/ NPC_SHADOW_OF_OBSIDIUS = 40817, + // Generic Creatures NPC_TWILIGHT_FLAME_CALLER = 39708, - NPC_RAZ_THE_CRAZED = 39670 + NPC_RAZ_THE_CRAZED = 39670, + NPC_TWILIGHT_PORTAL = 51340 }; enum BRCActions diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp index fa51a0b47e2..b9b3a6c2a1c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp @@ -87,6 +87,9 @@ class instance_blackrock_caverns : public InstanceMapScript if (Creature* karsh = GetCreature(DATA_KARSH_STEELBENDER)) karsh->AI()->JustSummoned(creature); break; + case NPC_TWILIGHT_PORTAL: + creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); // Set spellclick flag manually because the seats are flagged as unusable due to their flags + break; default: break; } diff --git a/src/server/scripts/EasternKingdoms/ThroneOfTheTides/instance_throne_of_the_tides.cpp b/src/server/scripts/EasternKingdoms/ThroneOfTheTides/instance_throne_of_the_tides.cpp index 21eed57807f..0ac5c23c5b3 100644 --- a/src/server/scripts/EasternKingdoms/ThroneOfTheTides/instance_throne_of_the_tides.cpp +++ b/src/server/scripts/EasternKingdoms/ThroneOfTheTides/instance_throne_of_the_tides.cpp @@ -30,16 +30,18 @@ ObjectData const creatureData[] = { - { BOSS_LADY_NAZJAR, DATA_LADY_NAZJAR }, - { BOSS_COMMANDER_ULTHOK, DATA_COMMANDER_ULTHOK }, - { BOSS_MINDBENDER_GURSHA, DATA_MINDBENDER_GURSHA }, - { BOSS_OZUMAT, DATA_OZUMAT }, - { NPC_LADY_NAZJAR, DATA_LADY_NAZJAR_GAUNTLET }, - { NPC_OZUMAT_VEHICLE_BIG, DATA_OZUMAT_VEHICLE_BIG }, - { NPC_OZUMAT_VEHICLE, DATA_OZUMAT_VEHICLE }, - { NPC_NEPTULON, DATA_NEPTULON }, - { NPC_OZUMAT, DATA_OZUMAT_PASSENGER }, - { 0, 0 } // END + { BOSS_LADY_NAZJAR, DATA_LADY_NAZJAR }, + { BOSS_COMMANDER_ULTHOK, DATA_COMMANDER_ULTHOK }, + { BOSS_MINDBENDER_GURSHA, DATA_MINDBENDER_GURSHA }, + { BOSS_OZUMAT, DATA_OZUMAT }, + { NPC_LADY_NAZJAR, DATA_LADY_NAZJAR_GAUNTLET }, + { NPC_OZUMAT_VEHICLE_BIG, DATA_OZUMAT_VEHICLE_BIG }, + { NPC_OZUMAT_VEHICLE, DATA_OZUMAT_VEHICLE }, + { NPC_NEPTULON, DATA_NEPTULON }, + { NPC_OZUMAT, DATA_OZUMAT_PASSENGER }, + { NPC_THRONE_OF_THE_TIDES_TELEPORTER_1, DATA_THRONE_OF_THE_TIDES_TELEPORTER_1 }, + { NPC_THRONE_OF_THE_TIDES_TELEPORTER_2, DATA_THRONE_OF_THE_TIDES_TELEPORTER_2 }, + { 0, 0 } // END }; ObjectData const gameobjectData[] = @@ -173,6 +175,11 @@ class GeyserActivationEvent : public BasicEvent Creature* _owner; }; +enum Spells +{ + SPELL_TELEPORTER_ACTIVE_VISUAL = 95296 +}; + class instance_throne_of_the_tides : public InstanceMapScript { public: @@ -198,8 +205,23 @@ class instance_throne_of_the_tides : public InstanceMapScript { case DATA_LADY_NAZJAR: if (state == DONE) + { if (GameObject* defenseSystem = GetGameObject(DATA_THRONE_OF_THE_TIDES_DEFENSE_SYSTEM)) defenseSystem->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + + if (Creature* teleporter1 = GetCreature(DATA_THRONE_OF_THE_TIDES_TELEPORTER_1)) + { + teleporter1->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + teleporter1->CastSpell(teleporter1, SPELL_TELEPORTER_ACTIVE_VISUAL); + } + + if (Creature* teleporter2 = GetCreature(DATA_THRONE_OF_THE_TIDES_TELEPORTER_2)) + { + teleporter2->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + teleporter2->CastSpell(teleporter2, SPELL_TELEPORTER_ACTIVE_VISUAL); + } + + } break; case DATA_COMMANDER_ULTHOK: if (state == FAIL) @@ -264,6 +286,14 @@ class instance_throne_of_the_tides : public InstanceMapScript if (Creature* neptulon = GetCreature(DATA_NEPTULON)) neptulon->AI()->JustSummoned(creature); break; + case NPC_THRONE_OF_THE_TIDES_TELEPORTER_1: + case NPC_THRONE_OF_THE_TIDES_TELEPORTER_2: + if (GetBossState(DATA_LADY_NAZJAR == DONE)) + { + creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + creature->CastSpell(creature, SPELL_TELEPORTER_ACTIVE_VISUAL); + } + break; default: break; } diff --git a/src/server/scripts/EasternKingdoms/ThroneOfTheTides/throne_of_the_tides.h b/src/server/scripts/EasternKingdoms/ThroneOfTheTides/throne_of_the_tides.h index d7381bf8204..02cd2350cf8 100644 --- a/src/server/scripts/EasternKingdoms/ThroneOfTheTides/throne_of_the_tides.h +++ b/src/server/scripts/EasternKingdoms/ThroneOfTheTides/throne_of_the_tides.h @@ -49,7 +49,9 @@ enum TotTDataTypes DATA_NEPTULON = 15, DATA_OZUMAT_VEHICLE = 16, DATA_LADY_NAZJAR_GEYSERS = 17, - DATA_OZUMAT_PASSENGER = 18 + DATA_OZUMAT_PASSENGER = 18, + DATA_THRONE_OF_THE_TIDES_TELEPORTER_1 = 19, + DATA_THRONE_OF_THE_TIDES_TELEPORTER_2 = 20 }; enum TotTCreatureIds @@ -97,7 +99,9 @@ enum TotTCreatureIds NPC_GEYSER_DUMMY = 48983, NPC_GILGOBLIN_HUNTER = 40935, NPC_FACELESS_WATCHER = 40936, - NPC_GILGOBLIN_AQUAMAGE = 40943 + NPC_GILGOBLIN_AQUAMAGE = 40943, + NPC_THRONE_OF_THE_TIDES_TELEPORTER_1 = 51391, // Entrance + NPC_THRONE_OF_THE_TIDES_TELEPORTER_2 = 51395 // Neptulon's Rise }; enum TotTGameObjectIds diff --git a/src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp b/src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp index 8ddb1ee3d64..aea0e80ab05 100644 --- a/src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp @@ -41,11 +41,16 @@ ObjectData const creatureData[] = { BOSS_SLABHIDE, DATA_SLABHIDE }, { BOSS_OZRUK, DATA_OZRUK, }, { BOSS_HIGH_PRIESTESS_AZIL, DATA_HIGH_PRIESTESS_AZIL }, - { NPC_STONECORE_TELEPORTER, DATA_STONECORE_TELEPORTER }, + { NPC_STONECORE_TELEPORTER_1, DATA_STONECORE_TELEPORTER_1 }, { NPC_STONECORE_TELEPORTER_2, DATA_STONECORE_TELEPORTER_2 }, { 0, 0 } // END }; +enum Spells +{ + SPELL_TELEPORTER_ACTIVE_VISUAL = 95298 +}; + class instance_stonecore : public InstanceMapScript { public: @@ -111,10 +116,13 @@ class instance_stonecore : public InstanceMapScript { switch (creature->GetEntry()) { - case NPC_STONECORE_TELEPORTER: + case NPC_STONECORE_TELEPORTER_1: case NPC_STONECORE_TELEPORTER_2: if (GetBossState(DATA_SLABHIDE) == DONE) - ActivateTeleporter(creature); + { + creature->CastSpell(creature, SPELL_TELEPORTER_ACTIVE_VISUAL); + creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + } break; case BOSS_CORBORUS: case BOSS_SLABHIDE: @@ -162,8 +170,17 @@ class instance_stonecore : public InstanceMapScript // Activate teleporters if (state == DONE) { - ActivateTeleporter(GetCreature(DATA_STONECORE_TELEPORTER)); - ActivateTeleporter(GetCreature(DATA_STONECORE_TELEPORTER_2)); + if (Creature* teleporter1 = GetCreature(DATA_STONECORE_TELEPORTER_1)) + { + teleporter1->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + teleporter1->CastSpell(teleporter1, SPELL_TELEPORTER_ACTIVE_VISUAL); + } + + if (Creature* teleporter2 = GetCreature(DATA_STONECORE_TELEPORTER_2)) + { + teleporter2->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + teleporter2->CastSpell(teleporter2, SPELL_TELEPORTER_ACTIVE_VISUAL); + } } if (state == FAIL) @@ -280,15 +297,6 @@ class instance_stonecore : public InstanceMapScript creature->DespawnOrUnsummon(Seconds(3)); } - void ActivateTeleporter(Creature* teleporter) - { - if (!teleporter) - return; - - teleporter->CastSpell(teleporter, SPELL_TELEPORTER_ACTIVE_VISUAL, true); - teleporter->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); - } - EventMap _events; GuidVector _millhouseTrashGUIDs; GuidVector _millhouseLastGroupGUIDs; diff --git a/src/server/scripts/Maelstrom/Stonecore/stonecore.h b/src/server/scripts/Maelstrom/Stonecore/stonecore.h index 075cc604e4d..de8d8ecf2d7 100644 --- a/src/server/scripts/Maelstrom/Stonecore/stonecore.h +++ b/src/server/scripts/Maelstrom/Stonecore/stonecore.h @@ -42,7 +42,7 @@ enum SCDataTypes DATA_EVENT_PROGRESS, // Teleporters - DATA_STONECORE_TELEPORTER, + DATA_STONECORE_TELEPORTER_1, DATA_STONECORE_TELEPORTER_2, }; @@ -72,7 +72,11 @@ enum SCCreatureIds // High Priestess Azil NPC_DEVOUT_FOLLOWER = 42428, - NPC_SEISMIC_SHARD = 42355 + NPC_SEISMIC_SHARD = 42355, + + // Generic Creatures + NPC_STONECORE_TELEPORTER_1 = 51396, + NPC_STONECORE_TELEPORTER_2 = 51397 }; enum SCGameobjectIds @@ -90,9 +94,6 @@ enum SCMisc // Stonecore Teleporter misc MAX_STONECORE_TELEPORTERS = 2, - NPC_STONECORE_TELEPORTER = 51396, // Entrance teleporter - NPC_STONECORE_TELEPORTER_2 = 51397, // Slabhide teleporter - SPELL_TELEPORTER_ACTIVE_VISUAL = 95298, SPELL_RING_WYRM_KNOCKBACK = 81235, // Creature Formation IDs