diff --git a/README.md b/README.md index 84675eb0414..789e2ebd995 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,12 @@ ## Build Status -master | 3.3.5 | wotlk_classic +master | 3.3.5 | cata_classic :------------: | :------------: | :------------: -[![master Build Status](https://circleci.com/gh/TrinityCore/TrinityCore/tree/master.svg?style=shield)](https://circleci.com/gh/TrinityCore/TrinityCore/tree/master) | [![3.3.5 Build Status](https://circleci.com/gh/TrinityCore/TrinityCore/tree/3.3.5.svg?style=shield)](https://circleci.com/gh/TrinityCore/TrinityCore/tree/3.3.5) | [![wotlk_classic Build Status](https://circleci.com/gh/TrinityCore/TrinityCore/tree/wotlk_classic.svg?style=shield)](https://circleci.com/gh/TrinityCore/TrinityCore/tree/wotlk_classic) -[![master Build status](https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/master?svg=true)](https://ci.appveyor.com/project/DDuarte/trinitycore/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/3.3.5?svg=true)](https://ci.appveyor.com/project/DDuarte/trinitycore/branch/3.3.5) | [![Build status](https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/wotlk_classic?svg=true)](https://ci.appveyor.com/project/DDuarte/trinitycore/branch/wotlk_classic) -[![master GCC Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=master&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Amaster+event%3Apush) | [![3.3.5 GCC Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=3.3.5&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3A3.3.5+event%3Apush) | [![wotlk_classic GCC Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=wotlk_classic&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Awotlk_classic+event%3Apush) +[![master Build Status](https://circleci.com/gh/TrinityCore/TrinityCore/tree/master.svg?style=shield)](https://circleci.com/gh/TrinityCore/TrinityCore/tree/master) | [![3.3.5 Build Status](https://circleci.com/gh/TrinityCore/TrinityCore/tree/3.3.5.svg?style=shield)](https://circleci.com/gh/TrinityCore/TrinityCore/tree/3.3.5) | [![cata_classic Build Status](https://circleci.com/gh/TrinityCore/TrinityCore/tree/cata_classic.svg?style=shield)](https://circleci.com/gh/TrinityCore/TrinityCore/tree/cata_classic) +[![master Build status](https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/master?svg=true)](https://ci.appveyor.com/project/DDuarte/trinitycore/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/3.3.5?svg=true)](https://ci.appveyor.com/project/DDuarte/trinitycore/branch/3.3.5) | [![Build status](https://ci.appveyor.com/api/projects/status/54d0u1fxe50ad80o/branch/cata_classic?svg=true)](https://ci.appveyor.com/project/DDuarte/trinitycore/branch/cata_classic) +[![master GCC Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=master&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Amaster+event%3Apush) | [![3.3.5 GCC Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=3.3.5&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3A3.3.5+event%3Apush) | [![cata_classic GCC Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/gcc-build.yml/badge.svg?branch=cata_classic&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Acata_classic+event%3Apush) +[![master macOS arm64 Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/macos-arm-build.yml/badge.svg?branch=master&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Amaster+event%3Apush) | | [![cata_classic macOS arm64 Build status](https://github.com/TrinityCore/TrinityCore/actions/workflows/macos-arm-build.yml/badge.svg?branch=cata_classic&event=push)](https://github.com/TrinityCore/TrinityCore/actions?query=workflow%3AGCC+branch%3Acata_classic+event%3Apush) [![Coverity Scan Build Status](https://scan.coverity.com/projects/435/badge.svg)](https://scan.coverity.com/projects/435) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/4656/badge.svg)](https://scan.coverity.com/projects/4656) | ## Introduction diff --git a/cfpve.cpp b/cfpve.cpp new file mode 100644 index 00000000000..d87a1b273e1 --- /dev/null +++ b/cfpve.cpp @@ -0,0 +1,108 @@ +/* + * This file is part of the TrinityCore 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 General Public License as published by the + * Free Software Foundation; either version 2 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 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 "Player.h" +#include "Group.h" +#include "ObjectAccessor.h" + +enum MiscCrossFactionPVE +{ + ZONE_ICECROWN_CITADEL = 4812, + ICC_MAP_ID = 631, + ZONE_TRIAL_OF_THE_CHAMPION = 4723, + TOCHAMPION_MAP_ID = 650, + ZONE_TRIAL_OF_THE_CRUSADER = 4722, + TOCRUSADER_MAP_ID = 649, + ZONE_PIT_OF_SARON = 4813, + POS_MAP_ID = 658, + ZONE_HALLS_OF_REFLECTION = 4820, + HOR_MAP_ID = 668, + ZONE_FORGE_OF_SOULS = 4809, + FOS_MAP_ID = 632, + ZONE_HALLS_OF_STONE = 4264, + HOS_MAP_ID = 599, + ZONE_THE_NEXUS = 4265, + TN_MAP_ID = 576, + ZONE_WARSONG_GULCH = 3277, + WSG_MAP_ID = 489, + ZONE_ARATHI_BASIN = 3358, + AB_MAP_ID = 529 +}; + +class CfPlayerScript : public PlayerScript +{ +public: + CfPlayerScript() : PlayerScript("CfPlayerScript") {} + + // Called when a player enters the world (logs in or teleports) + void OnLogin(Player* player, bool /* firstLogin */) override + { + HandleFactionChange(player, player->GetMapId()); + } + + // Called when a player changes zones + void OnUpdateZone(Player* player, uint32 newZone, uint32 /*newArea*/) override + { + HandleFactionChange(player, newZone); + } + +private: + // Store the original faction in a map + std::unordered_map originalFactionMap; + + void HandleFactionChange(Player* player, uint32 zoneOrMapId) + { + static const std::set zoneSet = { + ICC_MAP_ID, TOCHAMPION_MAP_ID, TOCRUSADER_MAP_ID, POS_MAP_ID, + HOR_MAP_ID, FOS_MAP_ID, HOS_MAP_ID, TN_MAP_ID, WSG_MAP_ID, AB_MAP_ID + }; + + if (zoneSet.count(zoneOrMapId)) + { + // Change faction to match the group leader + if (Group* group = player->GetGroup()) + { + if (Player* leader = ObjectAccessor::FindPlayer(group->GetLeaderGUID())) + { + if (originalFactionMap.find(player->GetGUID()) == originalFactionMap.end()) + { + // Store the original faction + originalFactionMap[player->GetGUID()] = player->GetFaction(); + } + player->SetFaction(leader->GetFaction()); + } + } + } + else + { + // Restore player's original faction + auto it = originalFactionMap.find(player->GetGUID()); + if (it != originalFactionMap.end()) + { + player->SetFaction(it->second); + originalFactionMap.erase(it); // Clean up the map after restoring + } + } + } +}; + +void AddSC_cfpve() +{ + new CfPlayerScript(); +} diff --git a/revision_data.h.in.cmake b/revision_data.h.in.cmake index 761a7211723..e206a88e529 100644 --- a/revision_data.h.in.cmake +++ b/revision_data.h.in.cmake @@ -9,7 +9,7 @@ #define _SOURCE_DIRECTORY R"(@CMAKE_SOURCE_DIR@)" #define _BUILD_DIRECTORY R"(@BUILDDIR@)" #define _MYSQL_EXECUTABLE R"(@MYSQL_EXECUTABLE@)" - #define _FULL_DATABASE "TDB_full_world_335.24081_2024_08_17.sql" + #define _FULL_DATABASE "TDB_full_world_335.24111_2024_11_22.sql" #define VER_COMPANYNAME_STR "TrinityCore Developers" #define VER_LEGALCOPYRIGHT_STR "(c)2008-@rev_year@ TrinityCore" #define VER_FILEVERSION 0,0,0 diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index dc4eca2c47e..d90850cc9bb 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 8.0.39, for Linux (x86_64) +-- MySQL dump 10.13 Distrib 8.0.40, for Linux (x86_64) -- -- Host: localhost Database: auth -- ------------------------------------------------------ --- Server version 8.0.39-0ubuntu0.22.04.1 +-- Server version 8.0.40-0ubuntu0.22.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -2347,7 +2347,7 @@ CREATE TABLE `realmlist` ( `flag` tinyint unsigned NOT NULL DEFAULT '2', `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', - `population` float unsigned NOT NULL DEFAULT '0', + `population` float NOT NULL DEFAULT '0', `gamebuild` int unsigned NOT NULL DEFAULT '12340', PRIMARY KEY (`id`), UNIQUE KEY `idx_name` (`name`) @@ -2528,8 +2528,10 @@ INSERT INTO `updates` VALUES ('2024_01_21_00_auth.sql','B45B95D7B608D6ACF1BCBA656718C7DEED8CFF00','ARCHIVED','2024-01-21 11:38:22',0), ('2024_04_10_00_auth.sql','CE8BD4D6DF6DE85DBF892507B1B18B746FE4A71D','ARCHIVED','2024-04-10 16:07:02',0), ('2024_08_17_00_auth.sql','B6D7D00D5573958EE84321B029D869C52793F924','ARCHIVED','2024-08-17 22:26:12',0), -('2024_08_28_01_auth.sql','BC5D74553AF2D92606F55C1C462D2700FE73BD34','RELEASED','2024-08-28 14:55:05',0), -('2024_08_30_00_auth.sql','BD76942F1C29AAA2450E051E7CA552672B5E331B','RELEASED','2024-08-30 19:24:30',0); +('2024_08_28_01_auth.sql','BC5D74553AF2D92606F55C1C462D2700FE73BD34','ARCHIVED','2024-08-28 14:55:05',0), +('2024_08_30_00_auth.sql','BD76942F1C29AAA2450E051E7CA552672B5E331B','ARCHIVED','2024-08-30 19:24:30',0), +('2024_09_26_00_auth.sql','E37C3997FD7851EA360774AC568912846C448272','ARCHIVED','2024-09-26 18:27:26',0), +('2024_11_22_00_auth.sql','F2C1D1572A3968E9E9D778EF7DC82778DF3EF887','ARCHIVED','2024-11-22 23:18:14',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; @@ -2631,11 +2633,11 @@ SET character_set_client = @saved_cs_client; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb3 */; -/*!50001 SET character_set_results = utf8mb3 */; -/*!50001 SET collation_connection = utf8mb3_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 */ +/*!50013 SQL SECURITY INVOKER */ /*!50001 VIEW `vw_log_history` AS select from_unixtime(min(`logs`.`time`)) AS `First Logged`,from_unixtime(max(`logs`.`time`)) AS `Last Logged`,count(0) AS `Occurrences`,`realmlist`.`name` AS `Realm`,`logs`.`type` AS `type`,`logs`.`level` AS `level`,`logs`.`string` AS `string` from (`logs` left join `realmlist` on((`logs`.`realm` = `realmlist`.`id`))) group by `logs`.`string`,`logs`.`type`,`logs`.`realm` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -2649,11 +2651,11 @@ SET character_set_client = @saved_cs_client; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb3 */; -/*!50001 SET character_set_results = utf8mb3 */; -/*!50001 SET collation_connection = utf8mb3_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 */ +/*!50013 SQL SECURITY INVOKER */ /*!50001 VIEW `vw_rbac` AS select `t1`.`linkedId` AS `Permission ID`,`t1`.`id` AS `Permission Group`,ifnull(`t2`.`secId`,'linked') AS `Security Level`,`t3`.`name` AS `Permission` from ((`rbac_linked_permissions` `t1` left join `rbac_default_permissions` `t2` on((`t1`.`id` = `t2`.`permissionId`))) left join `rbac_permissions` `t3` on((`t1`.`linkedId` = `t3`.`id`))) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -2668,4 +2670,4 @@ SET character_set_client = @saved_cs_client; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2024-08-17 22:26:14 +-- Dump completed on 2024-11-22 23:18:17 diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 5612d8f3b89..dddc50c1ff4 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 8.0.39, for Linux (x86_64) +-- MySQL dump 10.13 Distrib 8.0.40, for Linux (x86_64) -- -- Host: localhost Database: characters -- ------------------------------------------------------ --- Server version 8.0.39-0ubuntu0.22.04.1 +-- Server version 8.0.40-0ubuntu0.22.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -1340,7 +1340,7 @@ DROP TABLE IF EXISTS `characters`; CREATE TABLE `characters` ( `guid` int unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', `account` int unsigned NOT NULL DEFAULT '0' COMMENT 'Account Identifier', - `name` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, + `name` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, `race` tinyint unsigned NOT NULL DEFAULT '0', `class` tinyint unsigned NOT NULL DEFAULT '0', `gender` tinyint unsigned NOT NULL DEFAULT '0', @@ -1415,9 +1415,9 @@ CREATE TABLE `characters` ( `deleteInfos_Name` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `deleteDate` int unsigned DEFAULT NULL, PRIMARY KEY (`guid`), + UNIQUE KEY `idx_name` (`name`), KEY `idx_account` (`account`), - KEY `idx_online` (`online`), - KEY `idx_name` (`name`) + KEY `idx_online` (`online`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -2686,7 +2686,9 @@ INSERT INTO `updates` VALUES ('2024_01_21_00_characters.sql','4D27D8DAC9F78795DB6938B54F32502EF8D8AAE6','ARCHIVED','2024-01-21 11:38:22',0), ('2024_02_05_00_characters.sql','1777CBCA822AD85777DA4A390DF7AAF41AF68EBD','ARCHIVED','2024-02-05 12:17:19',0), ('2024_04_10_00_characters.sql','E0D6E19ACE6759332402FA27C23B0F7745C49742','ARCHIVED','2024-04-10 16:07:02',0), -('2024_08_17_00_characters.sql','08705FBCB8504E8B1009FDAF955F56D734FAD782','ARCHIVED','2024-08-17 22:26:12',0); +('2024_08_17_00_characters.sql','08705FBCB8504E8B1009FDAF955F56D734FAD782','ARCHIVED','2024-08-17 22:26:12',0), +('2024_10_03_00_characters.sql','408249A6992999A36EB94089D184972E8E0767A3','ARCHIVED','2024-10-03 11:10:18',0), +('2024_11_22_00_characters.sql','9EA2A4F88036D1D5F47EE8A6B634D52D0014986E','ARCHIVED','2024-11-22 23:18:14',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; @@ -2857,4 +2859,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2024-08-17 22:26:14 +-- Dump completed on 2024-11-22 23:18:18 diff --git a/sql/base/dev/world_database.sql b/sql/base/dev/world_database.sql index 6c2b3747ac6..857872f96af 100644 --- a/sql/base/dev/world_database.sql +++ b/sql/base/dev/world_database.sql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 8.0.39, for Linux (x86_64) +-- MySQL dump 10.13 Distrib 8.0.40, for Linux (x86_64) -- -- Host: localhost Database: world -- ------------------------------------------------------ --- Server version 8.0.39-0ubuntu0.22.04.1 +-- Server version 8.0.40-0ubuntu0.22.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -342,6 +342,7 @@ CREATE TABLE `creature` ( `unit_flags` int unsigned NOT NULL DEFAULT '0', `dynamicflags` int unsigned NOT NULL DEFAULT '0', `ScriptName` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '', + `StringId` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `VerifiedBuild` int DEFAULT '0', PRIMARY KEY (`guid`), KEY `idx_map` (`map`), @@ -676,6 +677,7 @@ CREATE TABLE `creature_template` ( `spell_school_immune_mask` int unsigned NOT NULL DEFAULT '0', `flags_extra` int unsigned NOT NULL DEFAULT '0', `ScriptName` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', + `StringId` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `VerifiedBuild` int DEFAULT NULL, PRIMARY KEY (`entry`), KEY `idx_name` (`name`) @@ -1223,6 +1225,7 @@ CREATE TABLE `gameobject` ( `animprogress` tinyint unsigned NOT NULL DEFAULT '0', `state` tinyint unsigned NOT NULL DEFAULT '0', `ScriptName` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '', + `StringId` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `VerifiedBuild` int DEFAULT NULL, PRIMARY KEY (`guid`) ) ENGINE=InnoDB AUTO_INCREMENT=2134507 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Gameobject System'; @@ -1370,6 +1373,7 @@ CREATE TABLE `gameobject_template` ( `Data23` int unsigned NOT NULL DEFAULT '0', `AIName` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `ScriptName` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', + `StringId` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `VerifiedBuild` int DEFAULT NULL, PRIMARY KEY (`entry`), KEY `idx_name` (`name`) @@ -4016,7 +4020,7 @@ CREATE TABLE `waypoints` ( /*!50001 SET character_set_results = utf8mb3 */; /*!50001 SET collation_connection = utf8mb3_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 */ +/*!50013 SQL SECURITY DEFINER */ /*!50001 VIEW `vw_conditions_with_labels` AS select (case when (`conditions`.`SourceTypeOrReferenceId` = 0) then 'CONDITION_SOURCE_TYPE_NONE' when (`conditions`.`SourceTypeOrReferenceId` = 1) then 'CONDITION_SOURCE_TYPE_CREATURE_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 2) then 'CONDITION_SOURCE_TYPE_DISENCHANT_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 3) then 'CONDITION_SOURCE_TYPE_FISHING_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 4) then 'CONDITION_SOURCE_TYPE_GAMEOBJECT_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 5) then 'CONDITION_SOURCE_TYPE_ITEM_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 6) then 'CONDITION_SOURCE_TYPE_MAIL_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 7) then 'CONDITION_SOURCE_TYPE_MILLING_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 8) then 'CONDITION_SOURCE_TYPE_PICKPOCKETING_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 9) then 'CONDITION_SOURCE_TYPE_PROSPECTING_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 10) then 'CONDITION_SOURCE_TYPE_REFERENCE_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 11) then 'CONDITION_SOURCE_TYPE_SKINNING_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 12) then 'CONDITION_SOURCE_TYPE_SPELL_LOOT_TEMPLATE' when (`conditions`.`SourceTypeOrReferenceId` = 13) then 'CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET' when (`conditions`.`SourceTypeOrReferenceId` = 14) then 'CONDITION_SOURCE_TYPE_GOSSIP_MENU' when (`conditions`.`SourceTypeOrReferenceId` = 15) then 'CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION' when (`conditions`.`SourceTypeOrReferenceId` = 16) then 'CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE' when (`conditions`.`SourceTypeOrReferenceId` = 17) then 'CONDITION_SOURCE_TYPE_SPELL' when (`conditions`.`SourceTypeOrReferenceId` = 18) then 'CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT' when (`conditions`.`SourceTypeOrReferenceId` = 19) then 'CONDITION_SOURCE_TYPE_QUEST_AVAILABLE' when (`conditions`.`SourceTypeOrReferenceId` = 21) then 'CONDITION_SOURCE_TYPE_VEHICLE_SPELL' when (`conditions`.`SourceTypeOrReferenceId` = 22) then 'CONDITION_SOURCE_TYPE_SMART_EVENT' when (`conditions`.`SourceTypeOrReferenceId` = 23) then 'CONDITION_SOURCE_TYPE_NPC_VENDOR' when (`conditions`.`SourceTypeOrReferenceId` = 24) then 'CONDITION_SOURCE_TYPE_SPELL_PROC' when (`conditions`.`SourceTypeOrReferenceId` = 25) then 'CONDITION_SOURCE_TYPE_TERRAIN_SWAP' when (`conditions`.`SourceTypeOrReferenceId` = 26) then 'CONDITION_SOURCE_TYPE_PHASE' when (`conditions`.`SourceTypeOrReferenceId` = 27) then 'CONDITION_SOURCE_TYPE_GRAVEYARD' else `conditions`.`SourceTypeOrReferenceId` end) AS `SourceTypeOrReferenceId`,`conditions`.`SourceGroup` AS `SourceGroup`,`conditions`.`SourceEntry` AS `SourceEntry`,`conditions`.`SourceId` AS `SourceId`,`conditions`.`ElseGroup` AS `ElseGroup`,(case when (`conditions`.`SourceTypeOrReferenceId` = 0) then 'CONDITION_NONE' when (`conditions`.`SourceTypeOrReferenceId` = 1) then 'CONDITION_AURA' when (`conditions`.`SourceTypeOrReferenceId` = 2) then 'CONDITION_ITEM' when (`conditions`.`SourceTypeOrReferenceId` = 3) then 'CONDITION_ITEM_EQUIPPED' when (`conditions`.`SourceTypeOrReferenceId` = 4) then 'CONDITION_ZONEID' when (`conditions`.`SourceTypeOrReferenceId` = 5) then 'CONDITION_REPUTATION_RANK' when (`conditions`.`SourceTypeOrReferenceId` = 6) then 'CONDITION_TEAM' when (`conditions`.`SourceTypeOrReferenceId` = 7) then 'CONDITION_SKILL' when (`conditions`.`SourceTypeOrReferenceId` = 8) then 'CONDITION_QUESTREWARDED' when (`conditions`.`SourceTypeOrReferenceId` = 9) then 'CONDITION_QUESTTAKEN' when (`conditions`.`SourceTypeOrReferenceId` = 10) then 'CONDITION_DRUNKENSTATE' when (`conditions`.`SourceTypeOrReferenceId` = 11) then 'CONDITION_WORLD_STATE' when (`conditions`.`SourceTypeOrReferenceId` = 12) then 'CONDITION_ACTIVE_EVENT' when (`conditions`.`SourceTypeOrReferenceId` = 13) then 'CONDITION_INSTANCE_INFO' when (`conditions`.`SourceTypeOrReferenceId` = 14) then 'CONDITION_QUEST_NONE' when (`conditions`.`SourceTypeOrReferenceId` = 15) then 'CONDITION_CLASS' when (`conditions`.`SourceTypeOrReferenceId` = 16) then 'CONDITION_RACE' when (`conditions`.`SourceTypeOrReferenceId` = 17) then 'CONDITION_ACHIEVEMENT' when (`conditions`.`SourceTypeOrReferenceId` = 18) then 'CONDITION_TITLE' when (`conditions`.`SourceTypeOrReferenceId` = 19) then 'CONDITION_SPAWNMASK' when (`conditions`.`SourceTypeOrReferenceId` = 20) then 'CONDITION_GENDER' when (`conditions`.`SourceTypeOrReferenceId` = 21) then 'CONDITION_UNIT_STATE' when (`conditions`.`SourceTypeOrReferenceId` = 22) then 'CONDITION_MAPID' when (`conditions`.`SourceTypeOrReferenceId` = 23) then 'CONDITION_AREAID' when (`conditions`.`SourceTypeOrReferenceId` = 24) then 'CONDITION_CREATURE_TYPE' when (`conditions`.`SourceTypeOrReferenceId` = 25) then 'CONDITION_SPELL' when (`conditions`.`SourceTypeOrReferenceId` = 26) then 'CONDITION_PHASEMASK' when (`conditions`.`SourceTypeOrReferenceId` = 27) then 'CONDITION_LEVEL' when (`conditions`.`SourceTypeOrReferenceId` = 28) then 'CONDITION_QUEST_COMPLETE' when (`conditions`.`SourceTypeOrReferenceId` = 29) then 'CONDITION_NEAR_CREATURE' when (`conditions`.`SourceTypeOrReferenceId` = 30) then 'CONDITION_NEAR_GAMEOBJECT' when (`conditions`.`SourceTypeOrReferenceId` = 31) then 'CONDITION_OBJECT_ENTRY_GUID' when (`conditions`.`SourceTypeOrReferenceId` = 32) then 'CONDITION_TYPE_MASK' when (`conditions`.`SourceTypeOrReferenceId` = 33) then 'CONDITION_RELATION_TO' when (`conditions`.`SourceTypeOrReferenceId` = 34) then 'CONDITION_REACTION_TO' when (`conditions`.`SourceTypeOrReferenceId` = 35) then 'CONDITION_DISTANCE_TO' when (`conditions`.`SourceTypeOrReferenceId` = 36) then 'CONDITION_ALIVE' when (`conditions`.`SourceTypeOrReferenceId` = 37) then 'CONDITION_HP_VAL' when (`conditions`.`SourceTypeOrReferenceId` = 38) then 'CONDITION_HP_PCT' when (`conditions`.`SourceTypeOrReferenceId` = 39) then 'CONDITION_REALM_ACHIEVEMENT' when (`conditions`.`SourceTypeOrReferenceId` = 40) then 'CONDITION_IN_WATER' when (`conditions`.`SourceTypeOrReferenceId` = 41) then 'CONDITION_TERRAIN_SWAP' when (`conditions`.`SourceTypeOrReferenceId` = 42) then 'CONDITION_STAND_STATE' when (`conditions`.`SourceTypeOrReferenceId` = 43) then 'CONDITION_DAILY_QUEST_DONE' when (`conditions`.`SourceTypeOrReferenceId` = 44) then 'CONDITION_CHARMED' when (`conditions`.`SourceTypeOrReferenceId` = 45) then 'CONDITION_PET_TYPE' when (`conditions`.`SourceTypeOrReferenceId` = 46) then 'CONDITION_TAXI' when (`conditions`.`SourceTypeOrReferenceId` = 47) then 'CONDITION_QUESTSTATE' when (`conditions`.`SourceTypeOrReferenceId` = 48) then 'CONDITION_QUEST_OBJECTIVE_PROGRESS' when (`conditions`.`SourceTypeOrReferenceId` = 49) then 'CONDITION_DIFFICULTY_ID' when (`conditions`.`SourceTypeOrReferenceId` = 50) then 'CONDITION_GAMEMASTER' when (`conditions`.`SourceTypeOrReferenceId` = 51) then 'CONDITION_OBJECT_ENTRY_GUID_MASTER' when (`conditions`.`SourceTypeOrReferenceId` = 52) then 'CONDITION_TYPE_MASK_MASTER' else `conditions`.`ConditionTypeOrReference` end) AS `ConditionTypeOrReference`,`conditions`.`ConditionTarget` AS `ConditionTarget`,`conditions`.`ConditionValue1` AS `ConditionValue1`,`conditions`.`ConditionValue2` AS `ConditionValue2`,`conditions`.`ConditionValue3` AS `ConditionValue3`,`conditions`.`NegativeCondition` AS `NegativeCondition`,`conditions`.`ErrorType` AS `ErrorType`,`conditions`.`ErrorTextId` AS `ErrorTextId`,`conditions`.`ScriptName` AS `ScriptName`,`conditions`.`Comment` AS `Comment` from `conditions` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -4034,7 +4038,7 @@ CREATE TABLE `waypoints` ( /*!50001 SET character_set_results = utf8mb3 */; /*!50001 SET collation_connection = utf8mb3_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 */ +/*!50013 SQL SECURITY DEFINER */ /*!50001 VIEW `vw_disables_with_labels` AS select (case when (`disables`.`sourceType` = 0) then 'DISABLE_TYPE_SPELL' when (`disables`.`sourceType` = 1) then 'DISABLE_TYPE_QUEST' when (`disables`.`sourceType` = 2) then 'DISABLE_TYPE_MAP' when (`disables`.`sourceType` = 3) then 'DISABLE_TYPE_BATTLEGROUND' when (`disables`.`sourceType` = 4) then 'DISABLE_TYPE_ACHIEVEMENT_CRITERIA' when (`disables`.`sourceType` = 5) then 'DISABLE_TYPE_OUTDOORPVP' when (`disables`.`sourceType` = 6) then 'DISABLE_TYPE_VMAP' when (`disables`.`sourceType` = 7) then 'DISABLE_TYPE_MMAP' when (`disables`.`sourceType` = 8) then 'DISABLE_TYPE_LFG_MAP' else `disables`.`sourceType` end) AS `sourceType`,`disables`.`entry` AS `entry`,`disables`.`flags` AS `flags`,`disables`.`params_0` AS `params_0`,`disables`.`params_1` AS `params_1`,`disables`.`comment` AS `comment` from `disables` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -4052,7 +4056,7 @@ CREATE TABLE `waypoints` ( /*!50001 SET character_set_results = utf8mb3 */; /*!50001 SET collation_connection = utf8mb3_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 */ +/*!50013 SQL SECURITY DEFINER */ /*!50001 VIEW `vw_smart_scripts_with_labels` AS select `smart_scripts`.`entryorguid` AS `entryorguid`,`smart_scripts`.`source_type` AS `source_type`,`smart_scripts`.`id` AS `id`,`smart_scripts`.`link` AS `link`,(case when (`smart_scripts`.`event_type` = 0) then 'SMART_EVENT_UPDATE_IC' when (`smart_scripts`.`event_type` = 1) then 'SMART_EVENT_UPDATE_OOC' when (`smart_scripts`.`event_type` = 2) then 'SMART_EVENT_HEALTH_PCT' when (`smart_scripts`.`event_type` = 3) then 'SMART_EVENT_MANA_PCT' when (`smart_scripts`.`event_type` = 4) then 'SMART_EVENT_AGGRO' when (`smart_scripts`.`event_type` = 5) then 'SMART_EVENT_KILL' when (`smart_scripts`.`event_type` = 6) then 'SMART_EVENT_DEATH' when (`smart_scripts`.`event_type` = 7) then 'SMART_EVENT_EVADE' when (`smart_scripts`.`event_type` = 8) then 'SMART_EVENT_SPELLHIT' when (`smart_scripts`.`event_type` = 9) then 'SMART_EVENT_RANGE' when (`smart_scripts`.`event_type` = 10) then 'SMART_EVENT_OOC_LOS' when (`smart_scripts`.`event_type` = 11) then 'SMART_EVENT_RESPAWN' when (`smart_scripts`.`event_type` = 12) then 'SMART_EVENT_TARGET_HEALTH_PCT' when (`smart_scripts`.`event_type` = 13) then 'SMART_EVENT_VICTIM_CASTING' when (`smart_scripts`.`event_type` = 14) then 'SMART_EVENT_FRIENDLY_HEALTH' when (`smart_scripts`.`event_type` = 15) then 'SMART_EVENT_FRIENDLY_IS_CC' when (`smart_scripts`.`event_type` = 16) then 'SMART_EVENT_FRIENDLY_MISSING_BUFF' when (`smart_scripts`.`event_type` = 17) then 'SMART_EVENT_SUMMONED_UNIT' when (`smart_scripts`.`event_type` = 18) then 'SMART_EVENT_TARGET_MANA_PCT' when (`smart_scripts`.`event_type` = 19) then 'SMART_EVENT_ACCEPTED_QUEST' when (`smart_scripts`.`event_type` = 20) then 'SMART_EVENT_REWARD_QUEST' when (`smart_scripts`.`event_type` = 21) then 'SMART_EVENT_REACHED_HOME' when (`smart_scripts`.`event_type` = 22) then 'SMART_EVENT_RECEIVE_EMOTE' when (`smart_scripts`.`event_type` = 23) then 'SMART_EVENT_HAS_AURA' when (`smart_scripts`.`event_type` = 24) then 'SMART_EVENT_TARGET_BUFFED' when (`smart_scripts`.`event_type` = 25) then 'SMART_EVENT_RESET' when (`smart_scripts`.`event_type` = 26) then 'SMART_EVENT_IC_LOS' when (`smart_scripts`.`event_type` = 27) then 'SMART_EVENT_PASSENGER_BOARDED' when (`smart_scripts`.`event_type` = 28) then 'SMART_EVENT_PASSENGER_REMOVED' when (`smart_scripts`.`event_type` = 29) then 'SMART_EVENT_CHARMED' when (`smart_scripts`.`event_type` = 30) then 'SMART_EVENT_CHARMED_TARGET' when (`smart_scripts`.`event_type` = 31) then 'SMART_EVENT_SPELLHIT_TARGET' when (`smart_scripts`.`event_type` = 32) then 'SMART_EVENT_DAMAGED' when (`smart_scripts`.`event_type` = 33) then 'SMART_EVENT_DAMAGED_TARGET' when (`smart_scripts`.`event_type` = 34) then 'SMART_EVENT_MOVEMENTINFORM' when (`smart_scripts`.`event_type` = 35) then 'SMART_EVENT_SUMMON_DESPAWNED' when (`smart_scripts`.`event_type` = 36) then 'SMART_EVENT_CORPSE_REMOVED' when (`smart_scripts`.`event_type` = 37) then 'SMART_EVENT_AI_INIT' when (`smart_scripts`.`event_type` = 38) then 'SMART_EVENT_DATA_SET' when (`smart_scripts`.`event_type` = 39) then 'SMART_EVENT_WAYPOINT_START' when (`smart_scripts`.`event_type` = 40) then 'SMART_EVENT_WAYPOINT_REACHED' when (`smart_scripts`.`event_type` = 41) then 'SMART_EVENT_TRANSPORT_ADDPLAYER' when (`smart_scripts`.`event_type` = 42) then 'SMART_EVENT_TRANSPORT_ADDCREATURE' when (`smart_scripts`.`event_type` = 43) then 'SMART_EVENT_TRANSPORT_REMOVE_PLAYER' when (`smart_scripts`.`event_type` = 44) then 'SMART_EVENT_TRANSPORT_RELOCATE' when (`smart_scripts`.`event_type` = 45) then 'SMART_EVENT_INSTANCE_PLAYER_ENTER' when (`smart_scripts`.`event_type` = 46) then 'SMART_EVENT_AREATRIGGER_ONTRIGGER' when (`smart_scripts`.`event_type` = 47) then 'SMART_EVENT_QUEST_ACCEPTED' when (`smart_scripts`.`event_type` = 48) then 'SMART_EVENT_QUEST_OBJ_COPLETETION' when (`smart_scripts`.`event_type` = 49) then 'SMART_EVENT_QUEST_COMPLETION' when (`smart_scripts`.`event_type` = 50) then 'SMART_EVENT_QUEST_REWARDED' when (`smart_scripts`.`event_type` = 51) then 'SMART_EVENT_QUEST_FAIL' when (`smart_scripts`.`event_type` = 52) then 'SMART_EVENT_TEXT_OVER' when (`smart_scripts`.`event_type` = 53) then 'SMART_EVENT_RECEIVE_HEAL' when (`smart_scripts`.`event_type` = 54) then 'SMART_EVENT_JUST_SUMMONED' when (`smart_scripts`.`event_type` = 55) then 'SMART_EVENT_WAYPOINT_PAUSED' when (`smart_scripts`.`event_type` = 56) then 'SMART_EVENT_WAYPOINT_RESUMED' when (`smart_scripts`.`event_type` = 57) then 'SMART_EVENT_WAYPOINT_STOPPED' when (`smart_scripts`.`event_type` = 58) then 'SMART_EVENT_WAYPOINT_ENDED' when (`smart_scripts`.`event_type` = 59) then 'SMART_EVENT_TIMED_EVENT_TRIGGERED' when (`smart_scripts`.`event_type` = 60) then 'SMART_EVENT_UPDATE' when (`smart_scripts`.`event_type` = 61) then 'SMART_EVENT_LINK' when (`smart_scripts`.`event_type` = 62) then 'SMART_EVENT_GOSSIP_SELECT' when (`smart_scripts`.`event_type` = 63) then 'SMART_EVENT_JUST_CREATED' when (`smart_scripts`.`event_type` = 64) then 'SMART_EVENT_GOSSIP_HELLO' when (`smart_scripts`.`event_type` = 65) then 'SMART_EVENT_FOLLOW_COMPLETED' when (`smart_scripts`.`event_type` = 66) then 'SMART_EVENT_EVENT_PHASE_CHANGE' when (`smart_scripts`.`event_type` = 67) then 'SMART_EVENT_IS_BEHIND_TARGET' when (`smart_scripts`.`event_type` = 68) then 'SMART_EVENT_GAME_EVENT_START' when (`smart_scripts`.`event_type` = 69) then 'SMART_EVENT_GAME_EVENT_END' when (`smart_scripts`.`event_type` = 70) then 'SMART_EVENT_GO_LOOT_STATE_CHANGED' when (`smart_scripts`.`event_type` = 71) then 'SMART_EVENT_GO_EVENT_INFORM' when (`smart_scripts`.`event_type` = 72) then 'SMART_EVENT_ACTION_DONE' when (`smart_scripts`.`event_type` = 73) then 'SMART_EVENT_ON_SPELLCLICK' when (`smart_scripts`.`event_type` = 74) then 'SMART_EVENT_FRIENDLY_HEALTH_PCT' when (`smart_scripts`.`event_type` = 75) then 'SMART_EVENT_DISTANCE_CREATURE' when (`smart_scripts`.`event_type` = 76) then 'SMART_EVENT_DISTANCE_GAMEOBJECT' when (`smart_scripts`.`event_type` = 77) then 'SMART_EVENT_COUNTER_SET' when (`smart_scripts`.`event_type` = 78) then 'SMART_EVENT_SCENE_START' when (`smart_scripts`.`event_type` = 79) then 'SMART_EVENT_SCENE_TRIGGER' when (`smart_scripts`.`event_type` = 80) then 'SMART_EVENT_SCENE_CANCEL' when (`smart_scripts`.`event_type` = 81) then 'SMART_EVENT_SCENE_COMPLETE' when (`smart_scripts`.`event_type` = 82) then 'SMART_EVENT_SUMMONED_UNIT_DIES' else `smart_scripts`.`event_type` end) AS `event_type`,`smart_scripts`.`event_phase_mask` AS `event_phase_mask`,`smart_scripts`.`event_chance` AS `event_chance`,`smart_scripts`.`event_flags` AS `event_flags`,`smart_scripts`.`event_param1` AS `event_param1`,`smart_scripts`.`event_param2` AS `event_param2`,`smart_scripts`.`event_param3` AS `event_param3`,`smart_scripts`.`event_param4` AS `event_param4`,`smart_scripts`.`event_param5` AS `event_param5`,(case when (`smart_scripts`.`action_type` = 0) then 'SMART_ACTION_NONE' when (`smart_scripts`.`action_type` = 1) then 'SMART_ACTION_TALK' when (`smart_scripts`.`action_type` = 2) then 'SMART_ACTION_SET_FACTION' when (`smart_scripts`.`action_type` = 3) then 'SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL' when (`smart_scripts`.`action_type` = 4) then 'SMART_ACTION_SOUND' when (`smart_scripts`.`action_type` = 5) then 'SMART_ACTION_PLAY_EMOTE' when (`smart_scripts`.`action_type` = 6) then 'SMART_ACTION_FAIL_QUEST' when (`smart_scripts`.`action_type` = 7) then 'SMART_ACTION_OFFER_QUEST' when (`smart_scripts`.`action_type` = 8) then 'SMART_ACTION_SET_REACT_STATE' when (`smart_scripts`.`action_type` = 9) then 'SMART_ACTION_ACTIVATE_GOBJECT' when (`smart_scripts`.`action_type` = 10) then 'SMART_ACTION_RANDOM_EMOTE' when (`smart_scripts`.`action_type` = 11) then 'SMART_ACTION_CAST' when (`smart_scripts`.`action_type` = 12) then 'SMART_ACTION_SUMMON_CREATURE' when (`smart_scripts`.`action_type` = 13) then 'SMART_ACTION_THREAT_SINGLE_PCT' when (`smart_scripts`.`action_type` = 14) then 'SMART_ACTION_THREAT_ALL_PCT' when (`smart_scripts`.`action_type` = 15) then 'SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS' when (`smart_scripts`.`action_type` = 16) then 'SMART_ACTION_RESERVED_16' when (`smart_scripts`.`action_type` = 17) then 'SMART_ACTION_SET_EMOTE_STATE' when (`smart_scripts`.`action_type` = 18) then 'SMART_ACTION_SET_UNIT_FLAG' when (`smart_scripts`.`action_type` = 19) then 'SMART_ACTION_REMOVE_UNIT_FLAG' when (`smart_scripts`.`action_type` = 20) then 'SMART_ACTION_AUTO_ATTACK' when (`smart_scripts`.`action_type` = 21) then 'SMART_ACTION_ALLOW_COMBAT_MOVEMENT' when (`smart_scripts`.`action_type` = 22) then 'SMART_ACTION_SET_EVENT_PHASE' when (`smart_scripts`.`action_type` = 23) then 'SMART_ACTION_INC_EVENT_PHASE' when (`smart_scripts`.`action_type` = 24) then 'SMART_ACTION_EVADE' when (`smart_scripts`.`action_type` = 25) then 'SMART_ACTION_FLEE_FOR_ASSIST' when (`smart_scripts`.`action_type` = 26) then 'SMART_ACTION_CALL_GROUPEVENTHAPPENS' when (`smart_scripts`.`action_type` = 27) then 'SMART_ACTION_COMBAT_STOP' when (`smart_scripts`.`action_type` = 28) then 'SMART_ACTION_REMOVEAURASFROMSPELL' when (`smart_scripts`.`action_type` = 29) then 'SMART_ACTION_FOLLOW' when (`smart_scripts`.`action_type` = 30) then 'SMART_ACTION_RANDOM_PHASE' when (`smart_scripts`.`action_type` = 31) then 'SMART_ACTION_RANDOM_PHASE_RANGE' when (`smart_scripts`.`action_type` = 32) then 'SMART_ACTION_RESET_GOBJECT' when (`smart_scripts`.`action_type` = 33) then 'SMART_ACTION_CALL_KILLEDMONSTER' when (`smart_scripts`.`action_type` = 34) then 'SMART_ACTION_SET_INST_DATA' when (`smart_scripts`.`action_type` = 35) then 'SMART_ACTION_SET_INST_DATA64' when (`smart_scripts`.`action_type` = 36) then 'SMART_ACTION_UPDATE_TEMPLATE' when (`smart_scripts`.`action_type` = 37) then 'SMART_ACTION_DIE' when (`smart_scripts`.`action_type` = 38) then 'SMART_ACTION_SET_IN_COMBAT_WITH_ZONE' when (`smart_scripts`.`action_type` = 39) then 'SMART_ACTION_CALL_FOR_HELP' when (`smart_scripts`.`action_type` = 40) then 'SMART_ACTION_SET_SHEATH' when (`smart_scripts`.`action_type` = 41) then 'SMART_ACTION_FORCE_DESPAWN' when (`smart_scripts`.`action_type` = 42) then 'SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL' when (`smart_scripts`.`action_type` = 43) then 'SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL' when (`smart_scripts`.`action_type` = 44) then 'SMART_ACTION_SET_INGAME_PHASE_MASK' when (`smart_scripts`.`action_type` = 45) then 'SMART_ACTION_SET_DATA' when (`smart_scripts`.`action_type` = 46) then 'SMART_ACTION_ATTACK_STOP' when (`smart_scripts`.`action_type` = 47) then 'SMART_ACTION_SET_VISIBILITY' when (`smart_scripts`.`action_type` = 48) then 'SMART_ACTION_SET_ACTIVE' when (`smart_scripts`.`action_type` = 49) then 'SMART_ACTION_ATTACK_START' when (`smart_scripts`.`action_type` = 50) then 'SMART_ACTION_SUMMON_GO' when (`smart_scripts`.`action_type` = 51) then 'SMART_ACTION_KILL_UNIT' when (`smart_scripts`.`action_type` = 52) then 'SMART_ACTION_ACTIVATE_TAXI' when (`smart_scripts`.`action_type` = 53) then 'SMART_ACTION_WP_START' when (`smart_scripts`.`action_type` = 54) then 'SMART_ACTION_WP_PAUSE' when (`smart_scripts`.`action_type` = 55) then 'SMART_ACTION_WP_STOP' when (`smart_scripts`.`action_type` = 56) then 'SMART_ACTION_ADD_ITEM' when (`smart_scripts`.`action_type` = 57) then 'SMART_ACTION_REMOVE_ITEM' when (`smart_scripts`.`action_type` = 58) then 'SMART_ACTION_INSTALL_AI_TEMPLATE' when (`smart_scripts`.`action_type` = 59) then 'SMART_ACTION_SET_RUN' when (`smart_scripts`.`action_type` = 60) then 'SMART_ACTION_SET_DISABLE_GRAVITY' when (`smart_scripts`.`action_type` = 61) then 'SMART_ACTION_SET_SWIM' when (`smart_scripts`.`action_type` = 62) then 'SMART_ACTION_TELEPORT' when (`smart_scripts`.`action_type` = 63) then 'SMART_ACTION_SET_COUNTER' when (`smart_scripts`.`action_type` = 64) then 'SMART_ACTION_STORE_TARGET_LIST' when (`smart_scripts`.`action_type` = 65) then 'SMART_ACTION_WP_RESUME' when (`smart_scripts`.`action_type` = 66) then 'SMART_ACTION_SET_ORIENTATION' when (`smart_scripts`.`action_type` = 67) then 'SMART_ACTION_CREATE_TIMED_EVENT' when (`smart_scripts`.`action_type` = 68) then 'SMART_ACTION_PLAYMOVIE' when (`smart_scripts`.`action_type` = 69) then 'SMART_ACTION_MOVE_TO_POS' when (`smart_scripts`.`action_type` = 70) then 'SMART_ACTION_ENABLE_TEMP_GOBJ' when (`smart_scripts`.`action_type` = 71) then 'SMART_ACTION_EQUIP' when (`smart_scripts`.`action_type` = 72) then 'SMART_ACTION_CLOSE_GOSSIP' when (`smart_scripts`.`action_type` = 73) then 'SMART_ACTION_TRIGGER_TIMED_EVENT' when (`smart_scripts`.`action_type` = 74) then 'SMART_ACTION_REMOVE_TIMED_EVENT' when (`smart_scripts`.`action_type` = 75) then 'SMART_ACTION_ADD_AURA' when (`smart_scripts`.`action_type` = 76) then 'SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT' when (`smart_scripts`.`action_type` = 77) then 'SMART_ACTION_RESET_SCRIPT_BASE_OBJECT' when (`smart_scripts`.`action_type` = 78) then 'SMART_ACTION_CALL_SCRIPT_RESET' when (`smart_scripts`.`action_type` = 79) then 'SMART_ACTION_SET_RANGED_MOVEMENT' when (`smart_scripts`.`action_type` = 80) then 'SMART_ACTION_CALL_TIMED_ACTIONLIST' when (`smart_scripts`.`action_type` = 81) then 'SMART_ACTION_SET_NPC_FLAG' when (`smart_scripts`.`action_type` = 82) then 'SMART_ACTION_ADD_NPC_FLAG' when (`smart_scripts`.`action_type` = 83) then 'SMART_ACTION_REMOVE_NPC_FLAG' when (`smart_scripts`.`action_type` = 84) then 'SMART_ACTION_SIMPLE_TALK' when (`smart_scripts`.`action_type` = 85) then 'SMART_ACTION_SELF_CAST' when (`smart_scripts`.`action_type` = 86) then 'SMART_ACTION_CROSS_CAST' when (`smart_scripts`.`action_type` = 87) then 'SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST' when (`smart_scripts`.`action_type` = 88) then 'SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST' when (`smart_scripts`.`action_type` = 89) then 'SMART_ACTION_RANDOM_MOVE' when (`smart_scripts`.`action_type` = 90) then 'SMART_ACTION_SET_UNIT_FIELD_BYTES_1' when (`smart_scripts`.`action_type` = 91) then 'SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1' when (`smart_scripts`.`action_type` = 92) then 'SMART_ACTION_INTERRUPT_SPELL' when (`smart_scripts`.`action_type` = 93) then 'SMART_ACTION_SEND_GO_CUSTOM_ANIM' when (`smart_scripts`.`action_type` = 94) then 'SMART_ACTION_SET_DYNAMIC_FLAG' when (`smart_scripts`.`action_type` = 95) then 'SMART_ACTION_ADD_DYNAMIC_FLAG' when (`smart_scripts`.`action_type` = 96) then 'SMART_ACTION_REMOVE_DYNAMIC_FLAG' when (`smart_scripts`.`action_type` = 97) then 'SMART_ACTION_JUMP_TO_POS' when (`smart_scripts`.`action_type` = 98) then 'SMART_ACTION_SEND_GOSSIP_MENU' when (`smart_scripts`.`action_type` = 99) then 'SMART_ACTION_GO_SET_LOOT_STATE' when (`smart_scripts`.`action_type` = 100) then 'SMART_ACTION_SEND_TARGET_TO_TARGET' when (`smart_scripts`.`action_type` = 101) then 'SMART_ACTION_SET_HOME_POS' when (`smart_scripts`.`action_type` = 102) then 'SMART_ACTION_SET_HEALTH_REGEN' when (`smart_scripts`.`action_type` = 103) then 'SMART_ACTION_SET_ROOT' when (`smart_scripts`.`action_type` = 104) then 'SMART_ACTION_SET_GO_FLAG' when (`smart_scripts`.`action_type` = 105) then 'SMART_ACTION_ADD_GO_FLAG' when (`smart_scripts`.`action_type` = 106) then 'SMART_ACTION_REMOVE_GO_FLAG' when (`smart_scripts`.`action_type` = 107) then 'SMART_ACTION_SUMMON_CREATURE_GROUP' when (`smart_scripts`.`action_type` = 108) then 'SMART_ACTION_SET_POWER' when (`smart_scripts`.`action_type` = 109) then 'SMART_ACTION_ADD_POWER' when (`smart_scripts`.`action_type` = 110) then 'SMART_ACTION_REMOVE_POWER' when (`smart_scripts`.`action_type` = 111) then 'SMART_ACTION_GAME_EVENT_STOP' when (`smart_scripts`.`action_type` = 112) then 'SMART_ACTION_GAME_EVENT_START' when (`smart_scripts`.`action_type` = 113) then 'SMART_ACTION_START_CLOSEST_WAYPOINT' when (`smart_scripts`.`action_type` = 114) then 'SMART_ACTION_MOVE_OFFSET' when (`smart_scripts`.`action_type` = 115) then 'SMART_ACTION_RANDOM_SOUND' when (`smart_scripts`.`action_type` = 116) then 'SMART_ACTION_SET_CORPSE_DELAY' when (`smart_scripts`.`action_type` = 117) then 'SMART_ACTION_DISABLE_EVADE' when (`smart_scripts`.`action_type` = 118) then 'SMART_ACTION_GO_SET_GO_STATE' when (`smart_scripts`.`action_type` = 119) then 'SMART_ACTION_SET_CAN_FLY' when (`smart_scripts`.`action_type` = 120) then 'SMART_ACTION_REMOVE_AURAS_BY_TYPE' when (`smart_scripts`.`action_type` = 121) then 'SMART_ACTION_SET_SIGHT_DIST' when (`smart_scripts`.`action_type` = 122) then 'SMART_ACTION_FLEE' when (`smart_scripts`.`action_type` = 123) then 'SMART_ACTION_ADD_THREAT' when (`smart_scripts`.`action_type` = 124) then 'SMART_ACTION_LOAD_EQUIPMENT' when (`smart_scripts`.`action_type` = 125) then 'SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT' when (`smart_scripts`.`action_type` = 126) then 'SMART_ACTION_REMOVE_ALL_GAMEOBJECTS' when (`smart_scripts`.`action_type` = 127) then 'SMART_ACTION_PAUSE_MOVEMENT' when (`smart_scripts`.`action_type` = 128) then 'SMART_ACTION_PLAY_ANIMKIT' when (`smart_scripts`.`action_type` = 129) then 'SMART_ACTION_SCENE_PLAY' when (`smart_scripts`.`action_type` = 130) then 'SMART_ACTION_SCENE_CANCEL' when (`smart_scripts`.`action_type` = 131) then 'SMART_ACTION_SPAWN_SPAWNGROUP' when (`smart_scripts`.`action_type` = 132) then 'SMART_ACTION_DESPAWN_SPAWNGROUP' when (`smart_scripts`.`action_type` = 133) then 'SMART_ACTION_RESPAWN_BY_SPAWNID' when (`smart_scripts`.`action_type` = 134) then 'SMART_ACTION_INVOKER_CAST' when (`smart_scripts`.`action_type` = 135) then 'SMART_ACTION_PLAY_CINEMATIC' when (`smart_scripts`.`action_type` = 136) then 'SMART_ACTION_SET_MOVEMENT_SPEED' when (`smart_scripts`.`action_type` = 137) then 'SMART_ACTION_PLAY_SPELL_VISUAL_KIT' when (`smart_scripts`.`action_type` = 138) then 'SMART_ACTION_OVERRIDE_LIGHT' when (`smart_scripts`.`action_type` = 139) then 'SMART_ACTION_OVERRIDE_WEATHER' else `smart_scripts`.`action_type` end) AS `action_type`,`smart_scripts`.`action_param1` AS `action_param1`,`smart_scripts`.`action_param2` AS `action_param2`,`smart_scripts`.`action_param3` AS `action_param3`,`smart_scripts`.`action_param4` AS `action_param4`,`smart_scripts`.`action_param5` AS `action_param5`,`smart_scripts`.`action_param6` AS `action_param6`,(case when (`smart_scripts`.`target_type` = 0) then 'SMART_TARGET_NONE' when (`smart_scripts`.`target_type` = 1) then 'SMART_TARGET_SELF' when (`smart_scripts`.`target_type` = 2) then 'SMART_TARGET_VICTIM' when (`smart_scripts`.`target_type` = 3) then 'SMART_TARGET_HOSTILE_SECOND_AGGRO' when (`smart_scripts`.`target_type` = 4) then 'SMART_TARGET_HOSTILE_LAST_AGGRO' when (`smart_scripts`.`target_type` = 5) then 'SMART_TARGET_HOSTILE_RANDOM' when (`smart_scripts`.`target_type` = 6) then 'SMART_TARGET_HOSTILE_RANDOM_NOT_TOP' when (`smart_scripts`.`target_type` = 7) then 'SMART_TARGET_ACTION_INVOKER' when (`smart_scripts`.`target_type` = 8) then 'SMART_TARGET_POSITION' when (`smart_scripts`.`target_type` = 9) then 'SMART_TARGET_CREATURE_RANGE' when (`smart_scripts`.`target_type` = 10) then 'SMART_TARGET_CREATURE_GUID' when (`smart_scripts`.`target_type` = 11) then 'SMART_TARGET_CREATURE_DISTANCE' when (`smart_scripts`.`target_type` = 12) then 'SMART_TARGET_STORED' when (`smart_scripts`.`target_type` = 13) then 'SMART_TARGET_GAMEOBJECT_RANGE' when (`smart_scripts`.`target_type` = 14) then 'SMART_TARGET_GAMEOBJECT_GUID' when (`smart_scripts`.`target_type` = 15) then 'SMART_TARGET_GAMEOBJECT_DISTANCE' when (`smart_scripts`.`target_type` = 16) then 'SMART_TARGET_INVOKER_PARTY' when (`smart_scripts`.`target_type` = 17) then 'SMART_TARGET_PLAYER_RANGE' when (`smart_scripts`.`target_type` = 18) then 'SMART_TARGET_PLAYER_DISTANCE' when (`smart_scripts`.`target_type` = 19) then 'SMART_TARGET_CLOSEST_CREATURE' when (`smart_scripts`.`target_type` = 20) then 'SMART_TARGET_CLOSEST_GAMEOBJECT' when (`smart_scripts`.`target_type` = 21) then 'SMART_TARGET_CLOSEST_PLAYER' when (`smart_scripts`.`target_type` = 22) then 'SMART_TARGET_ACTION_INVOKER_VEHICLE' when (`smart_scripts`.`target_type` = 23) then 'SMART_TARGET_OWNER_OR_SUMMONER' when (`smart_scripts`.`target_type` = 24) then 'SMART_TARGET_THREAT_LIST' when (`smart_scripts`.`target_type` = 25) then 'SMART_TARGET_CLOSEST_ENEMY' when (`smart_scripts`.`target_type` = 26) then 'SMART_TARGET_CLOSEST_FRIENDLY' when (`smart_scripts`.`target_type` = 27) then 'SMART_TARGET_LOOT_RECIPIENTS' when (`smart_scripts`.`target_type` = 28) then 'SMART_TARGET_FARTHEST' when (`smart_scripts`.`target_type` = 29) then 'SMART_TARGET_VEHICLE_PASSENGER' when (`smart_scripts`.`target_type` = 30) then 'SMART_TARGET_CLOSEST_UNSPAWNED_GAMEOBJECT' else `smart_scripts`.`target_type` end) AS `target_type`,`smart_scripts`.`target_param1` AS `target_param1`,`smart_scripts`.`target_param2` AS `target_param2`,`smart_scripts`.`target_param3` AS `target_param3`,`smart_scripts`.`target_param4` AS `target_param4`,`smart_scripts`.`target_x` AS `target_x`,`smart_scripts`.`target_y` AS `target_y`,`smart_scripts`.`target_z` AS `target_z`,`smart_scripts`.`target_o` AS `target_o`,`smart_scripts`.`comment` AS `comment` from `smart_scripts` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -4067,4 +4071,4 @@ CREATE TABLE `waypoints` ( /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2024-08-17 22:26:15 +-- Dump completed on 2024-11-22 23:18:19 diff --git a/sql/updates/auth/3.3.5/2024_08_17_00_auth.sql b/sql/old/3.3.5a/auth/24081_2024_11_22/2024_08_17_00_auth.sql similarity index 100% rename from sql/updates/auth/3.3.5/2024_08_17_00_auth.sql rename to sql/old/3.3.5a/auth/24081_2024_11_22/2024_08_17_00_auth.sql diff --git a/sql/updates/auth/3.3.5/2024_08_28_01_auth.sql b/sql/old/3.3.5a/auth/24081_2024_11_22/2024_08_28_01_auth.sql similarity index 100% rename from sql/updates/auth/3.3.5/2024_08_28_01_auth.sql rename to sql/old/3.3.5a/auth/24081_2024_11_22/2024_08_28_01_auth.sql diff --git a/sql/updates/auth/3.3.5/2024_08_30_00_auth.sql b/sql/old/3.3.5a/auth/24081_2024_11_22/2024_08_30_00_auth.sql similarity index 100% rename from sql/updates/auth/3.3.5/2024_08_30_00_auth.sql rename to sql/old/3.3.5a/auth/24081_2024_11_22/2024_08_30_00_auth.sql diff --git a/sql/old/3.3.5a/auth/24081_2024_11_22/2024_09_26_00_auth.sql b/sql/old/3.3.5a/auth/24081_2024_11_22/2024_09_26_00_auth.sql new file mode 100644 index 00000000000..a5c75e51c38 --- /dev/null +++ b/sql/old/3.3.5a/auth/24081_2024_11_22/2024_09_26_00_auth.sql @@ -0,0 +1,20 @@ + +ALTER TABLE `realmlist` MODIFY `population` float NOT NULL DEFAULT '0'; + +SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; -- views do not have explicit charset/collation options but record whatever the connection settings were as their own (visible in mysqldump) + +DROP VIEW IF EXISTS `vw_log_history`; +DROP VIEW IF EXISTS `vw_rbac`; + +CREATE SQL SECURITY INVOKER VIEW `vw_log_history` AS (SELECT FROM_UNIXTIME(MIN(`logs`.`time`)) AS `First Logged` ,FROM_UNIXTIME(MAX(`logs`.`time`)) AS `Last Logged` ,COUNT(*) AS `Occurrences` ,`realmlist`.`name` AS `Realm` ,`logs`.`type` ,`logs`.`level` ,`logs`.`string` FROM `logs` LEFT JOIN realmlist ON `logs`.`realm` = `realmlist`.`id` GROUP BY `logs`.`string`, `logs`.`type`, `logs`.`realm`); + +CREATE SQL SECURITY INVOKER VIEW `vw_rbac` AS +( + SELECT `t1`.`linkedId` AS `Permission ID`, + `t1`.`id` AS `Permission Group`, + IFNULL(`t2`.`secId`, 'linked') AS `Security Level`, + `t3`.`name` AS `Permission` + FROM `rbac_linked_permissions` `t1` + LEFT JOIN `rbac_default_permissions` `t2` ON `t1`.`id` = `t2`.`permissionId` + LEFT JOIN `rbac_permissions` `t3` ON `t1`.`linkedId` = `t3`.`id` +); diff --git a/sql/updates/characters/3.3.5/2024_08_17_00_characters.sql b/sql/old/3.3.5a/characters/24081_2024_11_22/2024_08_17_00_characters.sql similarity index 100% rename from sql/updates/characters/3.3.5/2024_08_17_00_characters.sql rename to sql/old/3.3.5a/characters/24081_2024_11_22/2024_08_17_00_characters.sql diff --git a/sql/old/3.3.5a/characters/24081_2024_11_22/2024_10_03_00_characters.sql b/sql/old/3.3.5a/characters/24081_2024_11_22/2024_10_03_00_characters.sql new file mode 100644 index 00000000000..7b5a6fcf357 --- /dev/null +++ b/sql/old/3.3.5a/characters/24081_2024_11_22/2024_10_03_00_characters.sql @@ -0,0 +1,29 @@ +-- append guid as hex to characters who have duplicate names in database except the one with lowest guid (assumed to have been created first) +-- and flag them for rename +CREATE TEMPORARY TABLE `characters_to_rename` SELECT + c2.`guid` + FROM + ( + SELECT + c1.`name` AS `name`, + MIN(c1.`guid`) AS originalGuid + FROM + `characters` c1 + WHERE + LENGTH(c1.`name`) > 0 + GROUP BY + 1 + HAVING + COUNT(*) > 1 + ) c3 + INNER JOIN `characters` c2 ON c3.`name` = c2.`name` + WHERE + c2.guid <> c3.originalGuid; + +UPDATE `characters` SET `name` = CONCAT(SUBSTRING(`name` FROM 1 FOR 12 - LENGTH(CONV(`guid`, 10, 16))), CONV(`guid`, 10, 16)), `at_login` = `at_login` | 1 WHERE `guid` IN (SELECT `guid` FROM `characters_to_rename`); + +-- recreate name index with unique constraint +ALTER TABLE `characters` DROP INDEX `idx_name`; +ALTER TABLE `characters` MODIFY COLUMN `name` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL AFTER `account`; +UPDATE `characters` SET `name` = NULL WHERE `name` = ''; +ALTER TABLE `characters` ADD UNIQUE INDEX `idx_name` (`name` ASC); diff --git a/sql/updates/world/3.3.5/2024_08_17_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_08_17_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2024_08_17_00_world.sql rename to sql/old/3.3.5a/world/24081_2024_11_22/2024_08_17_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_08_21_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_08_21_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2024_08_21_00_world.sql rename to sql/old/3.3.5a/world/24081_2024_11_22/2024_08_21_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_09_07_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_07_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2024_09_07_00_world.sql rename to sql/old/3.3.5a/world/24081_2024_11_22/2024_09_07_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_09_11_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_11_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2024_09_11_00_world.sql rename to sql/old/3.3.5a/world/24081_2024_11_22/2024_09_11_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_09_14_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_14_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2024_09_14_00_world.sql rename to sql/old/3.3.5a/world/24081_2024_11_22/2024_09_14_00_world.sql diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_29_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_29_00_world.sql new file mode 100644 index 00000000000..b293fc29fea --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_29_00_world.sql @@ -0,0 +1,6 @@ +-- Deletes Ratchet as Ally GY when dying in Thunder Bluff +DELETE FROM `graveyard_zone` WHERE `ID`= 249 AND `GhostZone`= 1638; +-- Adds Bloodhoof Village as Ally GY when dying in Thunder Bluff +DELETE FROM `graveyard_zone` WHERE `ID`= 89 AND `GhostZone`= 1638; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES +(89, 1638, 469, 'Mulgore, Bloodhoof Village GY - Mulgore'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_29_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_29_01_world.sql new file mode 100644 index 00000000000..5d5f71d232c --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_09_29_01_world.sql @@ -0,0 +1,2 @@ +-- The Aldor and Scryers flightmasters should remain unlocked in reputations higher than friendly +UPDATE `conditions` SET `ConditionValue2`=`ConditionValue2`|32|64|128 WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup` IN (8558,8560); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_02_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_02_00_world.sql new file mode 100644 index 00000000000..7c5cc2b4193 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_02_00_world.sql @@ -0,0 +1,10 @@ +-- +DELETE FROM `prospecting_loot_template` WHERE `Entry`=10620 AND `Reference`=13001; +DELETE FROM `prospecting_loot_template` WHERE `Entry`=10620 AND `Item` IN (21929,23077,23079,23107,23112,23117); +INSERT INTO `prospecting_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(10620,21929,0,0,0,1,1,1,2,NULL), +(10620,23077,0,0,0,1,1,1,2,NULL), +(10620,23079,0,0,0,1,1,1,2,NULL), +(10620,23107,0,0,0,1,1,1,2,NULL), +(10620,23112,0,0,0,1,1,1,2,NULL), +(10620,23117,0,0,0,1,1,1,2,NULL); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_05_00_world_2022_12_27_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_05_00_world_2022_12_27_01_world.sql new file mode 100644 index 00000000000..5e0f6fd45c8 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_05_00_world_2022_12_27_01_world.sql @@ -0,0 +1,8 @@ +-- +DELETE FROM `trinity_string` WHERE `entry`=5089; +INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES +(5089,'Template StringID: %.*s\Spawn StringID: %.*s\nScript StringID: %.*s'); + +ALTER TABLE `creature` ADD `StringId` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL AFTER ScriptName; + +ALTER TABLE `creature_template` ADD `StringId` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL AFTER ScriptName; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_05_01_world_2023_07_30_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_05_01_world_2023_07_30_00_world.sql new file mode 100644 index 00000000000..0b4686a7e7d --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_05_01_world_2023_07_30_00_world.sql @@ -0,0 +1,3 @@ +ALTER TABLE `gameobject` ADD `StringId` varchar(64) AFTER `ScriptName`; + +ALTER TABLE `gameobject_template` ADD `StringId` varchar(64) AFTER `ScriptName`; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_06_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_06_00_world.sql new file mode 100644 index 00000000000..1adcd3a6d59 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_06_00_world.sql @@ -0,0 +1,5 @@ +-- Spellscripts for "Toss your Luck!" +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_item_titanium_seal_of_dalaran_toss','spell_item_titanium_seal_of_dalaran_catch'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(60458, 'spell_item_titanium_seal_of_dalaran_toss'), +(60476, 'spell_item_titanium_seal_of_dalaran_catch'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_07_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_07_00_world.sql new file mode 100644 index 00000000000..5045176144d --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_07_00_world.sql @@ -0,0 +1,74 @@ +-- +SET @GREYREF := 1056; +SET @FOODREF := 1058; +DELETE FROM `reference_loot_template` WHERE `Entry` BETWEEN @GREYREF AND @GREYREF + 1; +DELETE FROM `reference_loot_template` WHERE `Entry` = @FOODREF; +SET @REFGREY0 := @GREYREF; +-- Correct ref loot for various grey level 1 to 5 Vanilla +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFGREY0, 1364, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Leather Vest'), +(@REFGREY0, 1366, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Leather Pants'), +(@REFGREY0, 1367, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Leather Boots'), +(@REFGREY0, 1368, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Leather Gloves'), +(@REFGREY0, 1369, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Leather Belt'), +(@REFGREY0, 1370, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Leather Bracers'), +(@REFGREY0, 1372, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Ragged Cloak'), +(@REFGREY0, 1374, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Shoes'), +(@REFGREY0, 1376, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Cloak'), +(@REFGREY0, 1377, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Gloves'), +(@REFGREY0, 1378, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Pants'), +(@REFGREY0, 1380, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Robe'), +(@REFGREY0, 3363, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Belt'), +(@REFGREY0, 3365, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Frayed Bracers'), +(@REFGREY0, 2649, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Belt'), +(@REFGREY0, 2650, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Boots'), +(@REFGREY0, 2651, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Bracers'), +(@REFGREY0, 2652, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Cloak'), +(@REFGREY0, 2653, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Gloves'), +(@REFGREY0, 2654, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Pants'), +(@REFGREY0, 2656, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Flimsy Chain Vest'), +(@REFGREY0, 2210, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Battered Buckler'), +(@REFGREY0, 2211, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 0 : Bent Large Shield'); + +SET @REFGREY1 := @GREYREF + 1; +-- Correct ref loot for various grey level 1 to 5 TBC +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFGREY1, 21002, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Belt'), +(@REFGREY1, 21003, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Bracers'), +(@REFGREY1, 21004, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Cloak'), +(@REFGREY1, 21005, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Gloves'), +(@REFGREY1, 21006, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Pants'), +(@REFGREY1, 21007, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Robe'), +(@REFGREY1, 21008, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Unkempt Shoes'), +(@REFGREY1, 21009, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Scraggy Leather Belt'), +(@REFGREY1, 21010, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Scraggy Leather Boots'), +(@REFGREY1, 21011, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Scraggy Leather Bracers'), +(@REFGREY1, 21012, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Scraggy Leather Gloves'), +(@REFGREY1, 21013, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Scraggy Leather Pants'), +(@REFGREY1, 21014, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Scraggy Leather Vest'), +(@REFGREY1, 21015, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Shoddy Chain Belt'), +(@REFGREY1, 21016, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Shoddy Chain Vest'), +(@REFGREY1, 21017, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Shoddy Chain Pants'), +(@REFGREY1, 21018, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Shoddy Chain Gloves'), +(@REFGREY1, 21019, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Shoddy Chain Bracers'), +(@REFGREY1, 21020, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Shoddy Chain Boots'), +(@REFGREY1, 21021, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Battered Shield'), +(@REFGREY1, 21022, 0, 0, 0, 1, 1, 1, 1, 'Grey 1-5 EXP 1 : Weather Beaten Buckler'); + +-- Food Reference loot for Entry 2843 : Battered Chest +SET @REFFOOD := @FOODREF; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFFOOD,159,0,20,0,1,1,1,1, 'Battered Chest (2943) - Refreshing Spring Water'), +(@REFFOOD,4540,0,10,0,1,1,1,1, 'Battered Chest (2943) - Tough Hunk of Bread'), +(@REFFOOD,2070,0,10,0,1,1,1,1, 'Battered Chest (2943) - Darnassian Bleu'), +(@REFFOOD,117,0,10,0,1,1,1,1, 'Battered Chest (2943) - Tough Jerky'), +(@REFFOOD,4536,0,10,0,1,1,1,1, 'Battered Chest (2943) - Shiny Red Apple'); + +-- Update loot for Entry 2843 : Battered Chest +SET @OBJECT := 2265; +DELETE FROM `gameobject_loot_template` WHERE `Entry`=@OBJECT; +INSERT INTO `gameobject_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@OBJECT,@REFFOOD,@REFFOOD,100,0,1,0,1,2, 'Battered Chest - (Food Battered Chest (2943) ReferenceTable)'), +(@OBJECT,@REFGREY0,@REFGREY0,100,0,1,0,1,1, 'Battered Chest - (Grey 1-5 EXP 0 ReferenceTable)'); + +UPDATE `gameobject_template_addon` SET `mingold`=1, `maxgold`=20 WHERE `entry` = 2843; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_07_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_07_01_world.sql new file mode 100644 index 00000000000..695691fd7f0 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_07_01_world.sql @@ -0,0 +1,35 @@ +-- Pathing for Harb Foulmountain +SET @PATH=21564 * 10; +SET @NPC=14426; +UPDATE `creature` SET `position_x`=-4929.023,`position_y`=-2066.4766,`position_z`=85.52668,`wander_distance`=0,`MovementType`=2 WHERE `guid`=21564; +UPDATE `creature_template` SET `MovementType`= 2 WHERE `entry`=@NPC; +UPDATE `creature_template_addon` SET `PvPFlags` = 0 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=21564; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(21564, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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,-4929.023,-2066.4766,85.52668,NULL,0,0,0,100,0), +(@PATH,2,-4905.3555,-2069.9805,84.25914,NULL,0,0,0,100,0), +(@PATH,3,-4899.6943,-2061.0269,83.636856,NULL,0,0,0,100,0), +(@PATH,4,-4891.1626,-2039.651,83.30705,NULL,0,0,0,100,0), +(@PATH,5,-4881.945,-2017.6359,86.298546,NULL,0,0,0,100,0), +(@PATH,6,-4873.128,-1993.7965,91.65875,NULL,0,0,0,100,0), +(@PATH,7,-4878.21,-1974.4436,92.018616,NULL,0,0,0,100,0), +(@PATH,8,-4873.579,-1956.8225,90.450455,NULL,0,0,0,100,0), +(@PATH,9,-4862.9395,-1946.7357,86.90235,NULL,0,0,0,100,0), +(@PATH,10,-4834.9155,-1923.0642,84.13316,NULL,0,0,0,100,0), +(@PATH,11,-4801.48,-1895.6833,89.333145,NULL,0,0,0,100,0), +(@PATH,12,-4776.8984,-1881.0486,90.39604,NULL,0,0,0,100,0), +(@PATH,13,-4751.4434,-1865.2213,88.92392,NULL,0,0,0,100,0), +(@PATH,14,-4776.8984,-1881.0486,90.39604,NULL,0,0,0,100,0), +(@PATH,15,-4801.48,-1895.6833,89.333145,NULL,0,0,0,100,0), +(@PATH,16,-4834.9155,-1923.0642,84.13316,NULL,0,0,0,100,0), +(@PATH,17,-4862.9395,-1946.7357,86.90235,NULL,0,0,0,100,0), +(@PATH,18,-4873.579,-1956.8225,90.450455,NULL,0,0,0,100,0), +(@PATH,19,-4878.21,-1974.4436,92.018616,NULL,0,0,0,100,0), +(@PATH,20,-4873.128,-1993.7965,91.65875,NULL,0,0,0,100,0), +(@PATH,21,-4881.914,-2017.5612,86.331604,NULL,0,0,0,100,0), +(@PATH,22,-4891.1626,-2039.651,83.30705,NULL,0,0,0,100,0), +(@PATH,23,-4899.6943,-2061.0269,83.636856,NULL,0,0,0,100,0), +(@PATH,24,-4905.3555,-2069.9805,84.25914,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_00_world.sql new file mode 100644 index 00000000000..5f949e62eb5 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_00_world.sql @@ -0,0 +1,8 @@ +-- Add 4 missing gameobjects in Thunderbluff +SET @OGUID=9901; -- four consecutive free gob guids atm +DELETE FROM `gameobject` WHERE `guid` IN (@OGUID,@OGUID+1,@OGUID+2,@OGUID+3); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@OGUID, 152583, 1, 0, 0, 1, 1, -1257.8424072265625, 24.41799354553222656, 128.217498779296875, 2.888511419296264648, 0, 0, 0.99200439453125, 0.126203224062919616, 120, 100, 1, '', NULL, 0), +(@OGUID+1, 185004, 1, 0, 0, 1, 1, -1049.5347900390625, -290.34722900390625, 159.0303497314453125, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 100, 1, '', NULL, 0), +(@OGUID+2, 185004, 1, 0, 0, 1, 1, -1050.2257080078125, -290.552093505859375, 159.0303497314453125, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 100, 1, '', NULL, 0), +(@OGUID+3, 182257, 1, 0, 0, 1, 1, -1049.82470703125, -286.196197509765625, 159.0303497314453125, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 100, 1, '', NULL, 0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_01_world.sql new file mode 100644 index 00000000000..44380e5b69b --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_01_world.sql @@ -0,0 +1,95 @@ +-- Pathing for Greater Firebird Entry: 8207 +SET @NPC=8207; +SET @GUID=51827; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=-7710.758,`position_y`=-3956.6245,`position_z`=9.728199,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL); +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,-7710.758,-3956.6245,9.728199,NULL,0,0,0,100,0), +(@PATH,2,-7715.532,-3928.461,8.749683,NULL,0,0,0,100,0), +(@PATH,3,-7700.7812,-3906.8174,9.525318,NULL,0,0,0,100,0), +(@PATH,4,-7663.8013,-3875.1206,8.839839,NULL,0,0,0,100,0), +(@PATH,5,-7657.634,-3840.8525,10.83584,NULL,0,0,0,100,0), +(@PATH,6,-7671.237,-3821.5408,15.216432,NULL,0,0,0,100,0), +(@PATH,7,-7678.901,-3795.2083,21.681417,NULL,0,0,0,100,0), +(@PATH,8,-7681.229,-3756.9055,24.819561,NULL,0,0,0,100,0), +(@PATH,9,-7673.8613,-3716.5469,29.9973,NULL,0,0,0,100,0), +(@PATH,10,-7673.6987,-3687.2478,28.922815,NULL,0,0,0,100,0), +(@PATH,11,-7656.421,-3656.8772,26.623302,NULL,0,0,0,100,0), +(@PATH,12,-7662.468,-3629.3574,28.541769,NULL,0,0,0,100,0), +(@PATH,13,-7677.4897,-3582.9736,32.306168,NULL,0,0,0,100,0), +(@PATH,14,-7677.9395,-3540.1658,24.65451,NULL,0,0,0,100,0), +(@PATH,15,-7675.5747,-3503.2544,26.522423,NULL,0,0,0,100,0), +(@PATH,16,-7661.9976,-3472.317,26.822615,NULL,0,0,0,100,0), +(@PATH,17,-7631.3594,-3455.7761,29.158308,NULL,0,0,0,100,0), +(@PATH,18,-7600.8604,-3474.5388,23.820978,NULL,0,0,0,100,0), +(@PATH,19,-7556.848,-3491.1558,16.88118,NULL,0,0,0,100,0), +(@PATH,20,-7516.682,-3490.9087,15.407843,NULL,0,0,0,100,0), +(@PATH,21,-7482.791,-3478.7441,14.191426,NULL,0,0,0,100,0), +(@PATH,22,-7448.849,-3445.8245,11.7975445,NULL,0,0,0,100,0), +(@PATH,23,-7413.9087,-3422.8777,11.448396,NULL,0,0,0,100,0), +(@PATH,24,-7384.762,-3389.0525,12.521492,NULL,0,0,0,100,0), +(@PATH,25,-7390.377,-3364.397,9.953996,NULL,0,0,0,100,0), +(@PATH,26,-7417.989,-3343.9648,10.760514,NULL,0,0,0,100,0), +(@PATH,27,-7455.8647,-3346.955,13.619991,NULL,0,0,0,100,0), +(@PATH,28,-7488.782,-3342.5862,15.875005,NULL,0,0,0,100,0), +(@PATH,29,-7525.165,-3314.5938,23.809805,NULL,0,0,0,100,0), +(@PATH,30,-7545.5747,-3282.4626,28.957174,NULL,0,0,0,100,0), +(@PATH,31,-7538.598,-3249.0413,27.585447,NULL,0,0,0,100,0), +(@PATH,32,-7510.407,-3218.524,23.716492,NULL,0,0,0,100,0), +(@PATH,33,-7479.388,-3191.0247,14.460273,NULL,0,0,0,100,0), +(@PATH,34,-7465.8647,-3183.5723,13.781521,NULL,0,0,0,100,0), +(@PATH,35,-7455.6353,-3158.7048,12.994573,NULL,0,0,0,100,0), +(@PATH,36,-7456.4126,-3114.431,13.864947,NULL,0,0,0,100,0), +(@PATH,37,-7490.0244,-3081.6028,13.82893,NULL,0,0,0,100,0), +(@PATH,38,-7517.932,-3068.775,13.160608,NULL,0,0,0,100,0), +(@PATH,39,-7552.173,-3088.9275,16.074425,NULL,0,0,0,100,0), +(@PATH,40,-7580.729,-3117.3545,27.553055,NULL,0,0,0,100,0), +(@PATH,41,-7618.8794,-3141.1875,35.611378,NULL,0,0,0,100,0), +(@PATH,42,-7646.901,-3118.3042,37.350555,NULL,0,0,0,100,0), +(@PATH,43,-7678.538,-3115.4187,44.10227,NULL,0,0,0,100,0), +(@PATH,44,-7646.901,-3118.3042,37.350555,NULL,0,0,0,100,0), +(@PATH,45,-7618.8794,-3141.1875,35.611378,NULL,0,0,0,100,0), +(@PATH,46,-7580.729,-3117.3545,27.553055,NULL,0,0,0,100,0), +(@PATH,47,-7552.173,-3088.9275,16.074425,NULL,0,0,0,100,0), +(@PATH,48,-7517.932,-3068.775,13.160608,NULL,0,0,0,100,0), +(@PATH,49,-7490.0244,-3081.6028,13.82893,NULL,0,0,0,100,0), +(@PATH,50,-7456.4126,-3114.431,13.864947,NULL,0,0,0,100,0), +(@PATH,51,-7455.6353,-3158.7048,12.994573,NULL,0,0,0,100,0), +(@PATH,52,-7465.8647,-3183.5723,13.781521,NULL,0,0,0,100,0), +(@PATH,53,-7479.388,-3191.0247,14.460273,NULL,0,0,0,100,0), +(@PATH,54,-7510.407,-3218.524,23.716492,NULL,0,0,0,100,0), +(@PATH,55,-7538.598,-3249.0413,27.585447,NULL,0,0,0,100,0), +(@PATH,56,-7545.5747,-3282.4626,28.957174,NULL,0,0,0,100,0), +(@PATH,57,-7525.165,-3314.5938,23.809805,NULL,0,0,0,100,0), +(@PATH,58,-7488.782,-3342.5862,15.875005,NULL,0,0,0,100,0), +(@PATH,59,-7455.8647,-3346.955,13.619991,NULL,0,0,0,100,0), +(@PATH,60,-7417.989,-3343.9648,10.760514,NULL,0,0,0,100,0), +(@PATH,61,-7390.377,-3364.397,9.953996,NULL,0,0,0,100,0), +(@PATH,62,-7384.762,-3389.0525,12.521492,NULL,0,0,0,100,0), +(@PATH,63,-7413.9087,-3422.8777,11.448396,NULL,0,0,0,100,0), +(@PATH,64,-7448.849,-3445.8245,11.7975445,NULL,0,0,0,100,0), +(@PATH,65,-7482.721,-3478.6821,14.169454,NULL,0,0,0,100,0), +(@PATH,66,-7516.6113,-3490.8457,15.322148,NULL,0,0,0,100,0), +(@PATH,67,-7556.848,-3491.1558,16.88118,NULL,0,0,0,100,0), +(@PATH,68,-7600.8604,-3474.5388,23.820978,NULL,0,0,0,100,0), +(@PATH,69,-7631.3594,-3455.7761,29.158308,NULL,0,0,0,100,0), +(@PATH,70,-7661.9976,-3472.317,26.822615,NULL,0,0,0,100,0), +(@PATH,71,-7675.5747,-3503.2544,26.522423,NULL,0,0,0,100,0), +(@PATH,72,-7677.9395,-3540.1658,24.65451,NULL,0,0,0,100,0), +(@PATH,73,-7677.4897,-3582.9736,32.306168,NULL,0,0,0,100,0), +(@PATH,74,-7662.468,-3629.3574,28.541769,NULL,0,0,0,100,0), +(@PATH,75,-7656.421,-3656.8772,26.623302,NULL,0,0,0,100,0), +(@PATH,76,-7673.6987,-3687.2478,28.922815,NULL,0,0,0,100,0), +(@PATH,77,-7673.8438,-3716.3994,30.064438,NULL,0,0,0,100,0), +(@PATH,78,-7681.229,-3756.9055,24.819561,NULL,0,0,0,100,0), +(@PATH,79,-7678.901,-3795.2083,21.681417,NULL,0,0,0,100,0), +(@PATH,80,-7671.237,-3821.5408,15.216432,NULL,0,0,0,100,0), +(@PATH,81,-7657.634,-3840.8525,10.83584,NULL,0,0,0,100,0), +(@PATH,82,-7663.8013,-3875.1206,8.839839,NULL,0,0,0,100,0), +(@PATH,83,-7700.7812,-3906.8174,9.525318,NULL,0,0,0,100,0), +(@PATH,84,-7715.532,-3928.461,8.749683,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_02_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_02_world.sql new file mode 100644 index 00000000000..3568360f779 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_02_world.sql @@ -0,0 +1,77 @@ +-- Pathing for Murderous Blisterpaw Entry: 8208 +SET @NPC=8208; +SET @GUID=51825; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=-7025.515,`position_y`=-3491.132,`position_z`=9.274621,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL); +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,-7025.515,-3491.132,9.274621,NULL,0,0,0,100,0), +(@PATH,2,-7057.585,-3499.684,10.376134,NULL,0,0,0,100,0), +(@PATH,3,-7083.3726,-3521.9758,11.747719,NULL,0,0,0,100,0), +(@PATH,4,-7116.227,-3516.6216,10.375974,NULL,0,0,0,100,0), +(@PATH,5,-7143.2266,-3517.4648,10.078375,NULL,0,0,0,100,0), +(@PATH,6,-7172.1216,-3513.6719,11.342711,NULL,0,0,0,100,0), +(@PATH,7,-7202.048,-3508.731,11.024831,NULL,0,0,0,100,0), +(@PATH,8,-7247.1226,-3513.0464,11.260182,NULL,0,0,0,100,0), +(@PATH,9,-7277.5615,-3524.6765,12.185095,NULL,0,0,0,100,0), +(@PATH,10,-7302.512,-3540.7358,8.5952,NULL,0,0,0,100,0), +(@PATH,11,-7328.6494,-3568.7114,10.502499,NULL,0,0,0,100,0), +(@PATH,12,-7341.257,-3601.2178,9.939367,NULL,0,0,0,100,0), +(@PATH,13,-7362.0376,-3633.9546,11.387863,NULL,0,0,0,100,0), +(@PATH,14,-7383.2837,-3658.7517,10.012263,NULL,0,0,0,100,0), +(@PATH,15,-7396.5024,-3698.1814,9.407527,NULL,0,0,0,100,0), +(@PATH,16,-7405.75,-3719.763,9.256791,NULL,0,0,0,100,0), +(@PATH,17,-7420.3613,-3750.827,12.278984,NULL,0,0,0,100,0), +(@PATH,18,-7414.9087,-3767.6528,12.649624,NULL,0,0,0,100,0), +(@PATH,19,-7396.8125,-3813.4487,10.233704,NULL,0,0,0,100,0), +(@PATH,20,-7385.053,-3851.4045,10.949272,NULL,0,0,0,100,0), +(@PATH,21,-7363.6816,-3878.0642,11.944022,NULL,0,0,0,100,0), +(@PATH,22,-7366.593,-3917.8196,14.590536,NULL,0,0,0,100,0), +(@PATH,23,-7368.6016,-3951.2683,11.180499,NULL,0,0,0,100,0), +(@PATH,24,-7388.428,-3989.5295,9.057527,NULL,0,0,0,100,0), +(@PATH,25,-7419.9297,-4017.759,10.126763,NULL,0,0,0,100,0), +(@PATH,26,-7455.046,-3985.4866,11.490533,NULL,0,0,0,100,0), +(@PATH,27,-7484.066,-3945.0916,10.125787,NULL,0,0,0,100,0), +(@PATH,28,-7518.1597,-3916.549,10.933404,NULL,0,0,0,100,0), +(@PATH,29,-7545.4316,-3950.7153,10.655572,NULL,0,0,0,100,0), +(@PATH,30,-7549.514,-3973.414,12.167756,NULL,0,0,0,100,0), +(@PATH,31,-7550.2954,-4013.2153,12.256833,NULL,0,0,0,100,0), +(@PATH,32,-7552.7324,-4045.1523,11.282222,NULL,0,0,0,100,0), +(@PATH,33,-7549.6675,-4078.2886,11.486598,NULL,0,0,0,100,0), +(@PATH,34,-7547.963,-4113.612,10.832579,NULL,0,0,0,100,0), +(@PATH,35,-7549.6675,-4078.2886,11.486598,NULL,0,0,0,100,0), +(@PATH,36,-7552.731,-4045.2805,11.270747,NULL,0,0,0,100,0), +(@PATH,37,-7550.2954,-4013.2153,12.256833,NULL,0,0,0,100,0), +(@PATH,38,-7549.514,-3973.414,12.167756,NULL,0,0,0,100,0), +(@PATH,39,-7545.4316,-3950.7153,10.655572,NULL,0,0,0,100,0), +(@PATH,40,-7518.1597,-3916.549,10.933404,NULL,0,0,0,100,0), +(@PATH,41,-7484.066,-3945.0916,10.125787,NULL,0,0,0,100,0), +(@PATH,42,-7455.046,-3985.4866,11.490533,NULL,0,0,0,100,0), +(@PATH,43,-7419.9297,-4017.759,10.126763,NULL,0,0,0,100,0), +(@PATH,44,-7388.428,-3989.5295,9.057527,NULL,0,0,0,100,0), +(@PATH,45,-7368.6074,-3951.3164,11.189776,NULL,0,0,0,100,0), +(@PATH,46,-7366.593,-3917.8196,14.590536,NULL,0,0,0,100,0), +(@PATH,47,-7363.6816,-3878.0642,11.944022,NULL,0,0,0,100,0), +(@PATH,48,-7385.053,-3851.4045,10.949272,NULL,0,0,0,100,0), +(@PATH,49,-7396.8125,-3813.4487,10.233704,NULL,0,0,0,100,0), +(@PATH,50,-7414.9087,-3767.6528,12.649624,NULL,0,0,0,100,0), +(@PATH,51,-7420.3613,-3750.827,12.278984,NULL,0,0,0,100,0), +(@PATH,52,-7405.75,-3719.763,9.256791,NULL,0,0,0,100,0), +(@PATH,53,-7396.5024,-3698.1814,9.407527,NULL,0,0,0,100,0), +(@PATH,54,-7383.2837,-3658.7517,10.012263,NULL,0,0,0,100,0), +(@PATH,55,-7362.0376,-3633.9546,11.387863,NULL,0,0,0,100,0), +(@PATH,56,-7341.257,-3601.2178,9.939367,NULL,0,0,0,100,0), +(@PATH,57,-7328.6494,-3568.7114,10.502499,NULL,0,0,0,100,0), +(@PATH,58,-7302.512,-3540.7358,8.5952,NULL,0,0,0,100,0), +(@PATH,59,-7277.5615,-3524.6765,12.185095,NULL,0,0,0,100,0), +(@PATH,60,-7247.1226,-3513.0464,11.260182,NULL,0,0,0,100,0), +(@PATH,61,-7202.048,-3508.731,11.024831,NULL,0,0,0,100,0), +(@PATH,62,-7172.1216,-3513.6719,11.342711,NULL,0,0,0,100,0), +(@PATH,63,-7143.2637,-3517.452,10.110113,NULL,0,0,0,100,0), +(@PATH,64,-7116.227,-3516.6216,10.375974,NULL,0,0,0,100,0), +(@PATH,65,-7083.3726,-3521.9758,11.747719,NULL,0,0,0,100,0), +(@PATH,66,-7057.585,-3499.684,10.376134,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_03_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_03_world.sql new file mode 100644 index 00000000000..d8d149c8ef5 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_03_world.sql @@ -0,0 +1,41 @@ +-- Pathing for Rex Ashil Entry: 14475 +SET @NPC=14475; +SET @GUID=51836; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=-6630.2847,`position_y`=945.4344,`position_z`=-52.96825,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL); +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,-6630.2847,945.4344,-52.96825,NULL,0,0,0,100,0), +(@PATH,2,-6627.747,929.4205,-53.191467,NULL,0,0,0,100,0), +(@PATH,3,-6609.186,929.8785,-53.16585,NULL,0,0,0,100,0), +(@PATH,4,-6591.815,909.97754,-48.229885,NULL,0,0,0,100,0), +(@PATH,5,-6591.289,896.8762,-44.285564,NULL,0,0,0,100,0), +(@PATH,6,-6595.7266,884.783,-44.09041,NULL,0,0,0,100,0), +(@PATH,7,-6581.963,877.2528,-44.54215,NULL,0,0,0,100,0), +(@PATH,8,-6570.469,885.4149,-43.199642,NULL,0,0,0,100,0), +(@PATH,9,-6555.0957,885.0344,-39.406754,NULL,0,0,0,100,0), +(@PATH,10,-6545.19,871.5345,-32.738403,NULL,0,0,0,100,0), +(@PATH,11,-6535.754,862.1162,-29.028198,NULL,0,0,0,100,0), +(@PATH,12,-6518.3926,866.1533,-30.434242,NULL,0,0,0,100,0), +(@PATH,13,-6512.0576,887.03265,-39.736877,NULL,0,0,0,100,0), +(@PATH,14,-6497.0356,901.76587,-41.681843,NULL,0,0,0,100,0), +(@PATH,15,-6473.988,908.0661,-41.303955,NULL,0,0,0,100,0), +(@PATH,16,-6480.6694,921.8447,-41.822407,NULL,0,0,0,100,0), +(@PATH,17,-6473.988,908.0661,-41.303955,NULL,0,0,0,100,0), +(@PATH,18,-6497.0356,901.76587,-41.681843,NULL,0,0,0,100,0), +(@PATH,19,-6512.0576,887.03265,-39.736877,NULL,0,0,0,100,0), +(@PATH,20,-6518.3926,866.1533,-30.434242,NULL,0,0,0,100,0), +(@PATH,21,-6535.754,862.1162,-29.028198,NULL,0,0,0,100,0), +(@PATH,22,-6545.19,871.5345,-32.738403,NULL,0,0,0,100,0), +(@PATH,23,-6555.0957,885.0344,-39.406754,NULL,0,0,0,100,0), +(@PATH,24,-6570.469,885.4149,-43.199642,NULL,0,0,0,100,0), +(@PATH,25,-6581.963,877.2528,-44.54215,NULL,0,0,0,100,0), +(@PATH,26,-6595.7266,884.783,-44.09041,NULL,0,0,0,100,0), +(@PATH,27,-6591.289,896.8762,-44.285564,NULL,0,0,0,100,0), +(@PATH,28,-6591.8135,909.9452,-48.222664,NULL,0,0,0,100,0), +(@PATH,29,-6609.186,929.8785,-53.16585,NULL,0,0,0,100,0), +(@PATH,30,-6627.747,929.4205,-53.191467,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_04_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_04_world.sql new file mode 100644 index 00000000000..50105b3f504 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_04_world.sql @@ -0,0 +1,41 @@ +-- Pathing for Alshirr Banebreath Entry: 14340 +SET @NPC=14340; +SET @GUID=51894; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=4026.523,`position_y`=-555.293,`position_z`=342.505,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL); +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,4026.523,-555.293,342.505,NULL,0,0,0,100,0), +(@PATH,2,3999.6077,-585.43585,338.0969,NULL,0,0,0,100,0), +(@PATH,3,3967.8643,-599.3677,338.82224,NULL,0,0,0,100,0), +(@PATH,4,3939.5344,-610.4964,340.5994,NULL,0,0,0,100,0), +(@PATH,5,3918.8508,-620.3714,339.56857,NULL,0,0,0,100,0), +(@PATH,6,3893.1277,-649.1434,334.0132,NULL,0,0,0,100,0), +(@PATH,7,3867.4185,-662.55194,330.74258,NULL,0,0,0,100,0), +(@PATH,8,3851.004,-677.2051,328.14557,NULL,0,0,0,100,0), +(@PATH,9,3841.1611,-713.5064,325.38644,NULL,0,0,0,100,0), +(@PATH,10,3836.204,-740.03125,319.4985,NULL,0,0,0,100,0), +(@PATH,11,3827.0447,-763.3758,314.87888,NULL,0,0,0,100,0), +(@PATH,12,3818.8672,-787.662,307.59967,NULL,0,0,0,100,0), +(@PATH,13,3792.5173,-812.1507,307.89844,NULL,0,0,0,100,0), +(@PATH,14,3768.1362,-831.72095,310.0974,NULL,0,0,0,100,0), +(@PATH,15,3771.9072,-848.68176,305.3522,NULL,0,0,0,100,0), +(@PATH,16,3757.2969,-866.6099,313.99258,NULL,0,0,0,100,0), +(@PATH,17,3771.9072,-848.68176,305.3522,NULL,0,0,0,100,0), +(@PATH,18,3768.1362,-831.72095,310.0974,NULL,0,0,0,100,0), +(@PATH,19,3792.5173,-812.1507,307.89844,NULL,0,0,0,100,0), +(@PATH,20,3818.8672,-787.662,307.59967,NULL,0,0,0,100,0), +(@PATH,21,3827.0447,-763.3758,314.87888,NULL,0,0,0,100,0), +(@PATH,22,3836.197,-740.15375,319.43015,NULL,0,0,0,100,0), +(@PATH,23,3841.1611,-713.5064,325.38644,NULL,0,0,0,100,0), +(@PATH,24,3850.8962,-677.3118,328.18048,NULL,0,0,0,100,0), +(@PATH,25,3867.4185,-662.55194,330.74258,NULL,0,0,0,100,0), +(@PATH,26,3893.1277,-649.1434,334.0132,NULL,0,0,0,100,0), +(@PATH,27,3918.8508,-620.3714,339.56857,NULL,0,0,0,100,0), +(@PATH,28,3939.5344,-610.4964,340.5994,NULL,0,0,0,100,0), +(@PATH,29,3967.8643,-599.3677,338.82224,NULL,0,0,0,100,0), +(@PATH,30,3999.6077,-585.43585,338.0969,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_05_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_05_world.sql new file mode 100644 index 00000000000..6bb796fa996 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_05_world.sql @@ -0,0 +1,25 @@ +-- Pathing for Foulmane Entry: 1847 +SET @NPC=1847; +SET @GUID=45454; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=1867.8231,`position_y`=-1582.6323,`position_z`=59.543274,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +UPDATE `creature_template_addon` SET `PvpFlags`=0 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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,1867.8231,-1582.6323,59.543274,NULL,0,0,0,100,0), +(@PATH,2,1862.686,-1575.6617,59.418274,NULL,0,0,0,100,0), +(@PATH,3,1865.2483,-1568.495,58.918274,NULL,0,0,0,100,0), +(@PATH,4,1862.7682,-1561.516,59.257603,NULL,0,0,0,100,0), +(@PATH,5,1866.2867,-1555.184,59.20914,NULL,0,0,0,100,0), +(@PATH,6,1874.4098,-1548.5449,59.26224,NULL,0,0,0,100,0), +(@PATH,7,1888.9252,-1546.674,58.882603,NULL,0,0,0,100,0), +(@PATH,8,1898.0934,-1554.2573,59.132603,NULL,0,0,0,100,0), +(@PATH,9,1900.8027,-1568.277,59.696507,NULL,0,0,0,100,0), +(@PATH,10,1899.4547,-1582.4746,59.418274,NULL,0,0,0,100,0), +(@PATH,11,1896.0823,-1588.0172,59.168274,NULL,0,0,0,100,0), +(@PATH,12,1885.111,-1591.6702,59.293274,NULL,0,0,0,100,0), +(@PATH,13,1874.7734,-1589.3805,59.629944,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_06_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_06_world.sql new file mode 100644 index 00000000000..63ab4e04fc9 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_06_world.sql @@ -0,0 +1,60 @@ +-- Pathing for Vile Sting Entry: 5937 +SET @NPC=5937; +SET @GUID=51823; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=-5832.868,`position_y`=-3577.47,`position_z`=-58.645027,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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,-5832.868,-3577.47,-58.645027,NULL,0,0,0,100,0), +(@PATH,2,-5847.7896,-3578.9922,-58.62624,NULL,0,0,0,100,0), +(@PATH,3,-5879.2153,-3563.779,-58.624992,NULL,0,0,0,100,0), +(@PATH,4,-5898.626,-3563.8586,-58.624992,NULL,0,0,0,100,0), +(@PATH,5,-5906.1606,-3590.3938,-58.624973,NULL,0,0,0,100,0), +(@PATH,6,-5906.0674,-3606.6235,-58.624973,NULL,0,0,0,100,0), +(@PATH,7,-5923.0366,-3626.2664,-58.624973,NULL,0,0,0,100,0), +(@PATH,8,-5945.6016,-3613.887,-58.624954,NULL,0,0,0,100,0), +(@PATH,9,-5954.7524,-3608.444,-58.624954,NULL,0,0,0,100,0), +(@PATH,10,-5984.0244,-3598.608,-58.624954,NULL,0,0,0,100,0), +(@PATH,11,-6006.2593,-3598.7825,-58.624954,NULL,0,0,0,100,0), +(@PATH,12,-6013.32,-3605.1987,-58.624954,NULL,0,0,0,100,0), +(@PATH,13,-6023.108,-3620.3386,-58.624954,NULL,0,0,0,100,0), +(@PATH,14,-6046.9595,-3639.2556,-58.624954,NULL,0,0,0,100,0), +(@PATH,15,-6055.033,-3642.866,-58.624954,NULL,0,0,0,100,0), +(@PATH,16,-6074.136,-3629.934,-58.624954,NULL,0,0,0,100,0), +(@PATH,17,-6083.2944,-3613.5764,-58.624954,NULL,0,0,0,100,0), +(@PATH,18,-6096.364,-3598.897,-58.624954,NULL,0,0,0,100,0), +(@PATH,19,-6112.0825,-3584.047,-58.624954,NULL,0,0,0,100,0), +(@PATH,20,-6129.6,-3575.8818,-58.624954,NULL,0,0,0,100,0), +(@PATH,21,-6152.832,-3570.761,-58.624954,NULL,0,0,0,100,0), +(@PATH,22,-6167.849,-3571.4946,-58.624954,NULL,0,0,0,100,0), +(@PATH,23,-6176.987,-3576.321,-58.624954,NULL,0,0,0,100,0), +(@PATH,24,-6187.7524,-3589.2395,-58.624954,NULL,0,0,0,100,0), +(@PATH,25,-6186.82,-3620.595,-58.624954,NULL,0,0,0,100,0), +(@PATH,26,-6186.299,-3634.014,-58.624954,NULL,0,0,0,100,0), +(@PATH,27,-6171.7256,-3641.8333,-58.624954,NULL,0,0,0,100,0), +(@PATH,28,-6154.3394,-3651.0803,-58.624954,NULL,0,0,0,100,0), +(@PATH,29,-6141.6694,-3650.3577,-58.624954,NULL,0,0,0,100,0), +(@PATH,30,-6123.28,-3640.9934,-58.624954,NULL,0,0,0,100,0), +(@PATH,31,-6108.6865,-3623.8994,-58.624954,NULL,0,0,0,100,0), +(@PATH,32,-6099.0645,-3600.8455,-58.624954,NULL,0,0,0,100,0), +(@PATH,33,-6093.388,-3581.6519,-58.624954,NULL,0,0,0,100,0), +(@PATH,34,-6096.3926,-3568.4915,-58.624954,NULL,0,0,0,100,0), +(@PATH,35,-6062.2173,-3546.6702,-58.624966,NULL,0,0,0,100,0), +(@PATH,36,-6048.2134,-3538.829,-58.624966,NULL,0,0,0,100,0), +(@PATH,37,-6022.5835,-3531.2087,-58.624973,NULL,0,0,0,100,0), +(@PATH,38,-6007.369,-3528.1714,-58.624973,NULL,0,0,0,100,0), +(@PATH,39,-5996.6787,-3533.4485,-58.624973,NULL,0,0,0,100,0), +(@PATH,40,-5978.62,-3529.2083,-58.624973,NULL,0,0,0,100,0), +(@PATH,41,-5963.492,-3514.8665,-58.374992,NULL,0,0,0,100,0), +(@PATH,42,-5950.205,-3508.0159,-58.624992,NULL,0,0,0,100,0), +(@PATH,43,-5927.1836,-3500.981,-58.374992,NULL,0,0,0,100,0), +(@PATH,44,-5911.841,-3499.235,-58.158527,NULL,0,0,0,100,0), +(@PATH,45,-5883.246,-3499.5684,-58.080044,NULL,0,0,0,100,0), +(@PATH,46,-5858.184,-3506.1418,-58.24999,NULL,0,0,0,100,0), +(@PATH,47,-5847.03,-3516.6768,-58.49999,NULL,0,0,0,100,0), +(@PATH,48,-5833.535,-3534.1719,-58.62499,NULL,0,0,0,100,0), +(@PATH,49,-5827.3213,-3554.03,-58.62499,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_07_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_07_world.sql new file mode 100644 index 00000000000..87b589a0f12 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_07_world.sql @@ -0,0 +1,18 @@ +-- Pathing for Treebole:22215 +SET @NPC=22215; +SET @GUID=77879; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=3609.03,`position_y`=6829.56,`position_z`=136.69,`orientation`=5.2105,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +UPDATE `creature_template_addon` SET `PvpFlags`=0 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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, 3609.03, 6829.57, 136.69, 5.2105, 300000, 0, 0, 100, 0), +(@PATH, 2, 3598.63, 6845.62, 140.703, 2.54014, 0, 0, 0, 100, 0), +(@PATH, 3, 3587.26, 6853.75, 141.589, 2.52051, 0, 0, 0, 100, 0), +(@PATH, 4, 3568.35, 6864.28, 140.533, 4.41331, 300000, 0, 0, 100, 0), +(@PATH, 5, 3587.72, 6853.33, 141.546, 5.70922, 0, 0, 0, 100, 0), +(@PATH, 6, 3599.61, 6845.15, 140.649, 5.70922, 0, 0, 0, 100, 0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_08_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_08_world.sql new file mode 100644 index 00000000000..32dd1d83bb3 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_08_world.sql @@ -0,0 +1,17 @@ +-- Pathing for Zora:14474 +SET @NPC=14474; +SET @GUID=51835; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=-7378.239,`position_y`=1714.3088,`position_z`=-91.72752,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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,-7378.239,1714.3088,-91.72752,NULL,0,0,0,100,0), +(@PATH,2,-7393.453,1717.8257,-92.846466,NULL,0,0,0,100,0), +(@PATH,3,-7401.651,1709.8647,-92.29474,NULL,0,0,0,100,0), +(@PATH,4,-7396.23,1696.348,-92.5287,NULL,0,0,0,100,0), +(@PATH,5,-7377.1226,1687.7341,-91.2392,NULL,0,0,0,100,0), +(@PATH,6,-7368.2925,1700.2347,-86.44376,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_09_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_09_world.sql new file mode 100644 index 00000000000..7dc2a6a4def --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_09_world.sql @@ -0,0 +1,74 @@ +-- Pathing for Tideress: 12759 +SET @NPC=12759; +SET @GUID=34224; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=1958.41,`position_y`=-945.92,`position_z`=70.11,`orientation`=4.153880,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +UPDATE `creature_template_addon` SET `PvpFlags`=0 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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, 1950.76, -957.199, 65.9789, NULL, 0, 0, 0, 100, 0), +(@PATH, 2, 1949.7, -971.117, 62.4051, NULL, 0, 0, 0, 100, 0), +(@PATH, 3, 1952.04, -984.871, 63.578, NULL, 0, 0, 0, 100, 0), +(@PATH, 4, 1958.59, -995.102, 69.6525, NULL, 0, 0, 0, 100, 0), +(@PATH, 5, 1958.25, -1010.11, 77.985, NULL, 0, 0, 0, 100, 0), +(@PATH, 6, 1965.77, -1023.12, 88.7347, NULL, 0, 0, 0, 100, 0), +(@PATH, 7, 1968.2, -1033.66, 93.133, NULL, 0, 0, 0, 100, 0), +(@PATH, 8, 1966.17, -1043.44, 94.9841, NULL, 0, 0, 0, 100, 0), +(@PATH, 9, 1973.94, -1049.95, 95.6832, NULL, 0, 0, 0, 100, 0), +(@PATH, 10, 1986.89, -1056.69, 96.4432, NULL, 0, 0, 0, 100, 0), +(@PATH, 11, 1995.48, -1071.04, 94.9886, NULL, 0, 0, 0, 100, 0), +(@PATH, 12, 1997.02, -1086.65, 94.846, NULL, 0, 0, 0, 100, 0), +(@PATH, 13, 2001.35, -1109.18, 95.674, NULL, 0, 0, 0, 100, 0), +(@PATH, 14, 1992.91, -1089.13, 94.9791, NULL, 0, 0, 0, 100, 0), +(@PATH, 15, 1977.37, -1091.98, 93.5929, NULL, 0, 0, 0, 100, 0), +(@PATH, 16, 1960.89, -1106.05, 81.5004, NULL, 0, 0, 0, 100, 0), +(@PATH, 17, 1950.73, -1121.58, 76.5911, NULL, 0, 0, 0, 100, 0), +(@PATH, 18, 1952.45, -1137.8, 74.7081, NULL, 0, 0, 0, 100, 0), +(@PATH, 19, 1951.68, -1152.21, 74.7775, NULL, 0, 0, 0, 100, 0), +(@PATH, 20, 1959.66, -1179.49, 63.8513, NULL, 0, 0, 0, 100, 0), +(@PATH, 21, 1967.89, -1196.3, 59.4363, NULL, 0, 0, 0, 100, 0), +(@PATH, 22, 1966.14, -1211.91, 57.2217, NULL, 0, 0, 0, 100, 0), +(@PATH, 23, 1941.16, -1212.98, 56.7257, NULL, 0, 0, 0, 100, 0), +(@PATH, 24, 1932.03, -1226.02, 59.3121, NULL, 0, 0, 0, 100, 0), +(@PATH, 25, 1940.4, -1246.86, 58.4144, NULL, 0, 0, 0, 100, 0), +(@PATH, 26, 1947.89, -1264.91, 60.367, NULL, 0, 0, 0, 100, 0), +(@PATH, 27, 1949.59, -1283.22, 65.9393, NULL, 0, 0, 0, 100, 0), +(@PATH, 28, 1941.54, -1297.67, 74.969, NULL, 0, 0, 0, 100, 0), +(@PATH, 29, 1936.7, -1307.34, 80.0226, NULL, 0, 0, 0, 100, 0), +(@PATH, 30, 1920.6, -1309.47, 82.8535, NULL, 0, 0, 0, 100, 0), +(@PATH, 31, 1902.6, -1303.77, 86.9758, NULL, 0, 0, 0, 100, 0), +(@PATH, 32, 1920.6, -1309.47, 82.8535, NULL, 0, 0, 0, 100, 0), +(@PATH, 33, 1936.7, -1307.34, 80.0226, NULL, 0, 0, 0, 100, 0), +(@PATH, 34, 1941.54, -1297.67, 74.969, NULL, 0, 0, 0, 100, 0), +(@PATH, 35, 1949.59, -1283.22, 65.9393, NULL, 0, 0, 0, 100, 0), +(@PATH, 36, 1947.89, -1264.91, 60.367, NULL, 0, 0, 0, 100, 0), +(@PATH, 37, 1940.4, -1246.86, 58.4144, NULL, 0, 0, 0, 100, 0), +(@PATH, 38, 1932.03, -1226.02, 59.3121, NULL, 0, 0, 0, 100, 0), +(@PATH, 39, 1941.14, -1212.98, 56.7217, NULL, 0, 0, 0, 100, 0), +(@PATH, 40, 1966.12, -1211.9, 57.2257, NULL, 0, 0, 0, 100, 0), +(@PATH, 41, 1967.89, -1196.3, 59.4363, NULL, 0, 0, 0, 100, 0), +(@PATH, 42, 1959.66, -1179.49, 63.8513, NULL, 0, 0, 0, 100, 0), +(@PATH, 43, 1951.68, -1152.21, 74.7775, NULL, 0, 0, 0, 100, 0), +(@PATH, 44, 1952.45, -1137.8, 74.7081, NULL, 0, 0, 0, 100, 0), +(@PATH, 45, 1950.73, -1121.58, 76.5911, NULL, 0, 0, 0, 100, 0), +(@PATH, 46, 1960.89, -1106.05, 81.5004, NULL, 0, 0, 0, 100, 0), +(@PATH, 47, 1977.37, -1091.98, 93.5929, NULL, 0, 0, 0, 100, 0), +(@PATH, 48, 1992.91, -1089.13, 94.9791, NULL, 0, 0, 0, 100, 0), +(@PATH, 49, 2001.35, -1109.18, 95.674, NULL, 0, 0, 0, 100, 0), +(@PATH, 50, 1997.02, -1086.65, 94.846, NULL, 0, 0, 0, 100, 0), +(@PATH, 51, 1995.48, -1071.04, 94.9886, NULL, 0, 0, 0, 100, 0), +(@PATH, 52, 1986.89, -1056.69, 96.4432, NULL, 0, 0, 0, 100, 0), +(@PATH, 53, 1973.94, -1049.95, 95.6832, NULL, 0, 0, 0, 100, 0), +(@PATH, 54, 1966.28, -1043.53, 94.9587, NULL, 0, 0, 0, 100, 0), +(@PATH, 55, 1968.19, -1033.7, 93.1832, NULL, 0, 0, 0, 100, 0), +(@PATH, 56, 1965.77, -1023.12, 88.7347, NULL, 0, 0, 0, 100, 0), +(@PATH, 57, 1958.25, -1010.11, 77.985, NULL, 0, 0, 0, 100, 0), +(@PATH, 58, 1958.59, -995.102, 69.6525, NULL, 0, 0, 0, 100, 0), +(@PATH, 59, 1952.04, -984.871, 63.578, NULL, 0, 0, 0, 100, 0), +(@PATH, 60, 1949.7, -971.117, 62.4051, NULL, 0, 0, 0, 100, 0), +(@PATH, 61, 1950.76, -957.199, 65.9789, NULL, 0, 0, 0, 100, 0), +(@PATH, 62, 1956.02, -946.128, 71.0499, NULL, 0, 0, 0, 100, 0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_10_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_10_world.sql new file mode 100644 index 00000000000..dbca4abeb4d --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_10_world.sql @@ -0,0 +1,38 @@ +-- Pathing for Archmage Xylem: 12759 +SET @NPC=8379; +SET @GUID=35886; +SET @PATH=@GUID * 10; +UPDATE `creature` SET `position_x`=3982.08,`position_y`=-4760.25,`position_z`=304.8,`orientation`=0.347593,`wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2 WHERE `entry`=@NPC; +UPDATE `creature_template_addon` SET `PvpFlags`=0 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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, 3982.08, -4760.25, 304.803, 5.3781, 60000, 0, 0, 100, 0), +(@PATH, 2, 3975.94, -4767.85, 304.728, NULL, 0, 0, 0, 100, 0), +(@PATH, 3, 3972.76, -4771.82, 304.716, NULL, 0, 0, 0, 100, 0), +(@PATH, 4, 3970.95, -4777.04, 304.728, NULL, 0, 0, 0, 100, 0), +(@PATH, 5, 3970.78, -4780.04, 304.712, NULL, 0, 0, 0, 100, 0), +(@PATH, 6, 3971.65, -4784.84, 304.718, NULL, 0, 0, 0, 100, 0), +(@PATH, 7, 3976.24, -4788.04, 304.717, NULL, 0, 0, 0, 100, 0), +(@PATH, 8, 3977.89, -4786.99, 304.73, NULL, 0, 0, 0, 100, 0), +(@PATH, 9, 3977.45, -4783.41, 303.731, NULL, 0, 0, 0, 100, 0), +(@PATH, 10, 3979.76, -4780.78, 301.995, NULL, 0, 0, 0, 100, 0), +(@PATH, 11, 3983.23, -4782.2, 299.606, NULL, 0, 0, 0, 100, 0), +(@PATH, 12, 3982.05, -4785.25, 297.913, NULL, 0, 0, 0, 100, 0), +(@PATH, 13, 3974.91, -4782.9, 295.922, NULL, 0, 0, 0, 100, 0), +(@PATH, 14, 3969.92, -4784.16, 296.018, NULL, 10000, 0, 0, 100, 0), +(@PATH, 15, 3974.91, -4782.9, 295.922, NULL, 0, 0, 0, 100, 0), +(@PATH, 16, 3982.05, -4785.25, 297.913, NULL, 0, 0, 0, 100, 0), +(@PATH, 17, 3983.23, -4782.2, 299.606, NULL, 0, 0, 0, 100, 0), +(@PATH, 18, 3979.76, -4780.78, 301.995, NULL, 0, 0, 0, 100, 0), +(@PATH, 19, 3977.45, -4783.41, 303.731, NULL, 0, 0, 0, 100, 0), +(@PATH, 20, 3977.89, -4786.99, 304.73, NULL, 0, 0, 0, 100, 0), +(@PATH, 21, 3976.24, -4788.04, 304.717, NULL, 0, 0, 0, 100, 0), +(@PATH, 22, 3971.65, -4784.84, 304.718, NULL, 0, 0, 0, 100, 0), +(@PATH, 23, 3970.78, -4780.04, 304.712, NULL, 0, 0, 0, 100, 0), +(@PATH, 24, 3970.95, -4777.04, 304.728, NULL, 0, 0, 0, 100, 0), +(@PATH, 25, 3972.76, -4771.82, 304.716, NULL, 0, 0, 0, 100, 0), +(@PATH, 26, 3975.94, -4767.85, 304.728, NULL, 0, 0, 0, 100, 0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_11_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_11_world.sql new file mode 100644 index 00000000000..883d4f7fce6 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_11_world.sql @@ -0,0 +1,2 @@ +-- Replace wrong 100 and 255 fixed orientation value with default NULL +UPDATE `waypoint_data` SET `orientation`=NULL WHERE `orientation`>7; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_12_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_12_world.sql new file mode 100644 index 00000000000..93d6c69a14e --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_12_world.sql @@ -0,0 +1,81 @@ +-- Add missing Battered Chest ID: 2843 with pooling in Northshire Valley, Coldridge Valley, DeathKnell, and Shadowglen +SET @OGUID := 13545; -- 19 required +SET @POOLID := 577; -- 8 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+18; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 2843, 0, 12, 34, 1, 1, -8564.622, -212.033, 85.301, 2.478, 0, 0, 0.94551849365234375, 0.325568377971649169, 360, 255, 1, 0), -- Northshire Valley, Echo Ridge Mine +(@OGUID+1, 2843, 0, 85, 154, 1, 1, 1788.795, 1345.5, 89.283, 5.341, 0, 0, -0.45398998260498046, 0.891006767749786376, 360, 255, 1, 0), -- DeathKnell +(@OGUID+2, 2843, 0, 85, 155, 1, 1, 2019.491, 1853.655, 102.669, 4.188, 0, 0, -0.86602497100830078, 0.50000077486038208, 360, 255, 1, 0), -- DeathKnell, Night Web's Hollow +(@OGUID+3, 2843, 0, 85, 155, 1, 1, 2041.629, 1935.115, 106.989, 4.677, 0, 0, -0.71933937072753906, 0.694658815860748291, 360, 255, 1, 0), -- DeathKnell, Night Web's Hollow +(@OGUID+4, 2843, 0, 1, 132, 1, 1, -6394.58447265625, 772.35076904296875, 386.2127685546875, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 360, 255, 1, 0), -- Coldridge Vally +(@OGUID+5, 2843, 0, 1, 132, 1, 1, -6550.423828125, 351.92535400390625, 392.339447021484375, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 360, 255, 1, 0), -- Coldridge Vally, cave +(@OGUID+6, 2843, 1, 141, 188, 1, 1, 10485.255859375, 1059.9840087890625, 1325.470458984375, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 360, 255, 1, 41446), -- Shadowglen +(@OGUID+7, 2843, 1, 141, 257, 1, 1, 10908.3759765625, 977.76202392578125, 1338.316162109375, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 360, 255, 1, 0), -- Shadowglen, Shadowthread Cave +-- From mangos db +(@OGUID+8, 2843, 0, 12, 9, 1, 1, -8955.38, -439.217, 64.7955, -2.86233, 0, 0, 0, 0, 360, 255, 1, 0), -- Northshire Valley +(@OGUID+9, 2843, 0, 85, 155, 1, 1, 2036.59, 1916.59, 102.783, 6.23153, 0, 0, 0.025824, -0.999667, 360, 255, 1, 0), -- DeathKnell, Night Web's Hollow +(@OGUID+10, 2843, 0, 1, 132, 1, 1, -6493.9, 502.314, 387.246, 0.977737, 0, 0, 0.469627, 0.882865, 360, 255, 1, 0), -- Coldridge Vally +(@OGUID+11, 2843, 0, 1, 132, 1, 1, -6520.52, 688.075, 387.612, 6.21242, 0, 0, 0.0353748, -0.999374, 360, 255, 1, 0), -- Coldridge Vally +(@OGUID+12, 2843, 0, 1, 132, 1, 1, -6396.81, 784.359, 386.216, 5.19288, 0, 0, 0.518547, -0.855049, 360, 255, 1, 0), -- Coldridge Vally +(@OGUID+13, 2843, 0, 1, 132, 1, 1, -6516.55, 288.024, 372.061, 0.760217, 0, 0, 0.371021, 0.928624, 360, 255, 1, 0), -- Coldridge Vally, cave +(@OGUID+14, 2843, 0, 1, 132, 1, 1, -6541.69, 362.199, 384.464, 1.23852, 0, 0, 0.580434, 0.814307, 360, 255, 1, 0), -- Coldridge Vally, cave +(@OGUID+15, 2843, 1, 141, 257, 1, 1, 10812.8, 897.368, 1336.4, 0.444496, 0, 0, 0.220423, 0.975404, 360, 255, 1, 0), -- Shadowglen, Shadowthread Cave +(@OGUID+16, 2843, 1, 141, 257, 1, 1, 10942.8, 942.153, 1340.68, 5.62352, 0, 0, 0.323884, -0.946097, 360, 255, 1, 0), -- Shadowglen, Shadowthread Cave +(@OGUID+17, 2843, 1, 141, 188, 1, 1, 10262.1, 961.428, 1340.93, 5.89251, 0, 0, 0.194099, -0.980982, 360, 255, 1, 41446), -- Shadowglen +(@OGUID+18, 2843, 1, 141, 188, 1, 1, 10504.8, 1064.71, 1325.83, -0.279252, 0, 0, 0, 0, 360, 255, 1, 41446); -- Shadowglen + +-- Update existing spawns to match new ones. +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN +(26749,34797,26756,34798,85653,1397,85816,1454,85817,45106,85818,85832,45110,49529,49528); + +-- Add coin +UPDATE `gameobject_template_addon` SET `mingold`=1, `maxgold`=20 WHERE `entry` = 2843; + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+7; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Battered Chest (2843), Northshire, Chest Pool Mine'), +(@POOLID+1,1,'Battered Chest (2843), Northshire, Chest Pool Vineyard'), +(@POOLID+2,1,'Battered Chest (2843), Coldridge Valley, Chest Pool Valley'), +(@POOLID+3,1,'Battered Chest (2843), Coldridge Valley, Chest Pool Cave'), +(@POOLID+4,1,'Battered Chest (2843), Deathknell, Chest Pool Deathknell'), +(@POOLID+5,1,'Battered Chest (2843), Deathknell, Chest Pool Night Web''s Hollow'), +(@POOLID+6,1,'Battered Chest (2843), Shadowglen, Chest Pool Shadowglen'), +(@POOLID+7,1,'Battered Chest (2843), Shadowglen, Chest Pool Shadowthread Cave'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+7; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,26749,@POOLID,0,'Battered Chest (2843), Northshire Mine'), +(1,34797,@POOLID,0,'Battered Chest (2843), Northshire Mine'), +(1,@OGUID,@POOLID,0,'Battered Chest (2843), Northshire Mine'), +(1,26756,@POOLID+1,0,'Battered Chest (2843), Northshire Vineyard'), +(1,34798,@POOLID+1,0,'Battered Chest (2843), Northshire Vineyard'), +(1,85653,@POOLID+1,0,'Battered Chest (2843), Northshire Vineyard'), +(1,@OGUID+8,@POOLID+1,0,'Battered Chest (2843), Northshire Vineyard'), +(1,1397,@POOLID+2,0,'Battered Chest (2843), Coldridge Valley'), +(1,85816,@POOLID+2,0,'Battered Chest (2843), Coldridge Valley'), +(1,@OGUID+4,@POOLID+2,0,'Battered Chest (2843), Coldridge Valley'), +(1,@OGUID+10,@POOLID+2,0,'Battered Chest (2843), Coldridge Valley'), +(1,@OGUID+11,@POOLID+2,0,'Battered Chest (2843), Coldridge Valley'), +(1,@OGUID+12,@POOLID+2,0,'Battered Chest (2843), Coldridge Valley'), +(1,1454,@POOLID+3,0,'Battered Chest (2843), Coldridge Valley Cave'), +(1,85817,@POOLID+3,0,'Battered Chest (2843), Coldridge Valley Cave'), +(1,@OGUID+5,@POOLID+3,0,'Battered Chest (2843), Coldridge Valley Cave'), +(1,@OGUID+13,@POOLID+3,0,'Battered Chest (2843), Coldridge Valley Cave'), +(1,@OGUID+14,@POOLID+3,0,'Battered Chest (2843), Coldridge Valley Cave'), +(1,45106,@POOLID+4,0,'Battered Chest (2843), Deathknell'), +(1,85818,@POOLID+4,0,'Battered Chest (2843), Deathknell'), +(1,85832,@POOLID+4,0,'Battered Chest (2843), Deathknell'), +(1,@OGUID+1,@POOLID+4,0,'Battered Chest (2843), Deathknell'), +(1,45110,@POOLID+5,0,'Battered Chest (2843), Night Web''s Hollow'), +(1,@OGUID+2,@POOLID+5,0,'Battered Chest (2843), Night Web''s Hollow'), +(1,@OGUID+3,@POOLID+5,0,'Battered Chest (2843), Night Web''s Hollow'), +(1,@OGUID+9,@POOLID+5,0,'Battered Chest (2843), Night Web''s Hollow'), +(1,49529,@POOLID+6,0,'Battered Chest (2843), Shadowglen'), +(1,@OGUID+6,@POOLID+6,0,'Battered Chest (2843), Shadowglen'), +(1,@OGUID+17,@POOLID+6,0,'Battered Chest (2843), Shadowglen'), +(1,@OGUID+18,@POOLID+6,0,'Battered Chest (2843), Shadowglen'), +(1,49528,@POOLID+7,0,'Battered Chest (2843), Shadowthread Cave'), +(1,@OGUID+7,@POOLID+7,0,'Battered Chest (2843), Shadowthread Cave'), +(1,@OGUID+15,@POOLID+7,0,'Battered Chest (2843), Shadowthread Cave'), +(1,@OGUID+16,@POOLID+7,0,'Battered Chest (2843), Shadowthread Cave'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_13_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_13_world.sql new file mode 100644 index 00000000000..cc3e174f5d3 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_13_world.sql @@ -0,0 +1,32 @@ +-- Add missing Battered Chest ID: 2849 with pooling in Ghostlands +SET @OGUID := 10633; -- 7 required +SET @POOLID := 585; -- 2 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+6; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID, 2849, 530, 3433, 3516, 1, 1, 7473.455078125, -7896.78662109375, 160.006317138671875, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 360, 255, 1, 42917), -- Zeb'Tela +(@OGUID+1, 2849, 530, 3433, 3516, 1, 1, 7351.85400390625, -7824.33251953125, 147.920196533203125, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 360, 255, 1, 42917), -- Zeb'Tela +(@OGUID+2, 2849, 530, 3433, 3516, 1, 1, 7271.18701171875, -7755.77001953125, 150.018524169921875, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 360, 255, 1, 56713), -- Zeb'Tela +(@OGUID+3, 2849, 530, 3433, 3517, 1, 1, 6806.115234375, -7428.17529296875, 47.94741439819335937, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 360, 255, 1, 42917), -- Zeb'Nowa +(@OGUID+4, 2849, 530, 3433, 3517, 1, 1, 6660.6044921875, -7406.60400390625, 57.55510330200195312, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 360, 255, 1, 41446), -- Zeb'Nowa +(@OGUID+5, 2849, 530, 3433, 3517, 1, 1, 7153.0546875, -7575.98681640625, 49.18671798706054687, 2.042035102844238281, 0, 0, 0.852640151977539062, 0.522498607635498046, 360, 255, 1, 56713), -- Zeb'Nowa +(@OGUID+6, 2849, 530, 3433, 3517, 1, 1, 7007.033203125, -7526.05908203125, 48.84354400634765625, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 360, 255, 1, 56713); -- Zeb'Nowa + +-- Update existing spawns to match new ones. +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid`=27287; + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+1; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Battered Chest (2849), Ghostlands, Chest Pool Zeb''Tela'), +(@POOLID+1,1,'Battered Chest (2849), Ghostlands, Chest Pool Zeb''Nowa'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+1; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,27287,@POOLID,0,'Battered Chest (2849), Zeb''Tela'), +(1,@OGUID,@POOLID,0,'Battered Chest (2849), Zeb''Tela'), +(1,@OGUID+1,@POOLID,0,'Battered Chest (2849), Zeb''Tela'), +(1,@OGUID+2,@POOLID,0,'Battered Chest (2849), Zeb''Tela'), +(1,@OGUID+3,@POOLID+1,0,'Battered Chest (2849), Zeb''Nowa'), +(1,@OGUID+4,@POOLID+1,0,'Battered Chest (2849), Zeb''Nowa'), +(1,@OGUID+5,@POOLID+1,0,'Battered Chest (2849), Zeb''Nowa'), +(1,@OGUID+6,@POOLID+1,0,'Battered Chest (2849), Zeb''Nowa'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_14_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_14_world.sql new file mode 100644 index 00000000000..7d2bbf64155 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_10_14_world.sql @@ -0,0 +1,2 @@ +-- Update Portals to Blasted Lands spell_target_position +UPDATE `spell_target_position` SET `PositionX`=-11708.3281, `PositionY`=-3167.8259, `PositionZ`=-5.052477, `Orientation`=3.328652 WHERE `id` IN (65728,65729); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_11_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_11_00_world.sql new file mode 100644 index 00000000000..04cb0a88b45 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_11_00_world.sql @@ -0,0 +1,124 @@ +-- *** Sunstrider Isle *** + +SET @REF := 1059; +DELETE FROM `reference_loot_template` WHERE `Entry` BETWEEN @REF AND @REF + 4; + +-- Food Reference loot for level 1 to 5 +SET @REFFOOD4 := @REF; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFFOOD4,159,0,33,0,1,1,1,1, 'Food 1-5 - Refreshing Spring Water'), +(@REFFOOD4,4540,0,67,0,1,1,1,1, 'Food 1-5 - Tough Hunk of Bread'); + +-- Mana Wyrm Reference loot for level 1 to 5 +SET @REFWYRM := @REF + 1; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFWYRM,20845,0,50,0,1,1,1,1, 'Wyrm 1-5 - Torn Wyrm Scale'), +(@REFWYRM,20846,0,50,0,1,1,1,1, 'Wyrm 1-5 - Faintly Glowing Eye'); + +-- Lynx Reference loot for level 1 to 5 +SET @REFLYNX := @REF + 2; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFLYNX,20812,0,50,0,1,1,1,1, 'Lynx 1-5 - Tattered Pelt'), +(@REFLYNX,20813,0,50,0,1,1,1,1, 'Lynx 1-5 - Lynx Tooth'); + +-- Tender Reference loot for level 1 to 5 +SET @REFTENDER := @REF + 3; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFTENDER,20842,0,50,0,1,1,1,1, 'Tender 1-5 - Frayed Tender Vine'), +(@REFTENDER,20843,0,50,0,1,1,1,1, 'Tender 1-5 - Smashed Petal'); + +-- Wraith Reference loot for level 1 to 5 +SET @REFWRAITH := @REF + 4; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@REFWRAITH,20847,0,50,0,1,1,1,1, 'Wraith 1-5 - Wraith Fragment'), +(@REFWRAITH,20848,0,50,0,1,1,1,1, 'Wraith 1-5 - Sparkling Dust'); + +-- Update loot for Entry 15274 : Mana Wyrm +SET @NPC := 15274; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFWYRM,@REFWYRM,100,0,1,0,1,1, 'Mana Wyrm - (Wyrm 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Mana Wyrm - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Mana Wyrm - (Small Pouch ReferenceTable)'), +(@NPC,20482,0,80,1,1,0,1,1, 'Mana Wyrm - Arcane Sliver'); + +-- Update loot for Entry 15366 : Springpaw Cub +SET @NPC := 15366; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFLYNX,@REFLYNX,100,0,1,0,1,1, 'Springpaw Cub - (Lynx 1-5 EXP 1 ReferenceTable)'), +-- (@NPC,@REFLYNX,@REFLYNX,30,0,1,1,1,1, 'Springpaw Cub - (Lynx 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Springpaw Cub - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Springpaw Cub - (Small Pouch ReferenceTable)'), +(@NPC,20797,0,80,1,1,0,1,1, 'Springpaw Cub - Lynx Collar'); + +-- Update loot for Entry 15372 : Springpaw Lynx +SET @NPC := 15372; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFLYNX,@REFLYNX,100,0,1,0,1,1, 'Springpaw Lynx - (Lynx 1-5 EXP 1 ReferenceTable)'), +-- (@NPC,@REFLYNX,@REFLYNX,30,0,1,1,1,1, 'Springpaw Lynx - (Lynx 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Springpaw Lynx - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Springpaw Lynx - (Small Pouch ReferenceTable)'), +(@NPC,20797,0,80,1,1,0,1,1, 'Springpaw Lynx - Lynx Collar'); + +-- Update loot for Entry 15271 : Tender +SET @NPC := 15271; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFTENDER,@REFTENDER,90,0,1,0,1,1, 'Tender - (Tender 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Tender - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Tender - (Small Pouch ReferenceTable)'); + +-- Update loot for Entry 15294 : Feral Tender +SET @NPC := 15294; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFTENDER,@REFTENDER,100,0,1,0,1,1, 'Feral Tender - (Tender 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Feral Tender - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Feral Tender - (Small Pouch ReferenceTable)'), +(@NPC,20482,0,80,1,1,0,1,1, 'Feral Tender - Arcane Sliver'); + +-- Update loot for Entry 15273 : Arcane Wraith +SET @NPC := 15273; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFWRAITH,@REFWRAITH,100,0,1,0,1,1, 'Arcane Wraith - (Wraith 1-5 EXP 1 ReferenceTable)'), +-- (@NPC,@REFWRAITH,@REFWRAITH,30,0,1,1,1,1, 'Arcane Wraith - (Wraith 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Arcane Wraith - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Arcane Wraith - (Small Pouch ReferenceTable)'), +(@NPC,20934,0,80,1,1,0,1,1, 'Arcane Wraith - Wraith Essence'), +(@NPC,20482,0,80,1,1,0,1,1, 'Arcane Wraith - Arcane Sliver'); + +-- Update loot for Entry 15298 : Tainted Arcane Wraith +SET @NPC := 15298; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFWRAITH,@REFWRAITH,100,0,1,0,1,1, 'Tainted Arcane Wraith - (Wraith 1-5 EXP 1 ReferenceTable)'), +-- (@NPC,@REFWRAITH,@REFWRAITH,30,0,1,1,1,1, 'Tainted Arcane Wraith - (Wraith 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Tainted Arcane Wraith - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Tainted Arcane Wraith - (Small Pouch ReferenceTable)'), +(@NPC,20483,0,100,0,1,0,1,1, 'Tainted Arcane Wraith - Tainted Arcane Sliver'), +(@NPC,20934,0,80,1,1,0,1,1, 'Tainted Arcane Wraith - Wraith Essence'), +(@NPC,20482,0,80,1,1,0,1,1, 'Tainted Arcane Wraith - Arcane Sliver'); + +-- Update loot for Entry 15367 : Felendren the Banished +SET @NPC := 15367; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFFOOD4,@REFFOOD4,100,0,1,0,1,1, 'Felendren the Banished - (Food 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Felendren the Banished - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Felendren the Banished - (Small Pouch ReferenceTable)'), +(@NPC,20799,0,100,1,1,0,1,1, 'Felendren the Banished - Felendren''s Head'); + +-- Update loot for Entry 15644 : Wretched Urchin +SET @NPC := 15644; +DELETE FROM `creature_loot_template` WHERE `Entry`=@NPC; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@NPC,@REFFOOD4,@REFFOOD4,100,0,1,0,1,1, 'Wretched Urchin - (Food 1-5 EXP 1 ReferenceTable)'), +(@NPC,1057,1057,30,0,1,0,1,1, 'Wretched Urchin - (Grey 1-5 EXP 1 ReferenceTable)'), +(@NPC,11111,11111,.2,0,1,0,1,1, 'Wretched Urchin - (Small Pouch ReferenceTable)'); + +-- *** Sunstrider Isle *** +UPDATE `creature_template` SET `mingold`=1, `maxgold`=7 WHERE `entry` IN (15367); +DELETE FROM `reference_loot_template` WHERE `Entry`=24072; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_11_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_11_01_world.sql new file mode 100644 index 00000000000..6254b8ab22e --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_11_01_world.sql @@ -0,0 +1,2 @@ +-- Noarm +UPDATE `creature` SET `wander_distance`=1, `MovementType`=1 WHERE `guid`=79781; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_17_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_17_00_world.sql new file mode 100644 index 00000000000..48a20b343c0 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_17_00_world.sql @@ -0,0 +1,33 @@ +-- The Behemoth:14474 +SET @NPC=8924; +SET @GUID=18658; +SET @PATH=@GUID * 10; +DELETE FROM `creature` WHERE `guid`=@GUID; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID, @NPC, 0, 0, 0, 1, 1, 0, 0, -7404.57, -894.073, 171.873, 2.89516, 108000, 0, 0, 3323, 0, 2, 0, 0, 0, '', NULL, 0); +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +-- Pathing +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, -7404.57, -894.073, 171.873,NULL,0,0,0,100,0), +(@PATH, 2, -7397.19, -934.067, 169.109,NULL,0,0,0,100,0), +(@PATH, 3, -7397.22, -957.259, 170.151,NULL,0,0,0,100,0), +(@PATH, 4, -7406.08, -992.606, 173.821,NULL,0,0,0,100,0), +(@PATH, 5, -7378.71, -995.416, 171.25,NULL,0,0,0,100,0), +(@PATH, 6, -7348, -986.191, 171.532,NULL,0,0,0,100,0), +(@PATH, 7, -7346.79, -1017.81, 177.942,NULL,0,0,0,100,0), +(@PATH, 8, -7371.64, -1036.28, 177.966,NULL,0,0,0,100,0), +(@PATH, 9, -7390.05, -1044.6, 176.843,NULL,0,0,0,100,0), +(@PATH, 10, -7406.18, -1044.51, 176.751,NULL,0,0,0,100,0), +(@PATH, 11, -7390.37, -1044.6, 176.823,NULL,0,0,0,100,0), +(@PATH, 12, -7371.64, -1036.28, 177.966,NULL,0,0,0,100,0), +(@PATH, 13, -7346.79, -1017.81, 177.942,NULL,0,0,0,100,0), +(@PATH, 14, -7348, -986.191, 171.532,NULL,0,0,0,100,0), +(@PATH, 15, -7378.71, -995.416, 171.25,NULL,0,0,0,100,0), +(@PATH, 16, -7406.08, -992.606, 173.821,NULL,0,0,0,100,0), +(@PATH, 17, -7397.25, -957.381, 170.135,NULL,0,0,0,100,0), +(@PATH, 18, -7397.19, -934.067, 169.109,NULL,0,0,0,100,0), +(@PATH, 19, -7404.57, -894.073, 171.873,NULL,0,0,0,100,0), +(@PATH, 20, -7438.96, -892.375, 171.973,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_00_world.sql new file mode 100644 index 00000000000..7d4f39de5b5 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_00_world.sql @@ -0,0 +1,60 @@ +-- Add missing spawns and pooling for Battered Chest ID: 2849 in Ghostlands +SET @POOLID := 587; -- 6 required +SET @OGUID := 12738; -- 16 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+15; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 106319, 530, 3433, 3514, 1, 1, 7943.26904296875, -6716.94677734375, 35.34872817993164062, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 360, 255, 1, 40892), -- Dead scar +(@OGUID+1, 106319, 530, 3433, 3509, 1, 1, 7651.68212890625, -7144.56396484375, 153.5474395751953125, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 360, 255, 1, 42917), -- Amani Catacombs +(@OGUID+2, 106319, 530, 3433, 3433, 1, 1, 7181.9384765625, -5858.966796875, 14.44211483001708984, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 360, 255, 1, 42917), -- Windrunner Village +(@OGUID+3, 106319, 530, 3433, 3433, 1, 1, 7050.58251953125, -5736.326171875, 84.08641815185546875, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 360, 255, 1, 42917), -- Windrunner Spire +(@OGUID+4, 106319, 530, 3433, 3491, 1, 1, 7194.93896484375, -5962.3603515625, 21.32486915588378906, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 360, 255, 1, 41446), -- Windrunner Village +(@OGUID+5, 106319, 530, 3433, 3505, 1, 1, 7138.8984375, -6196.390625, 21.56857109069824218, 0.942476630210876464, 0, 0, 0.453989982604980468, 0.891006767749786376, 360, 255, 1, 41446), -- Underlight Mines +(@OGUID+6, 106319, 530, 3433, 3490, 1, 1, 7917.97314453125, -6254.814453125, 39.78503036499023437, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 360, 255, 1, 40892), -- Goldenmist Village +(@OGUID+7, 106319, 530, 3433, 3509, 1, 1, 7593.18603515625, -7280.60595703125, 155.0066375732421875, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 360, 255, 1, 41446), -- Amani Catacombs +(@OGUID+8, 106319, 530, 3433, 3509, 1, 1, 7626.720703125, -7477.81494140625, 161.88909912109375, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 360, 255, 1, 41446), -- Amani Catacombs +(@OGUID+9, 106319, 530, 3433, 3495, 1, 1, 7828.2880859375, -7910.99462890625, 294.16424560546875, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 360, 255, 1, 40892), -- Dawnstar Spire +(@OGUID+10, 106319, 530, 3433, 3505, 1, 1, 7151.56103515625, -6244.48974609375, 21.80349540710449218, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 360, 255, 1, 41446), -- Underlight Mines +(@OGUID+11, 106319, 530, 3433, 3490, 1, 1, 7988.2568359375, -6098.12744140625, 20.41779518127441406, 0.733038187026977539, 0, 0, 0.358367919921875, 0.933580458164215087, 360, 255, 1, 56713), -- Goldenmist Village +(@OGUID+12, 106319, 530, 3433, 3491, 1, 1, 7344.84814453125, -5957.92431640625, 15.93715286254882812, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 360, 255, 1, 56713), -- Windrunner Village +(@OGUID+13, 106319, 530, 3433, 3492, 1, 1, 7009.5205078125, -5700.59375, 102.6014862060546875, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 360, 255, 1, 56713), -- Windrunner Spire +(@OGUID+14, 106319, 530, 3433, 3433, 1, 1, 7019.9306640625, -5693.78759765625, 82.67047882080078125, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 360, 255, 1, 56713), -- Windrunner Spire +(@OGUID+15, 106319, 530, 3433, 3497, 1, 1, 7966.60693359375, -6557.32861328125, 57.7398681640625, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 360, 255, 1, 56713); -- An'daroth + +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN (27337,27378,27422,27446,27493,27515,33980,34000,34002); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Battered Chest (2849), Ghostlands, Chest Pool Goldenmist Village'), +(@POOLID+1,1,'Battered Chest (2849), Ghostlands, Chest Pool Windrunner Village'), +(@POOLID+2,1,'Battered Chest (2849), Ghostlands, Chest Pool Underlight Mines'), +(@POOLID+3,1,'Battered Chest (2849), Ghostlands, Chest Pool Windrunner Spire'), +(@POOLID+4,1,'Battered Chest (2849), Ghostlands, Chest Pool Amani Catacombs'), +(@POOLID+5,1,'Battered Chest (2849), Ghostlands, Chest Pool Ghostlands'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) Values +(1,27422,@POOLID,0,'Battered Chest (2849), Goldenmist Village'), +(1,34002,@POOLID,0,'Battered Chest (2849), Goldenmist Village'), +(1,@OGUID+6,@POOLID,0,'Battered Chest (2849), Goldenmist Village'), +(1,@OGUID+11,@POOLID,0,'Battered Chest (2849), Goldenmist Village'), +(1,27446,@POOLID+1,0,'Battered Chest (2849), Windrunner Village'), +(1,@OGUID+2,@POOLID+1,0,'Battered Chest (2849), Windrunner Village'), +(1,@OGUID+4,@POOLID+1,0,'Battered Chest (2849), Windrunner Village'), +(1,@OGUID+12,@POOLID+1,0,'Battered Chest (2849), Windrunner Village'), +(1,27515,@POOLID+2,0,'Battered Chest (2849), Underlight Mines'), +(1,33980,@POOLID+2,0,'Battered Chest (2849), Underlight Mines'), +(1,@OGUID+5,@POOLID+2,0,'Battered Chest (2849), Underlight Mines'), +(1,@OGUID+10,@POOLID+2,0,'Battered Chest (2849), Underlight Mines'), +(1,27493,@POOLID+3,0,'Battered Chest (2849), Windrunner Spire'), +(1,@OGUID+3,@POOLID+3,0,'Battered Chest (2849), Windrunner Spire'), +(1,@OGUID+13,@POOLID+3,0,'Battered Chest (2849), Windrunner Spire'), +(1,@OGUID+14,@POOLID+3,0,'Battered Chest (2849), Windrunner Spire'), +(1,27337,@POOLID+4,0,'Battered Chest (2849), Amani Catacombs'), +(1,@OGUID+1,@POOLID+4,0,'Battered Chest (2849), Amani Catacombs'), +(1,@OGUID+7,@POOLID+4,0,'Battered Chest (2849), Amani Catacombs'), +(1,@OGUID+8,@POOLID+4,0,'Battered Chest (2849), Amani Catacombs'), +(1,34000,@POOLID+5,0,'Battered Chest (2849), Ghostlands'), +(1,27378,@POOLID+5,0,'Battered Chest (2849), Ghostlands'), +(1,@OGUID,@POOLID+5,0,'Battered Chest (2849), Ghostlands'), +(1,@OGUID+15,@POOLID+5,0,'Battered Chest (2849), Ghostlands'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_01_world.sql new file mode 100644 index 00000000000..84c1383979d --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_01_world.sql @@ -0,0 +1,23 @@ +-- Add spawns and pooling for Large Battered Chest ID: 75293 in Ghostlands +SET @POOLID := 368; -- One required +SET @OGUID := 10860; -- Three required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+2; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID, 75293, 530, 3433, 3500, 1, 1, 6443.123046875, -6660.0498046875, 106.3956069946289062, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 360, 255, 1, 41446), -- Deatholme +(@OGUID+1, 75293, 530, 3433, 3500, 1, 1, 6645.44921875, -6329.88427734375, 9.133299827575683593, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 360, 255, 1, 41446), -- Deatholme +-- From Mangos db +(@OGUID+2, 75293, 530, 3433, 3500, 1, 1, 6527.45, -6514.33, 43.762, 3.47321, 0, 0, -0.986285, 0.16505, 5200, 255, 1, 0); + +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN (27542); + +DELETE FROM `pool_template` WHERE `entry`=@POOLID; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Large Battered Chest (75293), Ghostlands, Chest Pool Deatholme'); + +DELETE FROM `pool_members` WHERE `poolSpawnId`=@POOLID; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,27542,@POOLID,0,'Large Battered Chest (75293), Deatholme'), +(1,@OGUID,@POOLID,0,'Large Battered Chest (75293), Deatholme'), +(1,@OGUID+1,@POOLID,0,'Large Battered Chest (75293), Deatholme'), +(1,@OGUID+2,@POOLID,0,'Large Battered Chest (75293), Deatholme'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_02_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_02_world.sql new file mode 100644 index 00000000000..d9199ad9513 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_02_world.sql @@ -0,0 +1,46 @@ +-- Add missing spawns and pooling for Tattered Chest ID: 2844 in Azuremyst Isle +SET @POOLID := 782; -- 6 required +SET @OGUID := 12722; -- 8 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+7; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID, 2844, 530, 3524, 3567, 1, 1, -4434.80810546875, -11967.896484375, 32.12919235229492187, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 360, 255, 1, 45942), -- Pod Cluster +(@OGUID+1, 2844, 530, 3524, 3569, 1, 1, -4826.92822265625, -11486.4384765625, -37.0933952331542968, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 360, 255, 1, 40892), -- Tide's Hollow +(@OGUID+2, 2844, 530, 3524, 3571, 1, 1, -4481.47900390625, -11624.3408203125, 11.0514068603515625, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 360, 255, 1, 45942), -- Bristlelimb Village +(@OGUID+3, 2844, 530, 3524, 3572, 1, 1, -3099.85595703125, -12480.6591796875, 0.465005010366439819, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 360, 255, 1, 40892), -- Stillpine Hold +(@OGUID+4, 2844, 530, 3524, 3572, 1, 1, -3222.1826171875, -12490.9609375, 15.47136592864990234, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 360, 255, 1, 45942), -- Stillpine Hold +(@OGUID+5, 2844, 530, 3524, 3577, 1, 1, -4600.736328125, -12871.3798828125, 6.40148019790649414, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 360, 255, 1, 45942), -- Greezie's Camp +(@OGUID+6, 2844, 530, 3524, 3578, 1, 1, -3371.1328125, -12716.5361328125, 19.57845115661621093, 6.056293010711669921, 0, 0, -0.11320304870605468, 0.993571877479553222, 360, 255, 1, 45942), -- Menagerie Wreckage +(@OGUID+7, 2844, 530, 3524, 3639, 1, 1, -5200.96875, -11046.71875, 26.86562156677246093, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 360, 255, 1, 40892); -- Silvermyst Lsle + +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN (12098,29908,12097,30474,85814,12095,12096,30513,12093,12094); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Tattered Chest (2844), Azuremyst Isle, Chest Pool Stillpine Hold'), +(@POOLID+1,1,'Tattered Chest (2844), Azuremyst Isle, Chest Pool Pods and Greezie''s Camp'), +(@POOLID+2,1,'Tattered Chest (2844), Azuremyst Isle, Chest Pool Menagerie Wreckage'), +(@POOLID+3,1,'Tattered Chest (2844), Azuremyst Isle, Chest Pool Bristlelimb Village'), +(@POOLID+4,1,'Tattered Chest (2844), Azuremyst Isle, Chest Pool Tides Hollow'), +(@POOLID+5,1,'Tattered Chest (2844), Azuremyst Isle, Chest Pool Silvermyst Isle'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,12093,@POOLID,0,'Tattered Chest (2844), Stillpine Hold'), +(1,@OGUID+3,@POOLID,0,'Tattered Chest (2844), Stillpine Hold'), +(1,@OGUID+4,@POOLID,0,'Tattered Chest (2844), Stillpine Hold'), +(1,30474,@POOLID+1,0,'Tattered Chest (2844), Pod Wreckage'), +(1,@OGUID,@POOLID+1,0,'Tattered Chest (2844), Pod Cluster'), +(1,@OGUID+5,@POOLID+1,0,'Tattered Chest (2844), Greezie''s Camp'), +(1,12094,@POOLID+2,0,'Tattered Chest (2844), Menagerie Wreckage'), +(1,@OGUID+6,@POOLID+2,0,'Tattered Chest (2844), Menagerie Wreckage'), +(1,29908,@POOLID+2,0,'Tattered Chest (2844), Azuremyst Isle'), +(1,12096,@POOLID+3,0,'Tattered Chest (2844), Bristlelimb Village'), +(1,30513,@POOLID+3,0,'Tattered Chest (2844), Bristlelimb Village'), +(1,@OGUID+2,@POOLID+3,0,'Tattered Chest (2844), Bristlelimb Village'), +(1,85814,@POOLID+4,0,'Tattered Chest (2844), Tides Hollow'), +(1,12095,@POOLID+4,0,'Tattered Chest (2844), Tides Hollow'), +(1,@OGUID+1,@POOLID+4,0,'Tattered Chest (2844), Tides Hollow'), +(1,12098,@POOLID+5,0,'Tattered Chest (2844), Silvermyst Isle'), +(1,@OGUID+7,@POOLID+5,0,'Tattered Chest (2844), Silvermyst Isle'), +(1,12097,@POOLID+5,0,'Tattered Chest (2844), Moonwing Den'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_03_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_03_world.sql new file mode 100644 index 00000000000..309a5d3c4b6 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_03_world.sql @@ -0,0 +1,91 @@ +-- Add 24 missing Battered Chest ID: 106318 with pooling in Mulgore +SET @OGUID := 21965; -- 24 required +SET @POOLID := 788; -- 9 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+24; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID, 106318, 1, 215, 215, 1, 1, -631.74151611328125, 111.4527664184570312, 17.11371040344238281, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 360, 255, 1, 46902), -- Mulgore North +(@OGUID+1, 106318, 1, 215, 215, 1, 1, -546.70684814453125, 72.729278564453125, 52.28420257568359375, 0.802850961685180664, 0, 0, 0.390730857849121093, 0.920504987239837646, 360, 255, 1, 44171), -- Mulgore North +(@OGUID+2, 106318, 1, 215, 215, 1, 1, -657.78033447265625, 193.8148956298828125, 46.80418014526367187, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 360, 255, 1, 44171), -- Mulgore North +(@OGUID+3, 106318, 1, 215, 820, 1, 1, -824.10137939453125, -780.58660888671875, -2.71320295333862304, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 360, 255, 1, 44171), -- The Golden Plains +(@OGUID+4, 106318, 1, 215, 819, 1, 1, -591.3314208984375, -681.55999755859375, 27.44317245483398437, 5.427974700927734375, 0, 0, -0.41469287872314453, 0.909961462020874023, 360, 255, 1, 46368), -- Windfiry Ridge "Near The Golden Plains" +(@OGUID+5, 106318, 1, 215, 819, 1, 1, -665.03692626953125, -787.12469482421875, 43.61326980590820312, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 360, 255, 1, 44171), -- Windfiry Ridge "Near The Golden Plains" +(@OGUID+6, 106318, 1, 215, 0, 1, 1, -1075.2293701171875, 542.53753662109375, 49.8483428955078125, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 360, 255, 1, 44171), -- Mulgore West +(@OGUID+7, 106318, 1, 215, 215, 1, 1, -998.08270263671875, 589.4744873046875, 81.93946075439453125, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 360, 255, 1, 44171), -- Mulgore West +(@OGUID+8, 106318, 1, 215, 404, 1, 1, -1893.6497802734375, 353.875457763671875, 107.3605728149414062, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 360, 255, 1, 44171), -- Bael'dun Digsite +(@OGUID+9, 106318, 1, 215, 360, 1, 1, -1681.0875244140625, -1218.5963134765625, 127.4188613891601562, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 360, 255, 1, 46368), -- Venture Company Mine +(@OGUID+10, 106318, 1, 215, 360, 1, 1, -1585.0709228515625, -1151.2315673828125, 104.118377685546875, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 360, 255, 1, 44171), -- Venture Company Mine +(@OGUID+11, 106318, 1, 215, 360, 1, 1, -1672.001708984375, -1324.0699462890625, 132.7880859375, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 360, 255, 1, 44171), -- Venture Company Mine +(@OGUID+12, 106318, 1, 215, 360, 1, 1, -1921.726806640625, -1027.15087890625, 43.96306610107421875, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 360, 255, 1, 46902), -- Venture Company Mine "Outside" +(@OGUID+13, 106318, 1, 215, 360, 1, 1, -1889.326416015625, -1096.98095703125, 90.32932281494140625, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 360, 255, 1, 44171), -- Venture Company Mine "Outside" +(@OGUID+14, 106318, 1, 215, 818, 1, 1, -2388.364990234375, 444.8865966796875, 75.9410400390625, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 360, 255, 1, 44171), -- Palemane Rock +(@OGUID+15, 106318, 1, 215, 818, 1, 1, -2402.0634765625, 233.6727142333984375, 49.24333953857421875, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 360, 255, 1, 44171), -- Palemane Rock +(@OGUID+16, 106318, 1, 215, 818, 1, 1, -2445.70751953125, 438.708526611328125, 61.7602691650390625, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 360, 255, 1, 44171), -- Palemane Rock +(@OGUID+17, 106318, 1, 215, 818, 1, 1, -2358.603271484375, 379.66888427734375, 64.85495758056640625, 3.43830275535583496, 0, 0, -0.98901557922363281, 0.147811368107795715, 360, 255, 1, 44171), -- Palemane Rock +(@OGUID+18, 106318, 1, 215, 215, 1, 1, -2782.115478515625, -707.653564453125, 6.424570083618164062, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 360, 255, 1, 46902), -- Palemane Camp +(@OGUID+19, 106318, 1, 215, 821, 1, 1, -2716.833740234375, -1188.42822265625, 16.78433990478515625, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 360, 255, 1, 46902), -- The Rolling Plains +(@OGUID+20, 106318, 1, 215, 821, 1, 1, -2643.494873046875, -1320.986328125, 12.12032413482666015, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 360, 255, 1, 44171), -- The Rolling Plains +(@OGUID+21, 106318, 1, 215, 821, 1, 1, -2625.284423828125, -1390.2613525390625, 24.50350379943847656, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 360, 255, 1, 44171), -- The Rolling Plains +(@OGUID+22, 106318, 1, 215, 224, 1, 1, -1931.8563232421875, -715.7557373046875, 3.48775792121887207, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 360, 255, 1, 44171), -- Ravaged Caravan +(@OGUID+23, 106318, 1, 215, 224, 1, 1, -1912.48876953125, -712.5831298828125, 3.573940992355346679, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 360, 255, 1, 44171); -- Ravaged Caravan + +-- Update existing spawns to match new ones. +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN +(18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,85767,85772,85882,85883); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+8; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Battered Chest (106318), Mulgore, Chest Pool Mulgore North'), +(@POOLID+1,1,'Battered Chest (106318), Mulgore, Chest Pool Golden Plains'), +(@POOLID+2,1,'Battered Chest (106318), Mulgore, Chest Pool Mulgore West'), +(@POOLID+3,1,'Battered Chest (106318), Mulgore, Chest Pool Bael''dun Digsite'), +(@POOLID+4,1,'Battered Chest (106318), Mulgore, Chest Pool Venture Company Mine'), +(@POOLID+5,1,'Battered Chest (106318), Mulgore, Chest Pool Palemane Rock'), +(@POOLID+6,1,'Battered Chest (106318), Mulgore, Chest Pool Palemane Camp'), +(@POOLID+7,1,'Battered Chest (106318), Mulgore, Chest Pool The Rolling Plains'), +(@POOLID+8,1,'Battered Chest (106318), Mulgore, Chest Pool Venture North and Ravaged Caravan'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+8; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,18442,@POOLID,0,'Battered Chest (106318), Mulgore North'), +(1,@OGUID,@POOLID,0,'Battered Chest (106318), Mulgore North'), +(1,@OGUID+1,@POOLID,0,'Battered Chest (106318), Mulgore North'), +(1,@OGUID+2,@POOLID,0,'Battered Chest (106318), Mulgore North'), +(1,18443,@POOLID+1,0,'Battered Chest (106318), Golden Plains'), +(1,@OGUID+3,@POOLID+1,0,'Battered Chest (106318), Golden Plains'), +(1,@OGUID+4,@POOLID+1,0,'Battered Chest (106318), Windfiry Ridge'), +(1,@OGUID+5,@POOLID+1,0,'Battered Chest (106318), Windfiry Ridge'), +(1,18451,@POOLID+2,0,'Battered Chest (106318), Mulgore West'), +(1,85772,@POOLID+2,0,'Battered Chest (106318), Mulgore West'), +(1,@OGUID+6,@POOLID+2,0,'Battered Chest (106318), Mulgore West'), +(1,@OGUID+7,@POOLID+2,0,'Battered Chest (106318), Mulgore West'), +(1,18446,@POOLID+3,0,'Battered Chest (106318), Bael''dun Digsite'), +(1,@OGUID+8,@POOLID+3,0,'Battered Chest (106318), Bael''dun Digsite'), +(1,18454,@POOLID+3,0,'Battered Chest (106318), Mulgore'), +(1,85883,@POOLID+3,0,'Battered Chest (106318), Mulgore'), +(1,18445,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,18453,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,@OGUID+9,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,@OGUID+10,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,@OGUID+11,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,@OGUID+12,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,@OGUID+13,@POOLID+4,0,'Battered Chest (106318), Venture Company Mine'), +(1,18447,@POOLID+5,0,'Battered Chest (106318), Palemane Rock'), +(1,18448,@POOLID+5,0,'Battered Chest (106318), Palemane Rock'), +(1,@OGUID+14,@POOLID+5,0,'Battered Chest (106318), Palemane Rock'), +(1,@OGUID+15,@POOLID+5,0,'Battered Chest (106318), Palemane Rock'), +(1,@OGUID+16,@POOLID+5,0,'Battered Chest (106318), Palemane Rock'), +(1,@OGUID+17,@POOLID+5,0,'Battered Chest (106318), Palemane Rock'), +(1,18444,@POOLID+6,0,'Battered Chest (106318), Palemane Camp'), +(1,18449,@POOLID+6,0,'Battered Chest (106318), Palemane Camp'), +(1,85767,@POOLID+6,0,'Battered Chest (106318), Palemane Camp'), +(1,@OGUID+18,@POOLID+6,0,'Battered Chest (106318), Palemane Camp'), +(1,18455,@POOLID+7,0,'Battered Chest (106318), The Rolling Plains'), +(1,@OGUID+19,@POOLID+7,0,'Battered Chest (106318), The Rolling Plains'), +(1,@OGUID+20,@POOLID+7,0,'Battered Chest (106318), The Rolling Plains'), +(1,@OGUID+21,@POOLID+7,0,'Battered Chest (106318), The Rolling Plains'), +(1,18450,@POOLID+8,0,'Battered Chest (106318), Mulgore Venture North'), +(1,85882,@POOLID+8,0,'Battered Chest (106318), Mulgore Venture North'), +(1,18452,@POOLID+8,0,'Battered Chest (106318), Ravaged Caravan'), +(1,@OGUID+22,@POOLID+8,0,'Battered Chest (106318), Ravaged Caravan'), +(1,@OGUID+23,@POOLID+8,0,'Battered Chest (106318), Ravaged Caravan'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_04_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_04_world.sql new file mode 100644 index 00000000000..929326302d0 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_04_world.sql @@ -0,0 +1,77 @@ +-- Add 23 missing Battered Chest ID: 106318 with pooling in Teldrassil +SET @OGUID := 20592; -- 23 required +SET @POOLID := 844; -- 6 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+22; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID, 106318, 1, 141, 258, 1, 1, 10134.7548828125, 1183.4837646484375, 1323.5435791015625, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 360, 255, 1, 41510), -- Fel Rock +(@OGUID+1, 106318, 1, 141, 258, 1, 1, 10128.7626953125, 1114.3878173828125, 1323.858154296875, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 360, 255, 1, 41510), -- Fel Rock +(@OGUID+2, 106318, 1, 141, 258, 1, 1, 10182.3330078125, 1174.6905517578125, 1326.032958984375, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 360, 255, 1, 41510), -- Fel Rock +(@OGUID+3, 106318, 1, 141, 262, 1, 1, 9749.2099609375, 1586.384765625, 1299.9820556640625, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 360, 255, 1, 41510), -- Ban'ethil Barrow Den +(@OGUID+4, 106318, 1, 141, 262, 1, 1, 9703.41015625, 1543.0289306640625, 1254.1004638671875, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 360, 255, 1, 41510), -- Ban'ethil Barrow Den +(@OGUID+5, 106318, 1, 141, 262, 1, 1, 9800.5625, 1581.1583251953125, 1291.1978759765625, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 360, 255, 1, 41510), -- Ban'ethil Barrow Den +(@OGUID+6, 106318, 1, 141, 262, 1, 1, 9776.05078125, 1547.3790283203125, 1299.4854736328125, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 360, 255, 1, 41510), -- Ban'ethil Barrow Den +(@OGUID+7, 106318, 1, 141, 264, 1, 1, 10511.2021484375, 2002.39306640625, 1327.3753662109375, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 360, 255, 1, 41510), -- The Oracle Glade South +(@OGUID+8, 106318, 1, 141, 264, 1, 1, 10863.521484375, 2125.578857421875, 1327.0626220703125, 2.635444164276123046, 0, 0, 0.96814727783203125, 0.250381410121917724, 360, 255, 1, 41510), -- The Oracle Glade North +(@OGUID+9, 106318, 1, 141, 264, 1, 1, 10620.2724609375, 2089.35205078125, 1336.537841796875, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 360, 255, 1, 41510), -- The Oracle Glade South +(@OGUID+10, 106318, 1, 141, 141, 1, 1, 9673.74609375, 454.109161376953125, 1309.8837890625, 1.640606880187988281, 0, 0, 0.731352806091308593, 0.6819993257522583, 360, 255, 1, 41446), -- South of Starbreeze Village +(@OGUID+11, 106318, 1, 141, 141, 1, 1, 9631.6015625, 463.320098876953125, 1312.8011474609375, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 360, 255, 1, 41446), -- South of Starbreeze Village +(@OGUID+12, 106318, 1, 141, 141, 1, 1, 10027.5283203125, 273.2647705078125, 1323.5810546875, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 360, 255, 1, 41446), -- North of Starbreeze Village +(@OGUID+13, 106318, 1, 141, 141, 1, 1, 9183.7001953125, 1372.7894287109375, 1315.068359375, 3.595378875732421875, 0, 0, -0.97437000274658203, 0.224951311945915222, 360, 255, 1, 41446), -- South +(@OGUID+14, 106318, 1, 141, 141, 1, 1, 9264.998046875, 949.08831787109375, 1312.4244384765625, 5.95157480239868164, 0, 0, -0.16504669189453125, 0.986285746097564697, 360, 255, 1, 41510), -- South +(@OGUID+15, 106318, 1, 141, 141, 1, 1, 10419.6533203125, 1908.990234375, 1321.2657470703125, 2.617989301681518554, 0, 0, 0.965925216674804687, 0.258821308612823486, 360, 255, 1, 41510), -- Below The Oracle Glade +(@OGUID+16, 106318, 1, 141, 141, 1, 1, 10371.857421875, 1923.328125, 1319.966552734375, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 360, 255, 1, 41510), -- Below The Oracle Glade +-- 6 from Mangos DB +(@OGUID+17, 106318, 1, 141, 262, 1, 1, 9730.49, 1576.73, 1269.44, 3.07177, 0, 0, 0.999391, 0.0349061, 360, 255, 1, 0), -- Ban'ethil Barrow Den +(@OGUID+18, 106318, 1, 141, 262, 1, 1, 9831.43, 1533.49, 1257.51, 1.36136, 0, 0, 0.62932, 0.777146, 360, 255, 1, 0), -- Ban'ethil Barrow Den +(@OGUID+19, 106318, 1, 141, 262, 1, 1, 9800.56, 1581.16, 1291.2, 5.65487, 0, 0, -0.309016, 0.951057, 360, 255, 1, 0), -- Ban'ethil Barrow Den +(@OGUID+20, 106318, 1, 141, 262, 1, 1, 9730.49, 1576.73, 1269.44, 3.07177, 0, 0, 0.999391, 0.0349061, 360, 255, 1, 0), -- Ban'ethil Barrow Den +(@OGUID+21, 106318, 1, 141, 264, 1, 1, 10751.3, 2214.47, 1331.51, 4.69494, 0, 0, -0.71325, 0.70091, 360, 255, 1, 0), -- The Oracle Glade +(@OGUID+22, 106318, 1, 141, 264, 1, 1, 10890.4, 1968.21, 1321.79, 4.95674, 0, 0, -0.615661, 0.788011, 360, 255, 1, 0); -- The Oracle Glade + +-- Update existing spawns to match new ones. +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN +(49622,49624,49626,49628,49627,49621,49623,49625); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Battered Chest (106318), Teldassil, Chest Pool Fel Rock'), +(@POOLID+1,1,'Battered Chest (106318), Teldassil, Chest Pool Ban''ethil Barrow Den'), +(@POOLID+2,1,'Battered Chest (106318), Teldassil, Chest Pool The Oracle Glade North'), +(@POOLID+3,1,'Battered Chest (106318), Teldassil, Chest Pool The Oracle Glade South'), +(@POOLID+4,1,'Battered Chest (106318), Teldassil, Chest Pool Starbreeze Village'), +(@POOLID+5,1,'Battered Chest (106318), Teldassil, Chest Pool Southern Teldrassil'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,49628,@POOLID,0,'Battered Chest (106318), Fel Rock'), +(1,@OGUID,@POOLID,0,'Battered Chest (106318), Fel Rock'), +(1,@OGUID+1,@POOLID,0,'Battered Chest (106318), Fel Rock'), +(1,@OGUID+2,@POOLID,0,'Battered Chest (106318), Fel Rock'), +(1,49627,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+3,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+4,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+5,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+6,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+17,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+18,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+19,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,@OGUID+20,@POOLID+1,0,'Battered Chest (106318), Ban''ethil Barrow Den'), +(1,49621,@POOLID+2,0,'Battered Chest (106318), The Oracle Glade North'), +(1,@OGUID+8,@POOLID+2,0,'Battered Chest (106318), The Oracle Glade North'), +(1,@OGUID+21,@POOLID+2,0,'Battered Chest (106318), The Oracle Glade North'), +(1,@OGUID+22,@POOLID+2,0,'Battered Chest (106318), The Oracle Glade North'), +(1,49623,@POOLID+3,0,'Battered Chest (106318), The Oracle Glade South'), +(1,49625,@POOLID+3,0,'Battered Chest (106318), The Oracle Glade South'), +(1,@OGUID+7,@POOLID+3,0,'Battered Chest (106318), The Oracle Glade South'), +(1,@OGUID+9,@POOLID+3,0,'Battered Chest (106318), The Oracle Glade South'), +(1,@OGUID+15,@POOLID+3,0,'Battered Chest (106318), The Oracle Glade South'), +(1,@OGUID+16,@POOLID+3,0,'Battered Chest (106318), The Oracle Glade South'), +(1,49622,@POOLID+4,0,'Battered Chest (106318), Starbreeze Village'), +(1,@OGUID+10,@POOLID+4,0,'Battered Chest (106318), Starbreeze Village'), +(1,@OGUID+11,@POOLID+4,0,'Battered Chest (106318), Starbreeze Village'), +(1,@OGUID+12,@POOLID+4,0,'Battered Chest (106318), Starbreeze Village'), +(1,49624,@POOLID+5,0,'Battered Chest (106318), Southern Teldrassil'), +(1,49626,@POOLID+5,0,'Battered Chest (106318), Southern Teldrassil'), +(1,@OGUID+13,@POOLID+5,0,'Battered Chest (106318), Southern Teldrassil'), +(1,@OGUID+14,@POOLID+5,0,'Battered Chest (106318), Southern Teldrassil'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_05_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_05_world.sql new file mode 100644 index 00000000000..bb7b359c868 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_05_world.sql @@ -0,0 +1,74 @@ +-- Add missing spawns and pooling for Tattered Chest ID: 2846 in Bloodmyst Isle +SET @POOLID := 850; -- 6 required +SET @OGUID := 23273; -- 28 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+27; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 2846, 530, 3525, 3585, 1, 1, -1806.03857421875, -11684.298828125, 33.98169326782226562, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 360, 255, 1, 46158), -- Bladewood +(@OGUID+1, 2846, 530, 3525, 3585, 1, 1, -1713.0931396484375, -11621.1533203125, 34.2453765869140625, 4.363324165344238281, 0, 0, -0.81915187835693359, 0.573576688766479492, 360, 255, 1, 46158), -- Bladewood +(@OGUID+2, 2846, 530, 3525, 3585, 1, 1, -1814.4840087890625, -11553.1123046875, 34.16876983642578125, 4.1538848876953125, 0, 0, -0.8746194839477539, 0.484810054302215576, 360, 255, 1, 46368), -- Bladewood +(@OGUID+3, 2846, 530, 3525, 3687, 1, 1, -1136.5537109375, -11840.462890625, -1.63031005859375, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 360, 255, 1, 46158), -- The Warp Piston +(@OGUID+4, 2846, 530, 3525, 3590, 1, 1, -2257.208251953125, -12322.2861328125, 57.29496383666992187, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 360, 255, 1, 46368), -- Wrathscale Lair +(@OGUID+5, 2846, 530, 3525, 3590, 1, 1, -2187.5908203125, -12299.380859375, 56.221343994140625, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 360, 255, 1, 46158), -- Wrathscale Lair +(@OGUID+6, 2846, 530, 3525, 3591, 1, 1, -1796.316162109375, -12065.8564453125, 31.659881591796875, 1.972219824790954589, 0, 0, 0.83388519287109375, 0.55193793773651123, 360, 255, 1, 46368), -- Ruins of Loreth'Anan +(@OGUID+7, 2846, 530, 3525, 3591, 1, 1, -1845.208984375, -12093.4248046875, 33.01601409912109375, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 360, 255, 1, 46368), -- Ruins of Loreth'Anan +(@OGUID+8, 2846, 530, 3525, 3592, 1, 1, -2422.167236328125, -11318.396484375, 29.50377082824707031, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 360, 255, 1, 46158), -- Nazzivian +(@OGUID+9, 2846, 530, 3525, 3592, 1, 1, -2514.785888671875, -11127.396484375, 16.80916213989257812, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 360, 255, 1, 46158), -- Nazzivian +(@OGUID+10, 2846, 530, 3525, 3592, 1, 1, -2508.1875, -11249.017578125, 36.19548416137695312, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 360, 255, 1, 46158), -- Nazzivian +(@OGUID+11, 2846, 530, 3525, 3592, 1, 1, -2415.964111328125, -11222.4111328125, 24.28668212890625, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 360, 255, 1, 46368), -- Nazzivian +(@OGUID+12, 2846, 530, 3525, 3592, 1, 1, -2315.081787109375, -11191.0302734375, 13.94209861755371093, 1.902408957481384277, 0, 0, 0.814115524291992187, 0.580702960491180419, 360, 255, 1, 46368), -- Nazzivian +(@OGUID+13, 2846, 530, 3525, 3594, 1, 1, -2816.5537109375, -11721.001953125, 0.128297999501228332, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 360, 255, 1, 46158), -- Blackslit Shore +(@OGUID+14, 2846, 530, 3525, 3594, 1, 1, -2816.791748046875, -11521.4580078125, 3.551013946533203125, 6.09120035171508789, 0, 0, -0.09584522247314453, 0.995396256446838378, 360, 255, 1, 46368), -- Blackslit Shore +(@OGUID+15, 2846, 530, 3525, 3594, 1, 1, -2816.641845703125, -11219.6904296875, 2.085382938385009765, 1.32644820213317871, 0, 0, 0.615660667419433593, 0.788011372089385986, 360, 255, 1, 46158), -- Blackslit Shore +(@OGUID+16, 2846, 530, 3525, 3594, 1, 1, -2820.947509765625, -11420.7392578125, 5.266423225402832031, 3.892086982727050781, 0, 0, -0.93041706085205078, 0.366502493619918823, 360, 255, 1, 46368), -- Blackslit Shore +(@OGUID+17, 2846, 530, 3525, 3600, 1, 1, -2395.802001953125, -12166.826171875, 32.98817825317382812, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 360, 255, 1, 46158), -- Bristlelimb Enclave +(@OGUID+18, 2846, 530, 3525, 3600, 1, 1, -2513.0068359375, -12197.3330078125, 27.98298072814941406, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 360, 255, 1, 46158), -- Bristlelimb Enclave +(@OGUID+19, 2846, 530, 3525, 3600, 1, 1, -2537.432373046875, -12280.47265625, 14.01218223571777343, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 360, 255, 1, 46158), -- Bristlelimb Enclave +(@OGUID+20, 2846, 530, 3525, 3601, 1, 1, -1453.5301513671875, -11844.0322265625, 19.05023574829101562, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 360, 255, 1, 46158), -- Ragefeather Ridge +(@OGUID+21, 2846, 530, 3525, 3601, 1, 1, -1517.6060791015625, -12025.7939453125, 10.71734142303466796, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 360, 255, 1, 46158), -- Ragefeather Ridge +(@OGUID+22, 2846, 530, 3525, 3601, 1, 1, -1523.1407470703125, -11818.052734375, 23.21690177917480468, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 360, 255, 1, 46368), -- Ragefeather Ridge +(@OGUID+23, 2846, 530, 3525, 3601, 1, 1, -1485.6785888671875, -11930.548828125, 19.05023574829101562, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 360, 255, 1, 46368), -- Ragefeather Ridge +(@OGUID+24, 2846, 530, 3525, 3601, 1, 1, -1681.670166015625, -11801.6201171875, 22.05923652648925781, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 360, 255, 1, 46158), -- Ragefeather Ridge +(@OGUID+25, 2846, 530, 3525, 3601, 1, 1, -1622.558349609375, -11917.3193359375, 9.328012466430664062, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 360, 255, 1, 46368), -- Ragefeather Ridge +(@OGUID+26, 2846, 530, 3525, 3909, 1, 1, -2532.938232421875, -11961.8232421875, 20.45257759094238281, 0, 0, 0, 0, 1, 360, 255, 1, 46158), -- The Lost Fold +(@OGUID+27, 2846, 530, 3525, 3910, 1, 1, -2441.07373046875, -11773.0068359375, 14.12316417694091796, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 360, 255, 1, 46368); -- Middenvale + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Tattered Chest (2846), Bloodmyst Isle, Chest Pool Bladewood'), +(@POOLID+1,1,'Tattered Chest (2846), Bloodmyst Isle, Chest Pool Wrathscale'), +(@POOLID+2,1,'Tattered Chest (2846), Bloodmyst Isle, Chest Pool Nazzivian'), +(@POOLID+3,1,'Tattered Chest (2846), Bloodmyst Isle, Chest Pool Blackslit'), +(@POOLID+4,1,'Tattered Chest (2846), Bloodmyst Isle, Chest Pool Bristlelimb'), +(@POOLID+5,1,'Tattered Chest (2846), Bloodmyst Isle, Chest Pool Ragefeather'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+5; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,@OGUID,@POOLID,0,'Tattered Chest (2846), Bladewood'), +(1,@OGUID+1,@POOLID,0,'Tattered Chest (2846), Bladewood'), +(1,@OGUID+2,@POOLID,0,'Tattered Chest (2846), Bladewood'), +(1,@OGUID+3,@POOLID,0,'Tattered Chest (2846), The Warp Piston'), +(1,@OGUID+27,@POOLID,0,'Tattered Chest (2846), Middenvale'), +(1,@OGUID+4,@POOLID+1,0,'Tattered Chest (2846), Wrathscale Lair'), +(1,@OGUID+5,@POOLID+1,0,'Tattered Chest (2846), Wrathscale Lair'), +(1,@OGUID+6,@POOLID+1,0,'Tattered Chest (2846), Ruins of Loreth''Anan'), +(1,@OGUID+7,@POOLID+1,0,'Tattered Chest (2846), Ruins of Loreth''Anan'), +(1,@OGUID+8,@POOLID+2,0,'Tattered Chest (2846), Nazzivian'), +(1,@OGUID+9,@POOLID+2,0,'Tattered Chest (2846), Nazzivian'), +(1,@OGUID+10,@POOLID+2,0,'Tattered Chest (2846), Nazzivian'), +(1,@OGUID+11,@POOLID+2,0,'Tattered Chest (2846), Nazzivian'), +(1,@OGUID+12,@POOLID+2,0,'Tattered Chest (2846), Nazzivian'), +(1,@OGUID+13,@POOLID+3,0,'Tattered Chest (2846), Blackslit Shore'), +(1,@OGUID+14,@POOLID+3,0,'Tattered Chest (2846), Blackslit Shore'), +(1,@OGUID+15,@POOLID+3,0,'Tattered Chest (2846), Blackslit Shore'), +(1,@OGUID+16,@POOLID+3,0,'Tattered Chest (2846), Blackslit Shore'), +(1,@OGUID+17,@POOLID+4,0,'Tattered Chest (2846), Bristlelimb Enclave'), +(1,@OGUID+18,@POOLID+4,0,'Tattered Chest (2846), Bristlelimb Enclave'), +(1,@OGUID+19,@POOLID+4,0,'Tattered Chest (2846), Bristlelimb Enclave'), +(1,@OGUID+26,@POOLID+4,0,'Tattered Chest (2846), The Lost Fold'), +(1,@OGUID+20,@POOLID+5,0,'Tattered Chest (2846), Ragefeather Ridge'), +(1,@OGUID+21,@POOLID+5,0,'Tattered Chest (2846), Ragefeather Ridge'), +(1,@OGUID+22,@POOLID+5,0,'Tattered Chest (2846), Ragefeather Ridge'), +(1,@OGUID+23,@POOLID+5,0,'Tattered Chest (2846), Ragefeather Ridge'), +(1,@OGUID+24,@POOLID+5,0,'Tattered Chest (2846), Ragefeather Ridge'), +(1,@OGUID+25,@POOLID+5,0,'Tattered Chest (2846), Ragefeather Ridge'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_06_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_06_world.sql new file mode 100644 index 00000000000..53d4fecce2b --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_20_06_world.sql @@ -0,0 +1,92 @@ +-- Add missing spawns and pooling for Tattered Chest ID: 2845 in Eversong Woods +SET @POOLID := 856; -- 9 required +SET @OGUID := 24967; -- 28 required + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+27; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 2845, 530, 3430, 3460, 1, 1, 8846.802734375, -5709.845703125, 0.462978005409240722, 1.239183306694030761, 0, 0, 0.580702781677246093, 0.814115643501281738, 360, 255, 1, 40892), -- Golden Strand +(@OGUID+1, 2845, 530, 3430, 3460, 1, 1, 8782.2021484375, -5750.22265625, 0.406792014837265014, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 360, 255, 1, 40892), -- Golden Strand +(@OGUID+2, 2845, 530, 3430, 3460, 1, 1, 8878.2138671875, -5732.53857421875, 0.232910007238388061, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 360, 255, 1, 45854), -- Golden Strand +(@OGUID+3, 2845, 530, 3430, 3460, 1, 1, 8676.185546875, -5694.66162109375, 0.725703001022338867, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 360, 255, 1, 45854), -- Golden Strand +(@OGUID+4, 2845, 530, 3430, 3460, 1, 1, 8771.9091796875, -5683.58349609375, 0.120685003697872161, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 360, 255, 1, 45854), -- Golden Strand +(@OGUID+5, 2845, 530, 3430, 3911, 1, 1, 9090.8916015625, -5863.84619140625, 0.349002987146377563, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 360, 255, 1, 40892), -- Tranquil Shore +(@OGUID+6, 2845, 530, 3430, 3911, 1, 1, 9034.2119140625, -5864.50634765625, 0.089702002704143524, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 360, 255, 1, 40892), -- Tranquil Shore +(@OGUID+7, 2845, 530, 3430, 3911, 1, 1, 8977.1787109375, -5736.40478515625, 0.367024004459381103, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 360, 255, 1, 40892), -- Tranquil Shore +(@OGUID+8, 2845, 530, 3430, 3911, 1, 1, 8940.3037109375, -5747.05224609375, 0.162974998354911804, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 360, 255, 1, 42328), -- Tranquil Shore +(@OGUID+9, 2845, 530, 3430, 3911, 1, 1, 9110.3271484375, -5790.36962890625, 0.029617000371217727, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 360, 255, 1, 42328), -- Tranquil Shore +(@OGUID+10, 2845, 530, 3430, 3911, 1, 1, 9161.2958984375, -5813.65478515625, 0.225214004516601562, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 360, 255, 1, 45854), -- Tranquil Shore +(@OGUID+11, 2845, 530, 3430, 3482, 1, 1, 8405.232421875, -7001.72998046875, 93.72124481201171875, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 360, 255, 1, 40892), -- The Dead Scar +(@OGUID+12, 2845, 530, 3430, 3482, 1, 1, 8545.6357421875, -7025.015625, 83.48480987548828125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 360, 255, 1, 40892), -- The Dead Scar +(@OGUID+13, 2845, 530, 3430, 3482, 1, 1, 8815.2236328125, -6988.04248046875, 33.64208602905273437, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 360, 255, 1, 45942), -- The Dead Scar +(@OGUID+14, 2845, 530, 3430, 3482, 1, 1, 9167.796875, -6961.861328125, 6.301101207733154296, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 360, 255, 1, 45942), -- The Dead Scar +(@OGUID+15, 2845, 530, 3430, 3461, 1, 1, 8805.4208984375, -5899.8759765625, 11.03487968444824218, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 360, 255, 1, 42328), -- Sunsail Anchorage +(@OGUID+16, 2845, 530, 3430, 3461, 1, 1, 8709.9775390625, -6027.74853515625, 7.889542102813720703, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 360, 255, 1, 45942), -- Sunsail Anchorage +(@OGUID+17, 2845, 530, 3430, 3461, 1, 1, 8805.6533203125, -6096.244140625, 20.43907546997070312, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 360, 255, 1, 56713), -- Sunsail Anchorage +(@OGUID+18, 2845, 530, 3430, 3476, 1, 1, 8342.580078125, -7951.3046875, 183.5680999755859375, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 360, 255, 1, 40892), -- Tor'Watha +(@OGUID+19, 2845, 530, 3430, 3476, 1, 1, 8486.5302734375, -7989.3125, 156.599639892578125, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 360, 255, 1, 45942), -- Tor'Watha +(@OGUID+20, 2845, 530, 3430, 3475, 1, 1, 8433.9404296875, -7555.21875, 161.53948974609375, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 360, 255, 1, 40892), -- Zeb'Watha +(@OGUID+21, 2845, 530, 3430, 3914, 1, 1, 8287.14453125, -7262.19970703125, 139.7483673095703125, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 360, 255, 1, 40892), -- Runestone Shan'dor +(@OGUID+22, 2845, 530, 3430, 3913, 1, 1, 8253.8916015625, -6693.859375, 86.01686859130859375, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 360, 255, 1, 42328), -- Runestone Falithas +(@OGUID+23, 2845, 530, 3430, 3472, 1, 1, 9292.0048828125, -7974.42529296875, -37.7078971862792968, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 360, 255, 1, 45942), -- Azurebreeze Coast +(@OGUID+24, 2845, 530, 3430, 3467, 1, 1, 8733.6015625, -7111.90625, 37.34553909301757812, 1.239183306694030761, 0, 0, 0.580702781677246093, 0.814115643501281738, 360, 255, 1, 45942), -- East Sanctum +(@OGUID+25, 2845, 530, 3430, 3480, 1, 1, 9342.2568359375, -7898.17724609375, 142.246368408203125, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 360, 255, 1, 45942), -- Duskwither Spire +(@OGUID+26, 2845, 530, 3430, 3480, 1, 1, 9348.390625, -7887.3994140625, 158.4431610107421875, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 360, 255, 1, 56713), -- Duskwither Spire +(@OGUID+27, 2845, 530, 3430, 3466, 1, 1, 9099.138671875, -6236.265625, 28.45432281494140625, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 360, 255, 1, 56713); -- West Sanctum + +UPDATE `gameobject` SET `spawntimesecs`=360, `animprogress`=225, `state`=1 WHERE `guid` IN (33932,12101,12102,12099,12100,12105,12103,12106,12107,33899,12104,12108,33953); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+8; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Tattered Chest (2845), Eversong Woods, Chest Pool Golden Strand'), +(@POOLID+1,1,'Tattered Chest (2845), Eversong Woods, Chest Pool Tranquil Shore'), +(@POOLID+2,1,'Tattered Chest (2845), Eversong Woods, Chest Pool The Dead Scar North'), +(@POOLID+3,1,'Tattered Chest (2845), Eversong Woods, Chest Pool The Dead Scar South'), +(@POOLID+4,1,'Tattered Chest (2845), Eversong Woods, Chest Pool Sunsail Anchorage'), +(@POOLID+5,1,'Tattered Chest (2845), Eversong Woods, Chest Pool Tor''Watha and Zeb''Watha'), +(@POOLID+6,1,'Tattered Chest (2845), Eversong Woods, Chest Pool East and west Sactums'), +(@POOLID+7,1,'Tattered Chest (2845), Eversong Woods, Chest Pool Duskweather Spire'), +(@POOLID+8,1,'Tattered Chest (2845), Eversong Woods, Chest Pool Scorched Grove and Runestones'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+8; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(1,12105,@POOLID,0,'Tattered Chest (2845), Golden Strand'), +(1,@OGUID,@POOLID,0,'Tattered Chest (2845), Golden Strand'), +(1,@OGUID+1,@POOLID,0,'Tattered Chest (2845), Golden Strand'), +(1,@OGUID+2,@POOLID,0,'Tattered Chest (2845), Golden Strand'), +(1,@OGUID+3,@POOLID,0,'Tattered Chest (2845), Golden Strand'), +(1,@OGUID+4,@POOLID,0,'Tattered Chest (2845), Golden Strand'), +(1,12099,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,12100,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,@OGUID+5,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,@OGUID+6,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,@OGUID+7,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,@OGUID+8,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,@OGUID+9,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,@OGUID+10,@POOLID+1,0,'Tattered Chest (2845), Tranquil Shore'), +(1,12104,@POOLID+2,0,'Tattered Chest (2845), The Dead Scar North'), +(1,33953,@POOLID+2,0,'Tattered Chest (2845), The Dead Scar North'), +(1,@OGUID+13,@POOLID+2,0,'Tattered Chest (2845), The Dead Scar North'), +(1,@OGUID+14,@POOLID+2,0,'Tattered Chest (2845), The Dead Scar North'), +(1,12108,@POOLID+3,0,'Tattered Chest (2845), The Dead Scar South'), +(1,33899,@POOLID+3,0,'Tattered Chest (2845), The Dead Scar South'), +(1,@OGUID+11,@POOLID+3,0,'Tattered Chest (2845), The Dead Scar South'), +(1,@OGUID+12,@POOLID+3,0,'Tattered Chest (2845), The Dead Scar South'), +(1,12106,@POOLID+4,0,'Tattered Chest (2845), Sunsail Anchorage'), +(1,@OGUID+15,@POOLID+4,0,'Tattered Chest (2845), Sunsail Anchorage'), +(1,@OGUID+16,@POOLID+4,0,'Tattered Chest (2845), Sunsail Anchorage'), +(1,@OGUID+17,@POOLID+4,0,'Tattered Chest (2845), Sunsail Anchorage'), +(1,12103,@POOLID+5,0,'Tattered Chest (2845), Tor''Watha'), +(1,@OGUID+18,@POOLID+5,0,'Tattered Chest (2845), Tor''Watha'), +(1,@OGUID+19,@POOLID+5,0,'Tattered Chest (2845), Tor''Watha'), +(1,@OGUID+20,@POOLID+5,0,'Tattered Chest (2845), Zeb''Watha'), +(1,33932,@POOLID+6,0,'Tattered Chest (2845), West Sactums'), +(1,12101,@POOLID+6,0,'Tattered Chest (2845), West Sactums'), +(1,@OGUID+27,@POOLID+6,0,'Tattered Chest (2845), West Sactums'), +(1,@OGUID+24,@POOLID+6,0,'Tattered Chest (2845), East Sactums'), +(1,12102,@POOLID+7,0,'Tattered Chest (2845), Duskwither Spire'), +(1,@OGUID+25,@POOLID+7,0,'Tattered Chest (2845), Duskwither Spire'), +(1,@OGUID+26,@POOLID+7,0,'Tattered Chest (2845), Duskwither Spire'), +(1,@OGUID+23,@POOLID+7,0,'Tattered Chest (2845), Azurebreeze Coast'), +(1,12107,@POOLID+8,0,'Tattered Chest (2845), Scorched Grove'), +(1,@OGUID+21,@POOLID+8,0,'Tattered Chest (2845), Runestone Shan''dor'), +(1,@OGUID+22,@POOLID+8,0,'Tattered Chest (2845), Runestone Falithas'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_00_world.sql new file mode 100644 index 00000000000..99814cda8ef --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_00_world.sql @@ -0,0 +1,2 @@ +-- The World Tree and the Emerald Dream book update +UPDATE `gameobject` SET `position_x` = -8729.36328125, `position_y` = 1107.6275634765625, `position_z` = 94.32956695556640625, `orientation` = 5.532694816589355468, `rotation2` = -0.3665008544921875, `rotation3` = 0.93041771650314331, `state` = 1 WHERE `guid` = 42903; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_01_world.sql new file mode 100644 index 00000000000..3e7eea16afd --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_01_world.sql @@ -0,0 +1,446 @@ +-- Felpaw Village, Felwood Replace existing Deadwood spawns with sniffed CreateObject2 and pooling +SET @CGUID := 143153; +SET @POOLID := 865; + +-- Remove existing spawns +DELETE FROM `creature` WHERE `guid` IN (39690,40305,40308,40386,40403,40409,40424,40464,40610,40615,40621,40623,40304,40307,40314,40388,40391,40393,40408,40413,40414,40415,40421,40472,40604,40611,40612,40629,40631,39691,40303,40306,40389,40390,40394,40397,40398,40401,40417,40430,40605,40608,40613,40625,40627); +DELETE FROM `creature_addon` WHERE `guid`=40394; +DELETE FROM `spawn_group` WHERE `spawnType`=0 AND `spawnId` IN (39690,40305,40308,40386,40403,40409,40424,40464,40610,40615,40621,40623,40304,40307,40314,40388,40391,40393,40408,40413,40414,40415,40421,40472,40604,40611,40612,40629,40631,39691,40303,40306,40389,40390,40394,40397,40398,40401,40417,40430,40605,40608,40613,40625,40627); +DELETE FROM `waypoint_data` WHERE `id`=403940; + +-- Add new spawns and pooling +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID AND @CGUID+127; +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID AND @CGUID+127; +INSERT INTO `creature` (`guid`,`id`,`map`,`zoneId`,`areaId`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`wander_distance`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`,`ScriptName`,`VerifiedBuild`) VALUES +(@CGUID, 7156, 1, 0, 0, 1, 1, 0, 1, 6752.151, -1961.7408, 551.0034, 2.897246599197387695, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), +(@CGUID+1, 7156, 1, 0, 0, 1, 1, 0, 1, 6826.352, -1967.1415, 551.7001, 0.087266460061073303, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+2, 7157, 1, 0, 0, 1, 1, 0, 1, 6836.794, -1954.4425, 550.3044, 4.97418832778930664, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+3, 7157, 1, 0, 0, 1, 1, 0, 1, 6747.612, -1965.1079, 551.0034, 1.466076612472534179, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), +(@CGUID+4, 7158, 1, 0, 0, 1, 1, 0, 1, 6860.563, -1964.6693, 556.07733, 1.868465900421142578, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+5, 7156, 1, 0, 0, 1, 1, 0, 1, 6906.3325, -1812.831, 571.74634, 3.124139308929443359, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+6, 7157, 1, 0, 0, 1, 1, 0, 1, 6906.3325, -1812.831, 571.74634, 3.124139308929443359, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+7, 7156, 1, 0, 0, 1, 1, 0, 1, 6907.568, -1824.5265, 569.79987, 2.652148962020874023, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+8, 7157, 1, 0, 0, 1, 1, 0, 1, 6907.568, -1824.5265, 569.79987, 2.652148962020874023, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+9, 7156, 1, 0, 0, 1, 1, 0, 1, 6732.4287, -1885.0846, 549.65784, 2.639858484268188476, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+10, 7157, 1, 0, 0, 1, 1, 0, 1, 6732.4287, -1885.0846, 549.65784, 2.639858484268188476, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+11, 7156, 1, 0, 0, 1, 1, 0, 1, 6836.325, -1875.1724, 550.6761, 5.632167816162109375, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+12, 7157, 1, 0, 0, 1, 1, 0, 1, 6836.325, -1875.1724, 550.6761, 5.632167816162109375, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+13, 7157, 1, 0, 0, 1, 1, 0, 1, 6911.731, -1813.9487, 571.83374, 3.90445256233215332, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), +(@CGUID+14, 7158, 1, 0, 0, 1, 1, 0, 1, 6911.731, -1813.9487, 571.83374, 3.90445256233215332, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), +(@CGUID+15, 7157, 1, 0, 0, 1, 1, 0, 1, 6920.1743, -1834.089, 571.92725, 1.535889744758605957, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+16, 7158, 1, 0, 0, 1, 1, 0, 1, 6920.1743, -1834.089, 571.92725, 1.535889744758605957, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+17, 7156, 1, 0, 0, 1, 1, 0, 1, 6717.204, -1983.8384, 559.4351, 4.812276840209960937, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+18, 7157, 1, 0, 0, 1, 1, 0, 1, 6717.204, -1983.8384, 559.4351, 4.812276840209960937, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+19, 7158, 1, 0, 0, 1, 1, 0, 1, 6717.204, -1983.8384, 559.4351, 4.812276840209960937, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+20, 7156, 1, 0, 0, 1, 1, 0, 1, 6873.1665, -2038.6376, 581.6539, 3.997686624526977539, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+21, 7157, 1, 0, 0, 1, 1, 0, 1, 6873.1665, -2038.6376, 581.6539, 3.997686624526977539, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+22, 7158, 1, 0, 0, 1, 1, 0, 1, 6873.1665, -2038.6376, 581.6539, 3.997686624526977539, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+23, 7156, 1, 0, 0, 1, 1, 0, 1, 6707.918, -1899.5065, 549.25116, 2.629336118698120117, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+24, 7157, 1, 0, 0, 1, 1, 0, 1, 6707.918, -1899.5065, 549.25116, 2.629336118698120117, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+25, 7158, 1, 0, 0, 1, 1, 0, 1, 6707.918, -1899.5065, 549.25116, 2.629336118698120117, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+26, 7156, 1, 0, 0, 1, 1, 0, 1, 6650.4067, -1949.7196, 549.8623, 1.452553272247314453, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+27, 7157, 1, 0, 0, 1, 1, 0, 1, 6650.4067, -1949.7196, 549.8623, 1.452553272247314453, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+28, 7158, 1, 0, 0, 1, 1, 0, 1, 6650.4067, -1949.7196, 549.8623, 1.452553272247314453, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+29, 7156, 1, 0, 0, 1, 1, 0, 1, 6733.7173, -1955.1018, 549.71326, 3.353776931762695312, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+30, 7157, 1, 0, 0, 1, 1, 0, 1, 6733.7173, -1955.1018, 549.71326, 3.353776931762695312, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+31, 7158, 1, 0, 0, 1, 1, 0, 1, 6733.7173, -1955.1018, 549.71326, 3.353776931762695312, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+32, 7156, 1, 0, 0, 1, 1, 0, 1, 6702.9175, -1961.2802, 553.9784, 0.38945859670639038, 300, 3, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+33, 7157, 1, 0, 0, 1, 1, 0, 1, 6702.9175, -1961.2802, 553.9784, 0.38945859670639038, 300, 3, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+34, 7158, 1, 0, 0, 1, 1, 0, 1, 6702.9175, -1961.2802, 553.9784, 0.38945859670639038, 300, 3, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+35, 7156, 1, 0, 0, 1, 1, 0, 1, 6689.4556, -2008.2662, 560.1293, 6.061192035675048828, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+36, 7157, 1, 0, 0, 1, 1, 0, 1, 6689.4556, -2008.2662, 560.1293, 6.061192035675048828, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+37, 7158, 1, 0, 0, 1, 1, 0, 1, 6689.4556, -2008.2662, 560.1293, 6.061192035675048828, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+38, 7156, 1, 0, 0, 1, 1, 0, 1, 6852.629, -1939.76, 551.0034, 3.651977300643920898, 300, 10, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+39, 7157, 1, 0, 0, 1, 1, 0, 1, 6852.629, -1939.76, 551.0034, 3.651977300643920898, 300, 10, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+40, 7158, 1, 0, 0, 1, 1, 0, 1, 6852.629, -1939.76, 551.0034, 3.651977300643920898, 300, 10, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+41, 7156, 1, 0, 0, 1, 1, 0, 1, 6816.777, -2014.8325, 568.51807, 5.54440164566040039, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+42, 7157, 1, 0, 0, 1, 1, 0, 1, 6816.777, -2014.8325, 568.51807, 5.54440164566040039, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+43, 7158, 1, 0, 0, 1, 1, 0, 1, 6816.777, -2014.8325, 568.51807, 5.54440164566040039, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+44, 7156, 1, 0, 0, 1, 1, 0, 1, 6852.9307, -1980.0747, 551.7032, 0.850379586219787597, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+45, 7157, 1, 0, 0, 1, 1, 0, 1, 6852.9307, -1980.0747, 551.7032, 0.850379586219787597, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+46, 7158, 1, 0, 0, 1, 1, 0, 1, 6852.9307, -1980.0747, 551.7032, 0.850379586219787597, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+47, 7156, 1, 0, 0, 1, 1, 0, 1, 6912.4556, -1800.7333, 573.76605, 3.690003395080566406, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+48, 7157, 1, 0, 0, 1, 1, 0, 1, 6912.4556, -1800.7333, 573.76605, 3.690003395080566406, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+49, 7158, 1, 0, 0, 1, 1, 0, 1, 6912.4556, -1800.7333, 573.76605, 3.690003395080566406, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+50, 7156, 1, 0, 0, 1, 1, 0, 1, 6884.3813, -1815.441, 569.1466, 1.413716673851013183, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+51, 7157, 1, 0, 0, 1, 1, 0, 1, 6884.3813, -1815.441, 569.1466, 1.413716673851013183, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+52, 7158, 1, 0, 0, 1, 1, 0, 1, 6884.3813, -1815.441, 569.1466, 1.413716673851013183, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+53, 7156, 1, 0, 0, 1, 1, 0, 1, 6671.831, -1937.1498, 549.9153, 5.767045497894287109, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+54, 7157, 1, 0, 0, 1, 1, 0, 1, 6671.831, -1937.1498, 549.9153, 5.767045497894287109, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+55, 7158, 1, 0, 0, 1, 1, 0, 1, 6671.831, -1937.1498, 549.9153, 5.767045497894287109, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+56, 7156, 1, 0, 0, 1, 1, 0, 1, 6783.9683, -2017.4205, 567.54736, 4.150726318359375, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+57, 7157, 1, 0, 0, 1, 1, 0, 1, 6783.9683, -2017.4205, 567.54736, 4.150726318359375, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+58, 7158, 1, 0, 0, 1, 1, 0, 1, 6783.9683, -2017.4205, 567.54736, 4.150726318359375, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+59, 7156, 1, 0, 0, 1, 1, 0, 1, 6854.4717, -1891.2478, 551.0034, 0.333302795886993408, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+60, 7157, 1, 0, 0, 1, 1, 0, 1, 6854.4717, -1891.2478, 551.0034, 0.333302795886993408, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+61, 7158, 1, 0, 0, 1, 1, 0, 1, 6854.4717, -1891.2478, 551.0034, 0.333302795886993408, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+62, 7156, 1, 0, 0, 1, 1, 0, 1, 6848.996, -1814.8412, 564.1588, 2.317746877670288085, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+63, 7157, 1, 0, 0, 1, 1, 0, 1, 6848.996, -1814.8412, 564.1588, 2.317746877670288085, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+64, 7158, 1, 0, 0, 1, 1, 0, 1, 6848.996, -1814.8412, 564.1588, 2.317746877670288085, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+65, 7156, 1, 0, 0, 1, 1, 0, 1, 6889.5596, -1947.1342, 572.1914, 5.422736167907714843, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+66, 7157, 1, 0, 0, 1, 1, 0, 1, 6889.5596, -1947.1342, 572.1914, 5.422736167907714843, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+67, 7158, 1, 0, 0, 1, 1, 0, 1, 6889.5596, -1947.1342, 572.1914, 5.422736167907714843, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+68, 7156, 1, 0, 0, 1, 1, 0, 1, 6901.011, -2020.2257, 583.0537, 4.345870018005371093, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+69, 7157, 1, 0, 0, 1, 1, 0, 1, 6901.011, -2020.2257, 583.0537, 4.345870018005371093, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+70, 7158, 1, 0, 0, 1, 1, 0, 1, 6901.011, -2020.2257, 583.0537, 4.345870018005371093, 300, 6, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+71, 7156, 1, 0, 0, 1, 1, 0, 1, 6840.962, -2011.3381, 572.1896, 2.666453838348388671, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+72, 7157, 1, 0, 0, 1, 1, 0, 1, 6840.962, -2011.3381, 572.1896, 2.666453838348388671, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+73, 7158, 1, 0, 0, 1, 1, 0, 1, 6840.962, -2011.3381, 572.1896, 2.666453838348388671, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+74, 7156, 1, 0, 0, 1, 1, 0, 1, 6850.334, -1898.8638, 550.99396, 0.419144600629806518, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+75, 7157, 1, 0, 0, 1, 1, 0, 1, 6850.334, -1898.8638, 550.99396, 0.419144600629806518, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+76, 7158, 1, 0, 0, 1, 1, 0, 1, 6850.334, -1898.8638, 550.99396, 0.419144600629806518, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+77, 7156, 1, 0, 0, 1, 1, 0, 1, 6748.8423, -1888.2213, 549.94415, 5.060978889465332031, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+78, 7157, 1, 0, 0, 1, 1, 0, 1, 6748.8423, -1888.2213, 549.94415, 5.060978889465332031, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+79, 7158, 1, 0, 0, 1, 1, 0, 1, 6748.8423, -1888.2213, 549.94415, 5.060978889465332031, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+80, 7156, 1, 0, 0, 1, 1, 0, 1, 6908.5566, -1872.0408, 568.9377, 1.676499843597412109, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+81, 7157, 1, 0, 0, 1, 1, 0, 1, 6908.5566, -1872.0408, 568.9377, 1.676499843597412109, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+82, 7158, 1, 0, 0, 1, 1, 0, 1, 6908.5566, -1872.0408, 568.9377, 1.676499843597412109, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+83, 7156, 1, 0, 0, 1, 1, 0, 1, 6756.5103, -1986.3594, 551.00354, 1.836662650108337402, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+84, 7157, 1, 0, 0, 1, 1, 0, 1, 6756.5103, -1986.3594, 551.00354, 1.836662650108337402, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+85, 7158, 1, 0, 0, 1, 1, 0, 1, 6756.5103, -1986.3594, 551.00354, 1.836662650108337402, 300, 4, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+86, 7156, 1, 0, 0, 1, 1, 0, 1, 6811.798, -1862.0892, 551.0034, 3.028398513793945312, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+87, 7157, 1, 0, 0, 1, 1, 0, 1, 6811.798, -1862.0892, 551.0034, 3.028398513793945312, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+88, 7158, 1, 0, 0, 1, 1, 0, 1, 6811.798, -1862.0892, 551.0034, 3.028398513793945312, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+89, 7156, 1, 0, 0, 1, 1, 0, 1, 6785.5903, -1867.4802, 551.0258, 5.412777900695800781, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+90, 7157, 1, 0, 0, 1, 1, 0, 1, 6785.5903, -1867.4802, 551.0258, 5.412777900695800781, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+91, 7158, 1, 0, 0, 1, 1, 0, 1, 6785.5903, -1867.4802, 551.0258, 5.412777900695800781, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+92, 7156, 1, 0, 0, 1, 1, 0, 1, 6816.9775, -1818.9469, 562.42096, 5.254460334777832031, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+93, 7157, 1, 0, 0, 1, 1, 0, 1, 6816.9775, -1818.9469, 562.42096, 5.254460334777832031, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+94, 7158, 1, 0, 0, 1, 1, 0, 1, 6816.9775, -1818.9469, 562.42096, 5.254460334777832031, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+95, 7156, 1, 0, 0, 1, 1, 0, 1, 6799.929, -1833.5918, 558.3517, 0.822560429573059082, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+96, 7157, 1, 0, 0, 1, 1, 0, 1, 6799.929, -1833.5918, 558.3517, 0.822560429573059082, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+97, 7158, 1, 0, 0, 1, 1, 0, 1, 6799.929, -1833.5918, 558.3517, 0.822560429573059082, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+98, 7156, 1, 0, 0, 1, 1, 0, 1, 6683.4727, -1983.9648, 553.7465, 5.527495384216308593, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+99, 7157, 1, 0, 0, 1, 1, 0, 1, 6683.4727, -1983.9648, 553.7465, 5.527495384216308593, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+100, 7158, 1, 0, 0, 1, 1, 0, 1, 6683.4727, -1983.9648, 553.7465, 5.527495384216308593, 300, 7, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+101, 7156, 1, 0, 0, 1, 1, 0, 1, 6633.604, -1994.87, 551.8855, 1.831908464431762695, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+102, 7157, 1, 0, 0, 1, 1, 0, 1, 6633.604, -1994.87, 551.8855, 1.831908464431762695, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+103, 7158, 1, 0, 0, 1, 1, 0, 1, 6633.604, -1994.87, 551.8855, 1.831908464431762695, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+104, 7156, 1, 0, 0, 1, 1, 0, 1, 6659.386, -2017.5638, 552.1679, 5.303110122680664062, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+105, 7157, 1, 0, 0, 1, 1, 0, 1, 6659.386, -2017.5638, 552.1679, 5.303110122680664062, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+106, 7158, 1, 0, 0, 1, 1, 0, 1, 6659.386, -2017.5638, 552.1679, 5.303110122680664062, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+107, 7156, 1, 0, 0, 1, 1, 0, 1, 6893.018, -1907.9801, 568.61505, 3.519721269607543945, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+108, 7157, 1, 0, 0, 1, 1, 0, 1, 6893.018, -1907.9801, 568.61505, 3.519721269607543945, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+109, 7158, 1, 0, 0, 1, 1, 0, 1, 6893.018, -1907.9801, 568.61505, 3.519721269607543945, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+110, 7156, 1, 0, 0, 1, 1, 0, 1, 6789.6323, -1987.0955, 563.5386, 3.399090290069580078, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+111, 7157, 1, 0, 0, 1, 1, 0, 1, 6789.6323, -1987.0955, 563.5386, 3.399090290069580078, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+112, 7158, 1, 0, 0, 1, 1, 0, 1, 6789.6323, -1987.0955, 563.5386, 3.399090290069580078, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+113, 7156, 1, 0, 0, 1, 1, 0, 1, 6813.097, -1962.2092, 551.4164, 1.928655982017517089, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+114, 7157, 1, 0, 0, 1, 1, 0, 1, 6813.097, -1962.2092, 551.4164, 1.928655982017517089, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+115, 7158, 1, 0, 0, 1, 1, 0, 1, 6813.097, -1962.2092, 551.4164, 1.928655982017517089, 300, 9, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+116, 7156, 1, 0, 0, 1, 1, 0, 1, 6849.124, -1881.0748, 551.00366, 3.333578824996948242, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+117, 7157, 1, 0, 0, 1, 1, 0, 1, 6849.124, -1881.0748, 551.00366, 3.333578824996948242, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+118, 7158, 1, 0, 0, 1, 1, 0, 1, 6849.124, -1881.0748, 551.00366, 3.333578824996948242, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+119, 7156, 1, 0, 0, 1, 1, 0, 1, 6679.4087, -1953.9244, 551.26965, 3.954087495803833007, 300, 3, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+120, 7157, 1, 0, 0, 1, 1, 0, 1, 6679.4087, -1953.9244, 551.26965, 3.954087495803833007, 300, 3, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+121, 7158, 1, 0, 0, 1, 1, 0, 1, 6679.4087, -1953.9244, 551.26965, 3.954087495803833007, 300, 3, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+122, 7156, 1, 0, 0, 1, 1, 0, 1, 6782.4507, -1952.2059, 551.1027, 0.982004404067993164, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+123, 7157, 1, 0, 0, 1, 1, 0, 1, 6782.4507, -1952.2059, 551.1027, 0.982004404067993164, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+124, 7158, 1, 0, 0, 1, 1, 0, 1, 6782.4507, -1952.2059, 551.1027, 0.982004404067993164, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+125, 7156, 1, 0, 0, 1, 1, 0, 1, 6854.5806, -1923.5446, 551.0034, 2.179383754730224609, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+126, 7157, 1, 0, 0, 1, 1, 0, 1, 6854.5806, -1923.5446, 551.0034, 2.179383754730224609, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+127, 7158, 1, 0, 0, 1, 1, 0, 1, 6854.5806, -1923.5446, 551.0034, 2.179383754730224609, 300, 8, 0, 1, 0, 1, 0, 0, 0, '', 0); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+42; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Felpaw Village, Felwood, Group 1'), +(@POOLID+1,1,'Felpaw Village, Felwood, Group 2'), +(@POOLID+2,1,'Felpaw Village, Felwood, Group 3'), +(@POOLID+3,1,'Felpaw Village, Felwood, Group 4'), +(@POOLID+4,1,'Felpaw Village, Felwood, Group 5'), +(@POOLID+5,1,'Felpaw Village, Felwood, Group 6'), +(@POOLID+6,1,'Felpaw Village, Felwood, Group 7'), +(@POOLID+7,1,'Felpaw Village, Felwood, Group 8'), +(@POOLID+8,1,'Felpaw Village, Felwood, Group 9'), +(@POOLID+9,1,'Felpaw Village, Felwood, Group 10'), +(@POOLID+10,1,'Felpaw Village, Felwood, Group 11'), +(@POOLID+11,1,'Felpaw Village, Felwood, Group 12'), +(@POOLID+12,1,'Felpaw Village, Felwood, Group 13'), +(@POOLID+13,1,'Felpaw Village, Felwood, Group 14'), +(@POOLID+14,1,'Felpaw Village, Felwood, Group 15'), +(@POOLID+15,1,'Felpaw Village, Felwood, Group 16'), +(@POOLID+16,1,'Felpaw Village, Felwood, Group 17'), +(@POOLID+17,1,'Felpaw Village, Felwood, Group 18'), +(@POOLID+18,1,'Felpaw Village, Felwood, Group 19'), +(@POOLID+19,1,'Felpaw Village, Felwood, Group 20'), +(@POOLID+20,1,'Felpaw Village, Felwood, Group 21'), +(@POOLID+21,1,'Felpaw Village, Felwood, Group 22'), +(@POOLID+22,1,'Felpaw Village, Felwood, Group 23'), +(@POOLID+23,1,'Felpaw Village, Felwood, Group 24'), +(@POOLID+24,1,'Felpaw Village, Felwood, Group 25'), +(@POOLID+25,1,'Felpaw Village, Felwood, Group 26'), +(@POOLID+26,1,'Felpaw Village, Felwood, Group 27'), +(@POOLID+27,1,'Felpaw Village, Felwood, Group 28'), +(@POOLID+28,1,'Felpaw Village, Felwood, Group 29'), +(@POOLID+29,1,'Felpaw Village, Felwood, Group 30'), +(@POOLID+30,1,'Felpaw Village, Felwood, Group 31'), +(@POOLID+31,1,'Felpaw Village, Felwood, Group 32'), +(@POOLID+32,1,'Felpaw Village, Felwood, Group 33'), +(@POOLID+33,1,'Felpaw Village, Felwood, Group 34'), +(@POOLID+34,1,'Felpaw Village, Felwood, Group 35'), +(@POOLID+35,1,'Felpaw Village, Felwood, Group 36'), +(@POOLID+36,1,'Felpaw Village, Felwood, Group 37'), +(@POOLID+37,1,'Felpaw Village, Felwood, Group 38'), +(@POOLID+38,1,'Felpaw Village, Felwood, Group 39'), +(@POOLID+39,1,'Felpaw Village, Felwood, Group 40'), +(@POOLID+40,1,'Felpaw Village, Felwood, Group 41'), +(@POOLID+41,1,'Felpaw Village, Felwood, Group 42'), +(@POOLID+42,1,'Felpaw Village, Felwood, Group 43'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+42; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(0,@CGUID+5,@POOLID,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+6,@POOLID,0,'Deadwood Avenger (7157)'), +(0,@CGUID+7,@POOLID+1,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+8,@POOLID+1,0,'Deadwood Avenger (7157)'), +(0,@CGUID+9,@POOLID+2,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+10,@POOLID+2,0,'Deadwood Avenger (7157)'), +(0,@CGUID+11,@POOLID+3,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+12,@POOLID+3,0,'Deadwood Avenger (7157)'), +(0,@CGUID+13,@POOLID+4,0,'Deadwood Avenger (7157)'), +(0,@CGUID+14,@POOLID+4,0,'Deadwood Shaman (7158)'), +(0,@CGUID+15,@POOLID+5,0,'Deadwood Avenger (7157)'), +(0,@CGUID+16,@POOLID+5,0,'Deadwood Shaman (7158)'), +(0,@CGUID+17,@POOLID+6,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+18,@POOLID+6,0,'Deadwood Avenger (7157)'), +(0,@CGUID+19,@POOLID+6,0,'Deadwood Shaman (7158)'), +(0,@CGUID+20,@POOLID+7,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+21,@POOLID+7,0,'Deadwood Avenger (7157)'), +(0,@CGUID+22,@POOLID+7,0,'Deadwood Shaman (7158)'), +(0,@CGUID+23,@POOLID+8,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+24,@POOLID+8,0,'Deadwood Avenger (7157)'), +(0,@CGUID+25,@POOLID+8,0,'Deadwood Shaman (7158)'), +(0,@CGUID+26,@POOLID+9,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+27,@POOLID+9,0,'Deadwood Avenger (7157)'), +(0,@CGUID+28,@POOLID+9,0,'Deadwood Shaman (7158)'), +(0,@CGUID+29,@POOLID+10,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+30,@POOLID+10,0,'Deadwood Avenger (7157)'), +(0,@CGUID+31,@POOLID+10,0,'Deadwood Shaman (7158)'), +(0,@CGUID+32,@POOLID+11,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+33,@POOLID+11,0,'Deadwood Avenger (7157)'), +(0,@CGUID+34,@POOLID+11,0,'Deadwood Shaman (7158)'), +(0,@CGUID+35,@POOLID+12,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+36,@POOLID+12,0,'Deadwood Avenger (7157)'), +(0,@CGUID+37,@POOLID+12,0,'Deadwood Shaman (7158)'), +(0,@CGUID+38,@POOLID+13,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+39,@POOLID+13,0,'Deadwood Avenger (7157)'), +(0,@CGUID+40,@POOLID+13,0,'Deadwood Shaman (7158)'), +(0,@CGUID+41,@POOLID+14,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+42,@POOLID+14,0,'Deadwood Avenger (7157)'), +(0,@CGUID+43,@POOLID+14,0,'Deadwood Shaman (7158)'), +(0,@CGUID+44,@POOLID+15,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+45,@POOLID+15,0,'Deadwood Avenger (7157)'), +(0,@CGUID+46,@POOLID+15,0,'Deadwood Shaman (7158)'), +(0,@CGUID+47,@POOLID+16,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+48,@POOLID+16,0,'Deadwood Avenger (7157)'), +(0,@CGUID+49,@POOLID+16,0,'Deadwood Shaman (7158)'), +(0,@CGUID+50,@POOLID+17,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+51,@POOLID+17,0,'Deadwood Avenger (7157)'), +(0,@CGUID+52,@POOLID+17,0,'Deadwood Shaman (7158)'), +(0,@CGUID+53,@POOLID+18,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+54,@POOLID+18,0,'Deadwood Avenger (7157)'), +(0,@CGUID+55,@POOLID+18,0,'Deadwood Shaman (7158)'), +(0,@CGUID+56,@POOLID+19,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+57,@POOLID+19,0,'Deadwood Avenger (7157)'), +(0,@CGUID+58,@POOLID+19,0,'Deadwood Shaman (7158)'), +(0,@CGUID+59,@POOLID+20,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+60,@POOLID+20,0,'Deadwood Avenger (7157)'), +(0,@CGUID+61,@POOLID+20,0,'Deadwood Shaman (7158)'), +(0,@CGUID+62,@POOLID+21,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+63,@POOLID+21,0,'Deadwood Avenger (7157)'), +(0,@CGUID+64,@POOLID+21,0,'Deadwood Shaman (7158)'), +(0,@CGUID+65,@POOLID+22,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+66,@POOLID+22,0,'Deadwood Avenger (7157)'), +(0,@CGUID+67,@POOLID+22,0,'Deadwood Shaman (7158)'), +(0,@CGUID+68,@POOLID+23,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+69,@POOLID+23,0,'Deadwood Avenger (7157)'), +(0,@CGUID+70,@POOLID+23,0,'Deadwood Shaman (7158)'), +(0,@CGUID+71,@POOLID+24,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+72,@POOLID+24,0,'Deadwood Avenger (7157)'), +(0,@CGUID+73,@POOLID+24,0,'Deadwood Shaman (7158)'), +(0,@CGUID+74,@POOLID+25,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+75,@POOLID+25,0,'Deadwood Avenger (7157)'), +(0,@CGUID+76,@POOLID+25,0,'Deadwood Shaman (7158)'), +(0,@CGUID+77,@POOLID+26,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+78,@POOLID+26,0,'Deadwood Avenger (7157)'), +(0,@CGUID+79,@POOLID+26,0,'Deadwood Shaman (7158)'), +(0,@CGUID+80,@POOLID+27,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+81,@POOLID+27,0,'Deadwood Avenger (7157)'), +(0,@CGUID+82,@POOLID+27,0,'Deadwood Shaman (7158)'), +(0,@CGUID+83,@POOLID+28,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+84,@POOLID+28,0,'Deadwood Avenger (7157)'), +(0,@CGUID+85,@POOLID+28,0,'Deadwood Shaman (7158)'), +(0,@CGUID+86,@POOLID+29,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+87,@POOLID+29,0,'Deadwood Avenger (7157)'), +(0,@CGUID+88,@POOLID+29,0,'Deadwood Shaman (7158)'), +(0,@CGUID+89,@POOLID+30,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+90,@POOLID+30,0,'Deadwood Avenger (7157)'), +(0,@CGUID+91,@POOLID+30,0,'Deadwood Shaman (7158)'), +(0,@CGUID+92,@POOLID+31,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+93,@POOLID+31,0,'Deadwood Avenger (7157)'), +(0,@CGUID+94,@POOLID+31,0,'Deadwood Shaman (7158)'), +(0,@CGUID+95,@POOLID+32,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+96,@POOLID+32,0,'Deadwood Avenger (7157)'), +(0,@CGUID+97,@POOLID+32,0,'Deadwood Shaman (7158)'), +(0,@CGUID+98,@POOLID+33,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+99,@POOLID+33,0,'Deadwood Avenger (7157)'), +(0,@CGUID+100,@POOLID+33,0,'Deadwood Shaman (7158)'), +(0,@CGUID+101,@POOLID+34,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+102,@POOLID+34,0,'Deadwood Avenger (7157)'), +(0,@CGUID+103,@POOLID+34,0,'Deadwood Shaman (7158)'), +(0,@CGUID+104,@POOLID+35,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+105,@POOLID+35,0,'Deadwood Avenger (7157)'), +(0,@CGUID+106,@POOLID+35,0,'Deadwood Shaman (7158)'), +(0,@CGUID+107,@POOLID+36,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+108,@POOLID+36,0,'Deadwood Avenger (7157)'), +(0,@CGUID+109,@POOLID+36,0,'Deadwood Shaman (7158)'), +(0,@CGUID+110,@POOLID+37,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+111,@POOLID+37,0,'Deadwood Avenger (7157)'), +(0,@CGUID+112,@POOLID+37,0,'Deadwood Shaman (7158)'), +(0,@CGUID+113,@POOLID+38,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+114,@POOLID+38,0,'Deadwood Avenger (7157)'), +(0,@CGUID+115,@POOLID+38,0,'Deadwood Shaman (7158)'), +(0,@CGUID+116,@POOLID+39,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+117,@POOLID+39,0,'Deadwood Avenger (7157)'), +(0,@CGUID+118,@POOLID+39,0,'Deadwood Shaman (7158)'), +(0,@CGUID+119,@POOLID+40,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+120,@POOLID+40,0,'Deadwood Avenger (7157)'), +(0,@CGUID+121,@POOLID+40,0,'Deadwood Shaman (7158)'), +(0,@CGUID+122,@POOLID+41,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+123,@POOLID+41,0,'Deadwood Avenger (7157)'), +(0,@CGUID+124,@POOLID+41,0,'Deadwood Shaman (7158)'), +(0,@CGUID+125,@POOLID+42,0,'Deadwood Den Watcher (7156)'), +(0,@CGUID+126,@POOLID+42,0,'Deadwood Avenger (7157)'), +(0,@CGUID+127,@POOLID+42,0,'Deadwood Shaman (7158)'); + +-- Pathing for Deadwood Avenger Entry: 7157 +SET @NPC := @CGUID+2; +SET @PATH := @NPC * 10; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`StandState`,`SheathState`,`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,6836.2563,-1958.3312,551.14636,NULL,50000,0,0,100,0), +(@PATH,2,6832.138,-1946.8033,548.6861,NULL,40000,0,0,100,0); + +-- Pathing for Deadwood Den Watcher Entry: 7156, Deadwood Avenger Entry: 7157 +SET @NPC := @CGUID+9; +SET @PATH := @NPC * 10; +DELETE FROM `creature_addon` WHERE `guid` IN (@NPC,@NPC+1); +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`StandState`,`SheathState`,`emote`,`visibilityDistanceType`,`auras`) VALUES +(@NPC,@PATH,0,0,1,0,0, ''),(@NPC+1,@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,6742.783,-1884.2014,550.0086,NULL,0,0,0,100,0), +(@PATH,2,6755.027,-1882.4729,550.80035,NULL,0,0,0,100,0), +(@PATH,3,6762.4033,-1880.247,550.92535,NULL,0,0,0,100,0), +(@PATH,4,6772.671,-1875.1853,550.8313,NULL,0,0,0,100,0), +(@PATH,5,6785.2915,-1858.1077,552.3018,NULL,0,0,0,100,0), +(@PATH,6,6799.3403,-1845.1311,554.64874,NULL,0,0,0,100,0), +(@PATH,7,6813.109,-1824.484,560.7498,NULL,0,0,0,100,0), +(@PATH,8,6828.3228,-1820.8368,561.93854,NULL,0,0,0,100,0), +(@PATH,9,6845.292,-1826.416,561.6869,NULL,0,0,0,100,0), +(@PATH,10,6867.53,-1825.0946,563.73517,NULL,0,0,0,100,0), +(@PATH,11,6884.5103,-1824.497,566.3377,NULL,0,0,0,100,0), +(@PATH,12,6898.2207,-1826.3928,568.0859,NULL,0,0,0,100,0), +(@PATH,13,6880.141,-1823.8627,565.93854,NULL,0,0,0,100,0), +(@PATH,14,6862.512,-1819.7505,564.43787,NULL,0,0,0,100,0), +(@PATH,15,6853.1475,-1807.4088,565.7855,NULL,0,0,0,100,0), +(@PATH,16,6829.3037,-1811.7084,564.3947,NULL,0,0,0,100,0), +(@PATH,17,6809.335,-1826.6364,560.1082,NULL,0,0,0,100,0), +(@PATH,18,6803.229,-1842.7974,554.82904,NULL,0,0,0,100,0), +(@PATH,19,6802.725,-1864.1155,551.0451,NULL,0,0,0,100,0), +(@PATH,20,6793.358,-1871.483,550.9563,NULL,0,0,0,100,0), +(@PATH,21,6780.5254,-1878.0662,550.2063,NULL,0,0,0,100,0), +(@PATH,22,6761.8857,-1883.431,550.92535,NULL,0,0,0,100,0), +(@PATH,23,6750.664,-1881.2048,550.42535,NULL,0,0,0,100,0), +(@PATH,24,6722.1313,-1889.0719,549.3373,NULL,0,0,0,100,0), +(@PATH,25,6713.2954,-1894.2188,549.21985,NULL,0,0,0,100,0), +(@PATH,26,6708.041,-1900.7806,549.07025,NULL,0,0,0,100,0), +(@PATH,27,6710.7495,-1892.5039,549.4479,NULL,0,0,0,100,0), +(@PATH,28,6709.9814,-1882.2263,550.2838,NULL,0,0,0,100,0), +(@PATH,29,6734.5825,-1882.2701,549.99054,NULL,0,0,0,100,0), +(@PATH,30,6750.664,-1881.2048,550.42535,NULL,0,0,0,100,0), +(@PATH,31,6761.8857,-1883.431,550.92535,NULL,0,0,0,100,0), +(@PATH,32,6780.5254,-1878.0662,550.2063,NULL,0,0,0,100,0), +(@PATH,33,6793.358,-1871.483,550.9563,NULL,0,0,0,100,0), +(@PATH,34,6802.725,-1864.1155,551.0451,NULL,0,0,0,100,0), +(@PATH,35,6803.229,-1842.7974,554.82904,NULL,0,0,0,100,0), +(@PATH,36,6809.335,-1826.6364,560.1082,NULL,0,0,0,100,0), +(@PATH,37,6829.3037,-1811.7084,564.3947,NULL,0,0,0,100,0), +(@PATH,38,6853.1475,-1807.4088,565.7855,NULL,0,0,0,100,0), +(@PATH,39,6862.512,-1819.7505,564.43787,NULL,0,0,0,100,0), +(@PATH,40,6880.141,-1823.8627,565.93854,NULL,0,0,0,100,0), +(@PATH,41,6898.2207,-1826.3928,568.0859,NULL,0,0,0,100,0), +(@PATH,42,6884.5103,-1824.497,566.3377,NULL,0,0,0,100,0), +(@PATH,43,6867.53,-1825.0946,563.73517,NULL,0,0,0,100,0), +(@PATH,44,6845.292,-1826.416,561.6869,NULL,0,0,0,100,0), +(@PATH,45,6828.3228,-1820.8368,561.93854,NULL,0,0,0,100,0), +(@PATH,46,6813.109,-1824.484,560.7498,NULL,0,0,0,100,0), +(@PATH,47,6799.3403,-1845.1311,554.64874,NULL,0,0,0,100,0), +(@PATH,48,6785.2915,-1858.1077,552.3018,NULL,0,0,0,100,0), +(@PATH,49,6772.671,-1875.1853,550.8313,NULL,0,0,0,100,0), +(@PATH,50,6762.4033,-1880.247,550.92535,NULL,0,0,0,100,0), +(@PATH,51,6755.027,-1882.4729,550.80035,NULL,0,0,0,100,0); + +-- Pathing for Deadwood Den Watcher Entry: 7156, Deadwood Avenger Entry: 7157, Deadwood Shaman Entry: 7158 +SET @NPC := @CGUID+53; +SET @PATH := @NPC * 10; +DELETE FROM `creature_addon` WHERE `guid` IN (@NPC,@NPC+1,@NPC+2); +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`StandState`,`SheathState`,`emote`,`visibilityDistanceType`,`auras`) VALUES +(@NPC,@PATH,0,0,1,0,0, ''),(@NPC+1,@PATH,0,0,1,0,0, ''),(@NPC+2,@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,6674.144,-1938.4623,550.1063,NULL,0,0,0,100,0), +(@PATH,2,6680.9253,-1945.6392,550.8187,NULL,0,0,0,100,0), +(@PATH,3,6693.1694,-1952.7042,551.0707,NULL,0,0,0,100,0), +(@PATH,4,6705.156,-1953.2203,552.2102,NULL,0,0,0,100,0), +(@PATH,5,6720.814,-1957.4888,552.2864,NULL,0,0,0,100,0), +(@PATH,6,6725.9185,-1964.8463,552.3895,NULL,0,0,0,100,0), +(@PATH,7,6725.5947,-1978.221,559.3325,NULL,0,0,0,100,0), +(@PATH,8,6722.6387,-1987.695,560.3678,NULL,0,0,0,100,0), +(@PATH,9,6716.1553,-1990.7474,560.49414,NULL,0,0,0,100,0), +(@PATH,10,6707.6743,-1986.0039,559.0332,NULL,0,0,0,100,0), +(@PATH,11,6697.0845,-1982.1294,556.9809,NULL,0,0,0,100,0), +(@PATH,12,6689.924,-1972.5391,552.7983,NULL,0,0,0,100,0), +(@PATH,13,6681.2456,-1970.9508,551.23065,NULL,0,0,0,100,0), +(@PATH,14,6661.076,-1962.1512,550.74835,NULL,0,0,0,100,0), +(@PATH,15,6648.992,-1958.2153,550.6717,NULL,0,0,0,100,0), +(@PATH,16,6643.303,-1953.4427,550.5903,NULL,0,0,0,100,0), +(@PATH,17,6641.8594,-1941.9397,549.2579,NULL,0,0,0,100,0), +(@PATH,18,6649.981,-1935.5818,547.8481,NULL,0,0,0,100,0), +(@PATH,19,6663.953,-1934.707,549.12335,NULL,0,0,0,100,0); + +-- Pathing for Deadwood Den Watcher Entry: 7156, Deadwood Avenger Entry: 7157, Deadwood Shaman Entry: 7158 +SET @NPC := @CGUID+71; +SET @PATH := @NPC * 10; +DELETE FROM `creature_addon` WHERE `guid` IN (@NPC,@NPC+1,@NPC+2); +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`StandState`,`SheathState`,`emote`,`visibilityDistanceType`,`auras`) VALUES +(@NPC,@PATH,0,0,1,0,0, ''),(@NPC+1,@PATH,0,0,1,0,0, ''),(@NPC+2,@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,6839.8213,-2010.7513,571.88824,NULL,0,0,0,100,0), +(@PATH,2,6825.454,-2003.0621,567.79156,NULL,0,0,0,100,0), +(@PATH,3,6808.6484,-1998.2537,565.77673,NULL,0,0,0,100,0), +(@PATH,4,6797.5586,-1997.8064,565.4205,NULL,0,0,0,100,0), +(@PATH,5,6785.587,-2006.0873,566.36304,NULL,0,0,0,100,0), +(@PATH,6,6779.187,-2018.8337,567.20764,NULL,0,0,0,100,0), +(@PATH,7,6787.61,-2023.3473,569.01,NULL,0,0,0,100,0), +(@PATH,8,6810.3037,-2020.6549,569.0567,NULL,0,0,0,100,0), +(@PATH,9,6826.6704,-2013.8262,569.9943,NULL,0,0,0,100,0), +(@PATH,10,6844.8022,-2016.8806,574.1186,NULL,0,0,0,100,0), +(@PATH,11,6849.61,-2027.3008,577.63873,NULL,0,0,0,100,0), +(@PATH,12,6860.901,-2037.0543,581.5809,NULL,0,0,0,100,0), +(@PATH,13,6872.202,-2040.5083,582.4156,NULL,0,0,0,100,0), +(@PATH,14,6885.85,-2040.0408,581.4642,NULL,0,0,0,100,0), +(@PATH,15,6893.2324,-2036.9629,582.4974,NULL,0,0,0,100,0), +(@PATH,16,6906.8237,-2029.5887,585.2558,NULL,0,0,0,100,0), +(@PATH,17,6912.1626,-2023.863,586.6153,NULL,0,0,0,100,0), +(@PATH,18,6908.6235,-2015.8668,585.2845,NULL,0,0,0,100,0), +(@PATH,19,6901.057,-2009.9861,583.15265,NULL,0,0,0,100,0), +(@PATH,20,6891.577,-2012.1641,579.04706,NULL,0,0,0,100,0), +(@PATH,21,6884.7573,-2017.9587,578.0085,NULL,0,0,0,100,0), +(@PATH,22,6875.134,-2024.5499,577.02216,NULL,0,0,0,100,0), +(@PATH,23,6870.844,-2026.7975,577.436,NULL,0,0,0,100,0), +(@PATH,24,6859.9976,-2023.9427,577.399,NULL,0,0,0,100,0), +(@PATH,25,6851.0894,-2018.5762,575.4251,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_02_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_02_world.sql new file mode 100644 index 00000000000..ff65af9c8e7 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_02_world.sql @@ -0,0 +1,111 @@ +-- +SET @CGUID := 147290; +SET @POOLID := 593; + +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID AND @CGUID+50; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@CGUID, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2978.1, 6172.02, 60.9706, 5.32325, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+1, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2945.24, 6246.11, 60.975, 6.16101, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+2, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2957.58, 6227.22, 60.7323, 3.94444, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+3, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2926.58, 6281.96, 62.1978, 0.802851, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+4, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2887.59, 6237.46, 77.7758, 3.85718, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+5, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2867.71, 6267.31, 61.747, 4.99164, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+6, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2854.76, 6246.98, 77.7758, 3.35103, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+7, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2905.47, 6216.61, 61.5561, 5.3058, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+8, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2928.38, 6185.37, 62.5468, 1.91986, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+9, 25284, 571, 3537, 4129, 1, 1, 0, 0, 2894.52, 6226.45, 77.7758, 3.64774, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+10, 25284, 571, 3537, 4129, 1, 1, 0, 0, 2902.44, 6158.43, 78.5022, 2.96706, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+11, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2895.37, 6293.76, 61.6635, 4.24115, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+12, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2934.04, 6166.06, 62.0291, 2.00713, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+13, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2819.93, 6311.56, 62.5366, 4.69494, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+14, 25284, 571, 3537, 4129, 1, 1, 0, 0, 2921.87, 6135.71, 78.5082, 5.16617, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+15, 25284, 571, 3537, 4129, 1, 1, 0, 0, 2754.33, 6240.9, 77.7758, 3.1765, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+16, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2704.21, 6040.9, 30.7446, 5.77704, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+17, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2722.75, 6031.68, 30.6742, 2.18166, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+18, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2685.12, 6131.61, 40.0764, 2.53073, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+19, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2689.42, 6110.31, 40.1811, 2.19912, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+20, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2680.27, 6147.35, 40.3715, 5.60251, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+21, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2721.42, 6008.34, 32.7563, 3.80482, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+22, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2650.33, 6111.8, 38.2883, 3.00197, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+23, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2689.25, 6194.8, 54.0332, 3.49066, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+24, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2669.27, 6179.79, 39.3598, 5.65487, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+25, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2656.43, 6220.2, 38.5179, 1.76278, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+26, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2567.77, 6109.05, 54.6977, 3.76991, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+27, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2641.34, 6031.71, 54.2912, 3.26377, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+28, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2625.26, 6095.54, 54.0161, 5.23599, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+29, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2585.7, 6190.79, 39.1659, 3.90954, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+30, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2615.04, 6115.13, 45.4237, 2.49582, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+31, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2634.75, 6034.53, 54.0479, 3.07178, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+32, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2700.17, 6236.87, 39.5734, 6.12611, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+33, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2660.3, 6237.82, 38.3345, 3.90954, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+34, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2671.28, 6169.58, 39.5054, 5.51524, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+35, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2717.3, 6294.58, 61.7433, 1.3439, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+36, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2673.98, 6268.22, 39.8142, 2.63545, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+37, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2629.93, 6118.81, 38.2883, 2.42601, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+38, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2627.62, 6052.65, 54.0331, 6.21337, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+39, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2590.95, 6064.32, 53.932, 0.994838, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+40, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2637.65, 6217.15, 40.1605, 2.19912, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+41, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2677.92, 6199.64, 39.8142, 2.51327, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+42, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2708.72, 6270.94, 47.0079, 3.22886, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+43, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2990.11, 6142.67, 61.5929, 1.27409, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+44, 25284, 571, 3537, 4020, 1, 1, 0, 0, 2979.68, 6128.44, 62.3862, 2.84489, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+45, 35644, 650, 4723, 4723, 3, 1, 0, 0, 702.967, 587.649, 412.475, 0.610865, 7200, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+46, 35644, 650, 4723, 4723, 3, 1, 0, 0, 774.898, 573.736, 412.475, 2.14675, 7200, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+47, 35644, 650, 4723, 4723, 3, 1, 0, 0, 787.439, 584.969, 412.476, 2.47837, 7200, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+48, 35644, 650, 4723, 4723, 3, 1, 0, 0, 712.594, 576.26, 412.476, 0.890118, 7200, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+49, 35644, 650, 4723, 4723, 3, 1, 0, 0, 720.57, 571.285, 412.475, 1.06465, 7200, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0), +(@CGUID+50, 36558, 650, 4723, 4723, 3, 1, 0, 0, 790.177, 589.059, 412.475, 2.56563, 7200, 0, 0, 1, 0, 0, 0, 0, 0, '', NULL, 0); + +-- pool_template +DELETE FROM `pool_template` WHERE `entry`= @POOLID; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@POOLID, 15, 'MASTER Minerals Wintergrasp zone 4197'); + +-- pool_members +DELETE FROM `pool_members` WHERE `type`=2 AND `poolSpawnId`=@POOLID; +INSERT INTO `pool_members` (`type`, `spawnId`, `poolSpawnId`, `chance`, `description`) VALUES +(2, 5617, @POOLID, 0, 'Wintergrasp mineral, node 1'), +(2, 5618, @POOLID, 0, 'Wintergrasp mineral, node 2'), +(2, 5619, @POOLID, 0, 'Wintergrasp mineral, node 3'), +(2, 5620, @POOLID, 0, 'Wintergrasp mineral, node 4'), +(2, 5621, @POOLID, 0, 'Wintergrasp mineral, node 5'), +(2, 5622, @POOLID, 0, 'Wintergrasp mineral, node 6'), +(2, 5623, @POOLID, 0, 'Wintergrasp mineral, node 7'), +(2, 5624, @POOLID, 0, 'Wintergrasp mineral, node 8'), +(2, 5625, @POOLID, 0, 'Wintergrasp mineral, node 9'), +(2, 5626, @POOLID, 0, 'Wintergrasp mineral, node 10'), +(2, 5627, @POOLID, 0, 'Wintergrasp mineral, node 11'), +(2, 5628, @POOLID, 0, 'Wintergrasp mineral, node 12'), +(2, 5629, @POOLID, 0, 'Wintergrasp mineral, node 13'), +(2, 5630, @POOLID, 0, 'Wintergrasp mineral, node 14'), +(2, 5631, @POOLID, 0, 'Wintergrasp mineral, node 15'), +(2, 5632, @POOLID, 0, 'Wintergrasp mineral, node 16'), +(2, 5633, @POOLID, 0, 'Wintergrasp mineral, node 17'), +(2, 5634, @POOLID, 0, 'Wintergrasp mineral, node 18'), +(2, 5635, @POOLID, 0, 'Wintergrasp mineral, node 19'), +(2, 5636, @POOLID, 0, 'Wintergrasp mineral, node 20'), +(2, 5637, @POOLID, 0, 'Wintergrasp mineral, node 21'), +(2, 5638, @POOLID, 0, 'Wintergrasp mineral, node 22'), +(2, 5639, @POOLID, 0, 'Wintergrasp mineral, node 23'), +(2, 5640, @POOLID, 0, 'Wintergrasp mineral, node 24'), +(2, 5641, @POOLID, 0, 'Wintergrasp mineral, node 25'), +(2, 5642, @POOLID, 0, 'Wintergrasp mineral, node 26'), +(2, 5643, @POOLID, 0, 'Wintergrasp mineral, node 27'), +(2, 5644, @POOLID, 0, 'Wintergrasp mineral, node 28'), +(2, 5645, @POOLID, 0, 'Wintergrasp mineral, node 29'), +(2, 5646, @POOLID, 0, 'Wintergrasp mineral, node 30'), +(2, 5647, @POOLID, 0, 'Wintergrasp mineral, node 31'), +(2, 5648, @POOLID, 0, 'Wintergrasp mineral, node 32'), +(2, 5649, @POOLID, 0, 'Wintergrasp mineral, node 33'), +(2, 5650, @POOLID, 0, 'Wintergrasp mineral, node 34'), +(2, 5651, @POOLID, 0, 'Wintergrasp mineral, node 35'), +(2, 5652, @POOLID, 0, 'Wintergrasp mineral, node 36'), +(2, 5653, @POOLID, 0, 'Wintergrasp mineral, node 37'), +(2, 5654, @POOLID, 0, 'Wintergrasp mineral, node 38'), +(2, 5655, @POOLID, 0, 'Wintergrasp mineral, node 39'), +(2, 5656, @POOLID, 0, 'Wintergrasp mineral, node 40'), +(2, 5657, @POOLID, 0, 'Wintergrasp mineral, node 41'), +(2, 5658, @POOLID, 0, 'Wintergrasp mineral, node 42'), +(2, 5659, @POOLID, 0, 'Wintergrasp mineral, node 43'), +(2, 5660, @POOLID, 0, 'Wintergrasp mineral, node 44'), +(2, 5661, @POOLID, 0, 'Wintergrasp mineral, node 45'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_03_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_03_world.sql new file mode 100644 index 00000000000..01f482bae4f --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_24_03_world.sql @@ -0,0 +1,192 @@ +-- Jadefire Run, Felwood Replace existing Jadefire spawns with sniffed CreateObject2 and pooling +SET @CGUID := 147341; +SET @POOLID := 908; +-- Remove existing spawns +DELETE FROM `creature` WHERE `guid` IN (40193,40194,40195,40240,40241,40242,40284,40288,40289,40291,40296,40365,40677,40678,40713,40714,40196,40290,40301,40302,40671,40680,40712,40715,40718,40230,40283,40286,40287,40297,40298,40299,40300,40338,40668,40674,40706,40708); +DELETE FROM `creature_addon` WHERE `guid` IN (40193,40194,40195,40240,40241,40242,40284,40288,40289,40291,40296,40365,40677,40678,40713,40714,40196,40290,40301,40302,40671,40680,40712,40715,40718,40230,40283,40286,40287,40297,40298,40299,40300,40338,40668,40674,40706,40708); +DELETE FROM `spawn_group` WHERE `spawnType`=0 AND `spawnId` IN (40193,40194,40195,40240,40241,40242,40284,40288,40289,40291,40296,40365,40677,40678,40713,40714,40196,40290,40301,40302,40671,40680,40712,40715,40718,40230,40283,40286,40287,40297,40298,40299,40300,40338,40668,40674,40706,40708); +DELETE FROM `waypoint_data` WHERE `id` IN (407060); +-- Add new spawns and pooling +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID AND @CGUID+65; +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID AND @CGUID+65; +INSERT INTO `creature` (`guid`,`id`,`map`,`zoneId`,`areaId`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`wander_distance`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`,`ScriptName`,`VerifiedBuild`) VALUES +(@CGUID, 7107, 1, 0, 0, 1, 1, 0, 0, 6597.9893, -937.82446, 473.77335, 0.209439516067504882, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+1, 7108, 1, 0, 0, 1, 1, 0, 0, 6597.9893, -937.82446, 473.77335, 0.209439516067504882, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+2, 7107, 1, 0, 0, 1, 1, 0, 0, 6581.721, -1013.5572, 463.79858, 1.172463178634643554, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+3, 7108, 1, 0, 0, 1, 1, 0, 0, 6581.721, -1013.5572, 463.79858, 1.172463178634643554, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+4, 7107, 1, 0, 0, 1, 1, 0, 0, 6595.478, -964.7803, 472.8459, 3.744056224822998046, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+5, 7108, 1, 0, 0, 1, 1, 0, 0, 6595.478, -964.7803, 472.8459, 3.744056224822998046, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+6, 7107, 1, 0, 0, 1, 1, 0, 0, 6606.426, -912.1112, 473.53186, 2.259292364120483398, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+7, 7108, 1, 0, 0, 1, 1, 0, 0, 6606.426, -912.1112, 473.53186, 2.259292364120483398, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+8, 7107, 1, 0, 0, 1, 1, 0, 0, 6500.4424, -850.4374, 472.95465, 4.504848957061767578, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+9, 7108, 1, 0, 0, 1, 1, 0, 0, 6500.4424, -850.4374, 472.95465, 4.504848957061767578, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+10, 7107, 1, 0, 0, 1, 1, 0, 0, 6489.674, -784.32434, 473.6464, 0.226892799139022827, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+11, 7108, 1, 0, 0, 1, 1, 0, 0, 6489.674, -784.32434, 473.6464, 0.226892799139022827, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+12, 7107, 1, 0, 0, 1, 1, 0, 0, 6553.232, -841.71313, 473.59003, 0.154711350798606872, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+13, 7108, 1, 0, 0, 1, 1, 0, 0, 6553.232, -841.71313, 473.59003, 0.154711350798606872, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+14, 7107, 1, 0, 0, 1, 1, 0, 0, 6535.845, -834.43854, 474.60547, 4.304278373718261718, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+15, 7108, 1, 0, 0, 1, 1, 0, 0, 6535.845, -834.43854, 474.60547, 4.304278373718261718, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+16, 7107, 1, 0, 0, 1, 1, 0, 0, 6569.074, -806.16907, 475.7942, 0.657858967781066894, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+17, 7108, 1, 0, 0, 1, 1, 0, 0, 6569.074, -806.16907, 475.7942, 0.657858967781066894, 300, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+18, 7107, 1, 0, 0, 1, 1, 0, 0, 6479.3735, -793.56195, 473.90875, 4.374718189239501953, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+19, 7108, 1, 0, 0, 1, 1, 0, 0, 6479.3735, -793.56195, 473.90875, 4.374718189239501953, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+20, 7107, 1, 0, 0, 1, 1, 0, 0, 6581.0884, -804.00696, 474.8405, 3.724053382873535156, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+21, 7108, 1, 0, 0, 1, 1, 0, 0, 6581.0884, -804.00696, 474.8405, 3.724053382873535156, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+22, 7107, 1, 0, 0, 1, 1, 0, 0, 6483.8745, -817.1497, 473.94272, 1.133222579956054687, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+23, 7108, 1, 0, 0, 1, 1, 0, 0, 6483.8745, -817.1497, 473.94272, 1.133222579956054687, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+24, 7107, 1, 0, 0, 1, 1, 0, 0, 6516.1167, -814.5349, 474.74985, 2.449142217636108398, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+25, 7108, 1, 0, 0, 1, 1, 0, 0, 6516.1167, -814.5349, 474.74985, 2.449142217636108398, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+26, 7107, 1, 0, 0, 1, 1, 0, 0, 6448.5664, -800.8992, 474.3046, 5.257455348968505859, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+27, 7108, 1, 0, 0, 1, 1, 0, 0, 6448.5664, -800.8992, 474.3046, 5.257455348968505859, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+28, 7107, 1, 0, 0, 1, 1, 0, 0, 6432.1587, -759.84686, 473.15967, 3.224145412445068359, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+29, 7108, 1, 0, 0, 1, 1, 0, 0, 6432.1587, -759.84686, 473.15967, 3.224145412445068359, 300, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), +(@CGUID+30, 7107, 1, 0, 0, 1, 1, 0, 0, 6414.7876, -782.52045, 471.68338, 4.049969673156738281, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+31, 7108, 1, 0, 0, 1, 1, 0, 0, 6414.7876, -782.52045, 471.68338, 4.049969673156738281, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+32, 7107, 1, 0, 0, 1, 1, 0, 0, 6417.261, -818.1496, 470.33954, 3.518303632736206054, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+33, 7108, 1, 0, 0, 1, 1, 0, 0, 6417.261, -818.1496, 470.33954, 3.518303632736206054, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+34, 7107, 1, 0, 0, 1, 1, 0, 0, 6383.858, -749.6224, 469.33542, 4.047421932220458984, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+35, 7108, 1, 0, 0, 1, 1, 0, 0, 6383.858, -749.6224, 469.33542, 4.047421932220458984, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+36, 7107, 1, 0, 0, 1, 1, 0, 0, 6400.7476, -712.16486, 474.86307, 1.413716673851013183, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+37, 7108, 1, 0, 0, 1, 1, 0, 0, 6400.7476, -712.16486, 474.86307, 1.413716673851013183, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+38, 7107, 1, 0, 0, 1, 1, 0, 0, 6373.806, -699.54706, 476.85983, 2.024573326110839843, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+39, 7108, 1, 0, 0, 1, 1, 0, 0, 6373.806, -699.54706, 476.85983, 2.024573326110839843, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+40, 7107, 1, 0, 0, 1, 1, 0, 0, 6377.0596, -797.05804, 457.78555, 3.528153657913208007, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+41, 7108, 1, 0, 0, 1, 1, 0, 0, 6377.0596, -797.05804, 457.78555, 3.528153657913208007, 300, 15, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+42, 7107, 1, 0, 0, 1, 1, 0, 0, 6410.2524, -725.2984, 473.8544, 4.321902275085449218, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+43, 7108, 1, 0, 0, 1, 1, 0, 0, 6410.2524, -725.2984, 473.8544, 4.321902275085449218, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+44, 7107, 1, 0, 0, 1, 1, 0, 0, 6350.9453, -734.53973, 471.33276, 5.67474365234375, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+45, 7108, 1, 0, 0, 1, 1, 0, 0, 6350.9453, -734.53973, 471.33276, 5.67474365234375, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+46, 7107, 1, 0, 0, 1, 1, 0, 0, 6351.046, -717.2646, 472.2365, 5.79449319839477539, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+47, 7108, 1, 0, 0, 1, 1, 0, 0, 6351.046, -717.2646, 472.2365, 5.79449319839477539, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+48, 7107, 1, 0, 0, 1, 1, 0, 0, 6287.962, -598.7009, 466.59583, 2.396016359329223632, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+49, 7108, 1, 0, 0, 1, 1, 0, 0, 6287.962, -598.7009, 466.59583, 2.396016359329223632, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+50, 7107, 1, 0, 0, 1, 1, 0, 0, 6279.444, -614.3792, 472.5725, 2.256314516067504882, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+51, 7108, 1, 0, 0, 1, 1, 0, 0, 6279.444, -614.3792, 472.5725, 2.256314516067504882, 300, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+52, 7111, 1, 0, 0, 1, 1, 0, 0, 6580.9106, -846.0111, 474.0431, 2.908204555511474609, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+53, 7111, 1, 0, 0, 1, 1, 0, 0, 6546.847, -842.53314, 473.8505, 3.269372463226318359, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+54, 7111, 1, 0, 0, 1, 1, 0, 0, 6479.9087, -786.9245, 474.54443, 3.862565040588378906, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+55, 7111, 1, 0, 0, 1, 1, 0, 0, 6577.2773, -798.1775, 475.03653, 1.438873529434204101, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+56, 7111, 1, 0, 0, 1, 1, 0, 0, 6589.328, -856.6679, 474.59833, 3.874630928039550781, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+57, 7111, 1, 0, 0, 1, 1, 0, 0, 6558.4224, -823.91797, 475.64575, 5.380662918090820312, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+58, 7111, 1, 0, 0, 1, 1, 0, 0, 6409.626, -718.0106, 475.00592, 3.664785385131835937, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+59, 7111, 1, 0, 0, 1, 1, 0, 0, 6342.289, -727.19995, 470.21567, 6.003914833068847656, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+60, 7111, 1, 0, 0, 1, 1, 0, 0, 6302.0747, -757.5039, 468.49915, 5.619960308074951171, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+61, 7111, 1, 0, 0, 1, 1, 0, 0, 6327.2744, -623.5396, 476.49002, 1.379523515701293945, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+62, 7111, 1, 0, 0, 1, 1, 0, 0, 6297.897, -617.827, 471.6025, 2.321287870407104492, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+63, 7111, 1, 0, 0, 1, 1, 0, 0, 6290.3145, -635.4162, 483.368, 5.811946392059326171, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+64, 7111, 1, 0, 0, 1, 1, 0, 0, 6281.056, -651.52264, 489.869, 4.186584949493408203, 300, 2, 0, 1, 0, 1, 0, 0, 0, '', 0), +(@CGUID+65, 10648, 1, 0, 0, 1, 1, 0, 0, 6279.093, -603.6922, 467.83997, 1.442377448081970214, 300, 0, 0, 1, 0, 0, 0, 0, 0, '', 0); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOLID AND @POOLID+25; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES +(@POOLID,1,'Jadefire Run, Felwood, Group 1'), +(@POOLID+1,1,'Jadefire Run, Felwood, Group 2'), +(@POOLID+2,1,'Jadefire Run, Felwood, Group 3'), +(@POOLID+3,1,'Jadefire Run, Felwood, Group 4'), +(@POOLID+4,1,'Jadefire Run, Felwood, Group 5'), +(@POOLID+5,1,'Jadefire Run, Felwood, Group 6'), +(@POOLID+6,1,'Jadefire Run, Felwood, Group 7'), +(@POOLID+7,1,'Jadefire Run, Felwood, Group 8'), +(@POOLID+8,1,'Jadefire Run, Felwood, Group 9'), +(@POOLID+9,1,'Jadefire Run, Felwood, Group 10'), +(@POOLID+10,1,'Jadefire Run, Felwood, Group 11'), +(@POOLID+11,1,'Jadefire Run, Felwood, Group 12'), +(@POOLID+12,1,'Jadefire Run, Felwood, Group 13'), +(@POOLID+13,1,'Jadefire Run, Felwood, Group 14'), +(@POOLID+14,1,'Jadefire Run, Felwood, Group 15'), +(@POOLID+15,1,'Jadefire Run, Felwood, Group 16'), +(@POOLID+16,1,'Jadefire Run, Felwood, Group 17'), +(@POOLID+17,1,'Jadefire Run, Felwood, Group 18'), +(@POOLID+18,1,'Jadefire Run, Felwood, Group 19'), +(@POOLID+19,1,'Jadefire Run, Felwood, Group 20'), +(@POOLID+20,1,'Jadefire Run, Felwood, Group 21'), +(@POOLID+21,1,'Jadefire Run, Felwood, Group 22'), +(@POOLID+22,1,'Jadefire Run, Felwood, Group 23'), +(@POOLID+23,1,'Jadefire Run, Felwood, Group 24'), +(@POOLID+24,1,'Jadefire Run, Felwood, Group 25'), +(@POOLID+25,1,'Jadefire Run, Felwood, Group 26'); + +DELETE FROM `pool_members` WHERE `poolSpawnId` BETWEEN @POOLID AND @POOLID+25; +INSERT INTO `pool_members` (`type`,`spawnId`,`poolSpawnId`,`chance`,`description`) VALUES +(0,@CGUID,@POOLID,0,'Jadefire Trickster (7107)'), +(0,@CGUID+1,@POOLID,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+2,@POOLID+1,0,'Jadefire Trickster (7107)'), +(0,@CGUID+3,@POOLID+1,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+4,@POOLID+2,0,'Jadefire Trickster (7107)'), +(0,@CGUID+5,@POOLID+2,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+6,@POOLID+3,0,'Jadefire Trickster (7107)'), +(0,@CGUID+7,@POOLID+3,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+8,@POOLID+4,0,'Jadefire Trickster (7107)'), +(0,@CGUID+9,@POOLID+4,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+10,@POOLID+5,0,'Jadefire Trickster (7107)'), +(0,@CGUID+11,@POOLID+5,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+12,@POOLID+6,0,'Jadefire Trickster (7107)'), +(0,@CGUID+13,@POOLID+6,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+14,@POOLID+7,0,'Jadefire Trickster (7107)'), +(0,@CGUID+15,@POOLID+7,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+16,@POOLID+8,0,'Jadefire Trickster (7107)'), +(0,@CGUID+17,@POOLID+8,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+18,@POOLID+9,0,'Jadefire Trickster (7107)'), +(0,@CGUID+19,@POOLID+9,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+20,@POOLID+10,0,'Jadefire Trickster (7107)'), +(0,@CGUID+21,@POOLID+10,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+22,@POOLID+11,0,'Jadefire Trickster (7107)'), +(0,@CGUID+23,@POOLID+11,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+24,@POOLID+12,0,'Jadefire Trickster (7107)'), +(0,@CGUID+25,@POOLID+12,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+26,@POOLID+13,0,'Jadefire Trickster (7107)'), +(0,@CGUID+27,@POOLID+13,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+28,@POOLID+14,0,'Jadefire Trickster (7107)'), +(0,@CGUID+29,@POOLID+14,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+30,@POOLID+15,0,'Jadefire Trickster (7107)'), +(0,@CGUID+31,@POOLID+15,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+32,@POOLID+16,0,'Jadefire Trickster (7107)'), +(0,@CGUID+33,@POOLID+16,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+34,@POOLID+17,0,'Jadefire Trickster (7107)'), +(0,@CGUID+35,@POOLID+17,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+36,@POOLID+18,0,'Jadefire Trickster (7107)'), +(0,@CGUID+37,@POOLID+18,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+38,@POOLID+19,0,'Jadefire Trickster (7107)'), +(0,@CGUID+39,@POOLID+19,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+40,@POOLID+20,0,'Jadefire Trickster (7107)'), +(0,@CGUID+41,@POOLID+20,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+42,@POOLID+21,0,'Jadefire Trickster (7107)'), +(0,@CGUID+43,@POOLID+21,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+44,@POOLID+22,0,'Jadefire Trickster (7107)'), +(0,@CGUID+45,@POOLID+22,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+46,@POOLID+23,0,'Jadefire Trickster (7107)'), +(0,@CGUID+47,@POOLID+23,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+48,@POOLID+24,0,'Jadefire Trickster (7107)'), +(0,@CGUID+49,@POOLID+24,0,'Jadefire Betrayer (7108)'), +(0,@CGUID+50,@POOLID+25,0,'Jadefire Trickster (7107)'), +(0,@CGUID+51,@POOLID+25,0,'Jadefire Betrayer (7108)'); + +-- Pathing for Jadefire Trickster Entry: 7107, Jadefire Betrayer Entry: 7108 +SET @NPC := @CGUID+28; +SET @PATH := @NPC * 10; +DELETE FROM `creature_addon` WHERE `guid` IN (@NPC,@NPC+1); +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`StandState`,`SheathState`,`emote`,`visibilityDistanceType`,`auras`) VALUES +(@NPC,@PATH,0,0,1,0,0, ''),(@NPC+1,@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,6431.575,-759.89514,473.14578,NULL,0,0,0,100,0), +(@PATH,2,6415.6743,-757.93774,473.14578,NULL,0,0,0,100,0), +(@PATH,3,6399.2617,-760.9202,470.7167,NULL,0,0,0,100,0), +(@PATH,4,6406.117,-791.04846,468.84244,NULL,0,0,0,100,0), +(@PATH,5,6424.424,-803.3945,471.96426,NULL,0,0,0,100,0), +(@PATH,6,6436.6743,-790.0301,473.39835,NULL,0,0,0,100,0), +(@PATH,7,6466.341,-799.6447,474.1249,NULL,0,0,0,100,0), +(@PATH,8,6478.2183,-818.8252,474.33282,NULL,0,0,0,100,0), +(@PATH,9,6496.9536,-828.95374,473.3863,NULL,0,0,0,100,0), +(@PATH,10,6520.4375,-828.62994,473.9445,NULL,0,0,0,100,0), +(@PATH,11,6543.6343,-830.434,474.0695,NULL,0,0,0,100,0), +(@PATH,12,6552.5806,-842.2002,473.697,NULL,0,0,0,100,0), +(@PATH,13,6571.129,-847.305,473.45517,NULL,0,0,0,100,0), +(@PATH,14,6583.8125,-830.9744,474.79904,NULL,0,0,0,100,0), +(@PATH,15,6573.4272,-806.39954,475.57468,NULL,0,0,0,100,0), +(@PATH,16,6558.5117,-795.7527,475.39703,NULL,0,0,0,100,0), +(@PATH,17,6529.44,-795.3073,473.6696,NULL,0,0,0,100,0), +(@PATH,18,6513.4146,-788.9368,474.66885,NULL,0,0,0,100,0), +(@PATH,19,6490.856,-802.297,474.06464,NULL,0,0,0,100,0), +(@PATH,20,6469.944,-795.0282,474.02267,NULL,0,0,0,100,0), +(@PATH,21,6451.1313,-779.17725,474.14835,NULL,0,0,0,100,0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_26_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_26_00_world.sql new file mode 100644 index 00000000000..31d5d1c2af7 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_26_00_world.sql @@ -0,0 +1,7 @@ +-- Stormwind Guard movement update +SET @GUID=79875; +SET @PATH=@GUID * 10; + +UPDATE `creature` SET `MovementType`=0 WHERE `guid`=@GUID; +UPDATE `creature_addon` SET `path_id`=0 WHERE `guid`=@GUID AND `path_id`=@PATH; +DELETE FROM `waypoint_data` WHERE `id`=@PATH; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_29_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_29_00_world.sql new file mode 100644 index 00000000000..e9368bc3154 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_29_00_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID` = 2924 WHERE `OptionBroadcastTextID` = 50546 AND `OptionID` = 1; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_29_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_29_01_world.sql new file mode 100644 index 00000000000..38a5a630f4a --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_10_29_01_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `gossip_menu_option` SET `OptionBroadcastTextID` = 2924 WHERE `OptionBroadcastTextID` = 50546; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_01_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_01_00_world.sql new file mode 100644 index 00000000000..f1939e470ef --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_01_00_world.sql @@ -0,0 +1,2 @@ +-- Cast Summon Khadgar's Servant even on mounted player +UPDATE `smart_scripts` SET `action_param2`=2 WHERE `entryorguid`=1816600 AND `source_type`=9 AND `id`=1; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_01_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_01_01_world.sql new file mode 100644 index 00000000000..2cef1e008a1 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_01_01_world.sql @@ -0,0 +1,1687 @@ +UPDATE `quest_template_locale` SET `ObjectiveText1`='Niños rescatados' WHERE `locale`='esES' AND `ID`=10852; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Draco Ala Abisal esclavizado liberado' WHERE `locale`='esES' AND `ID`=10854; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Atracador vil inactivo destruido' WHERE `locale`='esES' AND `ID`=10855; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Teletransportador oeste destruido' WHERE `locale`='esES' AND `ID`=10857; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Teletransportador central destruido' WHERE `locale`='esES' AND `ID`=10857; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Teletransportador este destruido' WHERE `locale`='esES' AND `ID`=10857; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe de luz Razaani recogido' WHERE `locale`='esES' AND `ID`=10859; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prole redimida' WHERE `locale`='esES' AND `ID`=10861; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Almas Mano Destrozada obtenidas' WHERE `locale`='esES' AND `ID`=10864; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Karynaku liberado' WHERE `locale`='esES' AND `ID`=10866; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Karynaku liberado' WHERE `locale`='esES' AND `ID`=10872; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guerrero de Sha\'tar liberado' WHERE `locale`='esES' AND `ID`=10873; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuego zafiro extinguido' WHERE `locale`='esES' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Fuego esmeralda extinguido' WHERE `locale`='esES' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Fuego violeta extinguido' WHERE `locale`='esES' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Fuego de sangrita extinguido' WHERE `locale`='esES' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Torre norte marcada' WHERE `locale`='esES' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Torre sur marcada' WHERE `locale`='esES' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Torre de la Forja marcada' WHERE `locale`='esES' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Torre de la ladera marcada' WHERE `locale`='esES' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Portal de distorsión sur destruido' WHERE `locale`='esES' AND `ID`=10911; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Portal de distorsión norte destruido' WHERE `locale`='esES' AND `ID`=10911; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de vindicador Sha\'tar asesinado quemado' WHERE `locale`='esES' AND `ID`=10913; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cadáver de guerrero Auchenai asesinado quemado' WHERE `locale`='esES' AND `ID`=10913; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Contenido del ataúd de Auchenai destruido' WHERE `locale`='esES' AND `ID`=10915; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Coronel Jules salvado' WHERE `locale`='esES' AND `ID`=10935; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ayuda a Clintar a reunir las reliquias' WHERE `locale`='esES' AND `ID`=10965; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aprender sobre el Libro del Cuervo' WHERE `locale`='esES' AND `ID`=10980; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevo de kaliri monstruoso destruido' WHERE `locale`='esES' AND `ID`=11008; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Montones de balas de cañón vil destruidos' WHERE `locale`='esES' AND `ID`=11010; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campamento de peones Faucedraco envenenado' WHERE `locale`='esES' AND `ID`=11020; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Montones de balas de cañón vil destruidos' WHERE `locale`='esES' AND `ID`=11023; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Demonios desterrados' WHERE `locale`='esES' AND `ID`=11026; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Demonios desterrados' WHERE `locale`='esES' AND `ID`=11051; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Peones Faucedraco disciplinados' WHERE `locale`='esES' AND `ID`=11055; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rayas de éter conseguidas' WHERE `locale`='esES' AND `ID`=11065; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rayas de éter conseguidas' WHERE `locale`='esES' AND `ID`=11066; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Comida de raya abisal' WHERE `locale`='esES' AND `ID`=11093; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ogro Gordunni' WHERE `locale`='esES' AND `ID`=11096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Montones de balas de cañón vil destruidos' WHERE `locale`='esES' AND `ID`=11102; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barriles entregados' WHERE `locale`='esES' AND `ID`=11122; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Agitador desertor desenmascarado' WHERE `locale`='esES' AND `ID`=11126; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Panfletos distribuídos' WHERE `locale`='esES' AND `ID`=11133; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gavis Rodelagris capturado' WHERE `locale`='esES' AND `ID`=11134; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneros de Theramore liberados' WHERE `locale`='esES' AND `ID`=11145; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Raptores capturados' WHERE `locale`='esES' AND `ID`=11146; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Raptores liberados' WHERE `locale`='esES' AND `ID`=11147; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tienda del norte quemada' WHERE `locale`='esES' AND `ID`=11150; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tienda del noreste quemada' WHERE `locale`='esES' AND `ID`=11150; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tienda del este quemada' WHERE `locale`='esES' AND `ID`=11150; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Corona colocada en el monumento de los Hyal' WHERE `locale`='esES' AND `ID`=11152; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cañones del bloqueo destruidos' WHERE `locale`='esES' AND `ID`=11153; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tótem Siniestro de Cuernoatroz eliminados' WHERE `locale`='esES' AND `ID`=11156; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus Quebrantarrocas que descansan en paz' WHERE `locale`='esES' AND `ID`=11159; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Clan Quebrantarrocas vengado' WHERE `locale`='esES' AND `ID`=11162; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Examinar la cámara de Halazzi' WHERE `locale`='esES' AND `ID`=11166; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Examinar la plataforma de Jan\'alai' WHERE `locale`='esES' AND `ID`=11166; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Examinar la plataforma de Akil\'zon' WHERE `locale`='esES' AND `ID`=11166; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pruebas de tótems llevadas a cabo' WHERE `locale`='esES' AND `ID`=11169; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mocos disueltos' WHERE `locale`='esES' AND `ID`=11174; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información conseguida' WHERE `locale`='esES' AND `ID`=11180; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Colina de las brujas limpia' WHERE `locale`='esES' AND `ID`=11183; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tienda norte quemada' WHERE `locale`='esES' AND `ID`=11205; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tienda noreste quemada' WHERE `locale`='esES' AND `ID`=11205; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tienda este quemada' WHERE `locale`='esES' AND `ID`=11205; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pasta de pescado probada' WHERE `locale`='esES' AND `ID`=11209; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera del banco' WHERE `locale`='esES' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en la Sala Militar' WHERE `locale`='esES' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en la Sala de Exploradores' WHERE `locale`='esES' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en la Sala Mística' WHERE `locale`='esES' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera del banco' WHERE `locale`='esES' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en la Sala Militar' WHERE `locale`='esES' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en la Sala de Exploradores' WHERE `locale`='esES' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en la Sala Mística' WHERE `locale`='esES' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mantén el trote durante 8 segundos' WHERE `locale`='esES' AND `ID`=11318; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Mantén el medio galope durante 8 segundos' WHERE `locale`='esES' AND `ID`=11318; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Mantén el galope durante 8 segundos' WHERE `locale`='esES' AND `ID`=11318; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esES' AND `ID`=11360; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esES' AND `ID`=11361; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera de la casa de subastas' WHERE `locale`='esES' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en el Valle del Honor' WHERE `locale`='esES' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en el Valle de la Sabiduría' WHERE `locale`='esES' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en el Valle de los Espíritus' WHERE `locale`='esES' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera de la casa de subastas' WHERE `locale`='esES' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en el Valle del Honor' WHERE `locale`='esES' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en el Valle de la Sabiduría' WHERE `locale`='esES' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en el Valle de los Espíritus' WHERE `locale`='esES' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mantén el trote durante 8 segundos' WHERE `locale`='esES' AND `ID`=11409; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Mantén el medio galope durante 8 segundos' WHERE `locale`='esES' AND `ID`=11409; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Mantén el galope durante 8 segundos' WHERE `locale`='esES' AND `ID`=11409; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barriles entregados' WHERE `locale`='esES' AND `ID`=11412; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Casa comunal Desuelladragones destruida' WHERE `locale`='esES' AND `ID`=11421; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Caseta del muelle Desuelladragones destruida' WHERE `locale`='esES' AND `ID`=11421; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Almacén Desuelladragones destruido' WHERE `locale`='esES' AND `ID`=11421; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esES' AND `ID`=11439; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esES' AND `ID`=11440; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esES' AND `ID`=11449; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esES' AND `ID`=11450; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe de visión activado' WHERE `locale`='esES' AND `ID`=11490; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Avizor transformado desplegado' WHERE `locale`='esES' AND `ID`=11524; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Avizor transformado desplegado' WHERE `locale`='esES' AND `ID`=11525; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Emisario del Odio empalado' WHERE `locale`='esES' AND `ID`=11537; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Emisario del Odio empalado' WHERE `locale`='esES' AND `ID`=11538; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavo Branquia Verde liberado' WHERE `locale`='esES' AND `ID`=11541; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Velas Sin\'loren quemadas' WHERE `locale`='esES' AND `ID`=11542; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Velas Juramento de Sangre quemadas' WHERE `locale`='esES' AND `ID`=11542; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Velas Cazador del Albor quemadas' WHERE `locale`='esES' AND `ID`=11542; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Velas Sin\'loren quemadas' WHERE `locale`='esES' AND `ID`=11543; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Velas Juramento de Sangre quemadas' WHERE `locale`='esES' AND `ID`=11543; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Velas Cazador del Albor quemadas' WHERE `locale`='esES' AND `ID`=11543; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de portal tomada' WHERE `locale`='esES' AND `ID`=11547; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lectura del sagrario tomada' WHERE `locale`='esES' AND `ID`=11547; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Lectura del cristal de sangre tomada' WHERE `locale`='esES' AND `ID`=11547; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Renacuajo Aleta Invernal rescatado' WHERE `locale`='esES' AND `ID`=11560; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Múrlocs Aleta Invernal muertos' WHERE `locale`='esES' AND `ID`=11561; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de la Anomalía del Acantilado Agrietado conseguida' WHERE `locale`='esES' AND `ID`=11576; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de la Sima Quebrada conseguida' WHERE `locale`='esES' AND `ID`=11582; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneros Arcanos rescatados' WHERE `locale`='esES' AND `ID`=11587; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hechicero de Berilo capturado' WHERE `locale`='esES' AND `ID`=11590; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardias y trabajadores de caravana muertos quemados' WHERE `locale`='esES' AND `ID`=11593; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus taunka en paz' WHERE `locale`='esES' AND `ID`=11594; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nerub\'ar muertos' WHERE `locale`='esES' AND `ID`=11598; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sacos de huevos Nerub\'ar destruidos' WHERE `locale`='esES' AND `ID`=11602; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ancestro Kesuk identificado' WHERE `locale`='esES' AND `ID`=11605; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ancestro Sagani identificado' WHERE `locale`='esES' AND `ID`=11605; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Ancestro Takret identificado' WHERE `locale`='esES' AND `ID`=11605; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Artesanos de Kashala liberados' WHERE `locale`='esES' AND `ID`=11607; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Chamanes de Kashala liberados' WHERE `locale`='esES' AND `ID`=11607; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sumidero sur de Nerub\'ar destruido' WHERE `locale`='esES' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Sumidero este de Nerub\'ar destruido' WHERE `locale`='esES' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sumidero oeste de Nerub\'ar destruido' WHERE `locale`='esES' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sumidero norte de Nerub\'ar destruido' WHERE `locale`='esES' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ceremonia del ancestro Kesuk completada' WHERE `locale`='esES' AND `ID`=11610; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ceremonia del ancestro Sagani completada' WHERE `locale`='esES' AND `ID`=11610; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Ceremonia del ancestro Takret completada' WHERE `locale`='esES' AND `ID`=11610; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Peón Grito de Guerra liberado' WHERE `locale`='esES' AND `ID`=11611; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Plataforma este destruida' WHERE `locale`='esES' AND `ID`=11617; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Plataforma norte destruida' WHERE `locale`='esES' AND `ID`=11617; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Plataforma oeste destruida' WHERE `locale`='esES' AND `ID`=11617; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cocer se ha rendido' WHERE `locale`='esES' AND `ID`=11627; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Xurn se ha rendido' WHERE `locale`='esES' AND `ID`=11627; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destino del clarividente Caminante Siniestro vaticinado' WHERE `locale`='esES' AND `ID`=11631; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aguja de Putrefacción inspeccionada' WHERE `locale`='esES' AND `ID`=11633; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aguja de Sangre inspeccionada' WHERE `locale`='esES' AND `ID`=11633; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Aguja de Dolor inspeccionada' WHERE `locale`='esES' AND `ID`=11633; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Clarividente Caminante Siniestro liberado' WHERE `locale`='esES' AND `ID`=11637; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera este neutralizada' WHERE `locale`='esES' AND `ID`=11647; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Caldera central neutralizada' WHERE `locale`='esES' AND `ID`=11647; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Caldera oeste neutralizada' WHERE `locale`='esES' AND `ID`=11647; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisionero interrogado' WHERE `locale`='esES' AND `ID`=11648; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Unidad de la Plaga destruida' WHERE `locale`='esES' AND `ID`=11652; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Soldado Grito de Guerra herido rescatado' WHERE `locale`='esES' AND `ID`=11652; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rayo de Ingeniosa puesto a prueba' WHERE `locale`='esES' AND `ID`=11653; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Las Fauces de la Sierpe destruido' WHERE `locale`='esES' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText2`='El Kur Drakkar destruido' WHERE `locale`='esES' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Martillo de Bor destruido' WHERE `locale`='esES' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Yunque de Bor destruido' WHERE `locale`='esES' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Globos de sangre destruidos' WHERE `locale`='esES' AND `ID`=11659; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandarte Grito de Guerra clavado sobre Magmothregar' WHERE `locale`='esES' AND `ID`=11670; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisionero de la Plaga liberado' WHERE `locale`='esES' AND `ID`=11676; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esES' AND `ID`=11677; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Talramas muerto' WHERE `locale`='esES' AND `ID`=11683; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Marcar situación del sumidero sur' WHERE `locale`='esES' AND `ID`=11684; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Marcar situación del sumidero noreste' WHERE `locale`='esES' AND `ID`=11684; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Marcar situación del sumidero noroeste' WHERE `locale`='esES' AND `ID`=11684; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Observar Granero Grito de Guerra' WHERE `locale`='esES' AND `ID`=11686; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Observar Granja de Torp' WHERE `locale`='esES' AND `ID`=11686; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Observar Matadero Grito de Guerra' WHERE `locale`='esES' AND `ID`=11686; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kodos rescatados' WHERE `locale`='esES' AND `ID`=11690; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esES' AND `ID`=11694; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Talramas muerto' WHERE `locale`='esES' AND `ID`=11698; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Túneles nerubianos derrumbados' WHERE `locale`='esES' AND `ID`=11706; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gnomo de Palanqueta maldito y rescatado' WHERE `locale`='esES' AND `ID`=11712; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Marcar situación del sumidero sur' WHERE `locale`='esES' AND `ID`=11713; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Marcar situación del sumidero noreste' WHERE `locale`='esES' AND `ID`=11713; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Marcar situación del sumidero noroeste' WHERE `locale`='esES' AND `ID`=11713; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barriles de aceite recogidos' WHERE `locale`='esES' AND `ID`=11715; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza el Vibro-Motor 5000' WHERE `locale`='esES' AND `ID`=11723; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Robots reprogramados' WHERE `locale`='esES' AND `ID`=11730; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esES' AND `ID`=11731; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cultor en muelles derrotado' WHERE `locale`='esES' AND `ID`=11794; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cultor en la cárcel derrotado' WHERE `locale`='esES' AND `ID`=11794; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Cultor en la cocina derrotado' WHERE `locale`='esES' AND `ID`=11794; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hunde los restos del este' WHERE `locale`='esES' AND `ID`=11796; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Hunde los restos del sur' WHERE `locale`='esES' AND `ID`=11796; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Hunde los restos del noroeste' WHERE `locale`='esES' AND `ID`=11796; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Busca el manual del maestro de palancas' WHERE `locale`='esES' AND `ID`=11798; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trampero de Nesingwary atrapado' WHERE `locale`='esES' AND `ID`=11865; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cría de mamut liberada' WHERE `locale`='esES' AND `ID`=11876; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lecturas multifase obtenidas' WHERE `locale`='esES' AND `ID`=11880; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trae a Jenny a salvo sin perder el cargamento' WHERE `locale`='esES' AND `ID`=11881; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Energía reunida' WHERE `locale`='esES' AND `ID`=11893; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tormenta dominada' WHERE `locale`='esES' AND `ID`=11895; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Robots debilitados y destruidos' WHERE `locale`='esES' AND `ID`=11896; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Explosivos colocados en el sumidero sur' WHERE `locale`='esES' AND `ID`=11897; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Explosivos colocados en el sumidero norte' WHERE `locale`='esES' AND `ID`=11897; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alma de gnomo capturada' WHERE `locale`='esES' AND `ID`=11899; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura geológica de El Nexo' WHERE `locale`='esES' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lectura del sur de Gelidar' WHERE `locale`='esES' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Lectura del norte de Gelidar' WHERE `locale`='esES' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Lectura del oeste de Gelidar' WHERE `locale`='esES' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagoneta de mena liberada' WHERE `locale`='esES' AND `ID`=11904; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Falla interdimensional ralentizada' WHERE `locale`='esES' AND `ID`=11905; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Busca el manual del maestro de palancas' WHERE `locale`='esES' AND `ID`=11909; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grano de Lindeallá quemado' WHERE `locale`='esES' AND `ID`=11913; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Draco de El Nexo capturado' WHERE `locale`='esES' AND `ID`=11919; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esES' AND `ID`=11921; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esES' AND `ID`=11922; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esES' AND `ID`=11926; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de draco destruidos' WHERE `locale`='esES' AND `ID`=11936; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Baja en En\'kilah' WHERE `locale`='esES' AND `ID`=11938; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Draco de El Nexo capturado' WHERE `locale`='esES' AND `ID`=11940; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Embadúrnate con la sangre de Loguhn' WHERE `locale`='esES' AND `ID`=11959; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Toca la campana de Lindeallá' WHERE `locale`='esES' AND `ID`=11965; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Malygos atraído' WHERE `locale`='esES' AND `ID`=11969; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Keristrasza en paz' WHERE `locale`='esES' AND `ID`=11973; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Taunka admitidos en la Horda' WHERE `locale`='esES' AND `ID`=11983; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Vuelo Azul en Jardines Reposo Lunar muertos' WHERE `locale`='esES' AND `ID`=12006; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Los últimos ritos' WHERE `locale`='esES' AND `ID`=12019; +UPDATE `quest_template_locale` SET `ObjectiveText1`='G.U.A.O. golpeada' WHERE `locale`='esES' AND `ID`=12022; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus Indu\'le en paz' WHERE `locale`='esES' AND `ID`=12031; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Recolector de cosecha alterado' WHERE `locale`='esES' AND `ID`=12035; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Arpías Viento Helado' WHERE `locale`='esES' AND `ID`=12051; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Arpías Viento Helado' WHERE `locale`='esES' AND `ID`=12052; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Primera Profecía descifrada' WHERE `locale`='esES' AND `ID`=12058; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Segunda Profecía descifrada' WHERE `locale`='esES' AND `ID`=12058; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tercera Profecía descifrada' WHERE `locale`='esES' AND `ID`=12058; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Objeto de la Aguja de Flujo observado' WHERE `locale`='esES' AND `ID`=12060; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Objeto de la Aguja de Flujo observado' WHERE `locale`='esES' AND `ID`=12061; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley conseguida' WHERE `locale`='esES' AND `ID`=12065; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley conseguida' WHERE `locale`='esES' AND `ID`=12066; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Defensores enanos férreos muertos' WHERE `locale`='esES' AND `ID`=12073; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esES' AND `ID`=12083; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esES' AND `ID`=12084; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuerza devuelta a ancestro Lothalor' WHERE `locale`='esES' AND `ID`=12092; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuerza devuelta a ancestro Lothalor' WHERE `locale`='esES' AND `ID`=12096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esES' AND `ID`=12107; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Observación en Santuario de Dragones Azur' WHERE `locale`='esES' AND `ID`=12107; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esES' AND `ID`=12110; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Observación en Santuario de Dragones Azur' WHERE `locale`='esES' AND `ID`=12110; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alce de avalancha inoculado' WHERE `locale`='esES' AND `ID`=12111; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Pardo ártico inoculado' WHERE `locale`='esES' AND `ID`=12111; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Roanauk Bruma de Hielo iniciado' WHERE `locale`='esES' AND `ID`=12140; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Snóbolds Llano Nevado' WHERE `locale`='esES' AND `ID`=12142; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Magnatauro del Cementerio de Dragones' WHERE `locale`='esES' AND `ID`=12142; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Discípulos Llano Nevado' WHERE `locale`='esES' AND `ID`=12144; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Magnatauros alfa' WHERE `locale`='esES' AND `ID`=12144; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nombre del magnatauro Señor de la Guerra' WHERE `locale`='esES' AND `ID`=12150; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sombra de Arugal derrotada' WHERE `locale`='esES' AND `ID`=12164; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de alce contagiado limpio' WHERE `locale`='esES' AND `ID`=12166; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cadáver de pardo rabioso limpio' WHERE `locale`='esES' AND `ID`=12166; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alianzas en Río Negro eliminados' WHERE `locale`='esES' AND `ID`=12170; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Armonización con las líneas Ley de Rasganorte' WHERE `locale`='esES' AND `ID`=12172; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Armonización con las líneas Ley de Rasganorte' WHERE `locale`='esES' AND `ID`=12173; +UPDATE `quest_template_locale` SET `ObjectiveText1`='G.U.A.O. golpeada' WHERE `locale`='esES' AND `ID`=12191; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nivel de carga' WHERE `locale`='esES' AND `ID`=12198; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Imágenes de enanos férreos tomadas' WHERE `locale`='esES' AND `ID`=12202; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mensaje de Loken recibido' WHERE `locale`='esES' AND `ID`=12203; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hugh Copa interrogado' WHERE `locale`='esES' AND `ID`=12204; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gavrock interrogado' WHERE `locale`='esES' AND `ID`=12204; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de El Embate Escarlata asesinados' WHERE `locale`='esES' AND `ID`=12205; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Frasco de añublo probado' WHERE `locale`='esES' AND `ID`=12206; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáveres de El Embate Escarlata limpiados' WHERE `locale`='esES' AND `ID`=12211; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe utilizado bajo el Corazón de Vordrassil' WHERE `locale`='esES' AND `ID`=12213; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Orbe utilizado bajo la Extremidad de Vordrassil' WHERE `locale`='esES' AND `ID`=12213; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Orbe utilizado bajo las Lágrimas de Vordrassil' WHERE `locale`='esES' AND `ID`=12213; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Riendas de caballo de guerra de El Embate Escarlata entregadas' WHERE `locale`='esES' AND `ID`=12214; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Historia de Orsonn' WHERE `locale`='esES' AND `ID`=12231; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Historia de Kodian' WHERE `locale`='esES' AND `ID`=12231; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Balista de Nueva Vega del Amparo bombardeada' WHERE `locale`='esES' AND `ID`=12232; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ursoc purificado' WHERE `locale`='esES' AND `ID`=12236; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habitante indefenso rescatado' WHERE `locale`='esES' AND `ID`=12237; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Velas del Locura del Pecador en llamas' WHERE `locale`='esES' AND `ID`=12243; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Torturador LeCraft completamente interrogado' WHERE `locale`='esES' AND `ID`=12252; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habitante de Hibergarde atrapado rescatado' WHERE `locale`='esES' AND `ID`=12253; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Imagen de sacerdote cuervo del Embate robada' WHERE `locale`='esES' AND `ID`=12260; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Resguardo destructivo completamente cargado' WHERE `locale`='esES' AND `ID`=12261; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Runa nigromántica destruida' WHERE `locale`='esES' AND `ID`=12265; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Limpiar cámara de invocación' WHERE `locale`='esES' AND `ID`=12267; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trituradora entregada' WHERE `locale`='esES' AND `ID`=12270; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Acusación y muerte del comandante Jordan' WHERE `locale`='esES' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Acusación y muerte del cañonero mayor Zierhut' WHERE `locale`='esES' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Acusación y muerte del herrero Buenhombre' WHERE `locale`='esES' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Acusación y muerte del maestro de establos Mercer' WHERE `locale`='esES' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tocar campana de la abadía' WHERE `locale`='esES' AND `ID`=12274; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Hablar con el sumo abad' WHERE `locale`='esES' AND `ID`=12274; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Eje de Mina Hibergarde alta destruido' WHERE `locale`='esES' AND `ID`=12277; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Eje de Mina Hibergarde baja destruido' WHERE `locale`='esES' AND `ID`=12277; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Unidades de la Alianza eliminadas' WHERE `locale`='esES' AND `ID`=12284; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hostigadores heridos sanados' WHERE `locale`='esES' AND `ID`=12288; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preguntas a un campesino olvidado' WHERE `locale`='esES' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Preguntas a un fusilero olvidado' WHERE `locale`='esES' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Preguntas a un caballero olvidado' WHERE `locale`='esES' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Preguntas a un lacayo olvidado' WHERE `locale`='esES' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fantasmas olvidados asesinados' WHERE `locale`='esES' AND `ID`=12304; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alianza eliminada en Bahía Ventura' WHERE `locale`='esES' AND `ID`=12317; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rezagados de Ventura y Cía. ahuyentados' WHERE `locale`='esES' AND `ID`=12324; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón de peste saboteado' WHERE `locale`='esES' AND `ID`=12326; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Élite de la Séptima Legión bajado a salvo' WHERE `locale`='esES' AND `ID`=12326; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Desestabiliza el Santuario de Dragones Azur' WHERE `locale`='esES' AND `ID`=12372; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caballos mesteños de las Tierras Altas espantados' WHERE `locale`='esES' AND `ID`=12415; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vigilante rubí devuelto a la tierra' WHERE `locale`='esES' AND `ID`=12417; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Erradicar corrupción rubí' WHERE `locale`='esES' AND `ID`=12418; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Envío de madera de la Alianza destruido' WHERE `locale`='esES' AND `ID`=12432; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vigilante rubí devuelto a la tierra' WHERE `locale`='esES' AND `ID`=12449; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Erradicar corrupción rubí' WHERE `locale`='esES' AND `ID`=12450; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vista de águila imperial unida' WHERE `locale`='esES' AND `ID`=12453; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldado de la Séptima Legión herido salvado' WHERE `locale`='esES' AND `ID`=12457; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Miembro de la Plaga de Naxxramas matado' WHERE `locale`='esES' AND `ID`=12462; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de El Embate Escarlata muerto' WHERE `locale`='esES' AND `ID`=12476; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Secretos del pasado revelados' WHERE `locale`='esES' AND `ID`=12478; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esES' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esES' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esES' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esES' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandarte de la Cruzada Argenta sur' WHERE `locale`='esES' AND `ID`=12502; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Estandarte de la Cruzada Argenta norte' WHERE `locale`='esES' AND `ID`=12502; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Estandarte de la Cruzada Argenta este' WHERE `locale`='esES' AND `ID`=12502; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Plaga en El Confín Argenta destruida' WHERE `locale`='esES' AND `ID`=12503; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldados Argenta enviados a ver al sargento' WHERE `locale`='esES' AND `ID`=12504; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Seguidores de Sseratus muertos' WHERE `locale`='esES' AND `ID`=12508; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Valor de los reclutas recuperado' WHERE `locale`='esES' AND `ID`=12509; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado Jonathan salvado' WHERE `locale`='esES' AND `ID`=12512; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cruzado Lamoof salvado' WHERE `locale`='esES' AND `ID`=12512; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Cruzada Josephine salvada' WHERE `locale`='esES' AND `ID`=12512; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de Ventura y Cía. asesinados' WHERE `locale`='esES' AND `ID`=12524; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górloc Susurraneblina' WHERE `locale`='esES' AND `ID`=12538; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Oráculo Hablalluvia herido encontrado' WHERE `locale`='esES' AND `ID`=12540; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Suero de la verdad creado' WHERE `locale`='esES' AND `ID`=12541; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ubicación de Farunn descubierta' WHERE `locale`='esES' AND `ID`=12544; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga en Jintha\'kalar matado' WHERE `locale`='esES' AND `ID`=12545; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esbirros de la Plaga destruidos' WHERE `locale`='esES' AND `ID`=12546; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huella de Shango identificada' WHERE `locale`='esES' AND `ID`=12550; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pulverizadores de peste atrapados con red y destruidos' WHERE `locale`='esES' AND `ID`=12555; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gusano de fango encontrado' WHERE `locale`='esES' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ala de murciélago mustia encontrada' WHERE `locale`='esES' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grano ámbar encontrado' WHERE `locale`='esES' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Moco de serpiente frío encontrado' WHERE `locale`='esES' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Interruptor de activación Gamma' WHERE `locale`='esES' AND `ID`=12559; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esES' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esES' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esES' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esES' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de lacayo Argenta incinerado' WHERE `locale`='esES' AND `ID`=12568; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Víctimas Caminamoho rescatadas' WHERE `locale`='esES' AND `ID`=12580; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esES' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esES' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esES' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esES' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Túmulos antiguos investigados' WHERE `locale`='esES' AND `ID`=12588; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alcanzada la manzana en la cabeza de Suertudo Wilhelm' WHERE `locale`='esES' AND `ID`=12589; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Túneles nerubianos hundidos' WHERE `locale`='esES' AND `ID`=12591; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Animales de caza muertos' WHERE `locale`='esES' AND `ID`=12592; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Arrasadores musgosos muertos' WHERE `locale`='esES' AND `ID`=12594; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esES' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esES' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esES' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esES' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Túneles nerubianos hundidos' WHERE `locale`='esES' AND `ID`=12598; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Suero de la verdad creado' WHERE `locale`='esES' AND `ID`=12601; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Suero de la verdad creado' WHERE `locale`='esES' AND `ID`=12602; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lacayos cautivos liberados' WHERE `locale`='esES' AND `ID`=12606; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mamut Partecolmillos entregado' WHERE `locale`='esES' AND `ID`=12607; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Interruptor de activación Theta activado' WHERE `locale`='esES' AND `ID`=12613; +UPDATE `quest_template_locale` SET `ObjectiveText1`='La cólera de la guardiana de vida' WHERE `locale`='esES' AND `ID`=12620; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El pacto de Freya' WHERE `locale`='esES' AND `ID`=12621; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera azul estropeada' WHERE `locale`='esES' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Caldera verde estropeada' WHERE `locale`='esES' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Caldera púrpura estropeada' WHERE `locale`='esES' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Caldera roja estropeada' WHERE `locale`='esES' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras de pelo recogidas' WHERE `locale`='esES' AND `ID`=12630; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Descendiente de Har\'koa maldito resucitado' WHERE `locale`='esES' AND `ID`=12632; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El propósito de la gargantilla al descubierto' WHERE `locale`='esES' AND `ID`=12637; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El propósito de la gargantilla al descubierto' WHERE `locale`='esES' AND `ID`=12638; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fallas elementales selladas' WHERE `locale`='esES' AND `ID`=12640; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cata de Hemet' WHERE `locale`='esES' AND `ID`=12645; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cata de Hadrius' WHERE `locale`='esES' AND `ID`=12645; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Cata de Tamara' WHERE `locale`='esES' AND `ID`=12645; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos putrefactos alimentados' WHERE `locale`='esES' AND `ID`=12652; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cabellera de trols de Heb\'Drakkar cortada' WHERE `locale`='esES' AND `ID`=12659; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Explosivos inestables destruidos' WHERE `locale`='esES' AND `ID`=12660; +UPDATE `quest_template_locale` SET `ObjectiveText1`='La tarea del Señor Supremo Drakuru completada' WHERE `locale`='esES' AND `ID`=12661; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vuelta por Zul\'Drak completada' WHERE `locale`='esES' AND `ID`=12663; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vuelta por Zul\'Drak completada' WHERE `locale`='esES' AND `ID`=12664; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trols asesinados cerca de la fuente de almas' WHERE `locale`='esES' AND `ID`=12668; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tarea de Drakuru completada' WHERE `locale`='esES' AND `ID`=12669; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aditivo diluido en calderas de añublo' WHERE `locale`='esES' AND `ID`=12669; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cristales de añublo recogidos' WHERE `locale`='esES' AND `ID`=12673; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Maleficio mortal echado al sumo sacerdote Mu\'funu' WHERE `locale`='esES' AND `ID`=12674; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Maleficio mortal echado a la suma sacerdotisa Tua-Tua' WHERE `locale`='esES' AND `ID`=12674; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Maleficio mortal echado al sumo sacerdote Hawinni' WHERE `locale`='esES' AND `ID`=12674; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carros de la Plaga destruidos' WHERE `locale`='esES' AND `ID`=12676; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tarea de Drakuru completada' WHERE `locale`='esES' AND `ID`=12676; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Desvelar el secreto de Drakuru' WHERE `locale`='esES' AND `ID`=12676; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tarea de Drakuru completada' WHERE `locale`='esES' AND `ID`=12677; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras de esputo recogidas' WHERE `locale`='esES' AND `ID`=12683; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Darmuk muerto' WHERE `locale`='esES' AND `ID`=12686; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trituracráneos Drakkari asesinados' WHERE `locale`='esES' AND `ID`=12690; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cabecilla Drakkari capturado' WHERE `locale`='esES' AND `ID`=12690; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górlocs Pavesa muertos' WHERE `locale`='esES' AND `ID`=12703; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacantes Corazón Frenético muertos' WHERE `locale`='esES' AND `ID`=12705; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Discípulos de Mam\'toth muertos aplastados' WHERE `locale`='esES' AND `ID`=12707; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guerreros Tiki encantados exterminados' WHERE `locale`='esES' AND `ID`=12708; +UPDATE `quest_template_locale` SET `ObjectiveText1`='La cámara superior de Drakuru explorada' WHERE `locale`='esES' AND `ID`=12710; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Señor Supremo Drakuru derrotado' WHERE `locale`='esES' AND `ID`=12713; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu acuoso devorado' WHERE `locale`='esES' AND `ID`=12726; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aparecido tormentoso devorado' WHERE `locale`='esES' AND `ID`=12726; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de las Cavernas Aletas Invernal tomada' WHERE `locale`='esES' AND `ID`=12728; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hoja manchada de sangre con una avispa del Enjambre Zafiro' WHERE `locale`='esES' AND `ID`=12734; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Hoja manchada de sangre con un destrero Callonudillo' WHERE `locale`='esES' AND `ID`=12734; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Hoja manchada de sangre con miembros Susurraneblina' WHERE `locale`='esES' AND `ID`=12734; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Meditación en El Pilar Iluminado' WHERE `locale`='esES' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Meditación en El Pilar Musgoluz' WHERE `locale`='esES' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Meditación en El Pilar del Trecho Celestial' WHERE `locale`='esES' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Meditación en El Pilar Toquesol' WHERE `locale`='esES' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Canción de la fecundidad tocada' WHERE `locale`='esES' AND `ID`=12737; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuerzas Argenta equipadas con un paracaídas' WHERE `locale`='esES' AND `ID`=12740; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górloc Pavesa' WHERE `locale`='esES' AND `ID`=12759; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górloc Pavesa' WHERE `locale`='esES' AND `ID`=12760; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacante Corazón Frenético' WHERE `locale`='esES' AND `ID`=12761; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacante Corazón Frenético' WHERE `locale`='esES' AND `ID`=12762; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Energía de sangrevida recuperada' WHERE `locale`='esES' AND `ID`=12805; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sangre recogida de fauces voraces' WHERE `locale`='esES' AND `ID`=12810; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de El Embate Escarlata transformado' WHERE `locale`='esES' AND `ID`=12813; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grifo del Embate entregado a Uzo Clamamuerte' WHERE `locale`='esES' AND `ID`=12814; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Agresores de Garm muertos' WHERE `locale`='esES' AND `ID`=12820; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Colocar fardo explosivo' WHERE `locale`='esES' AND `ID`=12823; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Arañas Red de Cristal muertas' WHERE `locale`='esES' AND `ID`=12829; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Invasor de Garm muerto' WHERE `locale`='esES' AND `ID`=12833; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Capitán Welsington interrogado a golpes y muerto' WHERE `locale`='esES' AND `ID`=12840; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Capitana Hartford interrogada a golpes y muerta' WHERE `locale`='esES' AND `ID`=12840; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisionero goblin liberado' WHERE `locale`='esES' AND `ID`=12843; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Puerta de Arete invocada' WHERE `locale`='esES' AND `ID`=12847; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huargos de escarcha quemados' WHERE `locale`='esES' AND `ID`=12851; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gigantes de escarcha quemados' WHERE `locale`='esES' AND `ID`=12851; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gran almirante Viento Oeste derrotado' WHERE `locale`='esES' AND `ID`=12852; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rastrear al ladrón' WHERE `locale`='esES' AND `ID`=12855; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneras Brunnhildar rescatadas' WHERE `locale`='esES' AND `ID`=12856; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Protodracos liberados' WHERE `locale`='esES' AND `ID`=12856; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuego de cabaña apagado' WHERE `locale`='esES' AND `ID`=12859; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Datos ocultos reunidos' WHERE `locale`='esES' AND `ID`=12860; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Garrafuria capturado liberado' WHERE `locale`='esES' AND `ID`=12861; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Águilas de Crestormenta alimentadas' WHERE `locale`='esES' AND `ID`=12865; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Invasores Tronaforjado muertos' WHERE `locale`='esES' AND `ID`=12876; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Jinete de dracos de El Encuentro Hyldnir derrotada' WHERE `locale`='esES' AND `ID`=12886; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El Ocular ha sido destruido' WHERE `locale`='esES' AND `ID`=12887; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El Ocular ha sido destruido' WHERE `locale`='esES' AND `ID`=12892; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vil transformado' WHERE `locale`='esES' AND `ID`=12893; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lady Bosqueténebro transformada' WHERE `locale`='esES' AND `ID`=12893; +UPDATE `quest_template_locale` SET `ObjectiveText3`='El Saltador transformado' WHERE `locale`='esES' AND `ID`=12893; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado Dargath encontrado' WHERE `locale`='esES' AND `ID`=12903; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gerk encontrado' WHERE `locale`='esES' AND `ID`=12903; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Burr encontrado' WHERE `locale`='esES' AND `ID`=12903; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vargul muerto' WHERE `locale`='esES' AND `ID`=12904; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul exhausto disciplinado' WHERE `locale`='esES' AND `ID`=12906; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sigue el olor hasta su fuente' WHERE `locale`='esES' AND `ID`=12910; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Funciona' WHERE `locale`='esES' AND `ID`=12911; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fjorn asesinado' WHERE `locale`='esES' AND `ID`=12915; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gigantes de hierro Tronaforjado asesinados' WHERE `locale`='esES' AND `ID`=12915; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Recinto de la Plaga reventado' WHERE `locale`='esES' AND `ID`=12916; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ser de la Plaga muerto' WHERE `locale`='esES' AND `ID`=12919; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con Brann' WHERE `locale`='esES' AND `ID`=12920; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Yunque de Fjorn llevado a Dun Niffelem' WHERE `locale`='esES' AND `ID`=12924; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Datos ocultos reunidos' WHERE `locale`='esES' AND `ID`=12927; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacante Tronaforjado eliminado' WHERE `locale`='esES' AND `ID`=12931; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Defensores terráneos caídos sanados' WHERE `locale`='esES' AND `ID`=12937; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Combatientes Mjordin desafiados y derrotados' WHERE `locale`='esES' AND `ID`=12939; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuegos iniciados' WHERE `locale`='esES' AND `ID`=12953; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sigrid Hielonato derrotada' WHERE `locale`='esES' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Efrem el Leal derrotado' WHERE `locale`='esES' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Onu\'zun derrotado' WHERE `locale`='esES' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Mañosa Silbatin derrotada' WHERE `locale`='esES' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Intento de liberar a mecagnomo cautivo' WHERE `locale`='esES' AND `ID`=12957; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Furia de Loken destruida' WHERE `locale`='esES' AND `ID`=12965; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Poder de Loken destruido' WHERE `locale`='esES' AND `ID`=12965; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Favor de Loken destruido' WHERE `locale`='esES' AND `ID`=12965; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aparecidos hirvientes eliminados' WHERE `locale`='esES' AND `ID`=12967; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escucha la propuesta de Lok\'lira' WHERE `locale`='esES' AND `ID`=12970; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Antepasado de Niffelem liberado' WHERE `locale`='esES' AND `ID`=12977; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Natoescarcha inquieto liberado' WHERE `locale`='esES' AND `ID`=12977; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nidavelir Tronaforjado eliminado' WHERE `locale`='esES' AND `ID`=12978; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Placa de armadura investigada' WHERE `locale`='esES' AND `ID`=12980; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneros de la Espada de Ébano liberados' WHERE `locale`='esES' AND `ID`=12982; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Matriarca faucehielo rescatada' WHERE `locale`='esES' AND `ID`=12983; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Templo de la Invención examinado' WHERE `locale`='esES' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Templo del Invierno examinado' WHERE `locale`='esES' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Templo de la vida examinado' WHERE `locale`='esES' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Templo del Orden examinado' WHERE `locale`='esES' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Yelmo de Hodir montado' WHERE `locale`='esES' AND `ID`=12987; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Forja de relámpagos norte dañada' WHERE `locale`='esES' AND `ID`=12988; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Forja de relámpagos central dañada' WHERE `locale`='esES' AND `ID`=12988; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Forja de relámpagos sur dañada' WHERE `locale`='esES' AND `ID`=12988; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul de Jotunheim eliminado' WHERE `locale`='esES' AND `ID`=12992; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Infiltrados Tronaforjado eliminados' WHERE `locale`='esES' AND `ID`=12994; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandarte de la Espada de Ébano situado cerca de cadáver vrykul' WHERE `locale`='esES' AND `ID`=12995; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kirgaraak derrotado' WHERE `locale`='esES' AND `ID`=12996; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Intenta proteger el Corazón de la Tormenta' WHERE `locale`='esES' AND `ID`=12998; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vermis salvaje muerta' WHERE `locale`='esES' AND `ID`=13003; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Centinela férreo asesinado' WHERE `locale`='esES' AND `ID`=13005; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Atacante enano férreo asesinado' WHERE `locale`='esES' AND `ID`=13005; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado enredado liberado' WHERE `locale`='esES' AND `ID`=13008; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destino de Krolmir descubierto' WHERE `locale`='esES' AND `ID`=13010; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lee el primer pergamino de Historia' WHERE `locale`='esES' AND `ID`=13034; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lee el segundo pergamino de Historia' WHERE `locale`='esES' AND `ID`=13034; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lee el tercer pergamino de historia' WHERE `locale`='esES' AND `ID`=13034; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pregúntale al cabecilla Lanza Presta sobre sus recuerdos' WHERE `locale`='esES' AND `ID`=13037; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fallas de Témpano Gélido cerradas' WHERE `locale`='esES' AND `ID`=13038; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nerubianos de las Profundidades Olvidadas destruidos' WHERE `locale`='esES' AND `ID`=13039; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información sacada a golpes del aprendiz Osterkilgr' WHERE `locale`='esES' AND `ID`=13042; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado capturado rescatado' WHERE `locale`='esES' AND `ID`=13045; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de Arngrim alimentado' WHERE `locale`='esES' AND `ID`=13046; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Martillo de conocimiento armonizado a la era de Pezuña Tomentosa' WHERE `locale`='esES' AND `ID`=13048; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Veranus atraída' WHERE `locale`='esES' AND `ID`=13051; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Línea temporal verdadera restaurada' WHERE `locale`='esES' AND `ID`=13058; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Desafío solicitado usando la espada de Bethod' WHERE `locale`='esES' AND `ID`=13059; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escuchada la historia de Thorim' WHERE `locale`='esES' AND `ID`=13064; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Protodracos de Jotunheim y jinetes derribados' WHERE `locale`='esES' AND `ID`=13069; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Edificios vrykul incendiados' WHERE `locale`='esES' AND `ID`=13071; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandartes vrykul quemados' WHERE `locale`='esES' AND `ID`=13084; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacantes de la Plaga eliminados' WHERE `locale`='esES' AND `ID`=13086; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykuls Jotunheim eliminados mientras posees a un terror de agua' WHERE `locale`='esES' AND `ID`=13091; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gal\'darah asesinado' WHERE `locale`='esES' AND `ID`=13096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Volkhan derrotado' WHERE `locale`='esES' AND `ID`=13109; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus inquietos liberados' WHERE `locale`='esES' AND `ID`=13110; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Altar de Invocación investigado' WHERE `locale`='esES' AND `ID`=13117; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Primer altar de Invocación destruido' WHERE `locale`='esES' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Segundo altar de Invocación destruido' WHERE `locale`='esES' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tercer altar de Invocación destruido' WHERE `locale`='esES' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Cuarto altar de Invocación destruido' WHERE `locale`='esES' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe colocado en el laboratorio de abominaciones' WHERE `locale`='esES' AND `ID`=13120; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Orbe colocado en el laboratorio de gigantes de carne' WHERE `locale`='esES' AND `ID`=13120; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Orbe colocado en la zona de la caldera' WHERE `locale`='esES' AND `ID`=13120; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información para la Bruja Osaria conseguida' WHERE `locale`='esES' AND `ID`=13121; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ensamblajes de centrifugadoras destruidos' WHERE `locale`='esES' AND `ID`=13126; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Varos Zancanubes derrotado' WHERE `locale`='esES' AND `ID`=13126; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Señor de la Magia Urom derrotado' WHERE `locale`='esES' AND `ID`=13127; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardián-Ley Eregos derrotado' WHERE `locale`='esES' AND `ID`=13128; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rey Ymiron asesinado' WHERE `locale`='esES' AND `ID`=13132; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Iskalder llevado a la Bruja Osaria' WHERE `locale`='esES' AND `ID`=13133; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbes de sangre rotos' WHERE `locale`='esES' AND `ID`=13134; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tanques de líquido de embalsamar destruidos' WHERE `locale`='esES' AND `ID`=13134; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Iskalder derrotado en combate' WHERE `locale`='esES' AND `ID`=13137; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Acechador ágil subyugado devuelto' WHERE `locale`='esES' AND `ID`=13143; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Abominaciones encadenadas quemadas' WHERE `locale`='esES' AND `ID`=13144; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Altar de sacrificio inspeccionado' WHERE `locale`='esES' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Forja de sangre inspeccionada' WHERE `locale`='esES' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Oteador de hielo inspeccionado' WHERE `locale`='esES' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Runas inspeccionadas' WHERE `locale`='esES' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Bombas de la Plaga entregadas' WHERE `locale`='esES' AND `ID`=13146; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pelea entre obreros iniciada' WHERE `locale`='esES' AND `ID`=13147; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cajas de grano apestado disipadas' WHERE `locale`='esES' AND `ID`=13149; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mal\'Ganis derrotado' WHERE `locale`='esES' AND `ID`=13151; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Parches liberado' WHERE `locale`='esES' AND `ID`=13152; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ayudar a Parches a matar al doctor Sabnok' WHERE `locale`='esES' AND `ID`=13152; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cianigosa asesinada' WHERE `locale`='esES' AND `ID`=13159; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Centinelas Piel de Hielo aniquilados' WHERE `locale`='esES' AND `ID`=13160; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Miembro de la Plaga asesinado' WHERE `locale`='esES' AND `ID`=13166; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Canes de peste hambrientos alimentados' WHERE `locale`='esES' AND `ID`=13169; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Oteadores inquietos asesinados' WHERE `locale`='esES' AND `ID`=13170; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cristales de la Plaga desterrados' WHERE `locale`='esES' AND `ID`=13171; +UPDATE `quest_template_locale` SET `ObjectiveText1`='No-muerto de la Cantera Llorosa masacrado' WHERE `locale`='esES' AND `ID`=13172; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Horda asesinados' WHERE `locale`='esES' AND `ID`=13177; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Alianza asesinados' WHERE `locale`='esES' AND `ID`=13178; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Horda asesinados' WHERE `locale`='esES' AND `ID`=13179; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Alianza asesinados' WHERE `locale`='esES' AND `ID`=13180; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de la Plaga nerubianos destruidos' WHERE `locale`='esES' AND `ID`=13182; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aparatos de asedio de la Alianza destruidos' WHERE `locale`='esES' AND `ID`=13185; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aparatos de asedio de la Horda destruidos' WHERE `locale`='esES' AND `ID`=13186; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Los Olvidados aniquilados' WHERE `locale`='esES' AND `ID`=13187; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Heraldo Volazj derrotado' WHERE `locale`='esES' AND `ID`=13187; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de vigía Ahn\'kahar quemado' WHERE `locale`='esES' AND `ID`=13190; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Exploración de Brann completada' WHERE `locale`='esES' AND `ID`=13207; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver purulento quemado' WHERE `locale`='esES' AND `ID`=13211; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado Olakini Sainrith resucitado' WHERE `locale`='esES' AND `ID`=13220; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vehículo de asedio defendido' WHERE `locale`='esES' AND `ID`=13222; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vehículo de asedio de la Horda defendido' WHERE `locale`='esES' AND `ID`=13223; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rabioso moribundo interrogado' WHERE `locale`='esES' AND `ID`=13228; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldado de la Alianza moribundo asesinado' WHERE `locale`='esES' AND `ID`=13230; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldado moribundo interrogado' WHERE `locale`='esES' AND `ID`=13231; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldados moribundos asesinados' WHERE `locale`='esES' AND `ID`=13232; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esbirro necrófago alzado' WHERE `locale`='esES' AND `ID`=13236; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Abominaciones descomunales asesinadas' WHERE `locale`='esES' AND `ID`=13237; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Nigromantes malévolos asesinados' WHERE `locale`='esES' AND `ID`=13237; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Adepto de sombra asesinado' WHERE `locale`='esES' AND `ID`=13237; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prueba del campo completada' WHERE `locale`='esES' AND `ID`=13239; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ensayo de campo realizado' WHERE `locale`='esES' AND `ID`=13261; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esES' AND `ID`=13264; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esES' AND `ID`=13264; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esES' AND `ID`=13264; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esES' AND `ID`=13276; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esES' AND `ID`=13276; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esES' AND `ID`=13276; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Coprous el Profanado derrotado' WHERE `locale`='esES' AND `ID`=13278; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esES' AND `ID`=13279; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Confalón de batalla de la Alianza plantado' WHERE `locale`='esES' AND `ID`=13280; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esES' AND `ID`=13281; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Confalón de batalla de la Horda plantado' WHERE `locale`='esES' AND `ID`=13283; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tropas de la Alianza escoltadas hasta Ymirheim' WHERE `locale`='esES' AND `ID`=13284; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ayuda a Brann a crear la piedra angular' WHERE `locale`='esES' AND `ID`=13285; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Abominaciones descomunales asesinadas' WHERE `locale`='esES' AND `ID`=13287; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Nigromantes malévolos asesinados' WHERE `locale`='esES' AND `ID`=13287; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Adepto de sombra asesinado' WHERE `locale`='esES' AND `ID`=13287; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esES' AND `ID`=13288; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esES' AND `ID`=13288; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esES' AND `ID`=13288; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esES' AND `ID`=13289; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esES' AND `ID`=13289; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esES' AND `ID`=13289; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pruebas de campo realizadas' WHERE `locale`='esES' AND `ID`=13291; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Garfacielo Razaescarcha matado' WHERE `locale`='esES' AND `ID`=13292; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pila de peste neutralizada' WHERE `locale`='esES' AND `ID`=13295; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esES' AND `ID`=13297; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Coprous el Profanado derrotado' WHERE `locale`='esES' AND `ID`=13298; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Completar logro: Maestro cultural de Rasganorte' WHERE `locale`='esES' AND `ID`=13299; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavo de las minas de saronita rescatado' WHERE `locale`='esES' AND `ID`=13300; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tropas de la Horda escoltadas hasta Ymirheim' WHERE `locale`='esES' AND `ID`=13301; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavo de las minas de saronita rescatado' WHERE `locale`='esES' AND `ID`=13302; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Completar logro: Maestro cultural de Rasganorte' WHERE `locale`='esES' AND `ID`=13303; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barricadas construidas' WHERE `locale`='esES' AND `ID`=13306; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Infiltrados de El Rompecielos ayudados' WHERE `locale`='esES' AND `ID`=13309; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Infiltrados Kor\'kron ayudados' WHERE `locale`='esES' AND `ID`=13310; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aviones de caza de El Rompecielos derribados' WHERE `locale`='esES' AND `ID`=13313; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aldur\'thar sur visitado' WHERE `locale`='esES' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aldur\'thar central visitado' WHERE `locale`='esES' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Aldur\'thar norte visitado' WHERE `locale`='esES' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Aldur\'thar noroeste visitado' WHERE `locale`='esES' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esES' AND `ID`=13318; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sobrestante Faedris asesinado' WHERE `locale`='esES' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Sobrestante Jhaeqon asesinado' WHERE `locale`='esES' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sobrestante Veraj asesinado' WHERE `locale`='esES' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sobrestante Savryn asesinado' WHERE `locale`='esES' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestra azul recogida' WHERE `locale`='esES' AND `ID`=13320; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Muestra verde recogida' WHERE `locale`='esES' AND `ID`=13320; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Muestra negra recogida' WHERE `locale`='esES' AND `ID`=13320; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esES' AND `ID`=13321; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esES' AND `ID`=13322; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esES' AND `ID`=13323; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huesos de atracadores esqueléticos disueltos' WHERE `locale`='esES' AND `ID`=13329; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul de Ymirheim asesinados' WHERE `locale`='esES' AND `ID`=13330; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aviones de caza de El Rompecielos derribados' WHERE `locale`='esES' AND `ID`=13331; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barricadas construidas' WHERE `locale`='esES' AND `ID`=13332; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huesos de atracadores esqueléticos disueltos' WHERE `locale`='esES' AND `ID`=13335; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul de Ymirheim asesinados ' WHERE `locale`='esES' AND `ID`=13336; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido derrotado' WHERE `locale`='esES' AND `ID`=13346; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido asesinado' WHERE `locale`='esES' AND `ID`=13350; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aldur\'thar sur visitado' WHERE `locale`='esES' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aldur\'thar central visitado' WHERE `locale`='esES' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Aldur\'thar norte visitado' WHERE `locale`='esES' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Aldur\'thar noroeste visitado' WHERE `locale`='esES' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esES' AND `ID`=13352; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esES' AND `ID`=13353; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sobrestante Faedris asesinado' WHERE `locale`='esES' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Sobrestante Jhaeqon asesinado' WHERE `locale`='esES' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sobrestante Veraj asesinado' WHERE `locale`='esES' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sobrestante Savryn asesinado' WHERE `locale`='esES' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestra azul recogida' WHERE `locale`='esES' AND `ID`=13355; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Muestra verde recogida' WHERE `locale`='esES' AND `ID`=13355; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Muestra negra recogida' WHERE `locale`='esES' AND `ID`=13355; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esES' AND `ID`=13356; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esES' AND `ID`=13357; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El destino del príncipe' WHERE `locale`='esES' AND `ID`=13361; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gambito de Tirion' WHERE `locale`='esES' AND `ID`=13364; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido derrotado' WHERE `locale`='esES' AND `ID`=13367; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido derrotado' WHERE `locale`='esES' AND `ID`=13368; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esbirro necrófago alzado' WHERE `locale`='esES' AND `ID`=13395; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El destino del príncipe' WHERE `locale`='esES' AND `ID`=13400; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gambito de Tirion' WHERE `locale`='esES' AND `ID`=13403; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Élites Juraescama asesinados' WHERE `locale`='esES' AND `ID`=13414; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykuls exhaustos disciplinados' WHERE `locale`='esES' AND `ID`=13422; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huye de Arroyoplata' WHERE `locale`='esES' AND `ID`=13524; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destruye una de las tres torres sur' WHERE `locale`='esES' AND `ID`=13538; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destruye una torre sur en Conquista del Invierno' WHERE `locale`='esES' AND `ID`=13539; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Leopardos de escarcha hembra recuperadas' WHERE `locale`='esES' AND `ID`=13549; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Osas Patahielo recuperadas' WHERE `locale`='esES' AND `ID`=13549; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Usar Estocada sobre objetivos cuerpo a cuerpo' WHERE `locale`='esES' AND `ID`=13625; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Usar Romper escudo sobre objetivos a distancia vulnerables' WHERE `locale`='esES' AND `ID`=13625; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Usar Cargar sobre objetivos de carga vulnerables' WHERE `locale`='esES' AND `ID`=13625; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muerte de Sir Wendell Balfour investigada' WHERE `locale`='esES' AND `ID`=13643; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Muerte de Lorien Resplandor investigada' WHERE `locale`='esES' AND `ID`=13643; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Muerte de Conall Empuñadura de Hierro investigada' WHERE `locale`='esES' AND `ID`=13643; +UPDATE `quest_template_locale` SET `ObjectiveText1`='G.U.A.O. golpeada' WHERE `locale`='esES' AND `ID`=13649; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grifo del Caballero Negro controlado' WHERE `locale`='esES' AND `ID`=13663; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Corona de Hielo muerto' WHERE `locale`='esES' AND `ID`=13671; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Corona de Hielo muerto' WHERE `locale`='esES' AND `ID`=13676; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Usar Estocada sobre objetivos cuerpo a cuerpo' WHERE `locale`='esES' AND `ID`=13677; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Usar Romper escudo sobre objetivos a distancia vulnerables' WHERE `locale`='esES' AND `ID`=13677; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Usar Cargar sobre objetivos de carga vulnerables' WHERE `locale`='esES' AND `ID`=13677; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Valeroso Argenta derrotado' WHERE `locale`='esES' AND `ID`=13679; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Valeroso Argenta derrotado' WHERE `locale`='esES' AND `ID`=13680; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13699; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Decidió convertirse en Escudero de Ventormenta.' WHERE `locale`='esES' AND `ID`=13710; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13713; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13723; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13724; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13725; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13726; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13727; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13728; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13729; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esES' AND `ID`=13731; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esES' AND `ID`=13789; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esES' AND `ID`=13791; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esES' AND `ID`=13810; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esES' AND `ID`=13813; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Jeran Cierramadera' WHERE `locale`='esES' AND `ID`=13828; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Estocada contra el objetivo cuerpo a cuerpo' WHERE `locale`='esES' AND `ID`=13828; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Jeran Cierramadera' WHERE `locale`='esES' AND `ID`=13829; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Estocada contra el objetivo cuerpo a cuerpo' WHERE `locale`='esES' AND `ID`=13829; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Valis Cazavientos' WHERE `locale`='esES' AND `ID`=13835; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Romper escudo contra un objetivo a distancia vulnerable' WHERE `locale`='esES' AND `ID`=13835; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Rugan Tripacero' WHERE `locale`='esES' AND `ID`=13837; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Carga contra un objetivo de carga vulnerable' WHERE `locale`='esES' AND `ID`=13837; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Valis Cazavientos' WHERE `locale`='esES' AND `ID`=13838; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Romper escudo contra un objetivo a distancia vulnerable' WHERE `locale`='esES' AND `ID`=13838; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Rugan Tripacero' WHERE `locale`='esES' AND `ID`=13839; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Carga contra un objetivo de carga vulnerable' WHERE `locale`='esES' AND `ID`=13839; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Salpicaduras de pellejo venenoso sobre ti' WHERE `locale`='esES' AND `ID`=13850; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de dinosaurio fresca entregada a prole de pellejo venenoso' WHERE `locale`='esES' AND `ID`=13889; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de silítido dada de comer a prole de pellejo venenoso' WHERE `locale`='esES' AND `ID`=13903; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de silítido entregados a prole de pellejo venenoso' WHERE `locale`='esES' AND `ID`=13904; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de dinosaurio fresca entregada a prole de pellejo venenoso' WHERE `locale`='esES' AND `ID`=13915; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de silítido entregados a prole de pellejo venenoso' WHERE `locale`='esES' AND `ID`=13916; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de silítido dada de comer a prole de pellejo venenoso' WHERE `locale`='esES' AND `ID`=13917; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con la supervisora de huérfanos Aria' WHERE `locale`='esES' AND `ID`=13926; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con la supervisora de huérfanos Aria' WHERE `locale`='esES' AND `ID`=13927; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tira un zepelín de papel pequeño a Roo' WHERE `locale`='esES' AND `ID`=13937; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tira un zepelín de papel pequeño a Kekek' WHERE `locale`='esES' AND `ID`=13938; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar relleno de pan de especias' WHERE `locale`='esES' AND `ID`=14023; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar tarta de calabaza' WHERE `locale`='esES' AND `ID`=14024; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara chatni de arándanos' WHERE `locale`='esES' AND `ID`=14028; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara batata confitada' WHERE `locale`='esES' AND `ID`=14033; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar pavo a fuego lento' WHERE `locale`='esES' AND `ID`=14035; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar relleno de pan de especias' WHERE `locale`='esES' AND `ID`=14037; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar tarta de calabaza' WHERE `locale`='esES' AND `ID`=14040; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara chatni de arándanos' WHERE `locale`='esES' AND `ID`=14041; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara batata confitada' WHERE `locale`='esES' AND `ID`=14043; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar pavo a fuego lento' WHERE `locale`='esES' AND `ID`=14047; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de compartir' WHERE `locale`='esES' AND `ID`=14064; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de compartir' WHERE `locale`='esES' AND `ID`=14065; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Extremaunción administrada' WHERE `locale`='esES' AND `ID`=14077; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kvaldir asesinados' WHERE `locale`='esES' AND `ID`=14080; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Seguidor Veloneve capturado' WHERE `locale`='esES' AND `ID`=14090; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kul el Temerario rescatado' WHERE `locale`='esES' AND `ID`=14096; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aspirantes cautivos rescatados' WHERE `locale`='esES' AND `ID`=14096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de héroe caído bendecido' WHERE `locale`='esES' AND `ID`=14107; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lanzar lanzas al kraken de El Mar del Norte' WHERE `locale`='esES' AND `ID`=14108; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kvaldir asesinados' WHERE `locale`='esES' AND `ID`=14140; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Seguidor Veloneve capturado' WHERE `locale`='esES' AND `ID`=14141; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kul el Temerario rescatado' WHERE `locale`='esES' AND `ID`=14142; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aspirantes cautivos rescatados' WHERE `locale`='esES' AND `ID`=14142; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Extremaunción administrada' WHERE `locale`='esES' AND `ID`=14144; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Transmutaciones de gema épica' WHERE `locale`='esES' AND `ID`=14151; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preguntar a Krasus sobre el origen de la empuñadura' WHERE `locale`='esES' AND `ID`=14444; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Llevar la Quel\'Delar a las Cámaras de Reflexión' WHERE `locale`='esES' AND `ID`=24480; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavos de la Alianza liberados' WHERE `locale`='esES' AND `ID`=24498; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Encontrar a Jaina Valiente' WHERE `locale`='esES' AND `ID`=24500; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Escapar del Rey Exánime' WHERE `locale`='esES' AND `ID`=24500; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavos de la Horda liberados' WHERE `locale`='esES' AND `ID`=24507; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Bendición de Thalorien obtenida' WHERE `locale`='esES' AND `ID`=24535; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardias perfumados analizados' WHERE `locale`='esES' AND `ID`=24536; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preguntar a Krasus sobre el origen de la empuñadura' WHERE `locale`='esES' AND `ID`=24555; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Llevar la Quel\'Delar a las Cámaras de Reflexión' WHERE `locale`='esES' AND `ID`=24561; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Bendición de Thalorien obtenida' WHERE `locale`='esES' AND `ID`=24563; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras dadas' WHERE `locale`='esES' AND `ID`=24629; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras dadas' WHERE `locale`='esES' AND `ID`=24635; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras dadas' WHERE `locale`='esES' AND `ID`=24636; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24638; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24645; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24647; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24648; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24649; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24650; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24651; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24652; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardias perfumados analizados' WHERE `locale`='esES' AND `ID`=24655; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24658; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24659; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24660; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24662; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24663; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24664; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24665; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esES' AND `ID`=24666; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habitantes del pueblo perfumados analizados' WHERE `locale`='esES' AND `ID`=24746; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rey Exánime derrotado' WHERE `locale`='esES' AND `ID`=24748; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Encontrar a Sylvanas Brisaveloz' WHERE `locale`='esES' AND `ID`=24802; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Escapar del Rey Exánime' WHERE `locale`='esES' AND `ID`=24802; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Contaduría de Ventormenta revisada' WHERE `locale`='esES' AND `ID`=24849; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Casa de subastas de Ventormenta revisada' WHERE `locale`='esES' AND `ID`=24849; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Peluquería de Ventormenta revisada' WHERE `locale`='esES' AND `ID`=24849; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Banco de Orgrimmar revisado' WHERE `locale`='esES' AND `ID`=24851; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Casa de subastas de Orgrimmar revisada' WHERE `locale`='esES' AND `ID`=24851; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Peluquería de Orgrimmar revisada' WHERE `locale`='esES' AND `ID`=24851; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rescata a Darnavan' WHERE `locale`='esES' AND `ID`=24869; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Minchar rescatado' WHERE `locale`='esES' AND `ID`=24874; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rescata a Darnavan' WHERE `locale`='esES' AND `ID`=24875; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Minchar rescatado' WHERE `locale`='esES' AND `ID`=24879; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Saluda al sargento de maniobras' WHERE `locale`='esES' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ruge con el sargento de maniobras' WHERE `locale`='esES' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Brinda con el sargento de maniobras' WHERE `locale`='esES' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Baila con el sargento de maniobras' WHERE `locale`='esES' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lanzar Radiageigatrones a los conductos de ventilación de Gnomeregan' WHERE `locale`='esES' AND `ID`=25212; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escucha el discurso de los presagistas de la Fatalidad' WHERE `locale`='esES' AND `ID`=25228; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gnomos motivados' WHERE `locale`='esES' AND `ID`=25229; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gnomos motivados traidos al Capitán Chispaboquilla' WHERE `locale`='esES' AND `ID`=25229; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escucha el discurso de los presagistas de la Fatalidad' WHERE `locale`='esES' AND `ID`=25253; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carteles colocados' WHERE `locale`='esES' AND `ID`=25254; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carteles colocados' WHERE `locale`='esES' AND `ID`=25282; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Dar un discurso a Ozzie Voltiflop' WHERE `locale`='esES' AND `ID`=25283; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Dar un discurso a Milli Plumasilba' WHERE `locale`='esES' AND `ID`=25283; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Dar un discurso a Tog Oxidentado' WHERE `locale`='esES' AND `ID`=25283; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sistema de eyección probado' WHERE `locale`='esES' AND `ID`=25285; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Únete al Culto del Juicio Final' WHERE `locale`='esES' AND `ID`=25288; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Servo de la pata izquierda probada' WHERE `locale`='esES' AND `ID`=25289; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Servo de la pata derecha probada' WHERE `locale`='esES' AND `ID`=25289; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sistema de maniobras evasivas probada' WHERE `locale`='esES' AND `ID`=25289; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Únete al Culto del Juicio Final' WHERE `locale`='esES' AND `ID`=25290; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con el cultor Kagarn' WHERE `locale`='esES' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Habla con el cultor Agtar' WHERE `locale`='esES' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Habla con la cultora Tokka' WHERE `locale`='esES' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Habla con la cultora Rokaga' WHERE `locale`='esES' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sistemas armamentísticos probados' WHERE `locale`='esES' AND `ID`=25295; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sistema de eyección probado' WHERE `locale`='esES' AND `ID`=25306; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Revelación de Cho\'Gall' WHERE `locale`='esES' AND `ID`=25343; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Difundir el mensaje en la torre de zepelín este' WHERE `locale`='esES' AND `ID`=25380; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Difundir el mensaje en la torre de zepelín oeste' WHERE `locale`='esES' AND `ID`=25380; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Difundir el mensaje en Cerrotajo' WHERE `locale`='esES' AND `ID`=25380; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Recuperar la superficie de Gnomeregan' WHERE `locale`='esES' AND `ID`=25393; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con la cultora Lethelyn' WHERE `locale`='esES' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Habla con la cultora Kaima' WHERE `locale`='esES' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Habla con el cultor Wyman' WHERE `locale`='esES' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Habla con el cultor Orlunn' WHERE `locale`='esES' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Difundir el mensaje en el Cuartel de Arroyoeste' WHERE `locale`='esES' AND `ID`=25415; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Difundir el mensaje en el Valle de los Héroes' WHERE `locale`='esES' AND `ID`=25415; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Difundir el mensaje en Villadorada' WHERE `locale`='esES' AND `ID`=25415; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Revelación de Cho\'Gall' WHERE `locale`='esES' AND `ID`=25416; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ranas de Sen\'jin armonizadas' WHERE `locale`='esES' AND `ID`=25444; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Zalazane matado' WHERE `locale`='esES' AND `ID`=25445; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ranas sintonizadas colocadas' WHERE `locale`='esES' AND `ID`=25446; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Voluntarios trol reclutados' WHERE `locale`='esES' AND `ID`=25461; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Voluntarios trol entregados al Campeón Uru\'zin' WHERE `locale`='esES' AND `ID`=25461; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Reta a la matriarca tigresa' WHERE `locale`='esES' AND `ID`=25470; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Danza de los espíritus' WHERE `locale`='esES' AND `ID`=25480; + +UPDATE `quest_template_locale` SET `ObjectiveText1`='Niños rescatados' WHERE `locale`='esMX' AND `ID`=10852; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Draco Ala Abisal esclavizado liberado' WHERE `locale`='esMX' AND `ID`=10854; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Atracador vil inactivo destruido' WHERE `locale`='esMX' AND `ID`=10855; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Teletransportador oeste destruido' WHERE `locale`='esMX' AND `ID`=10857; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Teletransportador central destruido' WHERE `locale`='esMX' AND `ID`=10857; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Teletransportador este destruido' WHERE `locale`='esMX' AND `ID`=10857; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe de luz Razaani recogido' WHERE `locale`='esMX' AND `ID`=10859; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prole redimida' WHERE `locale`='esMX' AND `ID`=10861; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Almas Mano Destrozada obtenidas' WHERE `locale`='esMX' AND `ID`=10864; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Karynaku liberado' WHERE `locale`='esMX' AND `ID`=10866; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Karynaku liberado' WHERE `locale`='esMX' AND `ID`=10872; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guerrero de Sha\'tar liberado' WHERE `locale`='esMX' AND `ID`=10873; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuego zafiro extinguido' WHERE `locale`='esMX' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Fuego esmeralda extinguido' WHERE `locale`='esMX' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Fuego violeta extinguido' WHERE `locale`='esMX' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Fuego de sangrita extinguido' WHERE `locale`='esMX' AND `ID`=10874; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Torre norte marcada' WHERE `locale`='esMX' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Torre sur marcada' WHERE `locale`='esMX' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Torre de la Forja marcada' WHERE `locale`='esMX' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Torre de la ladera marcada' WHERE `locale`='esMX' AND `ID`=10895; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Portal de distorsión sur destruido' WHERE `locale`='esMX' AND `ID`=10911; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Portal de distorsión norte destruido' WHERE `locale`='esMX' AND `ID`=10911; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de vindicador Sha\'tar asesinado quemado' WHERE `locale`='esMX' AND `ID`=10913; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cadáver de guerrero Auchenai asesinado quemado' WHERE `locale`='esMX' AND `ID`=10913; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Contenido del ataúd de Auchenai destruido' WHERE `locale`='esMX' AND `ID`=10915; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Coronel Jules salvado' WHERE `locale`='esMX' AND `ID`=10935; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ayuda a Clintar a reunir las reliquias' WHERE `locale`='esMX' AND `ID`=10965; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aprender sobre el Libro del Cuervo' WHERE `locale`='esMX' AND `ID`=10980; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevo de kaliri monstruoso destruido' WHERE `locale`='esMX' AND `ID`=11008; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Montones de balas de cañón vil destruidos' WHERE `locale`='esMX' AND `ID`=11010; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campamento de peones Faucedraco envenenado' WHERE `locale`='esMX' AND `ID`=11020; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Montones de balas de cañón vil destruidos' WHERE `locale`='esMX' AND `ID`=11023; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Demonios desterrados' WHERE `locale`='esMX' AND `ID`=11026; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Demonios desterrados' WHERE `locale`='esMX' AND `ID`=11051; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Peones Faucedraco disciplinados' WHERE `locale`='esMX' AND `ID`=11055; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rayas de éter conseguidas' WHERE `locale`='esMX' AND `ID`=11065; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rayas de éter conseguidas' WHERE `locale`='esMX' AND `ID`=11066; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Comida de raya abisal' WHERE `locale`='esMX' AND `ID`=11093; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ogro Gordunni' WHERE `locale`='esMX' AND `ID`=11096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Montones de balas de cañón vil destruidos' WHERE `locale`='esMX' AND `ID`=11102; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barriles entregados' WHERE `locale`='esMX' AND `ID`=11122; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Agitador desertor desenmascarado' WHERE `locale`='esMX' AND `ID`=11126; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Panfletos distribuídos' WHERE `locale`='esMX' AND `ID`=11133; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gavis Rodelagris capturado' WHERE `locale`='esMX' AND `ID`=11134; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneros de Theramore liberados' WHERE `locale`='esMX' AND `ID`=11145; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Raptores capturados' WHERE `locale`='esMX' AND `ID`=11146; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Raptores liberados' WHERE `locale`='esMX' AND `ID`=11147; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tienda del norte quemada' WHERE `locale`='esMX' AND `ID`=11150; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tienda del noreste quemada' WHERE `locale`='esMX' AND `ID`=11150; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tienda del este quemada' WHERE `locale`='esMX' AND `ID`=11150; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Corona colocada en el monumento de los Hyal' WHERE `locale`='esMX' AND `ID`=11152; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cañones del bloqueo destruidos' WHERE `locale`='esMX' AND `ID`=11153; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tótem Siniestro de Cuernoatroz eliminados' WHERE `locale`='esMX' AND `ID`=11156; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus Quebrantarrocas que descansan en paz' WHERE `locale`='esMX' AND `ID`=11159; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Clan Quebrantarrocas vengado' WHERE `locale`='esMX' AND `ID`=11162; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Examinar la cámara de Halazzi' WHERE `locale`='esMX' AND `ID`=11166; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Examinar la plataforma de Jan\'alai' WHERE `locale`='esMX' AND `ID`=11166; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Examinar la plataforma de Akil\'zon' WHERE `locale`='esMX' AND `ID`=11166; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pruebas de tótems llevadas a cabo' WHERE `locale`='esMX' AND `ID`=11169; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mocos disueltos' WHERE `locale`='esMX' AND `ID`=11174; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información conseguida' WHERE `locale`='esMX' AND `ID`=11180; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Colina de las brujas limpia' WHERE `locale`='esMX' AND `ID`=11183; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tienda norte quemada' WHERE `locale`='esMX' AND `ID`=11205; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tienda noreste quemada' WHERE `locale`='esMX' AND `ID`=11205; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tienda este quemada' WHERE `locale`='esMX' AND `ID`=11205; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pasta de pescado probada' WHERE `locale`='esMX' AND `ID`=11209; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera del banco' WHERE `locale`='esMX' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en la Sala Militar' WHERE `locale`='esMX' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en la Sala de Exploradores' WHERE `locale`='esMX' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en la Sala Mística' WHERE `locale`='esMX' AND `ID`=11293; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera del banco' WHERE `locale`='esMX' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en la Sala Militar' WHERE `locale`='esMX' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en la Sala de Exploradores' WHERE `locale`='esMX' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en la Sala Mística' WHERE `locale`='esMX' AND `ID`=11294; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mantén el trote durante 8 segundos' WHERE `locale`='esMX' AND `ID`=11318; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Mantén el medio galope durante 8 segundos' WHERE `locale`='esMX' AND `ID`=11318; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Mantén el galope durante 8 segundos' WHERE `locale`='esMX' AND `ID`=11318; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esMX' AND `ID`=11360; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esMX' AND `ID`=11361; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera de la casa de subastas' WHERE `locale`='esMX' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en el Valle del Honor' WHERE `locale`='esMX' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en el Valle de la Sabiduría' WHERE `locale`='esMX' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en el Valle de los Espíritus' WHERE `locale`='esMX' AND `ID`=11407; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grita fuera de la casa de subastas' WHERE `locale`='esMX' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Grita en el Valle del Honor' WHERE `locale`='esMX' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grita en el Valle de la Sabiduría' WHERE `locale`='esMX' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Grita en el Valle de los Espíritus' WHERE `locale`='esMX' AND `ID`=11408; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mantén el trote durante 8 segundos' WHERE `locale`='esMX' AND `ID`=11409; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Mantén el medio galope durante 8 segundos' WHERE `locale`='esMX' AND `ID`=11409; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Mantén el galope durante 8 segundos' WHERE `locale`='esMX' AND `ID`=11409; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barriles entregados' WHERE `locale`='esMX' AND `ID`=11412; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Casa comunal Desuelladragones destruida' WHERE `locale`='esMX' AND `ID`=11421; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Caseta del muelle Desuelladragones destruida' WHERE `locale`='esMX' AND `ID`=11421; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Almacén Desuelladragones destruido' WHERE `locale`='esMX' AND `ID`=11421; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esMX' AND `ID`=11439; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esMX' AND `ID`=11440; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esMX' AND `ID`=11449; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Apaga fuegos' WHERE `locale`='esMX' AND `ID`=11450; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe de visión activado' WHERE `locale`='esMX' AND `ID`=11490; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Avizor transformado desplegado' WHERE `locale`='esMX' AND `ID`=11524; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Avizor transformado desplegado' WHERE `locale`='esMX' AND `ID`=11525; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Emisario del Odio empalado' WHERE `locale`='esMX' AND `ID`=11537; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Emisario del Odio empalado' WHERE `locale`='esMX' AND `ID`=11538; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavo Branquia Verde liberado' WHERE `locale`='esMX' AND `ID`=11541; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Velas Sin\'loren quemadas' WHERE `locale`='esMX' AND `ID`=11542; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Velas Juramento de Sangre quemadas' WHERE `locale`='esMX' AND `ID`=11542; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Velas Cazador del Albor quemadas' WHERE `locale`='esMX' AND `ID`=11542; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Velas Sin\'loren quemadas' WHERE `locale`='esMX' AND `ID`=11543; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Velas Juramento de Sangre quemadas' WHERE `locale`='esMX' AND `ID`=11543; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Velas Cazador del Albor quemadas' WHERE `locale`='esMX' AND `ID`=11543; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de portal tomada' WHERE `locale`='esMX' AND `ID`=11547; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lectura del sagrario tomada' WHERE `locale`='esMX' AND `ID`=11547; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Lectura del cristal de sangre tomada' WHERE `locale`='esMX' AND `ID`=11547; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Renacuajo Aleta Invernal rescatado' WHERE `locale`='esMX' AND `ID`=11560; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Múrlocs Aleta Invernal muertos' WHERE `locale`='esMX' AND `ID`=11561; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de la Anomalía del Acantilado Agrietado conseguida' WHERE `locale`='esMX' AND `ID`=11576; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de la Sima Quebrada conseguida' WHERE `locale`='esMX' AND `ID`=11582; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneros Arcanos rescatados' WHERE `locale`='esMX' AND `ID`=11587; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hechicero de Berilo capturado' WHERE `locale`='esMX' AND `ID`=11590; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardias y trabajadores de caravana muertos quemados' WHERE `locale`='esMX' AND `ID`=11593; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus taunka en paz' WHERE `locale`='esMX' AND `ID`=11594; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nerub\'ar muertos' WHERE `locale`='esMX' AND `ID`=11598; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sacos de huevos Nerub\'ar destruidos' WHERE `locale`='esMX' AND `ID`=11602; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ancestro Kesuk identificado' WHERE `locale`='esMX' AND `ID`=11605; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ancestro Sagani identificado' WHERE `locale`='esMX' AND `ID`=11605; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Ancestro Takret identificado' WHERE `locale`='esMX' AND `ID`=11605; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Artesanos de Kashala liberados' WHERE `locale`='esMX' AND `ID`=11607; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Chamanes de Kashala liberados' WHERE `locale`='esMX' AND `ID`=11607; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sumidero sur de Nerub\'ar destruido' WHERE `locale`='esMX' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Sumidero este de Nerub\'ar destruido' WHERE `locale`='esMX' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sumidero oeste de Nerub\'ar destruido' WHERE `locale`='esMX' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sumidero norte de Nerub\'ar destruido' WHERE `locale`='esMX' AND `ID`=11608; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ceremonia del ancestro Kesuk completada' WHERE `locale`='esMX' AND `ID`=11610; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ceremonia del ancestro Sagani completada' WHERE `locale`='esMX' AND `ID`=11610; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Ceremonia del ancestro Takret completada' WHERE `locale`='esMX' AND `ID`=11610; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Peón Grito de Guerra liberado' WHERE `locale`='esMX' AND `ID`=11611; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Plataforma este destruida' WHERE `locale`='esMX' AND `ID`=11617; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Plataforma norte destruida' WHERE `locale`='esMX' AND `ID`=11617; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Plataforma oeste destruida' WHERE `locale`='esMX' AND `ID`=11617; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cocer se ha rendido' WHERE `locale`='esMX' AND `ID`=11627; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Xurn se ha rendido' WHERE `locale`='esMX' AND `ID`=11627; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destino del clarividente Caminante Siniestro vaticinado' WHERE `locale`='esMX' AND `ID`=11631; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aguja de Putrefacción inspeccionada' WHERE `locale`='esMX' AND `ID`=11633; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aguja de Sangre inspeccionada' WHERE `locale`='esMX' AND `ID`=11633; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Aguja de Dolor inspeccionada' WHERE `locale`='esMX' AND `ID`=11633; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Clarividente Caminante Siniestro liberado' WHERE `locale`='esMX' AND `ID`=11637; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera este neutralizada' WHERE `locale`='esMX' AND `ID`=11647; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Caldera central neutralizada' WHERE `locale`='esMX' AND `ID`=11647; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Caldera oeste neutralizada' WHERE `locale`='esMX' AND `ID`=11647; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisionero interrogado' WHERE `locale`='esMX' AND `ID`=11648; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Unidad de la Plaga destruida' WHERE `locale`='esMX' AND `ID`=11652; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Soldado Grito de Guerra herido rescatado' WHERE `locale`='esMX' AND `ID`=11652; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rayo de Ingeniosa puesto a prueba' WHERE `locale`='esMX' AND `ID`=11653; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Las Fauces de la Sierpe destruido' WHERE `locale`='esMX' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText2`='El Kur Drakkar destruido' WHERE `locale`='esMX' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Martillo de Bor destruido' WHERE `locale`='esMX' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Yunque de Bor destruido' WHERE `locale`='esMX' AND `ID`=11656; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Globos de sangre destruidos' WHERE `locale`='esMX' AND `ID`=11659; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandarte Grito de Guerra clavado sobre Magmothregar' WHERE `locale`='esMX' AND `ID`=11670; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisionero de la Plaga liberado' WHERE `locale`='esMX' AND `ID`=11676; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esMX' AND `ID`=11677; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Talramas muerto' WHERE `locale`='esMX' AND `ID`=11683; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Marcar situación del sumidero sur' WHERE `locale`='esMX' AND `ID`=11684; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Marcar situación del sumidero noreste' WHERE `locale`='esMX' AND `ID`=11684; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Marcar situación del sumidero noroeste' WHERE `locale`='esMX' AND `ID`=11684; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Observar Granero Grito de Guerra' WHERE `locale`='esMX' AND `ID`=11686; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Observar Granja de Torp' WHERE `locale`='esMX' AND `ID`=11686; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Observar Matadero Grito de Guerra' WHERE `locale`='esMX' AND `ID`=11686; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kodos rescatados' WHERE `locale`='esMX' AND `ID`=11690; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esMX' AND `ID`=11694; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Talramas muerto' WHERE `locale`='esMX' AND `ID`=11698; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Túneles nerubianos derrumbados' WHERE `locale`='esMX' AND `ID`=11706; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gnomo de Palanqueta maldito y rescatado' WHERE `locale`='esMX' AND `ID`=11712; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Marcar situación del sumidero sur' WHERE `locale`='esMX' AND `ID`=11713; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Marcar situación del sumidero noreste' WHERE `locale`='esMX' AND `ID`=11713; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Marcar situación del sumidero noroeste' WHERE `locale`='esMX' AND `ID`=11713; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barriles de aceite recogidos' WHERE `locale`='esMX' AND `ID`=11715; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza el Vibro-Motor 5000' WHERE `locale`='esMX' AND `ID`=11723; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Robots reprogramados' WHERE `locale`='esMX' AND `ID`=11730; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esMX' AND `ID`=11731; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cultor en muelles derrotado' WHERE `locale`='esMX' AND `ID`=11794; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cultor en la cárcel derrotado' WHERE `locale`='esMX' AND `ID`=11794; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Cultor en la cocina derrotado' WHERE `locale`='esMX' AND `ID`=11794; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hunde los restos del este' WHERE `locale`='esMX' AND `ID`=11796; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Hunde los restos del sur' WHERE `locale`='esMX' AND `ID`=11796; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Hunde los restos del noroeste' WHERE `locale`='esMX' AND `ID`=11796; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Busca el manual del maestro de palancas' WHERE `locale`='esMX' AND `ID`=11798; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trampero de Nesingwary atrapado' WHERE `locale`='esMX' AND `ID`=11865; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cría de mamut liberada' WHERE `locale`='esMX' AND `ID`=11876; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lecturas multifase obtenidas' WHERE `locale`='esMX' AND `ID`=11880; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trae a Jenny a salvo sin perder el cargamento' WHERE `locale`='esMX' AND `ID`=11881; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Energía reunida' WHERE `locale`='esMX' AND `ID`=11893; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tormenta dominada' WHERE `locale`='esMX' AND `ID`=11895; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Robots debilitados y destruidos' WHERE `locale`='esMX' AND `ID`=11896; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Explosivos colocados en el sumidero sur' WHERE `locale`='esMX' AND `ID`=11897; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Explosivos colocados en el sumidero norte' WHERE `locale`='esMX' AND `ID`=11897; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alma de gnomo capturada' WHERE `locale`='esMX' AND `ID`=11899; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura geológica de El Nexo' WHERE `locale`='esMX' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lectura del sur de Gelidar' WHERE `locale`='esMX' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Lectura del norte de Gelidar' WHERE `locale`='esMX' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Lectura del oeste de Gelidar' WHERE `locale`='esMX' AND `ID`=11900; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagoneta de mena liberada' WHERE `locale`='esMX' AND `ID`=11904; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Falla interdimensional ralentizada' WHERE `locale`='esMX' AND `ID`=11905; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Busca el manual del maestro de palancas' WHERE `locale`='esMX' AND `ID`=11909; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grano de Lindeallá quemado' WHERE `locale`='esMX' AND `ID`=11913; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Draco de El Nexo capturado' WHERE `locale`='esMX' AND `ID`=11919; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esMX' AND `ID`=11921; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esMX' AND `ID`=11922; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Blandones golpeados' WHERE `locale`='esMX' AND `ID`=11926; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de draco destruidos' WHERE `locale`='esMX' AND `ID`=11936; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Baja en En\'kilah' WHERE `locale`='esMX' AND `ID`=11938; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Draco de El Nexo capturado' WHERE `locale`='esMX' AND `ID`=11940; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Embadúrnate con la sangre de Loguhn' WHERE `locale`='esMX' AND `ID`=11959; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Toca la campana de Lindeallá' WHERE `locale`='esMX' AND `ID`=11965; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Malygos atraído' WHERE `locale`='esMX' AND `ID`=11969; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Keristrasza en paz' WHERE `locale`='esMX' AND `ID`=11973; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Taunka admitidos en la Horda' WHERE `locale`='esMX' AND `ID`=11983; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Vuelo Azul en Jardines Reposo Lunar muertos' WHERE `locale`='esMX' AND `ID`=12006; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Los últimos ritos' WHERE `locale`='esMX' AND `ID`=12019; +UPDATE `quest_template_locale` SET `ObjectiveText1`='G.U.A.O. golpeada' WHERE `locale`='esMX' AND `ID`=12022; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus Indu\'le en paz' WHERE `locale`='esMX' AND `ID`=12031; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Recolector de cosecha alterado' WHERE `locale`='esMX' AND `ID`=12035; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Arpías Viento Helado' WHERE `locale`='esMX' AND `ID`=12051; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Arpías Viento Helado' WHERE `locale`='esMX' AND `ID`=12052; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Primera Profecía descifrada' WHERE `locale`='esMX' AND `ID`=12058; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Segunda Profecía descifrada' WHERE `locale`='esMX' AND `ID`=12058; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tercera Profecía descifrada' WHERE `locale`='esMX' AND `ID`=12058; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Objeto de la Aguja de Flujo observado' WHERE `locale`='esMX' AND `ID`=12060; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Objeto de la Aguja de Flujo observado' WHERE `locale`='esMX' AND `ID`=12061; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley conseguida' WHERE `locale`='esMX' AND `ID`=12065; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley conseguida' WHERE `locale`='esMX' AND `ID`=12066; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Defensores enanos férreos muertos' WHERE `locale`='esMX' AND `ID`=12073; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esMX' AND `ID`=12083; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esMX' AND `ID`=12084; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuerza devuelta a ancestro Lothalor' WHERE `locale`='esMX' AND `ID`=12092; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuerza devuelta a ancestro Lothalor' WHERE `locale`='esMX' AND `ID`=12096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esMX' AND `ID`=12107; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Observación en Santuario de Dragones Azur' WHERE `locale`='esMX' AND `ID`=12107; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información de foco de línea de Ley obtenida' WHERE `locale`='esMX' AND `ID`=12110; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Observación en Santuario de Dragones Azur' WHERE `locale`='esMX' AND `ID`=12110; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alce de avalancha inoculado' WHERE `locale`='esMX' AND `ID`=12111; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Pardo ártico inoculado' WHERE `locale`='esMX' AND `ID`=12111; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Roanauk Bruma de Hielo iniciado' WHERE `locale`='esMX' AND `ID`=12140; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Snóbolds Llano Nevado' WHERE `locale`='esMX' AND `ID`=12142; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Magnatauro del Cementerio de Dragones' WHERE `locale`='esMX' AND `ID`=12142; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Discípulos Llano Nevado' WHERE `locale`='esMX' AND `ID`=12144; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Magnatauros alfa' WHERE `locale`='esMX' AND `ID`=12144; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nombre del magnatauro Señor de la Guerra' WHERE `locale`='esMX' AND `ID`=12150; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sombra de Arugal derrotada' WHERE `locale`='esMX' AND `ID`=12164; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de alce contagiado limpio' WHERE `locale`='esMX' AND `ID`=12166; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cadáver de pardo rabioso limpio' WHERE `locale`='esMX' AND `ID`=12166; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alianzas en Río Negro eliminados' WHERE `locale`='esMX' AND `ID`=12170; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Armonización con las líneas Ley de Rasganorte' WHERE `locale`='esMX' AND `ID`=12172; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Armonización con las líneas Ley de Rasganorte' WHERE `locale`='esMX' AND `ID`=12173; +UPDATE `quest_template_locale` SET `ObjectiveText1`='G.U.A.O. golpeada' WHERE `locale`='esMX' AND `ID`=12191; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nivel de carga' WHERE `locale`='esMX' AND `ID`=12198; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Imágenes de enanos férreos tomadas' WHERE `locale`='esMX' AND `ID`=12202; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mensaje de Loken recibido' WHERE `locale`='esMX' AND `ID`=12203; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hugh Copa interrogado' WHERE `locale`='esMX' AND `ID`=12204; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gavrock interrogado' WHERE `locale`='esMX' AND `ID`=12204; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de El Embate Escarlata asesinados' WHERE `locale`='esMX' AND `ID`=12205; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Frasco de añublo probado' WHERE `locale`='esMX' AND `ID`=12206; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáveres de El Embate Escarlata limpiados' WHERE `locale`='esMX' AND `ID`=12211; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe utilizado bajo el Corazón de Vordrassil' WHERE `locale`='esMX' AND `ID`=12213; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Orbe utilizado bajo la Extremidad de Vordrassil' WHERE `locale`='esMX' AND `ID`=12213; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Orbe utilizado bajo las Lágrimas de Vordrassil' WHERE `locale`='esMX' AND `ID`=12213; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Riendas de caballo de guerra de El Embate Escarlata entregadas' WHERE `locale`='esMX' AND `ID`=12214; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Historia de Orsonn' WHERE `locale`='esMX' AND `ID`=12231; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Historia de Kodian' WHERE `locale`='esMX' AND `ID`=12231; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Balista de Nueva Vega del Amparo bombardeada' WHERE `locale`='esMX' AND `ID`=12232; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ursoc purificado' WHERE `locale`='esMX' AND `ID`=12236; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habitante indefenso rescatado' WHERE `locale`='esMX' AND `ID`=12237; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Velas del Locura del Pecador en llamas' WHERE `locale`='esMX' AND `ID`=12243; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Torturador LeCraft completamente interrogado' WHERE `locale`='esMX' AND `ID`=12252; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habitante de Hibergarde atrapado rescatado' WHERE `locale`='esMX' AND `ID`=12253; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Imagen de sacerdote cuervo del Embate robada' WHERE `locale`='esMX' AND `ID`=12260; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Resguardo destructivo completamente cargado' WHERE `locale`='esMX' AND `ID`=12261; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Runa nigromántica destruida' WHERE `locale`='esMX' AND `ID`=12265; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Limpiar cámara de invocación' WHERE `locale`='esMX' AND `ID`=12267; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trituradora entregada' WHERE `locale`='esMX' AND `ID`=12270; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Acusación y muerte del comandante Jordan' WHERE `locale`='esMX' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Acusación y muerte del cañonero mayor Zierhut' WHERE `locale`='esMX' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Acusación y muerte del herrero Buenhombre' WHERE `locale`='esMX' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Acusación y muerte del maestro de establos Mercer' WHERE `locale`='esMX' AND `ID`=12273; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tocar campana de la abadía' WHERE `locale`='esMX' AND `ID`=12274; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Hablar con el sumo abad' WHERE `locale`='esMX' AND `ID`=12274; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Eje de Mina Hibergarde alta destruido' WHERE `locale`='esMX' AND `ID`=12277; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Eje de Mina Hibergarde baja destruido' WHERE `locale`='esMX' AND `ID`=12277; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Unidades de la Alianza eliminadas' WHERE `locale`='esMX' AND `ID`=12284; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hostigadores heridos sanados' WHERE `locale`='esMX' AND `ID`=12288; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preguntas a un campesino olvidado' WHERE `locale`='esMX' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Preguntas a un fusilero olvidado' WHERE `locale`='esMX' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Preguntas a un caballero olvidado' WHERE `locale`='esMX' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Preguntas a un lacayo olvidado' WHERE `locale`='esMX' AND `ID`=12291; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fantasmas olvidados asesinados' WHERE `locale`='esMX' AND `ID`=12304; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alianza eliminada en Bahía Ventura' WHERE `locale`='esMX' AND `ID`=12317; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rezagados de Ventura y Cía. ahuyentados' WHERE `locale`='esMX' AND `ID`=12324; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón de peste saboteado' WHERE `locale`='esMX' AND `ID`=12326; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Élite de la Séptima Legión bajado a salvo' WHERE `locale`='esMX' AND `ID`=12326; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Desestabiliza el Santuario de Dragones Azur' WHERE `locale`='esMX' AND `ID`=12372; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caballos mesteños de las Tierras Altas espantados' WHERE `locale`='esMX' AND `ID`=12415; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vigilante rubí devuelto a la tierra' WHERE `locale`='esMX' AND `ID`=12417; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Erradicar corrupción rubí' WHERE `locale`='esMX' AND `ID`=12418; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Envío de madera de la Alianza destruido' WHERE `locale`='esMX' AND `ID`=12432; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vigilante rubí devuelto a la tierra' WHERE `locale`='esMX' AND `ID`=12449; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Erradicar corrupción rubí' WHERE `locale`='esMX' AND `ID`=12450; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vista de águila imperial unida' WHERE `locale`='esMX' AND `ID`=12453; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldado de la Séptima Legión herido salvado' WHERE `locale`='esMX' AND `ID`=12457; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Miembro de la Plaga de Naxxramas matado' WHERE `locale`='esMX' AND `ID`=12462; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de El Embate Escarlata muerto' WHERE `locale`='esMX' AND `ID`=12476; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Secretos del pasado revelados' WHERE `locale`='esMX' AND `ID`=12478; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esMX' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esMX' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esMX' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esMX' AND `ID`=12501; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandarte de la Cruzada Argenta sur' WHERE `locale`='esMX' AND `ID`=12502; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Estandarte de la Cruzada Argenta norte' WHERE `locale`='esMX' AND `ID`=12502; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Estandarte de la Cruzada Argenta este' WHERE `locale`='esMX' AND `ID`=12502; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Plaga en El Confín Argenta destruida' WHERE `locale`='esMX' AND `ID`=12503; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldados Argenta enviados a ver al sargento' WHERE `locale`='esMX' AND `ID`=12504; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Seguidores de Sseratus muertos' WHERE `locale`='esMX' AND `ID`=12508; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Valor de los reclutas recuperado' WHERE `locale`='esMX' AND `ID`=12509; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado Jonathan salvado' WHERE `locale`='esMX' AND `ID`=12512; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cruzado Lamoof salvado' WHERE `locale`='esMX' AND `ID`=12512; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Cruzada Josephine salvada' WHERE `locale`='esMX' AND `ID`=12512; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de Ventura y Cía. asesinados' WHERE `locale`='esMX' AND `ID`=12524; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górloc Susurraneblina' WHERE `locale`='esMX' AND `ID`=12538; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Oráculo Hablalluvia herido encontrado' WHERE `locale`='esMX' AND `ID`=12540; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Suero de la verdad creado' WHERE `locale`='esMX' AND `ID`=12541; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ubicación de Farunn descubierta' WHERE `locale`='esMX' AND `ID`=12544; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga en Jintha\'kalar matado' WHERE `locale`='esMX' AND `ID`=12545; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esbirros de la Plaga destruidos' WHERE `locale`='esMX' AND `ID`=12546; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huella de Shango identificada' WHERE `locale`='esMX' AND `ID`=12550; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pulverizadores de peste atrapados con red y destruidos' WHERE `locale`='esMX' AND `ID`=12555; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gusano de fango encontrado' WHERE `locale`='esMX' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ala de murciélago mustia encontrada' WHERE `locale`='esMX' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Grano ámbar encontrado' WHERE `locale`='esMX' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Moco de serpiente frío encontrado' WHERE `locale`='esMX' AND `ID`=12557; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Interruptor de activación Gamma' WHERE `locale`='esMX' AND `ID`=12559; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esMX' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esMX' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esMX' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esMX' AND `ID`=12563; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de lacayo Argenta incinerado' WHERE `locale`='esMX' AND `ID`=12568; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Víctimas Caminamoho rescatadas' WHERE `locale`='esMX' AND `ID`=12580; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esMX' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esMX' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esMX' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esMX' AND `ID`=12587; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Túmulos antiguos investigados' WHERE `locale`='esMX' AND `ID`=12588; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alcanzada la manzana en la cabeza de Suertudo Wilhelm' WHERE `locale`='esMX' AND `ID`=12589; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Túneles nerubianos hundidos' WHERE `locale`='esMX' AND `ID`=12591; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Animales de caza muertos' WHERE `locale`='esMX' AND `ID`=12592; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Arrasadores musgosos muertos' WHERE `locale`='esMX' AND `ID`=12594; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Misión del capitán Brandon' WHERE `locale`='esMX' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Misión del capitán Rupert' WHERE `locale`='esMX' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Misión del capitán Grondel' WHERE `locale`='esMX' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Misión del alquimista Finklestein' WHERE `locale`='esMX' AND `ID`=12596; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Túneles nerubianos hundidos' WHERE `locale`='esMX' AND `ID`=12598; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Suero de la verdad creado' WHERE `locale`='esMX' AND `ID`=12601; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Suero de la verdad creado' WHERE `locale`='esMX' AND `ID`=12602; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lacayos cautivos liberados' WHERE `locale`='esMX' AND `ID`=12606; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mamut Partecolmillos entregado' WHERE `locale`='esMX' AND `ID`=12607; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Interruptor de activación Theta activado' WHERE `locale`='esMX' AND `ID`=12613; +UPDATE `quest_template_locale` SET `ObjectiveText1`='La cólera de la guardiana de vida' WHERE `locale`='esMX' AND `ID`=12620; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El pacto de Freya' WHERE `locale`='esMX' AND `ID`=12621; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera azul estropeada' WHERE `locale`='esMX' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Caldera verde estropeada' WHERE `locale`='esMX' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Caldera púrpura estropeada' WHERE `locale`='esMX' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Caldera roja estropeada' WHERE `locale`='esMX' AND `ID`=12627; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras de pelo recogidas' WHERE `locale`='esMX' AND `ID`=12630; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Descendiente de Har\'koa maldito resucitado' WHERE `locale`='esMX' AND `ID`=12632; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El propósito de la gargantilla al descubierto' WHERE `locale`='esMX' AND `ID`=12637; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El propósito de la gargantilla al descubierto' WHERE `locale`='esMX' AND `ID`=12638; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fallas elementales selladas' WHERE `locale`='esMX' AND `ID`=12640; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cata de Hemet' WHERE `locale`='esMX' AND `ID`=12645; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cata de Hadrius' WHERE `locale`='esMX' AND `ID`=12645; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Cata de Tamara' WHERE `locale`='esMX' AND `ID`=12645; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos putrefactos alimentados' WHERE `locale`='esMX' AND `ID`=12652; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cabellera de trols de Heb\'Drakkar cortada' WHERE `locale`='esMX' AND `ID`=12659; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Explosivos inestables destruidos' WHERE `locale`='esMX' AND `ID`=12660; +UPDATE `quest_template_locale` SET `ObjectiveText1`='La tarea del Señor Supremo Drakuru completada' WHERE `locale`='esMX' AND `ID`=12661; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vuelta por Zul\'Drak completada' WHERE `locale`='esMX' AND `ID`=12663; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vuelta por Zul\'Drak completada' WHERE `locale`='esMX' AND `ID`=12664; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trols asesinados cerca de la fuente de almas' WHERE `locale`='esMX' AND `ID`=12668; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tarea de Drakuru completada' WHERE `locale`='esMX' AND `ID`=12669; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aditivo diluido en calderas de añublo' WHERE `locale`='esMX' AND `ID`=12669; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cristales de añublo recogidos' WHERE `locale`='esMX' AND `ID`=12673; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Maleficio mortal echado al sumo sacerdote Mu\'funu' WHERE `locale`='esMX' AND `ID`=12674; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Maleficio mortal echado a la suma sacerdotisa Tua-Tua' WHERE `locale`='esMX' AND `ID`=12674; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Maleficio mortal echado al sumo sacerdote Hawinni' WHERE `locale`='esMX' AND `ID`=12674; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carros de la Plaga destruidos' WHERE `locale`='esMX' AND `ID`=12676; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tarea de Drakuru completada' WHERE `locale`='esMX' AND `ID`=12676; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Desvelar el secreto de Drakuru' WHERE `locale`='esMX' AND `ID`=12676; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tarea de Drakuru completada' WHERE `locale`='esMX' AND `ID`=12677; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras de esputo recogidas' WHERE `locale`='esMX' AND `ID`=12683; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Darmuk muerto' WHERE `locale`='esMX' AND `ID`=12686; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Trituracráneos Drakkari asesinados' WHERE `locale`='esMX' AND `ID`=12690; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Cabecilla Drakkari capturado' WHERE `locale`='esMX' AND `ID`=12690; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górlocs Pavesa muertos' WHERE `locale`='esMX' AND `ID`=12703; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacantes Corazón Frenético muertos' WHERE `locale`='esMX' AND `ID`=12705; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Discípulos de Mam\'toth muertos aplastados' WHERE `locale`='esMX' AND `ID`=12707; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guerreros Tiki encantados exterminados' WHERE `locale`='esMX' AND `ID`=12708; +UPDATE `quest_template_locale` SET `ObjectiveText1`='La cámara superior de Drakuru explorada' WHERE `locale`='esMX' AND `ID`=12710; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Señor Supremo Drakuru derrotado' WHERE `locale`='esMX' AND `ID`=12713; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu acuoso devorado' WHERE `locale`='esMX' AND `ID`=12726; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aparecido tormentoso devorado' WHERE `locale`='esMX' AND `ID`=12726; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lectura de las Cavernas Aletas Invernal tomada' WHERE `locale`='esMX' AND `ID`=12728; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Hoja manchada de sangre con una avispa del Enjambre Zafiro' WHERE `locale`='esMX' AND `ID`=12734; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Hoja manchada de sangre con un destrero Callonudillo' WHERE `locale`='esMX' AND `ID`=12734; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Hoja manchada de sangre con miembros Susurraneblina' WHERE `locale`='esMX' AND `ID`=12734; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Meditación en El Pilar Iluminado' WHERE `locale`='esMX' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Meditación en El Pilar Musgoluz' WHERE `locale`='esMX' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Meditación en El Pilar del Trecho Celestial' WHERE `locale`='esMX' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Meditación en El Pilar Toquesol' WHERE `locale`='esMX' AND `ID`=12736; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Canción de la fecundidad tocada' WHERE `locale`='esMX' AND `ID`=12737; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuerzas Argenta equipadas con un paracaídas' WHERE `locale`='esMX' AND `ID`=12740; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górloc Pavesa' WHERE `locale`='esMX' AND `ID`=12759; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Górloc Pavesa' WHERE `locale`='esMX' AND `ID`=12760; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacante Corazón Frenético' WHERE `locale`='esMX' AND `ID`=12761; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacante Corazón Frenético' WHERE `locale`='esMX' AND `ID`=12762; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Energía de sangrevida recuperada' WHERE `locale`='esMX' AND `ID`=12805; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sangre recogida de fauces voraces' WHERE `locale`='esMX' AND `ID`=12810; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de El Embate Escarlata transformado' WHERE `locale`='esMX' AND `ID`=12813; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grifo del Embate entregado a Uzo Clamamuerte' WHERE `locale`='esMX' AND `ID`=12814; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Agresores de Garm muertos' WHERE `locale`='esMX' AND `ID`=12820; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Colocar fardo explosivo' WHERE `locale`='esMX' AND `ID`=12823; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Arañas Red de Cristal muertas' WHERE `locale`='esMX' AND `ID`=12829; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Invasor de Garm muerto' WHERE `locale`='esMX' AND `ID`=12833; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Capitán Welsington interrogado a golpes y muerto' WHERE `locale`='esMX' AND `ID`=12840; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Capitana Hartford interrogada a golpes y muerta' WHERE `locale`='esMX' AND `ID`=12840; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisionero goblin liberado' WHERE `locale`='esMX' AND `ID`=12843; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Puerta de Arete invocada' WHERE `locale`='esMX' AND `ID`=12847; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huargos de escarcha quemados' WHERE `locale`='esMX' AND `ID`=12851; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gigantes de escarcha quemados' WHERE `locale`='esMX' AND `ID`=12851; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gran almirante Viento Oeste derrotado' WHERE `locale`='esMX' AND `ID`=12852; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rastrear al ladrón' WHERE `locale`='esMX' AND `ID`=12855; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneras Brunnhildar rescatadas' WHERE `locale`='esMX' AND `ID`=12856; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Protodracos liberados' WHERE `locale`='esMX' AND `ID`=12856; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuego de cabaña apagado' WHERE `locale`='esMX' AND `ID`=12859; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Datos ocultos reunidos' WHERE `locale`='esMX' AND `ID`=12860; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Garrafuria capturado liberado' WHERE `locale`='esMX' AND `ID`=12861; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Águilas de Crestormenta alimentadas' WHERE `locale`='esMX' AND `ID`=12865; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Invasores Tronaforjado muertos' WHERE `locale`='esMX' AND `ID`=12876; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Jinete de dracos de El Encuentro Hyldnir derrotada' WHERE `locale`='esMX' AND `ID`=12886; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El Ocular ha sido destruido' WHERE `locale`='esMX' AND `ID`=12887; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El Ocular ha sido destruido' WHERE `locale`='esMX' AND `ID`=12892; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vil transformado' WHERE `locale`='esMX' AND `ID`=12893; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lady Bosqueténebro transformada' WHERE `locale`='esMX' AND `ID`=12893; +UPDATE `quest_template_locale` SET `ObjectiveText3`='El Saltador transformado' WHERE `locale`='esMX' AND `ID`=12893; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado Dargath encontrado' WHERE `locale`='esMX' AND `ID`=12903; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gerk encontrado' WHERE `locale`='esMX' AND `ID`=12903; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Burr encontrado' WHERE `locale`='esMX' AND `ID`=12903; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vargul muerto' WHERE `locale`='esMX' AND `ID`=12904; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul exhausto disciplinado' WHERE `locale`='esMX' AND `ID`=12906; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sigue el olor hasta su fuente' WHERE `locale`='esMX' AND `ID`=12910; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Funciona' WHERE `locale`='esMX' AND `ID`=12911; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fjorn asesinado' WHERE `locale`='esMX' AND `ID`=12915; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gigantes de hierro Tronaforjado asesinados' WHERE `locale`='esMX' AND `ID`=12915; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Recinto de la Plaga reventado' WHERE `locale`='esMX' AND `ID`=12916; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ser de la Plaga muerto' WHERE `locale`='esMX' AND `ID`=12919; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con Brann' WHERE `locale`='esMX' AND `ID`=12920; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Yunque de Fjorn llevado a Dun Niffelem' WHERE `locale`='esMX' AND `ID`=12924; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Datos ocultos reunidos' WHERE `locale`='esMX' AND `ID`=12927; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacante Tronaforjado eliminado' WHERE `locale`='esMX' AND `ID`=12931; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Defensores terráneos caídos sanados' WHERE `locale`='esMX' AND `ID`=12937; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Combatientes Mjordin desafiados y derrotados' WHERE `locale`='esMX' AND `ID`=12939; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fuegos iniciados' WHERE `locale`='esMX' AND `ID`=12953; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sigrid Hielonato derrotada' WHERE `locale`='esMX' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Efrem el Leal derrotado' WHERE `locale`='esMX' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Onu\'zun derrotado' WHERE `locale`='esMX' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Mañosa Silbatin derrotada' WHERE `locale`='esMX' AND `ID`=12955; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Intento de liberar a mecagnomo cautivo' WHERE `locale`='esMX' AND `ID`=12957; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Furia de Loken destruida' WHERE `locale`='esMX' AND `ID`=12965; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Poder de Loken destruido' WHERE `locale`='esMX' AND `ID`=12965; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Favor de Loken destruido' WHERE `locale`='esMX' AND `ID`=12965; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aparecidos hirvientes eliminados' WHERE `locale`='esMX' AND `ID`=12967; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escucha la propuesta de Lok\'lira' WHERE `locale`='esMX' AND `ID`=12970; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Antepasado de Niffelem liberado' WHERE `locale`='esMX' AND `ID`=12977; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Natoescarcha inquieto liberado' WHERE `locale`='esMX' AND `ID`=12977; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nidavelir Tronaforjado eliminado' WHERE `locale`='esMX' AND `ID`=12978; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Placa de armadura investigada' WHERE `locale`='esMX' AND `ID`=12980; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prisioneros de la Espada de Ébano liberados' WHERE `locale`='esMX' AND `ID`=12982; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Matriarca faucehielo rescatada' WHERE `locale`='esMX' AND `ID`=12983; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Templo de la Invención examinado' WHERE `locale`='esMX' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Templo del Invierno examinado' WHERE `locale`='esMX' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Templo de la vida examinado' WHERE `locale`='esMX' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Templo del Orden examinado' WHERE `locale`='esMX' AND `ID`=12986; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Yelmo de Hodir montado' WHERE `locale`='esMX' AND `ID`=12987; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Forja de relámpagos norte dañada' WHERE `locale`='esMX' AND `ID`=12988; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Forja de relámpagos central dañada' WHERE `locale`='esMX' AND `ID`=12988; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Forja de relámpagos sur dañada' WHERE `locale`='esMX' AND `ID`=12988; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul de Jotunheim eliminado' WHERE `locale`='esMX' AND `ID`=12992; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Infiltrados Tronaforjado eliminados' WHERE `locale`='esMX' AND `ID`=12994; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandarte de la Espada de Ébano situado cerca de cadáver vrykul' WHERE `locale`='esMX' AND `ID`=12995; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kirgaraak derrotado' WHERE `locale`='esMX' AND `ID`=12996; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Intenta proteger el Corazón de la Tormenta' WHERE `locale`='esMX' AND `ID`=12998; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vermis salvaje muerta' WHERE `locale`='esMX' AND `ID`=13003; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Centinela férreo asesinado' WHERE `locale`='esMX' AND `ID`=13005; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Atacante enano férreo asesinado' WHERE `locale`='esMX' AND `ID`=13005; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado enredado liberado' WHERE `locale`='esMX' AND `ID`=13008; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destino de Krolmir descubierto' WHERE `locale`='esMX' AND `ID`=13010; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lee el primer pergamino de Historia' WHERE `locale`='esMX' AND `ID`=13034; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lee el segundo pergamino de Historia' WHERE `locale`='esMX' AND `ID`=13034; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Lee el tercer pergamino de historia' WHERE `locale`='esMX' AND `ID`=13034; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pregúntale al cabecilla Lanza Presta sobre sus recuerdos' WHERE `locale`='esMX' AND `ID`=13037; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Fallas de Témpano Gélido cerradas' WHERE `locale`='esMX' AND `ID`=13038; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Nerubianos de las Profundidades Olvidadas destruidos' WHERE `locale`='esMX' AND `ID`=13039; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información sacada a golpes del aprendiz Osterkilgr' WHERE `locale`='esMX' AND `ID`=13042; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado capturado rescatado' WHERE `locale`='esMX' AND `ID`=13045; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de Arngrim alimentado' WHERE `locale`='esMX' AND `ID`=13046; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Martillo de conocimiento armonizado a la era de Pezuña Tomentosa' WHERE `locale`='esMX' AND `ID`=13048; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Veranus atraída' WHERE `locale`='esMX' AND `ID`=13051; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Línea temporal verdadera restaurada' WHERE `locale`='esMX' AND `ID`=13058; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Desafío solicitado usando la espada de Bethod' WHERE `locale`='esMX' AND `ID`=13059; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escuchada la historia de Thorim' WHERE `locale`='esMX' AND `ID`=13064; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Protodracos de Jotunheim y jinetes derribados' WHERE `locale`='esMX' AND `ID`=13069; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Edificios vrykul incendiados' WHERE `locale`='esMX' AND `ID`=13071; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Estandartes vrykul quemados' WHERE `locale`='esMX' AND `ID`=13084; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Atacantes de la Plaga eliminados' WHERE `locale`='esMX' AND `ID`=13086; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykuls Jotunheim eliminados mientras posees a un terror de agua' WHERE `locale`='esMX' AND `ID`=13091; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gal\'darah asesinado' WHERE `locale`='esMX' AND `ID`=13096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Volkhan derrotado' WHERE `locale`='esMX' AND `ID`=13109; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritus inquietos liberados' WHERE `locale`='esMX' AND `ID`=13110; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Altar de Invocación investigado' WHERE `locale`='esMX' AND `ID`=13117; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Primer altar de Invocación destruido' WHERE `locale`='esMX' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Segundo altar de Invocación destruido' WHERE `locale`='esMX' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Tercer altar de Invocación destruido' WHERE `locale`='esMX' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Cuarto altar de Invocación destruido' WHERE `locale`='esMX' AND `ID`=13119; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbe colocado en el laboratorio de abominaciones' WHERE `locale`='esMX' AND `ID`=13120; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Orbe colocado en el laboratorio de gigantes de carne' WHERE `locale`='esMX' AND `ID`=13120; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Orbe colocado en la zona de la caldera' WHERE `locale`='esMX' AND `ID`=13120; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Información para la Bruja Osaria conseguida' WHERE `locale`='esMX' AND `ID`=13121; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ensamblajes de centrifugadoras destruidos' WHERE `locale`='esMX' AND `ID`=13126; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Varos Zancanubes derrotado' WHERE `locale`='esMX' AND `ID`=13126; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Señor de la Magia Urom derrotado' WHERE `locale`='esMX' AND `ID`=13127; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardián-Ley Eregos derrotado' WHERE `locale`='esMX' AND `ID`=13128; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rey Ymiron asesinado' WHERE `locale`='esMX' AND `ID`=13132; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Iskalder llevado a la Bruja Osaria' WHERE `locale`='esMX' AND `ID`=13133; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Orbes de sangre rotos' WHERE `locale`='esMX' AND `ID`=13134; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Tanques de líquido de embalsamar destruidos' WHERE `locale`='esMX' AND `ID`=13134; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Iskalder derrotado en combate' WHERE `locale`='esMX' AND `ID`=13137; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Acechador ágil subyugado devuelto' WHERE `locale`='esMX' AND `ID`=13143; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Abominaciones encadenadas quemadas' WHERE `locale`='esMX' AND `ID`=13144; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Altar de sacrificio inspeccionado' WHERE `locale`='esMX' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Forja de sangre inspeccionada' WHERE `locale`='esMX' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Oteador de hielo inspeccionado' WHERE `locale`='esMX' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Runas inspeccionadas' WHERE `locale`='esMX' AND `ID`=13145; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Bombas de la Plaga entregadas' WHERE `locale`='esMX' AND `ID`=13146; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pelea entre obreros iniciada' WHERE `locale`='esMX' AND `ID`=13147; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cajas de grano apestado disipadas' WHERE `locale`='esMX' AND `ID`=13149; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Mal\'Ganis derrotado' WHERE `locale`='esMX' AND `ID`=13151; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Parches liberado' WHERE `locale`='esMX' AND `ID`=13152; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ayudar a Parches a matar al doctor Sabnok' WHERE `locale`='esMX' AND `ID`=13152; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cianigosa asesinada' WHERE `locale`='esMX' AND `ID`=13159; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Centinelas Piel de Hielo aniquilados' WHERE `locale`='esMX' AND `ID`=13160; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Miembro de la Plaga asesinado' WHERE `locale`='esMX' AND `ID`=13166; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Canes de peste hambrientos alimentados' WHERE `locale`='esMX' AND `ID`=13169; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Oteadores inquietos asesinados' WHERE `locale`='esMX' AND `ID`=13170; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cristales de la Plaga desterrados' WHERE `locale`='esMX' AND `ID`=13171; +UPDATE `quest_template_locale` SET `ObjectiveText1`='No-muerto de la Cantera Llorosa masacrado' WHERE `locale`='esMX' AND `ID`=13172; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Horda asesinados' WHERE `locale`='esMX' AND `ID`=13177; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Alianza asesinados' WHERE `locale`='esMX' AND `ID`=13178; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Horda asesinados' WHERE `locale`='esMX' AND `ID`=13179; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros de la Alianza asesinados' WHERE `locale`='esMX' AND `ID`=13180; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de la Plaga nerubianos destruidos' WHERE `locale`='esMX' AND `ID`=13182; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aparatos de asedio de la Alianza destruidos' WHERE `locale`='esMX' AND `ID`=13185; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aparatos de asedio de la Horda destruidos' WHERE `locale`='esMX' AND `ID`=13186; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Los Olvidados aniquilados' WHERE `locale`='esMX' AND `ID`=13187; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Heraldo Volazj derrotado' WHERE `locale`='esMX' AND `ID`=13187; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver de vigía Ahn\'kahar quemado' WHERE `locale`='esMX' AND `ID`=13190; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Exploración de Brann completada' WHERE `locale`='esMX' AND `ID`=13207; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cadáver purulento quemado' WHERE `locale`='esMX' AND `ID`=13211; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Cruzado Olakini Sainrith resucitado' WHERE `locale`='esMX' AND `ID`=13220; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vehículo de asedio defendido' WHERE `locale`='esMX' AND `ID`=13222; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vehículo de asedio de la Horda defendido' WHERE `locale`='esMX' AND `ID`=13223; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rabioso moribundo interrogado' WHERE `locale`='esMX' AND `ID`=13228; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldado de la Alianza moribundo asesinado' WHERE `locale`='esMX' AND `ID`=13230; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldado moribundo interrogado' WHERE `locale`='esMX' AND `ID`=13231; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Soldados moribundos asesinados' WHERE `locale`='esMX' AND `ID`=13232; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esbirro necrófago alzado' WHERE `locale`='esMX' AND `ID`=13236; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Abominaciones descomunales asesinadas' WHERE `locale`='esMX' AND `ID`=13237; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Nigromantes malévolos asesinados' WHERE `locale`='esMX' AND `ID`=13237; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Adepto de sombra asesinado' WHERE `locale`='esMX' AND `ID`=13237; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prueba del campo completada' WHERE `locale`='esMX' AND `ID`=13239; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ensayo de campo realizado' WHERE `locale`='esMX' AND `ID`=13261; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esMX' AND `ID`=13264; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esMX' AND `ID`=13264; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esMX' AND `ID`=13264; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esMX' AND `ID`=13276; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esMX' AND `ID`=13276; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esMX' AND `ID`=13276; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Coprous el Profanado derrotado' WHERE `locale`='esMX' AND `ID`=13278; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esMX' AND `ID`=13279; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Confalón de batalla de la Alianza plantado' WHERE `locale`='esMX' AND `ID`=13280; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esMX' AND `ID`=13281; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Confalón de batalla de la Horda plantado' WHERE `locale`='esMX' AND `ID`=13283; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tropas de la Alianza escoltadas hasta Ymirheim' WHERE `locale`='esMX' AND `ID`=13284; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ayuda a Brann a crear la piedra angular' WHERE `locale`='esMX' AND `ID`=13285; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Abominaciones descomunales asesinadas' WHERE `locale`='esMX' AND `ID`=13287; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Nigromantes malévolos asesinados' WHERE `locale`='esMX' AND `ID`=13287; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Adepto de sombra asesinado' WHERE `locale`='esMX' AND `ID`=13287; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esMX' AND `ID`=13288; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esMX' AND `ID`=13288; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esMX' AND `ID`=13288; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Necrófagos de Hielo explotados' WHERE `locale`='esMX' AND `ID`=13289; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Geists sañosos explotados' WHERE `locale`='esMX' AND `ID`=13289; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Soldados de la Alianza resucitados explotados' WHERE `locale`='esMX' AND `ID`=13289; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pruebas de campo realizadas' WHERE `locale`='esMX' AND `ID`=13291; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Garfacielo Razaescarcha matado' WHERE `locale`='esMX' AND `ID`=13292; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Pila de peste neutralizada' WHERE `locale`='esMX' AND `ID`=13295; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Caldera de peste neutralizada' WHERE `locale`='esMX' AND `ID`=13297; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Coprous el Profanado derrotado' WHERE `locale`='esMX' AND `ID`=13298; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Completar logro: Maestro cultural de Rasganorte' WHERE `locale`='esMX' AND `ID`=13299; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavo de las minas de saronita rescatado' WHERE `locale`='esMX' AND `ID`=13300; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tropas de la Horda escoltadas hasta Ymirheim' WHERE `locale`='esMX' AND `ID`=13301; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavo de las minas de saronita rescatado' WHERE `locale`='esMX' AND `ID`=13302; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Completar logro: Maestro cultural de Rasganorte' WHERE `locale`='esMX' AND `ID`=13303; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barricadas construidas' WHERE `locale`='esMX' AND `ID`=13306; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Infiltrados de El Rompecielos ayudados' WHERE `locale`='esMX' AND `ID`=13309; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Infiltrados Kor\'kron ayudados' WHERE `locale`='esMX' AND `ID`=13310; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aviones de caza de El Rompecielos derribados' WHERE `locale`='esMX' AND `ID`=13313; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aldur\'thar sur visitado' WHERE `locale`='esMX' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aldur\'thar central visitado' WHERE `locale`='esMX' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Aldur\'thar norte visitado' WHERE `locale`='esMX' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Aldur\'thar noroeste visitado' WHERE `locale`='esMX' AND `ID`=13315; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esMX' AND `ID`=13318; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sobrestante Faedris asesinado' WHERE `locale`='esMX' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Sobrestante Jhaeqon asesinado' WHERE `locale`='esMX' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sobrestante Veraj asesinado' WHERE `locale`='esMX' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sobrestante Savryn asesinado' WHERE `locale`='esMX' AND `ID`=13319; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestra azul recogida' WHERE `locale`='esMX' AND `ID`=13320; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Muestra verde recogida' WHERE `locale`='esMX' AND `ID`=13320; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Muestra negra recogida' WHERE `locale`='esMX' AND `ID`=13320; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esMX' AND `ID`=13321; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esMX' AND `ID`=13322; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esMX' AND `ID`=13323; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huesos de atracadores esqueléticos disueltos' WHERE `locale`='esMX' AND `ID`=13329; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul de Ymirheim asesinados' WHERE `locale`='esMX' AND `ID`=13330; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aviones de caza de El Rompecielos derribados' WHERE `locale`='esMX' AND `ID`=13331; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Barricadas construidas' WHERE `locale`='esMX' AND `ID`=13332; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huesos de atracadores esqueléticos disueltos' WHERE `locale`='esMX' AND `ID`=13335; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykul de Ymirheim asesinados ' WHERE `locale`='esMX' AND `ID`=13336; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido derrotado' WHERE `locale`='esMX' AND `ID`=13346; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido asesinado' WHERE `locale`='esMX' AND `ID`=13350; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Aldur\'thar sur visitado' WHERE `locale`='esMX' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aldur\'thar central visitado' WHERE `locale`='esMX' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Aldur\'thar norte visitado' WHERE `locale`='esMX' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Aldur\'thar noroeste visitado' WHERE `locale`='esMX' AND `ID`=13351; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esMX' AND `ID`=13352; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Subyugador oscuro arrastrado y soltado' WHERE `locale`='esMX' AND `ID`=13353; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sobrestante Faedris asesinado' WHERE `locale`='esMX' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Sobrestante Jhaeqon asesinado' WHERE `locale`='esMX' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sobrestante Veraj asesinado' WHERE `locale`='esMX' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Sobrestante Savryn asesinado' WHERE `locale`='esMX' AND `ID`=13354; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestra azul recogida' WHERE `locale`='esMX' AND `ID`=13355; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Muestra verde recogida' WHERE `locale`='esMX' AND `ID`=13355; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Muestra negra recogida' WHERE `locale`='esMX' AND `ID`=13355; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esMX' AND `ID`=13356; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Masa aviesa expulsada' WHERE `locale`='esMX' AND `ID`=13357; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El destino del príncipe' WHERE `locale`='esMX' AND `ID`=13361; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gambito de Tirion' WHERE `locale`='esMX' AND `ID`=13364; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido derrotado' WHERE `locale`='esMX' AND `ID`=13367; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Alumeth el Ascendido derrotado' WHERE `locale`='esMX' AND `ID`=13368; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esbirro necrófago alzado' WHERE `locale`='esMX' AND `ID`=13395; +UPDATE `quest_template_locale` SET `ObjectiveText1`='El destino del príncipe' WHERE `locale`='esMX' AND `ID`=13400; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gambito de Tirion' WHERE `locale`='esMX' AND `ID`=13403; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Élites Juraescama asesinados' WHERE `locale`='esMX' AND `ID`=13414; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vrykuls exhaustos disciplinados' WHERE `locale`='esMX' AND `ID`=13422; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huye de Arroyoplata' WHERE `locale`='esMX' AND `ID`=13524; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destruye una de las tres torres sur' WHERE `locale`='esMX' AND `ID`=13538; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Destruye una torre sur en Conquista del Invierno' WHERE `locale`='esMX' AND `ID`=13539; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Leopardos de escarcha hembra recuperadas' WHERE `locale`='esMX' AND `ID`=13549; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Osas Patahielo recuperadas' WHERE `locale`='esMX' AND `ID`=13549; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Usar Estocada sobre objetivos cuerpo a cuerpo' WHERE `locale`='esMX' AND `ID`=13625; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Usar Romper escudo sobre objetivos a distancia vulnerables' WHERE `locale`='esMX' AND `ID`=13625; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Usar Cargar sobre objetivos de carga vulnerables' WHERE `locale`='esMX' AND `ID`=13625; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muerte de Sir Wendell Balfour investigada' WHERE `locale`='esMX' AND `ID`=13643; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Muerte de Lorien Resplandor investigada' WHERE `locale`='esMX' AND `ID`=13643; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Muerte de Conall Empuñadura de Hierro investigada' WHERE `locale`='esMX' AND `ID`=13643; +UPDATE `quest_template_locale` SET `ObjectiveText1`='G.U.A.O. golpeada' WHERE `locale`='esMX' AND `ID`=13649; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Grifo del Caballero Negro controlado' WHERE `locale`='esMX' AND `ID`=13663; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Corona de Hielo muerto' WHERE `locale`='esMX' AND `ID`=13671; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembro de la Plaga de Corona de Hielo muerto' WHERE `locale`='esMX' AND `ID`=13676; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Usar Estocada sobre objetivos cuerpo a cuerpo' WHERE `locale`='esMX' AND `ID`=13677; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Usar Romper escudo sobre objetivos a distancia vulnerables' WHERE `locale`='esMX' AND `ID`=13677; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Usar Cargar sobre objetivos de carga vulnerables' WHERE `locale`='esMX' AND `ID`=13677; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Valeroso Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13679; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Valeroso Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13680; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13699; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Decidió convertirse en Escudero de Ventormenta.' WHERE `locale`='esMX' AND `ID`=13710; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13713; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13723; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13724; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13725; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13726; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13727; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13728; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13729; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Campeón Argenta derrotado' WHERE `locale`='esMX' AND `ID`=13731; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esMX' AND `ID`=13789; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esMX' AND `ID`=13791; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esMX' AND `ID`=13810; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Miembros del Culto de los Malditos eliminados' WHERE `locale`='esMX' AND `ID`=13813; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Jeran Cierramadera' WHERE `locale`='esMX' AND `ID`=13828; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Estocada contra el objetivo cuerpo a cuerpo' WHERE `locale`='esMX' AND `ID`=13828; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Jeran Cierramadera' WHERE `locale`='esMX' AND `ID`=13829; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Estocada contra el objetivo cuerpo a cuerpo' WHERE `locale`='esMX' AND `ID`=13829; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Valis Cazavientos' WHERE `locale`='esMX' AND `ID`=13835; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Romper escudo contra un objetivo a distancia vulnerable' WHERE `locale`='esMX' AND `ID`=13835; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Rugan Tripacero' WHERE `locale`='esMX' AND `ID`=13837; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Carga contra un objetivo de carga vulnerable' WHERE `locale`='esMX' AND `ID`=13837; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Valis Cazavientos' WHERE `locale`='esMX' AND `ID`=13838; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Utiliza Romper escudo contra un objetivo a distancia vulnerable' WHERE `locale`='esMX' AND `ID`=13838; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Consejo de Rugan Tripacero' WHERE `locale`='esMX' AND `ID`=13839; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Carga contra un objetivo de carga vulnerable' WHERE `locale`='esMX' AND `ID`=13839; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Salpicaduras de pellejo venenoso sobre ti' WHERE `locale`='esMX' AND `ID`=13850; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de dinosaurio fresca entregada a prole de pellejo venenoso' WHERE `locale`='esMX' AND `ID`=13889; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de silítido dada de comer a prole de pellejo venenoso' WHERE `locale`='esMX' AND `ID`=13903; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de silítido entregados a prole de pellejo venenoso' WHERE `locale`='esMX' AND `ID`=13904; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de dinosaurio fresca entregada a prole de pellejo venenoso' WHERE `locale`='esMX' AND `ID`=13915; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Huevos de silítido entregados a prole de pellejo venenoso' WHERE `locale`='esMX' AND `ID`=13916; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carne de silítido dada de comer a prole de pellejo venenoso' WHERE `locale`='esMX' AND `ID`=13917; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con la supervisora de huérfanos Aria' WHERE `locale`='esMX' AND `ID`=13926; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con la supervisora de huérfanos Aria' WHERE `locale`='esMX' AND `ID`=13927; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tira un zepelín de papel pequeño a Roo' WHERE `locale`='esMX' AND `ID`=13937; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Tira un zepelín de papel pequeño a Kekek' WHERE `locale`='esMX' AND `ID`=13938; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar relleno de pan de especias' WHERE `locale`='esMX' AND `ID`=14023; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar tarta de calabaza' WHERE `locale`='esMX' AND `ID`=14024; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara chatni de arándanos' WHERE `locale`='esMX' AND `ID`=14028; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara batata confitada' WHERE `locale`='esMX' AND `ID`=14033; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar pavo a fuego lento' WHERE `locale`='esMX' AND `ID`=14035; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar relleno de pan de especias' WHERE `locale`='esMX' AND `ID`=14037; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar tarta de calabaza' WHERE `locale`='esMX' AND `ID`=14040; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara chatni de arándanos' WHERE `locale`='esMX' AND `ID`=14041; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Prepara batata confitada' WHERE `locale`='esMX' AND `ID`=14043; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preparar pavo a fuego lento' WHERE `locale`='esMX' AND `ID`=14047; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de compartir' WHERE `locale`='esMX' AND `ID`=14064; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de compartir' WHERE `locale`='esMX' AND `ID`=14065; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Extremaunción administrada' WHERE `locale`='esMX' AND `ID`=14077; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kvaldir asesinados' WHERE `locale`='esMX' AND `ID`=14080; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Seguidor Veloneve capturado' WHERE `locale`='esMX' AND `ID`=14090; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kul el Temerario rescatado' WHERE `locale`='esMX' AND `ID`=14096; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aspirantes cautivos rescatados' WHERE `locale`='esMX' AND `ID`=14096; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Espíritu de héroe caído bendecido' WHERE `locale`='esMX' AND `ID`=14107; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lanzar lanzas al kraken de El Mar del Norte' WHERE `locale`='esMX' AND `ID`=14108; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kvaldir asesinados' WHERE `locale`='esMX' AND `ID`=14140; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Seguidor Veloneve capturado' WHERE `locale`='esMX' AND `ID`=14141; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Kul el Temerario rescatado' WHERE `locale`='esMX' AND `ID`=14142; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Aspirantes cautivos rescatados' WHERE `locale`='esMX' AND `ID`=14142; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Extremaunción administrada' WHERE `locale`='esMX' AND `ID`=14144; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Transmutaciones de gema épica' WHERE `locale`='esMX' AND `ID`=14151; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preguntar a Krasus sobre el origen de la empuñadura' WHERE `locale`='esMX' AND `ID`=14444; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Llevar la Quel\'Delar a las Cámaras de Reflexión' WHERE `locale`='esMX' AND `ID`=24480; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavos de la Alianza liberados' WHERE `locale`='esMX' AND `ID`=24498; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Encontrar a Jaina Valiente' WHERE `locale`='esMX' AND `ID`=24500; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Escapar del Rey Exánime' WHERE `locale`='esMX' AND `ID`=24500; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Esclavos de la Horda liberados' WHERE `locale`='esMX' AND `ID`=24507; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Bendición de Thalorien obtenida' WHERE `locale`='esMX' AND `ID`=24535; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardias perfumados analizados' WHERE `locale`='esMX' AND `ID`=24536; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Preguntar a Krasus sobre el origen de la empuñadura' WHERE `locale`='esMX' AND `ID`=24555; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Llevar la Quel\'Delar a las Cámaras de Reflexión' WHERE `locale`='esMX' AND `ID`=24561; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Bendición de Thalorien obtenida' WHERE `locale`='esMX' AND `ID`=24563; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras dadas' WHERE `locale`='esMX' AND `ID`=24629; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras dadas' WHERE `locale`='esMX' AND `ID`=24635; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Muestras dadas' WHERE `locale`='esMX' AND `ID`=24636; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24638; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24645; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24647; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24648; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24649; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24650; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24651; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24652; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Guardias perfumados analizados' WHERE `locale`='esMX' AND `ID`=24655; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24658; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24659; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24660; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24662; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24663; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24664; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24665; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Vagón químico destruido' WHERE `locale`='esMX' AND `ID`=24666; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habitantes del pueblo perfumados analizados' WHERE `locale`='esMX' AND `ID`=24746; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rey Exánime derrotado' WHERE `locale`='esMX' AND `ID`=24748; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Encontrar a Sylvanas Brisaveloz' WHERE `locale`='esMX' AND `ID`=24802; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Escapar del Rey Exánime' WHERE `locale`='esMX' AND `ID`=24802; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Contaduría de Ventormenta revisada' WHERE `locale`='esMX' AND `ID`=24849; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Casa de subastas de Ventormenta revisada' WHERE `locale`='esMX' AND `ID`=24849; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Peluquería de Ventormenta revisada' WHERE `locale`='esMX' AND `ID`=24849; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Banco de Orgrimmar revisado' WHERE `locale`='esMX' AND `ID`=24851; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Casa de subastas de Orgrimmar revisada' WHERE `locale`='esMX' AND `ID`=24851; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Peluquería de Orgrimmar revisada' WHERE `locale`='esMX' AND `ID`=24851; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rescata a Darnavan' WHERE `locale`='esMX' AND `ID`=24869; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Minchar rescatado' WHERE `locale`='esMX' AND `ID`=24874; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Rescata a Darnavan' WHERE `locale`='esMX' AND `ID`=24875; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Minchar rescatado' WHERE `locale`='esMX' AND `ID`=24879; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Saluda al sargento de maniobras' WHERE `locale`='esMX' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ruge con el sargento de maniobras' WHERE `locale`='esMX' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Brinda con el sargento de maniobras' WHERE `locale`='esMX' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Baila con el sargento de maniobras' WHERE `locale`='esMX' AND `ID`=25199; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Lanzar Radiageigatrones a los conductos de ventilación de Gnomeregan' WHERE `locale`='esMX' AND `ID`=25212; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escucha el discurso de los presagistas de la Fatalidad' WHERE `locale`='esMX' AND `ID`=25228; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Gnomos motivados' WHERE `locale`='esMX' AND `ID`=25229; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Gnomos motivados traidos al Capitán Chispaboquilla' WHERE `locale`='esMX' AND `ID`=25229; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Escucha el discurso de los presagistas de la Fatalidad' WHERE `locale`='esMX' AND `ID`=25253; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carteles colocados' WHERE `locale`='esMX' AND `ID`=25254; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Carteles colocados' WHERE `locale`='esMX' AND `ID`=25282; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Dar un discurso a Ozzie Voltiflop' WHERE `locale`='esMX' AND `ID`=25283; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Dar un discurso a Milli Plumasilba' WHERE `locale`='esMX' AND `ID`=25283; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Dar un discurso a Tog Oxidentado' WHERE `locale`='esMX' AND `ID`=25283; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sistema de eyección probado' WHERE `locale`='esMX' AND `ID`=25285; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Únete al Culto del Juicio Final' WHERE `locale`='esMX' AND `ID`=25288; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Servo de la pata izquierda probada' WHERE `locale`='esMX' AND `ID`=25289; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Servo de la pata derecha probada' WHERE `locale`='esMX' AND `ID`=25289; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Sistema de maniobras evasivas probada' WHERE `locale`='esMX' AND `ID`=25289; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Únete al Culto del Juicio Final' WHERE `locale`='esMX' AND `ID`=25290; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con el cultor Kagarn' WHERE `locale`='esMX' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Habla con el cultor Agtar' WHERE `locale`='esMX' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Habla con la cultora Tokka' WHERE `locale`='esMX' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Habla con la cultora Rokaga' WHERE `locale`='esMX' AND `ID`=25293; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sistemas armamentísticos probados' WHERE `locale`='esMX' AND `ID`=25295; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Sistema de eyección probado' WHERE `locale`='esMX' AND `ID`=25306; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Revelación de Cho\'Gall' WHERE `locale`='esMX' AND `ID`=25343; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Difundir el mensaje en la torre de zepelín este' WHERE `locale`='esMX' AND `ID`=25380; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Difundir el mensaje en la torre de zepelín oeste' WHERE `locale`='esMX' AND `ID`=25380; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Difundir el mensaje en Cerrotajo' WHERE `locale`='esMX' AND `ID`=25380; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Recuperar la superficie de Gnomeregan' WHERE `locale`='esMX' AND `ID`=25393; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Habla con la cultora Lethelyn' WHERE `locale`='esMX' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Habla con la cultora Kaima' WHERE `locale`='esMX' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Habla con el cultor Wyman' WHERE `locale`='esMX' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText4`='Habla con el cultor Orlunn' WHERE `locale`='esMX' AND `ID`=25414; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Difundir el mensaje en el Cuartel de Arroyoeste' WHERE `locale`='esMX' AND `ID`=25415; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Difundir el mensaje en el Valle de los Héroes' WHERE `locale`='esMX' AND `ID`=25415; +UPDATE `quest_template_locale` SET `ObjectiveText3`='Difundir el mensaje en Villadorada' WHERE `locale`='esMX' AND `ID`=25415; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Revelación de Cho\'Gall' WHERE `locale`='esMX' AND `ID`=25416; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Ranas de Sen\'jin armonizadas' WHERE `locale`='esMX' AND `ID`=25444; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Zalazane matado' WHERE `locale`='esMX' AND `ID`=25445; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Ranas sintonizadas colocadas' WHERE `locale`='esMX' AND `ID`=25446; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Voluntarios trol reclutados' WHERE `locale`='esMX' AND `ID`=25461; +UPDATE `quest_template_locale` SET `ObjectiveText2`='Voluntarios trol entregados al Campeón Uru\'zin' WHERE `locale`='esMX' AND `ID`=25461; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Reta a la matriarca tigresa' WHERE `locale`='esMX' AND `ID`=25470; +UPDATE `quest_template_locale` SET `ObjectiveText1`='Danza de los espíritus' WHERE `locale`='esMX' AND `ID`=25480; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_03_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_03_00_world.sql new file mode 100644 index 00000000000..4e9365c39fa --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_03_00_world.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (64414); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13,1,64414,0,0,31,0,3,33109,0,0,0,0,'','Load Into Catapult target Salvaged Demolisher'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_00_world.sql new file mode 100644 index 00000000000..147a694a151 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_00_world.sql @@ -0,0 +1,249 @@ +-- Ymirheim Updates +UPDATE `creature` SET `position_x`=7178.28, `position_y`=1939.18, `position_z`=558.933, `orientation`=5.497786998748779296 WHERE `guid`=121141; +UPDATE `creature_addon` SET `StandState`=1 WHERE `guid` IN (121141,121164); +UPDATE `waypoint_data` SET `id`=1214230 WHERE `id`=1211710; +UPDATE `creature` SET `position_x`=7151.5, `position_y`=1895.11, `position_z`=540.436, `orientation`=4.6, `MovementType`=2, `wander_distance`=0 WHERE `guid`=121423; +UPDATE `creature_addon` SET `path_id`=1214230 WHERE `guid`=121423; +UPDATE `creature` SET `equipment_id`=0, `position_x`=7211.31201171875, `position_y`=1803.10546875, `position_z`=527.7430419921875, `orientation`=4.660028934478759765, `MovementType`=0 WHERE `guid`=121137; +UPDATE `creature_addon` SET `SheathState`=0 WHERE `guid` IN (121137,121152); +UPDATE `creature` SET `position_x`=7185.58203125, `position_y`=1861.2357177734375, `position_z`=532.28070068359375, `orientation`=3.211405754089355468, `MovementType`=0 WHERE `guid`=121171; +UPDATE `creature` SET `position_x`=7263.79443359375, `position_y`=1664.0059814453125, `position_z`=443.9375, `orientation`=6.126105785369873046 WHERE `guid`=120901; +UPDATE `creature_addon` SET `path_id`=0, `StandState`=1 WHERE `guid`=121171; +UPDATE `creature` SET `equipment_id`=0 WHERE `guid` IN (121143,121152,121154); +UPDATE `creature_addon` SET `emote`=333 WHERE `guid`=121169; +UPDATE `creature_addon` SET `emote`=459 WHERE `guid` IN (121138,121159); +UPDATE `creature` SET `position_x`=6815.93408203125, `position_y`=1826.19189453125, `position_z`=578.795166015625, `orientation`=4.852015495300292968 WHERE `guid`=121159; +UPDATE `waypoint_data` SET `id`=1212370 WHERE `id`=1214690; +UPDATE `creature` SET `position_x`=7235.66, `position_y`=2026.75, `position_z`=574.407, `MovementType`=2, `wander_distance`=0 WHERE `guid`=121237; +UPDATE `creature` SET `position_x`=7178.044921875, `position_y`=1975.9620361328125, `position_z`=574.13299560546875, `orientation`=2.757620096206665039, `MovementType`=0 WHERE `guid`=121469; +UPDATE `creature_addon` SET `path_id`=0, `StandState`=8 WHERE `guid`=121469; +UPDATE `creature` SET `position_x`=7225.90966796875, `position_y`=1592.8804931640625, `position_z`=379.873382568359375, `orientation`=5.235987663269042968 WHERE `guid`=120902; +UPDATE `creature_addon` SET `StandState`=8 WHERE `guid`=120902; + +DELETE FROM `creature_template_addon` WHERE `entry`=31262; +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(31262, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'); +DELETE FROM `creature_addon` WHERE `guid` IN (121229,121230,121231,121232,121233,121234,121235,121236,121237,121238,121239,121240); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(121229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '59532'), +(121230, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121231, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121232, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121233, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121234, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121235, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121236, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121237, 1212370, 0, 0, 0, 0, 0, 0, 0, 0, 0, '59532'), +(121238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '59532'), +(121239, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'), +(121240, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, '59532'); + +UPDATE `creature_template_addon` SET `AnimTier`=0, `auras`='54775' WHERE `entry`=31263; + +-- Ymirheim Defender +SET @GUID=40296; -- 8 free guid needed +DELETE FROM `creature` WHERE `guid`=@GUID; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID, 31746, 571, 0, 0, 1, 1, 0, 1, 7320.869140625, 1710.2799072265625, 465.02459716796875, 0.78539818525314331, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', NULL, 57292); +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, NULL); + +-- Ymirheim Chosen Warrior +DELETE FROM `creature` WHERE `guid`=@GUID+1; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+1, 31258, 571, 0, 0, 1, 1, 0, 1, 7248.92724609375, 1974.7469482421875, 570.17535400390625, 2.844886541366577148, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+1; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+1, 0, 0, 0, 0, 0, 0, 1, 0, 459, 0, NULL); + +-- Ymirheim Chosen Warrior +DELETE FROM `creature` WHERE `guid`=@GUID+2; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+2, 31258, 571, 0, 0, 1, 1, 0, 1, 7196.0791015625, 2003.345947265625, 575.2510986328125, 0.122173048555850982, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+2; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, NULL); + +-- Ymirheim Chosen Warrior +DELETE FROM `creature` WHERE `guid`=@GUID+3; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+3, 31258, 571, 0, 0, 1, 1, 0, 1, 7219.29541015625, 1893.203125, 567.2725830078125, 4.921828269958496093, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+3; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); + +-- Ymirjar Element Shaper +DELETE FROM `creature` WHERE `guid`=@GUID+4; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+4, 31267, 571, 0, 0, 1, 1, 0, 1, 7220.52978515625, 1889.025146484375, 567.76910400390625, 1.919862151145935058, 300, 0, 0, 10080, 8814, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+4; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); + +-- Ymirheim Chosen Warrior +DELETE FROM `creature` WHERE `guid`=@GUID+5; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+5, 31258, 571, 0, 0, 1, 1, 0, 1, 7147.21728515625, 1701.251953125, 477.1998291015625, 3.054326057434082031, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+5; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); + +-- Ymirjar Element Shaper +DELETE FROM `creature` WHERE `guid`=@GUID+6; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+6, 31267, 571, 0, 0, 1, 1, 0, 1, 7141.1181640625, 1700.5926513671875, 477.7032470703125, 0.383972436189651489, 300, 0, 0, 10080, 8814, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+6; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+6, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); + +-- Ymirheim Chosen Warrior +DELETE FROM `creature` WHERE `guid`=@GUID+7; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES +(@GUID+7, 31258, 571, 0, 0, 1, 1, 0, 1, 7122.36962890625, 1693.2943115234375, 478.649810791015625, 1.65806281566619873, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', NULL, 56819); +DELETE FROM `creature_addon` WHERE `guid`=@GUID+7; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID+7, 0, 0, 0, 0, 0, 0, 1, 0, 426, 0, NULL); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (31267,31258); +DELETE FROM `smart_scripts` WHERE `source_type` = 9 AND `entryorguid` = 3125800; +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 +(3125800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 58952, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - On Script - Cast 'Drink Alcohol'"), +(3125800, 9, 1, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 0, 11, 58952, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - On Script - Cast 'Drink Alcohol'"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121140; +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 +(-121140, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121141; +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 +(-121141, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -(@GUID+1); +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 +(-(@GUID+1), 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -(@GUID+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 +(-(@GUID+2), 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121144; +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 +(-121144, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121145; +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 +(-121145, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121149; +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 +(-121149, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -(@GUID+7); +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 +(-(@GUID+7), 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121155; +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 +(-121155, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121156; +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 +(-121156, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121159; +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 +(-121159, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121163; +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 +(-121163, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121164; +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 +(-121164, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121165; +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 +(-121165, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121170; +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 +(-121170, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = -121171; +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 +(-121171, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 30000, 30000, 0, 80, 3125800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Chosen Warrior - OOC - Call Timed Actionlist"); + +-- Emotes +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121465; +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 +(-121465, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121166; +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 +(-121166, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121467; +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 +(-121467, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121167; +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 +(-121167, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-(@GUID+6); +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 +(-(@GUID+6), 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-(@GUID+5); +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 +(-(@GUID+5), 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-(@GUID+4); +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 +(-(@GUID+4), 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-(@GUID+3); +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 +(-(@GUID+3), 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121468; +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 +(-121468, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121172; +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 +(-121172, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121410; +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 +(-121410, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121139; +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 +(-121139, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121455; +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 +(-121455, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121162; +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 +(-121162, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121451; +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 +(-121451, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121158; +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 +(-121158, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121453; +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 +(-121453, 0, 0, 0, 1, 0, 100, 0, 4000, 4000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirjar Element Shaper - OOC - Play Emote 1"); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-121160; +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 +(-121160, 0, 0, 0, 1, 0, 100, 0, 5000, 5000, 17000, 17000, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Ymirheim Chosen Warrior - OOC - Play Emote 1"); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_01_world.sql new file mode 100644 index 00000000000..d1e4583c8b3 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_01_world.sql @@ -0,0 +1,5 @@ +-- Portal: Darnassus AND Portal: Thunder Bluff required lvl 50 +UPDATE `trainer_spell` SET `ReqLevel`=50 WHERE `SpellID` IN (11419,11420); + +-- Teleport: Darnassus AND Teleport: Thunder Bluff required lvl 30 +UPDATE `trainer_spell` SET `ReqLevel`=30 WHERE `SpellID` IN (3565,3566); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_02_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_02_world.sql new file mode 100644 index 00000000000..264fec668d8 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_05_02_world.sql @@ -0,0 +1,3 @@ +-- +UPDATE `gameobject` SET `rotation2`=-0.99026775360107421, `rotation3`=0.139175355434417724 WHERE `guid` IN (13553); +UPDATE `gameobject` SET `rotation2`=-0.13917255401611328, `rotation3`=0.990268170833587646 WHERE `guid` IN (13563); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_07_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_07_00_world.sql new file mode 100644 index 00000000000..1cab47751ea --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_07_00_world.sql @@ -0,0 +1,17 @@ +-- Birgitte Cranston +SET @NPC=5957; +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = @NPC; +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = @NPC); +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 +(@NPC,0,0,0,22,0,100,0,41,5000,5000,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Birgitte Cranston - On Received Emote 'Flex' - Say Line 0"), +(@NPC,0,1,0,22,0,100,0,77,5000,5000,0,0,1,1,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Birgitte Cranston - On Received Emote 'Rude' - Say Line 1"), +(@NPC,0,2,0,22,0,100,0,17,5000,5000,0,0,5,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Birgitte Cranston - On Received Emote 'Bow' - Play Emote 2"), +(@NPC,0,3,0,22,0,100,0,78,5000,5000,0,0,5,66,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Birgitte Cranston - On Received Emote 'Salute' - Play Emote 66"), +(@NPC,0,4,0,22,0,100,0,101,5000,5000,0,0,5,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Birgitte Cranston - On Received Emote 'Wave' - Play Emote 3"); + +DELETE FROM `creature_text` WHERE `CreatureID`=@NPC; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(@NPC,0,0,"%s is not impressed.",16,0,100,11,0,0,1401,0,"Birgitte Cranston"), +(@NPC,1,0,"You're pushing it, $n.",12,0,100,0,0,0,1402,0,"Birgitte Cranston"), +(@NPC,1,1,"Don't make me go medieval on you.",12,0,100,0,0,0,1403,0,"Birgitte Cranston"), +(@NPC,1,2,"Keep it up, $n, and I'll beat some manners into you.",12,0,100,0,0,0,1404,0,"Birgitte Cranston"); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_07_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_07_01_world.sql new file mode 100644 index 00000000000..7aa21f53c4e --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_07_01_world.sql @@ -0,0 +1,2 @@ +-- Adjust minimum reputation value required for 'A Special Thank You' (Friendly) +UPDATE `quest_template_addon` SET `RequiredMinRepValue`=3000 WHERE `ID`=11091; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_08_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_08_00_world.sql new file mode 100644 index 00000000000..538927b043b --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_08_00_world.sql @@ -0,0 +1,14 @@ +-- https://www.wowhead.com/wotlk/quest=467/stonegears-search +-- 2nd Questgiver for "Stonegear's Search" (Pilot Longbeard) +DELETE FROM `creature_queststarter` WHERE `id` = 2092 AND `quest` = 467; +INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (2092, 467); + +-- https://www.wowhead.com/wotlk/quest=1698/yorus-barleybrew +-- 2nd Questgiver for "Yorus Barleybrew" (Darnath Bladesinger) +DELETE FROM `creature_queststarter` WHERE `id` = 7315 AND `quest` = 1698; +INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (7315, 1698); + +-- https://www.wowhead.com/wotlk/quest=1684/elanaria +-- 3rd Questgiver for "Elanaria" (Sentinel Elissa Starbreeze) +DELETE FROM `creature_queststarter` WHERE `id` = 3657 AND `quest` = 1684; +INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (3657, 1684); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_00_world.sql new file mode 100644 index 00000000000..312792cb6f7 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_00_world.sql @@ -0,0 +1,51 @@ +-- Rivendark +SET @NPC=23061; +DELETE FROM `creature_text` WHERE `CreatureID`=@NPC; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(@NPC,0,0,"Get away from my clutch!!!",14,0,100,0,0,7274,21696,0,'Rivendark'), +(@NPC,0,1,"I know you by your stench, little $n. Here, in my perch, is where your bones shall finally rest.",14,0,100,0,0,7274,21706,0,'Rivendark'), +(@NPC,0,2,"I tire of interruptions from the insignificant. Your time has come, $n!",14,0,100,0,0,7274,21710,0,'Rivendark'), +(@NPC,0,3,"The Skyguard shall pay for your temerity, $n!",14,0,100,0,0,7274,21714,0,'Rivendark'), +(@NPC,0,4,"I believe that I shall feast upon both $r and ogre flesh tonight.",14,0,100,0,0,7274,21718,0,'Rivendark'), +(@NPC,0,5,"Little $r, you will now come to appreciate my wrath!",14,0,100,0,0,7274,21720,0,'Rivendark'), +(@NPC,0,6,"You have dared to defile my perch and must now be cleansed in fire!",14,0,100,0,0,7274,21726,0,'Rivendark'), +(@NPC,0,7,"What's this?! $n and $g his : her; friends come to play?",14,0,100,0,0,7274,21733,0,'Rivendark'); + +-- Furywing +SET @NPC=23261; +DELETE FROM `creature_text` WHERE `CreatureID`=@NPC; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(@NPC,0,0,"Get away from my clutch!!!",14,0,100,0,0,7274,21696,0,'Furywing'), +(@NPC,0,1,"I know you by your stench, little $n. Here, in my perch, is where your bones shall finally rest.",14,0,100,0,0,7274,21706,0,'Furywing'), +(@NPC,0,2,"I tire of interruptions from the insignificant. Your time has come, $n!",14,0,100,0,0,7274,21710,0,'Furywing'), +(@NPC,0,3,"The Skyguard shall pay for your temerity, $n!",14,0,100,0,0,7274,21714,0,'Furywing'), +(@NPC,0,4,"I believe that I shall feast upon both $r and ogre flesh tonight.",14,0,100,0,0,7274,21718,0,'Furywing'), +(@NPC,0,5,"Little $r, you will now come to appreciate my wrath!",14,0,100,0,0,7274,21720,0,'Furywing'), +(@NPC,0,6,"You have dared to defile my perch and must now be cleansed in fire!",14,0,100,0,0,7274,21726,0,'Furywing'), +(@NPC,0,7,"What's this?! $n and $g his : her; friends come to play?",14,0,100,0,0,7274,21733,0,'Furywing'); + +-- Insidion +SET @NPC=23281; +DELETE FROM `creature_text` WHERE `CreatureID`=@NPC; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(@NPC,0,0,"Get away from my clutch!!!",14,0,100,0,0,7274,21696,0,'Insidion'), +(@NPC,0,1,"I know you by your stench, little $n. Here, in my perch, is where your bones shall finally rest.",14,0,100,0,0,7274,21706,0,'Insidion'), +(@NPC,0,2,"I tire of interruptions from the insignificant. Your time has come, $n!",14,0,100,0,0,7274,21710,0,'Insidion'), +(@NPC,0,3,"The Skyguard shall pay for your temerity, $n!",14,0,100,0,0,7274,21714,0,'Insidion'), +(@NPC,0,4,"I believe that I shall feast upon both $r and ogre flesh tonight.",14,0,100,0,0,7274,21718,0,'Insidion'), +(@NPC,0,5,"Little $r, you will now come to appreciate my wrath!",14,0,100,0,0,7274,21720,0,'Insidion'), +(@NPC,0,6,"You have dared to defile my perch and must now be cleansed in fire!",14,0,100,0,0,7274,21726,0,'Insidion'), +(@NPC,0,7,"What's this?! $n and $g his : her; friends come to play?",14,0,100,0,0,7274,21733,0,'Insidion'); + +-- Obsidia +SET @NPC=23282; +DELETE FROM `creature_text` WHERE `CreatureID`=@NPC; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(@NPC,0,0,"Get away from my clutch!!!",14,0,100,0,0,7274,21696,0,'Obsidia'), +(@NPC,0,1,"I know you by your stench, little $n. Here, in my perch, is where your bones shall finally rest.",14,0,100,0,0,7274,21706,0,'Obsidia'), +(@NPC,0,2,"I tire of interruptions from the insignificant. Your time has come, $n!",14,0,100,0,0,7274,21710,0,'Obsidia'), +(@NPC,0,3,"The Skyguard shall pay for your temerity, $n!",14,0,100,0,0,7274,21714,0,'Obsidia'), +(@NPC,0,4,"I believe that I shall feast upon both $r and ogre flesh tonight.",14,0,100,0,0,7274,21718,0,'Obsidia'), +(@NPC,0,5,"Little $r, you will now come to appreciate my wrath!",14,0,100,0,0,7274,21720,0,'Obsidia'), +(@NPC,0,6,"You have dared to defile my perch and must now be cleansed in fire!",14,0,100,0,0,7274,21726,0,'Obsidia'), +(@NPC,0,7,"What's this?! $n and $g his : her; friends come to play?",14,0,100,0,0,7274,21733,0,'Obsidia'); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_01_world.sql new file mode 100644 index 00000000000..73b6f34647a --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_01_world.sql @@ -0,0 +1,104 @@ +-- Hildana Deathstealer +SET @GUID = 151987; +SET @PATH = @GUID * 10; +UPDATE `creature` SET `position_x`=7192.40869140625,`position_y`=2087.502197265625,`position_z`=591.82122802734375,`orientation`=5.334992408752441406, `wander_distance`=0,`MovementType`=2 WHERE `guid`=@GUID; +DELETE FROM `creature_template_movement` WHERE `CreatureId`=32495; +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES +(32495, 0, 0, 1, 0, 0, 0, NULL); +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 3, 0, 1, 0, 0, 0, NULL); +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, 0, 7222.452, 2049.397, 586.3735, NULL, 0, 0, 0, 100, 0), +(@PATH, 1, 7242.69, 2020.932, 586.3621, NULL, 0, 0, 0, 100, 0), +(@PATH, 2, 7239.754, 1992.342, 582.9315, NULL, 0, 0, 0, 100, 0), +(@PATH, 3, 7217.938, 1967.975, 582.8708, NULL, 0, 0, 0, 100, 0), +(@PATH, 4, 7215.49, 1953.749, 579.5094, NULL, 0, 0, 0, 100, 0), +(@PATH, 5, 7209.799, 1933.954, 573.6544, NULL, 0, 0, 0, 100, 0), +(@PATH, 6, 7189.471, 1920.425, 566.2871, NULL, 0, 0, 0, 100, 0), +(@PATH, 7, 7176.588, 1908.39, 561.8888, NULL, 0, 0, 0, 100, 0), +(@PATH, 8, 7158.939, 1897.289, 554.6441, NULL, 0, 0, 0, 100, 0), +(@PATH, 9, 7142.65, 1883.022, 546.8456, NULL, 0, 0, 0, 100, 0), +(@PATH, 10, 7146.625, 1871.005, 542.7414, NULL, 0, 0, 0, 100, 0), +(@PATH, 11, 7143.43, 1853.5, 534.7924, NULL, 0, 0, 0, 100, 0), +(@PATH, 12, 7140.116, 1829.073, 522.2319, NULL, 0, 0, 0, 100, 0), +(@PATH, 13, 7147.326, 1802.581, 511.2054, NULL, 0, 0, 0, 100, 0), +(@PATH, 14, 7160.529, 1777.781, 502.085, NULL, 0, 0, 0, 100, 0), +(@PATH, 15, 7154.228, 1756.151, 497.3007, NULL, 0, 0, 0, 100, 0), +(@PATH, 16, 7136.289, 1737.988, 497.017, NULL, 0, 0, 0, 100, 0), +(@PATH, 17, 7111.468, 1737.822, 502.8012, NULL, 0, 0, 0, 100, 0), +(@PATH, 18, 7093.092, 1746.867, 507.5394, NULL, 0, 0, 0, 100, 0), +(@PATH, 19, 7074.251, 1757.452, 510.6808, NULL, 0, 0, 0, 100, 0), +(@PATH, 20, 7053.318, 1765.741, 513.947, NULL, 0, 0, 0, 100, 0), +(@PATH, 21, 7029.345, 1773.791, 517.5663, NULL, 0, 0, 0, 100, 0), +(@PATH, 22, 7011.002, 1761.331, 518.4968, NULL, 0, 0, 0, 100, 0), +(@PATH, 23, 6997.615, 1747.272, 519.6525, NULL, 0, 0, 0, 100, 0), +(@PATH, 24, 6977.209, 1726.555, 523.2506, NULL, 0, 0, 0, 100, 0), +(@PATH, 25, 6959.343, 1709.8, 528.5284, NULL, 0, 0, 0, 100, 0), +(@PATH, 26, 6944.034, 1703.351, 531.3673, NULL, 0, 0, 0, 100, 0), +(@PATH, 27, 6922.215, 1702.405, 535.2693, NULL, 0, 0, 0, 100, 0), +(@PATH, 28, 6905.099, 1705.328, 538.6309, NULL, 0, 0, 0, 100, 0), +(@PATH, 29, 6886.74, 1703.085, 543.012, NULL, 0, 0, 0, 100, 0), +(@PATH, 30, 6864.976, 1700.863, 548.3915, NULL, 0, 0, 0, 100, 0), +(@PATH, 31, 6848.176, 1702.512, 552.8682, NULL, 0, 0, 0, 100, 0), +(@PATH, 32, 6832.075, 1708.631, 557.7967, NULL, 0, 0, 0, 100, 0), +(@PATH, 33, 6821.65, 1718.504, 562.5582, NULL, 0, 0, 0, 100, 0), +(@PATH, 34, 6809.965, 1730.085, 568.9621, NULL, 0, 0, 0, 100, 0), +(@PATH, 35, 6803.283, 1742.857, 574.6663, NULL, 0, 0, 0, 100, 0), +(@PATH, 36, 6801.305, 1755.202, 578.022, NULL, 0, 0, 0, 100, 0), +(@PATH, 37, 6798.108, 1766.889, 580.5387, NULL, 0, 0, 0, 100, 0), +(@PATH, 38, 6797.701, 1780.178, 582.3558, NULL, 0, 0, 0, 100, 0), +(@PATH, 39, 6800.344, 1789.98, 584.1855, NULL, 0, 0, 0, 100, 0), +(@PATH, 40, 6804.535, 1803.005, 587.1995, NULL, 0, 0, 0, 100, 0), +(@PATH, 41, 6809.243, 1811.058, 589.2962, NULL, 0, 0, 0, 100, 0), +(@PATH, 42, 6804.535, 1803.005, 587.1995, NULL, 0, 0, 0, 100, 0), +(@PATH, 43, 6800.344, 1789.98, 584.1855, NULL, 0, 0, 0, 100, 0), +(@PATH, 44, 6797.701, 1780.178, 582.3558, NULL, 0, 0, 0, 100, 0), +(@PATH, 45, 6798.108, 1766.889, 580.5387, NULL, 0, 0, 0, 100, 0), +(@PATH, 46, 6801.272, 1755.311, 578.0976, NULL, 0, 0, 0, 100, 0), +(@PATH, 47, 6803.283, 1742.857, 574.6663, NULL, 0, 0, 0, 100, 0), +(@PATH, 48, 6809.965, 1730.085, 568.9621, NULL, 0, 0, 0, 100, 0), +(@PATH, 49, 6821.65, 1718.504, 562.5582, NULL, 0, 0, 0, 100, 0), +(@PATH, 50, 6832.075, 1708.631, 557.7967, NULL, 0, 0, 0, 100, 0), +(@PATH, 51, 6848.176, 1702.512, 552.8682, NULL, 0, 0, 0, 100, 0), +(@PATH, 52, 6864.976, 1700.863, 548.3915, NULL, 0, 0, 0, 100, 0), +(@PATH, 53, 6886.74, 1703.085, 543.012, NULL, 0, 0, 0, 100, 0), +(@PATH, 54, 6905.099, 1705.328, 538.6309, NULL, 0, 0, 0, 100, 0), +(@PATH, 55, 6922.215, 1702.405, 535.2693, NULL, 0, 0, 0, 100, 0), +(@PATH, 56, 6944.034, 1703.351, 531.3673, NULL, 0, 0, 0, 100, 0), +(@PATH, 57, 6959.343, 1709.8, 528.5284, NULL, 0, 0, 0, 100, 0), +(@PATH, 58, 6977.209, 1726.555, 523.2506, NULL, 0, 0, 0, 100, 0), +(@PATH, 59, 6997.615, 1747.272, 519.6525, NULL, 0, 0, 0, 100, 0), +(@PATH, 60, 7011.002, 1761.331, 518.4968, NULL, 0, 0, 0, 100, 0), +(@PATH, 61, 7029.345, 1773.791, 517.5663, NULL, 0, 0, 0, 100, 0), +(@PATH, 62, 7053.318, 1765.741, 513.947, NULL, 0, 0, 0, 100, 0), +(@PATH, 63, 7074.251, 1757.452, 510.6808, NULL, 0, 0, 0, 100, 0), +(@PATH, 64, 7093.092, 1746.867, 507.5394, NULL, 0, 0, 0, 100, 0), +(@PATH, 65, 7111.468, 1737.822, 502.8012, NULL, 0, 0, 0, 100, 0), +(@PATH, 66, 7136.289, 1737.988, 497.017, NULL, 0, 0, 0, 100, 0), +(@PATH, 67, 7154.228, 1756.151, 497.3007, NULL, 0, 0, 0, 100, 0), +(@PATH, 68, 7160.529, 1777.781, 502.085, NULL, 0, 0, 0, 100, 0), +(@PATH, 69, 7147.326, 1802.581, 511.2054, NULL, 0, 0, 0, 100, 0), +(@PATH, 70, 7140.116, 1829.073, 522.2319, NULL, 0, 0, 0, 100, 0), +(@PATH, 71, 7143.43, 1853.5, 534.7924, NULL, 0, 0, 0, 100, 0), +(@PATH, 72, 7146.625, 1871.005, 542.7414, NULL, 0, 0, 0, 100, 0), +(@PATH, 73, 7142.65, 1883.022, 546.8456, NULL, 0, 0, 0, 100, 0), +(@PATH, 74, 7158.939, 1897.289, 554.6441, NULL, 0, 0, 0, 100, 0), +(@PATH, 75, 7176.588, 1908.39, 561.8888, NULL, 0, 0, 0, 100, 0), +(@PATH, 76, 7189.471, 1920.425, 566.2871, NULL, 0, 0, 0, 100, 0), +(@PATH, 77, 7209.799, 1933.954, 573.6544, NULL, 0, 0, 0, 100, 0), +(@PATH, 78, 7215.49, 1953.749, 579.5094, NULL, 0, 0, 0, 100, 0), +(@PATH, 79, 7217.938, 1967.975, 582.8708, NULL, 0, 0, 0, 100, 0), +(@PATH, 80, 7239.754, 1992.342, 582.9315, NULL, 0, 0, 0, 100, 0), +(@PATH, 81, 7242.69, 2020.932, 586.3621, NULL, 0, 0, 0, 100, 0), +(@PATH, 82, 7222.452, 2049.397, 586.3735, NULL, 0, 0, 0, 100, 0), +(@PATH, 83, 7199.488, 2077.641, 588.7512, NULL, 0, 0, 0, 100, 0), +(@PATH, 84, 7180.812, 2103.658, 596.8508, NULL, 0, 0, 0, 100, 0), +(@PATH, 85, 7159.934, 2123.704, 608.3088, NULL, 0, 0, 0, 100, 0), +(@PATH, 86, 7137.276, 2137.024, 619.1228, NULL, 0, 0, 0, 100, 0), +(@PATH, 87, 7113.819, 2138.252, 627.6207, NULL, 0, 0, 0, 100, 0), +(@PATH, 88, 7099.208, 2130.521, 633.0135, NULL, 0, 0, 0, 100, 0), +(@PATH, 89, 7088.263, 2131.638, 637.222, NULL, 0, 0, 0, 100, 0), +(@PATH, 90, 7099.208, 2130.521, 633.0135, NULL, 0, 0, 0, 100, 0), +(@PATH, 91, 7113.819, 2138.252, 627.6207, NULL, 0, 0, 0, 100, 0); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_02_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_02_world.sql new file mode 100644 index 00000000000..6f3507cc8f1 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_10_02_world.sql @@ -0,0 +1,14 @@ +-- +SET @OGUID := 12647; -- Need 4 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+3; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195256, 571, 4197, 4589, 1, 1, 5015.90380859375, 3672.697998046875, 362.823822021484375, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Chilled Quagmire - Difficulty: 0) CreateObject1 +(@OGUID+1, 195256, 571, 4197, 4589, 1, 1, 5030.37744140625, 3683.822509765625, 362.924468994140625, 3.892086982727050781, 0, 0, -0.93041706085205078, 0.366502493619918823, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Chilled Quagmire - Difficulty: 0) CreateObject1 +(@OGUID+2, 195259, 571, 4197, 4589, 1, 1, 5027.66162109375, 3690.940185546875, 364.056243896484375, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: The Chilled Quagmire - Difficulty: 0) CreateObject1 +(@OGUID+3, 195259, 571, 4197, 4589, 1, 1, 5018.60205078125, 3683.81982421875, 363.97735595703125, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, 0); -- Hanging, Square, Small - Brewfest (Area: The Chilled Quagmire - Difficulty: 0) CreateObject1 + + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+3 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+3; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_00_world.sql new file mode 100644 index 00000000000..0dbb4e44082 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_00_world.sql @@ -0,0 +1,137 @@ +-- +SET @OGUID := 92657; -- Need 128 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+127; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181016, 595, 4100, 4100, 3, 1, 1560.3992919921875, 577.02606201171875, 106.6330337524414062, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+1, 181019, 595, 4100, 4100, 3, 1, 1558.921875, 589.404541015625, 100.94000244140625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+2, 181060, 595, 4100, 4100, 3, 1, 1556.5103759765625, 607.83856201171875, 99.869842529296875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+3, 181060, 595, 4100, 4100, 3, 1, 1555.2725830078125, 608.5069580078125, 99.8471221923828125, 5.794494152069091796, 0, 0, -0.24192142486572265, 0.970295846462249755, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+4, 181017, 595, 4100, 4100, 3, 1, 1569.8316650390625, 597.65277099609375, 103.2068328857421875, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 7200, 255, 1, 0), -- Hanging, Streamer - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+5, 181016, 595, 4100, 4100, 3, 1, 1555.8038330078125, 601.5711669921875, 99.15207672119140625, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+6, 181016, 595, 4100, 4100, 3, 1, 1573.171875, 622.828125, 99.63867950439453125, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+7, 181017, 595, 4100, 4100, 3, 1, 1575.0347900390625, 618.4757080078125, 104.6546630859375, 1.099556446075439453, 0, 0, 0.522498130798339843, 0.852640450000762939, 7200, 255, 1, 0), -- Hanging, Streamer - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+8, 181025, 595, 4100, 4100, 3, 1, 1580.1197509765625, 668.140625, 117.7477493286132812, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Large - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+9, 181016, 595, 4100, 4100, 3, 1, 1587.892333984375, 667.3992919921875, 103.0756301879882812, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+10, 181016, 595, 4100, 4100, 3, 1, 1599.44970703125, 661.5625, 103.2282791137695312, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+11, 181025, 595, 4100, 4100, 3, 1, 1605.654541015625, 657.39410400390625, 118.0041275024414062, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Large - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+12, 181016, 595, 4100, 4100, 3, 1, 1593.1632080078125, 681.8524169921875, 104.6160125732421875, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+13, 181016, 595, 4100, 4100, 3, 1, 1606.8975830078125, 677.27081298828125, 105.852813720703125, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+14, 181025, 595, 4100, 4100, 3, 1, 1613.7396240234375, 674.62152099609375, 117.991363525390625, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Large - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+15, 181025, 595, 4100, 4100, 3, 1, 1587.7569580078125, 686.79168701171875, 117.908416748046875, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Large - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+16, 181016, 595, 4100, 4100, 3, 1, 1616.62158203125, 754.20660400390625, 115.3078079223632812, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+17, 181016, 595, 4100, 4100, 3, 1, 1635.25, 816.97222900390625, 120.2372894287109375, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+18, 181016, 595, 4100, 4100, 3, 1, 1664.5660400390625, 890.685791015625, 120.117706298828125, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+19, 181016, 595, 4100, 4100, 3, 1, 1691.2239990234375, 954.69964599609375, 120.3922805786132812, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+20, 181016, 595, 4100, 4100, 3, 1, 1669.0660400390625, 1018.2603759765625, 125.0752334594726562, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+21, 181016, 595, 4100, 4100, 3, 1, 1669.842041015625, 1098.0364990234375, 127.4882278442382812, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+22, 181016, 595, 4100, 4100, 3, 1, 1688.30908203125, 1185.3697509765625, 132.57421875, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+23, 181016, 595, 4100, 4100, 3, 1, 1739.0538330078125, 1249.53125, 137.72503662109375, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+24, 181016, 595, 4100, 4100, 3, 1, 1830.8524169921875, 1287.626708984375, 143.58587646484375, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+25, 181016, 595, 4100, 4100, 3, 1, 1915.9947509765625, 1298.732666015625, 142.4404754638671875, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+26, 181016, 595, 4100, 4100, 3, 1, 1916.1285400390625, 1275.9288330078125, 142.4715576171875, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+27, 181016, 595, 4100, 4100, 3, 1, 1937.1944580078125, 1298.96875, 145.9376373291015625, 4.59021615982055664, 0, 0, -0.74895572662353515, 0.662620067596435546, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+28, 181016, 595, 4100, 4100, 3, 1, 1937.0538330078125, 1275.6927490234375, 145.923309326171875, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+29, 181016, 595, 4100, 4100, 3, 1, 1958.76220703125, 1299.123291015625, 146.205230712890625, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+30, 181016, 595, 4100, 4100, 3, 1, 1958.6754150390625, 1275.9444580078125, 146.2058258056640625, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+31, 181016, 595, 4100, 4100, 3, 1, 1980.545166015625, 1298.796875, 146.1197052001953125, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+32, 181016, 595, 4100, 4100, 3, 1, 1980.185791015625, 1276.2708740234375, 146.119354248046875, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+33, 181016, 595, 4100, 4100, 3, 1, 1984.2742919921875, 1244.0191650390625, 143.217498779296875, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+34, 181016, 595, 4100, 4100, 3, 1, 1984.6771240234375, 1332.60595703125, 143.220458984375, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+35, 181025, 595, 4100, 4100, 3, 1, 2009.1771240234375, 1273.814208984375, 147.477203369140625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Large - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+36, 181025, 595, 4100, 4100, 3, 1, 2009.1910400390625, 1299.392333984375, 147.3836212158203125, 3.141592741012573242, 0, 0, -1, 0, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Large - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+37, 181016, 595, 4100, 4100, 3, 1, 2017.4617919921875, 1313.5625, 142.949127197265625, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+38, 181016, 595, 4100, 4100, 3, 1, 2017.642333984375, 1261.329833984375, 142.9531097412109375, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+39, 181016, 595, 4100, 4100, 3, 1, 2033.34033203125, 1281.6285400390625, 143.624755859375, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+40, 181016, 595, 4100, 4100, 3, 1, 2033.7569580078125, 1293.685791015625, 143.4059295654296875, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+41, 181016, 595, 4100, 4100, 3, 1, 2067.857666015625, 1281.2413330078125, 141.9698333740234375, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+42, 181016, 595, 4100, 4100, 3, 1, 2067.348876953125, 1293.375, 141.9972686767578125, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+43, 181018, 595, 4100, 4100, 3, 1, 2092.87841796875, 1309.795166015625, 148.9744415283203125, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+44, 181017, 595, 4100, 4100, 3, 1, 2104.20654296875, 1306.1927490234375, 144.4675750732421875, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 7200, 255, 1, 0), -- Hanging, Streamer - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+45, 181018, 595, 4100, 4100, 3, 1, 2109.835205078125, 1266.607666015625, 142.9143218994140625, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+46, 181060, 595, 4100, 4100, 3, 1, 2123.31591796875, 1350.734375, 132.9212188720703125, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+47, 181018, 595, 4100, 4100, 3, 1, 2139.3681640625, 1271.6614990234375, 139.33447265625, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+48, 181060, 595, 4100, 4100, 3, 1, 2120.295166015625, 1351.359375, 132.89581298828125, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+49, 181060, 595, 4100, 4100, 3, 1, 2118.611083984375, 1353.998291015625, 132.7572174072265625, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+50, 181018, 595, 4100, 4100, 3, 1, 2153.6806640625, 1264.5660400390625, 139.2888641357421875, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+51, 181060, 595, 4100, 4100, 3, 1, 2126.51904296875, 1355.3941650390625, 132.9130706787109375, 0.069811686873435974, 0, 0, 0.034898757934570312, 0.999390840530395507, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+52, 181016, 595, 4100, 4100, 3, 1, 2154.65625, 1293.204833984375, 134.4106597900390625, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+53, 181060, 595, 4100, 4100, 3, 1, 2124.921875, 1357.8853759765625, 132.658203125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+54, 181060, 595, 4100, 4100, 3, 1, 2119.279541015625, 1356.9461669921875, 132.63006591796875, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+55, 181060, 595, 4100, 4100, 3, 1, 2125.8681640625, 1352.4132080078125, 132.9042205810546875, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+56, 181060, 595, 4100, 4100, 3, 1, 2121.8525390625, 1358.5867919921875, 132.593780517578125, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+57, 181017, 595, 4100, 4100, 3, 1, 2106.89404296875, 1380.51220703125, 139.30267333984375, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 7200, 255, 1, 0), -- Hanging, Streamer - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+58, 181018, 595, 4100, 4100, 3, 1, 2143.01220703125, 1371.3541259765625, 138.8475799560546875, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+59, 181018, 595, 4100, 4100, 3, 1, 2151.5, 1370.189208984375, 139.0308074951171875, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+60, 181016, 595, 4100, 4100, 3, 1, 2194.291748046875, 1288.751708984375, 134.5957794189453125, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+61, 181016, 595, 4100, 4100, 3, 1, 2177.614501953125, 1234.0035400390625, 137.313629150390625, 2.216565132141113281, 0, 0, 0.894933700561523437, 0.44619917869567871, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+62, 181020, 595, 4100, 4100, 3, 1, 2185.94091796875, 1235.0260009765625, 147.9004974365234375, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+63, 181016, 595, 4100, 4100, 3, 1, 2187.078125, 1243.5625, 137.3231964111328125, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+64, 181016, 595, 4100, 4100, 3, 1, 2267.93408203125, 1323.55908203125, 125.9082565307617187, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+65, 181016, 595, 4100, 4100, 3, 1, 2228.91845703125, 1337.0347900390625, 127.625213623046875, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+66, 181016, 595, 4100, 4100, 3, 1, 2228.6806640625, 1326.1197509765625, 127.8867874145507812, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+67, 181016, 595, 4100, 4100, 3, 1, 2214.890625, 1212.2586669921875, 137.1099395751953125, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+68, 181020, 595, 4100, 4100, 3, 1, 2231.80908203125, 1331.7899169921875, 134.8952178955078125, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+69, 181020, 595, 4100, 4100, 3, 1, 2262.826416015625, 1330.9305419921875, 134.6929931640625, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+70, 181016, 595, 4100, 4100, 3, 1, 2267.907958984375, 1337.30908203125, 124.4250564575195312, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+71, 181020, 595, 4100, 4100, 3, 1, 2310.739501953125, 1326.7847900390625, 129.516876220703125, 3.22885894775390625, 0, 0, -0.99904823303222656, 0.043619260191917419, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+72, 181020, 595, 4100, 4100, 3, 1, 2309.182373046875, 1341.0816650390625, 129.5749053955078125, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+73, 181016, 595, 4100, 4100, 3, 1, 2204.904541015625, 1204.0086669921875, 136.990386962890625, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+74, 181016, 595, 4100, 4100, 3, 1, 2231.807373046875, 1145.2222900390625, 139.6356353759765625, 0.959929943084716796, 0, 0, 0.461748123168945312, 0.887011110782623291, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+75, 181060, 595, 4100, 4100, 3, 1, 2271.588623046875, 1159.736083984375, 139.2359161376953125, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+76, 181060, 595, 4100, 4100, 3, 1, 2278.616455078125, 1162.15283203125, 139.49664306640625, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+77, 181060, 595, 4100, 4100, 3, 1, 2274.322998046875, 1158.34375, 139.2575836181640625, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+78, 181060, 595, 4100, 4100, 3, 1, 2271.869873046875, 1165.2864990234375, 139.429107666015625, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+79, 181060, 595, 4100, 4100, 3, 1, 2274.772705078125, 1166.314208984375, 139.54522705078125, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+80, 181060, 595, 4100, 4100, 3, 1, 2277.48095703125, 1165.0521240234375, 139.55718994140625, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+81, 181060, 595, 4100, 4100, 3, 1, 2270.616455078125, 1162.486083984375, 139.2928314208984375, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+82, 181060, 595, 4100, 4100, 3, 1, 2277.26220703125, 1159.328125, 139.402099609375, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 7200, 255, 1, 0), -- Standing, Interior, Small - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+83, 181020, 595, 4100, 4100, 3, 1, 2282.592041015625, 1133.670166015625, 146.3243408203125, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+84, 181018, 595, 4100, 4100, 3, 1, 2306.2275390625, 1157.298583984375, 139.9674530029296875, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+85, 181018, 595, 4100, 4100, 3, 1, 2318.600830078125, 1166.8646240234375, 140.214630126953125, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+86, 181016, 595, 4100, 4100, 3, 1, 2316.713623046875, 1157.361083984375, 135.58953857421875, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+87, 181016, 595, 4100, 4100, 3, 1, 2344.272705078125, 1216.18408203125, 131.106964111328125, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+88, 181016, 595, 4100, 4100, 3, 1, 2369.5087890625, 1189.9566650390625, 132.0734100341796875, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+89, 181017, 595, 4100, 4100, 3, 1, 2371.5, 1199.4288330078125, 140.5843963623046875, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 7200, 255, 1, 0), -- Hanging, Streamer - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+90, 181018, 595, 4100, 4100, 3, 1, 2373.557373046875, 1193.4774169921875, 137.450439453125, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+91, 181016, 595, 4100, 4100, 3, 1, 2365.51220703125, 1206.0208740234375, 131.530059814453125, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+92, 181018, 595, 4100, 4100, 3, 1, 2370.361083984375, 1204.6910400390625, 137.312408447265625, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+93, 181016, 595, 4100, 4100, 3, 1, 2332.710205078125, 1253.6978759765625, 133.481353759765625, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+94, 181016, 595, 4100, 4100, 3, 1, 2389.998291015625, 1194.26220703125, 148.0759124755859375, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+95, 181055, 595, 4100, 4100, 3, 1, 2395.723876953125, 1194.1319580078125, 142.4735870361328125, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 7200, 255, 1, 0), -- Hanging, Streamer x3 - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+96, 181016, 595, 4100, 4100, 3, 1, 2395.064208984375, 1176.1875, 133.93292236328125, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+97, 181018, 595, 4100, 4100, 3, 1, 2384.97216796875, 1211.7396240234375, 136.561065673828125, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+98, 181018, 595, 4100, 4100, 3, 1, 2389.04345703125, 1194.34033203125, 136.4981231689453125, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+99, 181019, 595, 4100, 4100, 3, 1, 2403.560791015625, 1186.376708984375, 134.8163299560546875, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+100, 181016, 595, 4100, 4100, 3, 1, 2399.833251953125, 1172.3489990234375, 148.0749053955078125, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+101, 181019, 595, 4100, 4100, 3, 1, 2398.585205078125, 1213.4879150390625, 134.9222564697265625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+102, 181016, 595, 4100, 4100, 3, 1, 2400.90966796875, 1219.62158203125, 134.0390167236328125, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+103, 181055, 595, 4100, 4100, 3, 1, 2407.859375, 1196.763916015625, 142.53497314453125, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 7200, 255, 1, 0), -- Hanging, Streamer x3 - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+104, 181016, 595, 4100, 4100, 3, 1, 2411.060791015625, 1175.234375, 148.074920654296875, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+105, 181016, 595, 4100, 4100, 3, 1, 2407.21533203125, 1138.1649169921875, 148.0759124755859375, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+106, 181016, 595, 4100, 4100, 3, 1, 2408.55029296875, 1113.0538330078125, 148.0759124755859375, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+107, 181019, 595, 4100, 4100, 3, 1, 2408.90966796875, 1202.2379150390625, 134.9315948486328125, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+108, 181019, 595, 4100, 4100, 3, 1, 2416.3681640625, 1188.4583740234375, 134.820526123046875, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+109, 181016, 595, 4100, 4100, 3, 1, 2418.864501953125, 1141.2552490234375, 148.075897216796875, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+110, 181019, 595, 4100, 4100, 3, 1, 2420.16845703125, 1205.138916015625, 134.9156036376953125, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+111, 181016, 595, 4100, 4100, 3, 1, 2418.4775390625, 1223.9947509765625, 134.0390167236328125, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+112, 181055, 595, 4100, 4100, 3, 1, 2421.213623046875, 1200.0069580078125, 142.5443267822265625, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 7200, 255, 1, 0), -- Hanging, Streamer x3 - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+113, 181055, 595, 4100, 4100, 3, 1, 2433.482666015625, 1202.951416015625, 142.5956878662109375, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 7200, 255, 1, 0), -- Hanging, Streamer x3 - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+114, 181019, 595, 4100, 4100, 3, 1, 2434.3125, 1201.4600830078125, 135.110137939453125, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+115, 181019, 595, 4100, 4100, 3, 1, 2428.33154296875, 1219.71533203125, 134.9208984375, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+116, 181019, 595, 4100, 4100, 3, 1, 2434.413330078125, 1194.01220703125, 135.109893798828125, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 0), -- Standing, Interior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+117, 181020, 595, 4100, 4100, 3, 1, 2443.84716796875, 1227.2117919921875, 135.6902618408203125, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+118, 181016, 595, 4100, 4100, 3, 1, 2452.13720703125, 1122.0504150390625, 148.075897216796875, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+119, 181020, 595, 4100, 4100, 3, 1, 2469.7587890625, 1127.2882080078125, 155.570281982421875, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+120, 181055, 595, 4100, 4100, 3, 1, 2412.736083984375, 1103.907958984375, 154.756591796875, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 7200, 255, 1, 0), -- Hanging, Streamer x3 - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+121, 181016, 595, 4100, 4100, 3, 1, 2455.65625, 1104.7725830078125, 148.075897216796875, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+122, 181016, 595, 4100, 4100, 3, 1, 2412.786376953125, 1094.19970703125, 148.0759124755859375, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+123, 181020, 595, 4100, 4100, 3, 1, 2473.532958984375, 1110.1285400390625, 155.2871856689453125, 3.141592741012573242, 0, 0, -1, 0, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+124, 181016, 595, 4100, 4100, 3, 1, 2520.549560546875, 1138.0416259765625, 132.076507568359375, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+125, 181016, 595, 4100, 4100, 3, 1, 2338.635498046875, 1423.48095703125, 128.1294097900390625, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 7200, 255, 1, 0), -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+126, 181020, 595, 4100, 4100, 3, 1, 2326.923583984375, 1420.046875, 135.85186767578125, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 7200, 255, 1, 0), -- Hanging, Square, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+127, 181016, 595, 4100, 4100, 3, 1, 2316.064208984375, 1410.5867919921875, 128.1347808837890625, 0, 0, 0, 0, 1, 7200, 255, 1, 0); -- Standing, Exterior, Medium - Val (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+127 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+127; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_01_world.sql new file mode 100644 index 00000000000..bcca0c9a62f --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_01_world.sql @@ -0,0 +1,189 @@ +-- +SET @OGUID := 92785; -- Need 180 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+179; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195259, 571, 3537, 4032, 1, 1, 2279.2080078125, 5188.57763671875, 16.22224235534667968, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+1, 195257, 571, 3537, 4032, 1, 1, 2272.831298828125, 5198.1494140625, 14.36125659942626953, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+2, 195260, 571, 3537, 4032, 1, 1, 2276.773681640625, 5199.5341796875, 24.89459800720214843, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+3, 195266, 571, 3537, 4032, 1, 1, 2270.001708984375, 5197.173828125, 17.32867622375488281, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+4, 195256, 571, 3537, 4032, 1, 1, 2238.3603515625, 5132.744140625, 5.344913959503173828, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+5, 195257, 571, 3537, 4032, 1, 1, 2280.92578125, 5198.3935546875, 14.63274002075195312, 4.188792228698730468, 0, 0, -0.86602497100830078, 0.50000077486038208, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+6, 195257, 571, 3537, 4032, 1, 1, 2281.225830078125, 5199.1005859375, 14.57226085662841796, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+7, 195257, 571, 3537, 4032, 1, 1, 2271.331298828125, 5194.4423828125, 14.39652824401855468, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+8, 195259, 571, 3537, 4032, 1, 1, 2288.10888671875, 5196.54931640625, 14.44637584686279296, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+9, 195266, 571, 3537, 4032, 1, 1, 2274.93408203125, 5189.16943359375, 26.13615226745605468, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+10, 195255, 571, 3537, 4032, 1, 1, 2288.474365234375, 5160.943359375, 25.54812049865722656, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+11, 195255, 571, 3537, 4032, 1, 1, 2293.540283203125, 5174.7177734375, 25.11964607238769531, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+12, 195260, 571, 3537, 4032, 1, 1, 2278.044921875, 5202.72509765625, 24.89858818054199218, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+13, 195263, 571, 3537, 4032, 1, 1, 2264.359375, 5199.47314453125, 21.16697502136230468, 2.792518377304077148, 0, 0, 0.984807014465332031, 0.173652306199073791, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+14, 195256, 571, 3537, 4032, 1, 1, 2248.404052734375, 5206.861328125, 14.71352863311767578, 0.523597896099090576, 0, 0, 0.258818626403808593, 0.965925931930541992, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+15, 195256, 571, 3537, 4032, 1, 1, 2238.516845703125, 5180.17626953125, 14.71352958679199218, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+16, 195256, 571, 3537, 4032, 1, 1, 2226.790771484375, 5136.91455078125, 5.344574928283691406, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+17, 195266, 571, 3537, 4032, 1, 1, 2270.87890625, 5210.54248046875, 28.94805908203125, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+18, 195264, 571, 3537, 4032, 1, 1, 2295.146484375, 5194.60400390625, 16.54580879211425781, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+19, 195260, 571, 3537, 4032, 1, 1, 2304.0087890625, 5195.68896484375, 18.77863693237304687, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+20, 195257, 571, 3537, 4032, 1, 1, 2299.134033203125, 5198.04443359375, 13.93274211883544921, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+21, 195260, 571, 3537, 4032, 1, 1, 2288.107666015625, 5203.8837890625, 13.63426113128662109, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+22, 195266, 571, 3537, 4032, 1, 1, 2288.640625, 5214.3359375, 27.50825309753417968, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+23, 195264, 571, 3537, 4032, 1, 1, 2292.770751953125, 5195.49072265625, 16.54580879211425781, 1.692969322204589843, 0, 0, 0.748955726623535156, 0.662620067596435546, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+24, 195256, 571, 3537, 4032, 1, 1, 2255.3095703125, 5225.85595703125, 14.71352863311767578, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+25, 195260, 571, 3537, 4032, 1, 1, 2290.5908203125, 5201.154296875, 24.89418220520019531, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+26, 195260, 571, 3537, 4032, 1, 1, 2289.228515625, 5206.75927734375, 13.63449668884277343, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+27, 195260, 571, 3537, 4032, 1, 1, 2289.666259765625, 5198.8798828125, 24.89882850646972656, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+28, 195266, 571, 3537, 4032, 1, 1, 2314.89404296875, 5185.27587890625, 23.48017692565917968, 4.363324165344238281, 0, 0, -0.81915187835693359, 0.573576688766479492, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+29, 195260, 571, 3537, 4032, 1, 1, 2291.030517578125, 5196.255859375, 16.54580879211425781, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+30, 195260, 571, 3537, 4032, 1, 1, 2303.144287109375, 5193.45849609375, 18.77863883972167968, 5.89921426773071289, 0, 0, -0.19080829620361328, 0.981627285480499267, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+31, 195256, 571, 3537, 4032, 1, 1, 2207.053466796875, 5222.54248046875, 14.10004520416259765, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+32, 195260, 571, 3537, 4032, 1, 1, 2296.923095703125, 5193.869140625, 16.54580879211425781, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+33, 195260, 571, 3537, 4032, 1, 1, 2300.87109375, 5202.06591796875, 18.77513504028320312, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+34, 195263, 571, 3537, 4032, 1, 1, 2282.703125, 5218.59619140625, 20.98289680480957031, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+35, 195263, 571, 3537, 4032, 1, 1, 2296.557373046875, 5212.9931640625, 20.75706672668457031, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+36, 195255, 571, 3537, 4032, 1, 1, 2330.237060546875, 5169.8720703125, 25.63700103759765625, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+37, 195263, 571, 3537, 4032, 1, 1, 2309.713623046875, 5207.69384765625, 20.94551467895507812, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+38, 195266, 571, 3537, 4032, 1, 1, 2320.046875, 5198.4697265625, 23.7144622802734375, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+39, 195266, 571, 3537, 4032, 1, 1, 2303.013916015625, 5208.548828125, 27.68203544616699218, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+40, 195256, 571, 3537, 4032, 1, 1, 2302.697509765625, 5237.80029296875, 11.33970260620117187, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+41, 195256, 571, 3537, 4032, 1, 1, 2352.74169921875, 5196.42041015625, 7.632044792175292968, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+42, 195256, 571, 3537, 4032, 1, 1, 2214.6953125, 5241.33349609375, 14.10004520416259765, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+43, 195255, 571, 3537, 4032, 1, 1, 2362.818603515625, 5195.90087890625, 19.76927375793457031, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+44, 195256, 571, 3537, 4032, 1, 1, 2234.98681640625, 5298.37890625, 15.05626106262207031, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+45, 195256, 571, 3537, 4032, 1, 1, 2187.26904296875, 5257.0966796875, 23.37514686584472656, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 571, 3537, 4032, 1, 1, 2276.3203125, 5282.166015625, 15.66974735260009765, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+47, 195256, 571, 3537, 4032, 1, 1, 2192.25537109375, 5270.982421875, 24.4593658447265625, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+48, 195256, 571, 3537, 4032, 1, 1, 2366.833251953125, 5211.396484375, 7.632043838500976562, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+49, 195255, 571, 3537, 4032, 1, 1, 2361.501708984375, 5274.708984375, 25.85167312622070312, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+50, 195256, 571, 3537, 4032, 1, 1, 2288.013427734375, 5313.14697265625, 14.71353340148925781, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+51, 195255, 571, 3537, 4032, 1, 1, 2373.8203125, 5235.90185546875, 20.25008392333984375, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+52, 195256, 571, 3537, 4032, 1, 1, 2197.986083984375, 5288.5576171875, 24.45936393737792968, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+53, 195256, 571, 3537, 4032, 1, 1, 2213.9501953125, 5333.77783203125, 23.37514877319335937, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+54, 195256, 571, 3537, 4032, 1, 1, 2208.510009765625, 5319.640625, 23.37514686584472656, 2.897245407104492187, 0, 0, 0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+55, 195256, 571, 3537, 4032, 1, 1, 2202.939453125, 5302.73291015625, 23.37514686584472656, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+56, 195256, 571, 3537, 4032, 1, 1, 2151.34326171875, 5284.07080078125, 24.66521263122558593, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+57, 195256, 571, 3537, 4032, 1, 1, 2157.4755859375, 5301.4140625, 24.66485023498535156, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+58, 195256, 571, 3537, 4032, 1, 1, 2112.849853515625, 5291.52392578125, 32.77573776245117187, 1.239183306694030761, 0, 0, 0.580702781677246093, 0.814115643501281738, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+59, 195256, 571, 3537, 4032, 1, 1, 2122.561279296875, 5320.2626953125, 32.77589035034179687, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+60, 195256, 571, 3537, 4113, 1, 1, 2872.568603515625, 4041.227783203125, 5.269433975219726562, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+61, 195256, 571, 3537, 4113, 1, 1, 2899.83154296875, 4067.15625, 1.792299985885620117, 6.09120035171508789, 0, 0, -0.09584522247314453, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+62, 195256, 571, 3537, 4113, 1, 1, 2927.11669921875, 4077.87158203125, 2.141782999038696289, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+63, 195256, 571, 3537, 4113, 1, 1, 2910.1943359375, 4046.255615234375, 1.670829057693481445, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+64, 195256, 571, 3537, 4113, 1, 1, 2904.64013671875, 4073.700439453125, 1.964231014251708984, 4.904376029968261718, 0, 0, -0.636077880859375, 0.771624863147735595, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+65, 195256, 571, 3537, 4113, 1, 1, 2875.32763671875, 4035.009033203125, 5.44103097915649414, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+66, 195256, 571, 3537, 4113, 1, 1, 2922.883056640625, 4037.387939453125, 1.768460988998413085, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+67, 195259, 571, 3537, 4113, 1, 1, 2980.37939453125, 4053.989501953125, 28.38085365295410156, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+68, 195256, 571, 3537, 4113, 1, 1, 2997.856689453125, 4049.579345703125, 26.61824226379394531, 6.213373661041259765, 0, 0, -0.03489875793457031, 0.999390840530395507, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+69, 195256, 571, 3537, 4113, 1, 1, 2959.033935546875, 3995.015625, 1.87953805923461914, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+70, 195256, 571, 3537, 4113, 1, 1, 2998.711181640625, 4070.604248046875, 26.91522789001464843, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+71, 195273, 571, 3537, 4113, 1, 1, 3001.96337890625, 4042.353759765625, 29.05370521545410156, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+72, 195256, 571, 3537, 4113, 1, 1, 3008.4267578125, 4048.362548828125, 26.36823272705078125, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+73, 195259, 571, 3537, 4113, 1, 1, 3007.1640625, 4071.764892578125, 35.894866943359375, 1.553341388702392578, 0, 0, 0.700908660888671875, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+74, 195256, 571, 3537, 4113, 1, 1, 3017.189453125, 4065.65185546875, 26.77532768249511718, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+75, 195259, 571, 3537, 4113, 1, 1, 3026.244873046875, 4045.87841796875, 28.50894927978515625, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Unu'pe - Difficulty: 0) CreateObject1 +(@OGUID+76, 195256, 571, 3537, 4114, 1, 1, 3099.8447265625, 3831.98388671875, 23.01079750061035156, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Death's Stand - Difficulty: 0) CreateObject1 +(@OGUID+77, 195256, 571, 3537, 4047, 1, 1, 3426.033447265625, 4071.887939453125, 18.08249664306640625, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village- Difficulty: 0) CreateObject1 +(@OGUID+78, 195259, 571, 3537, 4047, 1, 1, 3449.408447265625, 4085.985595703125, 17.83682441711425781, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+79, 195256, 571, 3537, 4047, 1, 1, 3458.690673828125, 4082.39453125, 17.32234382629394531, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+80, 195256, 571, 3537, 4047, 1, 1, 3437.81884765625, 4086.139892578125, 17.098114013671875, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+81, 195256, 571, 3537, 4047, 1, 1, 3409.351806640625, 4091.084228515625, 18.57693290710449218, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+82, 195256, 571, 3537, 4037, 1, 1, 3469.8837890625, 4115.69970703125, 16.7065582275390625, 3.682650327682495117, 0, 0, -0.96362972259521484, 0.26724100112915039, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+83, 195256, 571, 3537, 4037, 1, 1, 3418.99951171875, 4110.04150390625, 17.55773353576660156, 6.021387100219726562, 0, 0, -0.13052558898925781, 0.991444945335388183, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+84, 195256, 571, 3537, 4037, 1, 1, 3455.852783203125, 4140.36328125, 15.27708816528320312, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+85, 195256, 571, 3537, 4037, 1, 1, 3429.658447265625, 4124.90087890625, 16.82855606079101562, 5.253442287445068359, 0, 0, -0.49242305755615234, 0.870355963706970214, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+86, 195260, 571, 3537, 4037, 1, 1, 3458.477783203125, 4132.48046875, 17.17744827270507812, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+87, 195256, 571, 3537, 4037, 1, 1, 3473.78662109375, 4089.2470703125, 17.13011360168457031, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+88, 195273, 571, 3537, 4037, 1, 1, 3462.82373046875, 4143.79541015625, 26.0062713623046875, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+89, 195256, 571, 3537, 4037, 1, 1, 3468.706787109375, 4138.94482421875, 15.28419017791748046, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+90, 195260, 571, 3537, 4037, 1, 1, 3455.599365234375, 4164.83447265625, 19.33243370056152343, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+91, 195256, 571, 3537, 4037, 1, 1, 3444.581298828125, 4167.64453125, 17.16287422180175781, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+92, 195273, 571, 3537, 4037, 1, 1, 3437.626220703125, 4173.6826171875, 27.005615234375, 3.019413232803344726, 0, 0, 0.998134613037109375, 0.061051756143569946, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+93, 195256, 571, 3537, 4037, 1, 1, 3445.000244140625, 4178.58154296875, 17.1581573486328125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+94, 195260, 571, 3537, 4037, 1, 1, 3472.409912109375, 4163.70458984375, 19.309173583984375, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+95, 195266, 571, 3537, 4037, 1, 1, 3464.88623046875, 4177.20654296875, 24.38718986511230468, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+96, 195256, 571, 3537, 4037, 1, 1, 3484.244873046875, 4164.78759765625, 17.17531013488769531, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+97, 195256, 571, 3537, 4037, 1, 1, 3460.450439453125, 4186.22998046875, 18.21274757385253906, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+98, 195273, 571, 3537, 4037, 1, 1, 3491.174072265625, 4170.66796875, 27.20992469787597656, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+99, 195256, 571, 3537, 4037, 1, 1, 3484.916748046875, 4176.37646484375, 17.19301986694335937, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+100, 195256, 571, 3537, 4037, 1, 1, 3472.248291015625, 4185.59228515625, 18.24645614624023437, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+101, 195273, 571, 3537, 4037, 1, 1, 3466.47216796875, 4192.8837890625, 28.92045021057128906, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+102, 195255, 571, 3537, 4037, 1, 1, 3466.603759765625, 4204.2744140625, 36.17081069946289062, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Taunka'le Village - Difficulty: 0) CreateObject1 +(@OGUID+103, 195256, 571, 3537, 4108, 1, 1, 4079.892333984375, 5272.37060546875, 27.84728622436523437, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+104, 195256, 571, 3537, 4108, 1, 1, 4116.859375, 5260.4541015625, 24.72841644287109375, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+105, 195256, 571, 3537, 4109, 1, 1, 4133.6513671875, 5261.0810546875, 25.04359626770019531, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+106, 195256, 571, 3537, 4108, 1, 1, 4064.177001953125, 5287.177734375, 28.33382987976074218, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+107, 195256, 571, 3537, 4108, 1, 1, 4124.85400390625, 5302.79833984375, 29.5003662109375, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+108, 195259, 571, 3537, 4108, 1, 1, 4111.60302734375, 5303.91943359375, 31.38319969177246093, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+109, 195256, 571, 3537, 4108, 1, 1, 4038.372802734375, 5295.92822265625, 24.80444717407226562, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+110, 195256, 571, 3537, 4108, 1, 1, 4047.685302734375, 5298.59326171875, 24.65438461303710937, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+111, 195266, 571, 3537, 4108, 1, 1, 4172.98779296875, 5271.83642578125, 40.90478515625, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+112, 195266, 571, 3537, 4108, 1, 1, 4173.98291015625, 5280.55029296875, 30.62881851196289062, 6.213373661041259765, 0, 0, -0.03489875793457031, 0.999390840530395507, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+113, 195257, 571, 3537, 4108, 1, 1, 4178.8759765625, 5273.9072265625, 40.731475830078125, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+114, 195266, 571, 3537, 4108, 1, 1, 4165.8828125, 5280.9384765625, 31.36930656433105468, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+115, 195256, 571, 3537, 4108, 1, 1, 4166.07080078125, 5288.28369140625, 26.3767242431640625, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+116, 195257, 571, 3537, 4108, 1, 1, 4176.3017578125, 5277.0546875, 28.09964752197265625, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+117, 195266, 571, 3537, 4108, 1, 1, 4174.3681640625, 5270.97509765625, 41.095703125, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+118, 195257, 571, 3537, 4108, 1, 1, 4176.38525390625, 5285.04248046875, 28.296112060546875, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+119, 195257, 571, 3537, 4108, 1, 1, 4171.79541015625, 5282.20556640625, 41.54663467407226562, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+120, 195256, 571, 3537, 4108, 1, 1, 4174.55029296875, 5310.48095703125, 25.47459602355957031, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+121, 195256, 571, 3537, 4108, 1, 1, 4188.306640625, 5253.25244140625, 26.37672233581542968, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fizzcrank Airstrip - Difficulty: 0) CreateObject1 +(@OGUID+122, 195256, 571, 3537, 4122, 1, 1, 4464.80078125, 5710.1494140625, 81.19541168212890625, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+123, 195256, 571, 3537, 4122, 1, 1, 4474.953125, 5701.2958984375, 81.268310546875, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+124, 195259, 571, 3537, 4122, 1, 1, 4475.26611328125, 5707.76416015625, 82.3621063232421875, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+125, 195259, 571, 3537, 4122, 1, 1, 4470.28466796875, 5710.63525390625, 82.27143096923828125, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+126, 195264, 571, 3537, 4122, 1, 1, 4502.47314453125, 5716.3740234375, 83.29630279541015625, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+127, 195253, 571, 3537, 4122, 1, 1, 4505.32763671875, 5718.3759765625, 87.04782867431640625, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+128, 195256, 571, 3537, 4122, 1, 1, 4503.0888671875, 5725.7080078125, 81.2832489013671875, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+129, 195256, 571, 3537, 4122, 1, 1, 4504.060546875, 5681.630859375, 81.4865570068359375, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+130, 195253, 571, 3537, 4122, 1, 1, 4502.59375, 5701.0087890625, 86.93270111083984375, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+131, 195256, 571, 3537, 4122, 1, 1, 4496.20556640625, 5716.17431640625, 81.43398284912109375, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+132, 195256, 571, 3537, 4122, 1, 1, 4509.7333984375, 5758.8916015625, 81.67447662353515625, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+133, 195253, 571, 3537, 4122, 1, 1, 4520.1025390625, 5699.3740234375, 86.9876251220703125, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+134, 195253, 571, 3537, 4122, 1, 1, 4522.38671875, 5716.76220703125, 86.95365142822265625, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+135, 195256, 571, 3537, 4122, 1, 1, 4518.92626953125, 5710.13525390625, 81.47955322265625, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Bor'gorok Outpost - Difficulty: 0) CreateObject1 +(@OGUID+136, 195256, 571, 3537, 4023, 1, 1, 3633.384521484375, 5887.4833984375, 140.0764923095703125, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+137, 195273, 571, 3537, 4023, 1, 1, 3634.594482421875, 5865.390625, 179.9925079345703125, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+138, 195256, 571, 3537, 4023, 1, 1, 3647.803466796875, 5882.2255859375, 174.494293212890625, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+139, 195273, 571, 3537, 4023, 1, 1, 3664.061767578125, 5884.24072265625, 180.0220184326171875, 2.914689540863037109, 0, 0, 0.993571281433105468, 0.113208353519439697, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+140, 195273, 571, 3537, 4023, 1, 1, 3644.9609375, 5913.44189453125, 180.1508026123046875, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+141, 195273, 571, 3537, 4023, 1, 1, 3615.73779296875, 5895.03125, 180.1674957275390625, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+142, 195256, 571, 3537, 4023, 1, 1, 3612.380126953125, 5919.876953125, 136.0995330810546875, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+143, 195256, 571, 3537, 4023, 1, 1, 3624.637451171875, 5926.56884765625, 136.21624755859375, 2.617989301681518554, 0, 0, 0.965925216674804687, 0.258821308612823486, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+144, 195266, 571, 3537, 4023, 1, 1, 3624.583251953125, 5913.43603515625, 144.8048858642578125, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+145, 195256, 571, 3537, 4023, 1, 1, 3623.188232421875, 5947.21337890625, 136.2162322998046875, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+146, 195256, 571, 3537, 4023, 1, 1, 3584.385498046875, 5975.64404296875, 136.21575927734375, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+147, 195256, 571, 3537, 4023, 1, 1, 3605.88623046875, 5989.13623046875, 136.2162322998046875, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+148, 195256, 571, 3537, 4023, 1, 1, 3519.408935546875, 5943.52685546875, 134.4015960693359375, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+149, 195256, 571, 3537, 4023, 1, 1, 3521.80224609375, 5957.62744140625, 134.07440185546875, 5.462882041931152343, 0, 0, -0.39874839782714843, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amber Ledge - Difficulty: 0) CreateObject1 +(@OGUID+150, 195256, 571, 3537, 4129, 1, 1, 2892.68212890625, 6263.138671875, 209.03607177734375, 5.201082706451416015, 0, 0, -0.51503753662109375, 0.857167601585388183, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+151, 195256, 571, 3537, 4129, 1, 1, 2899.378173828125, 6242.91259765625, 208.8885040283203125, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+152, 195256, 571, 3537, 4129, 1, 1, 2888.891357421875, 6247.6015625, 208.8507232666015625, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+153, 195254, 571, 3537, 4129, 1, 1, 2754.732421875, 6279.3740234375, 181.27337646484375, 2.286378860473632812, 0, 0, 0.909960746765136718, 0.414694398641586303, 120, 255, 1, 0), -- Hanging, Square, Large - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+154, 195256, 571, 3537, 4129, 1, 1, 2860.568603515625, 6221.08056640625, 208.737518310546875, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+155, 195256, 571, 3537, 4129, 1, 1, 2799.83544921875, 6186.32763671875, 84.08406829833984375, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+156, 195257, 571, 3537, 4129, 1, 1, 2792.786376953125, 6176.63037109375, 88.45963287353515625, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+157, 195257, 571, 3537, 4129, 1, 1, 2789.380126953125, 6177.330078125, 88.61862945556640625, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+158, 195273, 571, 3537, 4129, 1, 1, 2794.3359375, 6171.5009765625, 88.1082763671875, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+159, 195256, 571, 3537, 4129, 1, 1, 2788.65966796875, 6162.68017578125, 84.8553009033203125, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+160, 195256, 571, 3537, 4129, 1, 1, 2815.3046875, 6174.10107421875, 121.9517669677734375, 5.497788906097412109, 0, 0, -0.38268280029296875, 0.923879802227020263, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+161, 195256, 571, 3537, 4129, 1, 1, 2853.403564453125, 6207.33447265625, 208.7359161376953125, 5.462882041931152343, 0, 0, -0.39874839782714843, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+162, 195273, 571, 3537, 4129, 1, 1, 2815.826416015625, 6166.080078125, 94.5452728271484375, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+163, 195256, 571, 3537, 4129, 1, 1, 2861.186279296875, 6199.25244140625, 208.7365570068359375, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+164, 195256, 571, 3537, 4129, 1, 1, 2823.608642578125, 6165.09228515625, 121.9373092651367187, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+165, 195266, 571, 3537, 4129, 1, 1, 2815.302978515625, 6165.52587890625, 90.96311187744140625, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+166, 195260, 571, 3537, 4129, 1, 1, 2817.585205078125, 6154.6435546875, 86.02152252197265625, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+167, 195256, 571, 3537, 4129, 1, 1, 2876.30810546875, 6204.3359375, 208.739349365234375, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+168, 195260, 571, 3537, 4129, 1, 1, 2789.674560546875, 6148.0439453125, 86.64035797119140625, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+169, 195273, 571, 3537, 4129, 1, 1, 2786.773681640625, 6151.3671875, 89.299530029296875, 0.802850961685180664, 0, 0, 0.390730857849121093, 0.920504987239837646, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+170, 195273, 571, 3537, 4129, 1, 1, 2819.26953125, 6144.357421875, 87.8765716552734375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+171, 195257, 571, 3537, 4129, 1, 1, 2824.10205078125, 6142.4697265625, 88.44103240966796875, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+172, 195273, 571, 3537, 4129, 1, 1, 2798.917724609375, 6138.15283203125, 89.22512054443359375, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+173, 195256, 571, 3537, 4129, 1, 1, 2805.133544921875, 6135.2744140625, 84.6513214111328125, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+174, 195257, 571, 3537, 4129, 1, 1, 2824.46826171875, 6139.03173828125, 88.58995819091796875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+175, 195266, 571, 3537, 4129, 1, 1, 2769.889892578125, 6123.314453125, 96.68723297119140625, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+176, 195256, 571, 3537, 4129, 1, 1, 2902.970458984375, 6231.560546875, 208.8656158447265625, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+177, 195256, 571, 3537, 4129, 1, 1, 2922.967529296875, 6238.52978515625, 208.905548095703125, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+178, 195259, 571, 3537, 4129, 1, 1, 2924.9033203125, 6244.49951171875, 210.3615570068359375, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 +(@OGUID+179, 195259, 571, 3537, 4129, 1, 1, 2924.55908203125, 6242.06298828125, 209.84368896484375, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, 0); -- Hanging, Square, Small - Brewfest (Area: Warsong Hold - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+179 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+179; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_02_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_02_world.sql new file mode 100644 index 00000000000..519f0b5087b --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_02_world.sql @@ -0,0 +1,32 @@ +-- +SET @OGUID := 48195; -- Need 23 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+32; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195266, 571, 67, 4428, 1, 1, 6653.6044921875, -203.622772216796875, 954.6893310546875, 5.759587764739990234, 0, 0, -0.25881862640380859, 0.965925931930541992, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frosthold - Difficulty: 0) CreateObject1 +(@OGUID+1, 195266, 571, 67, 4428, 1, 1, 6663.80712890625, -184.669891357421875, 958.21551513671875, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frosthold - Difficulty: 0) CreateObject1 +(@OGUID+2, 195266, 571, 67, 4428, 1, 1, 6654.4990234375, -190.976272583007812, 956.8074951171875, 0.418878614902496337, 0, 0, 0.207911491394042968, 0.978147625923156738, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frosthold - Difficulty: 0) CreateObject1 +(@OGUID+3, 195256, 571, 67, 4429, 1, 1, 7850.470703125, -793.32989501953125, 1183.955078125, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Grom'arsh Crash-Site - Difficulty: 0) CreateObject1 +(@OGUID+4, 195256, 571, 67, 4429, 1, 1, 7879.49853515625, -759.57012939453125, 1175.3660888671875, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Grom'arsh Crash-Site - Difficulty: 0) CreateObject1 +(@OGUID+5, 195256, 571, 67, 4429, 1, 1, 7856.44189453125, -742.138916015625, 1177.6876220703125, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Grom'arsh Crash-Site - Difficulty: 0) CreateObject1 +(@OGUID+6, 195259, 571, 67, 4429, 1, 1, 7856.078125, -735.815673828125, 1178.389404296875, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Grom'arsh Crash-Site - Difficulty: 0) CreateObject1 +(@OGUID+7, 195256, 571, 67, 4441, 1, 1, 7816.5849609375, -2769.4921875, 1188.7803955078125, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+8, 195256, 571, 67, 4441, 1, 1, 7791.91650390625, -2804.66845703125, 1216.7884521484375, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+9, 195259, 571, 67, 4441, 1, 1, 7795.13720703125, -2808.116455078125, 1217.7559814453125, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+10, 195256, 571, 67, 4441, 1, 1, 7776.33837890625, -2838.651123046875, 1217.1214599609375, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+11, 195256, 571, 67, 4441, 1, 1, 7825.24072265625, -2903.61279296875, 1240.8853759765625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+12, 195266, 571, 67, 4441, 1, 1, 7801.470703125, -2961.203125, 1263.813232421875, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+13, 195257, 571, 67, 4441, 1, 1, 7797.767578125, -2957.82763671875, 1261.513671875, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+14, 195266, 571, 67, 4441, 1, 1, 7799.6337890625, -2964.865966796875, 1264.69921875, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+15, 195257, 571, 67, 4441, 1, 1, 7806.43212890625, -2962.62890625, 1261.4276123046875, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+16, 195260, 571, 67, 4441, 1, 1, 7809.75341796875, -2956.811279296875, 1259.6474609375, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+17, 195263, 571, 67, 4441, 1, 1, 7802.56689453125, -2958.5283203125, 1264.48193359375, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+18, 195256, 571, 67, 4441, 1, 1, 7819.58251953125, -2965.007080078125, 1257.747314453125, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+19, 195256, 571, 67, 4441, 1, 1, 7784.9697265625, -2964.5390625, 1259, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+20, 195256, 571, 67, 4441, 1, 1, 7794.875, -2944.564208984375, 1257.248291015625, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+21, 195259, 571, 67, 4441, 1, 1, 7817.0693359375, -2963.26904296875, 1259.724609375, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 +(@OGUID+22, 195256, 571, 67, 4441, 1, 1, 7807.439453125, -2977.43408203125, 1258.9766845703125, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0); -- Standing, Exterior, Medium - Brewfest (Area: Camp Tunka'lo - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+22 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+22; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_03_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_03_world.sql new file mode 100644 index 00000000000..0655d381a2d --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_03_world.sql @@ -0,0 +1,54 @@ +-- +SET @OGUID := 55259; -- Need 46 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+45; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195256, 571, 3711, 4284, 1, 1, 5575.6259765625, 5710.97119140625, -76.6946334838867187, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+1, 195266, 571, 3711, 4284, 1, 1, 5550.9208984375, 5732.02978515625, -72.8947296142578125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+2, 195266, 571, 3711, 4284, 1, 1, 5544.88623046875, 5730.65380859375, -72.8956222534179687, 4.1538848876953125, 0, 0, -0.8746194839477539, 0.484810054302215576, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+3, 195256, 571, 3711, 4284, 1, 1, 5547.86279296875, 5726.3916015625, -76.0391387939453125, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+4, 195266, 571, 3711, 4284, 1, 1, 5549.515625, 5738.0556640625, -72.9350662231445312, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+5, 195264, 571, 3711, 4284, 1, 1, 5543.533203125, 5732.81884765625, -75.006072998046875, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+6, 195266, 571, 3711, 4284, 1, 1, 5543.41943359375, 5736.71630859375, -72.8888320922851562, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+7, 195256, 571, 3711, 4284, 1, 1, 5538.6083984375, 5734.04248046875, -76.7061233520507812, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+8, 195256, 571, 3711, 4284, 1, 1, 5594.93408203125, 5715.6484375, -72.77392578125, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+9, 195266, 571, 3711, 4284, 1, 1, 5584.953125, 5748.9140625, -68.31658935546875, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+10, 195256, 571, 3711, 4284, 1, 1, 5565.49072265625, 5758.58251953125, -75.2259063720703125, 5.794494152069091796, 0, 0, -0.24192142486572265, 0.970295846462249755, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+11, 195264, 571, 3711, 4284, 1, 1, 5558.14453125, 5760.76123046875, -76.66796875, 2.286378860473632812, 0, 0, 0.909960746765136718, 0.414694398641586303, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+12, 195260, 571, 3711, 4284, 1, 1, 5547.07373046875, 5741.958984375, -75.4053497314453125, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+13, 195264, 571, 3711, 4284, 1, 1, 5546.4443359375, 5741.97412109375, -75.4053497314453125, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+14, 195264, 571, 3711, 4284, 1, 1, 5564.951171875, 5763.7421875, -74.1049652099609375, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+15, 195266, 571, 3711, 4284, 1, 1, 5569.91650390625, 5759.85791015625, -69.3228530883789062, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+16, 195256, 571, 3711, 4284, 1, 1, 5581.7734375, 5765.79248046875, -74.648590087890625, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+17, 195256, 571, 3711, 4284, 1, 1, 5584.72509765625, 5752.109375, -72.0627365112304687, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+19, 195264, 571, 3711, 4284, 1, 1, 5592.455078125, 5748.15673828125, -70.1986236572265625, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+20, 195260, 571, 3711, 4284, 1, 1, 5591.068359375, 5747.46630859375, -70.5360488891601562, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+21, 195264, 571, 3711, 4284, 1, 1, 5565.40087890625, 5770.0302734375, -74.0870285034179687, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+22, 195266, 571, 3711, 4284, 1, 1, 5562.83837890625, 5767.767578125, -69.3107070922851562, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+23, 195260, 571, 3711, 4284, 1, 1, 5555.88525390625, 5763.05224609375, -76.6834869384765625, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+24, 195266, 571, 3711, 4284, 1, 1, 5577.76123046875, 5766.7099609375, -69.3400802612304687, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+25, 195260, 571, 3711, 4284, 1, 1, 5564.96337890625, 5765.20947265625, -74.1218185424804687, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+26, 195266, 571, 3711, 4284, 1, 1, 5570.90087890625, 5774.63525390625, -69.3967971801757812, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+27, 195256, 571, 3711, 4284, 1, 1, 5623.017578125, 5797.69189453125, -71.1530685424804687, 1.605701684951782226, 0, 0, 0.719339370727539062, 0.694658815860748291, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+28, 195256, 571, 3711, 4284, 1, 1, 5590.330078125, 5779.95458984375, -71.8887252807617187, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+29, 195256, 571, 3711, 4284, 1, 1, 5533.6171875, 5764.57275390625, -78.6415481567382812, 0.802850961685180664, 0, 0, 0.390730857849121093, 0.920504987239837646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+30, 195256, 571, 3711, 4284, 1, 1, 5591.7470703125, 5812.30810546875, -69.8521499633789062, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+31, 195256, 571, 3711, 4284, 1, 1, 5609.3271484375, 5807.85888671875, -70.49896240234375, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Nesingwary Base Camp - Difficulty: 0) CreateObject1 +(@OGUID+32, 195260, 571, 3711, 4383, 1, 1, 5479.8720703125, 4726.02978515625, -194.349822998046875, 4.049167633056640625, 0, 0, -0.89879322052001953, 0.438372820615768432, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+33, 195256, 571, 3711, 4383, 1, 1, 5478.01904296875, 4730.70654296875, -195.108367919921875, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+34, 195256, 571, 3711, 4383, 1, 1, 5480.52197265625, 4749.84375, -197.169540405273437, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+35, 195259, 571, 3711, 4383, 1, 1, 5482.611328125, 4728.69482421875, -191.631149291992187, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+36, 195260, 571, 3711, 4383, 1, 1, 5509.4775390625, 4741.9794921875, -194.433822631835937, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+37, 195260, 571, 3711, 4383, 1, 1, 5510.404296875, 4753.5478515625, -194.433822631835937, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+38, 195256, 571, 3711, 4383, 1, 1, 5489.2490234375, 4730.6259765625, -194.757522583007812, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+39, 195260, 571, 3711, 4383, 1, 1, 5502.95654296875, 4741.2734375, -194.433822631835937, 1.32644820213317871, 0, 0, 0.615660667419433593, 0.788011372089385986, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+40, 195256, 571, 3711, 4383, 1, 1, 5480.35498046875, 4744.158203125, -196.428298950195312, 0.087265998125076293, 0, 0, 0.043619155883789062, 0.999048233032226562, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+41, 195260, 571, 3711, 4383, 1, 1, 5503.82666015625, 4755.5263671875, -194.433822631835937, 4.904376029968261718, 0, 0, -0.636077880859375, 0.771624863147735595, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+42, 195260, 571, 3711, 4383, 1, 1, 5498.5927734375, 4745.71630859375, -194.433822631835937, 0.523597896099090576, 0, 0, 0.258818626403808593, 0.965925931930541992, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+43, 195260, 571, 3711, 4383, 1, 1, 5498.83642578125, 4751.91796875, -194.433822631835937, 5.89921426773071289, 0, 0, -0.19080829620361328, 0.981627285480499267, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+44, 195256, 571, 3711, 4383, 1, 1, 5499.65478515625, 4733.095703125, -194.544998168945312, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 +(@OGUID+45, 195260, 571, 3711, 4383, 1, 1, 5513.060546875, 4747.65869140625, -194.433822631835937, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 120, 255, 1, 0); -- Standing, Interior, Small - Brewfest (Area: Lakeside Landing - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+45 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+45; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_04_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_04_world.sql new file mode 100644 index 00000000000..b8c1006c8fc --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_04_world.sql @@ -0,0 +1,5 @@ +-- https://www.wowhead.com/wotlk/npc=18220/ravenous-windroc#abilities +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 18220; +DELETE FROM `smart_scripts` WHERE `entryorguid`=18220 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 +(18220, 0, 0, 0, 0, 0, 100, 0, 4000, 4000, 6000, 6000, 0, 11, 30285, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Ravenous Windroc - In Combat - Cast 'Eagle Claw'"); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_05_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_05_world.sql new file mode 100644 index 00000000000..392e1ad24ba --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_05_world.sql @@ -0,0 +1,256 @@ +-- +SET @OGUID := 92965; -- Need 247 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+246; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195257, 571, 65, 4158, 1, 1, 3484.33251953125, 2013.51025390625, 68.88947296142578125, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+1, 195257, 571, 65, 4158, 1, 1, 3476.03857421875, 2008.531494140625, 68.95276641845703125, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+2, 195260, 571, 65, 4158, 1, 1, 3490.9501953125, 2015.37939453125, 65.6033477783203125, 5.462882041931152343, 0, 0, -0.39874839782714843, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+3, 195257, 571, 65, 4158, 1, 1, 3472.212158203125, 1983.8604736328125, 69.0006866455078125, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+4, 195260, 571, 65, 4158, 1, 1, 3474.909423828125, 1975.4425048828125, 65.53430938720703125, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+5, 195256, 571, 65, 4158, 1, 1, 3487.094970703125, 1996.3912353515625, 64.86275482177734375, 3.22885894775390625, 0, 0, -0.99904823303222656, 0.043619260191917419, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+6, 195273, 571, 65, 4158, 1, 1, 3518.782958984375, 1993.7606201171875, 67.3443603515625, 3.682650327682495117, 0, 0, -0.96362972259521484, 0.26724100112915039, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+7, 195256, 571, 65, 4158, 1, 1, 3463.337646484375, 1991.167724609375, 64.6158905029296875, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+8, 195260, 571, 65, 4158, 1, 1, 3499.606689453125, 1984.6790771484375, 66.1546783447265625, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+9, 195256, 571, 65, 4158, 1, 1, 3503.747314453125, 2013.1265869140625, 64.86234283447265625, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+10, 195273, 571, 65, 4158, 1, 1, 3505.42236328125, 2014.634521484375, 68.2199554443359375, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+11, 195264, 571, 65, 4158, 1, 1, 3498.045166015625, 1985.9210205078125, 66.49420166015625, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+12, 195257, 571, 65, 4158, 1, 1, 3480.1650390625, 1977.2899169921875, 70.61582183837890625, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+13, 195260, 571, 65, 4158, 1, 1, 3467.421142578125, 1988.0499267578125, 66.54555511474609375, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+14, 195256, 571, 65, 4158, 1, 1, 3533.274658203125, 2028.2117919921875, 67.83712005615234375, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+15, 195264, 571, 65, 4158, 1, 1, 3472.78466796875, 1978.6875, 66.46651458740234375, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+16, 195260, 571, 65, 4158, 1, 1, 3494.897705078125, 1995.773193359375, 65.536407470703125, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+17, 195264, 571, 65, 4158, 1, 1, 3515.049072265625, 1995.760009765625, 66.579864501953125, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+18, 195273, 571, 65, 4158, 1, 1, 3519.55029296875, 2023.3880615234375, 67.93622589111328125, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+19, 195264, 571, 65, 4158, 1, 1, 3497.954345703125, 1962.58984375, 67.00489044189453125, 5.148722648620605468, 0, 0, -0.53729915618896484, 0.843391716480255126, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+20, 195273, 571, 65, 4158, 1, 1, 3500.45654296875, 1971.029541015625, 67.74578857421875, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+21, 195260, 571, 65, 4158, 1, 1, 3490.325439453125, 1972.8038330078125, 66.77190399169921875, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+22, 195264, 571, 65, 4158, 1, 1, 3489.517822265625, 1973.3082275390625, 66.71260833740234375, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+23, 195273, 571, 65, 4158, 1, 1, 3492.437255859375, 1968.1041259765625, 68.17337799072265625, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+24, 195256, 571, 65, 4158, 1, 1, 3515.82763671875, 1981.8394775390625, 64.86244964599609375, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+25, 195259, 571, 65, 4158, 1, 1, 3643.3837890625, 1884.2996826171875, 80.81537628173828125, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+26, 195259, 571, 65, 0, 1, 1, 3553.18017578125, 1827.4703369140625, 81.07700347900390625, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+27, 195259, 571, 65, 0, 1, 1, 3612.02685546875, 1412.470458984375, 92.6059722900390625, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+28, 195256, 571, 65, 4165, 1, 1, 3763.40625, 1539.2960205078125, 87.0437469482421875, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Agmar's Hammer - Difficulty: 0) CreateObject1 +(@OGUID+29, 195254, 571, 65, 4165, 1, 1, 3771.653564453125, 1596.68408203125, 107.9984970092773437, 5.009094715118408203, 0, 0, -0.59482288360595703, 0.80385679006576538, 120, 255, 1, 0), -- Hanging, Square, Large - Brewfest (Area: Agmar's Hammer - Difficulty: 0) CreateObject1 +(@OGUID+30, 195259, 571, 65, 4165, 1, 1, 3770.22998046875, 1602.4271240234375, 95.7740936279296875, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Agmar's Hammer - Difficulty: 0) CreateObject1 +(@OGUID+31, 195259, 571, 65, 4165, 1, 1, 3857.14404296875, 1496.1441650390625, 95.12448883056640625, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Agmar's Hammer - Difficulty: 0) CreateObject1 +(@OGUID+32, 195256, 571, 65, 4169, 1, 1, 4462.36083984375, 1266.4830322265625, 142.2846527099609375, 5.009094715118408203, 0, 0, -0.59482288360595703, 0.80385679006576538, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+33, 195256, 571, 65, 4169, 1, 1, 4469.087890625, 1267.6422119140625, 141.8955841064453125, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+34, 195256, 571, 65, 4169, 1, 1, 4515.189453125, 1271.204833984375, 137.71160888671875, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+35, 195256, 571, 65, 4169, 1, 1, 4528.02587890625, 1252.005615234375, 139.5977325439453125, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+36, 195256, 571, 65, 4169, 1, 1, 4570.0712890625, 1394.9468994140625, 193.0703582763671875, 0, 0, 0, 0, 1, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+37, 195256, 571, 65, 4169, 1, 1, 4591.20654296875, 1394.501708984375, 193.8046722412109375, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+38, 195256, 571, 65, 4169, 1, 1, 4569.6728515625, 1388.65380859375, 192.9149932861328125, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+39, 195253, 571, 65, 4169, 1, 1, 4568.4990234375, 1399.640625, 198.230712890625, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+40, 195256, 571, 65, 4169, 1, 1, 4605.55810546875, 1414.258544921875, 194.6596527099609375, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+41, 195256, 571, 65, 4169, 1, 1, 4576.10009765625, 1411.882568359375, 192.8129730224609375, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+42, 195256, 571, 65, 4169, 1, 1, 4618.97119140625, 1409.7882080078125, 194.7805938720703125, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+43, 195256, 571, 65, 4169, 1, 1, 4616.93212890625, 1401.3851318359375, 195.17340087890625, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+44, 195256, 571, 65, 4169, 1, 1, 4613.7509765625, 1415.2470703125, 194.660675048828125, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+45, 195256, 571, 65, 4169, 1, 1, 4571.2490234375, 1421.1475830078125, 189.2039642333984375, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 571, 65, 4169, 1, 1, 4616.95458984375, 1458.38525390625, 180.9932403564453125, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+47, 195256, 571, 65, 4169, 1, 1, 4570.48876953125, 1446.2413330078125, 189.23175048828125, 1.692969322204589843, 0, 0, 0.748955726623535156, 0.662620067596435546, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+48, 195256, 571, 65, 4169, 1, 1, 4592.09912109375, 1465.794189453125, 194.402008056640625, 3.019413232803344726, 0, 0, 0.998134613037109375, 0.061051756143569946, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+49, 195256, 571, 65, 4169, 1, 1, 4690.8232421875, 1517.4398193359375, 261.107513427734375, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+50, 195256, 571, 65, 4169, 1, 1, 4692.9306640625, 1529.1580810546875, 261.002197265625, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fordragon Hold - Difficulty: 0) CreateObject1 +(@OGUID+51, 195256, 571, 65, 4170, 1, 1, 4866.24853515625, 1289.0113525390625, 222.6893768310546875, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+52, 195256, 571, 65, 4170, 1, 1, 4919.08642578125, 1318.598388671875, 229.56298828125, 4.188792228698730468, 0, 0, -0.86602497100830078, 0.50000077486038208, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+53, 195256, 571, 65, 4170, 1, 1, 4925.45947265625, 1257.5225830078125, 226.8903961181640625, 1.32644820213317871, 0, 0, 0.615660667419433593, 0.788011372089385986, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+54, 195256, 571, 65, 4170, 1, 1, 4908.990234375, 1241.1226806640625, 226.8822021484375, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+55, 195256, 571, 65, 4170, 1, 1, 4896.076171875, 1252.8404541015625, 227.641632080078125, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+56, 195259, 571, 65, 4170, 1, 1, 4967.13916015625, 1265.5989990234375, 227.70660400390625, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+57, 195256, 571, 65, 4170, 1, 1, 4950.56494140625, 1309.805908203125, 235.062042236328125, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+58, 195256, 571, 65, 4170, 1, 1, 4978.830078125, 1243.00390625, 227.4904327392578125, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+59, 195256, 571, 65, 4170, 1, 1, 4958.9189453125, 1196.347900390625, 226.805145263671875, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+60, 195259, 571, 65, 4170, 1, 1, 4971.7099609375, 1267.1671142578125, 228.3887786865234375, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+61, 195256, 571, 65, 4170, 1, 1, 4967.2216796875, 1205.6607666015625, 227.3894805908203125, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+62, 195256, 571, 65, 4170, 1, 1, 4985.3779296875, 1269.7122802734375, 229.3460540771484375, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+63, 195266, 571, 65, 4170, 1, 1, 4986.63525390625, 1237.8038330078125, 232.5177154541015625, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+64, 195259, 571, 65, 4170, 1, 1, 4951.85693359375, 1167.7017822265625, 240.147674560546875, 4.206246376037597656, 0, 0, -0.86162853240966796, 0.50753939151763916, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+65, 195256, 571, 65, 4170, 1, 1, 4980.44580078125, 1205.4207763671875, 227.706817626953125, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+66, 195256, 571, 65, 4170, 1, 1, 4948.5654296875, 1174.3785400390625, 239.7920684814453125, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+67, 195256, 571, 65, 4170, 1, 1, 4986.67431640625, 1189.0426025390625, 227.4760894775390625, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+68, 195259, 571, 65, 4170, 1, 1, 4942.5888671875, 1170.193359375, 239.8133392333984375, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+69, 195256, 571, 65, 4170, 1, 1, 4956.7509765625, 1164.541748046875, 239.6501007080078125, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+70, 195259, 571, 65, 4170, 1, 1, 4937.84619140625, 1158.6041259765625, 240.5037994384765625, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+71, 195259, 571, 65, 4170, 1, 1, 5009.38525390625, 1205.94970703125, 231.4590606689453125, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+72, 195256, 571, 65, 4170, 1, 1, 5003.66259765625, 1190.1903076171875, 227.3822784423828125, 2.792518377304077148, 0, 0, 0.984807014465332031, 0.173652306199073791, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+73, 195266, 571, 65, 4170, 1, 1, 5027.05322265625, 1209.40625, 240.2350311279296875, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+74, 195266, 571, 65, 4170, 1, 1, 5013.38134765625, 1244.9617919921875, 238.303924560546875, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+75, 195266, 571, 65, 4170, 1, 1, 5006.91064453125, 1195.970458984375, 235.5181732177734375, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+76, 195256, 571, 65, 4170, 1, 1, 5019.80078125, 1236.829833984375, 230.09747314453125, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+77, 195266, 571, 65, 4170, 1, 1, 5027.01318359375, 1209.4305419921875, 233.940460205078125, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Kor'kron Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+78, 195255, 571, 65, 4177, 1, 1, 3966.296875, -733.61083984375, 257.43707275390625, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+79, 195256, 571, 65, 4177, 1, 1, 3951.35546875, -780.912841796875, 244.6300201416015625, 4.118979454040527343, 0, 0, -0.88294696807861328, 0.469472706317901611, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+80, 195255, 571, 65, 4177, 1, 1, 3928.12841796875, -732.9033203125, 262.249664306640625, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+81, 195255, 571, 65, 4177, 1, 1, 3893.7587890625, -696.30322265625, 261.979034423828125, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+82, 195255, 571, 65, 4177, 1, 1, 3905.212646484375, -659.330078125, 257.803314208984375, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+83, 195256, 571, 65, 4177, 1, 1, 3862.428466796875, -745.89483642578125, 221.11981201171875, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+84, 195256, 571, 65, 4177, 1, 1, 3826.775634765625, -685.09710693359375, 223.0012969970703125, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+85, 195256, 571, 65, 4177, 1, 1, 3858.989990234375, -724.02996826171875, 221.2303924560546875, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+86, 195256, 571, 65, 4177, 1, 1, 3843.91064453125, -763.3690185546875, 219.3805694580078125, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+87, 195256, 571, 65, 4177, 1, 1, 3822.774658203125, -695.2535400390625, 223.0012664794921875, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+88, 195256, 571, 65, 4177, 1, 1, 3866.354248046875, -771.1375732421875, 220.3779449462890625, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+89, 195255, 571, 65, 4177, 1, 1, 3815.779541015625, -754.2735595703125, 213.8813934326171875, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+90, 195255, 571, 65, 4177, 1, 1, 3893.3837890625, -829.67462158203125, 205.0926055908203125, 5.218535900115966796, 0, 0, -0.507537841796875, 0.861629426479339599, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+91, 195255, 571, 65, 4177, 1, 1, 3767.4033203125, -747.827392578125, 211.6566619873046875, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+92, 195259, 571, 65, 4177, 1, 1, 3720.31591796875, -705.8350830078125, 216.007415771484375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+93, 195256, 571, 65, 4177, 1, 1, 3716.31591796875, -708.1944580078125, 215.4729766845703125, 2.268925428390502929, 0, 0, 0.906307220458984375, 0.422619491815567016, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+94, 195256, 571, 65, 4177, 1, 1, 3749.342041015625, -769.87677001953125, 197.4348602294921875, 0.750490784645080566, 0, 0, 0.3665008544921875, 0.93041771650314331, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+95, 195259, 571, 65, 4177, 1, 1, 3713.5712890625, -686.2274169921875, 216.5030059814453125, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+96, 195256, 571, 65, 4177, 1, 1, 3704.834228515625, -687.13714599609375, 215.5728302001953125, 5.148722648620605468, 0, 0, -0.53729915618896484, 0.843391716480255126, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+97, 195256, 571, 65, 4177, 1, 1, 3698.530517578125, -714.2257080078125, 214.1509552001953125, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+98, 195256, 571, 65, 4177, 1, 1, 3697.3759765625, -742.7100830078125, 213.7969818115234375, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+99, 195256, 571, 65, 4177, 1, 1, 3676.882080078125, -702.15106201171875, 214.36669921875, 5.427974700927734375, 0, 0, -0.41469287872314453, 0.909961462020874023, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+100, 195256, 571, 65, 4177, 1, 1, 3794.0703125, -804.03143310546875, 197.33807373046875, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+101, 195255, 571, 65, 4177, 1, 1, 3743.799560546875, -773.857666015625, 209.3840789794921875, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+102, 195256, 571, 65, 4177, 1, 1, 3803.819580078125, -793.8428955078125, 197.235595703125, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+103, 195256, 571, 65, 4177, 1, 1, 3781.02783203125, -803.45452880859375, 197.207733154296875, 0.942476630210876464, 0, 0, 0.453989982604980468, 0.891006767749786376, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+104, 195255, 571, 65, 4177, 1, 1, 3816.917236328125, -800.0577392578125, 208.6811676025390625, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+105, 195255, 571, 65, 4177, 1, 1, 3826.9765625, -809.499755859375, 208.5765533447265625, 0.261798173189163208, 0, 0, 0.130525588989257812, 0.991444945335388183, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+106, 195255, 571, 65, 4177, 1, 1, 3847.43017578125, -835.56915283203125, 200.8210906982421875, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+107, 195255, 571, 65, 4177, 1, 1, 3809.892333984375, -826.83380126953125, 208.5438385009765625, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+108, 195255, 571, 65, 4177, 1, 1, 3800.188720703125, -817.22357177734375, 208.8302154541015625, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+109, 195255, 571, 65, 4177, 1, 1, 3779.26904296875, -809.5614013671875, 209.6387481689453125, 0.802850961685180664, 0, 0, 0.390730857849121093, 0.920504987239837646, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+110, 195255, 571, 65, 4177, 1, 1, 3807.228271484375, -855.24261474609375, 203.9785614013671875, 5.201082706451416015, 0, 0, -0.51503753662109375, 0.857167601585388183, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+111, 195255, 571, 65, 4177, 1, 1, 3797.328125, -852.06500244140625, 204.159820556640625, 3.630291461944580078, 0, 0, -0.97029495239257812, 0.241925001144409179, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+112, 195255, 571, 65, 4177, 1, 1, 3695.23486328125, -765.36968994140625, 202.1208038330078125, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+113, 195256, 571, 65, 4177, 1, 1, 3674.52685546875, -739.81768798828125, 213.895782470703125, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+114, 195260, 571, 65, 4177, 1, 1, 3652.607177734375, -715.25677490234375, 215.9242706298828125, 5.445427894592285156, 0, 0, -0.40673637390136718, 0.913545548915863037, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+115, 195260, 571, 65, 4177, 1, 1, 3645.81201171875, -721.057373046875, 216.1720123291015625, 6.195919513702392578, 0, 0, -0.04361915588378906, 0.999048233032226562, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+116, 195260, 571, 65, 4177, 1, 1, 3659.44091796875, -693.828369140625, 223.6274871826171875, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+117, 195264, 571, 65, 4177, 1, 1, 3655.505615234375, -720.5035400390625, 216.2393341064453125, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+118, 195266, 571, 65, 4177, 1, 1, 3654.854248046875, -700.45977783203125, 228.6396484375, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+119, 195255, 571, 65, 4177, 1, 1, 3650.591064453125, -754.50836181640625, 201.845123291015625, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+120, 195257, 571, 65, 4177, 1, 1, 3666.34716796875, -703.86016845703125, 217.6456451416015625, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+121, 195264, 571, 65, 4177, 1, 1, 3660.451904296875, -698.0406494140625, 223.627471923828125, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+122, 195256, 571, 65, 4177, 1, 1, 3658.59033203125, -706.50018310546875, 224.4459991455078125, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+123, 195259, 571, 65, 4177, 1, 1, 3658.615478515625, -719.43780517578125, 218.7647552490234375, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+124, 195257, 571, 65, 4177, 1, 1, 3651.5986328125, -711.7225341796875, 216.841339111328125, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+125, 195266, 571, 65, 4177, 1, 1, 3667.354248046875, -727.1336669921875, 218.360137939453125, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+126, 195260, 571, 65, 4177, 1, 1, 3660.471923828125, -699.21014404296875, 223.6274871826171875, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+127, 195256, 571, 65, 4177, 1, 1, 3649.294677734375, -702.2972412109375, 215.0317840576171875, 6.195919513702392578, 0, 0, -0.04361915588378906, 0.999048233032226562, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+128, 195260, 571, 65, 4177, 1, 1, 3650.23046875, -698.5430908203125, 223.6274871826171875, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+129, 195264, 571, 65, 4177, 1, 1, 3658.077392578125, -721.1656494140625, 216.2393035888671875, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+130, 195266, 571, 65, 4177, 1, 1, 3665.362060546875, -707.2430419921875, 221.1085357666015625, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+131, 195259, 571, 65, 4177, 1, 1, 3644.34765625, -723.92327880859375, 218.8717803955078125, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+132, 195266, 571, 65, 4177, 1, 1, 3663.72216796875, -720.04339599609375, 224.00762939453125, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+133, 195264, 571, 65, 4177, 1, 1, 3658.893310546875, -693.3231201171875, 223.627471923828125, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+134, 195259, 571, 65, 4177, 1, 1, 3647.875, -707.907470703125, 217.1875, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+135, 195260, 571, 65, 4177, 1, 1, 3646.14794921875, -718.1917724609375, 216.1720123291015625, 6.09120035171508789, 0, 0, -0.09584522247314453, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+136, 195266, 571, 65, 4177, 1, 1, 3668.15283203125, -722.36114501953125, 218.7000274658203125, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+137, 195264, 571, 65, 4177, 1, 1, 3653.489990234375, -720.23321533203125, 216.2393341064453125, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+138, 195260, 571, 65, 4177, 1, 1, 3652.887939453125, -712.58856201171875, 215.92706298828125, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+139, 195264, 571, 65, 4177, 1, 1, 3652.147705078125, -720.3037109375, 216.2393341064453125, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+140, 195264, 571, 65, 4177, 1, 1, 3655.91064453125, -710.796630859375, 227.4317626953125, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+141, 195257, 571, 65, 4177, 1, 1, 3665.5869140625, -710.9298095703125, 217.473846435546875, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+142, 195266, 571, 65, 4177, 1, 1, 3668.486083984375, -717.06597900390625, 218.909515380859375, 6.230826377868652343, 0, 0, -0.02617645263671875, 0.999657332897186279, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+143, 195264, 571, 65, 4177, 1, 1, 3630.090576171875, -711.75091552734375, 215.4510498046875, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+144, 195255, 571, 65, 4177, 1, 1, 3641.374267578125, -671.68048095703125, 245.1111907958984375, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+145, 195264, 571, 65, 4177, 1, 1, 3630.2119140625, -709.900390625, 215.450927734375, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+146, 195264, 571, 65, 4177, 1, 1, 3653.0712890625, -692.71044921875, 223.627471923828125, 0.645771682262420654, 0, 0, 0.317304611206054687, 0.948323667049407958, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+147, 195260, 571, 65, 4177, 1, 1, 3652.268310546875, -693.3177490234375, 223.6274871826171875, 5.305802345275878906, 0, 0, -0.46947097778320312, 0.882947921752929687, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+148, 195264, 571, 65, 4177, 1, 1, 3650.30908203125, -697.84649658203125, 223.6274871826171875, 3.194002151489257812, 0, 0, -0.99965667724609375, 0.026201646775007247, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+149, 195257, 571, 65, 4177, 1, 1, 3640.114501953125, -711.26043701171875, 215.9584503173828125, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+150, 195264, 571, 65, 4177, 1, 1, 3629.59130859375, -716.77105712890625, 215.4509124755859375, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+151, 195256, 571, 65, 4177, 1, 1, 3632.08740234375, -711.01788330078125, 214.2405242919921875, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+152, 195257, 571, 65, 4177, 1, 1, 3635.86376953125, -710.77606201171875, 215.8188018798828125, 4.869470596313476562, 0, 0, -0.64944744110107421, 0.760406434535980224, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+153, 195264, 571, 65, 4177, 1, 1, 3629.776611328125, -714.98272705078125, 215.4509124755859375, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+154, 195255, 571, 65, 4177, 1, 1, 3628.027099609375, -668.01666259765625, 244.94390869140625, 3.892086982727050781, 0, 0, -0.93041706085205078, 0.366502493619918823, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+155, 195255, 571, 65, 4177, 1, 1, 3647.8125, -648.90618896484375, 243.9453125, 0.767943859100341796, 0, 0, 0.374606132507324218, 0.927184045314788818, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+156, 195255, 571, 65, 4177, 1, 1, 3634.61669921875, -644.8275146484375, 244.1315460205078125, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+157, 195255, 571, 65, 4177, 1, 1, 3599.903076171875, -757.46661376953125, 199.196746826171875, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+158, 195255, 571, 65, 4177, 1, 1, 3557.50146484375, -768.26031494140625, 203.72564697265625, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wintergarde Keep - Difficulty: 0) CreateObject1 +(@OGUID+159, 195266, 571, 65, 4186, 1, 1, 3215.221435546875, -748.22918701171875, 173.981292724609375, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Venomspite - Difficulty: 0) CreateObject1 +(@OGUID+160, 195256, 571, 65, 4161, 1, 1, 3463.682373046875, 274.773651123046875, 52.29326248168945312, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+161, 195256, 571, 65, 4161, 1, 1, 3477.0625, 249.06353759765625, -120.141532897949218, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+162, 195256, 571, 65, 4161, 1, 1, 3466.39453125, 254.6163177490234375, 52.29463577270507812, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+163, 195256, 571, 65, 4161, 1, 1, 3471.139892578125, 281.183441162109375, -120.144790649414062, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+164, 195255, 571, 65, 4161, 1, 1, 3457.30126953125, 300.75, 59.3188629150390625, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+165, 195256, 571, 65, 4161, 1, 1, 3480.77099609375, 279.447265625, 52.26997756958007812, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+166, 195255, 571, 65, 4161, 1, 1, 3465.232666015625, 228.173614501953125, 59.3188629150390625, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+167, 195256, 571, 65, 4161, 1, 1, 3483.588134765625, 254.1246795654296875, 52.26856231689453125, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+168, 195256, 571, 65, 4161, 1, 1, 3518.373291015625, 281.8262939453125, 47.31753921508789062, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+169, 195260, 571, 65, 4161, 1, 1, 3526.265625, 290.728240966796875, 45.74524307250976562, 5.497788906097412109, 0, 0, -0.38268280029296875, 0.923879802227020263, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+170, 195264, 571, 65, 4161, 1, 1, 3529.885986328125, 252.3538970947265625, 45.70510482788085937, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+171, 195260, 571, 65, 4161, 1, 1, 3522.945068359375, 260.23529052734375, 45.71449661254882812, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+172, 195266, 571, 65, 4161, 1, 1, 3521.08984375, 240.675506591796875, 53.60064697265625, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+173, 195256, 571, 65, 4161, 1, 1, 3492.134033203125, 322.442291259765625, -120.144508361816406, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+174, 195256, 571, 65, 4161, 1, 1, 3501.746826171875, 212.192657470703125, -120.14520263671875, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+175, 195256, 571, 65, 4161, 1, 1, 3527.9951171875, 301.946990966796875, 117.1260833740234375, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+176, 195256, 571, 65, 4161, 1, 1, 3517.434326171875, 257.018707275390625, 117.1312637329101562, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+177, 195256, 571, 65, 4161, 1, 1, 3514.206787109375, 282.375701904296875, 117.1297073364257812, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+178, 195264, 571, 65, 4161, 1, 1, 3521.04638671875, 280.959625244140625, 45.70491409301757812, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+179, 195256, 571, 65, 4161, 1, 1, 3520.52001953125, 258.977874755859375, 47.31750106811523437, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+180, 195266, 571, 65, 4161, 1, 1, 3515.23779296875, 299.431549072265625, 53.5312347412109375, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+181, 195256, 571, 65, 4161, 1, 1, 3549.405517578125, 317.3907470703125, 116.7897720336914062, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+182, 195256, 571, 65, 4161, 1, 1, 3530.838134765625, 337.955718994140625, 52.2563934326171875, 6.195919513702392578, 0, 0, -0.04361915588378906, 0.999048233032226562, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+183, 195256, 571, 65, 4161, 1, 1, 3561.059814453125, 247.0675506591796875, 47.31746292114257812, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+184, 195256, 571, 65, 4161, 1, 1, 3539.344970703125, 210.2894439697265625, 116.840606689453125, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+185, 195256, 571, 65, 4161, 1, 1, 3555.46044921875, 301.823577880859375, 47.31740188598632812, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+186, 195256, 571, 65, 4161, 1, 1, 3543.595947265625, 229.015350341796875, 116.7897567749023437, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+187, 195256, 571, 65, 4161, 1, 1, 3527.48779296875, 332.788970947265625, 116.7998123168945312, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+188, 195256, 571, 65, 4161, 1, 1, 3538.464111328125, 244.53662109375, 47.31742095947265625, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+189, 195264, 571, 65, 4161, 1, 1, 3555.038330078125, 299.092620849609375, 45.70467758178710937, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+190, 195256, 571, 65, 4161, 1, 1, 3535.775634765625, 241.7472381591796875, 117.1205062866210937, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+191, 195264, 571, 65, 4161, 1, 1, 3560.05810546875, 249.095703125, 45.70547866821289062, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+192, 195260, 571, 65, 4161, 1, 1, 3549.798583984375, 245.620880126953125, 45.7057647705078125, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+193, 195256, 571, 65, 4161, 1, 1, 3532.950439453125, 299.915374755859375, 47.31732559204101562, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+194, 195256, 571, 65, 4161, 1, 1, 3542.328857421875, 206.0333099365234375, 52.25639724731445312, 0.261798173189163208, 0, 0, 0.130525588989257812, 0.991444945335388183, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+195, 195256, 571, 65, 4161, 1, 1, 3535.763427734375, 316.01409912109375, 116.7897567749023437, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+196, 195256, 571, 65, 4161, 1, 1, 3532.222412109375, 198.499237060546875, -120.144523620605468, 1.500982880592346191, 0, 0, 0.681998252868652343, 0.731353819370269775, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+197, 195256, 571, 65, 4161, 1, 1, 3515.109375, 342.43658447265625, -120.144523620605468, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+198, 195256, 571, 65, 4161, 1, 1, 3573.3193359375, 287.205413818359375, 47.31745147705078125, 3.630291461944580078, 0, 0, -0.97029495239257812, 0.241925001144409179, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+199, 195260, 571, 65, 4161, 1, 1, 3564.302734375, 294.137481689453125, 45.70593643188476562, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+200, 195264, 571, 65, 4161, 1, 1, 3573.747314453125, 275.677520751953125, 45.70751571655273437, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+201, 195256, 571, 65, 4161, 1, 1, 3559.00341796875, 305.341644287109375, 117.1256637573242187, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+202, 195256, 571, 65, 4161, 1, 1, 3531.9853515625, 349.9049072265625, 52.27656936645507812, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+203, 195266, 571, 65, 4161, 1, 1, 3570.42236328125, 301.91058349609375, 53.45551681518554687, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+204, 195256, 571, 65, 4161, 1, 1, 3576.93408203125, 290.008087158203125, 117.1280517578125, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+205, 195256, 571, 65, 4161, 1, 1, 3553.869140625, 335.977325439453125, 116.7961578369140625, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+206, 195256, 571, 65, 4161, 1, 1, 3551.696533203125, 340.12841796875, 52.25639724731445312, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+207, 195256, 571, 65, 4161, 1, 1, 3548.8056640625, 191.4957122802734375, 52.29361724853515625, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+208, 195256, 571, 65, 4161, 1, 1, 3562.233642578125, 345.9384765625, -120.144523620605468, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+209, 195256, 571, 65, 4161, 1, 1, 3546.335693359375, 351.499725341796875, 52.27733230590820312, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+210, 195256, 571, 65, 4161, 1, 1, 3592.6552734375, 332.868927001953125, -120.144790649414062, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+211, 195256, 571, 65, 4152, 1, 1, 2837.892822265625, 884.14825439453125, 15.93669509887695312, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+212, 195256, 571, 65, 4152, 1, 1, 2802.755615234375, 890.158447265625, 12.88576412200927734, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+213, 195260, 571, 65, 4152, 1, 1, 2796.747802734375, 906.89013671875, 22.36409950256347656, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+214, 195256, 571, 65, 4152, 1, 1, 2815.472412109375, 918.79949951171875, 20.88776397705078125, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+215, 195259, 571, 65, 4152, 1, 1, 2791.1015625, 904.5616455078125, 23.04510879516601562, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+216, 195256, 571, 65, 4152, 1, 1, 2801.711669921875, 908.50860595703125, 22.29059219360351562, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+217, 195256, 571, 65, 4152, 1, 1, 2787.1181640625, 905.95831298828125, 22.15630531311035156, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+218, 195259, 571, 65, 4152, 1, 1, 2787.111083984375, 910.8663330078125, 32.0193634033203125, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+219, 195256, 571, 65, 4152, 1, 1, 2793.772705078125, 931.6573486328125, 22.35704803466796875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+220, 195259, 571, 65, 4152, 1, 1, 2798.08935546875, 941.06768798828125, 24.67208290100097656, 0.314158439636230468, 0, 0, 0.156434059143066406, 0.987688362598419189, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+221, 195256, 571, 65, 4152, 1, 1, 2763.372314453125, 862.8992919921875, 6.277842044830322265, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+222, 195256, 571, 65, 4152, 1, 1, 2781.196533203125, 933.69793701171875, 22.78250503540039062, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+223, 195259, 571, 65, 4152, 1, 1, 2742.899658203125, 887.79473876953125, 6.358366012573242187, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+224, 195259, 571, 65, 4152, 1, 1, 2756.8154296875, 926.76348876953125, 23.21160125732421875, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+225, 195259, 571, 65, 4152, 1, 1, 2792.319580078125, 944.921875, 23.26566123962402343, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+226, 195256, 571, 65, 4152, 1, 1, 2784.236083984375, 959.46875, 22.49838066101074218, 5.462882041931152343, 0, 0, -0.39874839782714843, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+227, 195256, 571, 65, 4152, 1, 1, 2771.326171875, 914.00445556640625, 22.36398696899414062, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+228, 195257, 571, 65, 4152, 1, 1, 2777.521240234375, 938.154541015625, 25.58710670471191406, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+229, 195259, 571, 65, 4152, 1, 1, 2756.885498046875, 920.03125, 24.40833282470703125, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+230, 195256, 571, 65, 4152, 1, 1, 2795.231689453125, 971.228759765625, 22.84726524353027343, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+231, 195256, 571, 65, 4152, 1, 1, 2772.131103515625, 928.72784423828125, 22.78977012634277343, 0.733038187026977539, 0, 0, 0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+232, 195260, 571, 65, 4152, 1, 1, 2751.039794921875, 907.93927001953125, 6.676070213317871093, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+233, 195256, 571, 65, 4152, 1, 1, 2754.22412109375, 894.705810546875, 5.906911849975585937, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+234, 195257, 571, 65, 4152, 1, 1, 2770.710205078125, 934.4930419921875, 25.70063018798828125, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+235, 195256, 571, 65, 4152, 1, 1, 2731.75537109375, 930.22222900390625, 0.360352993011474609, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+236, 195259, 571, 65, 4152, 1, 1, 2713.987060546875, 894.1632080078125, 16.31461143493652343, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+237, 195273, 571, 65, 4152, 1, 1, 2714.57470703125, 895.9132080078125, 10.3496856689453125, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+238, 195256, 571, 65, 4152, 1, 1, 2743.731689453125, 851.451416015625, 6.691174983978271484, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+239, 195256, 571, 65, 4152, 1, 1, 2720.492431640625, 904.63189697265625, 5.697000026702880859, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+240, 195259, 571, 65, 4152, 1, 1, 2732.103271484375, 881.14410400390625, 6.379679203033447265, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+241, 195256, 571, 65, 4152, 1, 1, 2722.36474609375, 888.5218505859375, 5.181850910186767578, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+242, 195273, 571, 65, 4152, 1, 1, 2715.4375, 895.96417236328125, 10.36511802673339843, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+243, 195256, 571, 65, 4152, 1, 1, 2659.202392578125, 906.3992919921875, 4.293645858764648437, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+244, 195256, 571, 65, 4152, 1, 1, 2663.8447265625, 880.25518798828125, 4.281791210174560546, 1.85004889965057373, 0, 0, 0.798635482788085937, 0.60181504487991333, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+245, 195256, 571, 65, 4152, 1, 1, 2645.36279296875, 884.6475830078125, 4.748452186584472656, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 +(@OGUID+246, 195256, 571, 65, 4152, 1, 1, 2643.08154296875, 897.57989501953125, 4.501050949096679687, 6.021387100219726562, 0, 0, -0.13052558898925781, 0.991444945335388183, 120, 255, 1, 0); -- Standing, Exterior, Medium - Brewfest (Area: Moa'ki Harbor - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+246 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+246; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_06_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_06_world.sql new file mode 100644 index 00000000000..360638e6b58 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_06_world.sql @@ -0,0 +1,83 @@ +-- +SET @OGUID := 85578; -- Need 74 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+73; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195256, 571, 66, 4323, 1, 1, 5794.01025390625, -3586.30517578125, 388.6536865234375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+1, 195256, 571, 66, 4323, 1, 1, 5789.33837890625, -3595.7900390625, 388.8240966796875, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+2, 195260, 571, 66, 4323, 1, 1, 5796.28759765625, -3573.15673828125, 388.1470947265625, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+3, 195260, 571, 66, 4323, 1, 1, 5801.0478515625, -3572.99658203125, 389.088653564453125, 3.019413232803344726, 0, 0, 0.998134613037109375, 0.061051756143569946, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+4, 195260, 571, 66, 4323, 1, 1, 5800.0751953125, -3557.563232421875, 389.77008056640625, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+5, 195253, 571, 66, 4323, 1, 1, 5779.60693359375, -3647.15673828125, 397.078765869140625, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+6, 195257, 571, 66, 4323, 1, 1, 5796.578125, -3553.885498046875, 388.331024169921875, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+7, 195259, 571, 66, 4323, 1, 1, 5768.53369140625, -3620.057373046875, 389.515899658203125, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+8, 195259, 571, 66, 4323, 1, 1, 5778.517578125, -3600.4619140625, 387.3365478515625, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+9, 195256, 571, 66, 4323, 1, 1, 5783.69384765625, -3600.810302734375, 387.71563720703125, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+10, 195260, 571, 66, 4323, 1, 1, 5771.67333984375, -3602.202392578125, 388.42059326171875, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+11, 195256, 571, 66, 4323, 1, 1, 5790.5546875, -3548.06201171875, 387.1112060546875, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+12, 195260, 571, 66, 4323, 1, 1, 5794.41943359375, -3557.553955078125, 388.896392822265625, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+13, 195256, 571, 66, 4323, 1, 1, 5774.17041015625, -3614.330078125, 387.690093994140625, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+14, 195260, 571, 66, 4323, 1, 1, 5767.890625, -3581.119873046875, 388.561767578125, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+15, 195256, 571, 66, 4323, 1, 1, 5758.55078125, -3620.203125, 385.835174560546875, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+16, 195260, 571, 66, 4323, 1, 1, 5760.94091796875, -3580.5234375, 388.68145751953125, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+17, 195260, 571, 66, 4323, 1, 1, 5768.9931640625, -3564.651123046875, 388.132049560546875, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+18, 195260, 571, 66, 4323, 1, 1, 5759.46728515625, -3565.396484375, 388.25091552734375, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+19, 195259, 571, 66, 4323, 1, 1, 5746.46826171875, -3556.42822265625, 390.089630126953125, 6.056293010711669921, 0, 0, -0.11320304870605468, 0.993571877479553222, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+20, 195273, 571, 66, 4323, 1, 1, 5769.6552734375, -3530.541748046875, 396.830230712890625, 4.904376029968261718, 0, 0, -0.636077880859375, 0.771624863147735595, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+21, 195273, 571, 66, 4323, 1, 1, 5745.5791015625, -3534.723876953125, 396.684967041015625, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+22, 195256, 571, 66, 4323, 1, 1, 5750.7998046875, -3535.454345703125, 389.026702880859375, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+23, 195256, 571, 66, 4323, 1, 1, 5764.80029296875, -3532.1552734375, 388.3555908203125, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+24, 195259, 571, 66, 4323, 1, 1, 5762.9599609375, -3526.6650390625, 391.175689697265625, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zim'Torga - Difficulty: 0) CreateObject1 +(@OGUID+25, 195260, 571, 66, 4275, 1, 1, 5524.15576171875, -2679.053466796875, 305.170166015625, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+26, 195254, 571, 66, 4275, 1, 1, 5391.95947265625, -2692.567626953125, 310.286285400390625, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 120, 255, 1, 0), -- Hanging, Square, Large - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+27, 195260, 571, 66, 4275, 1, 1, 5500.44873046875, -2662.013427734375, 304.96588134765625, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+28, 195253, 571, 66, 4275, 1, 1, 5481.4208984375, -2655.850830078125, 310.491180419921875, 0, 0, 0, 0, 1, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+29, 195256, 571, 66, 4275, 1, 1, 5408.3564453125, -2679.760986328125, 303.953948974609375, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+30, 195253, 571, 66, 4275, 1, 1, 5472.98193359375, -2649.109375, 310.313873291015625, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+31, 195259, 571, 66, 4275, 1, 1, 5526.03369140625, -2669.76416015625, 304.288970947265625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+32, 195253, 571, 66, 4275, 1, 1, 5426.5380859375, -2647.54638671875, 310.758880615234375, 1.553341388702392578, 0, 0, 0.700908660888671875, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+33, 195253, 571, 66, 4275, 1, 1, 5418.21728515625, -2654.892333984375, 310.675201416015625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+34, 195256, 571, 66, 4275, 1, 1, 5500.0859375, -2657.1953125, 303.953948974609375, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+35, 195260, 571, 66, 4275, 1, 1, 5492.63525390625, -2649.155517578125, 305.27008056640625, 3.089183330535888671, 0, 0, 0.99965667724609375, 0.026201646775007247, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+36, 195256, 571, 66, 4275, 1, 1, 5528.21435546875, -2651.125, 303.953948974609375, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+37, 195256, 571, 66, 4275, 1, 1, 5526.2255859375, -2674.839599609375, 303.953948974609375, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+38, 195260, 571, 66, 4275, 1, 1, 5410.43212890625, -2652.655029296875, 306.23101806640625, 2.635444164276123046, 0, 0, 0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+39, 195256, 571, 66, 4275, 1, 1, 5527.7744140625, -2637.86279296875, 303.953948974609375, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+40, 195253, 571, 66, 4275, 1, 1, 5482.34716796875, -2610.53125, 310.678924560546875, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+41, 195253, 571, 66, 4275, 1, 1, 5465.97607421875, -2609.939453125, 310.7265625, 3.124123096466064453, 0, 0, 0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+42, 195260, 571, 66, 4275, 1, 1, 5492.884765625, -2617.63232421875, 305.299072265625, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+43, 195256, 571, 66, 4275, 1, 1, 5464.55859375, -2619.046142578125, 306.5511474609375, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+44, 195253, 571, 66, 4275, 1, 1, 5473.11669921875, -2618.064697265625, 310.783782958984375, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+45, 195253, 571, 66, 4275, 1, 1, 5474.36474609375, -2602.700927734375, 310.6907958984375, 1.553341388702392578, 0, 0, 0.700908660888671875, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+46, 195255, 571, 66, 4275, 1, 1, 5490.34912109375, -2575.416748046875, 313.053253173828125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+47, 195256, 571, 66, 4275, 1, 1, 5436.38916015625, -2618.3818359375, 306.5511474609375, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+48, 195260, 571, 66, 4275, 1, 1, 5407.5224609375, -2646.7421875, 305.290191650390625, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: The Argent Stand - Difficulty: 0) CreateObject1 +(@OGUID+49, 195256, 571, 66, 4317, 1, 1, 5135.755859375, -2204.338134765625, 236.5435638427734375, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+50, 195256, 571, 66, 4317, 1, 1, 5190.787109375, -2215.080810546875, 239.398193359375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+51, 195259, 571, 66, 4317, 1, 1, 5196.89697265625, -2215.81591796875, 243.9397735595703125, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+52, 195264, 571, 66, 4317, 1, 1, 5157.71240234375, -2215.264892578125, 238.4418182373046875, 1.553341388702392578, 0, 0, 0.700908660888671875, 0.713251054286956787, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+53, 195260, 571, 66, 4317, 1, 1, 5143.44677734375, -2210.877197265625, 237.8242950439453125, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+54, 195264, 571, 66, 4317, 1, 1, 5157.25927734375, -2201.743896484375, 237.5309295654296875, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+55, 195264, 571, 66, 4317, 1, 1, 5141.53857421875, -2211.604248046875, 238.1585235595703125, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+56, 195260, 571, 66, 4317, 1, 1, 5190.736328125, -2212.201171875, 239.39776611328125, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+57, 195260, 571, 66, 4317, 1, 1, 5134.634765625, -2201.14453125, 238.8164825439453125, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+58, 195256, 571, 66, 4317, 1, 1, 5153.60595703125, -2216.569091796875, 236.80499267578125, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+59, 195264, 571, 66, 4317, 1, 1, 5137.095703125, -2201.546142578125, 237.8018951416015625, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+60, 195259, 571, 66, 4317, 1, 1, 5193.83837890625, -2203.542236328125, 239.8356170654296875, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+61, 195260, 571, 66, 4317, 1, 1, 5148.00146484375, -2198.407958984375, 237.6139678955078125, 5.70722818374633789, 0, 0, -0.28401470184326171, 0.958819925785064697, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+62, 195264, 571, 66, 4317, 1, 1, 5177.1533203125, -2180.083740234375, 236.542449951171875, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+63, 195256, 571, 66, 4317, 1, 1, 5135.95458984375, -2183.2392578125, 236.8366241455078125, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+64, 195256, 571, 66, 4317, 1, 1, 5196.79931640625, -2208.14404296875, 239.3988494873046875, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+65, 195259, 571, 66, 4317, 1, 1, 5179.93212890625, -2192.0244140625, 239.8267669677734375, 2.897245407104492187, 0, 0, 0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+66, 195264, 571, 66, 4317, 1, 1, 5192.4345703125, -2209.911376953125, 239.398193359375, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+67, 195259, 571, 66, 4317, 1, 1, 5111.6787109375, -2201.835205078125, 243.7792205810546875, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+68, 195256, 571, 66, 4317, 1, 1, 5174.27978515625, -2190.904052734375, 236.5398712158203125, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+69, 195260, 571, 66, 4317, 1, 1, 5173.9501953125, -2179.033203125, 236.537872314453125, 6.14356088638305664, 0, 0, -0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+70, 195256, 571, 66, 4317, 1, 1, 5170.6552734375, -2175.09375, 236.523956298828125, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+71, 195259, 571, 66, 4317, 1, 1, 5141.9833984375, -2154.614501953125, 244.30865478515625, 0.052358884364366531, 0, 0, 0.02617645263671875, 0.999657332897186279, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Light's Breach - Difficulty: 0) CreateObject1 +(@OGUID+72, 195256, 571, 66, 4312, 1, 1, 5235.5537109375, -1320.3189697265625, 242.1471405029296875, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Ebon Watch - Difficulty: 0) CreateObject1 +(@OGUID+73, 195256, 571, 66, 4312, 1, 1, 5233.94384765625, -1309.33349609375, 242.7247772216796875, 0.261798173189163208, 0, 0, 0.130525588989257812, 0.991444945335388183, 120, 255, 1, 0); -- Standing, Exterior, Medium - Brewfest (Area: Ebon Watch - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+73 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+73; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_07_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_07_world.sql new file mode 100644 index 00000000000..26b4cadf39d --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_07_world.sql @@ -0,0 +1,132 @@ +-- +SET @OGUID := 93212; -- Need 123 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+122; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195259, 571, 394, 4159, 1, 1, 4588.76904296875, -4259.3974609375, 183.012725830078125, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+1, 195256, 571, 394, 4159, 1, 1, 4578.9130859375, -4263.68212890625, 182.0264434814453125, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+2, 195256, 571, 394, 4159, 1, 1, 4549.17822265625, -4253.70751953125, 170.7494049072265625, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+3, 195256, 571, 394, 4159, 1, 1, 4585.376953125, -4225.4306640625, 178.0588226318359375, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+4, 195256, 571, 394, 4159, 1, 1, 4574.1748046875, -4252.90234375, 182.207916259765625, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+5, 195256, 571, 394, 4159, 1, 1, 4554.02978515625, -4232.88720703125, 170.6884307861328125, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+6, 195255, 571, 394, 4159, 1, 1, 4524.68408203125, -4252.0185546875, 177.024627685546875, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+7, 195266, 571, 394, 4159, 1, 1, 4551.2802734375, -4238.45703125, 173.6894989013671875, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+8, 195266, 571, 394, 4159, 1, 1, 4596.6259765625, -4237.6162109375, 181.892181396484375, 2.303830623626708984, 0, 0, 0.913544654846191406, 0.406738430261611938, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+9, 195259, 571, 394, 4159, 1, 1, 4608.650390625, -4233.8955078125, 181.3111572265625, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+10, 195256, 571, 394, 4159, 1, 1, 4544.07275390625, -4208.38623046875, 170.67333984375, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+11, 195256, 571, 394, 4159, 1, 1, 4604.29931640625, -4216.10986328125, 178.7165374755859375, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+12, 195259, 571, 394, 4159, 1, 1, 4583.4599609375, -4214.486328125, 178.7119903564453125, 5.096362113952636718, 0, 0, -0.55919265747070312, 0.829037725925445556, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+13, 195259, 571, 394, 4159, 1, 1, 4516.88134765625, -4237.6982421875, 172.096099853515625, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+14, 195259, 571, 394, 4159, 1, 1, 4525.02587890625, -4220.74462890625, 171.4342803955078125, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+15, 195256, 571, 394, 4159, 1, 1, 4531.97900390625, -4176.56103515625, 173.4835968017578125, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+16, 195256, 571, 394, 4159, 1, 1, 4550.19091796875, -4182.83642578125, 173.4988555908203125, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+17, 195259, 571, 394, 4159, 1, 1, 4545.50537109375, -4198.65283203125, 174.6675567626953125, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+18, 195255, 571, 394, 4159, 1, 1, 4532.3466796875, -4148.5302734375, 182.7989044189453125, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+19, 195259, 571, 394, 4159, 1, 1, 4530.67822265625, -4141.923828125, 175.909332275390625, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+20, 195259, 571, 394, 4159, 1, 1, 4524.59814453125, -4165.27978515625, 174.0964508056640625, 2.879789113998413085, 0, 0, 0.991444587707519531, 0.130528271198272705, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+21, 195259, 571, 394, 4159, 1, 1, 4456.92236328125, -4314.45556640625, 160.9202117919921875, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Westfall Brigade Encampment - Difficulty: 0) CreateObject1 +(@OGUID+22, 195256, 571, 394, 4211, 1, 1, 3883.56591796875, -4522.05712890625, 217.3779754638671875, 2.635444164276123046, 0, 0, 0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Solstice Village - Difficulty: 0) CreateObject1 +(@OGUID+23, 195255, 571, 394, 4211, 1, 1, 3881.885986328125, -4516.8974609375, 223.729248046875, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+24, 195259, 571, 394, 4211, 1, 1, 3876.389892578125, -4523.8134765625, 218.0924530029296875, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+25, 195256, 571, 394, 4211, 1, 1, 3866.0244140625, -4531.32470703125, 209.7258758544921875, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+26, 195264, 571, 394, 4211, 1, 1, 3877.072509765625, -4546.67822265625, 210.9720001220703125, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+27, 195260, 571, 394, 4211, 1, 1, 3873.443115234375, -4541.18505859375, 210.1432647705078125, 4.188792228698730468, 0, 0, -0.86602497100830078, 0.50000077486038208, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+28, 195264, 571, 394, 4211, 1, 1, 3874.092529296875, -4541.466796875, 210.1389007568359375, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+29, 195273, 571, 394, 4211, 1, 1, 3876.380126953125, -4541.03125, 209.7021484375, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+30, 195260, 571, 394, 4211, 1, 1, 3876.73779296875, -4547.53125, 210.96728515625, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+31, 195273, 571, 394, 4211, 1, 1, 3865.14501953125, -4556.1748046875, 211.0864410400390625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+32, 195256, 571, 394, 4211, 1, 1, 3871.14501953125, -4567.24462890625, 207.544708251953125, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+33, 195260, 571, 394, 4211, 1, 1, 3862.3212890625, -4549.05517578125, 211.58984375, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+34, 195256, 571, 394, 4211, 1, 1, 3844.86767578125, -4517.59375, 210.5048370361328125, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+35, 195256, 571, 394, 4211, 1, 1, 3848.001708984375, -4506.845703125, 207.78558349609375, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+36, 195256, 571, 394, 4211, 1, 1, 3854.529541015625, -4499.98291015625, 208.038604736328125, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+37, 195273, 571, 394, 4211, 1, 1, 3858.30078125, -4564.548828125, 210.174102783203125, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+38, 195273, 571, 394, 4211, 1, 1, 3854.253173828125, -4497.0986328125, 208.4462890625, 2.635444164276123046, 0, 0, 0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+39, 195273, 571, 394, 4211, 1, 1, 3845.2626953125, -4506.48291015625, 208.087860107421875, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+40, 195256, 571, 394, 4211, 1, 1, 3847.24560546875, -4556.36474609375, 210.1267852783203125, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+41, 195256, 571, 394, 4211, 1, 1, 3835.150146484375, -4527.1494140625, 210.6371307373046875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+42, 195264, 571, 394, 4211, 1, 1, 3838.455810546875, -4544.68408203125, 209.2908935546875, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Camp Oneqwah - Difficulty: 0) CreateObject1 +(@OGUID+43, 195256, 571, 394, 4229, 1, 1, 3818.5986328125, -5155.80908203125, 119.0596237182617187, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Prospector's Point - Difficulty: 0) CreateObject1 +(@OGUID+44, 195257, 571, 394, 4229, 1, 1, 3822.3515625, -5152.14404296875, 122.9666213989257812, 2.897245407104492187, 0, 0, 0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Prospector's Point - Difficulty: 0) CreateObject1 +(@OGUID+45, 195257, 571, 394, 4229, 1, 1, 3814.752685546875, -5158.24462890625, 123.3370208740234375, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Prospector's Point - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 571, 394, 4204, 1, 1, 3432.5625, -2829.0361328125, 201.703643798828125, 1.972219824790954589, 0, 0, 0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+47, 195256, 571, 394, 4204, 1, 1, 3413.370361328125, -2812.23095703125, 200.457550048828125, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+48, 195266, 571, 394, 4204, 1, 1, 3396.490234375, -2809.564697265625, 207.413726806640625, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+49, 195266, 571, 394, 4204, 1, 1, 3407.77783203125, -2803.8828125, 205.8443145751953125, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+50, 195253, 571, 394, 4204, 1, 1, 3415.611572265625, -2804.817626953125, 207.874542236328125, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+51, 195257, 571, 394, 4204, 1, 1, 3421.742431640625, -2795.542236328125, 203.7708282470703125, 2.286378860473632812, 0, 0, 0.909960746765136718, 0.414694398641586303, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+52, 195259, 571, 394, 4204, 1, 1, 3454.6015625, -2802.049072265625, 202.4846343994140625, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+53, 195253, 571, 394, 4204, 1, 1, 3426.070068359375, -2797.111328125, 207.8059844970703125, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+54, 195257, 571, 394, 4204, 1, 1, 3416.353759765625, -2799.534912109375, 203.6573638916015625, 2.042035102844238281, 0, 0, 0.852640151977539062, 0.522498607635498046, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+55, 195256, 571, 394, 4204, 1, 1, 3457.1279296875, -2785.356689453125, 201.2522735595703125, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Amberpine Lodge - Difficulty: 0) CreateObject1 +(@OGUID+56, 195253, 571, 394, 4206, 1, 1, 3248.33447265625, -2376.1298828125, 125.8162994384765625, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+57, 195255, 571, 394, 4206, 1, 1, 3300.6015625, -2378.8994140625, 117.8946762084960937, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+58, 195255, 571, 394, 4206, 1, 1, 3282.833251953125, -2368.123291015625, 117.8988037109375, 3.420850038528442382, 0, 0, -0.99026775360107421, 0.139175355434417724, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+59, 195253, 571, 394, 4206, 1, 1, 3272.99169921875, -2376.118408203125, 126.1800537109375, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+60, 195255, 571, 394, 4206, 1, 1, 3311.09326171875, -2361.425048828125, 117.9167327880859375, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+61, 195255, 571, 394, 4206, 1, 1, 3293.471435546875, -2350.23779296875, 117.6906509399414062, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+62, 195256, 571, 394, 4206, 1, 1, 3302.054443359375, -2350.771240234375, 108.88916015625, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+63, 195253, 571, 394, 4206, 1, 1, 3313.639892578125, -2339.25927734375, 135.3806304931640625, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+64, 195256, 571, 394, 4206, 1, 1, 3316.352783203125, -2328.825439453125, 111.091400146484375, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+65, 195253, 571, 394, 4206, 1, 1, 3220.80810546875, -2360.81640625, 129.0979461669921875, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+66, 195260, 571, 394, 4206, 1, 1, 3313.64697265625, -2337.28125, 112.4452133178710937, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+67, 195253, 571, 394, 4206, 1, 1, 3207.483154296875, -2339.074462890625, 129.03857421875, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+68, 195253, 571, 394, 4206, 1, 1, 3194.915283203125, -2304.802978515625, 131.448150634765625, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+69, 195256, 571, 394, 4206, 1, 1, 3225.8291015625, -2298.3994140625, 107.2934036254882812, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+70, 195260, 571, 394, 4206, 1, 1, 3201.634033203125, -2297.766845703125, 109.0517196655273437, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+71, 195263, 571, 394, 4206, 1, 1, 3194.85546875, -2292.01611328125, 108.0623779296875, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+72, 195256, 571, 394, 4206, 1, 1, 3184.45751953125, -2253.97314453125, 114.862762451171875, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+73, 195256, 571, 394, 4206, 1, 1, 3237.112060546875, -2271.501708984375, 113.9171981811523437, 1.605701684951782226, 0, 0, 0.719339370727539062, 0.694658815860748291, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+74, 195266, 571, 394, 4206, 1, 1, 3270.23046875, -2299.0166015625, 105.3504867553710937, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+75, 195253, 571, 394, 4206, 1, 1, 3191.101806640625, -2279.25439453125, 131.501220703125, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+76, 195255, 571, 394, 4206, 1, 1, 3193.161376953125, -2253.91259765625, 117.8537979125976562, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+77, 195263, 571, 394, 4206, 1, 1, 3264.849853515625, -2273.001220703125, 109.3768386840820312, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject +(@OGUID+78, 195256, 571, 394, 4206, 1, 1, 3267.522705078125, -2271.92529296875, 114.2197036743164062, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+79, 195260, 571, 394, 4206, 1, 1, 3240.246826171875, -2236.566162109375, 117.1561431884765625, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+80, 195259, 571, 394, 4206, 1, 1, 3263.252685546875, -2264.286865234375, 115.017852783203125, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+81, 195263, 571, 394, 4206, 1, 1, 3272.4453125, -2284.549560546875, 109.6323165893554687, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+82, 195259, 571, 394, 4206, 1, 1, 3259.02099609375, -2267.587158203125, 114.3780288696289062, 2.007128477096557617, 0, 0, 0.84339141845703125, 0.537299633026123046, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+83, 195256, 571, 394, 4206, 1, 1, 3248.891845703125, -2223.040283203125, 116.8296966552734375, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+84, 195266, 571, 394, 4206, 1, 1, 3253.43408203125, -2199.932373046875, 127.3123626708984375, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+85, 195266, 571, 394, 4206, 1, 1, 3272.255126953125, -2192.747802734375, 127.4287490844726562, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+86, 195256, 571, 394, 4206, 1, 1, 3268.58544921875, -2230.66064453125, 116.8296966552734375, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+87, 195256, 571, 394, 4206, 1, 1, 3286.429443359375, -2201.52294921875, 117.3725967407226562, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+88, 195266, 571, 394, 4206, 1, 1, 3280.344970703125, -2211.23193359375, 127.408203125, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+89, 195253, 571, 394, 4206, 1, 1, 3325.67529296875, -2187.1416015625, 134.12451171875, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+90, 195255, 571, 394, 4206, 1, 1, 3336.53369140625, -2207.365478515625, 120.0340728759765625, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+91, 195256, 571, 394, 4206, 1, 1, 3344.211669921875, -2203.409912109375, 119.4522705078125, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+92, 195256, 571, 394, 4206, 1, 1, 3308.39501953125, -2221.642333984375, 115.8079681396484375, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+93, 195256, 571, 394, 4206, 1, 1, 3352.523193359375, -2221.0791015625, 119.4522705078125, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+94, 195255, 571, 394, 4206, 1, 1, 3346.118408203125, -2225.081787109375, 119.375030517578125, 2.042035102844238281, 0, 0, 0.852640151977539062, 0.522498607635498046, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+95, 195253, 571, 394, 4206, 1, 1, 3351.66796875, -2245.885498046875, 137.426025390625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+96, 195256, 571, 394, 4206, 1, 1, 3294.6728515625, -2261.470458984375, 111.9283218383789062, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+97, 195253, 571, 394, 4206, 1, 1, 3342.093994140625, -2281.307373046875, 137.6797637939453125, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+98, 195256, 571, 394, 4206, 1, 1, 3323.304443359375, -2296.871826171875, 110.109283447265625, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+99, 195253, 571, 394, 4206, 1, 1, 3331.026611328125, -2305.594970703125, 137.53759765625, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+100, 195263, 571, 394, 4206, 1, 1, 3281.507568359375, -2289.552978515625, 109.7591781616210937, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Conquest Hold - Difficulty: 0) CreateObject1 +(@OGUID+101, 195256, 571, 394, 4242, 1, 1, 2538.16455078125, -1999.589599609375, 8.439572334289550781, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+102, 195256, 571, 394, 4242, 1, 1, 2549.787353515625, -1992.144775390625, 8.439572334289550781, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+103, 195256, 571, 394, 4242, 1, 1, 2493.72705078125, -1921.8819580078125, 10.72952842712402343, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+104, 195256, 571, 394, 4242, 1, 1, 2546.96533203125, -1915.29345703125, 2.871465921401977539, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+105, 195256, 571, 394, 4242, 1, 1, 2547.7998046875, -1930.666259765625, 3.251395940780639648, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+106, 195256, 571, 394, 4242, 1, 1, 2503.9619140625, -1936.4486083984375, 10.39561176300048828, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+107, 195253, 571, 394, 4242, 1, 1, 2495.748046875, -1930.49267578125, 18.890869140625, 0.593410074710845947, 0, 0, 0.292370796203613281, 0.95630502700805664, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+108, 195256, 571, 394, 4242, 1, 1, 2485.73681640625, -1895.5426025390625, 10.02251052856445312, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+109, 195256, 571, 394, 4242, 1, 1, 2485.413330078125, -1882.3096923828125, 9.955285072326660156, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+110, 195253, 571, 394, 4242, 1, 1, 2482.12109375, -1838.0968017578125, 19.10610771179199218, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+111, 195253, 571, 394, 4242, 1, 1, 2493.71923828125, -1840.646240234375, 18.18875885009765625, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+112, 195256, 571, 394, 4242, 1, 1, 2546.4873046875, -1837.44384765625, 10.57294368743896484, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+113, 195253, 571, 394, 4242, 1, 1, 2510.754150390625, -1823.16259765625, 18.16746330261230468, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+114, 195256, 571, 394, 4242, 1, 1, 2438.87548828125, -1853.4410400390625, 1.204813957214355468, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+115, 195256, 571, 394, 4242, 1, 1, 2444.650634765625, -1838.691162109375, 1.022343039512634277, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+116, 195256, 571, 394, 4242, 1, 1, 2497.920166015625, -1838.302978515625, 10.55218505859375, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+117, 195253, 571, 394, 4242, 1, 1, 2502.159423828125, -1831.97314453125, 18.18279266357421875, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+118, 195256, 571, 394, 4242, 1, 1, 2491.8291015625, -1845.1595458984375, 10.70640087127685546, 5.654868602752685546, 0, 0, -0.30901622772216796, 0.95105677843093872, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+119, 195256, 571, 394, 4242, 1, 1, 2559.23046875, -1828.40283203125, 10.51216411590576171, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+120, 195253, 571, 394, 4242, 1, 1, 2508.89111328125, -1811.1556396484375, 18.57204437255859375, 0.802850961685180664, 0, 0, 0.390730857849121093, 0.920504987239837646, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+121, 195256, 571, 394, 4242, 1, 1, 2600.052734375, -1802.4447021484375, 10.64246273040771484, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 +(@OGUID+122, 195256, 571, 394, 4242, 1, 1, 2595.77978515625, -1789.1341552734375, 10.64246177673339843, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, 0); -- Standing, Exterior, Medium - Brewfest (Area: Venture Bay - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+122 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+122; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_08_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_08_world.sql new file mode 100644 index 00000000000..6e678b487b5 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_12_08_world.sql @@ -0,0 +1,206 @@ +-- +SET @OGUID := 93335; -- Need 197 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+196; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195266, 571, 495, 4062, 1, 1, 2127.25, -2962.01904296875, 155.307586669921875, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+1, 195256, 571, 495, 4062, 1, 1, 2117.1181640625, -2965.381591796875, 148.6168670654296875, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+2, 195266, 571, 495, 4062, 1, 1, 2122.88720703125, -2959.94287109375, 155.2806854248046875, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+3, 195266, 571, 495, 4062, 1, 1, 2124.927490234375, -2955.5634765625, 154.968414306640625, 1.85004889965057373, 0, 0, 0.798635482788085937, 0.60181504487991333, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+4, 195266, 571, 495, 4062, 1, 1, 2129.3310546875, -2957.728759765625, 155.2841796875, 0.366517573595046997, 0, 0, 0.182234764099121093, 0.98325502872467041, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+5, 195266, 571, 495, 4062, 1, 1, 2132.39404296875, -2996.244873046875, 155.843231201171875, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+6, 195256, 571, 495, 4062, 1, 1, 2142.095703125, -2984.89208984375, 148.91650390625, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+7, 195256, 571, 495, 4062, 1, 1, 2109.81591796875, -2988.44970703125, 148.3804473876953125, 2.181660413742065429, 0, 0, 0.887010574340820312, 0.461749136447906494, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+8, 195266, 571, 495, 4062, 1, 1, 2125.528564453125, -2997.119873046875, 155.7462615966796875, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+9, 195256, 571, 495, 4062, 1, 1, 2140.401123046875, -2968.3994140625, 148.33563232421875, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+10, 195266, 571, 495, 4062, 1, 1, 2128.5087890625, -2993.26904296875, 155.7663116455078125, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+11, 195266, 571, 495, 4062, 1, 1, 2129.307373046875, -3000.026123046875, 155.8247222900390625, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Apothecary Camp - Difficulty: 0) CreateObject1 +(@OGUID+12, 195256, 571, 495, 4018, 1, 1, 2642.450439453125, -4384.39404296875, 283.269317626953125, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+13, 195256, 571, 495, 4018, 1, 1, 2654.309814453125, -4365.0380859375, 277.507476806640625, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+14, 195256, 571, 495, 4018, 1, 1, 2620.653564453125, -4361.46142578125, 276.49017333984375, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+15, 195256, 571, 495, 4018, 1, 1, 2657.28466796875, -4403.33837890625, 283.921661376953125, 1.500982880592346191, 0, 0, 0.681998252868652343, 0.731353819370269775, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+16, 195256, 571, 495, 4018, 1, 1, 2675.205810546875, -4331.74853515625, 289.77642822265625, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+17, 195266, 571, 495, 4018, 1, 1, 2673.549072265625, -4383.2900390625, 290.49188232421875, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+18, 195259, 571, 495, 4018, 1, 1, 2653.467041015625, -4398.361328125, 284.529449462890625, 0.925023794174194335, 0, 0, 0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+19, 195259, 571, 495, 4018, 1, 1, 2645.27880859375, -4389.67822265625, 283.946197509765625, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+20, 195260, 571, 495, 4018, 1, 1, 2676.61669921875, -4381.39453125, 285.759613037109375, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+21, 195256, 571, 495, 4018, 1, 1, 2681.397705078125, -4378.91162109375, 282.961212158203125, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+22, 195257, 571, 495, 4018, 1, 1, 2677.323486328125, -4386.642578125, 290.094268798828125, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+23, 195257, 571, 495, 4018, 1, 1, 2681.623291015625, -4397.51220703125, 285.5596923828125, 0.959929943084716796, 0, 0, 0.461748123168945312, 0.887011110782623291, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+24, 195260, 571, 495, 4018, 1, 1, 2688.802001953125, -4390.22998046875, 285.700103759765625, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+25, 195257, 571, 495, 4018, 1, 1, 2678.708251953125, -4395.55712890625, 285.5654296875, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+26, 195256, 571, 495, 4018, 1, 1, 2681.611083984375, -4385.32421875, 284.433746337890625, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+27, 195266, 571, 495, 4003, 1, 1, 2501.50537109375, -5059.52490234375, 285.9002685546875, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+28, 195256, 571, 495, 4003, 1, 1, 2462.8271484375, -5023.974609375, 283.71392822265625, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+29, 195256, 571, 495, 4003, 1, 1, 2464.11669921875, -5036.9130859375, 283.756134033203125, 0.733038187026977539, 0, 0, 0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+30, 195259, 571, 495, 4003, 1, 1, 2499.96435546875, -5059.01953125, 286.9637451171875, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+31, 195266, 571, 495, 4003, 1, 1, 2485.302490234375, -5048.4013671875, 296.412353515625, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+32, 195266, 571, 495, 4003, 1, 1, 2496.864013671875, -5066.93310546875, 302.693145751953125, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+33, 195256, 571, 495, 4003, 1, 1, 2476.259765625, -5072.8115234375, 283.03717041015625, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+34, 195266, 571, 495, 4003, 1, 1, 2469.69970703125, -5056.40966796875, 296.069091796875, 3.019413232803344726, 0, 0, 0.998134613037109375, 0.061051756143569946, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+35, 195259, 571, 495, 4003, 1, 1, 2474.880859375, -5069.70947265625, 286.004119873046875, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+36, 195266, 571, 495, 4003, 1, 1, 2477.305908203125, -5073.56103515625, 291.637451171875, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+37, 195259, 571, 495, 4003, 1, 1, 2491.536376953125, -5071.005859375, 298.8145751953125, 1.466075778007507324, 0, 0, 0.669130325317382812, 0.74314504861831665, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+38, 195259, 571, 495, 4003, 1, 1, 2472.168212890625, -5058.8740234375, 292.487213134765625, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+39, 195266, 571, 495, 4003, 1, 1, 2483.536376953125, -5065.3662109375, 301.697540283203125, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+40, 195259, 571, 495, 4003, 1, 1, 2472.028564453125, -5066.28125, 286.071380615234375, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+41, 195266, 571, 495, 4003, 1, 1, 2475.982421875, -5063.1513671875, 289.160797119140625, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Frostblade Peak - Difficulty: 0) CreateObject1 +(@OGUID+42, 195256, 571, 495, 4003, 1, 1, 2422.8447265625, -5074.8505859375, 272.242706298828125, 0, 0, 0, 0, 1, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fort Wildervar - Difficulty: 0) CreateObject1 +(@OGUID+43, 195256, 571, 495, 4003, 1, 1, 2438.944580078125, -5120.9755859375, 275.9085693359375, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fort Wildervar - Difficulty: 0) CreateObject1 +(@OGUID+44, 195256, 571, 495, 4003, 1, 1, 2417.9619140625, -5122.1416015625, 276.593963623046875, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fort Wildervar - Difficulty: 0) CreateObject1 +(@OGUID+45, 195256, 571, 495, 4003, 1, 1, 2429.50341796875, -5159.25, 277.0015869140625, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fort Wildervar - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 571, 495, 4003, 1, 1, 2429.84716796875, -5168.77587890625, 277.110870361328125, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Fort Wildervar - Difficulty: 0) CreateObject1 +(@OGUID+47, 195266, 571, 495, 4000, 1, 1, 1955.9967041015625, -6111.82958984375, 41.53107452392578125, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+48, 195266, 571, 495, 4000, 1, 1, 1971.8021240234375, -6102.19775390625, 73.710601806640625, 0.925023794174194335, 0, 0, 0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+49, 195266, 571, 495, 4000, 1, 1, 1960.259521484375, -6117.28662109375, 41.52031326293945312, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+50, 195266, 571, 495, 4000, 1, 1, 1966.4713134765625, -6119.72265625, 41.52581024169921875, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+51, 195266, 571, 495, 4000, 1, 1, 1949.329833984375, -6147.3056640625, 31.00298500061035156, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+52, 195256, 571, 495, 4000, 1, 1, 1919.9151611328125, -6182.5986328125, 24.47692298889160156, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+53, 195257, 571, 495, 4532, 1, 1, 1891.3333740234375, -6175.7236328125, 26.62350845336914062, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+54, 195256, 571, 495, 4000, 1, 1, 1927.3294677734375, -6186.8359375, 24.11248397827148437, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+55, 195256, 571, 495, 4000, 1, 1, 1882.5814208984375, -6170.53076171875, 23.82955741882324218, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+56, 195273, 571, 495, 4532, 1, 1, 1896.3685302734375, -6177.45849609375, 28.25125503540039062, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+57, 195273, 571, 495, 4532, 1, 1, 1900.7137451171875, -6182.30615234375, 31.16156959533691406, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+58, 195256, 571, 495, 4000, 1, 1, 1899.3099365234375, -6178.33203125, 24.02913856506347656, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+59, 195273, 571, 495, 4532, 1, 1, 1889.537353515625, -6174.26025390625, 27.78375434875488281, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+60, 195257, 571, 495, 4532, 1, 1, 1894.1710205078125, -6177.046875, 26.61498832702636718, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+61, 195266, 571, 495, 4000, 1, 1, 1933.8350830078125, -6188.439453125, 30.40494155883789062, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+62, 195273, 571, 495, 4532, 1, 1, 1883.0047607421875, -6173.48095703125, 30.73777008056640625, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+63, 195273, 571, 495, 4532, 1, 1, 1892.77783203125, -6183.73583984375, 25.80629158020019531, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+64, 195273, 571, 495, 4532, 1, 1, 1886.857421875, -6181.00341796875, 26.00834846496582031, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+65, 195256, 571, 495, 4000, 1, 1, 2021.9947509765625, -6214.67822265625, 7.750906944274902343, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Vengeance Landing - Difficulty: 0) CreateObject1 +(@OGUID+66, 195257, 571, 495, 4532, 1, 1, 1872.6788330078125, -6195.767578125, 26.33468437194824218, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+67, 195257, 571, 495, 4532, 1, 1, 1890.347900390625, -6204.115234375, 26.52462577819824218, 2.617989301681518554, 0, 0, 0.965925216674804687, 0.258821308612823486, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+68, 195266, 571, 495, 4532, 1, 1, 1881.4010009765625, -6201.0380859375, 33.84504318237304687, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+69, 195273, 571, 495, 4532, 1, 1, 1869.909912109375, -6225.537109375, 14.98772907257080078, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+70, 195266, 571, 495, 4532, 1, 1, 1872.57861328125, -6219.77392578125, 42.40207672119140625, 1.099556446075439453, 0, 0, 0.522498130798339843, 0.852640450000762939, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+71, 195259, 571, 495, 0, 1, 1, 1420.2181396484375, -3720.072998046875, 139.7719268798828125, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+72, 195256, 571, 495, 3998, 1, 1, 1351.6649169921875, -3457.366455078125, 175.92462158203125, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+73, 195256, 571, 495, 3998, 1, 1, 1400.15625, -3458.59033203125, 174.57183837890625, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+74, 195255, 571, 495, 3998, 1, 1, 1390.8802490234375, -3366.663330078125, 194.8545074462890625, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+75, 195255, 571, 495, 3998, 1, 1, 1350.9930419921875, -3356.947998046875, 196.8577423095703125, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+76, 195256, 571, 495, 3998, 1, 1, 1370.0364990234375, -3334.958251953125, 173.6849517822265625, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+77, 195256, 571, 495, 3998, 1, 1, 1394.3992919921875, -3307.069580078125, 166.7923126220703125, 1.902408957481384277, 0, 0, 0.814115524291992187, 0.580702960491180419, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+78, 195256, 571, 495, 3998, 1, 1, 1349.4683837890625, -3297.907470703125, 174.712890625, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+79, 195256, 571, 495, 3998, 1, 1, 1401.3507080078125, -3262.329345703125, 163.0069122314453125, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+80, 195256, 571, 495, 3998, 1, 1, 1341.441650390625, -3276.220947265625, 174.6176910400390625, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+81, 195266, 571, 495, 3998, 1, 1, 1425.03125, -3316.349365234375, 173.511322021484375, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+82, 195256, 571, 495, 3998, 1, 1, 1352.595947265625, -3284.4013671875, 174.7100830078125, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+83, 195257, 571, 495, 3998, 1, 1, 1438.02783203125, -3267.56591796875, 169.51300048828125, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+84, 195266, 571, 495, 3998, 1, 1, 1426.4947509765625, -3265.442626953125, 172.1591796875, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+85, 195264, 571, 495, 3998, 1, 1, 1422.9478759765625, -3265.15283203125, 165.6198883056640625, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+86, 195257, 571, 495, 3998, 1, 1, 1437.1353759765625, -3266.9150390625, 169.50579833984375, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+87, 195257, 571, 495, 3998, 1, 1, 1427.001708984375, -3268.350830078125, 169.1820831298828125, 5.70722818374633789, 0, 0, -0.28401470184326171, 0.958819925785064697, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+88, 195257, 571, 495, 3998, 1, 1, 1429.5816650390625, -3265.2744140625, 169.2191925048828125, 5.462882041931152343, 0, 0, -0.39874839782714843, 0.917060375213623046, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+89, 195266, 571, 495, 3998, 1, 1, 1428.7725830078125, -3274.498291015625, 181.041748046875, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+90, 195257, 571, 495, 3998, 1, 1, 1431.482666015625, -3274.532958984375, 169.1914825439453125, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+91, 195273, 571, 495, 3998, 1, 1, 1421.9583740234375, -3261.317626953125, 175.985443115234375, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+92, 195256, 571, 495, 3998, 1, 1, 1435.888916015625, -3265.0625, 178.281341552734375, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+93, 195264, 571, 495, 3998, 1, 1, 1425.6666259765625, -3261.8369140625, 165.59271240234375, 1.710421562194824218, 0, 0, 0.754709243774414062, 0.656059443950653076, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+94, 195260, 571, 495, 3998, 1, 1, 1457.2899169921875, -3270.154541015625, 173.5816192626953125, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+95, 195266, 571, 495, 3998, 1, 1, 1465.5989990234375, -3290.569580078125, 178.728485107421875, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+96, 195257, 571, 495, 3998, 1, 1, 1454.4930419921875, -3273.579833984375, 168.527313232421875, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+97, 195256, 571, 495, 3998, 1, 1, 1428.2559814453125, -3256.800048828125, 165.614959716796875, 2.199114561080932617, 0, 0, 0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+98, 195260, 571, 495, 3998, 1, 1, 1447.376708984375, -3267.913330078125, 179.70086669921875, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+99, 195260, 571, 495, 3998, 1, 1, 1445.7447509765625, -3269.810791015625, 179.7055511474609375, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+100, 195260, 571, 495, 3998, 1, 1, 1445.814208984375, -3264.553955078125, 168.4409942626953125, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+101, 195266, 571, 495, 3998, 1, 1, 1474.51806640625, -3279.563232421875, 178.9401397705078125, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+102, 195260, 571, 495, 3998, 1, 1, 1456.939208984375, -3279.14404296875, 173.58538818359375, 0.925023794174194335, 0, 0, 0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+103, 195260, 571, 495, 3998, 1, 1, 1454.4375, -3273.76220703125, 173.581878662109375, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+104, 195260, 571, 495, 3998, 1, 1, 1458.5521240234375, -3277.08154296875, 173.58538818359375, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+105, 195260, 571, 495, 3998, 1, 1, 1447.826416015625, -3262.189208984375, 168.4409942626953125, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+106, 195266, 571, 495, 3998, 1, 1, 1431.548095703125, -3252.89404296875, 183.7872772216796875, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+107, 195264, 571, 495, 3998, 1, 1, 1432.4129638671875, -3253.822021484375, 166.5709686279296875, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+108, 195256, 571, 495, 3998, 1, 1, 1408.13037109375, -3251.247314453125, 162.0142974853515625, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+109, 195256, 571, 495, 3998, 1, 1, 1355.770751953125, -3193.905029296875, 162.8225250244140625, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+110, 195257, 571, 495, 3998, 1, 1, 1445.7396240234375, -3257.578125, 169.240325927734375, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+111, 195266, 571, 495, 3998, 1, 1, 1449.8897705078125, -3254.639404296875, 183.129852294921875, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+112, 195266, 571, 495, 3998, 1, 1, 1461.296630859375, -3264.23828125, 183.4601287841796875, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+113, 195256, 571, 495, 3998, 1, 1, 1371.2991943359375, -3185.6533203125, 162.822479248046875, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+114, 195256, 571, 495, 3998, 1, 1, 1458.7532958984375, -3200.10009765625, 165.5916900634765625, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+115, 195256, 571, 495, 3998, 1, 1, 1431.1324462890625, -3152.292236328125, 164.81585693359375, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+116, 195256, 571, 495, 3998, 1, 1, 1429.0374755859375, -3131.0703125, 167.7346038818359375, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+117, 195256, 571, 495, 3998, 1, 1, 1416.0601806640625, -3120.2861328125, 167.5702056884765625, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+118, 195256, 571, 495, 3998, 1, 1, 1389.0931396484375, -3096.109375, 167.4994659423828125, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Westguard Keep - Difficulty: 0) CreateObject1 +(@OGUID+119, 195256, 571, 495, 3988, 1, 1, 784.982666015625, -2956.30029296875, 8.627841949462890625, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+120, 195256, 571, 495, 3988, 1, 1, 807.62677001953125, -2945.673583984375, 6.90543985366821289, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+121, 195256, 571, 495, 3988, 1, 1, 811.69793701171875, -2925.720458984375, 7.491168022155761718, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+122, 195256, 571, 495, 3988, 1, 1, 786.56964111328125, -2895.315673828125, 7.33187723159790039, 2.652894020080566406, 0, 0, 0.970294952392578125, 0.241925001144409179, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+123, 195256, 571, 495, 3988, 1, 1, 765.16839599609375, -2962.79345703125, 9.955371856689453125, 6.021387100219726562, 0, 0, -0.13052558898925781, 0.991444945335388183, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+124, 195259, 571, 495, 3988, 1, 1, 789.05792236328125, -2887.321533203125, 6.061471939086914062, 4.276057243347167968, 0, 0, -0.84339141845703125, 0.537299633026123046, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+125, 195256, 571, 495, 3988, 1, 1, 728.25341796875, -2936.780029296875, 8.085320472717285156, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+126, 195259, 571, 495, 3988, 1, 1, 737.04168701171875, -2925.069580078125, 7.038447856903076171, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+127, 195256, 571, 495, 3988, 1, 1, 731.57293701171875, -2945.84375, 9.6584320068359375, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+128, 195256, 571, 495, 3988, 1, 1, 738.81585693359375, -2917.705810546875, 7.835750102996826171, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+129, 195256, 571, 495, 3988, 1, 1, 785.8663330078125, -2882.145751953125, 4.52708292007446289, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+130, 195256, 571, 495, 3988, 1, 1, 726.3077392578125, -2921.696044921875, 7.548036098480224609, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+131, 195259, 571, 495, 3988, 1, 1, 737.80206298828125, -2929.8369140625, 6.96212005615234375, 0.593410074710845947, 0, 0, 0.292370796203613281, 0.95630502700805664, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+132, 195256, 571, 495, 3988, 1, 1, 785.396484375, -2856.019287109375, 4.484004974365234375, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+133, 195256, 571, 495, 3988, 1, 1, 775.663818359375, -2854.297607421875, 4.683801174163818359, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+134, 195256, 571, 495, 3988, 1, 1, 708.98089599609375, -2939.20654296875, -3.25597691535949707, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+135, 195264, 571, 495, 3988, 1, 1, 701.36212158203125, -2933.382568359375, -3.06848502159118652, 0.523597896099090576, 0, 0, 0.258818626403808593, 0.965925931930541992, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+136, 195266, 571, 495, 3988, 1, 1, 713.49896240234375, -2931.3994140625, 2.87617802619934082, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+137, 195256, 571, 495, 3988, 1, 1, 706.6024169921875, -2924.741455078125, -3.16570091247558593, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+138, 195256, 571, 495, 3988, 1, 1, 733.01739501953125, -2896.645751953125, 7.161568164825439453, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+139, 195264, 571, 495, 3988, 1, 1, 701.6728515625, -2935.085205078125, -3.06848907470703125, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Kamagua - Difficulty: 0) CreateObject1 +(@OGUID+140, 195256, 571, 495, 3991, 1, 1, 403.79498291015625, -4652.39501953125, 243.967742919921875, 2.181660413742065429, 0, 0, 0.887010574340820312, 0.461749136447906494, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+141, 195256, 571, 495, 3991, 1, 1, 412.763092041015625, -4658.490234375, 246.6353302001953125, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+142, 195266, 571, 495, 3991, 1, 1, 445.420135498046875, -4640.56103515625, 253.317840576171875, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+143, 195256, 571, 495, 3991, 1, 1, 493.69927978515625, -4605.00634765625, 243.6478118896484375, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+144, 195256, 571, 495, 3991, 1, 1, 446.30670166015625, -4559.88427734375, 245.503204345703125, 4.363324165344238281, 0, 0, -0.81915187835693359, 0.573576688766479492, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+145, 195273, 571, 495, 3991, 1, 1, 447.466217041015625, -4556.9453125, 252.1781463623046875, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+146, 195273, 571, 495, 3991, 1, 1, 442.438262939453125, -4552.8017578125, 249.541961669921875, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+147, 195257, 571, 495, 3991, 1, 1, 440.052093505859375, -4547.9130859375, 248.6341094970703125, 3.839725255966186523, 0, 0, -0.93969249725341796, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+148, 195257, 571, 495, 3991, 1, 1, 458.644866943359375, -4542.12353515625, 247.725830078125, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+149, 195273, 571, 495, 3991, 1, 1, 438.434295654296875, -4546.44677734375, 249.345184326171875, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+150, 195257, 571, 495, 3991, 1, 1, 441.81829833984375, -4550.703125, 248.5897979736328125, 3.577930212020874023, 0, 0, -0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+151, 195266, 571, 495, 3991, 1, 1, 465.8819580078125, -4545.6630859375, 251.8805694580078125, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+152, 195266, 571, 495, 3991, 1, 1, 463.704864501953125, -4534.5625, 254.9478607177734375, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+153, 195257, 571, 495, 3991, 1, 1, 455.163299560546875, -4536.6796875, 247.5673370361328125, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+154, 195273, 571, 495, 3991, 1, 1, 437.384185791015625, -4539.97119140625, 252.37353515625, 3.054326534271240234, 0, 0, 0.999048233032226562, 0.043619260191917419, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+155, 195266, 571, 495, 3991, 1, 1, 454.9619140625, -4528.65185546875, 251.8440704345703125, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+156, 195256, 571, 495, 3991, 1, 1, 434.159942626953125, -4539.46826171875, 245.803192138671875, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+157, 195256, 571, 495, 3991, 1, 1, 404.2421875, -4538.7001953125, 245.8211212158203125, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+158, 195256, 571, 495, 3991, 1, 1, 400.006561279296875, -4535.0859375, 246.1531829833984375, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+159, 195273, 571, 495, 3991, 1, 1, 481.2320556640625, -4523.52294921875, 260.99676513671875, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+160, 195266, 571, 495, 3991, 1, 1, 486.494781494140625, -4520.140625, 239.765869140625, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: New Agamand - Difficulty: 0) CreateObject1 +(@OGUID+161, 195260, 571, 495, 3997, 1, 1, 492.902740478515625, -5928.03076171875, 309.63958740234375, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+162, 195264, 571, 495, 3997, 1, 1, 491.8101806640625, -5927.2802734375, 309.67877197265625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+163, 195256, 571, 495, 3997, 1, 1, 493.364593505859375, -5904.35595703125, 308.904937744140625, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+164, 195256, 571, 495, 3997, 1, 1, 469.700531005859375, -5927.3427734375, 308.720245361328125, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+165, 195256, 571, 495, 3997, 1, 1, 499.0128173828125, -5932.87744140625, 308.70391845703125, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+166, 195264, 571, 495, 3997, 1, 1, 491.35296630859375, -5933.67138671875, 310.585845947265625, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+167, 195260, 571, 495, 3997, 1, 1, 490.626617431640625, -5934.06298828125, 309.60113525390625, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+168, 195256, 571, 495, 3980, 1, 1, 604.16217041015625, -5108.1396484375, 4.842274188995361328, 1.623155713081359863, 0, 0, 0.725374221801757812, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+169, 195256, 571, 495, 3980, 1, 1, 575.376953125, -5101.06884765625, 5.191133975982666015, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+170, 195266, 571, 495, 3980, 1, 1, 548.75616455078125, -5021.97314453125, 17.4747467041015625, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+171, 195256, 571, 495, 3980, 1, 1, 563.8280029296875, -5017.78271484375, 11.59004878997802734, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+172, 195256, 571, 495, 3980, 1, 1, 569.19403076171875, -5003.27001953125, 11.09979629516601562, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+173, 195266, 571, 495, 3980, 1, 1, 597.41204833984375, -5011.13818359375, 9.712256431579589843, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+174, 195256, 571, 495, 3980, 1, 1, 641.049072265625, -5019.35498046875, 4.459393024444580078, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Daggercap Bay - Difficulty: 0) CreateObject1 +(@OGUID+175, 195256, 571, 495, 3981, 1, 1, 540.11920166015625, -4999.92041015625, 10.53384208679199218, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+176, 195266, 571, 495, 3981, 1, 1, 639.2745361328125, -5012.3408203125, 11.1266031265258789, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+177, 195256, 571, 495, 3981, 1, 1, 577.20660400390625, -4954.4150390625, 18.21570014953613281, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+178, 195273, 571, 495, 3981, 1, 1, 592.29864501953125, -4952.79345703125, 23.01476669311523437, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+179, 195266, 571, 495, 3981, 1, 1, 587.5086669921875, -4945.892578125, 32.499114990234375, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+180, 195273, 571, 495, 3981, 1, 1, 585.97393798828125, -4954.36474609375, 22.95369911193847656, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+181, 195257, 571, 495, 3981, 1, 1, 587.33953857421875, -4934.3564453125, 20.82388496398925781, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+182, 195273, 571, 495, 3981, 1, 1, 572.94793701171875, -4943.798828125, 27.16759872436523437, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+183, 195260, 571, 495, 3981, 1, 1, 593.67724609375, -4929.41357421875, 31.07939338684082031, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+184, 195260, 571, 495, 3981, 1, 1, 582.01080322265625, -4933.2568359375, 31.07901382446289062, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+185, 195257, 571, 495, 3981, 1, 1, 581.4718017578125, -4943.68310546875, 20.6307525634765625, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+186, 195256, 571, 495, 3981, 1, 1, 569.71356201171875, -4931.642578125, 17.79272079467773437, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+187, 195257, 571, 495, 3981, 1, 1, 586.26324462890625, -4934.662109375, 20.74441337585449218, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+188, 195260, 571, 495, 3981, 1, 1, 589.42169189453125, -4926.30126953125, 19.81484222412109375, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+189, 195266, 571, 495, 3981, 1, 1, 578.79864501953125, -4942.296875, 23.31464767456054687, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+190, 195256, 571, 495, 3981, 1, 1, 584.046142578125, -4934.74365234375, 29.65518951416015625, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+191, 195257, 571, 495, 3981, 1, 1, 580.5125732421875, -4939.84228515625, 20.76777458190917968, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+192, 195260, 571, 495, 3981, 1, 1, 600.79669189453125, -4920.2919921875, 24.95571327209472656, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+193, 195260, 571, 495, 3981, 1, 1, 588.70184326171875, -4923.255859375, 19.81484222412109375, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+194, 195260, 571, 495, 3981, 1, 1, 606.9359130859375, -4923.4345703125, 24.95921707153320312, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+195, 195260, 571, 495, 3981, 1, 1, 601.9345703125, -4924.68603515625, 24.95571327209472656, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+196, 195260, 571, 495, 3981, 1, 1, 607.8848876953125, -4925.90478515625, 24.95921707153320312, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, 0); -- Standing, Interior, Small - Brewfest (Area: Valgarde - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+196 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+196; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_13_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_13_00_world.sql new file mode 100644 index 00000000000..efcba6395a1 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_13_00_world.sql @@ -0,0 +1,135 @@ +-- +SET @OGUID := 93532; -- Need 126 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+125; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195256, 530, 3520, 3744, 1, 1, -3052.810546875, 2481.651123046875, 66.6568756103515625, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+1, 195253, 530, 3520, 3744, 1, 1, -3097.6240234375, 2522.84716796875, 75.95374298095703125, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+2, 195253, 530, 3520, 3744, 1, 1, -3081.949951171875, 2509.12744140625, 75.9600982666015625, 5.585053920745849609, 0, 0, -0.34202003479003906, 0.939692676067352294, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+3, 195253, 530, 3520, 3744, 1, 1, -3092.005126953125, 2502.067626953125, 76.35167694091796875, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+4, 195253, 530, 3520, 3744, 1, 1, -3099.529296875, 2512.387451171875, 75.96468353271484375, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+5, 195253, 530, 3520, 3744, 1, 1, -3080.0166015625, 2519.665771484375, 75.95195770263671875, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+6, 195253, 530, 3520, 3744, 1, 1, -3088.04736328125, 2526.279541015625, 75.95489501953125, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+7, 195259, 530, 3520, 3744, 1, 1, -3012.2177734375, 2548.628173828125, 79.439208984375, 1.500982880592346191, 0, 0, 0.681998252868652343, 0.731353819370269775, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+8, 195256, 530, 3520, 3744, 1, 1, -3107.00341796875, 2545.11376953125, 62.05596923828125, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+9, 195256, 530, 3520, 3744, 1, 1, -3006.597900390625, 2549.3125, 78.11643218994140625, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+10, 195256, 530, 3520, 3744, 1, 1, -3065.579345703125, 2555.546875, 65.7581634521484375, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+11, 195273, 530, 3520, 3744, 1, 1, -3124.81884765625, 2572.86279296875, 66.77591705322265625, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+12, 195256, 530, 3520, 3744, 1, 1, -3104.676513671875, 2582.694580078125, 61.97699737548828125, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+13, 195259, 530, 3520, 3744, 1, 1, -3026.7685546875, 2565.997802734375, 80.07525634765625, 0.139624491333961486, 0, 0, 0.06975555419921875, 0.997564136981964111, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+14, 195256, 530, 3520, 3744, 1, 1, -2979.335205078125, 2554.049072265625, 76.5433502197265625, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+15, 195253, 530, 3520, 3744, 1, 1, -2978.6533203125, 2545.870361328125, 97.51944732666015625, 3.78736734390258789, 0, 0, -0.94832324981689453, 0.317305892705917358, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+16, 195256, 530, 3520, 3744, 1, 1, -2986.574462890625, 2565.178466796875, 76.5433502197265625, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+17, 195273, 530, 3520, 3744, 1, 1, -2982.045654296875, 2563.971923828125, 79.34058380126953125, 2.897245407104492187, 0, 0, 0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+18, 195273, 530, 3520, 3744, 1, 1, -3123.6474609375, 2558.356689453125, 67.05743408203125, 3.106652259826660156, 0, 0, 0.999847412109375, 0.017469281330704689, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+19, 195256, 530, 3520, 3744, 1, 1, -3081.04248046875, 2598.579345703125, 61.7496337890625, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+20, 195253, 530, 3520, 3744, 1, 1, -2980.73779296875, 2565.907958984375, 97.976104736328125, 2.70525527000427246, 0, 0, 0.97629547119140625, 0.216442063450813293, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+21, 195266, 530, 3520, 3744, 1, 1, -3022.693603515625, 2624.56494140625, 85.78185272216796875, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+22, 195259, 530, 3520, 3744, 1, 1, -2979.819091796875, 2565.840087890625, 79.8294525146484375, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+23, 195273, 530, 3520, 3744, 1, 1, -3020.8701171875, 2621.105712890625, 81.12374114990234375, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+24, 195273, 530, 3520, 3744, 1, 1, -3026.05517578125, 2626.85986328125, 81.1064300537109375, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+25, 195266, 530, 3520, 3744, 1, 1, -2972.56494140625, 2562.6748046875, 83.66947174072265625, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+26, 195255, 530, 3520, 3744, 1, 1, -2969.581787109375, 2560.9619140625, 107.1340179443359375, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+27, 195256, 530, 3520, 3744, 1, 1, -3031.268798828125, 2631.005859375, 76.5433502197265625, 4.48549652099609375, 0, 0, -0.7826080322265625, 0.622514784336090087, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+28, 195253, 530, 3520, 3744, 1, 1, -2963.10595703125, 2578.467041015625, 97.77729034423828125, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+29, 195256, 530, 3520, 3744, 1, 1, -2970.73095703125, 2573.00341796875, 76.5433502197265625, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+30, 195257, 530, 3520, 3744, 1, 1, -2963.262451171875, 2557.669189453125, 96.9534759521484375, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+31, 195259, 530, 3520, 3744, 1, 1, -2963.2314453125, 2558.7470703125, 80.31774139404296875, 2.617989301681518554, 0, 0, 0.965925216674804687, 0.258821308612823486, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+32, 195257, 530, 3520, 3744, 1, 1, -2961.015380859375, 2557.951416015625, 93.8766632080078125, 6.213373661041259765, 0, 0, -0.03489875793457031, 0.999390840530395507, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+33, 195257, 530, 3520, 3744, 1, 1, -2954.9580078125, 2567.07763671875, 81.00614166259765625, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+34, 195260, 530, 3520, 3744, 1, 1, -2955.542236328125, 2564.842041015625, 79.5325775146484375, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+35, 195260, 530, 3520, 3744, 1, 1, -2954.606689453125, 2547.318359375, 92.7652587890625, 0, 0, 0, 0, 1, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+36, 195264, 530, 3520, 3744, 1, 1, -2955.876708984375, 2547.72314453125, 92.740325927734375, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+37, 195266, 530, 3520, 3744, 1, 1, -2955.604736328125, 2554.495361328125, 110.3285293579101562, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+38, 195253, 530, 3520, 3744, 1, 1, -2944.712158203125, 2569.651123046875, 97.11517333984375, 0.610863447189331054, 0, 0, 0.3007049560546875, 0.953717231750488281, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+39, 195264, 530, 3520, 3744, 1, 1, -2956.9921875, 2566.442626953125, 79.3311920166015625, 4.136432647705078125, 0, 0, -0.87881660461425781, 0.477159708738327026, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+40, 195256, 530, 3520, 3744, 1, 1, -2932.841552734375, 2657.233154296875, 94.24631500244140625, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+41, 195257, 530, 3520, 3744, 1, 1, -2961.58154296875, 2546.88134765625, 79.9313201904296875, 1.692969322204589843, 0, 0, 0.748955726623535156, 0.662620067596435546, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+42, 195256, 530, 3520, 3744, 1, 1, -2956.543701171875, 2554.591552734375, 126.6190719604492187, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+43, 195253, 530, 3520, 3744, 1, 1, -2960.053955078125, 2536.85107421875, 96.7497406005859375, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+44, 195253, 530, 3520, 3744, 1, 1, -2943.146484375, 2549.089111328125, 96.6855316162109375, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+45, 195266, 530, 3520, 3744, 1, 1, -2927.349853515625, 2650.86083984375, 100.1286468505859375, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 530, 3520, 3744, 1, 1, -2921.616943359375, 2644.62451171875, 94.40192413330078125, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Shadowmoon Village - Difficulty: 0) CreateObject1 +(@OGUID+47, 195264, 530, 3520, 3745, 1, 1, -4082.78125, 2168.835205078125, 112.272796630859375, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+48, 195257, 530, 3520, 3745, 1, 1, -4076.149658203125, 2162.083740234375, 111.4253463745117187, 1.605701684951782226, 0, 0, 0.719339370727539062, 0.694658815860748291, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+49, 195253, 530, 3520, 3745, 1, 1, -4063.404541015625, 2159.092041015625, 117.938629150390625, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+50, 195257, 530, 3520, 3745, 1, 1, -4072.6220703125, 2162.17578125, 111.429656982421875, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+51, 195257, 530, 3520, 3745, 1, 1, -4074.34716796875, 2162.1298828125, 111.4437026977539062, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+52, 195260, 530, 3520, 3745, 1, 1, -4050.7421875, 2163.79638671875, 111.68609619140625, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+53, 195260, 530, 3520, 3745, 1, 1, -4052.369384765625, 2168.781982421875, 111.6152267456054687, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+54, 195259, 530, 3520, 3745, 1, 1, -4069.704345703125, 2183.112060546875, 108.5346221923828125, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+55, 195260, 530, 3520, 3745, 1, 1, -4073.99267578125, 2183.056396484375, 108.3961029052734375, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+56, 195253, 530, 3520, 3745, 1, 1, -4053.135498046875, 2167.243408203125, 117.8958206176757812, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+57, 195253, 530, 3520, 3745, 1, 1, -4063.2900390625, 2183.958251953125, 117.9620437622070312, 0.034906249493360519, 0, 0, 0.017452239990234375, 0.999847710132598876, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+58, 195264, 530, 3520, 3745, 1, 1, -4082.23486328125, 2188.566162109375, 108.3726119995117187, 0.767943859100341796, 0, 0, 0.374606132507324218, 0.927184045314788818, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+59, 195263, 530, 3520, 3745, 1, 1, -4063.59716796875, 2172.936767578125, 112.3214263916015625, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+60, 195264, 530, 3520, 3745, 1, 1, -4052.1689453125, 2163.6630859375, 111.6860733032226562, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+61, 195259, 530, 3520, 3745, 1, 1, -4075.490478515625, 2189.596923828125, 111.4620437622070312, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+62, 195266, 530, 3520, 3745, 1, 1, -4058.76220703125, 2175.68505859375, 117.8551864624023437, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+63, 195260, 530, 3520, 3745, 1, 1, -4082.025634765625, 2186.263671875, 108.372711181640625, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+64, 195264, 530, 3520, 3745, 1, 1, -4051.087158203125, 2170.192626953125, 111.6160202026367187, 2.338739633560180664, 0, 0, 0.920504570007324218, 0.3907318115234375, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+65, 195256, 530, 3520, 3745, 1, 1, -4062.358642578125, 2190.830322265625, 109.8542861938476562, 5.602506637573242187, 0, 0, -0.33380699157714843, 0.942641437053680419, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+66, 195264, 530, 3520, 3745, 1, 1, -3976.319580078125, 2143.522705078125, 105.8609390258789062, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+67, 195256, 530, 3520, 3745, 1, 1, -4008.3447265625, 2172.324951171875, 105.0965194702148437, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+68, 195266, 530, 3520, 3745, 1, 1, -4010.3671875, 2155.552001953125, 109.9921112060546875, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+69, 195260, 530, 3520, 3745, 1, 1, -3977.75, 2144.866455078125, 105.8776626586914062, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+70, 195256, 530, 3520, 3745, 1, 1, -3981.39501953125, 2150.5869140625, 105.0282135009765625, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+71, 195256, 530, 3520, 3745, 1, 1, -3984.70361328125, 2162.161865234375, 105.4418182373046875, 4.380776405334472656, 0, 0, -0.81411552429199218, 0.580702960491180419, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+72, 195255, 530, 3520, 3745, 1, 1, -3923.835205078125, 2072.3330078125, 100.5962066650390625, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+73, 195255, 530, 3520, 3745, 1, 1, -3922.776611328125, 2062.048583984375, 100.12078857421875, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+74, 195255, 530, 3520, 3745, 1, 1, -3891.201416015625, 2089.9423828125, 100.371063232421875, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+75, 195256, 530, 3520, 3745, 1, 1, -3930.80908203125, 2115.1484375, 96.81003570556640625, 3.508116960525512695, 0, 0, -0.98325443267822265, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+76, 195255, 530, 3520, 3745, 1, 1, -3882.01171875, 2085.140625, 99.7375030517578125, 5.759587764739990234, 0, 0, -0.25881862640380859, 0.965925931930541992, 120, 255, 1, 0), -- Hanging, Tall/Thin, Large - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+77, 195256, 530, 3520, 3745, 1, 1, -3948.71875, 2165.37548828125, 100.8409271240234375, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+78, 195253, 530, 3520, 3745, 1, 1, -3956.79345703125, 2241.56689453125, 107.9687118530273437, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+79, 195259, 530, 3520, 3745, 1, 1, -3977.41015625, 2165.697998046875, 106.9871063232421875, 2.460912704467773437, 0, 0, 0.942641258239746093, 0.333807557821273803, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+80, 195256, 530, 3520, 3745, 1, 1, -3966.46533203125, 2185.426025390625, 101.895050048828125, 1.692969322204589843, 0, 0, 0.748955726623535156, 0.662620067596435546, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+81, 195256, 530, 3520, 3745, 1, 1, -4026.630126953125, 2188.57958984375, 109.117340087890625, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+82, 195256, 530, 3520, 3745, 1, 1, -4035.944091796875, 2238.972900390625, 112.2723388671875, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+83, 195253, 530, 3520, 3745, 1, 1, -4044.76513671875, 2237.18359375, 118.0772323608398437, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+84, 195256, 530, 3520, 3745, 1, 1, -4047.15625, 2228.052734375, 112.0462265014648437, 5.95157480239868164, 0, 0, -0.16504669189453125, 0.986285746097564697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Wildhammer Stronghold - Difficulty: 0) CreateObject1 +(@OGUID+85, 195273, 530, 3520, 3938, 1, 1, -4120.05859375, 1134.972900390625, 47.51078414916992187, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+86, 195256, 530, 3520, 3938, 1, 1, -4130.572265625, 1173.3890380859375, 49.58153533935546875, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+87, 195256, 530, 3520, 3938, 1, 1, -4135.37353515625, 1128.6754150390625, 54.5828857421875, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+88, 195260, 530, 3520, 3938, 1, 1, -4141.9140625, 1121.7178955078125, 45.45482635498046875, 0.959929943084716796, 0, 0, 0.461748123168945312, 0.887011110782623291, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+89, 195253, 530, 3520, 3938, 1, 1, -4114.49462890625, 1119.6181640625, 52.3812408447265625, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+90, 195264, 530, 3520, 3938, 1, 1, -4143.16162109375, 1122.7239990234375, 45.38457107543945312, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+91, 195256, 530, 3520, 3938, 1, 1, -4084.19482421875, 1138.9263916015625, 44.43297576904296875, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+92, 195256, 530, 3520, 3938, 1, 1, -4114.81884765625, 1116.676513671875, 44.5312652587890625, 0.174532130360603332, 0, 0, 0.087155342102050781, 0.996194720268249511, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+93, 195256, 530, 3520, 3938, 1, 1, -4088.48828125, 1139.845703125, 44.42666244506835937, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+94, 195264, 530, 3520, 3938, 1, 1, -4140.7392578125, 1120.9261474609375, 45.42783737182617187, 5.148722648620605468, 0, 0, -0.53729915618896484, 0.843391716480255126, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+95, 195273, 530, 3520, 3938, 1, 1, -4130.57666015625, 1117.59765625, 46.677337646484375, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+96, 195256, 530, 3520, 3938, 1, 1, -4112.09619140625, 1121.5782470703125, 44.54679107666015625, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+97, 195256, 530, 3520, 3938, 1, 1, -4065.079833984375, 1138.2952880859375, 43.17560195922851562, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+98, 195259, 530, 3520, 3938, 1, 1, -4064.587646484375, 1124.2447509765625, 43.41815567016601562, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+99, 195256, 530, 3520, 3938, 1, 1, -4062.444091796875, 1135.4744873046875, 43.182769775390625, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sanctum of the Stars - Difficulty: 0) CreateObject1 +(@OGUID+100, 195256, 530, 3520, 3754, 1, 1, -3061.826904296875, 853.1981201171875, -11.372446060180664, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+101, 195256, 530, 3520, 3754, 1, 1, -3080.7724609375, 825.7005615234375, -11.3570261001586914, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+102, 195256, 530, 3520, 3754, 1, 1, -3055.613525390625, 812.4754638671875, -9.50643634796142578, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+103, 195256, 530, 3520, 3754, 1, 1, -3075.423828125, 858.77508544921875, -20.02081298828125, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+104, 195256, 530, 3520, 3754, 1, 1, -3089.802490234375, 837.77227783203125, -19.9238052368164062, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+105, 195256, 530, 3520, 3754, 1, 1, -3079.41455078125, 748.1234130859375, -10.3399553298950195, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+106, 195256, 530, 3520, 3754, 1, 1, -3041.075439453125, 832.12030029296875, -9.4848947525024414, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+107, 195256, 530, 3520, 3754, 1, 1, -3028.215087890625, 823.3272705078125, -9.54635906219482421, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+108, 195256, 530, 3520, 3754, 1, 1, -3040.775146484375, 806.68359375, -9.70629119873046875, 1.692969322204589843, 0, 0, 0.748955726623535156, 0.662620067596435546, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+109, 195263, 530, 3520, 3754, 1, 1, -3006.30908203125, 859.59552001953125, -5.97701120376586914, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+110, 195253, 530, 3520, 3754, 1, 1, -3006.022705078125, 795.25811767578125, -1.8910219669342041, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+111, 195256, 530, 3520, 3754, 1, 1, -3016.65771484375, 795.047607421875, -9.91684436798095703, 2.129300594329833984, 0, 0, 0.874619483947753906, 0.484810054302215576, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+112, 195256, 530, 3520, 3754, 1, 1, -3009.98681640625, 803.83917236328125, -10.395700454711914, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+113, 195256, 530, 3520, 3754, 1, 1, -3007.626220703125, 853.58880615234375, -10.4860382080078125, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+114, 195256, 530, 3520, 3754, 1, 1, -3012.275146484375, 861.4300537109375, -10.4898605346679687, 4.014260292053222656, 0, 0, -0.90630722045898437, 0.422619491815567016, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+115, 195260, 530, 3520, 3754, 1, 1, -2979.788330078125, 854.04339599609375, -6.90769720077514648, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+116, 195260, 530, 3520, 3754, 1, 1, -2981.595458984375, 858.29339599609375, -6.68239784240722656, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+117, 195264, 530, 3520, 3754, 1, 1, -2980.90283203125, 856.31597900390625, -6.71913814544677734, 4.555310726165771484, 0, 0, -0.76040554046630859, 0.649448513984680175, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+118, 195256, 530, 3520, 3754, 1, 1, -3010.563232421875, 770.08599853515625, -6.93308401107788085, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+119, 195256, 530, 3520, 3754, 1, 1, -2983.507080078125, 869.46856689453125, -7.47986507415771484, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+120, 195256, 530, 3520, 3754, 1, 1, -2983.704833984375, 809.15484619140625, -6.90789985656738281, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+121, 195257, 530, 3520, 3754, 1, 1, -2979.53515625, 851.0223388671875, -5.23691987991333007, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+122, 195257, 530, 3520, 3754, 1, 1, -2974.166015625, 852.98956298828125, -5.18410921096801757, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+123, 195259, 530, 3520, 3754, 1, 1, -3061.328125, 737.1944580078125, -8.77170085906982421, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+124, 195260, 530, 3520, 3754, 1, 1, -2970.28466796875, 860.4757080078125, -6.32565212249755859, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 +(@OGUID+125, 195264, 530, 3520, 3754, 1, 1, -2970.079833984375, 861.28125, -6.31812810897827148, 2.286378860473632812, 0, 0, 0.909960746765136718, 0.414694398641586303, 120, 255, 1, 0); -- Standing, Interior, Medium - Brewfest (Area: Altar of Sha'tar - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+125 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+125; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_14_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_14_00_world.sql new file mode 100644 index 00000000000..d39d0ec5a63 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_14_00_world.sql @@ -0,0 +1,6 @@ +-- Cloth Scavenging - Dalaran (13272) +UPDATE `quest_offer_reward` SET `RewardText`="I think you will find this skill helps you a great deal on your path to tailoring greatness!" WHERE `ID`=13272; +-- Cloth Scavenging - Valiance Keep (13265) +UPDATE `quest_offer_reward` SET `RewardText`="Turn that extra cloth you find into something that looks marvelous!" WHERE `ID`=13265; +-- Cloth Scavenging - Warsong Hold (13270) +UPDATE `quest_offer_reward` SET `RewardText`="I be appreciatin' your business." WHERE `ID`=13270; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_14_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_14_01_world.sql new file mode 100644 index 00000000000..909de3ebdb1 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_14_01_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template_movement` SET `Swim`=0, `Rooted`=1 WHERE `CreatureId`=27987; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_18_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_18_00_world.sql new file mode 100644 index 00000000000..2f938cc0855 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_18_00_world.sql @@ -0,0 +1,2 @@ +-- Firemane Flamecaller +UPDATE `creature` SET `position_x`=-4964.78955078125, `position_y`=-3821.1826171875, `position_z`=43.62102127075195312, `orientation`=2.776098012924194335, `wander_distance`=5, `MovementType`=1 WHERE `guid`=30504; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_20_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_20_00_world.sql new file mode 100644 index 00000000000..dcec2e975e5 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_20_00_world.sql @@ -0,0 +1,2 @@ +-- they only have one gender and it seems DisplayID_Other_Gender will be dropped in the future +UPDATE `creature_model_info` SET `DisplayID_Other_Gender`=0 WHERE `DisplayID` IN (18566,18567,18568,18569); diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_20_01_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_20_01_world.sql new file mode 100644 index 00000000000..ba85644e89c --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_20_01_world.sql @@ -0,0 +1,2 @@ +-- Death Knights shoud start with Journeyman Riding (150) +UPDATE `playercreateinfo_skills` SET `rank`=2 WHERE `raceMask`=0 AND `classMask`=32 AND `skill`=762; diff --git a/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_22_00_world.sql b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_22_00_world.sql new file mode 100644 index 00000000000..1e516578e94 --- /dev/null +++ b/sql/old/3.3.5a/world/24081_2024_11_22/2024_11_22_00_world.sql @@ -0,0 +1,2 @@ +-- Pit of Saron: Set Tyrannus as vehicle minion +UPDATE `vehicle_template_accessory` SET `minion`=1 WHERE `entry`=36794; diff --git a/sql/updates/auth/3.3.5/2024_11_22_00_auth.sql b/sql/updates/auth/3.3.5/2024_11_22_00_auth.sql new file mode 100644 index 00000000000..75986885739 --- /dev/null +++ b/sql/updates/auth/3.3.5/2024_11_22_00_auth.sql @@ -0,0 +1,2 @@ +-- TDB 335.24111 auth +UPDATE `updates` SET `state`='ARCHIVED'; diff --git a/sql/updates/characters/3.3.5/2024_11_22_00_characters.sql b/sql/updates/characters/3.3.5/2024_11_22_00_characters.sql new file mode 100644 index 00000000000..6bece070f8f --- /dev/null +++ b/sql/updates/characters/3.3.5/2024_11_22_00_characters.sql @@ -0,0 +1,2 @@ +-- TDB 335.24111 characters +UPDATE `updates` SET `state`='ARCHIVED'; diff --git a/sql/updates/world/3.3.5/2024_11_22_01_world.sql b/sql/updates/world/3.3.5/2024_11_22_01_world.sql new file mode 100644 index 00000000000..7a7783a21c0 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_11_22_01_world.sql @@ -0,0 +1,3 @@ +-- TDB 335.24111 world +UPDATE `version` SET `db_version`='TDB 335.24111', `cache_id`=24111 LIMIT 1; +UPDATE `updates` SET `state`='ARCHIVED'; diff --git a/sql/updates/world/3.3.5/2024_11_24_00_world.sql b/sql/updates/world/3.3.5/2024_11_24_00_world.sql new file mode 100644 index 00000000000..0de062956da --- /dev/null +++ b/sql/updates/world/3.3.5/2024_11_24_00_world.sql @@ -0,0 +1,4 @@ +-- Add Gates of Ironforge graveyard for Ally when dying in Ironforge +DELETE FROM `graveyard_zone` WHERE `ID`=852 AND `GhostZone`=1537; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES +(852, 1537, 469, 'Dun Morogh, Gates of Ironforge - Ironforge'); diff --git a/sql/updates/world/3.3.5/2024_12_05_00_world.sql b/sql/updates/world/3.3.5/2024_12_05_00_world.sql new file mode 100644 index 00000000000..af0ae9f53a3 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_05_00_world.sql @@ -0,0 +1,75 @@ +-- +SET @OGUID := 93658; -- Need 66 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+65; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195273, 530, 3522, 3951, 1, 1, 2945.66259765625, 5412.689453125, 150.0002593994140625, 4.031712055206298828, 0, 0, -0.90258502960205078, 0.430511653423309326, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+1, 195273, 530, 3522, 3951, 1, 1, 2935.668212890625, 5418.9306640625, 149.9498291015625, 4.206246376037597656, 0, 0, -0.86162853240966796, 0.50753939151763916, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+2, 195253, 530, 3522, 3951, 1, 1, 2940.299072265625, 5415.8017578125, 165.9381561279296875, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+3, 195264, 530, 3522, 3951, 1, 1, 3016.26220703125, 5430.1806640625, 148.0060577392578125, 4.380776405334472656, 0, 0, -0.81411552429199218, 0.580702960491180419, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+4, 195259, 530, 3522, 3951, 1, 1, 3013.2666015625, 5429.97119140625, 148.0764007568359375, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+5, 195259, 530, 3522, 3951, 1, 1, 2944.679443359375, 5466.7021484375, 150.6358184814453125, 0, 0, 0, 0, 1, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+6, 195256, 530, 3522, 3951, 1, 1, 2969.010498046875, 5459.72509765625, 144.69720458984375, 4.066620349884033203, 0, 0, -0.89493370056152343, 0.44619917869567871, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+7, 195260, 530, 3522, 3951, 1, 1, 3017.862548828125, 5435.4111328125, 147.436614990234375, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+8, 195266, 530, 3522, 3951, 1, 1, 3016.6123046875, 5445.06884765625, 151.876983642578125, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+9, 195260, 530, 3522, 3951, 1, 1, 3026.326904296875, 5430.9189453125, 148.449310302734375, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+10, 195260, 530, 3522, 3951, 1, 1, 3027.364990234375, 5431.576171875, 148.4505157470703125, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+11, 195256, 530, 3522, 3951, 1, 1, 2950.8291015625, 5486.53076171875, 144.1426544189453125, 5.497788906097412109, 0, 0, -0.38268280029296875, 0.923879802227020263, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+12, 195253, 530, 3522, 3951, 1, 1, 2944.295654296875, 5533.42822265625, 163.8209686279296875, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+13, 195273, 530, 3522, 3951, 1, 1, 2941.7880859375, 5528.2353515625, 149.5076751708984375, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+14, 195266, 530, 3522, 3951, 1, 1, 3026.51025390625, 5497.439453125, 151.5306549072265625, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+15, 195256, 530, 3522, 3951, 1, 1, 3011.184814453125, 5493.75, 145.0009307861328125, 0.680676698684692382, 0, 0, 0.333806037902832031, 0.942641794681549072, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+16, 195273, 530, 3522, 3951, 1, 1, 2947.150634765625, 5538.0439453125, 149.5360260009765625, 2.617989301681518554, 0, 0, 0.965925216674804687, 0.258821308612823486, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+17, 195273, 530, 3522, 3951, 1, 1, 3083.156982421875, 5479.302734375, 146.721160888671875, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+18, 195253, 530, 3522, 3951, 1, 1, 3085.63330078125, 5473.6279296875, 162.5823516845703125, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Evergrove - Difficulty: 0) CreateObject1 +(@OGUID+19, 195259, 530, 3522, 3844, 1, 1, 2188.35693359375, 4795.171875, 158.6740264892578125, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+20, 195260, 530, 3522, 3844, 1, 1, 2173.998779296875, 4726.61572265625, 157.7523651123046875, 3.9793548583984375, 0, 0, -0.9135446548461914, 0.406738430261611938, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+21, 195259, 530, 3522, 3844, 1, 1, 2181.06591796875, 4706.8447265625, 159.597625732421875, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+22, 195259, 530, 3522, 3844, 1, 1, 2165.545654296875, 4727.486328125, 159.5631103515625, 2.268925428390502929, 0, 0, 0.906307220458984375, 0.422619491815567016, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+23, 195273, 530, 3522, 3844, 1, 1, 2148.1455078125, 4823.4619140625, 153.2520599365234375, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+24, 195266, 530, 3522, 3844, 1, 1, 2154.755859375, 4716.65576171875, 160.954681396484375, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+25, 195266, 530, 3522, 3844, 1, 1, 2155.24951171875, 4720.380859375, 160.944915771484375, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+26, 195273, 530, 3522, 3844, 1, 1, 2137.6142578125, 4828.30615234375, 155.2135772705078125, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+27, 195253, 530, 3522, 3844, 1, 1, 2092.12744140625, 4792.1640625, 175.636199951171875, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+28, 195253, 530, 3522, 3844, 1, 1, 2098.94580078125, 4779.43212890625, 175.532470703125, 6.178466320037841796, 0, 0, -0.05233573913574218, 0.998629570007324218, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+29, 195253, 530, 3522, 3844, 1, 1, 2090.407470703125, 4769.77099609375, 175.6497344970703125, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+30, 195256, 530, 3522, 3844, 1, 1, 2087.610595703125, 4782.98876953125, 157.7813568115234375, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+31, 195253, 530, 3522, 3844, 1, 1, 2078.7470703125, 4789.83056640625, 175.6967620849609375, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+32, 195260, 530, 3522, 3844, 1, 1, 2045.7447509765625, 4731.15478515625, 151.848724365234375, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+33, 195259, 530, 3522, 3844, 1, 1, 2045.4296875, 4686.2568359375, 153.3060150146484375, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+34, 195266, 530, 3522, 3844, 1, 1, 2035.0504150390625, 4693.1162109375, 154.721710205078125, 1.85004889965057373, 0, 0, 0.798635482788085937, 0.60181504487991333, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+35, 195266, 530, 3522, 3844, 1, 1, 2031.4676513671875, 4692.1103515625, 154.7591094970703125, 1.884953022003173828, 0, 0, 0.809016227722167968, 0.587786316871643066, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+36, 195256, 530, 3522, 3844, 1, 1, 2019.060791015625, 4700.48193359375, 150.237762451171875, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+37, 195259, 530, 3522, 3844, 1, 1, 2032.304443359375, 4663.9609375, 153.4190826416015625, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+38, 195264, 530, 3522, 3844, 1, 1, 2042.164306640625, 4667.0546875, 151.262664794921875, 2.007128477096557617, 0, 0, 0.84339141845703125, 0.537299633026123046, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Mok'Nathal Village - Difficulty: 0) CreateObject1 +(@OGUID+39, 195253, 530, 3522, 3772, 1, 1, 2066.2578125, 6730.63916015625, 181.51666259765625, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+40, 195253, 530, 3522, 3772, 1, 1, 2066.148193359375, 6726.275390625, 181.5531158447265625, 4.747295856475830078, 0, 0, -0.69465827941894531, 0.719339847564697265, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+41, 195253, 530, 3522, 3772, 1, 1, 2070.802978515625, 6759.6708984375, 173.274200439453125, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+42, 195253, 530, 3522, 3772, 1, 1, 2055.8271484375, 6759.79150390625, 173.274200439453125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+43, 195266, 530, 3522, 3772, 1, 1, 2063.30517578125, 6759.89794921875, 173.2681427001953125, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+44, 195266, 530, 3522, 3772, 1, 1, 2163.69384765625, 6745.07666015625, 172.408538818359375, 4.049167633056640625, 0, 0, -0.89879322052001953, 0.438372820615768432, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+45, 195259, 530, 3522, 3772, 1, 1, 1989.3138427734375, 6784.46484375, 167.9163970947265625, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+46, 195266, 530, 3522, 3772, 1, 1, 2162.736572265625, 6751.21435546875, 172.43853759765625, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+47, 195266, 530, 3522, 3772, 1, 1, 2031.962646484375, 6825.552734375, 181.533294677734375, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+48, 195266, 530, 3522, 3772, 1, 1, 2038.027099609375, 6826.09423828125, 181.4816436767578125, 0.837757468223571777, 0, 0, 0.406736373901367187, 0.913545548915863037, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+49, 195266, 530, 3522, 3772, 1, 1, 2038.5650634765625, 6819.837890625, 181.4885406494140625, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+50, 195260, 530, 3522, 3772, 1, 1, 1989.5538330078125, 6785.7109375, 165.7517242431640625, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+51, 195266, 530, 3522, 3772, 1, 1, 2032.2135009765625, 6819.36962890625, 181.5124969482421875, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+52, 195266, 530, 3522, 3772, 1, 1, 2062.016357421875, 6825.853515625, 184.783203125, 4.729844093322753906, 0, 0, -0.70090866088867187, 0.713251054286956787, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+53, 195273, 530, 3522, 3772, 1, 1, 2051.89013671875, 6831.6376953125, 177.0355377197265625, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+54, 195266, 530, 3522, 3772, 1, 1, 2169.92529296875, 6745.9697265625, 172.43658447265625, 5.672322273254394531, 0, 0, -0.3007049560546875, 0.953717231750488281, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+55, 195256, 530, 3522, 3772, 1, 1, 2161.681640625, 6783.0478515625, 183.453582763671875, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+56, 195266, 530, 3522, 3772, 1, 1, 2168.956298828125, 6752.18212890625, 172.4386749267578125, 0.925023794174194335, 0, 0, 0.446197509765625, 0.894934535026550292, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+57, 195253, 530, 3522, 3772, 1, 1, 2095.052490234375, 6899.6201171875, 190.438201904296875, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+58, 195253, 530, 3522, 3772, 1, 1, 2085.431396484375, 6890.10400390625, 190.465667724609375, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+59, 195256, 530, 3522, 3772, 1, 1, 2007.013427734375, 6878.82177734375, 178.9834442138671875, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+60, 195266, 530, 3522, 3772, 1, 1, 2009.812744140625, 6871.4130859375, 188.180755615234375, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+61, 195256, 530, 3522, 3772, 1, 1, 2017.318603515625, 6873.4814453125, 178.9829864501953125, 4.241150379180908203, 0, 0, -0.85264015197753906, 0.522498607635498046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+62, 195259, 530, 3522, 3772, 1, 1, 2016.857421875, 6885.0546875, 182.8495941162109375, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+63, 195266, 530, 3522, 3772, 1, 1, 1955.62548828125, 6885.82080078125, 167.1296234130859375, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+64, 195253, 530, 3522, 3772, 1, 1, 1937.43359375, 6838.64013671875, 177.4421844482421875, 3.194002151489257812, 0, 0, -0.99965667724609375, 0.026201646775007247, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 +(@OGUID+65, 195253, 530, 3522, 3772, 1, 1, 1941.3951416015625, 6838.6572265625, 177.4772491455078125, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 120, 255, 1, 0); -- Hanging, Streamer x3 - Brewfest (Area: Sylvanaar - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+65 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+65; diff --git a/sql/updates/world/3.3.5/2024_12_05_01_world.sql b/sql/updates/world/3.3.5/2024_12_05_01_world.sql new file mode 100644 index 00000000000..aaa9790521b --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_05_01_world.sql @@ -0,0 +1,60 @@ +-- +SET @OGUID := 55863; -- Need 49 +SET @EVENT := 24; + +UPDATE `gameobject` SET `zoneId`=3521, `areaId`=3565, `position_x`=-184.629074096679687, `position_y`=5506.40576171875, `position_z`=29.47097396850585937, `orientation`=3.141592741012573242, `rotation2`=-1, `rotation3`=0, `spawntimesecs`=120 WHERE `guid`=80085; -- Standing, Exterior, Medium - Brewfest (Area: Cenarion Refuge - Difficulty: 0) CreateObject1 + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+48; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195256, 530, 3521, 3766, 1, 1, 1068.5582275390625, 7349.52783203125, 40.729827880859375, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Orebor Harborage - Difficulty: 0) CreateObject1 +(@OGUID+1, 195256, 530, 3521, 3766, 1, 1, 1072.7413330078125, 7372.52197265625, 39.58334732055664062, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Orebor Harborage - Difficulty: 0) CreateObject1 +(@OGUID+2, 195256, 530, 3521, 3644, 1, 1, 301.71356201171875, 5979.0732421875, 132.4597930908203125, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+3, 195256, 530, 3521, 3644, 1, 1, 269.962310791015625, 5956.73486328125, 26.43292236328125, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+4, 195256, 530, 3521, 3644, 1, 1, 298.295318603515625, 5957.51953125, 26.42815017700195312, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+5, 195273, 530, 3521, 3644, 1, 1, 282.431060791015625, 5967.0205078125, 156.1607208251953125, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+6, 195256, 530, 3521, 3644, 1, 1, 272.316680908203125, 5944.75048828125, 26.52184486389160156, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+7, 195256, 530, 3521, 3644, 1, 1, 278.588134765625, 5966.77783203125, 150.167694091796875, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+8, 195256, 530, 3521, 3644, 1, 1, 296.528472900390625, 5941.6240234375, 26.55747795104980468, 3.682650327682495117, 0, 0, -0.96362972259521484, 0.26724100112915039, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telredor - Difficulty: 0) CreateObject1 +(@OGUID+9, 195273, 530, 3521, 3565, 1, 1, -183.250381469726562, 5514.36181640625, 30.78355216979980468, 0.471238493919372558, 0, 0, 0.233445167541503906, 0.972369968891143798, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Cenarion Refuge - Difficulty: 0) CreateObject1 +(@OGUID+10, 195256, 530, 3521, 3645, 1, 1, 210.4429779052734375, 7810.77001953125, 23.82720375061035156, 1.099556446075439453, 0, 0, 0.522498130798339843, 0.852640450000762939, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+11, 195259, 530, 3521, 3645, 1, 1, 225.3917694091796875, 7813.88134765625, 22.9826507568359375, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+12, 195259, 530, 3521, 3645, 1, 1, 221.990020751953125, 7810.06591796875, 23.68496131896972656, 2.234017848968505859, 0, 0, 0.898793220520019531, 0.438372820615768432, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+13, 195256, 530, 3521, 3645, 1, 1, 253.7595977783203125, 7836.69970703125, 22.96671676635742187, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+14, 195256, 530, 3521, 3645, 1, 1, 229.98101806640625, 7821.42626953125, 21.99320030212402343, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+15, 195264, 530, 3521, 3645, 1, 1, 269.388092041015625, 7849.4365234375, 24.44972610473632812, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+16, 195256, 530, 3521, 3645, 1, 1, 287.766937255859375, 7842.64306640625, 22.589141845703125, 2.44346022605895996, 0, 0, 0.939692497253417968, 0.34202045202255249, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+17, 195256, 530, 3521, 3645, 1, 1, 293.306427001953125, 7831.15966796875, 24.93296241760253906, 4.415683269500732421, 0, 0, -0.80385684967041015, 0.594822824001312255, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+18, 195264, 530, 3521, 3645, 1, 1, 271.417327880859375, 7860.4853515625, 24.63960075378417968, 6.09120035171508789, 0, 0, -0.09584522247314453, 0.995396256446838378, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+19, 195264, 530, 3521, 3645, 1, 1, 262.776641845703125, 7854.1630859375, 24.14608192443847656, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+20, 195259, 530, 3521, 3645, 1, 1, 332.28717041015625, 7829.9609375, 39.40044784545898437, 6.213373661041259765, 0, 0, -0.03489875793457031, 0.999390840530395507, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+21, 195273, 530, 3521, 3645, 1, 1, 257.303985595703125, 7897.23974609375, 22.72899436950683593, 5.427974700927734375, 0, 0, -0.41469287872314453, 0.909961462020874023, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+22, 195256, 530, 3521, 3645, 1, 1, 334.99078369140625, 7839.56005859375, 22.29417991638183593, 1.658061861991882324, 0, 0, 0.737277030944824218, 0.67559051513671875, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+23, 195256, 530, 3521, 3645, 1, 1, 238.597869873046875, 7893.0703125, 21.80823898315429687, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+24, 195256, 530, 3521, 3645, 1, 1, 250.3988800048828125, 7896.92529296875, 21.685455322265625, 4.59021615982055664, 0, 0, -0.74895572662353515, 0.662620067596435546, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+25, 195256, 530, 3521, 3645, 1, 1, 261.77386474609375, 7872.234375, 23.733184814453125, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+26, 195259, 530, 3521, 3645, 1, 1, 233.8485870361328125, 7910.587890625, 27.21143913269042968, 5.218535900115966796, 0, 0, -0.507537841796875, 0.861629426479339599, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+27, 195259, 530, 3521, 3645, 1, 1, 241.36865234375, 7913.66259765625, 27.14164352416992187, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+28, 195266, 530, 3521, 3645, 1, 1, 237.8500518798828125, 7911.4912109375, 30.47849845886230468, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+29, 195259, 530, 3521, 3645, 1, 1, 342.149322509765625, 7867.58251953125, 45.30078506469726562, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Hanging, Square, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+30, 195263, 530, 3521, 3645, 1, 1, 237.0487213134765625, 7913.60400390625, 30.74815177917480468, 1.972219824790954589, 0, 0, 0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+31, 195266, 530, 3521, 3645, 1, 1, 236.9491119384765625, 7913.625, 30.50174903869628906, 1.972219824790954589, 0, 0, 0.83388519287109375, 0.55193793773651123, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+32, 195257, 530, 3521, 3645, 1, 1, 223.9830780029296875, 7923.5703125, 27.90063095092773437, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+33, 195263, 530, 3521, 3645, 1, 1, 244.1060638427734375, 7939.501953125, 31.13576889038085937, 3.735006093978881835, 0, 0, -0.95630455017089843, 0.292372345924377441, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+34, 195266, 530, 3521, 3645, 1, 1, 244.069549560546875, 7939.38623046875, 30.92425537109375, 3.43830275535583496, 0, 0, -0.98901557922363281, 0.147811368107795715, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+35, 195256, 530, 3521, 3645, 1, 1, 285.1593017578125, 7952.14404296875, 21.52510643005371093, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+36, 195256, 530, 3521, 3645, 1, 1, 247.4571380615234375, 7941.14306640625, 25.69257545471191406, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+37, 195257, 530, 3521, 3645, 1, 1, 239.3765716552734375, 7930.08935546875, 27.8351898193359375, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+38, 195256, 530, 3521, 3645, 1, 1, 210.8226470947265625, 7926.40625, 25.69329643249511718, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+39, 195266, 530, 3521, 3645, 1, 1, 223.4775390625, 7943.31103515625, 30.76141738891601562, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+40, 195263, 530, 3521, 3645, 1, 1, 213.9386444091796875, 7927.57666015625, 30.98103141784667968, 0.418878614902496337, 0, 0, 0.207911491394042968, 0.978147625923156738, 120, 255, 1, 0), -- Hanging, Square, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+41, 195260, 530, 3521, 3645, 1, 1, 231.173614501953125, 7939.26123046875, 41.931976318359375, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+42, 195264, 530, 3521, 3645, 1, 1, 230.4461822509765625, 7939.35400390625, 41.89725494384765625, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+43, 195257, 530, 3521, 3645, 1, 1, 228.63970947265625, 7945.421875, 29.25892829895019531, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, 0), -- Hanging, Tall/Thin, Small - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+44, 195266, 530, 3521, 3645, 1, 1, 214.162872314453125, 7927.6787109375, 30.72031021118164062, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+45, 195256, 530, 3521, 3645, 1, 1, 276.127227783203125, 7957.609375, 21.57661247253417968, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Zabra'jin - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 530, 3521, 3649, 1, 1, 253.3038177490234375, 8489.0673828125, 23.40814781188964843, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Sporeggar - Difficulty: 0) CreateObject1 +(@OGUID+47, 195266, 530, 3521, 3649, 1, 1, 219.599853515625, 8569.107421875, 33.13797760009765625, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Sporeggar - Difficulty: 0) CreateObject1 +(@OGUID+48, 195256, 530, 3521, 3649, 1, 1, 223.5182647705078125, 8562.453125, 23.26412010192871093, 4.293513298034667968, 0, 0, -0.8386697769165039, 0.544640243053436279, 120, 255, 1, 0); -- Standing, Exterior, Medium - Brewfest (Area: Sporeggar - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+48 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+48; diff --git a/sql/updates/world/3.3.5/2024_12_05_02_world.sql b/sql/updates/world/3.3.5/2024_12_05_02_world.sql new file mode 100644 index 00000000000..184b6c29905 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_05_02_world.sql @@ -0,0 +1,91 @@ +-- +SET @OGUID := 93724; -- Need 82 +SET @EVENT := 24; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+81; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 195256, 530, 3518, 3626, 1, 1, -2571.461181640625, 7378.0302734375, 11.0595703125, 0.261798173189163208, 0, 0, 0.130525588989257812, 0.991444945335388183, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+1, 195256, 530, 3518, 3626, 1, 1, -2561.666259765625, 7378.9599609375, 10.57090091705322265, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+2, 195256, 530, 3518, 3626, 1, 1, -2611.333984375, 7343.45654296875, 23.60636329650878906, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+3, 195256, 530, 3518, 3626, 1, 1, -2573.72021484375, 7300.3046875, 13.90452003479003906, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+4, 195256, 530, 3518, 3626, 1, 1, -2614.57177734375, 7330.8759765625, 24.21088790893554687, 1.500982880592346191, 0, 0, 0.681998252868652343, 0.731353819370269775, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+5, 195256, 530, 3518, 3626, 1, 1, -2618.060791015625, 7338.908203125, 23.65935897827148437, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+6, 195256, 530, 3518, 3626, 1, 1, -2624.407958984375, 7331.68603515625, 24.46343994140625, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+7, 195256, 530, 3518, 3626, 1, 1, -2625.709716796875, 7298.20947265625, 21.14083099365234375, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+8, 195256, 530, 3518, 3626, 1, 1, -2570.704833984375, 7291.2900390625, 14.81432628631591796, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+9, 195256, 530, 3518, 3626, 1, 1, -2614.920166015625, 7297.7255859375, 20.74479866027832031, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+10, 195256, 530, 3518, 3626, 1, 1, -2605.266357421875, 7291.26318359375, 19.81580162048339843, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+11, 195256, 530, 3518, 3626, 1, 1, -2602.271240234375, 7282.345703125, 19.39945030212402343, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+12, 195256, 530, 3518, 3626, 1, 1, -2528.43505859375, 7266.2861328125, 16.2702484130859375, 2.478367090225219726, 0, 0, 0.94551849365234375, 0.325568377971649169, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+13, 195256, 530, 3518, 3626, 1, 1, -2534.46826171875, 7256.74951171875, 16.26636314392089843, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+14, 195256, 530, 3518, 3626, 1, 1, -2600.8056640625, 7237.7109375, 12.91721916198730468, 0.349065244197845458, 0, 0, 0.173647880554199218, 0.984807789325714111, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+15, 195256, 530, 3518, 3626, 1, 1, -2692.655517578125, 7296.978515625, 42.78501129150390625, 5.427974700927734375, 0, 0, -0.41469287872314453, 0.909961462020874023, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+16, 195266, 530, 3518, 3626, 1, 1, -2698.241455078125, 7291.55224609375, 49.91637039184570312, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+17, 195256, 530, 3518, 3626, 1, 1, -2720.993896484375, 7355.89599609375, 39.75893783569335937, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+18, 195256, 530, 3518, 3626, 1, 1, -2702.840576171875, 7293.720703125, 88.6365509033203125, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+19, 195266, 530, 3518, 3626, 1, 1, -2713.3603515625, 7298.4453125, 51.91501235961914062, 5.84685373306274414, 0, 0, -0.21643924713134765, 0.976296067237854003, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+20, 195256, 530, 3518, 3626, 1, 1, -2721.76171875, 7343.4541015625, 39.4463348388671875, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+21, 195256, 530, 3518, 3626, 1, 1, -2697.950439453125, 7284.06103515625, 42.72089385986328125, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+22, 195256, 530, 3518, 3626, 1, 1, -2596.802490234375, 7228.939453125, 13.47050762176513671, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+23, 195256, 530, 3518, 3626, 1, 1, -2626.202392578125, 7216.5498046875, 20.35766029357910156, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+24, 195256, 530, 3518, 3626, 1, 1, -2630.0986328125, 7224.42529296875, 19.74051475524902343, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+25, 195256, 530, 3518, 3626, 1, 1, -2755.32421875, 7317.08056640625, 56.35858535766601562, 2.617989301681518554, 0, 0, 0.965925216674804687, 0.258821308612823486, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+26, 195264, 530, 3518, 3626, 1, 1, -2760.96923828125, 7304.01025390625, 44.88897705078125, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+27, 195273, 530, 3518, 3626, 1, 1, -2738.57080078125, 7309.4521484375, 63.32978057861328125, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+28, 195256, 530, 3518, 3626, 1, 1, -2752.12109375, 7315.080078125, 43.48479461669921875, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+29, 195264, 530, 3518, 3626, 1, 1, -2765.62548828125, 7302.78564453125, 44.92822265625, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+30, 195266, 530, 3518, 3626, 1, 1, -2730.688720703125, 7306.02099609375, 51.77650070190429687, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+31, 195273, 530, 3518, 3626, 1, 1, -2742.36865234375, 7297.82568359375, 47.8856353759765625, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+32, 195266, 530, 3518, 3626, 1, 1, -2775.22607421875, 7326.033203125, 51.77103042602539062, 5.829400539398193359, 0, 0, -0.22495079040527343, 0.974370121955871582, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+33, 195256, 530, 3518, 3626, 1, 1, -2755.533935546875, 7275.69091796875, 40.2712554931640625, 5.515241622924804687, 0, 0, -0.37460613250732421, 0.927184045314788818, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+34, 195273, 530, 3518, 3626, 1, 1, -2732.494140625, 7320.93212890625, 47.57973098754882812, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+35, 195264, 530, 3518, 3626, 1, 1, -2756.8896484375, 7304.197265625, 44.86130905151367187, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 120, 255, 1, 0), -- Standing, Interior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+36, 195273, 530, 3518, 3626, 1, 1, -2772.80078125, 7324.94873046875, 63.32421875, 5.794494152069091796, 0, 0, -0.24192142486572265, 0.970295846462249755, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+37, 195256, 530, 3518, 3626, 1, 1, -2762.166259765625, 7267.40087890625, 40.26733779907226562, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+38, 195256, 530, 3518, 3626, 1, 1, -2670.031005859375, 7211.86328125, 23.66940689086914062, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+39, 195266, 530, 3518, 3626, 1, 1, -2677.658447265625, 7203.91943359375, 32.99669265747070312, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 120, 255, 1, 0), -- Hanging, Streamer - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+40, 195256, 530, 3518, 3626, 1, 1, -2678.9892578125, 7214.02978515625, 23.95701217651367187, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Telaar - Difficulty: 0) CreateObject1 +(@OGUID+41, 195256, 530, 3518, 3613, 1, 1, -1296.558349609375, 6953.97314453125, 33.24512863159179687, 4.118979454040527343, 0, 0, -0.88294696807861328, 0.469472706317901611, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+42, 195256, 530, 3518, 3613, 1, 1, -1307.796630859375, 6960.4736328125, 32.2698211669921875, 4.223697185516357421, 0, 0, -0.85716724395751953, 0.515038192272186279, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+43, 195256, 530, 3518, 3613, 1, 1, -1254.381103515625, 7007.265625, 36.6230010986328125, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+44, 195256, 530, 3518, 3613, 1, 1, -1241.7535400390625, 7003.59423828125, 36.79386138916015625, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+45, 195256, 530, 3518, 3613, 1, 1, -1387.220703125, 7134.828125, 34.03578948974609375, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+46, 195256, 530, 3518, 3613, 1, 1, -1364.81298828125, 7156.56494140625, 34.00505447387695312, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+47, 195256, 530, 3518, 3613, 1, 1, -1392.475830078125, 7140.16845703125, 33.73893356323242187, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+48, 195256, 530, 3518, 3613, 1, 1, -1371.6705322265625, 7162.8037109375, 33.253997802734375, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+49, 195256, 530, 3518, 3613, 1, 1, -1454.1597900390625, 7165.0458984375, 44.56573486328125, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+50, 195256, 530, 3518, 3613, 1, 1, -1283.425537109375, 7130.822265625, 59.73568344116210937, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+51, 195256, 530, 3518, 3613, 1, 1, -1282.8367919921875, 7187.43017578125, 58.00640869140625, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+52, 195256, 530, 3518, 3613, 1, 1, -1262.0758056640625, 7107.591796875, 58.8874664306640625, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+53, 195253, 530, 3518, 3613, 1, 1, -1260.942626953125, 7180.6337890625, 63.39373779296875, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Hanging, Streamer x3 - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+54, 195256, 530, 3518, 3613, 1, 1, -1271.8828125, 7197.9970703125, 57.898193359375, 2.356194972991943359, 0, 0, 0.923879623413085937, 0.382683247327804565, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+55, 195273, 530, 3518, 3613, 1, 1, -1253.0084228515625, 7158.91064453125, 61.71668243408203125, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+56, 195256, 530, 3518, 3613, 1, 1, -1247.80078125, 7101.98095703125, 58.06834030151367187, 4.171337604522705078, 0, 0, -0.87035560607910156, 0.492423713207244873, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+57, 195273, 530, 3518, 3613, 1, 1, -1240.11376953125, 7134.3564453125, 61.81643295288085937, 1.064649581909179687, 0, 0, 0.507537841796875, 0.861629426479339599, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+58, 195256, 530, 3518, 3613, 1, 1, -1209.607666015625, 7103.7080078125, 57.44921112060546875, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+59, 195273, 530, 3518, 3613, 1, 1, -1212.329833984375, 7133.37646484375, 61.55224609375, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+60, 195256, 530, 3518, 3613, 1, 1, -1194.7515869140625, 7110.27880859375, 58.06450271606445312, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+61, 195260, 530, 3518, 3613, 1, 1, -1229.2685546875, 7157.3984375, 58.4376373291015625, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+62, 195256, 530, 3518, 3613, 1, 1, -1173.5557861328125, 7134.2314453125, 58.114990234375, 5.95157480239868164, 0, 0, -0.16504669189453125, 0.986285746097564697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+63, 195260, 530, 3518, 3613, 1, 1, -1224.0504150390625, 7154.1015625, 58.44301223754882812, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+64, 195273, 530, 3518, 3613, 1, 1, -1237.7955322265625, 7183.27978515625, 61.05430984497070312, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+65, 195273, 530, 3518, 3613, 1, 1, -1197.399658203125, 7157.67041015625, 61.52597427368164062, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+66, 195260, 530, 3518, 3613, 1, 1, -1226.032958984375, 7162.578125, 58.451416015625, 2.565631866455078125, 0, 0, 0.958819389343261718, 0.284016460180282592, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+67, 195260, 530, 3518, 3613, 1, 1, -1220.8184814453125, 7159.2900390625, 58.4534912109375, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Interior, Small - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+68, 195273, 530, 3518, 3613, 1, 1, -1210.0084228515625, 7182.3271484375, 61.39197540283203125, 4.084071159362792968, 0, 0, -0.8910064697265625, 0.453990638256072998, 120, 255, 1, 0), -- Hanging, Tall/Thin, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+69, 195256, 530, 3518, 3613, 1, 1, -1249.8062744140625, 7217.7626953125, 58.32961654663085937, 2.146752834320068359, 0, 0, 0.878816604614257812, 0.477159708738327026, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+70, 195256, 530, 3518, 3613, 1, 1, -1221.3048095703125, 7222.46337890625, 59.25885772705078125, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+71, 195256, 530, 3518, 3613, 1, 1, -1201.7222900390625, 7206.6494140625, 58.5518798828125, 0.994837164878845214, 0, 0, 0.477158546447753906, 0.878817260265350341, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+72, 195256, 530, 3518, 3613, 1, 1, -1296.4398193359375, 7267.44384765625, 34.6165313720703125, 4.049167633056640625, 0, 0, -0.89879322052001953, 0.438372820615768432, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+73, 195256, 530, 3518, 3613, 1, 1, -1302.7530517578125, 7271.98974609375, 34.41438674926757812, 4.101525306701660156, 0, 0, -0.88701057434082031, 0.461749136447906494, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+74, 195256, 530, 3518, 3613, 1, 1, -1176.2156982421875, 7200.08447265625, 58.2138214111328125, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+75, 195256, 530, 3518, 3613, 1, 1, -1184.83349609375, 7207.80712890625, 57.92132568359375, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+76, 195256, 530, 3518, 3613, 1, 1, -1198.806640625, 7250.10986328125, 35.1543426513671875, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+77, 195256, 530, 3518, 3613, 1, 1, -1184.6793212890625, 7246.919921875, 35.14312744140625, 2.827429771423339843, 0, 0, 0.987688064575195312, 0.156436234712600708, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+78, 195256, 530, 3518, 3613, 1, 1, -1273.8309326171875, 7316.6728515625, 33.7790985107421875, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+79, 195256, 530, 3518, 3613, 1, 1, -1265.5079345703125, 7313.12939453125, 34.21532440185546875, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+80, 195256, 530, 3518, 3613, 1, 1, -1220.26416015625, 7388.15966796875, 30.789276123046875, 0.610863447189331054, 0, 0, 0.3007049560546875, 0.953717231750488281, 120, 255, 1, 0), -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 +(@OGUID+81, 195256, 530, 3518, 3613, 1, 1, -1207.9671630859375, 7386.6630859375, 31.42566871643066406, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 120, 255, 1, 0); -- Standing, Exterior, Medium - Brewfest (Area: Garadar - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+81 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+81; diff --git a/sql/updates/world/3.3.5/2024_12_05_03_world.sql b/sql/updates/world/3.3.5/2024_12_05_03_world.sql new file mode 100644 index 00000000000..25ba04bde96 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_05_03_world.sql @@ -0,0 +1,2 @@ +-- Update Draenei Youngling PvPFlags +UPDATE `creature_template_addon` SET `PvPFlags`=0x1 WHERE `entry`=17587; diff --git a/sql/updates/world/3.3.5/2024_12_05_04_world.sql b/sql/updates/world/3.3.5/2024_12_05_04_world.sql new file mode 100644 index 00000000000..b9f6e4e0271 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_05_04_world.sql @@ -0,0 +1,2 @@ +-- Set PvP flag for "Draenei Survivor" to allow targeting for quest "Rescue the Survivors!" +UPDATE `creature_template_addon` SET `PvPFlags`=0x1 WHERE `entry`=16483; diff --git a/sql/updates/world/3.3.5/2024_12_06_00_world.sql b/sql/updates/world/3.3.5/2024_12_06_00_world.sql new file mode 100644 index 00000000000..f659aaec9c8 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_06_00_world.sql @@ -0,0 +1,533 @@ +INSERT INTO `creature_template_addon` (`entry`,`PvPFlags`) VALUES +(54,1),(66,1),(68,1),(74,1),(78,1),(151,1),(152,1),(167,1),(190,1),(196,1),(197,1),(198,1),(219,1),(220,1),(221,1),(222,1),(223,1),(224,1),(225,1),(226,1),(227,1),(228,1),(233,1),(234,1),(235,1), +(237,1),(238,1),(239,1),(240,1),(241,1),(242,1),(244,1),(246,1),(248,1),(250,1),(251,1),(252,1),(253,1),(255,1),(258,1),(260,1),(261,1),(263,1),(264,1),(265,1),(266,1),(267,1),(268,1),(269,1), +(270,1),(271,1),(272,1),(273,1),(274,1),(275,1),(276,1),(277,1),(278,1),(279,1),(288,1),(289,1),(294,1),(295,1),(297,1),(302,1),(311,1),(313,1),(325,1),(328,1),(331,1),(332,1),(338,1),(340,1), +(341,1),(342,1),(343,1),(344,1),(346,1),(347,1),(348,1),(349,1),(352,1),(354,1),(372,1),(374,1),(375,1),(376,1),(377,1),(379,1),(380,1),(381,1),(382,1),(383,1),(384,1),(386,1),(415,1),(459,1), +(460,1),(461,1),(464,1),(465,1),(466,1),(467,1),(468,1),(469,1),(470,1),(482,1),(483,1),(487,1),(488,1),(489,1),(490,1),(491,1),(494,1),(495,1),(496,1),(497,1),(499,1),(514,1),(523,1),(542,1), +(543,1),(576,1),(586,1),(633,1),(648,1),(649,1),(650,1),(651,1),(652,1),(653,1),(656,1),(658,1),(661,1),(663,1),(693,1),(713,1),(714,1),(727,1),(733,1),(734,1),(738,1),(739,1),(754,1),(770,1), +(777,1),(786,1),(789,1),(790,1),(791,1),(793,1),(809,1),(812,1),(820,1),(821,1),(823,1),(826,1),(827,1),(828,1),(829,1),(836,1),(837,1),(840,1),(842,1),(843,1),(844,1),(853,1),(857,1),(859,1), +(861,1),(862,1),(863,1),(864,1),(865,1),(866,1),(867,1),(868,1),(869,1),(870,1),(874,1),(876,1),(878,1),(885,1),(886,1),(887,1),(888,1),(893,1),(894,1),(895,1),(896,1),(897,1),(900,1),(903,1), +(904,1),(906,1),(907,1),(911,1),(912,1),(913,1),(914,1),(915,1),(916,1),(917,1),(918,1),(925,1),(926,1),(927,1),(928,1),(931,1),(932,1),(933,1),(934,1),(935,1),(936,1),(944,1),(945,1),(951,1), +(952,1),(954,1),(955,1),(956,1),(957,1),(958,1),(959,1),(960,1),(963,1),(980,1),(981,1),(982,1),(983,1),(984,1),(985,1),(986,1),(987,1),(988,1),(989,1),(999,1),(1000,1),(1001,1),(1058,1),(1064,1), +(1068,1),(1070,1),(1071,1),(1072,1),(1073,1),(1074,1),(1075,1),(1076,1),(1077,1),(1078,1),(1089,1),(1090,1),(1091,1),(1092,1),(1093,1),(1098,1),(1099,1),(1100,1),(1101,1),(1103,1),(1104,1),(1105,1), +(1139,1),(1141,1),(1146,1),(1147,1),(1148,1),(1149,1),(1153,1),(1154,1),(1155,1),(1156,1),(1182,1),(1187,1),(1198,1),(1203,1),(1204,1),(1212,1),(1213,1),(1214,1),(1215,1),(1217,1),(1218,1),(1226,1), +(1228,1),(1229,1),(1230,1),(1231,1),(1232,1),(1233,1),(1234,1),(1235,1),(1237,1),(1238,1),(1239,1),(1240,1),(1241,1),(1242,1),(1243,1),(1244,1),(1245,1),(1246,1),(1247,1),(1249,1),(1250,1),(1252,1), +(1254,1),(1255,1),(1256,1),(1257,1),(1261,1),(1265,1),(1266,1),(1267,1),(1268,1),(1269,1),(1273,1),(1274,1),(1275,1),(1276,1),(1277,1),(1278,1),(1279,1),(1280,1),(1281,1),(1282,1),(1283,1),(1284,1), +(1285,1),(1286,1),(1287,1),(1288,1),(1289,1),(1290,1),(1291,1),(1292,1),(1293,1),(1294,1),(1295,1),(1296,1),(1297,1),(1298,1),(1299,1),(1300,1),(1301,1),(1302,1),(1303,1),(1304,1),(1305,1),(1306,1), +(1307,1),(1308,1),(1309,1),(1310,1),(1311,1),(1312,1),(1313,1),(1314,1),(1315,1),(1316,1),(1317,1),(1318,1),(1319,1),(1320,1),(1321,1),(1322,1),(1323,1),(1324,1),(1325,1),(1326,1),(1327,1),(1328,1), +(1329,1),(1330,1),(1331,1),(1332,1),(1333,1),(1334,1),(1335,1),(1336,1),(1337,1),(1338,1),(1339,1),(1340,1),(1341,1),(1342,1),(1343,1),(1344,1),(1345,1),(1346,1),(1347,1),(1348,1),(1349,1),(1350,1), +(1351,1),(1354,1),(1355,1),(1356,1),(1358,1),(1360,1),(1362,1),(1365,1),(1373,1),(1374,1),(1375,1),(1376,1),(1377,1),(1378,1),(1379,1),(1381,1),(1382,1),(1383,1),(1384,1),(1385,1),(1386,1),(1387,1), +(1395,1),(1402,1),(1403,1),(1404,1),(1405,1),(1406,1),(1407,1),(1408,1),(1409,1),(1413,1),(1414,1),(1415,1),(1416,1),(1421,1),(1422,1),(1423,1),(1427,1),(1428,1),(1430,1),(1431,1),(1432,1),(1434,1), +(1435,1),(1436,1),(1437,1),(1439,1),(1440,1),(1441,1),(1442,1),(1443,1),(1444,1),(1448,1),(1450,1),(1451,1),(1452,1),(1453,1),(1454,1),(1456,1),(1457,1),(1458,1),(1459,1),(1460,1),(1461,1),(1462,1), +(1463,1),(1464,1),(1465,1),(1466,1),(1467,1),(1469,1),(1470,1),(1471,1),(1472,1),(1473,1),(1474,1),(1475,1),(1476,1),(1477,1),(1478,1),(1479,1),(1480,1),(1481,1),(1482,1),(1483,1),(1484,1),(1485,1), +(1495,1),(1496,1),(1497,1),(1498,1),(1499,1),(1500,1),(1515,1),(1518,1),(1519,1),(1521,1),(1546,1),(1560,1),(1567,1),(1568,1),(1569,1),(1570,1),(1571,1),(1572,1),(1573,1),(1632,1),(1642,1),(1644,1), +(1645,1),(1646,1),(1649,1),(1650,1),(1651,1),(1652,1),(1661,1),(1668,1),(1670,1),(1671,1),(1676,1),(1677,1),(1678,1),(1679,1),(1680,1),(1681,1),(1682,1),(1683,1),(1684,1),(1685,1),(1686,1),(1687,1), +(1690,1),(1691,1),(1692,1),(1694,1),(1695,1),(1697,1),(1698,1),(1699,1),(1700,1),(1701,1),(1702,1),(1703,1),(1719,1),(1721,1),(1733,1),(1735,1),(1736,1),(1737,1),(1738,1),(1739,1),(1740,1),(1741,1), +(1742,1),(1743,1),(1744,1),(1745,1),(1746,1),(1748,1),(1749,1),(1750,1),(1751,1),(1752,1),(1754,1),(1756,1),(1775,1),(1777,1),(1854,1),(1872,1),(1879,1),(1901,1),(1937,1),(1938,1),(1949,1),(1950,1), +(1951,1),(1952,1),(1959,1),(1960,1),(1963,1),(1975,1),(1976,1),(1977,1),(1978,1),(1992,1),(2041,1),(2046,1),(2050,1),(2055,1),(2057,1),(2058,1),(2077,1),(2078,1),(2079,1),(2080,1),(2081,1),(2082,1), +(2083,1),(2084,1),(2086,1),(2092,1),(2093,1),(2094,1),(2096,1),(2097,1),(2099,1),(2104,1),(2105,1),(2107,1),(2111,1),(2112,1),(2113,1),(2114,1),(2115,1),(2116,1),(2117,1),(2118,1),(2119,1),(2121,1), +(2122,1),(2123,1),(2124,1),(2126,1),(2127,1),(2128,1),(2129,1),(2130,1),(2131,1),(2132,1),(2133,1),(2134,1),(2135,1),(2136,1),(2137,1),(2140,1),(2142,1),(2151,1),(2153,1),(2198,1),(2209,1),(2210,1), +(2214,1),(2215,1),(2216,1),(2225,1),(2226,1),(2227,1),(2228,1),(2229,1),(2238,1),(2239,1),(2263,1),(2276,1),(2277,1),(2278,1),(2279,1),(2280,1),(2285,1),(2299,1),(2302,1),(2303,1),(2307,1),(2308,1), +(2309,1),(2310,1),(2311,1),(2314,1),(2315,1),(2316,1),(2326,1),(2327,1),(2329,1),(2330,1),(2352,1),(2357,1),(2361,1),(2362,1),(2363,1),(2364,1),(2365,1),(2366,1),(2367,1),(2378,1),(2379,1),(2380,1), +(2381,1),(2382,1),(2383,1),(2386,1),(2388,1),(2389,1),(2390,1),(2391,1),(2392,1),(2393,1),(2394,1),(2395,1),(2396,1),(2397,1),(2398,1),(2399,1),(2400,1),(2401,1),(2402,1),(2405,1),(2409,1),(2410,1), +(2418,1),(2419,1),(2424,1),(2425,1),(2429,1),(2430,1),(2432,1),(2436,1),(2437,1),(2438,1),(2439,1),(2455,1),(2456,1),(2457,1),(2458,1),(2459,1),(2460,1),(2461,1),(2464,1),(2465,1),(2466,1),(2468,1), +(2469,1),(2470,1),(2485,1),(2489,1),(2492,1),(2497,1),(2504,1),(2506,1),(2507,1),(2508,1),(2509,1),(2510,1),(2511,1),(2512,1),(2513,1),(2514,1),(2515,1),(2516,1),(2517,1),(2518,1),(2519,1),(2524,1), +(2525,1),(2526,1),(2527,1),(2528,1),(2608,1),(2621,1),(2668,1),(2669,1),(2679,1),(2682,1),(2695,1),(2696,1),(2697,1),(2698,1),(2700,1),(2702,1),(2703,1),(2704,1),(2705,1),(2706,1),(2708,1),(2709,1), +(2710,1),(2711,1),(2712,1),(2713,1),(2737,1),(2770,1),(2771,1),(2772,1),(2784,1),(2786,1),(2787,1),(2788,1),(2789,1),(2790,1),(2792,1),(2795,1),(2796,1),(2798,1),(2799,1),(2802,1),(2803,1),(2804,1), +(2805,1),(2806,1),(2808,1),(2809,1),(2810,1),(2812,1),(2814,1),(2816,1),(2818,1),(2819,1),(2820,1),(2821,1),(2833,1),(2835,1),(2851,1),(2855,1),(2856,1),(2857,1),(2858,1),(2859,1),(2860,1),(2861,1), +(2870,1),(2872,1),(2876,1),(2878,1),(2879,1),(2880,1),(2881,1),(2908,1),(2909,1),(2910,1),(2911,1),(2912,1),(2913,1),(2916,1),(2917,1),(2918,1),(2930,1),(2934,1),(2938,1),(2940,1),(2941,1),(2942,1), +(2947,1),(2948,1),(2980,1),(2981,1),(2982,1),(2984,1),(2985,1),(2986,1),(2987,1),(2988,1),(2991,1),(2993,1),(2995,1),(2996,1),(2997,1),(2998,1),(2999,1),(3001,1),(3002,1),(3003,1),(3004,1),(3005,1), +(3007,1),(3008,1),(3009,1),(3010,1),(3011,1),(3012,1),(3013,1),(3014,1),(3015,1),(3016,1),(3017,1),(3018,1),(3019,1),(3020,1),(3021,1),(3022,1),(3023,1),(3024,1),(3025,1),(3026,1),(3027,1),(3028,1), +(3029,1),(3030,1),(3031,1),(3032,1),(3033,1),(3034,1),(3036,1),(3037,1),(3038,1),(3039,1),(3040,1),(3041,1),(3042,1),(3043,1),(3044,1),(3045,1),(3046,1),(3047,1),(3048,1),(3049,1),(3050,1),(3052,1), +(3053,1),(3054,1),(3055,1),(3057,1),(3059,1),(3060,1),(3061,1),(3062,1),(3063,1),(3064,1),(3065,1),(3066,1),(3067,1),(3069,1),(3070,1),(3071,1),(3072,1),(3074,1),(3075,1),(3076,1),(3077,1),(3078,1), +(3079,1),(3080,1),(3081,1),(3082,1),(3083,1),(3084,1),(3085,1),(3086,1),(3087,1),(3088,1),(3089,1),(3090,1),(3091,1),(3092,1),(3093,1),(3095,1),(3097,1),(3133,1),(3135,1),(3136,1),(3137,1),(3138,1), +(3139,1),(3140,1),(3142,1),(3143,1),(3144,1),(3145,1),(3147,1),(3148,1),(3149,1),(3150,1),(3153,1),(3154,1),(3155,1),(3156,1),(3157,1),(3158,1),(3159,1),(3160,1),(3161,1),(3162,1),(3163,1),(3164,1), +(3165,1),(3166,1),(3167,1),(3168,1),(3169,1),(3170,1),(3171,1),(3172,1),(3173,1),(3174,1),(3175,1),(3176,1),(3177,1),(3178,1),(3179,1),(3181,1),(3182,1),(3184,1),(3185,1),(3186,1),(3187,1),(3188,1), +(3189,1),(3190,1),(3191,1),(3193,1),(3194,1),(3208,1),(3210,1),(3211,1),(3212,1),(3213,1),(3214,1),(3215,1),(3216,1),(3217,1),(3218,1),(3219,1),(3220,1),(3221,1),(3222,1),(3223,1),(3224,1),(3230,1), +(3233,1),(3287,1),(3290,1),(3291,1),(3292,1),(3294,1),(3296,1),(3297,1),(3298,1),(3299,1),(3304,1),(3305,1),(3306,1),(3310,1),(3312,1),(3313,1),(3314,1),(3315,1),(3316,1),(3317,1),(3319,1),(3321,1), +(3322,1),(3323,1),(3324,1),(3325,1),(3326,1),(3327,1),(3328,1),(3329,1),(3330,1),(3331,1),(3332,1),(3333,1),(3334,1),(3335,1),(3336,1),(3337,1),(3338,1),(3341,1),(3342,1),(3343,1),(3344,1),(3345,1), +(3346,1),(3347,1),(3348,1),(3349,1),(3350,1),(3351,1),(3352,1),(3353,1),(3354,1),(3355,1),(3356,1),(3357,1),(3358,1),(3359,1),(3360,1),(3361,1),(3362,1),(3363,1),(3364,1),(3365,1),(3366,1),(3367,1), +(3368,1),(3369,1),(3370,1),(3371,1),(3372,1),(3373,1),(3387,1),(3388,1),(3389,1),(3390,1),(3399,1),(3400,1),(3401,1),(3402,1),(3403,1),(3404,1),(3405,1),(3406,1),(3407,1),(3408,1),(3409,1),(3410,1), +(3411,1),(3418,1),(3419,1),(3420,1),(3421,1),(3428,1),(3429,1),(3430,1),(3431,1),(3432,1),(3433,1),(3440,1),(3441,1),(3443,1),(3447,1),(3448,1),(3449,1),(3454,1),(3455,1),(3464,1),(3468,1),(3469,1), +(3477,1),(3478,1),(3479,1),(3480,1),(3481,1),(3482,1),(3483,1),(3484,1),(3485,1),(3486,1),(3487,1),(3488,1),(3489,1),(3490,1),(3500,1),(3501,1),(3514,1),(3515,1),(3516,1),(3517,1),(3518,1),(3519,1), +(3520,1),(3521,1),(3522,1),(3523,1),(3525,1),(3539,1),(3540,1),(3541,1),(3542,1),(3543,1),(3544,1),(3545,1),(3546,1),(3547,1),(3548,1),(3549,1),(3550,1),(3551,1),(3552,1),(3553,1),(3554,1),(3555,1), +(3556,1),(3557,1),(3558,1),(3559,1),(3561,1),(3562,1),(3564,1),(3565,1),(3567,1),(3568,1),(3571,1),(3575,1),(3583,1),(3584,1),(3585,1),(3587,1),(3588,1),(3589,1),(3590,1),(3591,1),(3592,1),(3593,1), +(3594,1),(3595,1),(3596,1),(3597,1),(3598,1),(3599,1),(3600,1),(3601,1),(3602,1),(3603,1),(3604,1),(3605,1),(3606,1),(3607,1),(3608,1),(3609,1),(3610,1),(3611,1),(3612,1),(3613,1),(3614,1),(3615,1), +(3616,1),(3620,1),(3621,1),(3622,1),(3623,1),(3624,1),(3625,1),(3626,1),(3627,1),(3628,1),(3629,1),(3639,1),(3644,1),(3649,1),(3650,1),(3657,1),(3661,1),(3663,1),(3666,1),(3681,1),(3682,1),(3685,1), +(3688,1),(3689,1),(3690,1),(3691,1),(3692,1),(3693,1),(3694,1),(3695,1),(3699,1),(3700,1),(3701,1),(3702,1),(3703,1),(3704,1),(3705,1),(3706,1),(3707,1),(3708,1),(3779,1),(3836,1),(3838,1),(3841,1), +(3842,1),(3845,1),(3846,1),(3847,1),(3848,1),(3849,1),(3880,1),(3881,1),(3882,1),(3883,1),(3884,1),(3885,1),(3890,1),(3894,1),(3895,1),(3896,1),(3901,1),(3916,1),(3920,1),(3933,1),(3934,1),(3935,1), +(3936,1),(3937,1),(3948,1),(3951,1),(3952,1),(3953,1),(3954,1),(3955,1),(3956,1),(3957,1),(3958,1),(3959,1),(3960,1),(3961,1),(3962,1),(3963,1),(3964,1),(3965,1),(3966,1),(3967,1),(3969,1),(3970,1), +(3978,1),(3979,1),(3980,1),(3982,1),(3994,1),(3995,1),(3996,1),(4043,1),(4046,1),(4047,1),(4048,1),(4049,1),(4077,1),(4078,1),(4079,1),(4080,1),(4081,1),(4082,1),(4083,1),(4084,1),(4087,1),(4088,1), +(4089,1),(4090,1),(4091,1),(4092,1),(4138,1),(4146,1),(4149,1),(4153,1),(4155,1),(4156,1),(4157,1),(4159,1),(4160,1),(4161,1),(4163,1),(4164,1),(4165,1),(4167,1),(4168,1),(4169,1),(4170,1),(4171,1), +(4172,1),(4173,1),(4175,1),(4176,1),(4177,1),(4178,1),(4179,1),(4180,1),(4181,1),(4182,1),(4183,1),(4185,1),(4186,1),(4187,1),(4188,1),(4189,1),(4190,1),(4191,1),(4192,1),(4193,1),(4194,1),(4195,1), +(4197,1),(4198,1),(4200,1),(4203,1),(4204,1),(4205,1),(4206,1),(4207,1),(4208,1),(4209,1),(4210,1),(4211,1),(4212,1),(4213,1),(4214,1),(4215,1),(4216,1),(4217,1),(4218,1),(4219,1),(4220,1),(4221,1), +(4222,1),(4223,1),(4225,1),(4226,1),(4228,1),(4229,1),(4230,1),(4231,1),(4232,1),(4233,1),(4234,1),(4235,1),(4236,1),(4237,1),(4239,1),(4240,1),(4241,1),(4242,1),(4243,1),(4244,1),(4254,1),(4255,1), +(4256,1),(4257,1),(4258,1),(4259,1),(4262,1),(4265,1),(4266,1),(4267,1),(4305,1),(4307,1),(4309,1),(4310,1),(4311,1),(4312,1),(4314,1),(4317,1),(4319,1),(4320,1),(4321,1),(4407,1),(4423,1),(4444,1), +(4451,1),(4455,1),(4456,1),(4483,1),(4484,1),(4485,1),(4486,1),(4487,1),(4488,1),(4489,1),(4497,1),(4498,1),(4501,1),(4502,1),(4509,1),(4510,1),(4521,1),(4544,1),(4545,1),(4546,1),(4547,1),(4549,1), +(4550,1),(4551,1),(4552,1),(4553,1),(4554,1),(4555,1),(4556,1),(4557,1),(4558,1),(4559,1),(4560,1),(4561,1),(4562,1),(4563,1),(4564,1),(4565,1),(4566,1),(4567,1),(4568,1),(4569,1),(4570,1),(4571,1), +(4572,1),(4573,1),(4574,1),(4575,1),(4576,1),(4577,1),(4578,1),(4579,1),(4580,1),(4581,1),(4582,1),(4583,1),(4584,1),(4585,1),(4586,1),(4587,1),(4588,1),(4589,1),(4590,1),(4591,1),(4592,1),(4593,1), +(4594,1),(4595,1),(4596,1),(4597,1),(4598,1),(4599,1),(4600,1),(4601,1),(4602,1),(4603,1),(4604,1),(4605,1),(4606,1),(4607,1),(4608,1),(4609,1),(4610,1),(4611,1),(4612,1),(4613,1),(4614,1),(4615,1), +(4616,1),(4617,1),(4621,1),(4721,1),(4722,1),(4730,1),(4731,1),(4732,1),(4752,1),(4753,1),(4772,1),(4773,1),(4775,1),(4782,1),(4791,1),(4794,1),(4875,1),(4876,1),(4877,1),(4878,1),(4879,1),(4881,1), +(4882,1),(4883,1),(4884,1),(4885,1),(4886,1),(4888,1),(4889,1),(4890,1),(4891,1),(4892,1),(4893,1),(4894,1),(4895,1),(4896,1),(4897,1),(4898,1),(4899,1),(4900,1),(4902,1),(4921,1),(4922,1),(4923,1), +(4924,1),(4926,1),(4941,1),(4942,1),(4943,1),(4944,1),(4947,1),(4948,1),(4949,1),(4951,1),(4954,1),(4959,1),(4960,1),(4961,1),(4963,1),(4964,1),(4965,1),(4966,1),(4967,1),(4968,1),(4973,1),(4974,1), +(4976,1),(4979,1),(4981,1),(4983,1),(4984,1),(4995,1),(4996,1),(5042,1),(5047,1),(5049,1),(5050,1),(5051,1),(5052,1),(5054,1),(5081,1),(5082,1),(5083,1),(5084,1),(5087,1),(5090,1),(5091,1),(5092,1), +(5093,1),(5094,1),(5095,1),(5096,1),(5099,1),(5100,1),(5101,1),(5102,1),(5103,1),(5104,1),(5105,1),(5106,1),(5107,1),(5108,1),(5109,1),(5110,1),(5111,1),(5112,1),(5113,1),(5114,1),(5115,1),(5116,1), +(5117,1),(5118,1),(5119,1),(5120,1),(5121,1),(5122,1),(5123,1),(5124,1),(5125,1),(5126,1),(5127,1),(5128,1),(5129,1),(5130,1),(5131,1),(5132,1),(5133,1),(5134,1),(5135,1),(5137,1),(5138,1),(5139,1), +(5140,1),(5141,1),(5142,1),(5143,1),(5144,1),(5145,1),(5146,1),(5147,1),(5148,1),(5149,1),(5150,1),(5151,1),(5152,1),(5153,1),(5154,1),(5155,1),(5156,1),(5157,1),(5158,1),(5159,1),(5160,1),(5161,1), +(5162,1),(5163,1),(5164,1),(5165,1),(5166,1),(5167,1),(5169,1),(5170,1),(5171,1),(5172,1),(5173,1),(5174,1),(5175,1),(5177,1),(5178,1),(5188,1),(5189,1),(5190,1),(5191,1),(5192,1),(5193,1),(5199,1), +(5200,1),(5204,1),(5384,1),(5385,1),(5386,1),(5387,1),(5388,1),(5389,1),(5390,1),(5392,1),(5393,1),(5394,1),(5395,1),(5396,1),(5412,1),(5413,1),(5414,1),(5418,1),(5464,1),(5476,1),(5479,1),(5480,1), +(5482,1),(5483,1),(5484,1),(5489,1),(5491,1),(5492,1),(5493,1),(5494,1),(5495,1),(5496,1),(5497,1),(5498,1),(5499,1),(5500,1),(5501,1),(5502,1),(5503,1),(5504,1),(5505,1),(5506,1),(5507,1),(5508,1), +(5509,1),(5510,1),(5511,1),(5512,1),(5513,1),(5514,1),(5515,1),(5516,1),(5517,1),(5518,1),(5519,1),(5520,1),(5543,1),(5544,1),(5546,1),(5547,1),(5564,1),(5565,1),(5566,1),(5567,1),(5569,1),(5570,1), +(5591,1),(5592,1),(5593,1),(5595,1),(5597,1),(5599,1),(5603,1),(5605,1),(5606,1),(5609,1),(5610,1),(5611,1),(5612,1),(5613,1),(5614,1),(5620,1),(5624,1),(5635,1),(5636,1),(5637,1),(5638,1),(5639,1), +(5640,1),(5641,1),(5642,1),(5644,1),(5651,1),(5653,1),(5654,1),(5655,1),(5656,1),(5657,1),(5658,1),(5659,1),(5660,1),(5661,1),(5662,1),(5663,1),(5664,1),(5665,1),(5667,1),(5668,1),(5670,1),(5675,1), +(5679,1),(5688,1),(5690,1),(5693,1),(5694,1),(5695,1),(5696,1),(5698,1),(5699,1),(5700,1),(5701,1),(5702,1),(5703,1),(5704,1),(5705,1),(5706,1),(5707,1),(5724,1),(5725,1),(5731,1),(5732,1),(5733,1), +(5734,1),(5744,1),(5747,1),(5748,1),(5749,1),(5750,1),(5752,1),(5753,1),(5754,1),(5757,1),(5758,1),(5759,1),(5765,1),(5769,1),(5770,1),(5782,1),(5810,1),(5811,1),(5812,1),(5813,1),(5814,1),(5815,1), +(5816,1),(5817,1),(5819,1),(5820,1),(5821,1),(5870,1),(5871,1),(5875,1),(5878,1),(5880,1),(5882,1),(5883,1),(5884,1),(5885,1),(5886,1),(5887,1),(5888,1),(5892,1),(5899,1),(5900,1),(5904,1),(5905,1), +(5906,1),(5907,1),(5908,1),(5909,1),(5910,1),(5911,1),(5917,1),(5938,1),(5939,1),(5940,1),(5941,1),(5942,1),(5943,1),(5944,1),(5952,1),(5953,1),(5957,1),(5958,1),(5994,1),(6014,1),(6018,1),(6026,1), +(6027,1),(6028,1),(6030,1),(6031,1),(6034,1),(6046,1),(6086,1),(6087,1),(6089,1),(6090,1),(6091,1),(6094,1),(6114,1),(6119,1),(6120,1),(6121,1),(6122,1),(6142,1),(6166,1),(6169,1),(6171,1),(6172,1), +(6173,1),(6174,1),(6175,1),(6177,1),(6178,1),(6179,1),(6181,1),(6182,1),(6183,1),(6237,1),(6241,1),(6244,1),(6267,1),(6272,1),(6286,1),(6287,1),(6288,1),(6289,1),(6290,1),(6291,1),(6292,1),(6293,1), +(6294,1),(6295,1),(6297,1),(6298,1),(6299,1),(6300,1),(6301,1),(6306,1),(6328,1),(6367,1),(6373,1),(6374,1),(6376,1),(6382,1),(6387,1),(6389,1),(6393,1),(6394,1),(6395,1),(6408,1),(6410,1),(6411,1), +(6446,1),(6467,1),(6522,1),(6526,1),(6566,1),(6567,1),(6569,1),(6574,1),(6576,1),(6577,1),(6579,1),(6586,1),(6607,1),(6667,1),(6670,1),(6706,1),(6726,1),(6727,1),(6732,1),(6734,1),(6735,1),(6736,1), +(6737,1),(6738,1),(6739,1),(6740,1),(6741,1),(6746,1),(6747,1),(6749,1),(6774,1),(6775,1),(6776,1),(6778,1),(6780,1),(6781,1),(6784,1),(6785,1),(6786,1),(6787,1),(6790,1),(6806,1),(6826,1),(6868,1), +(6886,1),(6928,1),(6929,1),(6930,1),(6946,1),(6966,1),(6986,1),(6987,1),(7007,1),(7009,1),(7010,1),(7024,1),(7087,1),(7088,1),(7089,1),(7208,1),(7229,1),(7230,1),(7231,1),(7232,1),(7292,1),(7293,1), +(7294,1),(7295,1),(7296,1),(7297,1),(7298,1),(7311,1),(7312,1),(7313,1),(7315,1),(7316,1),(7317,1),(7410,1),(7427,1),(7485,1),(7488,1),(7489,1),(7583,1),(7623,1),(7643,1),(7663,1),(7683,1),(7714,1), +(7730,1),(7731,1),(7733,1),(7736,1),(7737,1),(7740,1),(7744,1),(7763,1),(7764,1),(7765,1),(7766,1),(7776,1),(7777,1),(7779,1),(7780,1),(7790,1),(7792,1),(7793,1),(7798,1),(7823,1),(7824,1),(7825,1), +(7843,1),(7852,1),(7854,1),(7865,1),(7866,1),(7867,1),(7868,1),(7869,1),(7870,1),(7871,1),(7875,1),(7877,1),(7878,1),(7879,1),(7880,1),(7884,1),(7900,1),(7903,1),(7904,1),(7906,1),(7907,1),(7916,1), +(7917,1),(7935,1),(7937,1),(7939,1),(7940,1),(7941,1),(7942,1),(7943,1),(7944,1),(7945,1),(7946,1),(7947,1),(7948,1),(7949,1),(7950,1),(7952,1),(7953,1),(7954,1),(7955,1),(7956,1),(7957,1),(7975,1), +(7976,1),(7978,1),(7980,1),(7999,1),(8015,1),(8016,1),(8017,1),(8018,1),(8019,1),(8020,1),(8021,1),(8022,1),(8026,1),(8055,1),(8096,1),(8115,1),(8117,1),(8118,1),(8140,1),(8141,1),(8142,1),(8143,1), +(8144,1),(8145,1),(8146,1),(8147,1),(8148,1),(8150,1),(8151,1),(8152,1),(8153,1),(8154,1),(8155,1),(8157,1),(8158,1),(8159,1),(8160,1),(8161,1),(8176,1),(8177,1),(8178,1),(8256,1),(8284,1),(8306,1), +(8307,1),(8310,1),(8356,1),(8357,1),(8358,1),(8359,1),(8360,1),(8361,1),(8362,1),(8363,1),(8364,1),(8383,1),(8385,1),(8390,1),(8392,1),(8393,1),(8396,1),(8397,1),(8398,1),(8401,1),(8403,1),(8404,1), +(8416,1),(8436,1),(8507,1),(8508,1),(8517,1),(8576,1),(8582,1),(8583,1),(8584,1),(8586,1),(8587,1),(8609,1),(8610,1),(8659,1),(8664,1),(8665,1),(8669,1),(8670,1),(8671,1),(8672,1),(8674,1),(8681,1), +(8719,1),(8720,1),(8721,1),(8722,1),(8723,1),(8777,1),(8856,1),(8878,1),(8879,1),(8931,1),(8934,1),(8997,1),(9047,1),(9076,1),(9077,1),(9078,1),(9079,1),(9080,1),(9081,1),(9082,1),(9083,1),(9084,1), +(9085,1),(9086,1),(9087,1),(9099,1),(9177,1),(9238,1),(9296,1),(9297,1),(9356,1),(9457,1),(9458,1),(9465,1),(9501,1),(9521,1),(9525,1),(9526,1),(9527,1),(9539,1),(9540,1),(9548,1),(9549,1),(9550,1), +(9551,1),(9552,1),(9553,1),(9555,1),(9560,1),(9561,1),(9562,1),(9564,1),(9565,1),(9566,1),(9576,1),(9578,1),(9579,1),(9580,1),(9581,1),(9582,1),(9584,1),(9598,1),(9599,1),(9616,1),(9617,1),(9620,1), +(9636,1),(9660,1),(9796,1),(9820,1),(9857,1),(9858,1),(9859,1),(9976,1),(9977,1),(9978,1),(9979,1),(9980,1),(9981,1),(9982,1),(9983,1),(9984,1),(9985,1),(9986,1),(9987,1),(9988,1),(9989,1),(9990,1), +(9996,1),(10037,1),(10038,1),(10045,1),(10046,1),(10047,1),(10048,1),(10049,1),(10050,1),(10051,1),(10052,1),(10053,1),(10054,1),(10055,1),(10056,1),(10057,1),(10058,1),(10059,1),(10061,1), +(10062,1),(10079,1),(10085,1),(10086,1),(10088,1),(10089,1),(10090,1),(10118,1),(10136,1),(10176,1),(10181,1),(10182,1),(10204,1),(10216,1),(10219,1),(10266,1),(10276,1),(10277,1),(10278,1), +(10291,1),(10292,1),(10293,1),(10294,1),(10295,1),(10297,1),(10298,1),(10301,1),(10303,1),(10306,1),(10307,1),(10360,1),(10361,1),(10362,1),(10364,1),(10365,1),(10367,1),(10368,1),(10369,1), +(10370,1),(10377,1),(10378,1),(10379,1),(10380,1),(10427,1),(10428,1),(10443,1),(10444,1),(10446,1),(10448,1),(10449,1),(10450,1),(10451,1),(10452,1),(10453,1),(10454,1),(10455,1),(10456,1), +(10460,1),(10537,1),(10539,1),(10540,1),(10578,1),(10582,1),(10583,1),(10599,1),(10600,1),(10604,1),(10606,1),(10610,1),(10611,1),(10612,1),(10616,1),(10618,1),(10619,1),(10636,1),(10638,1), +(10645,1),(10646,1),(10665,1),(10666,1),(10676,1),(10682,1),(10684,1),(10696,1),(10719,1),(10721,1),(10781,1),(10782,1),(10803,1),(10804,1),(10805,1),(10837,1),(10838,1),(10878,1),(10879,1), +(10880,1),(10881,1),(10897,1),(10919,1),(10930,1),(10978,1),(11022,1),(11023,1),(11025,1),(11026,1),(11028,1),(11029,1),(11031,1),(11037,1),(11040,1),(11041,1),(11042,1),(11044,1),(11045,1), +(11046,1),(11047,1),(11048,1),(11049,1),(11050,1),(11051,1),(11052,1),(11053,1),(11055,1),(11056,1),(11057,1),(11065,1),(11066,1),(11067,1),(11068,1),(11069,1),(11070,1),(11071,1),(11072,1), +(11074,1),(11079,1),(11081,1),(11083,1),(11084,1),(11096,1),(11097,1),(11098,1),(11103,1),(11104,1),(11105,1),(11106,1),(11116,1),(11117,1),(11118,1),(11137,1),(11138,1),(11139,1),(11145,1), +(11146,1),(11176,1),(11177,1),(11178,1),(11180,1),(11181,1),(11191,1),(11192,1),(11193,1),(11196,1),(11198,1),(11218,1),(11219,1),(11259,1),(11276,1),(11317,1),(11328,1),(11392,1),(11393,1), +(11394,1),(11395,1),(11396,1),(11397,1),(11398,1),(11399,1),(11400,1),(11401,1),(11402,1),(11403,1),(11404,1),(11405,1),(11406,1),(11407,1),(11408,1),(11409,1),(11410,1),(11411,1),(11412,1), +(11413,1),(11414,1),(11415,1),(11416,1),(11549,1),(11550,1),(11608,1),(11609,1),(11615,1),(11616,1),(11624,1),(11696,1),(11699,1),(11700,1),(11701,1),(11702,1),(11703,1),(11708,1),(11709,1), +(11712,1),(11715,1),(11716,1),(11717,1),(11718,1),(11719,1),(11720,1),(11748,1),(11749,1),(11750,1),(11751,1),(11752,1),(11795,1),(11797,1),(11799,1),(11800,1),(11801,1),(11802,1),(11806,1), +(11807,1),(11808,1),(11809,1),(11814,1),(11815,1),(11816,1),(11817,1),(11818,1),(11819,1),(11820,1),(11821,1),(11822,1),(11823,1),(11824,1),(11825,1),(11826,1),(11827,1),(11828,1),(11829,1), +(11833,1),(11835,1),(11856,1),(11857,1),(11860,1),(11861,1),(11862,1),(11863,1),(11864,1),(11865,1),(11866,1),(11867,1),(11868,1),(11869,1),(11870,1),(11877,1),(11878,1),(11885,1),(11899,1), +(11900,1),(11901,1),(11916,1),(11919,1),(11946,1),(11947,1),(11948,1),(11949,1),(11979,1),(11994,1),(11997,1),(11998,1),(12019,1),(12020,1),(12021,1),(12022,1),(12023,1),(12024,1),(12025,1), +(12026,1),(12027,1),(12028,1),(12029,1),(12030,1),(12031,1),(12032,1),(12033,1),(12035,1),(12036,1),(12038,1),(12039,1),(12040,1),(12042,1),(12043,1),(12044,1),(12045,1),(12047,1),(12048,1), +(12050,1),(12051,1),(12052,1),(12053,1),(12096,1),(12097,1),(12121,1),(12122,1),(12127,1),(12136,1),(12137,1),(12160,1),(12196,1),(12197,1),(12198,1),(12336,1),(12338,1),(12340,1),(12384,1), +(12423,1),(12425,1),(12427,1),(12428,1),(12429,1),(12430,1),(12480,1),(12481,1),(12576,1),(12577,1),(12578,1),(12580,1),(12596,1),(12616,1),(12617,1),(12636,1),(12656,1),(12657,1),(12658,1), +(12696,1),(12716,1),(12717,1),(12718,1),(12719,1),(12720,1),(12721,1),(12722,1),(12723,1),(12724,1),(12736,1),(12737,1),(12740,1),(12756,1),(12757,1),(12777,1),(12778,1),(12779,1),(12780,1), +(12781,1),(12782,1),(12783,1),(12784,1),(12785,1),(12786,1),(12787,1),(12788,1),(12789,1),(12790,1),(12791,1),(12792,1),(12793,1),(12794,1),(12795,1),(12796,1),(12797,1),(12798,1),(12799,1), +(12805,1),(12807,1),(12816,1),(12818,1),(12836,1),(12837,1),(12858,1),(12861,1),(12862,1),(12863,1),(12864,1),(12867,1),(12877,1),(12903,1),(12920,1),(12923,1),(12924,1),(12925,1),(12936,1), +(12937,1),(12938,1),(12939,1),(12960,1),(12961,1),(12962,1),(12996,1),(12997,1),(12998,1),(13000,1),(13018,1),(13076,1),(13078,1),(13079,1),(13080,1),(13084,1),(13086,1),(13087,1),(13088,1), +(13089,1),(13096,1),(13097,1),(13098,1),(13099,1),(13116,1),(13117,1),(13137,1),(13138,1),(13139,1),(13140,1),(13143,1),(13144,1),(13145,1),(13146,1),(13147,1),(13152,1),(13153,1),(13154,1), +(13155,1),(13161,1),(13176,1),(13177,1),(13178,1),(13179,1),(13180,1),(13181,1),(13216,1),(13217,1),(13218,1),(13219,1),(13221,1),(13236,1),(13256,1),(13257,1),(13283,1),(13284,1),(13296,1), +(13297,1),(13298,1),(13299,1),(13300,1),(13316,1),(13318,1),(13319,1),(13320,1),(13324,1),(13325,1),(13326,1),(13327,1),(13328,1),(13329,1),(13330,1),(13331,1),(13332,1),(13333,1),(13334,1), +(13335,1),(13336,1),(13337,1),(13356,1),(13357,1),(13358,1),(13359,1),(13397,1),(13417,1),(13418,1),(13419,1),(13420,1),(13421,1),(13422,1),(13424,1),(13425,1),(13426,1),(13427,1),(13428,1), +(13429,1),(13430,1),(13431,1),(13432,1),(13433,1),(13434,1),(13435,1),(13436,1),(13437,1),(13438,1),(13439,1),(13440,1),(13441,1),(13442,1),(13443,1),(13446,1),(13447,1),(13448,1),(13449,1), +(13476,1),(13516,1),(13517,1),(13518,1),(13519,1),(13520,1),(13521,1),(13522,1),(13523,1),(13524,1),(13525,1),(13526,1),(13527,1),(13528,1),(13529,1),(13530,1),(13531,1),(13534,1),(13535,1), +(13536,1),(13537,1),(13538,1),(13539,1),(13540,1),(13541,1),(13542,1),(13543,1),(13544,1),(13545,1),(13546,1),(13547,1),(13548,1),(13549,1),(13550,1),(13551,1),(13552,1),(13553,1),(13554,1), +(13555,1),(13556,1),(13557,1),(13576,1),(13577,1),(13597,1),(13598,1),(13616,1),(13617,1),(13618,1),(13656,1),(13676,1),(13698,1),(13699,1),(13776,1),(13777,1),(13797,1),(13798,1),(13816,1), +(13817,1),(13839,1),(13840,1),(13841,1),(13842,1),(13843,1),(14041,1),(14121,1),(14141,1),(14142,1),(14182,1),(14185,1),(14186,1),(14187,1),(14188,1),(14201,1),(14242,1),(14282,1),(14283,1), +(14284,1),(14285,1),(14301,1),(14304,1),(14363,1),(14365,1),(14367,1),(14373,1),(14374,1),(14375,1),(14376,1),(14377,1),(14378,1),(14379,1),(14380,1),(14392,1),(14394,1),(14402,1),(14403,1), +(14404,1),(14423,1),(14438,1),(14439,1),(14440,1),(14441,1),(14442,1),(14484,1),(14485,1),(14493,1),(14494,1),(14497,1),(14498,1),(14581,1),(14622,1),(14643,1),(14644,1),(14715,1),(14717,1), +(14718,1),(14720,1),(14721,1),(14730,1),(14731,1),(14733,1),(14734,1),(14736,1),(14737,1),(14738,1),(14739,1),(14740,1),(14741,1),(14746,1),(14753,1),(14754,1),(14757,1),(14762,1),(14763,1), +(14764,1),(14765,1),(14766,1),(14767,1),(14768,1),(14769,1),(14770,1),(14771,1),(14772,1),(14773,1),(14774,1),(14775,1),(14776,1),(14777,1),(14781,1),(14848,1),(14859,1),(14893,1),(14901,1), +(14909,1),(14913,1),(14942,1),(14943,1),(14944,1),(14945,1),(14946,1),(14947,1),(14948,1),(14961,1),(14962,1),(14963,1),(14964,1),(14981,1),(14982,1),(14983,1),(14984,1),(14990,1),(15006,1), +(15007,1),(15008,1),(15011,1),(15012,1),(15021,1),(15022,1),(15102,1),(15103,1),(15105,1),(15106,1),(15124,1),(15125,1),(15126,1),(15127,1),(15128,1),(15130,1),(15131,1),(15136,1),(15137,1), +(15138,1),(15139,1),(15177,1),(15178,1),(15193,1),(15195,1),(15197,1),(15199,1),(15270,1),(15278,1),(15279,1),(15280,1),(15281,1),(15283,1),(15284,1),(15285,1),(15287,1),(15289,1),(15291,1), +(15292,1),(15295,1),(15296,1),(15297,1),(15301,1),(15315,1),(15350,1),(15351,1),(15371,1),(15383,1),(15398,1),(15399,1),(15400,1),(15401,1),(15402,1),(15403,1),(15404,1),(15405,1),(15406,1), +(15416,1),(15417,1),(15418,1),(15419,1),(15431,1),(15432,1),(15433,1),(15434,1),(15437,1),(15440,1),(15441,1),(15442,1),(15443,1),(15444,1),(15445,1),(15446,1),(15448,1),(15450,1),(15451,1), +(15452,1),(15453,1),(15455,1),(15456,1),(15457,1),(15458,1),(15459,1),(15460,1),(15469,1),(15471,1),(15473,1),(15477,1),(15494,1),(15501,1),(15508,1),(15512,1),(15513,1),(15515,1),(15518,1), +(15519,1),(15522,1),(15525,1),(15528,1),(15529,1),(15532,1),(15533,1),(15534,1),(15535,1),(15539,1),(15612,1),(15613,1),(15615,1),(15616,1),(15617,1),(15618,1),(15619,1),(15633,1),(15634,1), +(15659,1),(15660,1),(15663,1),(15672,1),(15675,1),(15676,1),(15677,1),(15678,1),(15679,1),(15680,1),(15681,1),(15682,1),(15683,1),(15684,1),(15686,1),(15694,1),(15696,1),(15700,1),(15701,1), +(15702,1),(15703,1),(15704,1),(15707,1),(15708,1),(15709,1),(15719,1),(15723,1),(15731,1),(15732,1),(15733,1),(15734,1),(15735,1),(15736,1),(15737,1),(15738,1),(15739,1),(15745,1),(15746,1), +(15760,1),(15761,1),(15762,1),(15763,1),(15764,1),(15765,1),(15766,1),(15767,1),(15768,1),(15780,1),(15781,1),(15782,1),(15783,1),(15784,1),(15785,1),(15786,1),(15787,1),(15788,1),(15789,1), +(15790,1),(15791,1),(15792,1),(15793,1),(15794,1),(15795,1),(15852,1),(15853,1),(15854,1),(15855,1),(15856,1),(15857,1),(15858,1),(15859,1),(15860,1),(15861,1),(15862,1),(15863,1),(15866,1), +(15868,1),(15869,1),(15870,1),(15903,1),(15905,1),(15906,1),(15907,1),(15908,1),(15920,1),(15921,1),(15924,1),(15938,1),(15939,1),(15940,1),(15941,1),(15942,1),(15945,1),(15946,1),(15947,1), +(15970,1),(15971,1),(15982,1),(15983,1),(15991,1),(16001,1),(16002,1),(16003,1),(16004,1),(16005,1),(16007,1),(16008,1),(16009,1),(16012,1),(16013,1),(16014,1),(16016,1),(16019,1),(16023,1), +(16031,1),(16032,1),(16033,1),(16091,1),(16094,1),(16096,1),(16105,1),(16106,1),(16107,1),(16108,1),(16109,1),(16110,1),(16112,1),(16113,1),(16114,1),(16115,1),(16116,1),(16123,1),(16131,1), +(16132,1),(16133,1),(16134,1),(16135,1),(16144,1),(16147,1),(16160,1),(16161,1),(16185,1),(16186,1),(16187,1),(16189,1),(16191,1),(16192,1),(16197,1),(16213,1),(16217,1),(16220,1),(16221,1), +(16222,1),(16224,1),(16227,1),(16231,1),(16237,1),(16241,1),(16242,1),(16251,1),(16252,1),(16253,1),(16256,1),(16257,1),(16258,1),(16259,1),(16260,1),(16261,1),(16262,1),(16263,1),(16264,1), +(16265,1),(16266,1),(16267,1),(16268,1),(16269,1),(16270,1),(16271,1),(16272,1),(16273,1),(16274,1),(16275,1),(16276,1),(16277,1),(16278,1),(16279,1),(16280,1),(16283,1),(16285,1),(16287,1), +(16288,1),(16289,1),(16291,1),(16293,1),(16295,1),(16362,1),(16366,1),(16367,1),(16371,1),(16376,1),(16381,1),(16396,1),(16397,1),(16432,1),(16442,1),(16443,1),(16444,1),(16458,1),(16462,1), +(16463,1),(16464,1),(16475,1),(16476,1),(16477,1),(16483,1),(16499,1),(16500,1),(16501,1),(16502,1),(16503,1),(16514,1),(16535,1),(16541,1),(16542,1),(16546,1),(16551,1),(16553,1),(16554,1), +(16568,1),(16574,1),(16575,1),(16576,1),(16577,1),(16578,1),(16579,1),(16580,1),(16582,1),(16583,1),(16584,1),(16585,1),(16586,1),(16587,1),(16588,1),(16589,1),(16590,1),(16591,1),(16599,1), +(16602,1),(16603,1),(16610,1),(16611,1),(16612,1),(16613,1),(16614,1),(16615,1),(16616,1),(16617,1),(16618,1),(16619,1),(16620,1),(16621,1),(16622,1),(16623,1),(16624,1),(16625,1),(16626,1), +(16627,1),(16628,1),(16629,1),(16630,1),(16631,1),(16632,1),(16633,1),(16634,1),(16635,1),(16636,1),(16637,1),(16638,1),(16639,1),(16640,1),(16641,1),(16642,1),(16643,1),(16644,1),(16645,1), +(16646,1),(16647,1),(16648,1),(16649,1),(16650,1),(16651,1),(16652,1),(16653,1),(16654,1),(16655,1),(16656,1),(16657,1),(16658,1),(16659,1),(16660,1),(16661,1),(16662,1),(16663,1),(16664,1), +(16665,1),(16666,1),(16667,1),(16668,1),(16669,1),(16670,1),(16671,1),(16672,1),(16673,1),(16674,1),(16675,1),(16676,1),(16677,1),(16678,1),(16679,1),(16680,1),(16681,1),(16682,1),(16683,1), +(16684,1),(16685,1),(16686,1),(16687,1),(16688,1),(16689,1),(16690,1),(16691,1),(16692,1),(16693,1),(16694,1),(16695,1),(16696,1),(16702,1),(16703,1),(16705,1),(16706,1),(16707,1),(16708,1), +(16709,1),(16710,1),(16711,1),(16712,1),(16713,1),(16714,1),(16715,1),(16716,1),(16717,1),(16718,1),(16719,1),(16720,1),(16721,1),(16722,1),(16723,1),(16724,1),(16725,1),(16726,1),(16727,1), +(16728,1),(16729,1),(16730,1),(16731,1),(16732,1),(16733,1),(16734,1),(16735,1),(16736,1),(16737,1),(16738,1),(16739,1),(16740,1),(16741,1),(16742,1),(16743,1),(16744,1),(16745,1),(16746,1), +(16747,1),(16748,1),(16749,1),(16750,1),(16751,1),(16752,1),(16753,1),(16754,1),(16755,1),(16756,1),(16757,1),(16758,1),(16759,1),(16761,1),(16762,1),(16763,1),(16764,1),(16765,1),(16766,1), +(16767,1),(16768,1),(16770,1),(16771,1),(16773,1),(16774,1),(16780,1),(16781,1),(16782,1),(16786,1),(16789,1),(16790,1),(16791,1),(16792,1),(16793,1),(16794,1),(16795,1),(16796,1),(16797,1), +(16798,1),(16799,1),(16800,1),(16801,1),(16802,1),(16819,1),(16820,1),(16821,1),(16822,1),(16823,1),(16824,1),(16825,1),(16826,1),(16827,1),(16828,1),(16829,1),(16830,1),(16831,1),(16832,1), +(16833,1),(16834,1),(16835,1),(16836,1),(16837,1),(16838,1),(16839,1),(16840,1),(16841,1),(16842,1),(16843,1),(16849,1),(16850,1),(16851,1),(16852,1),(16853,1),(16856,1),(16858,1),(16860,1), +(16862,1),(16864,1),(16866,1),(16885,1),(16886,1),(16888,1),(16896,1),(16915,1),(16917,1),(16918,1),(16919,1),(16920,1),(16921,1),(16923,1),(16924,1),(16991,1),(16993,1),(17002,1),(17004,1), +(17005,1),(17006,1),(17015,1),(17029,1),(17046,1),(17052,1),(17056,1),(17062,1),(17068,1),(17070,1),(17071,1),(17076,1),(17079,1),(17080,1),(17089,1),(17091,1),(17092,1),(17093,1),(17094,1), +(17095,1),(17097,1),(17098,1),(17099,1),(17100,1),(17101,1),(17103,1),(17104,1),(17105,1),(17106,1),(17109,1),(17110,1),(17114,1),(17116,1),(17117,1),(17119,1),(17120,1),(17121,1),(17122,1), +(17127,1),(17162,1),(17204,1),(17209,1),(17212,1),(17214,1),(17215,1),(17218,1),(17219,1),(17222,1),(17223,1),(17226,1),(17227,1),(17228,1),(17232,1),(17238,1),(17240,1),(17241,1),(17242,1), +(17243,1),(17244,1),(17245,1),(17246,1),(17247,1),(17263,1),(17277,1),(17282,1),(17285,1),(17288,1),(17289,1),(17290,1),(17291,1),(17292,1),(17294,1),(17295,1),(17296,1),(17297,1),(17303,1), +(17310,1),(17311,1),(17312,1),(17355,1),(17375,1),(17379,1),(17382,1),(17383,1),(17384,1),(17390,1),(17391,1),(17392,1),(17393,1),(17394,1),(17402,1),(17403,1),(17406,1),(17409,1),(17410,1), +(17412,1),(17421,1),(17422,1),(17423,1),(17424,1),(17425,1),(17426,1),(17431,1),(17432,1),(17433,1),(17434,1),(17437,1),(17439,1),(17440,1),(17441,1),(17442,1),(17443,1),(17444,1),(17445,1), +(17446,1),(17449,1),(17450,1),(17468,1),(17479,1),(17480,1),(17482,1),(17483,1),(17484,1),(17485,1),(17486,1),(17487,1),(17488,1),(17489,1),(17490,1),(17493,1),(17495,1),(17499,1),(17500,1), +(17504,1),(17505,1),(17506,1),(17507,1),(17508,1),(17509,1),(17510,1),(17511,1),(17512,1),(17513,1),(17514,1),(17519,1),(17520,1),(17531,1),(17542,1),(17549,1),(17551,1),(17553,1),(17554,1), +(17555,1),(17557,1),(17558,1),(17584,1),(17586,1),(17587,1),(17593,1),(17594,1),(17597,1),(17598,1),(17599,1),(17600,1),(17601,1),(17614,1),(17627,1),(17628,1),(17629,1),(17630,1),(17631,1), +(17632,1),(17633,1),(17634,1),(17635,1),(17637,1),(17642,1),(17647,1),(17649,1),(17655,1),(17656,1),(17657,1),(17666,1),(17667,1),(17676,1),(17681,1),(17682,1),(17684,1),(17686,1),(17703,1), +(17712,1),(17717,1),(17718,1),(17765,1),(17766,1),(17768,1),(17769,1),(17773,1),(17804,1),(17825,1),(17831,1),(17832,1),(17834,1),(17843,1),(17844,1),(17845,1),(17849,1),(17853,1),(17855,1), +(17866,1),(17874,1),(17875,1),(17876,1),(17884,1),(17885,1),(17890,1),(17900,1),(17901,1),(17926,1),(17927,1),(17953,1),(17983,1),(17986,1),(17995,1),(17996,1),(18003,1),(18004,1),(18005,1), +(18006,1),(18007,1),(18008,1),(18009,1),(18010,1),(18011,1),(18012,1),(18013,1),(18014,1),(18015,1),(18016,1),(18017,1),(18018,1),(18019,1),(18020,1),(18021,1),(18022,1),(18023,1),(18024,1), +(18025,1),(18026,1),(18027,1),(18028,1),(18029,1),(18030,1),(18031,1),(18032,1),(18034,1),(18038,1),(18063,1),(18066,1),(18067,1),(18068,1),(18090,1),(18091,1),(18097,1),(18098,1),(18103,1), +(18106,1),(18126,1),(18139,1),(18141,1),(18146,1),(18147,1),(18169,1),(18174,1),(18175,1),(18183,1),(18192,1),(18194,1),(18221,1),(18222,1),(18223,1),(18224,1),(18229,1),(18243,1),(18245,1), +(18246,1),(18247,1),(18248,1),(18249,1),(18250,1),(18251,1),(18252,1),(18256,1),(18270,1),(18273,1),(18277,1),(18292,1),(18293,1),(18295,1),(18300,1),(18301,1),(18302,1),(18347,1),(18348,1), +(18349,1),(18350,1),(18353,1),(18369,1),(18383,1),(18384,1),(18385,1),(18386,1),(18387,1),(18389,1),(18390,1),(18407,1),(18408,1),(18414,1),(18415,1),(18416,1),(18426,1),(18427,1),(18428,1), +(18443,1),(18445,1),(18447,1),(18459,1),(18488,1),(18489,1),(18507,1),(18542,1),(18565,1),(18566,1),(18666,1),(18672,1),(18675,1),(18676,1),(18687,1),(18704,1),(18705,1),(18712,1),(18713,1), +(18714,1),(18715,1),(18727,1),(18745,1),(18747,1),(18748,1),(18749,1),(18751,1),(18753,1),(18754,1),(18755,1),(18758,1),(18761,1),(18769,1),(18771,1),(18772,1),(18773,1),(18774,1),(18776,1), +(18777,1),(18779,1),(18781,1),(18783,1),(18785,1),(18788,1),(18789,1),(18790,1),(18791,1),(18792,1),(18800,1),(18802,1),(18803,1),(18804,1),(18807,1),(18808,1),(18809,1),(18810,1),(18811,1), +(18812,1),(18813,1),(18815,1),(18816,1),(18817,1),(18819,1),(18820,1),(18821,1),(18822,1),(18844,1),(18892,1),(18899,1),(18900,1),(18901,1),(18902,1),(18903,1),(18905,1),(18906,1),(18907,1), +(18908,1),(18909,1),(18910,1),(18913,1),(18914,1),(18915,1),(18916,1),(18917,1),(18918,1),(18919,1),(18921,1),(18922,1),(18924,1),(18926,1),(18927,1),(18929,1),(18937,1),(18938,1),(18939,1), +(18942,1),(18943,1),(18947,1),(18951,1),(18953,1),(18954,1),(18957,1),(18959,1),(18960,1),(18962,1),(18971,1),(18973,1),(18985,1),(18987,1),(18988,1),(18989,1),(18990,1),(18991,1),(18993,1), +(18997,1),(18998,1),(18999,1),(19000,1),(19001,1),(19002,1),(19003,1),(19004,1),(19011,1),(19012,1),(19013,1),(19014,1),(19015,1),(19017,1),(19018,1),(19019,1),(19020,1),(19021,1),(19022,1), +(19023,1),(19024,1),(19025,1),(19026,1),(19027,1),(19030,1),(19031,1),(19038,1),(19042,1),(19048,1),(19053,1),(19054,1),(19056,1),(19068,1),(19071,1),(19133,1),(19137,1),(19138,1),(19140,1), +(19141,1),(19147,1),(19148,1),(19149,1),(19151,1),(19152,1),(19156,1),(19157,1),(19158,1),(19159,1),(19169,1),(19171,1),(19172,1),(19173,1),(19175,1),(19176,1),(19177,1),(19178,1),(19181,1), +(19185,1),(19227,1),(19241,1),(19254,1),(19255,1),(19256,1),(19257,1),(19258,1),(19265,1),(19273,1),(19274,1),(19293,1),(19294,1),(19296,1),(19308,1),(19309,1),(19310,1),(19314,1),(19315,1), +(19316,1),(19317,1),(19319,1),(19324,1),(19332,1),(19333,1),(19339,1),(19341,1),(19342,1),(19343,1),(19344,1),(19345,1),(19347,1),(19348,1),(19351,1),(19352,1),(19353,1),(19355,1),(19362,1), +(19363,1),(19364,1),(19368,1),(19369,1),(19370,1),(19371,1),(19372,1),(19373,1),(19374,1),(19375,1),(19380,1),(19383,1),(19384,1),(19392,1),(19394,1),(19401,1),(19409,1),(19449,1),(19450,1), +(19454,1),(19470,1),(19471,1),(19472,1),(19473,1),(19474,1),(19476,1),(19478,1),(19479,1),(19495,1),(19497,1),(19498,1),(19499,1),(19500,1),(19504,1),(19529,1),(19531,1),(19533,1),(19534,1), +(19535,1),(19536,1),(19537,1),(19538,1),(19539,1),(19540,1),(19541,1),(19556,1),(19558,1),(19559,1),(19560,1),(19561,1),(19562,1),(19567,1),(19571,1),(19581,1),(19583,1),(19591,1),(19592,1), +(19594,1),(19596,1),(19597,1),(19601,1),(19602,1),(19603,1),(19604,1),(19605,1),(19606,1),(19613,1),(19614,1),(19647,1),(19669,1),(19670,1),(19671,1),(19672,1),(19673,1),(19674,1),(19675,1), +(19676,1),(19679,1),(19682,1),(19683,1),(19694,1),(19702,1),(19722,1),(19736,1),(19774,1),(19775,1),(19777,1),(19778,1),(19828,1),(19835,1),(19836,1),(19837,1),(19848,1),(19850,1),(19855,1), +(19905,1),(19906,1),(19907,1),(19908,1),(19910,1),(19912,1),(19914,1),(20028,1),(20087,1),(20118,1),(20119,1),(20120,1),(20121,1),(20126,1),(20159,1),(20195,1),(20219,1),(20227,1),(20231,1), +(20232,1),(20233,1),(20234,1),(20235,1),(20236,1),(20237,1),(20238,1),(20249,1),(20250,1),(20297,1),(20374,1),(20381,1),(20382,1),(20383,1),(20385,1),(20386,1),(20388,1),(20390,1),(20395,1), +(20406,1),(20407,1),(20447,1),(20484,1),(20485,1),(20494,1),(20500,1),(20510,1),(20511,1),(20513,1),(20515,1),(20556,1),(20603,1),(20672,1),(20674,1),(20762,1),(20793,1),(20799,1),(20812,1), +(20890,1),(20891,1),(20892,1),(20893,1),(20914,1),(20915,1),(20916,1),(20917,1),(20977,1),(20980,1),(20981,1),(20985,1),(20986,1),(20989,1),(21006,1),(21007,1),(21019,1),(21027,1),(21066,1), +(21081,1),(21082,1),(21083,1),(21084,1),(21085,1),(21086,1),(21087,1),(21088,1),(21103,1),(21105,1),(21106,1),(21107,1),(21110,1),(21111,1),(21112,1),(21113,1),(21114,1),(21115,1),(21117,1), +(21118,1),(21133,1),(21145,1),(21147,1),(21151,1),(21152,1),(21153,1),(21155,1),(21156,1),(21158,1),(21165,1),(21167,1),(21172,1),(21175,1),(21188,1),(21192,1),(21193,1),(21194,1),(21197,1), +(21209,1),(21248,1),(21256,1),(21257,1),(21277,1),(21279,1),(21283,1),(21311,1),(21330,1),(21336,1),(21340,1),(21359,1),(21361,1),(21365,1),(21367,1),(21397,1),(21398,1),(21399,1),(21400,1), +(21427,1),(21441,1),(21460,1),(21461,1),(21469,1),(21471,1),(21472,1),(21474,1),(21475,1),(21476,1),(21483,1),(21484,1),(21485,1),(21487,1),(21488,1),(21496,1),(21691,1),(21692,1),(21736,1), +(21749,1),(21755,1),(21766,1),(21769,1),(21770,1),(21771,1),(21772,1),(21773,1),(21774,1),(21775,1),(21777,1),(21789,1),(21790,1),(21824,1),(21829,1),(21858,1),(21895,1),(21896,1),(21968,1), +(21969,1),(21970,1),(21971,1),(21984,1),(21986,1),(21998,1),(22004,1),(22007,1),(22010,1),(22013,1),(22015,1),(22020,1),(22053,1),(22059,1),(22107,1),(22110,1),(22127,1),(22149,1),(22150,1), +(22151,1),(22152,1),(22206,1),(22216,1),(22225,1),(22227,1),(22231,1),(22278,1),(22312,1),(22386,1),(22407,1),(22410,1),(22430,1),(22431,1),(22448,1),(22453,1),(22455,1),(22456,1),(22462,1), +(22468,1),(22469,1),(22476,1),(22477,1),(22485,1),(22488,1),(22489,1),(22494,1),(22498,1),(22834,1),(22901,1),(22916,1),(22922,1),(22931,1),(22935,1),(22936,1),(22937,1),(22990,1),(22998,1), +(22999,1),(23000,1),(23001,1),(23005,1),(23006,1),(23009,1),(23010,1),(23011,1),(23012,1),(23023,1),(23024,1),(23039,1),(23045,1),(23064,1),(23065,1),(23089,1),(23115,1),(23127,1),(23128,1), +(23131,1),(23134,1),(23135,1),(23136,1),(23197,1),(23200,1),(23201,1),(23202,1),(23268,1),(23392,1),(23434,1),(23435,1),(23446,1),(23447,1),(23452,1),(23453,1),(23479,1),(23480,1),(23481,1), +(23482,1),(23504,1),(23510,1),(23511,1),(23521,1),(23522,1),(23525,1),(23532,1),(23533,1),(23534,1),(23535,1),(23536,1),(23540,1),(23546,1),(23547,1),(23548,1),(23549,1),(23550,1),(23551,1), +(23552,1),(23558,1),(23560,1),(23565,1),(23566,1),(23599,1),(23603,1),(23604,1),(23605,1),(23606,1),(23607,1),(23608,1),(23609,1),(23610,1),(23611,1),(23612,1),(23613,1),(23614,1),(23615,1), +(23627,1),(23628,1),(23635,1),(23681,1),(23683,1),(23684,1),(23685,1),(23696,1),(23698,1),(23704,1),(23713,1),(23721,1),(23728,1),(23729,1),(23730,1),(23731,1),(23732,1),(23733,1),(23734,1), +(23735,1),(23736,1),(23737,1),(23738,1),(23739,1),(23748,1),(23749,1),(23766,1),(23770,1),(23773,1),(23779,1),(23783,1),(23791,1),(23792,1),(23802,1),(23804,1),(23819,1),(23820,1),(23823,1), +(23824,1),(23825,1),(23831,1),(23833,1),(23835,1),(23836,1),(23838,1),(23839,1),(23840,1),(23842,1),(23844,1),(23851,1),(23856,1),(23857,1),(23859,1),(23860,1),(23862,1),(23888,1),(23891,1), +(23892,1),(23895,1),(23896,1),(23900,1),(23905,1),(23906,1),(23908,1),(23911,1),(23933,1),(23937,1),(23949,1),(23950,1),(23951,1),(23975,1),(23976,1),(23978,1),(23981,1),(23984,1),(23985,1), +(23986,1),(23987,1),(24005,1),(24006,1),(24028,1),(24031,1),(24032,1),(24033,1),(24038,1),(24040,1),(24050,1),(24052,1),(24053,1),(24054,1),(24055,1),(24056,1),(24057,1),(24058,1),(24061,1), +(24062,1),(24066,1),(24067,1),(24075,1),(24077,1),(24081,1),(24086,1),(24088,1),(24089,1),(24090,1),(24091,1),(24096,1),(24097,1),(24099,1),(24103,1),(24106,1),(24122,1),(24123,1),(24124,1), +(24125,1),(24127,1),(24129,1),(24131,1),(24135,1),(24139,1),(24141,1),(24142,1),(24145,1),(24147,1),(24148,1),(24149,1),(24150,1),(24151,1),(24154,1),(24155,1),(24157,1),(24164,1),(24168,1), +(24176,1),(24186,1),(24188,1),(24189,1),(24190,1),(24191,1),(24192,1),(24195,1),(24197,1),(24208,1),(24209,1),(24218,1),(24226,1),(24227,1),(24232,1),(24233,1),(24234,1),(24236,1),(24253,1), +(24254,1),(24255,1),(24256,1),(24273,1),(24282,1),(24283,1),(24313,1),(24328,1),(24330,1),(24333,1),(24341,1),(24342,1),(24343,1),(24347,1),(24348,1),(24349,1),(24350,1),(24356,1),(24357,1), +(24359,1),(24362,1),(24364,1),(24366,1),(24376,1),(24390,1),(24399,1),(24457,1),(24468,1),(24473,1),(24484,1),(24491,1),(24492,1),(24493,1),(24497,1),(24498,1),(24499,1),(24501,1),(24510,1), +(24520,1),(24522,1),(24527,1),(24528,1),(24531,1),(24532,1),(24534,1),(24535,1),(24545,1),(24631,1),(24632,1),(24634,1),(24667,1),(24668,1),(24670,1),(24671,1),(24672,1),(24702,1),(24703,1), +(24706,1),(24709,1),(24710,1),(24711,1),(24717,1),(24718,1),(24719,1),(24720,1),(24730,1),(24733,1),(24734,1),(24735,1),(24736,1),(24737,1),(24738,1),(24739,1),(24750,1),(24751,1),(24806,1), +(24807,1),(24811,1),(24813,1),(24821,1),(24823,1),(24825,1),(24866,1),(24881,1),(24884,1),(24885,1),(24886,1),(24905,1),(24938,1),(24965,1),(24967,1),(24974,1),(24975,1),(24993,1),(25019,1), +(25020,1),(25032,1),(25036,1),(25037,1),(25039,1),(25043,1),(25045,1),(25059,1),(25061,1),(25088,1),(25089,1),(25108,1),(25112,1),(25115,1),(25145,1),(25162,1),(25163,1),(25164,1),(25167,1), +(25169,1),(25170,1),(25172,1),(25194,1),(25200,1),(25202,1),(25207,1),(25220,1),(25222,1),(25223,1),(25233,1),(25234,1),(25235,1),(25237,1),(25238,1),(25239,1),(25240,1),(25241,1),(25242,1), +(25243,1),(25244,1),(25245,1),(25246,1),(25247,1),(25250,1),(25251,1),(25252,1),(25253,1),(25254,1),(25255,1),(25256,1),(25257,1),(25258,1),(25259,1),(25261,1),(25264,1),(25266,1),(25269,1), +(25270,1),(25271,1),(25272,1),(25273,1),(25274,1),(25275,1),(25276,1),(25277,1),(25278,1),(25279,1),(25280,1),(25281,1),(25282,1),(25285,1),(25286,1),(25288,1),(25289,1),(25298,1),(25299,1), +(25300,1),(25301,1),(25302,1),(25306,1),(25307,1),(25311,1),(25312,1),(25313,1),(25317,1),(25326,1),(25327,1),(25328,1),(25329,1),(25334,1),(25335,1),(25336,1),(25337,1),(25338,1),(25339,1), +(25340,1),(25341,1),(25361,1),(25374,1),(25379,1),(25380,1),(25381,1),(25385,1),(25394,1),(25414,1),(25420,1),(25421,1),(25426,1),(25437,1),(25438,1),(25439,1),(25440,1),(25446,1),(25459,1), +(25475,1),(25476,1),(25477,1),(25503,1),(25504,1),(25519,1),(25526,1),(25527,1),(25528,1),(25529,1),(25530,1),(25531,1),(25532,1),(25533,1),(25589,1),(25590,1),(25602,1),(25604,1),(25606,1), +(25607,1),(25610,1),(25617,1),(25702,1),(25705,1),(25729,1),(25730,1),(25736,1),(25737,1),(25747,1),(25749,1),(25751,1),(25759,1),(25761,1),(25767,1),(25776,1),(25780,1),(25783,1),(25797,1), +(25807,1),(25808,1),(25809,1),(25810,1),(25811,1),(25812,1),(25816,1),(25819,1),(25825,1),(25826,1),(25838,1),(25849,1),(25883,1),(25884,1),(25887,1),(25888,1),(25889,1),(25890,1),(25891,1), +(25892,1),(25893,1),(25894,1),(25895,1),(25896,1),(25897,1),(25898,1),(25899,1),(25900,1),(25901,1),(25902,1),(25903,1),(25904,1),(25905,1),(25906,1),(25907,1),(25908,1),(25909,1),(25910,1), +(25911,1),(25912,1),(25913,1),(25914,1),(25915,1),(25916,1),(25917,1),(25918,1),(25919,1),(25920,1),(25921,1),(25922,1),(25923,1),(25925,1),(25926,1),(25927,1),(25928,1),(25929,1),(25930,1), +(25931,1),(25932,1),(25933,1),(25934,1),(25935,1),(25936,1),(25937,1),(25938,1),(25939,1),(25940,1),(25941,1),(25942,1),(25943,1),(25944,1),(25945,1),(25946,1),(25947,1),(25950,1),(25976,1), +(25977,1),(25978,1),(25982,1),(25983,1),(25992,1),(26044,1),(26078,1),(26083,1),(26084,1),(26085,1),(26089,1),(26090,1),(26091,1),(26092,1),(26104,1),(26109,1),(26112,1),(26123,1),(26124,1), +(26155,1),(26156,1),(26157,1),(26158,1),(26159,1),(26160,1),(26170,1),(26179,1),(26180,1),(26181,1),(26182,1),(26184,1),(26185,1),(26186,1),(26187,1),(26194,1),(26205,1),(26212,1),(26217,1), +(26220,1),(26226,1),(26228,1),(26229,1),(26233,1),(26234,1),(26245,1),(26246,1),(26247,1),(26269,1),(26289,1),(26323,1),(26353,1),(26361,1),(26362,1),(26374,1),(26375,1),(26379,1),(26380,1), +(26381,1),(26382,1),(26387,1),(26388,1),(26392,1),(26393,1),(26394,1),(26395,1),(26396,1),(26397,1),(26398,1),(26415,1),(26432,1),(26433,1),(26437,1),(26448,1),(26456,1),(26459,1),(26471,1), +(26474,1),(26485,1),(26486,1),(26487,1),(26504,1),(26505,1),(26506,1),(26507,1),(26508,1),(26523,1),(26537,1),(26538,1),(26539,1),(26540,1),(26541,1),(26542,1),(26546,1),(26547,1),(26548,1), +(26549,1),(26551,1),(26552,1),(26556,1),(26557,1),(26558,1),(26560,1),(26561,1),(26564,1),(26565,1),(26566,1),(26567,1),(26568,1),(26569,1),(26572,1),(26574,1),(26580,1),(26581,1),(26584,1), +(26585,1),(26595,1),(26596,1),(26597,1),(26598,1),(26599,1),(26600,1),(26601,1),(26602,1),(26603,1),(26617,1),(26618,1),(26619,1),(26634,1),(26645,1),(26649,1),(26652,1),(26654,1),(26664,1), +(26666,1),(26673,1),(26680,1),(26697,1),(26707,1),(26709,1),(26718,1),(26720,1),(26721,1),(26725,1),(26733,1),(26766,1),(26767,1),(26768,1),(26772,1),(26779,1),(26780,1),(26790,1),(26810,1), +(26813,1),(26817,1),(26821,1),(26837,1),(26839,1),(26842,1),(26844,1),(26845,1),(26846,1),(26847,1),(26848,1),(26850,1),(26851,1),(26852,1),(26853,1),(26854,1),(26859,1),(26862,1),(26870,1), +(26875,1),(26876,1),(26877,1),(26878,1),(26879,1),(26880,1),(26881,1),(26883,1),(26885,1),(26888,1),(26894,1),(26900,1),(26901,1),(26903,1),(26904,1),(26905,1),(26906,1),(26907,1),(26908,1), +(26909,1),(26910,1),(26911,1),(26912,1),(26913,1),(26914,1),(26915,1),(26916,1),(26931,1),(26932,1),(26934,1),(26935,1),(26936,1),(26938,1),(26939,1),(26941,1),(26944,1),(26945,1),(26947,1), +(26950,1),(26951,1),(26952,1),(26953,1),(26954,1),(26955,1),(26956,1),(26957,1),(26958,1),(26959,1),(26960,1),(26961,1),(26962,1),(26963,1),(26964,1),(26968,1),(26969,1),(26972,1),(26973,1), +(26974,1),(26975,1),(26976,1),(26977,1),(26978,1),(26979,1),(26980,1),(26981,1),(26982,1),(26984,1),(26985,1),(26986,1),(26987,1),(26988,1),(26989,1),(26990,1),(26991,1),(26992,1),(26993,1), +(26994,1),(26995,1),(26996,1),(26997,1),(26998,1),(26999,1),(27000,1),(27001,1),(27010,1),(27011,1),(27012,1),(27014,1),(27015,1),(27019,1),(27021,1),(27022,1),(27023,1),(27025,1),(27026,1), +(27027,1),(27028,1),(27029,1),(27030,1),(27031,1),(27032,1),(27033,1),(27034,1),(27035,1),(27038,1),(27039,1),(27040,1),(27041,1),(27042,1),(27043,1),(27044,1),(27045,1),(27051,1),(27052,1), +(27053,1),(27054,1),(27055,1),(27056,1),(27057,1),(27058,1),(27060,1),(27061,1),(27063,1),(27065,1),(27066,1),(27067,1),(27068,1),(27069,1),(27070,1),(27071,1),(27072,1),(27073,1),(27088,1), +(27089,1),(27106,1),(27107,1),(27108,1),(27109,1),(27110,1),(27119,1),(27125,1),(27126,1),(27132,1),(27133,1),(27134,1),(27136,1),(27137,1),(27138,1),(27139,1),(27140,1),(27141,1),(27142,1), +(27143,1),(27144,1),(27145,1),(27146,1),(27147,1),(27148,1),(27149,1),(27150,1),(27151,1),(27155,1),(27156,1),(27157,1),(27158,1),(27159,1),(27160,1),(27161,1),(27162,1),(27163,1),(27164,1), +(27167,1),(27168,1),(27170,1),(27172,1),(27173,1),(27174,1),(27175,1),(27176,1),(27178,1),(27181,1),(27182,1),(27183,1),(27184,1),(27185,1),(27186,1),(27187,1),(27188,1),(27189,1),(27190,1), +(27193,1),(27194,1),(27195,1),(27204,1),(27219,1),(27221,1),(27231,1),(27243,1),(27248,1),(27250,1),(27251,1),(27258,1),(27266,1),(27267,1),(27271,1),(27277,1),(27282,1),(27291,1),(27293,1), +(27295,1),(27298,1),(27299,1),(27300,1),(27301,1),(27302,1),(27314,1),(27315,1),(27316,1),(27317,1),(27318,1),(27319,1),(27320,1),(27336,1),(27337,1),(27341,1),(27345,1),(27347,1),(27348,1), +(27350,1),(27351,1),(27359,1),(27361,1),(27364,1),(27365,1),(27368,1),(27371,1),(27376,1),(27378,1),(27379,1),(27381,1),(27385,1),(27388,1),(27391,1),(27400,1),(27411,1),(27412,1),(27414,1), +(27416,1),(27422,1),(27423,1),(27425,1),(27432,1),(27440,1),(27441,1),(27451,1),(27455,1),(27456,1),(27463,1),(27464,1),(27467,1),(27468,1),(27475,1),(27477,1),(27478,1),(27480,1),(27482,1), +(27484,1),(27487,1),(27488,1),(27489,1),(27494,1),(27495,1),(27497,1),(27499,1),(27500,1),(27501,1),(27504,1),(27509,1),(27511,1),(27516,1),(27517,1),(27518,1),(27519,1),(27520,1),(27521,1), +(27532,1),(27535,1),(27536,1),(27537,1),(27538,1),(27540,1),(27543,1),(27544,1),(27545,1),(27549,1),(27550,1),(27553,1),(27557,1),(27558,1),(27559,1),(27560,1),(27562,1),(27563,1),(27564,1), +(27565,1),(27566,1),(27567,1),(27571,1),(27573,1),(27576,1),(27577,1),(27581,1),(27582,1),(27584,1),(27587,1),(27588,1),(27602,1),(27606,1),(27646,1),(27661,1),(27662,1),(27665,1),(27666,1), +(27671,1),(27673,1),(27677,1),(27678,1),(27692,1),(27695,1),(27703,1),(27704,1),(27705,1),(27708,1),(27711,1),(27713,1),(27730,1),(27748,1),(27749,1),(27750,1),(27751,1),(27755,1),(27756,1), +(27758,1),(27760,1),(27761,1),(27764,1),(27783,1),(27784,1),(27788,1),(27791,1),(27803,1),(27804,1),(27806,1),(27810,1),(27811,1),(27812,1),(27813,1),(27814,1),(27815,1),(27816,1),(27817,1), +(27818,1),(27819,1),(27820,1),(27828,1),(27833,1),(27838,1),(27841,1),(27842,1),(27843,1),(27844,1),(27846,1),(27850,1),(27857,1),(27858,1),(27872,1),(27873,1),(27881,1),(27883,1),(27886,1), +(27887,1),(27894,1),(27904,1),(27906,1),(27917,1),(27918,1),(27919,1),(27920,1),(27928,1),(27930,1),(27935,1),(27938,1),(27940,1),(27943,1),(27946,1),(27948,1),(27950,1),(27952,1),(27953,1), +(27954,1),(27955,1),(28031,1),(28032,1),(28033,1),(28038,1),(28039,1),(28040,1),(28042,1),(28043,1),(28044,1),(28045,1),(28046,1),(28047,1),(28054,1),(28057,1),(28061,1),(28063,1),(28065,1), +(28070,1),(28076,1),(28090,1),(28094,1),(28125,1),(28135,1),(28157,1),(28160,1),(28175,1),(28176,1),(28177,1),(28178,1),(28179,1),(28205,1),(28228,1),(28247,1),(28250,1),(28251,1),(28252,1), +(28261,1),(28262,1),(28263,1),(28264,1),(28312,1),(28313,1),(28314,1),(28318,1),(28319,1),(28324,1),(28328,1),(28347,1),(28348,1),(28353,1),(28354,1),(28355,1),(28366,1),(28370,1),(28374,1), +(28376,1),(28383,1),(28390,1),(28391,1),(28392,1),(28393,1),(28394,1),(28405,1),(28486,1),(28487,1),(28488,1),(28489,1),(28490,1),(28491,1),(28507,1),(28545,1),(28566,1),(28568,1),(28569,1), +(28571,1),(28572,1),(28573,1),(28593,1),(28596,1),(28613,1),(28615,1),(28618,1),(28621,1),(28623,1),(28624,1),(28638,1),(28650,1),(28651,1),(28674,1),(28675,1),(28676,1),(28677,1),(28678,1), +(28679,1),(28680,1),(28682,1),(28685,1),(28686,1),(28687,1),(28690,1),(28691,1),(28692,1),(28693,1),(28694,1),(28696,1),(28697,1),(28698,1),(28699,1),(28700,1),(28701,1),(28702,1),(28703,1), +(28704,1),(28705,1),(28706,1),(28707,1),(28708,1),(28714,1),(28715,1),(28716,1),(28718,1),(28721,1),(28722,1),(28723,1),(28725,1),(28726,1),(28727,1),(28728,1),(28742,1),(28771,1),(28774,1), +(28776,1),(28781,1),(28790,1),(28791,1),(28792,1),(28794,1),(28796,1),(28797,1),(28798,1),(28799,1),(28800,1),(28801,1),(28806,1),(28807,1),(28809,1),(28810,1),(28811,1),(28812,1),(28813,1), +(28818,1),(28827,1),(28828,1),(28829,1),(28830,1),(28831,1),(28832,1),(28857,1),(28863,1),(28865,1),(28866,1),(28867,1),(28868,1),(28869,1),(28870,1),(28872,1),(28889,1),(28930,1),(28951,1), +(28956,1),(28958,1),(28987,1),(28989,1),(28990,1),(28991,1),(28992,1),(28993,1),(28994,1),(28995,1),(28997,1),(29016,1),(29019,1),(29020,1),(29039,1),(29043,1),(29088,1),(29093,1),(29095,1), +(29111,1),(29137,1),(29139,1),(29141,1),(29142,1),(29143,1),(29144,1),(29145,1),(29152,1),(29154,1),(29155,1),(29156,1),(29157,1),(29158,1),(29159,1),(29160,1),(29161,1),(29162,1),(29171,1), +(29191,1),(29202,1),(29203,1),(29205,1),(29207,1),(29208,1),(29212,1),(29233,1),(29245,1),(29250,1),(29251,1),(29252,1),(29253,1),(29261,1),(29277,1),(29282,1),(29283,1),(29285,1),(29339,1), +(29346,1),(29348,1),(29476,1),(29478,1),(29480,1),(29491,1),(29493,1),(29494,1),(29495,1),(29496,1),(29497,1),(29499,1),(29505,1),(29506,1),(29507,1),(29508,1),(29509,1),(29510,1),(29511,1), +(29512,1),(29513,1),(29514,1),(29523,1),(29527,1),(29528,1),(29529,1),(29530,1),(29532,1),(29535,1),(29537,1),(29538,1),(29547,1),(29548,1),(29579,1),(29583,1),(29593,1),(29611,1),(29617,1), +(29628,1),(29631,1),(29636,1),(29640,1),(29641,1),(29650,1),(29651,1),(29658,1),(29662,1),(29663,1),(29687,1),(29688,1),(29689,1),(29702,1),(29703,1),(29712,1),(29714,1),(29715,1),(29716,1), +(29727,1),(29729,1),(29730,1),(29731,1),(29732,1),(29740,1),(29743,1),(29744,1),(29745,1),(29750,1),(29776,1),(29795,1),(29799,1),(29855,1),(29910,1),(29921,1),(29922,1),(29923,1),(29924,1), +(29925,1),(29926,1),(29942,1),(29948,1),(29953,1),(29965,1),(29966,1),(29973,1),(29996,1),(30039,1),(30058,1),(30059,1),(30067,1),(30072,1),(30073,1),(30076,1),(30077,1),(30104,1),(30107,1), +(30116,1),(30117,1),(30155,1),(30166,1),(30182,1),(30189,1),(30217,1),(30231,1),(30233,1),(30238,1),(30239,1),(30240,1),(30241,1),(30244,1),(30253,1),(30254,1),(30255,1),(30256,1),(30257,1), +(30259,1),(30261,1),(30263,1),(30265,1),(30266,1),(30269,1),(30271,1),(30274,1),(30280,1),(30281,1),(30290,1),(30344,1),(30346,1),(30347,1),(30351,1),(30352,1),(30354,1),(30355,1),(30377,1), +(30380,1),(30381,1),(30382,1),(30392,1),(30394,1),(30408,1),(30426,1),(30427,1),(30428,1),(30431,1),(30433,1),(30440,1),(30441,1),(30472,1),(30489,1),(30566,1),(30567,1),(30569,1),(30578,1), +(30579,1),(30580,1),(30581,1),(30582,1),(30583,1),(30584,1),(30586,1),(30587,1),(30590,1),(30596,1),(30604,1),(30605,1),(30606,1),(30607,1),(30608,1),(30610,1),(30611,1),(30618,1),(30619,1), +(30671,1),(30672,1),(30678,1),(30706,1),(30709,1),(30710,1),(30711,1),(30713,1),(30715,1),(30716,1),(30717,1),(30721,1),(30722,1),(30723,1),(30724,1),(30726,1),(30727,1),(30729,1),(30730,1), +(30731,1),(30732,1),(30733,1),(30734,1),(30735,1),(30737,1),(30739,1),(30740,1),(30752,1),(30753,1),(30754,1),(30755,1),(30824,1),(30826,1),(30827,1),(30833,1),(30838,1),(30839,1),(30840,1), +(30855,1),(30866,1),(30867,1),(31033,1),(31036,1),(31052,1),(31053,1),(31054,1),(31078,1),(31091,1),(31106,1),(31107,1),(31108,1),(31109,1),(31111,1),(31151,1),(31153,1),(31216,1),(31238,1), +(31247,1),(31248,1),(31273,1),(31285,1),(31290,1),(31291,1),(31294,1),(31295,1),(31296,1),(31297,1),(31298,1),(31299,1),(31300,1),(31302,1),(31304,1),(31305,1),(31307,1),(31310,1),(31313,1), +(31328,1),(31330,1),(31412,1),(31416,1),(31417,1),(31418,1),(31419,1),(31420,1),(31421,1),(31422,1),(31423,1),(31425,1),(31426,1),(31427,1),(31429,1),(31430,1),(31431,1),(31433,1),(31434,1), +(31522,1),(31523,1),(31545,1),(31549,1),(31551,1),(31552,1),(31557,1),(31563,1),(31564,1),(31578,1),(31579,1),(31580,1),(31581,1),(31582,1),(31639,1),(31649,1),(31701,1),(31737,1),(31739,1), +(31784,1),(31785,1),(31804,1),(31805,1),(31806,1),(31808,1),(31810,1),(31832,1),(31833,1),(31834,1),(31841,1),(31842,1),(31882,1),(31891,1),(31916,1),(32150,1),(32169,1),(32170,1),(32172,1), +(32190,1),(32216,1),(32222,1),(32223,1),(32239,1),(32251,1),(32252,1),(32253,1),(32287,1),(32294,1),(32296,1),(32301,1),(32302,1),(32303,1),(32307,1),(32308,1),(32310,1),(32311,1),(32312,1), +(32315,1),(32321,1),(32322,1),(32324,1),(32325,1),(32328,1),(32337,1),(32339,1),(32340,1),(32341,1),(32342,1),(32343,1),(32346,1),(32363,1),(32364,1),(32365,1),(32367,1),(32371,1),(32379,1), +(32380,1),(32381,1),(32382,1),(32383,1),(32384,1),(32385,1),(32387,1),(32401,1),(32402,1),(32403,1),(32411,1),(32412,1),(32413,1),(32418,1),(32419,1),(32420,1),(32421,1),(32424,1),(32426,1), +(32451,1),(32453,1),(32454,1),(32474,1),(32493,1),(32494,1),(32509,1),(32510,1),(32514,1),(32515,1),(32516,1),(32533,1),(32538,1),(32564,1),(32565,1),(32566,1),(32573,1),(32596,1),(32597,1), +(32598,1),(32599,1),(32600,1),(32601,1),(32602,1),(32604,1),(32615,1),(32626,1),(32627,1),(32629,1),(32632,1),(32657,1),(32658,1),(32659,1),(32660,1),(32668,1),(32669,1),(32675,1),(32676,1), +(32677,1),(32678,1),(32679,1),(32680,1),(32681,1),(32683,1),(32684,1),(32685,1),(32686,1),(32687,1),(32688,1),(32689,1),(32690,1),(32691,1),(32692,1),(32693,1),(32695,1),(32697,1),(32700,1), +(32702,1),(32704,1),(32706,1),(32708,1),(32709,1),(32710,1),(32711,1),(32712,1),(32713,1),(32714,1),(32715,1),(32716,1),(32717,1),(32718,1),(32719,1),(32720,1),(32721,1),(32723,1),(32726,1), +(32727,1),(32728,1),(32729,1),(32730,1),(32731,1),(32732,1),(32733,1),(32734,1),(32735,1),(32736,1),(32737,1),(32738,1),(32739,1),(32740,1),(32741,1),(32753,1),(32754,1),(32755,1),(32756,1), +(32757,1),(32758,1),(32759,1),(32760,1),(32761,1),(32762,1),(32763,1),(32773,1),(32774,1),(32777,1),(32801,1),(32802,1),(32803,1),(32804,1),(32805,1),(32806,1),(32807,1),(32808,1),(32809,1), +(32810,1),(32811,1),(32812,1),(32813,1),(32814,1),(32815,1),(32816,1),(32832,1),(32833,1),(32834,1),(32835,1),(32842,1),(32843,1),(32898,1),(33018,1),(33019,1),(33026,1),(33027,1),(33059,1), +(33060,1),(33061,1),(33062,1),(33063,1),(33067,1),(33069,1),(33080,1),(33109,1),(33114,1),(33139,1),(33146,1),(33167,1),(33217,1),(33222,1),(33223,1),(33225,1),(33235,1),(33264,1),(33307,1), +(33309,1),(33310,1),(33312,1),(33315,1),(33316,1),(33317,1),(33318,1),(33319,1),(33320,1),(33321,1),(33322,1),(33323,1),(33324,1),(33335,1),(33361,1),(33372,1),(33373,1),(33379,1),(33403,1), +(33405,1),(33434,1),(33435,1),(33459,1),(33460,1),(33461,1),(33462,1),(33463,1),(33464,1),(33465,1),(33466,1),(33467,1),(33468,1),(33469,1),(33470,1),(33471,1),(33472,1),(33473,1),(33474,1), +(33475,1),(33476,1),(33477,1),(33478,1),(33479,1),(33480,1),(33481,1),(33482,1),(33531,1),(33538,1),(33539,1),(33540,1),(33541,1),(33542,1),(33543,1),(33544,1),(33545,1),(33547,1),(33548,1), +(33549,1),(33553,1),(33554,1),(33555,1),(33556,1),(33557,1),(33560,1),(33563,1),(33565,1),(33566,1),(33579,1),(33580,1),(33581,1),(33583,1),(33586,1),(33587,1),(33588,1),(33589,1),(33590,1), +(33591,1),(33592,1),(33593,1),(33594,1),(33596,1),(33597,1),(33598,1),(33599,1),(33600,1),(33601,1),(33602,1),(33603,1),(33624,1),(33628,1),(33629,1),(33643,1),(33644,1),(33645,1),(33648,1), +(33649,1),(33650,1),(33652,1),(33653,1),(33654,1),(33655,1),(33656,1),(33657,1),(33666,1),(33669,1),(33698,1),(33759,1),(33762,1),(33763,1),(33769,1),(33770,1),(33771,1),(33780,1),(33782,1), +(33783,1),(33784,1),(33788,1),(33844,1),(33845,1),(33853,1),(33854,1),(33863,1),(33865,1),(33866,1),(33867,1),(33868,1),(33869,1),(33871,1),(33872,1),(33956,1),(33957,1),(33963,1),(33964,1), +(33972,1),(33973,1),(33974,1),(33992,1),(33996,1),(34036,1),(34037,1),(34038,1),(34039,1),(34040,1),(34043,1),(34044,1),(34054,1),(34058,1),(34059,1),(34060,1),(34061,1),(34062,1),(34063,1), +(34064,1),(34073,1),(34074,1),(34075,1),(34076,1),(34077,1),(34078,1),(34079,1),(34080,1),(34081,1),(34082,1),(34083,1),(34084,1),(34102,1),(34107,1),(34119,1),(34179,1),(34252,1),(34437,1), +(34526,1),(34528,1),(34612,1),(34765,1),(34766,1),(34775,1),(34776,1),(34777,1),(34778,1),(34793,1),(34802,1),(34882,1),(34885,1),(34895,1),(34948,1),(34949,1),(34950,1),(34951,1),(34955,1), +(34971,1),(34972,1),(34973,1),(34976,1),(34978,1),(34983,1),(34985,1),(34986,1),(34987,1),(34988,1),(34989,1),(34991,1),(34993,1),(34997,1),(34998,1),(34999,1),(35000,1),(35001,1),(35002,1), +(35007,1),(35008,1),(35017,1),(35019,1),(35020,1),(35021,1),(35022,1),(35023,1),(35024,1),(35025,1),(35026,1),(35027,1),(35068,1),(35069,1),(35070,1),(35073,1),(35085,1),(35086,1),(35087,1), +(35088,1),(35090,1),(35091,1),(35093,1),(35094,1),(35098,1),(35099,1),(35100,1),(35101,1),(35102,1),(35131,1),(35132,1),(35133,1),(35135,1),(35273,1),(35281,1),(35290,1),(35291,1),(35299,1), +(35322,1),(35335,1),(35336,1),(35361,1),(35364,1),(35365,1),(35373,1),(35460,1),(35462,1),(35467,1),(35471,1),(35492,1),(35494,1),(35495,1),(35496,1),(35497,1),(35498,1),(35500,1),(35507,1), +(35508,1),(35573,1),(35574,1),(35575,1),(35576,1),(35577,1),(35578,1),(35579,1),(35580,1),(35587,1),(35594,1),(35596,1),(35597,1),(35598,1),(35599,1),(35600,1),(35601,1),(35602,1),(35603,1), +(35607,1),(35611,1),(35612,1),(35644,1),(35790,1),(35983,1),(35984,1),(36095,1),(36151,1),(36152,1),(36162,1),(36164,1),(36165,1),(36166,1),(36169,1),(36208,1),(36213,1),(36217,1),(36224,1), +(36225,1),(36226,1),(36235,1),(36273,1),(36284,1),(36351,1),(36352,1),(36355,1),(36356,1),(36359,1),(36360,1),(36380,1),(36390,1),(36431,1),(36479,1),(36481,1),(36506,1),(36517,1),(36557,1), +(36558,1),(36559,1),(36644,1),(36648,1),(36656,1),(36657,1),(36970,1),(36971,1),(36991,1),(37063,1),(37072,1),(37074,1),(37100,1),(37101,1),(37172,1),(37182,1),(37183,1),(37510,1),(37596,1), +(37687,1),(37688,1),(37689,1),(37693,1),(37696,1),(37699,1),(37700,1),(37715,1),(37764,1),(37765,1),(37775,1),(37781,1),(37790,1),(37798,1),(37800,1),(37825,1),(37831,1),(37833,1),(37860,1), +(37869,1),(37879,1),(37888,1),(37941,1),(37942,1),(37944,1),(38050,1),(38052,1),(38066,1),(38164,1),(38208,1),(38293,1),(38295,1),(38334,1),(38335,1),(38336,1),(38337,1),(38338,1),(38339,1), +(38566,1),(38716,1),(38825,1),(38830,1),(38831,1),(38839,1),(38843,1),(38846,1),(38870,1),(38877,1),(38900,1),(38901,1),(38905,1),(38906,1),(38919,1),(38920,1),(38921,1),(39060,1),(39089,1), +(39158,1),(39172,1),(39173,1),(39371,1),(39633,1),(39712,1),(39934,1),(40120,1),(40138,1),(40160,1),(40184,1),(40204,1),(40253,1),(40352,1),(40356,1),(40374,1),(40388,1),(40405,1),(40413,1), +(40435,1),(40436,1),(40438,1),(40443,1),(40481,1),(40606,1),(40607,1) +ON DUPLICATE KEY UPDATE `PvPFlags`=`PvPFlags`|1; + +UPDATE `creature_addon` SET `PvPFlags`=`PvPFlags`|1 WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id` IN (54,66,68,74,78,151,152,167,190,196,197,198,219,220,221,222,223,224,225,226,227,228, +233,234,235,237,238,239,240,241,242,244,246,248,250,251,252,253,255,258,260,261,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,288,289,294,295,297,302,311,313,325,328,331,332, +338,340,341,342,343,344,346,347,348,349,352,354,372,374,375,376,377,379,380,381,382,383,384,386,415,459,460,461,464,465,466,467,468,469,470,482,483,487,488,489,490,491,494,495,496,497,499,514,523, +542,543,576,586,633,648,649,650,651,652,653,656,658,661,663,693,713,714,727,733,734,738,739,754,770,777,786,789,790,791,793,809,812,820,821,823,826,827,828,829,836,837,840,842,843,844,853,857,859, +861,862,863,864,865,866,867,868,869,870,874,876,878,885,886,887,888,893,894,895,896,897,900,903,904,906,907,911,912,913,914,915,916,917,918,925,926,927,928,931,932,933,934,935,936,944,945,951,952, +954,955,956,957,958,959,960,963,980,981,982,983,984,985,986,987,988,989,999,1000,1001,1058,1064,1068,1070,1071,1072,1073,1074,1075,1076,1077,1078,1089,1090,1091,1092,1093,1098,1099,1100,1101,1103, +1104,1105,1139,1141,1146,1147,1148,1149,1153,1154,1155,1156,1182,1187,1198,1203,1204,1212,1213,1214,1215,1217,1218,1226,1228,1229,1230,1231,1232,1233,1234,1235,1237,1238,1239,1240,1241,1242,1243, +1244,1245,1246,1247,1249,1250,1252,1254,1255,1256,1257,1261,1265,1266,1267,1268,1269,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294, +1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333, +1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1354,1355,1356,1358,1360,1362,1365,1373,1374,1375,1376,1377,1378,1379,1381,1382,1383,1384,1385,1386,1387, +1395,1402,1403,1404,1405,1406,1407,1408,1409,1413,1414,1415,1416,1421,1422,1423,1427,1428,1430,1431,1432,1434,1435,1436,1437,1439,1440,1441,1442,1443,1444,1448,1450,1451,1452,1453,1454,1456,1457, +1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1495,1496,1497,1498,1499,1500,1515,1518,1519,1521,1546,1560, +1567,1568,1569,1570,1571,1572,1573,1632,1642,1644,1645,1646,1649,1650,1651,1652,1661,1668,1670,1671,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1690,1691,1692,1694,1695,1697,1698, +1699,1700,1701,1702,1703,1719,1721,1733,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1748,1749,1750,1751,1752,1754,1756,1775,1777,1854,1872,1879,1901,1937,1938,1949,1950,1951,1952, +1959,1960,1963,1975,1976,1977,1978,1992,2041,2046,2050,2055,2057,2058,2077,2078,2079,2080,2081,2082,2083,2084,2086,2092,2093,2094,2096,2097,2099,2104,2105,2107,2111,2112,2113,2114,2115,2116,2117, +2118,2119,2121,2122,2123,2124,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2140,2142,2151,2153,2198,2209,2210,2214,2215,2216,2225,2226,2227,2228,2229,2238,2239,2263,2276,2277,2278, +2279,2280,2285,2299,2302,2303,2307,2308,2309,2310,2311,2314,2315,2316,2326,2327,2329,2330,2352,2357,2361,2362,2363,2364,2365,2366,2367,2378,2379,2380,2381,2382,2383,2386,2388,2389,2390,2391,2392, +2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2405,2409,2410,2418,2419,2424,2425,2429,2430,2432,2436,2437,2438,2439,2455,2456,2457,2458,2459,2460,2461,2464,2465,2466,2468,2469,2470,2485,2489, +2492,2497,2504,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2524,2525,2526,2527,2528,2608,2621,2668,2669,2679,2682,2695,2696,2697,2698,2700,2702,2703,2704,2705,2706,2708, +2709,2710,2711,2712,2713,2737,2770,2771,2772,2784,2786,2787,2788,2789,2790,2792,2795,2796,2798,2799,2802,2803,2804,2805,2806,2808,2809,2810,2812,2814,2816,2818,2819,2820,2821,2833,2835,2851,2855, +2856,2857,2858,2859,2860,2861,2870,2872,2876,2878,2879,2880,2881,2908,2909,2910,2911,2912,2913,2916,2917,2918,2930,2934,2938,2940,2941,2942,2947,2948,2980,2981,2982,2984,2985,2986,2987,2988,2991, +2993,2995,2996,2997,2998,2999,3001,3002,3003,3004,3005,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034, +3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3052,3053,3054,3055,3057,3059,3060,3061,3062,3063,3064,3065,3066,3067,3069,3070,3071,3072,3074,3075,3076,3077,3078,3079, +3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3095,3097,3133,3135,3136,3137,3138,3139,3140,3142,3143,3144,3145,3147,3148,3149,3150,3153,3154,3155,3156,3157,3158,3159,3160, +3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3181,3182,3184,3185,3186,3187,3188,3189,3190,3191,3193,3194,3208,3210,3211,3212,3213,3214,3215,3216, +3217,3218,3219,3220,3221,3222,3223,3224,3230,3233,3287,3290,3291,3292,3294,3296,3297,3298,3299,3304,3305,3306,3310,3312,3313,3314,3315,3316,3317,3319,3321,3322,3323,3324,3325,3326,3327,3328,3329, +3330,3331,3332,3333,3334,3335,3336,3337,3338,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370, +3371,3372,3373,3387,3388,3389,3390,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3418,3419,3420,3421,3428,3429,3430,3431,3432,3433,3440,3441,3443,3447,3448,3449,3454,3455,3464, +3468,3469,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489,3490,3500,3501,3514,3515,3516,3517,3518,3519,3520,3521,3522,3523,3525,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548, +3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3561,3562,3564,3565,3567,3568,3571,3575,3583,3584,3585,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603, +3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3639,3644,3649,3650,3657,3661,3663,3666,3681,3682,3685,3688,3689,3690,3691,3692, +3693,3694,3695,3699,3700,3701,3702,3703,3704,3705,3706,3707,3708,3779,3836,3838,3841,3842,3845,3846,3847,3848,3849,3880,3881,3882,3883,3884,3885,3890,3894,3895,3896,3901,3916,3920,3933,3934,3935, +3936,3937,3948,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3969,3970,3978,3979,3980,3982,3994,3995,3996,4043,4046,4047,4048,4049,4077,4078,4079,4080,4081, +4082,4083,4084,4087,4088,4089,4090,4091,4092,4138,4146,4149,4153,4155,4156,4157,4159,4160,4161,4163,4164,4165,4167,4168,4169,4170,4171,4172,4173,4175,4176,4177,4178,4179,4180,4181,4182,4183,4185, +4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4197,4198,4200,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4225,4226,4228,4229,4230, +4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4254,4255,4256,4257,4258,4259,4262,4265,4266,4267,4305,4307,4309,4310,4311,4312,4314,4317,4319,4320,4321,4407,4423,4444,4451,4455, +4456,4483,4484,4485,4486,4487,4488,4489,4497,4498,4501,4502,4509,4510,4521,4544,4545,4546,4547,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568, +4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607, +4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4621,4721,4722,4730,4731,4732,4752,4753,4772,4773,4775,4782,4791,4794,4875,4876,4877,4878,4879,4881,4882,4883,4884,4885,4886,4888,4889,4890,4891, +4892,4893,4894,4895,4896,4897,4898,4899,4900,4902,4921,4922,4923,4924,4926,4941,4942,4943,4944,4947,4948,4949,4951,4954,4959,4960,4961,4963,4964,4965,4966,4967,4968,4973,4974,4976,4979,4981,4983, +4984,4995,4996,5042,5047,5049,5050,5051,5052,5054,5081,5082,5083,5084,5087,5090,5091,5092,5093,5094,5095,5096,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,5113,5114,5115, +5116,5117,5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155, +5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5169,5170,5171,5172,5173,5174,5175,5177,5178,5188,5189,5190,5191,5192,5193,5199,5200,5204,5384,5385,5386,5387,5388,5389,5390,5392,5393, +5394,5395,5396,5412,5413,5414,5418,5464,5476,5479,5480,5482,5483,5484,5489,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514, +5515,5516,5517,5518,5519,5520,5543,5544,5546,5547,5564,5565,5566,5567,5569,5570,5591,5592,5593,5595,5597,5599,5603,5605,5606,5609,5610,5611,5612,5613,5614,5620,5624,5635,5636,5637,5638,5639,5640, +5641,5642,5644,5651,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5667,5668,5670,5675,5679,5688,5690,5693,5694,5695,5696,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5724, +5725,5731,5732,5733,5734,5744,5747,5748,5749,5750,5752,5753,5754,5757,5758,5759,5765,5769,5770,5782,5810,5811,5812,5813,5814,5815,5816,5817,5819,5820,5821,5870,5871,5875,5878,5880,5882,5883,5884, +5885,5886,5887,5888,5892,5899,5900,5904,5905,5906,5907,5908,5909,5910,5911,5917,5938,5939,5940,5941,5942,5943,5944,5952,5953,5957,5958,5994,6014,6018,6026,6027,6028,6030,6031,6034,6046,6086,6087, +6089,6090,6091,6094,6114,6119,6120,6121,6122,6142,6166,6169,6171,6172,6173,6174,6175,6177,6178,6179,6181,6182,6183,6237,6241,6244,6267,6272,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6297, +6298,6299,6300,6301,6306,6328,6367,6373,6374,6376,6382,6387,6389,6393,6394,6395,6408,6410,6411,6446,6467,6522,6526,6566,6567,6569,6574,6576,6577,6579,6586,6607,6667,6670,6706,6726,6727,6732,6734, +6735,6736,6737,6738,6739,6740,6741,6746,6747,6749,6774,6775,6776,6778,6780,6781,6784,6785,6786,6787,6790,6806,6826,6868,6886,6928,6929,6930,6946,6966,6986,6987,7007,7009,7010,7024,7087,7088,7089, +7208,7229,7230,7231,7232,7292,7293,7294,7295,7296,7297,7298,7311,7312,7313,7315,7316,7317,7410,7427,7485,7488,7489,7583,7623,7643,7663,7683,7714,7730,7731,7733,7736,7737,7740,7744,7763,7764,7765, +7766,7776,7777,7779,7780,7790,7792,7793,7798,7823,7824,7825,7843,7852,7854,7865,7866,7867,7868,7869,7870,7871,7875,7877,7878,7879,7880,7884,7900,7903,7904,7906,7907,7916,7917,7935,7937,7939,7940, +7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7952,7953,7954,7955,7956,7957,7975,7976,7978,7980,7999,8015,8016,8017,8018,8019,8020,8021,8022,8026,8055,8096,8115,8117,8118,8140,8141,8142,8143, +8144,8145,8146,8147,8148,8150,8151,8152,8153,8154,8155,8157,8158,8159,8160,8161,8176,8177,8178,8256,8284,8306,8307,8310,8356,8357,8358,8359,8360,8361,8362,8363,8364,8383,8385,8390,8392,8393,8396, +8397,8398,8401,8403,8404,8416,8436,8507,8508,8517,8576,8582,8583,8584,8586,8587,8609,8610,8659,8664,8665,8669,8670,8671,8672,8674,8681,8719,8720,8721,8722,8723,8777,8856,8878,8879,8931,8934,8997, +9047,9076,9077,9078,9079,9080,9081,9082,9083,9084,9085,9086,9087,9099,9177,9238,9296,9297,9356,9457,9458,9465,9501,9521,9525,9526,9527,9539,9540,9548,9549,9550,9551,9552,9553,9555,9560,9561,9562, +9564,9565,9566,9576,9578,9579,9580,9581,9582,9584,9598,9599,9616,9617,9620,9636,9660,9796,9820,9857,9858,9859,9976,9977,9978,9979,9980,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990,9996,10037, +10038,10045,10046,10047,10048,10049,10050,10051,10052,10053,10054,10055,10056,10057,10058,10059,10061,10062,10079,10085,10086,10088,10089,10090,10118,10136,10176,10181,10182,10204,10216,10219,10266, +10276,10277,10278,10291,10292,10293,10294,10295,10297,10298,10301,10303,10306,10307,10360,10361,10362,10364,10365,10367,10368,10369,10370,10377,10378,10379,10380,10427,10428,10443,10444,10446,10448, +10449,10450,10451,10452,10453,10454,10455,10456,10460,10537,10539,10540,10578,10582,10583,10599,10600,10604,10606,10610,10611,10612,10616,10618,10619,10636,10638,10645,10646,10665,10666,10676,10682, +10684,10696,10719,10721,10781,10782,10803,10804,10805,10837,10838,10878,10879,10880,10881,10897,10919,10930,10978,11022,11023,11025,11026,11028,11029,11031,11037,11040,11041,11042,11044,11045,11046, +11047,11048,11049,11050,11051,11052,11053,11055,11056,11057,11065,11066,11067,11068,11069,11070,11071,11072,11074,11079,11081,11083,11084,11096,11097,11098,11103,11104,11105,11106,11116,11117,11118, +11137,11138,11139,11145,11146,11176,11177,11178,11180,11181,11191,11192,11193,11196,11198,11218,11219,11259,11276,11317,11328,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403, +11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11549,11550,11608,11609,11615,11616,11624,11696,11699,11700,11701,11702,11703,11708,11709,11712,11715,11716,11717,11718, +11719,11720,11748,11749,11750,11751,11752,11795,11797,11799,11800,11801,11802,11806,11807,11808,11809,11814,11815,11816,11817,11818,11819,11820,11821,11822,11823,11824,11825,11826,11827,11828,11829, +11833,11835,11856,11857,11860,11861,11862,11863,11864,11865,11866,11867,11868,11869,11870,11877,11878,11885,11899,11900,11901,11916,11919,11946,11947,11948,11949,11979,11994,11997,11998,12019,12020, +12021,12022,12023,12024,12025,12026,12027,12028,12029,12030,12031,12032,12033,12035,12036,12038,12039,12040,12042,12043,12044,12045,12047,12048,12050,12051,12052,12053,12096,12097,12121,12122,12127, +12136,12137,12160,12196,12197,12198,12336,12338,12340,12384,12423,12425,12427,12428,12429,12430,12480,12481,12576,12577,12578,12580,12596,12616,12617,12636,12656,12657,12658,12696,12716,12717,12718, +12719,12720,12721,12722,12723,12724,12736,12737,12740,12756,12757,12777,12778,12779,12780,12781,12782,12783,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798, +12799,12805,12807,12816,12818,12836,12837,12858,12861,12862,12863,12864,12867,12877,12903,12920,12923,12924,12925,12936,12937,12938,12939,12960,12961,12962,12996,12997,12998,13000,13018,13076,13078, +13079,13080,13084,13086,13087,13088,13089,13096,13097,13098,13099,13116,13117,13137,13138,13139,13140,13143,13144,13145,13146,13147,13152,13153,13154,13155,13161,13176,13177,13178,13179,13180,13181, +13216,13217,13218,13219,13221,13236,13256,13257,13283,13284,13296,13297,13298,13299,13300,13316,13318,13319,13320,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337, +13356,13357,13358,13359,13397,13417,13418,13419,13420,13421,13422,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13446,13447, +13448,13449,13476,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547, +13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13576,13577,13597,13598,13616,13617,13618,13656,13676,13698,13699,13776,13777,13797,13798,13816,13817,13839,13840,13841,13842,13843,14041, +14121,14141,14142,14182,14185,14186,14187,14188,14201,14242,14282,14283,14284,14285,14301,14304,14363,14365,14367,14373,14374,14375,14376,14377,14378,14379,14380,14392,14394,14402,14403,14404,14423, +14438,14439,14440,14441,14442,14484,14485,14493,14494,14497,14498,14581,14622,14643,14644,14715,14717,14718,14720,14721,14730,14731,14733,14734,14736,14737,14738,14739,14740,14741,14746,14753,14754, +14757,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14781,14848,14859,14893,14901,14909,14913,14942,14943,14944,14945,14946,14947,14948,14961,14962, +14963,14964,14981,14982,14983,14984,14990,15006,15007,15008,15011,15012,15021,15022,15102,15103,15105,15106,15124,15125,15126,15127,15128,15130,15131,15136,15137,15138,15139,15177,15178,15193,15195, +15197,15199,15270,15278,15279,15280,15281,15283,15284,15285,15287,15289,15291,15292,15295,15296,15297,15301,15315,15350,15351,15371,15383,15398,15399,15400,15401,15402,15403,15404,15405,15406,15416, +15417,15418,15419,15431,15432,15433,15434,15437,15440,15441,15442,15443,15444,15445,15446,15448,15450,15451,15452,15453,15455,15456,15457,15458,15459,15460,15469,15471,15473,15477,15494,15501,15508, +15512,15513,15515,15518,15519,15522,15525,15528,15529,15532,15533,15534,15535,15539,15612,15613,15615,15616,15617,15618,15619,15633,15634,15659,15660,15663,15672,15675,15676,15677,15678,15679,15680, +15681,15682,15683,15684,15686,15694,15696,15700,15701,15702,15703,15704,15707,15708,15709,15719,15723,15731,15732,15733,15734,15735,15736,15737,15738,15739,15745,15746,15760,15761,15762,15763,15764, +15765,15766,15767,15768,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15866, +15868,15869,15870,15903,15905,15906,15907,15908,15920,15921,15924,15938,15939,15940,15941,15942,15945,15946,15947,15970,15971,15982,15983,15991,16001,16002,16003,16004,16005,16007,16008,16009,16012, +16013,16014,16016,16019,16023,16031,16032,16033,16091,16094,16096,16105,16106,16107,16108,16109,16110,16112,16113,16114,16115,16116,16123,16131,16132,16133,16134,16135,16144,16147,16160,16161,16185, +16186,16187,16189,16191,16192,16197,16213,16217,16220,16221,16222,16224,16227,16231,16237,16241,16242,16251,16252,16253,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268, +16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16283,16285,16287,16288,16289,16291,16293,16295,16362,16366,16367,16371,16376,16381,16396,16397,16432,16442,16443,16444,16458, +16462,16463,16464,16475,16476,16477,16483,16499,16500,16501,16502,16503,16514,16535,16541,16542,16546,16551,16553,16554,16568,16574,16575,16576,16577,16578,16579,16580,16582,16583,16584,16585,16586, +16587,16588,16589,16590,16591,16599,16602,16603,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634, +16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667, +16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16702,16703,16705,16706, +16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739, +16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16761,16762,16763,16764,16765,16766,16767,16768,16770,16771,16773,16774,16780, +16781,16782,16786,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834, +16835,16836,16837,16838,16839,16840,16841,16842,16843,16849,16850,16851,16852,16853,16856,16858,16860,16862,16864,16866,16885,16886,16888,16896,16915,16917,16918,16919,16920,16921,16923,16924,16991, +16993,17002,17004,17005,17006,17015,17029,17046,17052,17056,17062,17068,17070,17071,17076,17079,17080,17089,17091,17092,17093,17094,17095,17097,17098,17099,17100,17101,17103,17104,17105,17106,17109, +17110,17114,17116,17117,17119,17120,17121,17122,17127,17162,17204,17209,17212,17214,17215,17218,17219,17222,17223,17226,17227,17228,17232,17238,17240,17241,17242,17243,17244,17245,17246,17247,17263, +17277,17282,17285,17288,17289,17290,17291,17292,17294,17295,17296,17297,17303,17310,17311,17312,17355,17375,17379,17382,17383,17384,17390,17391,17392,17393,17394,17402,17403,17406,17409,17410,17412, +17421,17422,17423,17424,17425,17426,17431,17432,17433,17434,17437,17439,17440,17441,17442,17443,17444,17445,17446,17449,17450,17468,17479,17480,17482,17483,17484,17485,17486,17487,17488,17489,17490, +17493,17495,17499,17500,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17519,17520,17531,17542,17549,17551,17553,17554,17555,17557,17558,17584,17586,17587,17593,17594,17597,17598, +17599,17600,17601,17614,17627,17628,17629,17630,17631,17632,17633,17634,17635,17637,17642,17647,17649,17655,17656,17657,17666,17667,17676,17681,17682,17684,17686,17703,17712,17717,17718,17765,17766, +17768,17769,17773,17804,17825,17831,17832,17834,17843,17844,17845,17849,17853,17855,17866,17874,17875,17876,17884,17885,17890,17900,17901,17926,17927,17953,17983,17986,17995,17996,18003,18004,18005, +18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18034,18038,18063,18066,18067,18068, +18090,18091,18097,18098,18103,18106,18126,18139,18141,18146,18147,18169,18174,18175,18183,18192,18194,18221,18222,18223,18224,18229,18243,18245,18246,18247,18248,18249,18250,18251,18252,18256,18270, +18273,18277,18292,18293,18295,18300,18301,18302,18347,18348,18349,18350,18353,18369,18383,18384,18385,18386,18387,18389,18390,18407,18408,18414,18415,18416,18426,18427,18428,18443,18445,18447,18459, +18488,18489,18507,18542,18565,18566,18666,18672,18675,18676,18687,18704,18705,18712,18713,18714,18715,18727,18745,18747,18748,18749,18751,18753,18754,18755,18758,18761,18769,18771,18772,18773,18774, +18776,18777,18779,18781,18783,18785,18788,18789,18790,18791,18792,18800,18802,18803,18804,18807,18808,18809,18810,18811,18812,18813,18815,18816,18817,18819,18820,18821,18822,18844,18892,18899,18900, +18901,18902,18903,18905,18906,18907,18908,18909,18910,18913,18914,18915,18916,18917,18918,18919,18921,18922,18924,18926,18927,18929,18937,18938,18939,18942,18943,18947,18951,18953,18954,18957,18959, +18960,18962,18971,18973,18985,18987,18988,18989,18990,18991,18993,18997,18998,18999,19000,19001,19002,19003,19004,19011,19012,19013,19014,19015,19017,19018,19019,19020,19021,19022,19023,19024,19025, +19026,19027,19030,19031,19038,19042,19048,19053,19054,19056,19068,19071,19133,19137,19138,19140,19141,19147,19148,19149,19151,19152,19156,19157,19158,19159,19169,19171,19172,19173,19175,19176,19177, +19178,19181,19185,19227,19241,19254,19255,19256,19257,19258,19265,19273,19274,19293,19294,19296,19308,19309,19310,19314,19315,19316,19317,19319,19324,19332,19333,19339,19341,19342,19343,19344,19345, +19347,19348,19351,19352,19353,19355,19362,19363,19364,19368,19369,19370,19371,19372,19373,19374,19375,19380,19383,19384,19392,19394,19401,19409,19449,19450,19454,19470,19471,19472,19473,19474,19476, +19478,19479,19495,19497,19498,19499,19500,19504,19529,19531,19533,19534,19535,19536,19537,19538,19539,19540,19541,19556,19558,19559,19560,19561,19562,19567,19571,19581,19583,19591,19592,19594,19596, +19597,19601,19602,19603,19604,19605,19606,19613,19614,19647,19669,19670,19671,19672,19673,19674,19675,19676,19679,19682,19683,19694,19702,19722,19736,19774,19775,19777,19778,19828,19835,19836,19837, +19848,19850,19855,19905,19906,19907,19908,19910,19912,19914,20028,20087,20118,20119,20120,20121,20126,20159,20195,20219,20227,20231,20232,20233,20234,20235,20236,20237,20238,20249,20250,20297,20374, +20381,20382,20383,20385,20386,20388,20390,20395,20406,20407,20447,20484,20485,20494,20500,20510,20511,20513,20515,20556,20603,20672,20674,20762,20793,20799,20812,20890,20891,20892,20893,20914,20915, +20916,20917,20977,20980,20981,20985,20986,20989,21006,21007,21019,21027,21066,21081,21082,21083,21084,21085,21086,21087,21088,21103,21105,21106,21107,21110,21111,21112,21113,21114,21115,21117,21118, +21133,21145,21147,21151,21152,21153,21155,21156,21158,21165,21167,21172,21175,21188,21192,21193,21194,21197,21209,21248,21256,21257,21277,21279,21283,21311,21330,21336,21340,21359,21361,21365,21367, +21397,21398,21399,21400,21427,21441,21460,21461,21469,21471,21472,21474,21475,21476,21483,21484,21485,21487,21488,21496,21691,21692,21736,21749,21755,21766,21769,21770,21771,21772,21773,21774,21775, +21777,21789,21790,21824,21829,21858,21895,21896,21968,21969,21970,21971,21984,21986,21998,22004,22007,22010,22013,22015,22020,22053,22059,22107,22110,22127,22149,22150,22151,22152,22206,22216,22225, +22227,22231,22278,22312,22386,22407,22410,22430,22431,22448,22453,22455,22456,22462,22468,22469,22476,22477,22485,22488,22489,22494,22498,22834,22901,22916,22922,22931,22935,22936,22937,22990,22998, +22999,23000,23001,23005,23006,23009,23010,23011,23012,23023,23024,23039,23045,23064,23065,23089,23115,23127,23128,23131,23134,23135,23136,23197,23200,23201,23202,23268,23392,23434,23435,23446,23447, +23452,23453,23479,23480,23481,23482,23504,23510,23511,23521,23522,23525,23532,23533,23534,23535,23536,23540,23546,23547,23548,23549,23550,23551,23552,23558,23560,23565,23566,23599,23603,23604,23605, +23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23627,23628,23635,23681,23683,23684,23685,23696,23698,23704,23713,23721,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738, +23739,23748,23749,23766,23770,23773,23779,23783,23791,23792,23802,23804,23819,23820,23823,23824,23825,23831,23833,23835,23836,23838,23839,23840,23842,23844,23851,23856,23857,23859,23860,23862,23888, +23891,23892,23895,23896,23900,23905,23906,23908,23911,23933,23937,23949,23950,23951,23975,23976,23978,23981,23984,23985,23986,23987,24005,24006,24028,24031,24032,24033,24038,24040,24050,24052,24053, +24054,24055,24056,24057,24058,24061,24062,24066,24067,24075,24077,24081,24086,24088,24089,24090,24091,24096,24097,24099,24103,24106,24122,24123,24124,24125,24127,24129,24131,24135,24139,24141,24142, +24145,24147,24148,24149,24150,24151,24154,24155,24157,24164,24168,24176,24186,24188,24189,24190,24191,24192,24195,24197,24208,24209,24218,24226,24227,24232,24233,24234,24236,24253,24254,24255,24256, +24273,24282,24283,24313,24328,24330,24333,24341,24342,24343,24347,24348,24349,24350,24356,24357,24359,24362,24364,24366,24376,24390,24399,24457,24468,24473,24484,24491,24492,24493,24497,24498,24499, +24501,24510,24520,24522,24527,24528,24531,24532,24534,24535,24545,24631,24632,24634,24667,24668,24670,24671,24672,24702,24703,24706,24709,24710,24711,24717,24718,24719,24720,24730,24733,24734,24735, +24736,24737,24738,24739,24750,24751,24806,24807,24811,24813,24821,24823,24825,24866,24881,24884,24885,24886,24905,24938,24965,24967,24974,24975,24993,25019,25020,25032,25036,25037,25039,25043,25045, +25059,25061,25088,25089,25108,25112,25115,25145,25162,25163,25164,25167,25169,25170,25172,25194,25200,25202,25207,25220,25222,25223,25233,25234,25235,25237,25238,25239,25240,25241,25242,25243,25244, +25245,25246,25247,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25261,25264,25266,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279,25280,25281,25282,25285,25286,25288, +25289,25298,25299,25300,25301,25302,25306,25307,25311,25312,25313,25317,25326,25327,25328,25329,25334,25335,25336,25337,25338,25339,25340,25341,25361,25374,25379,25380,25381,25385,25394,25414,25420, +25421,25426,25437,25438,25439,25440,25446,25459,25475,25476,25477,25503,25504,25519,25526,25527,25528,25529,25530,25531,25532,25533,25589,25590,25602,25604,25606,25607,25610,25617,25702,25705,25729, +25730,25736,25737,25747,25749,25751,25759,25761,25767,25776,25780,25783,25797,25807,25808,25809,25810,25811,25812,25816,25819,25825,25826,25838,25849,25883,25884,25887,25888,25889,25890,25891,25892, +25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25925,25926, +25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25950,25976,25977,25978,25982,25983,25992,26044,26078,26083,26084,26085, +26089,26090,26091,26092,26104,26109,26112,26123,26124,26155,26156,26157,26158,26159,26160,26170,26179,26180,26181,26182,26184,26185,26186,26187,26194,26205,26212,26217,26220,26226,26228,26229,26233, +26234,26245,26246,26247,26269,26289,26323,26353,26361,26362,26374,26375,26379,26380,26381,26382,26387,26388,26392,26393,26394,26395,26396,26397,26398,26415,26432,26433,26437,26448,26456,26459,26471, +26474,26485,26486,26487,26504,26505,26506,26507,26508,26523,26537,26538,26539,26540,26541,26542,26546,26547,26548,26549,26551,26552,26556,26557,26558,26560,26561,26564,26565,26566,26567,26568,26569, +26572,26574,26580,26581,26584,26585,26595,26596,26597,26598,26599,26600,26601,26602,26603,26617,26618,26619,26634,26645,26649,26652,26654,26664,26666,26673,26680,26697,26707,26709,26718,26720,26721, +26725,26733,26766,26767,26768,26772,26779,26780,26790,26810,26813,26817,26821,26837,26839,26842,26844,26845,26846,26847,26848,26850,26851,26852,26853,26854,26859,26862,26870,26875,26876,26877,26878, +26879,26880,26881,26883,26885,26888,26894,26900,26901,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26931,26932,26934,26935,26936,26938,26939,26941,26944,26945, +26947,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26968,26969,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26984,26985,26986,26987, +26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27010,27011,27012,27014,27015,27019,27021,27022,27023,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034, +27035,27038,27039,27040,27041,27042,27043,27044,27045,27051,27052,27053,27054,27055,27056,27057,27058,27060,27061,27063,27065,27066,27067,27068,27069,27070,27071,27072,27073,27088,27089,27106,27107, +27108,27109,27110,27119,27125,27126,27132,27133,27134,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27155,27156,27157,27158,27159,27160,27161,27162, +27163,27164,27167,27168,27170,27172,27173,27174,27175,27176,27178,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27193,27194,27195,27204,27219,27221,27231,27243,27248,27250,27251,27258, +27266,27267,27271,27277,27282,27291,27293,27295,27298,27299,27300,27301,27302,27314,27315,27316,27317,27318,27319,27320,27336,27337,27341,27345,27347,27348,27350,27351,27359,27361,27364,27365,27368, +27371,27376,27378,27379,27381,27385,27388,27391,27400,27411,27412,27414,27416,27422,27423,27425,27432,27440,27441,27451,27455,27456,27463,27464,27467,27468,27475,27477,27478,27480,27482,27484,27487, +27488,27489,27494,27495,27497,27499,27500,27501,27504,27509,27511,27516,27517,27518,27519,27520,27521,27532,27535,27536,27537,27538,27540,27543,27544,27545,27549,27550,27553,27557,27558,27559,27560, +27562,27563,27564,27565,27566,27567,27571,27573,27576,27577,27581,27582,27584,27587,27588,27602,27606,27646,27661,27662,27665,27666,27671,27673,27677,27678,27692,27695,27703,27704,27705,27708,27711, +27713,27730,27748,27749,27750,27751,27755,27756,27758,27760,27761,27764,27783,27784,27788,27791,27803,27804,27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27828,27833,27838, +27841,27842,27843,27844,27846,27850,27857,27858,27872,27873,27881,27883,27886,27887,27894,27904,27906,27917,27918,27919,27920,27928,27930,27935,27938,27940,27943,27946,27948,27950,27952,27953,27954, +27955,28031,28032,28033,28038,28039,28040,28042,28043,28044,28045,28046,28047,28054,28057,28061,28063,28065,28070,28076,28090,28094,28125,28135,28157,28160,28175,28176,28177,28178,28179,28205,28228, +28247,28250,28251,28252,28261,28262,28263,28264,28312,28313,28314,28318,28319,28324,28328,28347,28348,28353,28354,28355,28366,28370,28374,28376,28383,28390,28391,28392,28393,28394,28405,28486,28487, +28488,28489,28490,28491,28507,28545,28566,28568,28569,28571,28572,28573,28593,28596,28613,28615,28618,28621,28623,28624,28638,28650,28651,28674,28675,28676,28677,28678,28679,28680,28682,28685,28686, +28687,28690,28691,28692,28693,28694,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28714,28715,28716,28718,28721,28722,28723,28725,28726,28727,28728,28742,28771,28774, +28776,28781,28790,28791,28792,28794,28796,28797,28798,28799,28800,28801,28806,28807,28809,28810,28811,28812,28813,28818,28827,28828,28829,28830,28831,28832,28857,28863,28865,28866,28867,28868,28869, +28870,28872,28889,28930,28951,28956,28958,28987,28989,28990,28991,28992,28993,28994,28995,28997,29016,29019,29020,29039,29043,29088,29093,29095,29111,29137,29139,29141,29142,29143,29144,29145,29152, +29154,29155,29156,29157,29158,29159,29160,29161,29162,29171,29191,29202,29203,29205,29207,29208,29212,29233,29245,29250,29251,29252,29253,29261,29277,29282,29283,29285,29339,29346,29348,29476,29478, +29480,29491,29493,29494,29495,29496,29497,29499,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29523,29527,29528,29529,29530,29532,29535,29537,29538,29547,29548,29579,29583,29593,29611, +29617,29628,29631,29636,29640,29641,29650,29651,29658,29662,29663,29687,29688,29689,29702,29703,29712,29714,29715,29716,29727,29729,29730,29731,29732,29740,29743,29744,29745,29750,29776,29795,29799, +29855,29910,29921,29922,29923,29924,29925,29926,29942,29948,29953,29965,29966,29973,29996,30039,30058,30059,30067,30072,30073,30076,30077,30104,30107,30116,30117,30155,30166,30182,30189,30217,30231, +30233,30238,30239,30240,30241,30244,30253,30254,30255,30256,30257,30259,30261,30263,30265,30266,30269,30271,30274,30280,30281,30290,30344,30346,30347,30351,30352,30354,30355,30377,30380,30381,30382, +30392,30394,30408,30426,30427,30428,30431,30433,30440,30441,30472,30489,30566,30567,30569,30578,30579,30580,30581,30582,30583,30584,30586,30587,30590,30596,30604,30605,30606,30607,30608,30610,30611, +30618,30619,30671,30672,30678,30706,30709,30710,30711,30713,30715,30716,30717,30721,30722,30723,30724,30726,30727,30729,30730,30731,30732,30733,30734,30735,30737,30739,30740,30752,30753,30754,30755, +30824,30826,30827,30833,30838,30839,30840,30855,30866,30867,31033,31036,31052,31053,31054,31078,31091,31106,31107,31108,31109,31111,31151,31153,31216,31238,31247,31248,31273,31285,31290,31291,31294, +31295,31296,31297,31298,31299,31300,31302,31304,31305,31307,31310,31313,31328,31330,31412,31416,31417,31418,31419,31420,31421,31422,31423,31425,31426,31427,31429,31430,31431,31433,31434,31522,31523, +31545,31549,31551,31552,31557,31563,31564,31578,31579,31580,31581,31582,31639,31649,31701,31737,31739,31784,31785,31804,31805,31806,31808,31810,31832,31833,31834,31841,31842,31882,31891,31916,32150, +32169,32170,32172,32190,32216,32222,32223,32239,32251,32252,32253,32287,32294,32296,32301,32302,32303,32307,32308,32310,32311,32312,32315,32321,32322,32324,32325,32328,32337,32339,32340,32341,32342, +32343,32346,32363,32364,32365,32367,32371,32379,32380,32381,32382,32383,32384,32385,32387,32401,32402,32403,32411,32412,32413,32418,32419,32420,32421,32424,32426,32451,32453,32454,32474,32493,32494, +32509,32510,32514,32515,32516,32533,32538,32564,32565,32566,32573,32596,32597,32598,32599,32600,32601,32602,32604,32615,32626,32627,32629,32632,32657,32658,32659,32660,32668,32669,32675,32676,32677, +32678,32679,32680,32681,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32695,32697,32700,32702,32704,32706,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719, +32720,32721,32723,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32773,32774,32777, +32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32832,32833,32834,32835,32842,32843,32898,33018,33019,33026,33027,33059,33060,33061,33062,33063,33067, +33069,33080,33109,33114,33139,33146,33167,33217,33222,33223,33225,33235,33264,33307,33309,33310,33312,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33335,33361,33372,33373,33379,33403, +33405,33434,33435,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33531,33538,33539,33540,33541,33542, +33543,33544,33545,33547,33548,33549,33553,33554,33555,33556,33557,33560,33563,33565,33566,33579,33580,33581,33583,33586,33587,33588,33589,33590,33591,33592,33593,33594,33596,33597,33598,33599,33600, +33601,33602,33603,33624,33628,33629,33643,33644,33645,33648,33649,33650,33652,33653,33654,33655,33656,33657,33666,33669,33698,33759,33762,33763,33769,33770,33771,33780,33782,33783,33784,33788,33844, +33845,33853,33854,33863,33865,33866,33867,33868,33869,33871,33872,33956,33957,33963,33964,33972,33973,33974,33992,33996,34036,34037,34038,34039,34040,34043,34044,34054,34058,34059,34060,34061,34062, +34063,34064,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34102,34107,34119,34179,34252,34437,34526,34528,34612,34765,34766,34775,34776,34777,34778,34793,34802,34882,34885, +34895,34948,34949,34950,34951,34955,34971,34972,34973,34976,34978,34983,34985,34986,34987,34988,34989,34991,34993,34997,34998,34999,35000,35001,35002,35007,35008,35017,35019,35020,35021,35022,35023, +35024,35025,35026,35027,35068,35069,35070,35073,35085,35086,35087,35088,35090,35091,35093,35094,35098,35099,35100,35101,35102,35131,35132,35133,35135,35273,35281,35290,35291,35299,35322,35335,35336, +35361,35364,35365,35373,35460,35462,35467,35471,35492,35494,35495,35496,35497,35498,35500,35507,35508,35573,35574,35575,35576,35577,35578,35579,35580,35587,35594,35596,35597,35598,35599,35600,35601, +35602,35603,35607,35611,35612,35644,35790,35983,35984,36095,36151,36152,36162,36164,36165,36166,36169,36208,36213,36217,36224,36225,36226,36235,36273,36284,36351,36352,36355,36356,36359,36360,36380, +36390,36431,36479,36481,36506,36517,36557,36558,36559,36644,36648,36656,36657,36970,36971,36991,37063,37072,37074,37100,37101,37172,37182,37183,37510,37596,37687,37688,37689,37693,37696,37699,37700, +37715,37764,37765,37775,37781,37790,37798,37800,37825,37831,37833,37860,37869,37879,37888,37941,37942,37944,38050,38052,38066,38164,38208,38293,38295,38334,38335,38336,38337,38338,38339,38566,38716, +38825,38830,38831,38839,38843,38846,38870,38877,38900,38901,38905,38906,38919,38920,38921,39060,39089,39158,39172,39173,39371,39633,39712,39934,40120,40138,40160,40184,40204,40253,40352,40356,40374, +40388,40405,40413,40435,40436,40438,40443,40481,40606,40607)); diff --git a/sql/updates/world/3.3.5/2024_12_15_00_world.sql b/sql/updates/world/3.3.5/2024_12_15_00_world.sql new file mode 100644 index 00000000000..4c0133e0460 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_15_00_world.sql @@ -0,0 +1,2 @@ +-- Buzzard +UPDATE `creature_template_addon` SET `AnimTier`=3,`PvPFlags`=0 WHERE `entry`=2830; diff --git a/sql/updates/world/3.3.5/2024_12_16_00_world.sql b/sql/updates/world/3.3.5/2024_12_16_00_world.sql new file mode 100644 index 00000000000..ba36e2cd3e1 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_16_00_world.sql @@ -0,0 +1,2 @@ +-- Spirit Healer (Area: Gates of Ironforge - Difficulty: 0) +UPDATE `creature` SET `position_x`=-5156.3134765625, `position_y`=-864.98028564453125, `position_z`=507.67919921875, `orientation`=4.035317420959472656, `VerifiedBuild`=57689 WHERE `guid`=87044 AND `id`=6491; diff --git a/sql/updates/world/3.3.5/2024_12_16_01_world.sql b/sql/updates/world/3.3.5/2024_12_16_01_world.sql new file mode 100644 index 00000000000..6b99efcb09d --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_16_01_world.sql @@ -0,0 +1,2 @@ +-- Shattered Sun Marksman +UPDATE `creature_addon` SET `SheathState`=2 WHERE `guid` IN (96656,96658); diff --git a/sql/updates/world/3.3.5/2024_12_17_00_world.sql b/sql/updates/world/3.3.5/2024_12_17_00_world.sql new file mode 100644 index 00000000000..234470d4125 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_00_world.sql @@ -0,0 +1,71 @@ +-- +SET @OGUID := 79897; -- Need 62 +SET @EVENT := 12; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+61; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 180405, 595, 4100, 4100, 3, 1, 1560.671875, 625.26910400390625, 99.86887359619140625, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+1, 180523, 595, 4100, 4100, 3, 1, 1569.0103759765625, 606.97918701171875, 100.1761093139648437, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 7200, 255, 1, 56713), -- Apple Bob (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+2, 180407, 595, 4100, 4100, 3, 1, 1587.65625, 667.14410400390625, 103.0442886352539062, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+3, 180431, 595, 4100, 4100, 3, 1, 2003.513916015625, 1287.404541015625, 145.7567901611328125, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 7200, 255, 1, 56713), -- G_Pumpkin_01 scale 4.0 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+4, 180405, 595, 4100, 4100, 3, 1, 1564.8853759765625, 586.18927001953125, 100.9324264526367187, 3.926995515823364257, 0, 0, -0.92387866973876953, 0.38268551230430603, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+5, 180406, 595, 4100, 4100, 3, 1, 1605.2899169921875, 676.4375, 105.4878463745117187, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+6, 180405, 595, 4100, 4100, 3, 1, 1592.717041015625, 681.19793701171875, 104.5380325317382812, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+7, 180411, 595, 4100, 4100, 3, 1, 1596.4461669921875, 671.19793701171875, 112.6099319458007812, 1.186823248863220214, 0, 0, 0.559192657470703125, 0.829037725925445556, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 0) CreateObject1 +(@OGUID+8, 180406, 595, 4100, 4100, 3, 1, 1599.9947509765625, 662.05206298828125, 103.3326873779296875, 5.916667938232421875, 0, 0, -0.18223476409912109, 0.98325502872467041, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+9, 180406, 595, 4100, 4100, 3, 1, 1616.7847900390625, 754.013916015625, 115.2821731567382812, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+10, 180411, 595, 4100, 4100, 3, 1, 1549.6754150390625, 594.638916015625, 107.3046875, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+11, 180406, 595, 4100, 4100, 3, 1, 1557.5069580078125, 615.64239501953125, 99.77874755859375, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+12, 180407, 595, 4100, 4100, 3, 1, 1635.720458984375, 816.5399169921875, 120.1334075927734375, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+13, 180405, 595, 4100, 4100, 3, 1, 1916.109375, 1298.60595703125, 142.4672393798828125, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+14, 180405, 595, 4100, 4100, 3, 1, 1936.9791259765625, 1275.8853759765625, 145.9156951904296875, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+15, 180407, 595, 4100, 4100, 3, 1, 2157.3369140625, 1260.6649169921875, 134.7227020263671875, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+16, 180406, 595, 4100, 4100, 3, 1, 2155.27783203125, 1293.34375, 134.35076904296875, 1.047197580337524414, 0, 0, 0.5, 0.866025388240814208, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+17, 180405, 595, 4100, 4100, 3, 1, 2228.895751953125, 1336.8853759765625, 127.61419677734375, 5.288348197937011718, 0, 0, -0.4771585464477539, 0.878817260265350341, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+18, 180411, 595, 4100, 4100, 3, 1, 2196.697998046875, 1223.44970703125, 143.6862335205078125, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+19, 180406, 595, 4100, 4100, 3, 1, 1984.8785400390625, 1332.2708740234375, 143.2194976806640625, 0.872663915157318115, 0, 0, 0.422617912292480468, 0.906307935714721679, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+20, 180405, 595, 4100, 4100, 3, 1, 1980.78125, 1298.75, 146.1199188232421875, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+21, 180407, 595, 4100, 4100, 3, 1, 1958.548583984375, 1276.079833984375, 146.206695556640625, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+22, 180407, 595, 4100, 4100, 3, 1, 1958.78125, 1298.8316650390625, 146.205108642578125, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+23, 180407, 595, 4100, 4100, 3, 1, 2332.64404296875, 1254.0069580078125, 133.479217529296875, 3.543023586273193359, 0, 0, -0.97992420196533203, 0.199370384216308593, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+24, 180405, 595, 4100, 4100, 3, 1, 1984.5035400390625, 1244.8021240234375, 143.2156219482421875, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+25, 180406, 595, 4100, 4100, 3, 1, 1937.171875, 1298.9410400390625, 145.9352874755859375, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+26, 180406, 595, 4100, 4100, 3, 1, 2187.157958984375, 1243.6163330078125, 137.33526611328125, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+27, 180405, 595, 4100, 4100, 3, 1, 1830.954833984375, 1287.44970703125, 143.5936431884765625, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+28, 180407, 595, 4100, 4100, 3, 1, 2178.020751953125, 1233.69970703125, 137.325775146484375, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+29, 180406, 595, 4100, 4100, 3, 1, 1980.1007080078125, 1276.0538330078125, 146.1192779541015625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+30, 180405, 595, 4100, 4100, 3, 1, 2077.151123046875, 1280.6336669921875, 141.5343017578125, 2.652894020080566406, 0, 0, 0.970294952392578125, 0.241925001144409179, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+31, 180407, 595, 4100, 4100, 3, 1, 2267.9375, 1337.4322509765625, 124.4153900146484375, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+32, 180406, 595, 4100, 4100, 3, 1, 2228.81591796875, 1326.123291015625, 127.8727188110351562, 4.904376029968261718, 0, 0, -0.636077880859375, 0.771624863147735595, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+33, 180407, 595, 4100, 4100, 3, 1, 2232.302001953125, 1145.795166015625, 139.8232421875, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+34, 180406, 595, 4100, 4100, 3, 1, 2205.111083984375, 1203.8958740234375, 136.977691650390625, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+35, 180407, 595, 4100, 4100, 3, 1, 2214.72216796875, 1212.6441650390625, 137.13104248046875, 1.029743075370788574, 0, 0, 0.492423057556152343, 0.870355963706970214, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+36, 180406, 595, 4100, 4100, 3, 1, 2267.947998046875, 1323.4305419921875, 125.920806884765625, 2.007128477096557617, 0, 0, 0.84339141845703125, 0.537299633026123046, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+37, 180407, 595, 4100, 4100, 3, 1, 2076.864501953125, 1294.8211669921875, 141.652618408203125, 1.396261811256408691, 0, 0, 0.642786979675292968, 0.766044974327087402, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+38, 180406, 595, 4100, 4100, 3, 1, 1915.73095703125, 1276.0035400390625, 142.3786163330078125, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+39, 180406, 595, 4100, 4100, 3, 1, 2315.975830078125, 1410.767333984375, 128.2122955322265625, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+40, 180411, 595, 4100, 4100, 3, 1, 2025.5382080078125, 1287.295166015625, 150.1963043212890625, 3.141592741012573242, 0, 0, -1, 0, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+41, 180405, 595, 4100, 4100, 3, 1, 2369.345458984375, 1190.0035400390625, 132.0498809814453125, 4.9218292236328125, 0, 0, -0.62932014465332031, 0.77714616060256958, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+42, 180406, 595, 4100, 4100, 3, 1, 2365.678955078125, 1206.09033203125, 131.5900726318359375, 5.410521507263183593, 0, 0, -0.42261791229248046, 0.906307935714721679, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+43, 180405, 595, 4100, 4100, 3, 1, 2338.741455078125, 1423.5347900390625, 128.133087158203125, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+44, 180411, 595, 4100, 4100, 3, 1, 2398.38720703125, 1206.93408203125, 150.74884033203125, 1.902408957481384277, 0, 0, 0.814115524291992187, 0.580702960491180419, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+45, 180406, 595, 4100, 4100, 3, 1, 2399.6494140625, 1172.5260009765625, 148.0749053955078125, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+46, 180411, 595, 4100, 4100, 3, 1, 2417.494873046875, 1209.1197509765625, 150.519256591796875, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+47, 180407, 595, 4100, 4100, 3, 1, 2411.182373046875, 1174.939208984375, 148.074951171875, 4.101525306701660156, 0, 0, -0.88701057434082031, 0.461749136447906494, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+48, 180411, 595, 4100, 4100, 3, 1, 2435.392333984375, 1214.0364990234375, 150.6657257080078125, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 7200, 255, 1, 56713), -- G_Ghost_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+49, 180405, 595, 4100, 4100, 3, 1, 2412.885498046875, 1094.3038330078125, 148.0759124755859375, 2.530723094940185546, 0, 0, 0.953716278076171875, 0.300707906484603881, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+50, 180407, 595, 4100, 4100, 3, 1, 2418.798583984375, 1140.7569580078125, 148.075897216796875, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+51, 180406, 595, 4100, 4100, 3, 1, 2407.296875, 1138.248291015625, 148.0759124755859375, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+52, 180405, 595, 4100, 4100, 3, 1, 2408.685791015625, 1113.015625, 148.0759124755859375, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+53, 180407, 595, 4100, 4100, 3, 1, 2438.479248046875, 1206.1146240234375, 149.1508941650390625, 6.12610626220703125, 0, 0, -0.07845878601074218, 0.996917366981506347, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+54, 180406, 595, 4100, 4100, 3, 1, 2467.420166015625, 1130.220458984375, 158.0266876220703125, 5.794494152069091796, 0, 0, -0.24192142486572265, 0.970295846462249755, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+55, 180407, 595, 4100, 4100, 3, 1, 2472.703125, 1105.9149169921875, 157.9708251953125, 4.817109584808349609, 0, 0, -0.66913032531738281, 0.74314504861831665, 7200, 255, 1, 56713), -- G_Pumpkin_03 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+56, 180405, 595, 4100, 4100, 3, 1, 1664.904541015625, 890.26910400390625, 119.99566650390625, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+57, 180405, 595, 4100, 4100, 3, 1, 1691.451416015625, 954.13714599609375, 120.3690032958984375, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+58, 180406, 595, 4100, 4100, 3, 1, 1669.29345703125, 1017.84722900390625, 125.0198974609375, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 7200, 255, 1, 56713), -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+59, 180405, 595, 4100, 4100, 3, 1, 1670.0416259765625, 1097.859375, 127.4366989135742187, 0.750490784645080566, 0, 0, 0.3665008544921875, 0.93041771650314331, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+60, 180405, 595, 4100, 4100, 3, 1, 1688.498291015625, 1185.3211669921875, 132.57257080078125, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 7200, 255, 1, 56713), -- G_Pumpkin_01 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+61, 180406, 595, 4100, 4100, 3, 1, 1739.0399169921875, 1249.2760009765625, 137.710540771484375, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 7200, 255, 1, 56713); -- G_Pumpkin_02 (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+61 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+61; diff --git a/sql/updates/world/3.3.5/2024_12_17_01_world.sql b/sql/updates/world/3.3.5/2024_12_17_01_world.sql new file mode 100644 index 00000000000..f2b7da2922d --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_01_world.sql @@ -0,0 +1,82 @@ +-- +SET @OGUID := 93806; -- Need 73 +SET @EVENT := 2; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+72; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 187235, 595, 4100, 4100, 3, 1, 1587.892333984375, 667.3992919921875, 103.0756301879882812, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+1, 187191, 595, 4100, 4100, 3, 1, 1573.171875, 622.828125, 99.63867950439453125, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+2, 187235, 595, 4100, 4100, 3, 1, 1560.3992919921875, 577.02606201171875, 106.6330337524414062, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+3, 187235, 595, 4100, 4100, 3, 1, 1606.8975830078125, 677.27081298828125, 105.852813720703125, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+4, 187235, 595, 4100, 4100, 3, 1, 1593.1632080078125, 681.8524169921875, 104.6160125732421875, 0.541050612926483154, 0, 0, 0.267237663269042968, 0.96363067626953125, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+5, 187235, 595, 4100, 4100, 3, 1, 1555.8038330078125, 601.5711669921875, 99.15207672119140625, 1.012289404869079589, 0, 0, 0.484808921813964843, 0.87462007999420166, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+6, 187235, 595, 4100, 4100, 3, 1, 1616.62158203125, 754.20660400390625, 115.3078079223632812, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+7, 187567, 595, 4100, 4100, 3, 1, 1575.0347900390625, 618.4757080078125, 104.6546630859375, 1.099556446075439453, 0, 0, 0.522498130798339843, 0.852640450000762939, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+8, 187235, 595, 4100, 4100, 3, 1, 1599.44970703125, 661.5625, 103.2282791137695312, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+9, 187567, 595, 4100, 4100, 3, 1, 1569.8316650390625, 597.65277099609375, 103.2068328857421875, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+10, 187235, 595, 4100, 4100, 3, 1, 1635.25, 816.97222900390625, 120.2372894287109375, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+11, 187235, 595, 4100, 4100, 3, 1, 1664.5660400390625, 890.685791015625, 120.117706298828125, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+12, 187235, 595, 4100, 4100, 3, 1, 1691.2239990234375, 954.69964599609375, 120.3922805786132812, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+13, 187235, 595, 4100, 4100, 3, 1, 1669.0660400390625, 1018.2603759765625, 125.0752334594726562, 5.480334281921386718, 0, 0, -0.39073085784912109, 0.920504987239837646, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+14, 187235, 595, 4100, 4100, 3, 1, 1669.842041015625, 1098.0364990234375, 127.4882278442382812, 5.393068790435791015, 0, 0, -0.43051052093505859, 0.902585566043853759, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+15, 187235, 595, 4100, 4100, 3, 1, 1688.30908203125, 1185.3697509765625, 132.57421875, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+16, 187235, 595, 4100, 4100, 3, 1, 1739.0538330078125, 1249.53125, 137.72503662109375, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+17, 187235, 595, 4100, 4100, 3, 1, 1830.8524169921875, 1287.626708984375, 143.58587646484375, 3.90954136848449707, 0, 0, -0.92718315124511718, 0.37460830807685852, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+18, 187235, 595, 4100, 4100, 3, 1, 1916.1285400390625, 1275.9288330078125, 142.4715576171875, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+19, 187235, 595, 4100, 4100, 3, 1, 1915.9947509765625, 1298.732666015625, 142.4404754638671875, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+20, 187235, 595, 4100, 4100, 3, 1, 1937.0538330078125, 1275.6927490234375, 145.923309326171875, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+21, 187235, 595, 4100, 4100, 3, 1, 1937.1944580078125, 1298.96875, 145.9376373291015625, 4.59021615982055664, 0, 0, -0.74895572662353515, 0.662620067596435546, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+22, 187235, 595, 4100, 4100, 3, 1, 1958.6754150390625, 1275.9444580078125, 146.2058258056640625, 1.535889506340026855, 0, 0, 0.694658279418945312, 0.719339847564697265, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+23, 187235, 595, 4100, 4100, 3, 1, 1958.76220703125, 1299.123291015625, 146.205230712890625, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+24, 187235, 595, 4100, 4100, 3, 1, 1984.2742919921875, 1244.0191650390625, 143.217498779296875, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+25, 187235, 595, 4100, 4100, 3, 1, 1980.185791015625, 1276.2708740234375, 146.119354248046875, 1.413715124130249023, 0, 0, 0.649447441101074218, 0.760406434535980224, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+26, 187235, 595, 4100, 4100, 3, 1, 1980.545166015625, 1298.796875, 146.1197052001953125, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+27, 187235, 595, 4100, 4100, 3, 1, 1984.6771240234375, 1332.60595703125, 143.220458984375, 6.03883981704711914, 0, 0, -0.12186908721923828, 0.9925462007522583, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+28, 187235, 595, 4100, 4100, 3, 1, 2017.642333984375, 1261.329833984375, 142.9531097412109375, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+29, 187235, 595, 4100, 4100, 3, 1, 2033.34033203125, 1281.6285400390625, 143.624755859375, 1.431168079376220703, 0, 0, 0.656058311462402343, 0.754710197448730468, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+30, 187235, 595, 4100, 4100, 3, 1, 2033.7569580078125, 1293.685791015625, 143.4059295654296875, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+31, 187235, 595, 4100, 4100, 3, 1, 2017.4617919921875, 1313.5625, 142.949127197265625, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+32, 187235, 595, 4100, 4100, 3, 1, 2067.348876953125, 1293.375, 141.9972686767578125, 5.061456203460693359, 0, 0, -0.57357597351074218, 0.819152355194091796, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+33, 187235, 595, 4100, 4100, 3, 1, 2067.857666015625, 1281.2413330078125, 141.9698333740234375, 1.204277276992797851, 0, 0, 0.56640625, 0.824126183986663818, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+34, 187567, 595, 4100, 4100, 3, 1, 2104.20654296875, 1306.1927490234375, 144.4675750732421875, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+35, 187567, 595, 4100, 4100, 3, 1, 2106.89404296875, 1380.51220703125, 139.30267333984375, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+36, 187235, 595, 4100, 4100, 3, 1, 2154.65625, 1293.204833984375, 134.4106597900390625, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+37, 187235, 595, 4100, 4100, 3, 1, 2194.291748046875, 1288.751708984375, 134.5957794189453125, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+38, 187235, 595, 4100, 4100, 3, 1, 2187.078125, 1243.5625, 137.3231964111328125, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+39, 187235, 595, 4100, 4100, 3, 1, 2177.614501953125, 1234.0035400390625, 137.313629150390625, 2.216565132141113281, 0, 0, 0.894933700561523437, 0.44619917869567871, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+40, 187235, 595, 4100, 4100, 3, 1, 2204.904541015625, 1204.0086669921875, 136.990386962890625, 5.6897735595703125, 0, 0, -0.29237174987792968, 0.956304728984832763, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+41, 187235, 595, 4100, 4100, 3, 1, 2214.890625, 1212.2586669921875, 137.1099395751953125, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+42, 187235, 595, 4100, 4100, 3, 1, 2228.6806640625, 1326.1197509765625, 127.8867874145507812, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+43, 187235, 595, 4100, 4100, 3, 1, 2228.91845703125, 1337.0347900390625, 127.625213623046875, 3.473210096359252929, 0, 0, -0.98628520965576171, 0.165049895644187927, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+44, 187235, 595, 4100, 4100, 3, 1, 2267.93408203125, 1323.55908203125, 125.9082565307617187, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+45, 187235, 595, 4100, 4100, 3, 1, 2231.807373046875, 1145.2222900390625, 139.6356353759765625, 0.959929943084716796, 0, 0, 0.461748123168945312, 0.887011110782623291, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+46, 187235, 595, 4100, 4100, 3, 1, 2267.907958984375, 1337.30908203125, 124.4250564575195312, 6.073746204376220703, 0, 0, -0.10452842712402343, 0.994521915912628173, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+47, 187235, 595, 4100, 4100, 3, 1, 2332.710205078125, 1253.6978759765625, 133.481353759765625, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+48, 187235, 595, 4100, 4100, 3, 1, 2316.064208984375, 1410.5867919921875, 128.1347808837890625, 0, 0, 0, 0, 1, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+49, 187235, 595, 4100, 4100, 3, 1, 2316.713623046875, 1157.361083984375, 135.58953857421875, 2.321286916732788085, 0, 0, 0.917059898376464843, 0.398749500513076782, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+50, 187235, 595, 4100, 4100, 3, 1, 2344.272705078125, 1216.18408203125, 131.106964111328125, 4.991643905639648437, 0, 0, -0.60181427001953125, 0.798636078834533691, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+51, 187235, 595, 4100, 4100, 3, 1, 2369.5087890625, 1189.9566650390625, 132.0734100341796875, 3.298687219619750976, 0, 0, -0.99691677093505859, 0.078466430306434631, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+52, 187235, 595, 4100, 4100, 3, 1, 2338.635498046875, 1423.48095703125, 128.1294097900390625, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+53, 187235, 595, 4100, 4100, 3, 1, 2365.51220703125, 1206.0208740234375, 131.530059814453125, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+54, 187567, 595, 4100, 4100, 3, 1, 2371.5, 1199.4288330078125, 140.5843963623046875, 3.403396368026733398, 0, 0, -0.99144458770751953, 0.130528271198272705, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+55, 187235, 595, 4100, 4100, 3, 1, 2400.90966796875, 1219.62158203125, 134.0390167236328125, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+56, 187194, 595, 4100, 4100, 3, 1, 2395.723876953125, 1194.1319580078125, 142.4735870361328125, 1.745326757431030273, 0, 0, 0.766043663024902343, 0.642788589000701904, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+57, 187235, 595, 4100, 4100, 3, 1, 2389.998291015625, 1194.26220703125, 148.0759124755859375, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+58, 187235, 595, 4100, 4100, 3, 1, 2395.064208984375, 1176.1875, 133.93292236328125, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+59, 187235, 595, 4100, 4100, 3, 1, 2399.833251953125, 1172.3489990234375, 148.0749053955078125, 1.361356139183044433, 0, 0, 0.629320144653320312, 0.77714616060256958, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+60, 187235, 595, 4100, 4100, 3, 1, 2418.4775390625, 1223.9947509765625, 134.0390167236328125, 4.694936752319335937, 0, 0, -0.71325016021728515, 0.700909554958343505, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+61, 187194, 595, 4100, 4100, 3, 1, 2407.859375, 1196.763916015625, 142.53497314453125, 1.815141916275024414, 0, 0, 0.788010597229003906, 0.615661680698394775, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+62, 187194, 595, 4100, 4100, 3, 1, 2421.213623046875, 1200.0069580078125, 142.5443267822265625, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+63, 187235, 595, 4100, 4100, 3, 1, 2411.060791015625, 1175.234375, 148.074920654296875, 2.059488296508789062, 0, 0, 0.857167243957519531, 0.515038192272186279, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+64, 187235, 595, 4100, 4100, 3, 1, 2407.21533203125, 1138.1649169921875, 148.0759124755859375, 5.375615119934082031, 0, 0, -0.4383707046508789, 0.898794233798980712, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+65, 187194, 595, 4100, 4100, 3, 1, 2433.482666015625, 1202.951416015625, 142.5956878662109375, 1.780233979225158691, 0, 0, 0.7771453857421875, 0.629321098327636718, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+66, 187235, 595, 4100, 4100, 3, 1, 2418.864501953125, 1141.2552490234375, 148.075897216796875, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+67, 187235, 595, 4100, 4100, 3, 1, 2408.55029296875, 1113.0538330078125, 148.0759124755859375, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+68, 187194, 595, 4100, 4100, 3, 1, 2412.736083984375, 1103.907958984375, 154.756591796875, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+69, 187235, 595, 4100, 4100, 3, 1, 2412.786376953125, 1094.19970703125, 148.0759124755859375, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+70, 187235, 595, 4100, 4100, 3, 1, 2452.13720703125, 1122.0504150390625, 148.075897216796875, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+71, 187235, 595, 4100, 4100, 3, 1, 2455.65625, 1104.7725830078125, 148.075897216796875, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 +(@OGUID+72, 187235, 595, 4100, 4100, 3, 1, 2520.549560546875, 1138.0416259765625, 132.076507568359375, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 7200, 255, 1, 57916); -- Standing, Exterior, Medium - Xmas (Area: The Culling of Stratholme - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+72 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+72; diff --git a/sql/updates/world/3.3.5/2024_12_17_02_world.sql b/sql/updates/world/3.3.5/2024_12_17_02_world.sql new file mode 100644 index 00000000000..3f0df0d756c --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_02_world.sql @@ -0,0 +1,81 @@ +-- +SET @OGUID := 48873; -- SET BY THE TDB TEAM (Need 24) +SET @EVENT := 12; + +-- Cursed Darkhound - No such spawn exists on 1.15.4 (57134) and Wotlk classic (51739) at that location, even after Hallow's End +DELETE FROM `creature` WHERE `guid`=45217; + +-- Wickerman Guardian +UPDATE `creature_template` SET `gossip_menu_id`=6536, `npcflag`=1, `BaseAttackTime`=3000, `RangeAttackTime`=3000, `unit_flags`=32832 WHERE `entry`=15195; + +DELETE FROM `creature_template_addon` WHERE `entry`=15195; +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(15195, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, '12187'); + +DELETE FROM `gossip_menu` WHERE `MenuID`=6536 AND `TextID`=7739; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(6536, 7739, 0); + +-- Darkcaller Yanka +UPDATE `broadcast_text` SET `Text1`='Welcome to the Wickerman Festival, $c!$B$BOn the observance of Hallow''s End, the Forsaken burn a wickerman in honor of this, the most revered of occasions. It was on this day that the Banshee Queen herself delivered us from the clutches of the Lich King and the Scourge. We have remained free ever since. Those who would have seen us fall are repaid in full... with vengeance!$B$BThe burning of the Wickerman begins at 8:00 PM!', `VerifiedBuild`=0 WHERE `ID`=10671; +UPDATE `npc_text` SET `text0_1`='Welcome to the Wickerman Festival, $c!$B$BOn the observance of Hallow''s End, the Forsaken burn a wickerman in honor of this, the most revered of occasions. It was on this day that the Banshee Queen herself delivered us from the clutches of the Lich King and the Scourge. We have remained free ever since. Those who would have seen us fall are repaid in full... with vengeance!$B$BThe burning of the Wickerman begins at 8:00 PM!', `VerifiedBuild`=0 WHERE `ID`=7740; + +DELETE FROM `creature_template_addon` WHERE `entry`=15197; +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(15197, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, ''); + +DELETE FROM `gossip_menu` WHERE `MenuID`=6537 AND `TextID`=7740; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(6537, 7740, 0); + +-- Existing spawn updates +UPDATE `creature` SET `zoneId`=85, `areaId`=153, `position_x`=1751.79833984375, `position_y`=512.40234375, `position_z`=37.38980865478515625, `orientation`=1.431169986724853515, `spawntimesecs`=0 WHERE `guid`=85633; -- Instant respawn on Wrath classic +UPDATE `creature` SET `zoneId`=85, `areaId`=153, `position_x`=1728.943603515625, `position_y`=548.496337890625, `position_z`=34.24716949462890625, `orientation`=4.537856101989746093, `spawntimesecs`=0 WHERE `guid`=85634; -- Instant respawn on Wrath classic +UPDATE `creature` SET `zoneId`=85, `areaId`=153, `position_x`=1712.1248779296875, `position_y`=512.95538330078125, `position_z`=36.6183013916015625, `orientation`=1.588249564170837402, `spawntimesecs`=0 WHERE `guid`=85632; -- Instant respawn on Wrath classic +UPDATE `creature` SET `zoneId`=85, `areaId`=153, `position_x`=1731.7572021484375, `position_y`=521.96514892578125, `position_z`=35.98299407958984375, `orientation`=1.588249564170837402 WHERE `guid`=85635; + +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1731.435546875, `position_y`=508.8170166015625, `position_z`=41.35896682739257812, `orientation`=1.500982880592346191, `rotation2`=0.681998252868652343, `rotation3`=0.731353819370269775 WHERE `guid`=17870; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1746.1051025390625, `position_y`=517.218017578125, `position_z`=38.87208938598632812, `orientation`=3.52557229995727539, `rotation2`=-0.98162651062011718, `rotation3`=0.190812408924102783 WHERE `guid`=17879; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1750.8131103515625, `position_y`=509.61712646484375, `position_z`=38.33571243286132812, `orientation`=1.535889506340026855, `rotation2`=0.694658279418945312, `rotation3`=0.719339847564697265 WHERE `guid`=17868; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1759.492431640625, `position_y`=515.94879150390625, `position_z`=35.30905914306640625, `orientation`=5.253442287445068359, `rotation2`=-0.49242305755615234, `rotation3`=0.870355963706970214 WHERE `guid`=17871; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1744.9915771484375, `position_y`=475.503570556640625, `position_z`=61.65636444091796875, `orientation`=5.183629035949707031, `rotation2`=-0.52249813079833984, `rotation3`=0.852640450000762939 WHERE `guid`=17873; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1719.737060546875, `position_y`=523.3734130859375, `position_z`=36.81510162353515625, `orientation`=3.490667104721069335, `rotation2`=-0.98480701446533203, `rotation3`=0.173652306199073791 WHERE `guid`=17881; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1727.8775634765625, `position_y`=475.36956787109375, `position_z`=63.6461334228515625, `orientation`=3.543023586273193359, `rotation2`=-0.97992420196533203, `rotation3`=0.199370384216308593 WHERE `guid`=17880; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1707.3563232421875, `position_y`=519.654052734375, `position_z`=34.97322845458984375, `orientation`=5.654868602752685546, `rotation2`=-0.30901622772216796, `rotation3`=0.95105677843093872 WHERE `guid`=17872; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1709.513916015625, `position_y`=509.67730712890625, `position_z`=36.90455245971679687, `orientation`=1.431168079376220703, `rotation2`=0.656058311462402343, `rotation3`=0.754710197448730468 WHERE `guid`=17869; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1714.2874755859375, `position_y`=473.915802001953125, `position_z`=61.64679718017578125, `orientation`=2.251473426818847656, `rotation2`=0.902585029602050781, `rotation3`=0.430511653423309326 WHERE `guid`=17874; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1741.1187744140625, `position_y`=505.332916259765625, `position_z`=41.39785385131835937, `orientation`=4.642575740814208984, `rotation2`=-0.731353759765625, `rotation3`=0.681998312473297119 WHERE `guid`=17875; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1731.564208984375, `position_y`=514.59552001953125, `position_z`=39.34745407104492187, `orientation`=5.70722818374633789, `rotation2`=-0.28401470184326171, `rotation3`=0.958819925785064697 WHERE `guid`=17876; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1722.21875, `position_y`=512.33160400390625, `position_z`=39.15671920776367187, `orientation`=0.209439441561698913, `rotation2`=0.104528427124023437, `rotation3`=0.994521915912628173 WHERE `guid`=17877; +UPDATE `gameobject` SET `zoneId`=85, `areaId`=153, `position_x`=1731.5814208984375, `position_y`=500.1231689453125, `position_z`=42.50485992431640625, `orientation`=4.502951622009277343, `rotation2`=-0.7771453857421875, `rotation3`=0.629321098327636718 WHERE `guid`=17878; + +-- Missing Spawns +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+23; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 180434, 0, 85, 153, 1, 1, 1735.592041015625, 549.92852783203125, 33.68162918090820312, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 0), -- Bonfire (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+1, 180432, 0, 85, 153, 1, 1, 1731.3472900390625, 474.772796630859375, 61.65636444091796875, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 120, 255, 1, 0), -- Forsaken Banner (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+2, 180426, 0, 85, 153, 1, 1, 1733.6595458984375, 533.2462158203125, 47.54170608520507812, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+3, 180426, 0, 85, 153, 1, 1, 1734.2559814453125, 531.1075439453125, 50.04204940795898437, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+4, 180427, 0, 85, 153, 1, 1, 1734.5611572265625, 531.56109619140625, 57.94888687133789062, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+5, 180427, 0, 85, 153, 1, 1, 1734.66015625, 531.1474609375, 54.41878890991210937, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+6, 180426, 0, 85, 153, 1, 1, 1734.4339599609375, 531.14208984375, 47.4670867919921875, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+7, 180427, 0, 85, 153, 1, 1, 1734.4556884765625, 531.4183349609375, 61.71345901489257812, 5.078907966613769531, 0, 0, -0.56640625, 0.824126183986663818, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+8, 180426, 0, 85, 153, 1, 1, 1734.533203125, 531.1978759765625, 46.06215286254882812, 2.391098499298095703, 0, 0, 0.930417060852050781, 0.366502493619918823, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+9, 180426, 0, 85, 153, 1, 1, 1734.3553466796875, 531.16339111328125, 49.0607147216796875, 5.619962215423583984, 0, 0, -0.32556724548339843, 0.945518851280212402, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+10, 180427, 0, 85, 153, 1, 1, 1734.4178466796875, 531.39447021484375, 52.01569366455078125, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+11, 180427, 0, 85, 153, 1, 1, 1734.52392578125, 531.32806396484375, 57.34672164916992187, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+12, 180426, 0, 85, 153, 1, 1, 1734.533203125, 531.1978759765625, 46.79131698608398437, 2.600535154342651367, 0, 0, 0.963629722595214843, 0.26724100112915039, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+13, 180427, 0, 85, 153, 1, 1, 1734.6168212890625, 531.39324951171875, 55.88604736328125, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+14, 180427, 0, 85, 153, 1, 1, 1734.592041015625, 531.23779296875, 58.59108352661132812, 0.069811686873435974, 0, 0, 0.034898757934570312, 0.999390840530395507, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+15, 180426, 0, 85, 153, 1, 1, 1734.533203125, 531.1978759765625, 50.65242767333984375, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+16, 180427, 0, 85, 153, 1, 1, 1734.4432373046875, 531.34063720703125, 57.0312652587890625, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+17, 180426, 0, 85, 153, 1, 1, 1734.533203125, 531.1978759765625, 45.555206298828125, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+18, 180427, 0, 85, 153, 1, 1, 1734.52392578125, 531.32806396484375, 55.53421783447265625, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+19, 180426, 0, 85, 153, 1, 1, 1734.5540771484375, 531.27490234375, 49.49390411376953125, 3.001946926116943359, 0, 0, 0.997563362121582031, 0.069766148924827575, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+20, 180427, 0, 85, 153, 1, 1, 1734.68505859375, 531.302978515625, 54.98458099365234375, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 120, 255, 1, 0), -- Bat02 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+21, 180426, 0, 85, 153, 1, 1, 1734.5748291015625, 531.3519287109375, 51.23121261596679687, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 120, 255, 1, 0), -- Bat01 (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject1 +(@OGUID+22, 180437, 0, 85, 153, 1, 1, 1738.4254150390625, 512.015625, 39.81720733642578125, 4.607671737670898437, 0, 0, -0.74314403533935546, 0.669131457805633544, 120, 255, 1, 0), -- Wickerman Ashes (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject2 +(@OGUID+23, 180437, 0, 85, 153, 1, 1, 1721.447265625, 505.14117431640625, 40.88557815551757812, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, 0); -- Wickerman Ashes (Area: Ruins of Lordaeron - Difficulty: 0) CreateObject2 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+23 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+23; diff --git a/sql/updates/world/3.3.5/2024_12_17_03_world.sql b/sql/updates/world/3.3.5/2024_12_17_03_world.sql new file mode 100644 index 00000000000..ffe974fbb8e --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_03_world.sql @@ -0,0 +1,13 @@ +-- +SET @OGUID := 12730; -- Need 4 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+3; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181015, 571, 2817, 4553, 1, 1, 5604.60791015625, 115.6718826293945312, 151.761444091796875, 3.700104713439941406, 0, 0, -0.96126079559326171, 0.275640487670898437, 120, 255, 1, 52237), -- Standing, Large - Val (Area: Forlorn Woods - Difficulty: 0) CreateObject1 +(@OGUID+1, 181015, 571, 2817, 4553, 1, 1, 5604.44091796875, 113.9027786254882812, 151.72705078125, 0, 0, 0, 0, 1, 120, 255, 1, 52237), -- Standing, Large - Val (Area: Forlorn Woods - Difficulty: 0) CreateObject1 +(@OGUID+2, 181015, 571, 2817, 4553, 1, 1, 5569.87744140625, 158.564239501953125, 151.6475677490234375, 1.151916384696960449, 0, 0, 0.544638633728027343, 0.838670849800109863, 120, 255, 1, 52237), -- Standing, Large - Val (Area: Forlorn Woods - Difficulty: 0) CreateObject1 +(@OGUID+3, 181015, 571, 2817, 4553, 1, 1, 5568.32666015625, 159.4322967529296875, 151.8090362548828125, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, 52237); -- Standing, Large - Val (Area: Forlorn Woods - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+3 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+3; diff --git a/sql/updates/world/3.3.5/2024_12_17_04_world.sql b/sql/updates/world/3.3.5/2024_12_17_04_world.sql new file mode 100644 index 00000000000..87bd037c975 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_04_world.sql @@ -0,0 +1,21 @@ +-- +SET @OGUID := 13570; -- Need 12 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+11; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181060, 571, 65, 4161, 1, 1, 3572.83935546875, 265.182342529296875, 45.70560073852539062, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+1, 181060, 571, 65, 4161, 1, 1, 3564.302734375, 294.137481689453125, 45.70593643188476562, 3.996806621551513671, 0, 0, -0.90996074676513671, 0.414694398641586303, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+2, 181060, 571, 65, 4161, 1, 1, 3549.798583984375, 245.620880126953125, 45.7057647705078125, 4.642575740814208984, 0, 0, -0.731353759765625, 0.681998312473297119, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+3, 181019, 571, 65, 4161, 1, 1, 3555.038330078125, 299.092620849609375, 45.70467758178710937, 3.141592741012573242, 0, 0, -1, 0, 120, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+4, 181060, 571, 65, 4161, 1, 1, 3522.945068359375, 260.23529052734375, 45.71449661254882812, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+5, 181060, 571, 65, 4161, 1, 1, 3526.265625, 290.728240966796875, 45.74524307250976562, 5.497788906097412109, 0, 0, -0.38268280029296875, 0.923879802227020263, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Wyrmrest Temple - Difficulty: 0) CreateObject1 +(@OGUID+6, 181018, 571, 65, 4158, 1, 1, 3519.55029296875, 2023.3880615234375, 67.93622589111328125, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+7, 181018, 571, 65, 4158, 1, 1, 3505.42236328125, 2014.634521484375, 68.2199554443359375, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+8, 181018, 571, 65, 4158, 1, 1, 3518.782958984375, 1993.7606201171875, 67.3443603515625, 3.682650327682495117, 0, 0, -0.96362972259521484, 0.26724100112915039, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+9, 181060, 571, 65, 4158, 1, 1, 3499.606689453125, 1984.6790771484375, 66.1546783447265625, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+10, 181018, 571, 65, 4158, 1, 1, 3500.45654296875, 1971.029541015625, 67.74578857421875, 2.513273954391479492, 0, 0, 0.951056480407714843, 0.309017121791839599, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Stars' Rest - Difficulty: 0) CreateObject1 +(@OGUID+11, 187575, 571, 65, 65, 1, 1, 3612.02685546875, 1412.470458984375, 92.6059722900390625, 4.852017402648925781, 0, 0, -0.65605831146240234, 0.754710197448730468, 120, 255, 1, 52237); -- Hanging, Square, Small - Val (Area: Dragonblight - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+11 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+11; diff --git a/sql/updates/world/3.3.5/2024_12_17_05_world.sql b/sql/updates/world/3.3.5/2024_12_17_05_world.sql new file mode 100644 index 00000000000..401e0b8b0d6 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_05_world.sql @@ -0,0 +1,32 @@ +-- +SET @OGUID := 49863; -- Need 23 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+22; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181018, 571, 210, 4504, 1, 1, 6283.17333984375, 71.0634765625, 391.978668212890625, 0.855210542678833007, 0, 0, 0.414692878723144531, 0.909961462020874023, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+1, 181018, 571, 210, 4504, 1, 1, 6299.56103515625, 55.87326431274414062, 394.769744873046875, 0.942476630210876464, 0, 0, 0.453989982604980468, 0.891006767749786376, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+2, 181018, 571, 210, 4504, 1, 1, 6258.50244140625, 95.34896087646484375, 395.153106689453125, 0.785396754741668701, 0, 0, 0.38268280029296875, 0.923879802227020263, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+3, 181018, 571, 210, 4504, 1, 1, 6274.251953125, 79.741973876953125, 391.81329345703125, 0.750490784645080566, 0, 0, 0.3665008544921875, 0.93041771650314331, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+4, 181016, 571, 210, 4504, 1, 1, 6251.80712890625, 1.444553017616271972, 409.33984375, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+5, 181018, 571, 210, 4504, 1, 1, 6197.2724609375, 63.93402862548828125, 381.164825439453125, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+6, 181016, 571, 210, 4504, 1, 1, 6241.6943359375, 68.83843231201171875, 388.5811767578125, 5.218535900115966796, 0, 0, -0.507537841796875, 0.861629426479339599, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Valley of Echoes - Difficulty: 0) CreateObject1 +(@OGUID+7, 181016, 571, 210, 4501, 1, 1, 6198.2890625, -0.38237801194190979, 409.916168212890625, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+8, 181018, 571, 210, 4501, 1, 1, 6185.263671875, 63.80685806274414062, 381.187469482421875, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+9, 181016, 571, 210, 4501, 1, 1, 6193.05712890625, 28.86382484436035156, 380.5521240234375, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+10, 181016, 571, 210, 4501, 1, 1, 6232.294921875, -5.16493082046508789, 410.164642333984375, 3.804818391799926757, 0, 0, -0.94551849365234375, 0.325568377971649169, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+11, 181060, 571, 210, 4501, 1, 1, 6259.2744140625, -27.9760208129882812, 410.822052001953125, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+12, 181016, 571, 210, 4501, 1, 1, 6212.54052734375, 10.8203134536743164, 410.164093017578125, 5.235987663269042968, 0, 0, -0.5, 0.866025388240814208, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+13, 181060, 571, 210, 4501, 1, 1, 6249.42822265625, -27.5517578125, 410.8948974609375, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+14, 181060, 571, 210, 4501, 1, 1, 6242.62060546875, -48.8146705627441406, 422.644927978515625, 0.122172988951206207, 0, 0, 0.061048507690429687, 0.998134791851043701, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+15, 181016, 571, 210, 4501, 1, 1, 6166.5849609375, -67.562286376953125, 388.179901123046875, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+16, 187575, 571, 210, 4501, 1, 1, 6161.72998046875, -60.3888893127441406, 388.70074462890625, 6.248279094696044921, 0, 0, -0.01745223999023437, 0.999847710132598876, 120, 255, 1, 52237), -- Hanging, Square, Small - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+17, 181060, 571, 210, 4501, 1, 1, 6170.07275390625, -68.9854583740234375, 390.381256103515625, 5.323255538940429687, 0, 0, -0.46174812316894531, 0.887011110782623291, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+18, 181016, 571, 210, 4501, 1, 1, 6127.73681640625, -26.387369155883789, 383.51031494140625, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+19, 181018, 571, 210, 4501, 1, 1, 6162.23291015625, -74.4932708740234375, 391.39105224609375, 0.383971005678176879, 0, 0, 0.190808296203613281, 0.981627285480499267, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+20, 181018, 571, 210, 4501, 1, 1, 6150.57958984375, -58.6980247497558593, 390.6942138671875, 3.385940074920654296, 0, 0, -0.99254608154296875, 0.121869951486587524, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+21, 181018, 571, 210, 4501, 1, 1, 6156.791015625, -57.0425338745117187, 390.897674560546875, 0.27925160527229309, 0, 0, 0.139172554016113281, 0.990268170833587646, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 +(@OGUID+22, 181018, 571, 210, 4501, 1, 1, 6156.5029296875, -76.918731689453125, 391.327484130859375, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 120, 255, 1, 52237); -- Hanging, Tall/Thin, Medium - Val (Area: The Argent Vanguard - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+22 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+22; diff --git a/sql/updates/world/3.3.5/2024_12_17_06_world.sql b/sql/updates/world/3.3.5/2024_12_17_06_world.sql new file mode 100644 index 00000000000..e538fc891c4 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_06_world.sql @@ -0,0 +1,37 @@ +-- +SET @OGUID := 52524; -- Need 28 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+27; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181018, 34, 717, 717, 1, 1, 95.93645477294921875, -4.61641597747802734, -25.1972179412841796, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+1, 181018, 34, 717, 717, 1, 1, 95.9949493408203125, 6.155707836151123046, -25.2080059051513671, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+2, 181018, 34, 717, 717, 1, 1, 140.0503387451171875, 6.163999080657958984, -25.1972179412841796, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+3, 181018, 34, 717, 717, 1, 1, 134.4687347412109375, -8.19999599456787109, -24.9982643127441406, 3.194002151489257812, 0, 0, -0.99965667724609375, 0.026201646775007247, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+4, 181016, 34, 717, 717, 1, 1, 133.368682861328125, 4.94775390625, -25.6062335968017578, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+5, 181018, 34, 717, 717, 1, 1, 118.8793106079101562, -4.63945913314819335, -25.2098541259765625, 1.48352813720703125, 0, 0, 0.675589561462402343, 0.737277925014495849, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+6, 181018, 34, 717, 717, 1, 1, 121.1558685302734375, -53.6179161071777343, -33.5352783203125, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+7, 181018, 34, 717, 717, 1, 1, 117.762359619140625, 6.045464038848876953, -24.9732646942138671, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+8, 181018, 34, 717, 717, 1, 1, 123.7063980102539062, 9.523133277893066406, -25.0326118469238281, 6.265733242034912109, 0, 0, -0.00872611999511718, 0.999961912631988525, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+9, 181016, 34, 717, 717, 1, 1, 124.8732223510742187, -3.53060889244079589, -25.6062335968017578, 0.767943859100341796, 0, 0, 0.374606132507324218, 0.927184045314788818, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+10, 181016, 34, 717, 717, 1, 1, 124.9492034912109375, 5.040185928344726562, -25.6062335968017578, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+11, 181016, 34, 717, 717, 1, 1, 75.0347747802734375, 4.980967998504638671, -25.6062335968017578, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+12, 181018, 34, 717, 717, 1, 1, 126.530853271484375, 56.84122467041015625, -33.4548606872558593, 6.108653545379638671, 0, 0, -0.08715534210205078, 0.996194720268249511, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+13, 181018, 34, 717, 717, 1, 1, 139.4825592041015625, -4.63111400604248046, -25.2104682922363281, 1.605701684951782226, 0, 0, 0.719339370727539062, 0.694658815860748291, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+14, 181016, 34, 717, 717, 1, 1, 75.0807342529296875, -3.46844291687011718, -25.6062335968017578, 2.216565132141113281, 0, 0, 0.894933700561523437, 0.44619917869567871, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+15, 181016, 34, 717, 717, 1, 1, 133.4145050048828125, -3.47149205207824707, -25.6062335968017578, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+16, 181018, 34, 717, 717, 1, 1, 131.7865753173828125, -55.2373390197753906, -33.537628173828125, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+17, 181018, 34, 717, 717, 1, 1, 123.55029296875, -7.77634286880493164, -25.1972160339355468, 0.104719325900077819, 0, 0, 0.052335739135742187, 0.998629570007324218, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+18, 181018, 34, 717, 717, 1, 1, 134.490753173828125, 9.605150222778320312, -25.1972179412841796, 3.194002151489257812, 0, 0, -0.99965667724609375, 0.026201646775007247, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+19, 181018, 34, 717, 717, 1, 1, 115.260986328125, -73.350830078125, -33.5295143127441406, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+20, 181018, 34, 717, 717, 1, 1, 137.0919036865234375, 54.82421493530273437, -33.5295143127441406, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+21, 181016, 34, 717, 717, 1, 1, 111.367950439453125, -88.3172607421875, -33.9395637512207031, 0.436331570148468017, 0, 0, 0.216439247131347656, 0.976296067237854003, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+22, 181018, 34, 717, 717, 1, 1, 125.4581985473632812, -77.0105743408203125, -33.5379219055175781, 2.809975385665893554, 0, 0, 0.986285209655761718, 0.165049895644187927, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+23, 181018, 34, 717, 717, 1, 1, 133.3552703857421875, 79.84642791748046875, -33.4236106872558593, 5.986480236053466796, 0, 0, -0.14780902862548828, 0.989015936851501464, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+24, 181016, 34, 717, 717, 1, 1, 116.36749267578125, -90.6798171997070312, -33.9395637512207031, 1.902408957481384277, 0, 0, 0.814115524291992187, 0.580702960491180419, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+25, 181018, 34, 717, 717, 1, 1, 143.1554107666015625, 75.4530029296875, -33.5304145812988281, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+26, 181016, 34, 717, 717, 1, 1, 141.8401336669921875, 92.261383056640625, -33.9395637512207031, 4.904376029968261718, 0, 0, -0.636077880859375, 0.771624863147735595, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 +(@OGUID+27, 181016, 34, 717, 717, 1, 1, 147.2406158447265625, 89.62396240234375, -33.9395637512207031, 3.560472726821899414, 0, 0, -0.97814750671386718, 0.207912087440490722, 7200, 255, 1, 52237); -- Standing, Exterior, Medium - Val (Area: The Stockade - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+27 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+27; diff --git a/sql/updates/world/3.3.5/2024_12_17_07_world.sql b/sql/updates/world/3.3.5/2024_12_17_07_world.sql new file mode 100644 index 00000000000..dcc928524d9 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_07_world.sql @@ -0,0 +1,43 @@ +-- +SET @OGUID := 60360; -- Need 34 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+33; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181025, 571, 3537, 4032, 1, 1, 2293.540283203125, 5174.7177734375, 25.11964607238769531, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+1, 181060, 571, 3537, 4032, 1, 1, 2303.144287109375, 5193.45849609375, 18.77863883972167968, 5.89921426773071289, 0, 0, -0.19080829620361328, 0.981627285480499267, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+2, 181060, 571, 3537, 4032, 1, 1, 2304.0087890625, 5195.68896484375, 18.77863693237304687, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+3, 181060, 571, 3537, 4032, 1, 1, 2288.107666015625, 5203.8837890625, 13.63426113128662109, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+4, 181060, 571, 3537, 4032, 1, 1, 2276.773681640625, 5199.5341796875, 24.89459800720214843, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+5, 181060, 571, 3537, 4032, 1, 1, 2290.5908203125, 5201.154296875, 24.89418220520019531, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+6, 181060, 571, 3537, 4032, 1, 1, 2300.87109375, 5202.06591796875, 18.77513504028320312, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+7, 181060, 571, 3537, 4032, 1, 1, 2289.228515625, 5206.75927734375, 13.63449668884277343, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+8, 181060, 571, 3537, 4032, 1, 1, 2291.030517578125, 5196.255859375, 16.54580879211425781, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+9, 181060, 571, 3537, 4032, 1, 1, 2296.923095703125, 5193.869140625, 16.54580879211425781, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+10, 181025, 571, 3537, 4032, 1, 1, 2288.474365234375, 5160.943359375, 25.54812049865722656, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+11, 181060, 571, 3537, 4032, 1, 1, 2289.666259765625, 5198.8798828125, 24.89882850646972656, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+12, 181060, 571, 3537, 4032, 1, 1, 2278.044921875, 5202.72509765625, 24.89858818054199218, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+13, 181025, 571, 3537, 4032, 1, 1, 2330.237060546875, 5169.8720703125, 25.63700103759765625, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+14, 181025, 571, 3537, 4032, 1, 1, 2362.818603515625, 5195.90087890625, 19.76927375793457031, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+15, 181025, 571, 3537, 4032, 1, 1, 2373.8203125, 5235.90185546875, 20.25008392333984375, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+16, 181025, 571, 3537, 4032, 1, 1, 2293.540283203125, 5174.7177734375, 25.11964607238769531, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+17, 181060, 571, 3537, 4032, 1, 1, 2303.144287109375, 5193.45849609375, 18.77863883972167968, 5.89921426773071289, 0, 0, -0.19080829620361328, 0.981627285480499267, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+18, 181060, 571, 3537, 4032, 1, 1, 2304.0087890625, 5195.68896484375, 18.77863693237304687, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+19, 181060, 571, 3537, 4032, 1, 1, 2288.107666015625, 5203.8837890625, 13.63426113128662109, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+20, 181060, 571, 3537, 4032, 1, 1, 2276.773681640625, 5199.5341796875, 24.89459800720214843, 4.258606910705566406, 0, 0, -0.84804725646972656, 0.529920578002929687, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+21, 181060, 571, 3537, 4032, 1, 1, 2290.5908203125, 5201.154296875, 24.89418220520019531, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+22, 181060, 571, 3537, 4032, 1, 1, 2300.87109375, 5202.06591796875, 18.77513504028320312, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+23, 181060, 571, 3537, 4032, 1, 1, 2289.228515625, 5206.75927734375, 13.63449668884277343, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+24, 181060, 571, 3537, 4032, 1, 1, 2291.030517578125, 5196.255859375, 16.54580879211425781, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+25, 181060, 571, 3537, 4032, 1, 1, 2296.923095703125, 5193.869140625, 16.54580879211425781, 1.221729278564453125, 0, 0, 0.573575973510742187, 0.819152355194091796, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+26, 181025, 571, 3537, 4032, 1, 1, 2288.474365234375, 5160.943359375, 25.54812049865722656, 4.345870018005371093, 0, 0, -0.82412624359130859, 0.566406130790710449, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+27, 181060, 571, 3537, 4032, 1, 1, 2289.666259765625, 5198.8798828125, 24.89882850646972656, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+28, 181060, 571, 3537, 4032, 1, 1, 2278.044921875, 5202.72509765625, 24.89858818054199218, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+29, 181025, 571, 3537, 4032, 1, 1, 2330.237060546875, 5169.8720703125, 25.63700103759765625, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+30, 181025, 571, 3537, 4032, 1, 1, 2361.501708984375, 5274.708984375, 25.85167312622070312, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+31, 181025, 571, 3537, 4032, 1, 1, 2373.8203125, 5235.90185546875, 20.25008392333984375, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+32, 181025, 571, 3537, 4032, 1, 1, 2362.818603515625, 5195.90087890625, 19.76927375793457031, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Large - Val (Area: Valiance Keep - Difficulty: 0) CreateObject1 +(@OGUID+33, 181016, 571, 3537, 4114, 1, 1, 3099.8447265625, 3831.98388671875, 23.01079750061035156, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 120, 255, 1, 52237); -- Standing, Exterior, Medium - Val (Area: Death's Stand - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+33 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+33; diff --git a/sql/updates/world/3.3.5/2024_12_17_08_world.sql b/sql/updates/world/3.3.5/2024_12_17_08_world.sql new file mode 100644 index 00000000000..a0d85247025 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_08_world.sql @@ -0,0 +1,25 @@ +-- +SET @OGUID := 13684; -- Need 16 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+15; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181060, 571, 495, 4379, 1, 1, 593.67724609375, -4929.41357421875, 31.07939338684082031, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+1, 181060, 571, 495, 4379, 1, 1, 589.42169189453125, -4926.30126953125, 19.81484222412109375, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+2, 181060, 571, 495, 4379, 1, 1, 588.70184326171875, -4923.255859375, 19.81484222412109375, 3.333590030670166015, 0, 0, -0.99539566040039062, 0.095851235091686248, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+3, 181060, 571, 495, 4379, 1, 1, 582.01080322265625, -4933.2568359375, 31.07901382446289062, 0.191985160112380981, 0, 0, 0.095845222473144531, 0.995396256446838378, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Valgarde - Difficulty: 0) CreateObject1 +(@OGUID+4, 181016, 571, 495, 3997, 1, 1, 493.364593505859375, -5904.35595703125, 308.904937744140625, 2.67034769058227539, 0, 0, 0.972369194030761718, 0.233448356389999389, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+5, 181019, 571, 495, 3997, 1, 1, 491.35296630859375, -5933.67138671875, 310.585845947265625, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 120, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+6, 181019, 571, 495, 3997, 1, 1, 491.8101806640625, -5927.2802734375, 309.67877197265625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 120, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+7, 181060, 571, 495, 3997, 1, 1, 492.902740478515625, -5928.03076171875, 309.63958740234375, 2.740161895751953125, 0, 0, 0.979924201965332031, 0.199370384216308593, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+8, 181060, 571, 495, 3997, 1, 1, 490.626617431640625, -5934.06298828125, 309.60113525390625, 2.72271275520324707, 0, 0, 0.978147506713867187, 0.207912087440490722, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+9, 181016, 571, 495, 3997, 1, 1, 469.700531005859375, -5927.3427734375, 308.720245361328125, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+10, 181016, 571, 495, 3997, 1, 1, 499.0128173828125, -5932.87744140625, 308.70391845703125, 2.687806606292724609, 0, 0, 0.974370002746582031, 0.224951311945915222, 120, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Explorers' League Outpost - Difficulty: 0) CreateObject1 +(@OGUID+11, 181018, 571, 495, 4532, 1, 1, 1900.7137451171875, -6182.30615234375, 31.16156959533691406, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+12, 181018, 571, 495, 4532, 1, 1, 1892.77783203125, -6183.73583984375, 25.80629158020019531, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+13, 181018, 571, 495, 4532, 1, 1, 1869.909912109375, -6225.537109375, 14.98772907257080078, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 120, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Vengeance Landing Inn - Difficulty: 0) CreateObject1 +(@OGUID+14, 181060, 571, 495, 4018, 1, 1, 2688.802001953125, -4390.22998046875, 285.700103759765625, 2.949595451354980468, 0, 0, 0.995395660400390625, 0.095851235091686248, 120, 255, 1, 52237), -- Standing, Interior, Small - Val (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 +(@OGUID+15, 181060, 571, 495, 4018, 1, 1, 2676.61669921875, -4381.39453125, 285.759613037109375, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, 52237); -- Standing, Interior, Small - Val (Area: Camp Winterhoof - Difficulty: 0) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+15 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+15; diff --git a/sql/updates/world/3.3.5/2024_12_17_09_world.sql b/sql/updates/world/3.3.5/2024_12_17_09_world.sql new file mode 100644 index 00000000000..dee5ba70c6f --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_09_world.sql @@ -0,0 +1,69 @@ +-- +SET @OGUID := 93879; -- Need 60 +SET @EVENT := 8; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+59; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181018, 230, 1584, 1584, 1, 1, 813.86322021484375, -161.558303833007812, -45.3045234680175781, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+1, 181019, 230, 1584, 1584, 1, 1, 814.4091796875, -163.350357055664062, -48.8337898254394531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+2, 181019, 230, 1584, 1584, 1, 1, 830.051025390625, -154.908187866210937, -48.8724784851074218, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+3, 181019, 230, 1584, 1584, 1, 1, 813.79742431640625, -173.237197875976562, -48.8575973510742187, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+4, 181018, 230, 1584, 1584, 1, 1, 831.00372314453125, -151.674484252929687, -45.2715301513671875, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+5, 181019, 230, 1584, 1584, 1, 1, 821.51080322265625, -165.189788818359375, -48.8584213256835937, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+6, 181019, 230, 1584, 1584, 1, 1, 817.587646484375, -180.069839477539062, -48.8832054138183593, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+7, 181019, 230, 1584, 1584, 1, 1, 821.517333984375, -174.794845581054687, -48.8382034301757812, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+8, 181019, 230, 1584, 1584, 1, 1, 830.65447998046875, -163.977706909179687, -48.8799667358398437, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+9, 181019, 230, 1584, 1584, 1, 1, 825.64508056640625, -172.155960083007812, -48.8906478881835937, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+10, 181019, 230, 1584, 1584, 1, 1, 824.186279296875, -181.402633666992187, -48.8682975769042968, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+11, 181018, 230, 1584, 1584, 1, 1, 839.2431640625, -146.911148071289062, -45.1783866882324218, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+12, 181019, 230, 1584, 1584, 1, 1, 838.3072509765625, -151.834442138671875, -48.8711280822753906, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+13, 181016, 230, 1584, 1584, 1, 1, 848.40118408203125, -146.280960083007812, -48.0858535766601562, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+14, 181019, 230, 1584, 1584, 1, 1, 845.77923583984375, -147.699447631835937, -48.8352317810058593, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+15, 181018, 230, 1584, 1584, 1, 1, 825.04437255859375, -196.507476806640625, -45.1789016723632812, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+16, 181019, 230, 1584, 1584, 1, 1, 859.0894775390625, -139.844696044921875, -48.8765220642089843, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+17, 181019, 230, 1584, 1584, 1, 1, 842.66400146484375, -190.0352783203125, -48.9150581359863281, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+18, 181016, 230, 1584, 1584, 1, 1, 855.560791015625, -142.067169189453125, -48.0872077941894531, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+19, 181019, 230, 1584, 1584, 1, 1, 859.877197265625, -164.822097778320312, -48.8167572021484375, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+20, 181019, 230, 1584, 1584, 1, 1, 858.850830078125, -172.606338500976562, -48.8477973937988281, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+21, 181019, 230, 1584, 1584, 1, 1, 852.69146728515625, -206.595291137695312, -42.8749275207519531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+22, 181018, 230, 1584, 1584, 1, 1, 838.52777099609375, -216.232437133789062, -40.4565963745117187, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+23, 181018, 230, 1584, 1584, 1, 1, 861.327392578125, -134.148818969726562, -45.1275825500488281, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+24, 181018, 230, 1584, 1584, 1, 1, 860.12847900390625, -134.8443603515625, -45.1895942687988281, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+25, 181019, 230, 1584, 1584, 1, 1, 869.12408447265625, -163.900482177734375, -48.863983154296875, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+26, 181018, 230, 1584, 1584, 1, 1, 850.86859130859375, -209.101882934570312, -40.4154052734375, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+27, 181017, 230, 1584, 1584, 1, 1, 838.7147216796875, -222.66021728515625, -37.0061607360839843, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 7200, 255, 1, 52237), -- Hanging, Streamer - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+28, 181019, 230, 1584, 1584, 1, 1, 866.95819091796875, -144.804336547851562, -48.8856277465820312, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+29, 181019, 230, 1584, 1584, 1, 1, 857.49957275390625, -201.502288818359375, -42.8255538940429687, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+30, 181019, 230, 1584, 1584, 1, 1, 866.53594970703125, -176.090911865234375, -48.8597908020019531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+31, 181019, 230, 1584, 1584, 1, 1, 868.82647705078125, -132.47650146484375, -48.8573799133300781, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+32, 181019, 230, 1584, 1584, 1, 1, 863.470703125, -196.907791137695312, -42.7922248840332031, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+33, 181018, 230, 1584, 1584, 1, 1, 867.6173095703125, -130.514495849609375, -45.225494384765625, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+34, 181018, 230, 1584, 1584, 1, 1, 868.75506591796875, -129.855484008789062, -45.1952095031738281, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+35, 181019, 230, 1584, 1584, 1, 1, 874.01025390625, -140.8642578125, -48.8708381652832031, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+36, 181019, 230, 1584, 1584, 1, 1, 876.23687744140625, -144.416824340820312, -48.8697128295898437, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+37, 181016, 230, 1584, 1584, 1, 1, 879.82562255859375, -145.934921264648437, -49.7594146728515625, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+38, 181018, 230, 1584, 1584, 1, 1, 880.23974609375, -144.10186767578125, -45.7563362121582031, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+39, 181019, 230, 1584, 1584, 1, 1, 878.63201904296875, -161.084808349609375, -48.8503570556640625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+40, 181016, 230, 1584, 1584, 1, 1, 886.7518310546875, -156.676010131835937, -49.7605171203613281, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+41, 181018, 230, 1584, 1584, 1, 1, 888.09454345703125, -157.4302978515625, -45.9000625610351562, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 7200, 255, 1, 52237), -- Hanging, Tall/Thin, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+42, 181019, 230, 1584, 1584, 1, 1, 877.284912109375, -169.196365356445312, -48.8408546447753906, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+43, 181019, 230, 1584, 1584, 1, 1, 884.7393798828125, -164.978225708007812, -48.8521690368652343, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+44, 181016, 230, 1584, 1584, 1, 1, 874.26885986328125, -182.293807983398437, -43.7037086486816406, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+45, 181055, 230, 1584, 1584, 1, 1, 892.45867919921875, -168.13189697265625, -37.2256965637207031, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+46, 181019, 230, 1584, 1584, 1, 1, 891.04571533203125, -170.570388793945312, -42.8331985473632812, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+47, 181055, 230, 1584, 1584, 1, 1, 898.56494140625, -178.46807861328125, -37.0914573669433593, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+48, 181019, 230, 1584, 1584, 1, 1, 893.2525634765625, -198.249710083007812, -42.8702888488769531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+49, 181019, 230, 1584, 1584, 1, 1, 896.01025390625, -202.805862426757812, -42.86553955078125, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 52237), -- Standing, Interior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+50, 181017, 230, 1584, 1584, 1, 1, 907.94866943359375, -200.629318237304687, -37.4735183715820312, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 52237), -- Hanging, Streamer - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+51, 181055, 230, 1584, 1584, 1, 1, 886.67987060546875, -212.390411376953125, -37.4664421081542968, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+52, 181017, 230, 1584, 1584, 1, 1, 904.153076171875, -202.728240966796875, -37.4635429382324218, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 52237), -- Hanging, Streamer - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+53, 181016, 230, 1584, 1584, 1, 1, 870.17364501953125, -219.478271484375, -43.703704833984375, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 7200, 255, 1, 52237), -- Standing, Exterior, Medium - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+54, 181055, 230, 1584, 1584, 1, 1, 876.1754150390625, -218.1158447265625, -37.5497932434082031, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+55, 181055, 230, 1584, 1584, 1, 1, 897.0703125, -206.644729614257812, -37.4958915710449218, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+56, 181017, 230, 1584, 1584, 1, 1, 848.7298583984375, -234.750701904296875, -37.2758712768554687, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 7200, 255, 1, 52237), -- Hanging, Streamer - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+57, 181055, 230, 1584, 1584, 1, 1, 843.09368896484375, -229.72198486328125, -36.9932708740234375, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+58, 181055, 230, 1584, 1584, 1, 1, 855.3809814453125, -230.789016723632812, -37.2526893615722656, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 7200, 255, 1, 52237), -- Hanging, Streamer x3 - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+59, 181017, 230, 1584, 1584, 1, 1, 862.14080810546875, -226.75653076171875, -37.2087326049804687, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 7200, 255, 1, 52237); -- Hanging, Streamer - Val (Area: Blackrock Depths - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+59 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+59; diff --git a/sql/updates/world/3.3.5/2024_12_17_10_world.sql b/sql/updates/world/3.3.5/2024_12_17_10_world.sql new file mode 100644 index 00000000000..262c286c35d --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_10_world.sql @@ -0,0 +1,69 @@ +-- +SET @OGUID := 93939; -- Need 60 +SET @EVENT := 1; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+59; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 181388, 230, 1584, 1584, 1, 1, 813.79742431640625, -173.237197875976562, -48.8575973510742187, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+1, 181393, 230, 1584, 1584, 1, 1, 813.86322021484375, -161.558303833007812, -45.3045234680175781, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+2, 181388, 230, 1584, 1584, 1, 1, 814.4091796875, -163.350357055664062, -48.8337898254394531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+3, 181388, 230, 1584, 1584, 1, 1, 817.587646484375, -180.069839477539062, -48.8832054138183593, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+4, 181388, 230, 1584, 1584, 1, 1, 821.51080322265625, -165.189788818359375, -48.8584213256835937, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+5, 181388, 230, 1584, 1584, 1, 1, 821.517333984375, -174.794845581054687, -48.8382034301757812, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+6, 181388, 230, 1584, 1584, 1, 1, 825.64508056640625, -172.155960083007812, -48.8906478881835937, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+7, 181393, 230, 1584, 1584, 1, 1, 831.00372314453125, -151.674484252929687, -45.2715301513671875, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+8, 181388, 230, 1584, 1584, 1, 1, 830.051025390625, -154.908187866210937, -48.8724784851074218, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+9, 181388, 230, 1584, 1584, 1, 1, 830.65447998046875, -163.977706909179687, -48.8799667358398437, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+10, 181388, 230, 1584, 1584, 1, 1, 824.186279296875, -181.402633666992187, -48.8682975769042968, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+11, 181393, 230, 1584, 1584, 1, 1, 839.2431640625, -146.911148071289062, -45.1783866882324218, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+12, 181388, 230, 1584, 1584, 1, 1, 838.3072509765625, -151.834442138671875, -48.8711280822753906, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+13, 181388, 230, 1584, 1584, 1, 1, 845.77923583984375, -147.699447631835937, -48.8352317810058593, 5.113816738128662109, 0, 0, -0.55193614959716796, 0.833886384963989257, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+14, 181355, 230, 1584, 1584, 1, 1, 848.40118408203125, -146.280960083007812, -48.0858535766601562, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 55262), -- Standing, Exterior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+15, 181393, 230, 1584, 1584, 1, 1, 825.04437255859375, -196.507476806640625, -45.1789016723632812, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+16, 181355, 230, 1584, 1584, 1, 1, 855.560791015625, -142.067169189453125, -48.0872077941894531, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 55262), -- Standing, Exterior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+17, 181393, 230, 1584, 1584, 1, 1, 861.327392578125, -134.148818969726562, -45.1275825500488281, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+18, 181388, 230, 1584, 1584, 1, 1, 859.0894775390625, -139.844696044921875, -48.8765220642089843, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+19, 181393, 230, 1584, 1584, 1, 1, 860.12847900390625, -134.8443603515625, -45.1895942687988281, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+20, 181388, 230, 1584, 1584, 1, 1, 842.66400146484375, -190.0352783203125, -48.9150581359863281, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+21, 181393, 230, 1584, 1584, 1, 1, 868.75506591796875, -129.855484008789062, -45.1952095031738281, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+22, 181393, 230, 1584, 1584, 1, 1, 867.6173095703125, -130.514495849609375, -45.225494384765625, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+23, 181388, 230, 1584, 1584, 1, 1, 866.95819091796875, -144.804336547851562, -48.8856277465820312, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+24, 181388, 230, 1584, 1584, 1, 1, 868.82647705078125, -132.47650146484375, -48.8573799133300781, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+25, 181388, 230, 1584, 1584, 1, 1, 859.877197265625, -164.822097778320312, -48.8167572021484375, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+26, 181388, 230, 1584, 1584, 1, 1, 874.01025390625, -140.8642578125, -48.8708381652832031, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+27, 181388, 230, 1584, 1584, 1, 1, 858.850830078125, -172.606338500976562, -48.8477973937988281, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+28, 181393, 230, 1584, 1584, 1, 1, 838.52777099609375, -216.232437133789062, -40.4565963745117187, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+29, 181388, 230, 1584, 1584, 1, 1, 869.12408447265625, -163.900482177734375, -48.863983154296875, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+30, 181388, 230, 1584, 1584, 1, 1, 876.23687744140625, -144.416824340820312, -48.8697128295898437, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+31, 181355, 230, 1584, 1584, 1, 1, 879.82562255859375, -145.934921264648437, -49.7594146728515625, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 7200, 255, 1, 55262), -- Standing, Exterior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+32, 181393, 230, 1584, 1584, 1, 1, 880.23974609375, -144.10186767578125, -45.7563362121582031, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+33, 181393, 230, 1584, 1584, 1, 1, 850.86859130859375, -209.101882934570312, -40.4154052734375, 1.919861555099487304, 0, 0, 0.819151878356933593, 0.573576688766479492, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+34, 181388, 230, 1584, 1584, 1, 1, 866.53594970703125, -176.090911865234375, -48.8597908020019531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+35, 181388, 230, 1584, 1584, 1, 1, 852.69146728515625, -206.595291137695312, -42.8749275207519531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+36, 181392, 230, 1584, 1584, 1, 1, 838.7147216796875, -222.66021728515625, -37.0061607360839843, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 7200, 255, 1, 55262), -- Hanging, Streamer - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+37, 181388, 230, 1584, 1584, 1, 1, 857.49957275390625, -201.502288818359375, -42.8255538940429687, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+38, 181388, 230, 1584, 1584, 1, 1, 878.63201904296875, -161.084808349609375, -48.8503570556640625, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+39, 181355, 230, 1584, 1584, 1, 1, 886.7518310546875, -156.676010131835937, -49.7605171203613281, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 7200, 255, 1, 55262), -- Standing, Exterior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+40, 181355, 230, 1584, 1584, 1, 1, 874.26885986328125, -182.293807983398437, -43.7037086486816406, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 55262), -- Standing, Exterior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+41, 181388, 230, 1584, 1584, 1, 1, 877.284912109375, -169.196365356445312, -48.8408546447753906, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+42, 181388, 230, 1584, 1584, 1, 1, 863.470703125, -196.907791137695312, -42.7922248840332031, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+43, 181388, 230, 1584, 1584, 1, 1, 884.7393798828125, -164.978225708007812, -48.8521690368652343, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+44, 181401, 230, 1584, 1584, 1, 1, 843.09368896484375, -229.72198486328125, -36.9932708740234375, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+45, 181392, 230, 1584, 1584, 1, 1, 848.7298583984375, -234.750701904296875, -37.2758712768554687, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 7200, 255, 1, 55262), -- Hanging, Streamer - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+46, 181401, 230, 1584, 1584, 1, 1, 855.3809814453125, -230.789016723632812, -37.2526893615722656, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+47, 181392, 230, 1584, 1584, 1, 1, 862.14080810546875, -226.75653076171875, -37.2087326049804687, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 7200, 255, 1, 55262), -- Hanging, Streamer - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+48, 181393, 230, 1584, 1584, 1, 1, 888.09454345703125, -157.4302978515625, -45.9000625610351562, 3.612837791442871093, 0, 0, -0.97236919403076171, 0.233448356389999389, 7200, 255, 1, 55262), -- Hanging, Tall/Thin, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+49, 181355, 230, 1584, 1584, 1, 1, 870.17364501953125, -219.478271484375, -43.703704833984375, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 7200, 255, 1, 55262), -- Standing, Exterior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+50, 181388, 230, 1584, 1584, 1, 1, 891.04571533203125, -170.570388793945312, -42.8331985473632812, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+51, 181401, 230, 1584, 1584, 1, 1, 892.45867919921875, -168.13189697265625, -37.2256965637207031, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+52, 181401, 230, 1584, 1584, 1, 1, 876.1754150390625, -218.1158447265625, -37.5497932434082031, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+53, 181401, 230, 1584, 1584, 1, 1, 886.67987060546875, -212.390411376953125, -37.4664421081542968, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+54, 181388, 230, 1584, 1584, 1, 1, 893.2525634765625, -198.249710083007812, -42.8702888488769531, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+55, 181401, 230, 1584, 1584, 1, 1, 898.56494140625, -178.46807861328125, -37.0914573669433593, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+56, 181388, 230, 1584, 1584, 1, 1, 896.01025390625, -202.805862426757812, -42.86553955078125, 0.628316879272460937, 0, 0, 0.309016227722167968, 0.95105677843093872, 7200, 255, 1, 55262), -- Standing, Interior, Medium - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+57, 181401, 230, 1584, 1584, 1, 1, 897.0703125, -206.644729614257812, -37.4958915710449218, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 7200, 255, 1, 55262), -- Hanging, Streamer x3 - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+58, 181392, 230, 1584, 1584, 1, 1, 907.94866943359375, -200.629318237304687, -37.4735183715820312, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 55262), -- Hanging, Streamer - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+59, 181392, 230, 1584, 1584, 1, 1, 904.153076171875, -202.728240966796875, -37.4635429382324218, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 55262); -- Hanging, Streamer - MFF (Area: Blackrock Depths - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+59 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+59; diff --git a/sql/updates/world/3.3.5/2024_12_17_11_world.sql b/sql/updates/world/3.3.5/2024_12_17_11_world.sql new file mode 100644 index 00000000000..cc4fc6b1702 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_17_11_world.sql @@ -0,0 +1,27 @@ +-- +SET @OGUID := 18041; -- Need 18 +SET @EVENT := 2; + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+17; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 187235, 230, 1584, 1584, 1, 1, 848.40118408203125, -146.280960083007812, -48.0858535766601562, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+1, 187235, 230, 1584, 1584, 1, 1, 855.560791015625, -142.067169189453125, -48.0872077941894531, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+2, 187235, 230, 1584, 1584, 1, 1, 879.82562255859375, -145.934921264648437, -49.7594146728515625, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+3, 187567, 230, 1584, 1584, 1, 1, 838.7147216796875, -222.66021728515625, -37.0061607360839843, 0.575957298278808593, 0, 0, 0.284014701843261718, 0.958819925785064697, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+4, 187194, 230, 1584, 1584, 1, 1, 843.09368896484375, -229.72198486328125, -36.9932708740234375, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+5, 187235, 230, 1584, 1584, 1, 1, 874.26885986328125, -182.293807983398437, -43.7037086486816406, 5.166176319122314453, 0, 0, -0.52991867065429687, 0.84804844856262207, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+6, 187567, 230, 1584, 1584, 1, 1, 848.7298583984375, -234.750701904296875, -37.2758712768554687, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+7, 187567, 230, 1584, 1584, 1, 1, 862.14080810546875, -226.75653076171875, -37.2087326049804687, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+8, 187235, 230, 1584, 1584, 1, 1, 886.7518310546875, -156.676010131835937, -49.7605171203613281, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+9, 187194, 230, 1584, 1584, 1, 1, 855.3809814453125, -230.789016723632812, -37.2526893615722656, 2.111847877502441406, 0, 0, 0.870355606079101562, 0.492423713207244873, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+10, 187235, 230, 1584, 1584, 1, 1, 870.17364501953125, -219.478271484375, -43.703704833984375, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 7200, 255, 1, 57916), -- Standing, Exterior, Medium - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+11, 187194, 230, 1584, 1584, 1, 1, 892.45867919921875, -168.13189697265625, -37.2256965637207031, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+12, 187194, 230, 1584, 1584, 1, 1, 876.1754150390625, -218.1158447265625, -37.5497932434082031, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+13, 187194, 230, 1584, 1584, 1, 1, 886.67987060546875, -212.390411376953125, -37.4664421081542968, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+14, 187194, 230, 1584, 1584, 1, 1, 898.56494140625, -178.46807861328125, -37.0914573669433593, 3.665196180343627929, 0, 0, -0.96592521667480468, 0.258821308612823486, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+15, 187194, 230, 1584, 1584, 1, 1, 897.0703125, -206.644729614257812, -37.4958915710449218, 2.076939344406127929, 0, 0, 0.861628532409667968, 0.50753939151763916, 7200, 255, 1, 57916), -- Hanging, Streamer x3 - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+16, 187567, 230, 1584, 1584, 1, 1, 904.153076171875, -202.728240966796875, -37.4635429382324218, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 57916), -- Hanging, Streamer - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 +(@OGUID+17, 187567, 230, 1584, 1584, 1, 1, 907.94866943359375, -200.629318237304687, -37.4735183715820312, 2.094393253326416015, 0, 0, 0.866024971008300781, 0.50000077486038208, 7200, 255, 1, 57916); -- Hanging, Streamer - Xmas (Area: Blackrock Depths - Difficulty: 1) CreateObject1 + +DELETE FROM `game_event_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+17 AND `eventEntry`=@EVENT; +INSERT INTO `game_event_gameobject` SELECT @EVENT, gameobject.guid FROM `gameobject` WHERE gameobject.guid BETWEEN @OGUID+0 AND @OGUID+17; diff --git a/sql/updates/world/3.3.5/2024_12_21_00_world.sql b/sql/updates/world/3.3.5/2024_12_21_00_world.sql new file mode 100644 index 00000000000..c87be0ff710 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_12_21_00_world.sql @@ -0,0 +1,2 @@ +-- Remove Cursed Darkhound from spawn_group too +DELETE FROM spawn_group WHERE `spawnType`=0 AND `spawnId`=45217; diff --git a/sql/updates/world/3.3.5/2025_02_01_00_world_2012_08_06_01_world_classlevelstats.sql b/sql/updates/world/3.3.5/2025_02_01_00_world_2012_08_06_01_world_classlevelstats.sql new file mode 100644 index 00000000000..880bde5f2e9 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_02_01_00_world_2012_08_06_01_world_classlevelstats.sql @@ -0,0 +1,5 @@ +ALTER TABLE `creature_classlevelstats` CHANGE `basehp0` `basehp0` int unsigned NOT NULL DEFAULT '1'; +ALTER TABLE `creature_classlevelstats` CHANGE `basehp1` `basehp1` int unsigned NOT NULL DEFAULT '1'; +ALTER TABLE `creature_classlevelstats` CHANGE `basehp2` `basehp2` int unsigned NOT NULL DEFAULT '1'; +ALTER TABLE `creature_classlevelstats` CHANGE `basemana` `basemana` int unsigned NOT NULL DEFAULT '1'; +ALTER TABLE `creature_classlevelstats` CHANGE `basearmor` `basearmor` int unsigned NOT NULL DEFAULT '1'; diff --git a/sql/updates/world/3.3.5/2025_02_02_00_world.sql b/sql/updates/world/3.3.5/2025_02_02_00_world.sql new file mode 100644 index 00000000000..9bdbe83e920 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_02_02_00_world.sql @@ -0,0 +1,215 @@ +-- "Sentinel Shaya", "Guard Roberts", "Mountaineer Dolf", "Grunt Kor'ja" and "Deathguard Kel" script and fixes for Garments of... Quests +-- Remove pointer to old script and add SmartAI to creature template +UPDATE `creature_template` SET `ScriptName`='' WHERE `entry` IN (12423,12427,12428,12429,12430); +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry` IN (12423,12427,12428,12429,12430); + +-- Creature Text +DELETE FROM `creature_text` WHERE `CreatureID` IN (12423,12427,12428,12429,12430) AND `GroupID`=3; +INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES + +-- Guard Roberts creature text +(12423,3,0,"Argh, the pain. Will it ever leave me?",12,0,100,0,0,0,7669,0,"Guard Roberts"), + +-- Mountaineer Dolf creature text +(12427,3,0,"Argh, the pain. Will it ever leave me?",12,0,100,0,0,0,7669,0,"Mountaineer Dolf"), + +-- Deathguard Kel creature text +(12428,3,0,"Argh, the pain. Will it ever leave me?",12,0,100,0,0,0,7669,0,"Deathguard Kel"), + +-- Sentinel Shaya creature text +(12429,3,0,"Argh, the pain. Will it ever leave me?",12,0,100,0,0,0,7779,0,"Sentinel Shaya"), + +-- Grunt Kor'ja creature text +(12430,3,0,"Argh, the pain. Will it ever leave me?",12,0,100,0,0,0,7783,0,"Grunt Kor'ja"); + +-- Grunt Kor'ja Missing Emote +UPDATE `creature_text` SET `Emote`=1 WHERE `CreatureID`=12430 AND `GroupID`=0; + +-- Scripts +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (12423,12427,12428,12429,12430); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (1242300,1242301,1242700,1242701,1242800,1242801,1242900,1242901,1243000,1243001) 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 + +-- Guard Roberts Script +(12423,0,0,1,25,0,100,0,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Reset - Set Phase 1"), +(12423,0,1,2,61,1,100,0,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Link - Set Flag Standstate Kneel (Phase 1)"), +(12423,0,2,0,61,1,100,0,0,0,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Link - Set Health 70% (Phase 1)"), +(12423,0,3,0,40,2,100,0,2,12423,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Waypoint 2 Reached - Despawn (Phase 2)"), +(12423,0,4,5,8,1,100,1,2052,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Spellhit - Set Phase 2 (No Repeat) (Phase 1)"), +(12423,0,5,0,61,2,100,0,0,0,0,0,0,80,1242300,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Link - Run Script (Phase 2)"), +(12423,0,6,0,8,2,100,1,1243,0,0,0,0,80,1242301,0,1,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Spellhit - Run Script (No Repeat) (Phase 2)"), + +-- Guard Roberts Timed List 1 +(1242300,9,0,0,0,0,100,0,500,500,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Remove Flag Standstate 'Kneel'"), +(1242300,9,1,0,0,0,100,0,2000,2000,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Set Orientation Invoker"), +(1242300,9,2,0,0,0,100,0,1000,1000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Say Line 2"), +(1242300,9,3,0,0,0,100,0,60000,60000,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Set Health 70%"), +(1242300,9,4,0,0,0,100,0,0,0,0,0,0,5,33,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Guard Roberts - On Script - Play Emote"), +(1242300,9,5,0,0,0,100,0,500,500,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Say Line 3"), +(1242300,9,6,0,0,0,100,0,500,500,0,0,0,78,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Reset Script"), + +-- Guard Roberts Timed List 2 +(1242301,9,0,0,0,0,100,0,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Remove Flag Standstate 'Kneel'"), +(1242301,9,1,0,0,0,100,0,0,0,0,0,0,33,12423,0,0,0,0,0,16,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Give Quest Credit"), +(1242301,9,2,0,0,0,100,0,0,0,0,0,0,5,4,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Guard Roberts - On Script - Play Emote"), +(1242301,9,3,0,0,0,100,0,2500,2500,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Set Orientation Invoker"), +(1242301,9,4,0,0,0,100,0,500,500,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Say Line 0"), +(1242301,9,5,0,0,0,100,0,4000,4000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Say Line 1"), +(1242301,9,6,0,0,0,100,0,2000,2000,0,0,0,53,1,12423,0,0,0,0,1,0,0,0,0,0,0,0,0,"Guard Roberts - On Script - Start Waypoint"), + +-- Mountaineer Dolf Script +(12427,0,0,1,25,0,100,0,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Reset - Set Phase 1"), +(12427,0,1,2,61,1,100,0,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Link - Set Flag Standstate Kneel (Phase 1)"), +(12427,0,2,0,61,1,100,0,0,0,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Link - Set Health 70% (Phase 1)"), +(12427,0,3,0,40,2,100,0,2,12427,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Waypoint 2 Reached - Despawn (Phase 2)"), +(12427,0,4,5,8,1,100,1,2052,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Spellhit - Set Phase 2 (No Repeat) (Phase 1)"), +(12427,0,5,0,61,2,100,0,0,0,0,0,0,80,1242700,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Link - Run Script (Phase 2)"), +(12427,0,6,0,8,2,100,1,1243,0,0,0,0,80,1242701,0,1,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Spellhit - Run Script (No Repeat) (Phase 2)"), + +-- Mountaineer Dolf Timed List 1 +(1242700,9,0,0,0,0,100,0,500,500,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Remove Flag Standstate 'Kneel'"), +(1242700,9,1,0,0,0,100,0,2000,2000,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Set Orientation Invoker"), +(1242700,9,2,0,0,0,100,0,1000,1000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Say Line 2"), +(1242700,9,3,0,0,0,100,0,60000,60000,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Set Health 70%"), +(1242700,9,4,0,0,0,100,0,0,0,0,0,0,5,33,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Mountaineer Dolf - On Script - Play Emote"), +(1242700,9,5,0,0,0,100,0,500,500,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Say Line 3"), +(1242700,9,6,0,0,0,100,0,500,500,0,0,0,78,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Reset Script"), + +-- Mountaineer Dolf Timed List 2 +(1242701,9,0,0,0,0,100,0,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Remove Flag Standstate 'Kneel'"), +(1242701,9,1,0,0,0,100,0,0,0,0,0,0,33,12427,0,0,0,0,0,16,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Give Quest Credit"), +(1242701,9,2,0,0,0,100,0,0,0,0,0,0,5,4,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Mountaineer Dolf - On Script - Play Emote"), +(1242701,9,3,0,0,0,100,0,3500,3500,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Set Orientation Invoker"), +(1242701,9,4,0,0,0,100,0,500,500,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Say Line 0"), +(1242701,9,5,0,0,0,100,0,4000,4000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Say Line 1"), +(1242701,9,6,0,0,0,100,0,2000,2000,0,0,0,53,1,12427,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mountaineer Dolf - On Script - Start Waypoint"), + +-- Deathguard Kel Script +(12428,0,0,1,25,0,100,0,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Reset - Set Phase 1"), +(12428,0,1,2,61,1,100,0,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Link - Set Flag Standstate Kneel (Phase 1)"), +(12428,0,2,0,61,1,100,0,0,0,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Link - Set Health 70% (Phase 1)"), +(12428,0,3,0,40,2,100,0,2,12428,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Waypoint 2 Reached - Despawn (Phase 2)"), +(12428,0,4,5,8,1,100,1,2052,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Spellhit - Set Phase 2 (No Repeat) (Phase 1)"), +(12428,0,5,0,61,2,100,0,0,0,0,0,0,80,1242800,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Link - Run Script (Phase 2)"), +(12428,0,6,0,8,2,100,1,1243,0,0,0,0,80,1242801,0,1,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Spellhit - Run Script (No Repeat) (Phase 2)"), + +-- Deathguard Kel Timed List 1 +(1242800,9,0,0,0,0,100,0,500,500,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Remove Flag Standstate 'Kneel'"), +(1242800,9,1,0,0,0,100,0,2000,2000,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Set Orientation Invoker"), +(1242800,9,2,0,0,0,100,0,1000,1000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Say Line 2"), +(1242800,9,3,0,0,0,100,0,60000,60000,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Set Health 70%"), +(1242800,9,4,0,0,0,100,0,0,0,0,0,0,5,33,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Deathguard Kel - On Script - Play Emote"), +(1242800,9,5,0,0,0,100,0,500,500,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Say Line 3"), +(1242800,9,6,0,0,0,100,0,500,500,0,0,0,78,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Reset Script"), + +-- Deathguard Kel Timed List 2 +(1242801,9,0,0,0,0,100,0,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Remove Flag Standstate 'Kneel'"), +(1242801,9,1,0,0,0,100,0,0,0,0,0,0,33,12428,0,0,0,0,0,16,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Give Quest Credit"), +(1242801,9,2,0,0,0,100,0,0,0,0,0,0,5,4,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Deathguard Kel - On Script - Play Emote"), +(1242801,9,3,0,0,0,100,0,2500,2500,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Set Orientation Invoker"), +(1242801,9,4,0,0,0,100,0,500,500,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Say Line 0"), +(1242801,9,5,0,0,0,100,0,4000,4000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Say Line 1"), +(1242801,9,6,0,0,0,100,0,2000,2000,0,0,0,53,1,12428,0,0,0,0,1,0,0,0,0,0,0,0,0,"Deathguard Kel - On Script - Start Waypoint"), + +-- Sentinel Shaya Script +(12429,0,0,1,25,0,100,0,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Reset - Set Phase 1"), +(12429,0,1,2,61,1,100,0,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Link - Set Flag Standstate Kneel (Phase 1)"), +(12429,0,2,0,61,1,100,0,0,0,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Link - Set Health 70% (Phase 1)"), +(12429,0,3,0,40,2,100,0,2,12429,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Waypoint 2 Reached - Despawn (Phase 2)"), +(12429,0,4,5,8,1,100,1,2052,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Spellhit - Set Phase 2 (No Repeat) (Phase 1)"), +(12429,0,5,0,61,2,100,0,0,0,0,0,0,80,1242900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Link - Run Script (Phase 2)"), +(12429,0,6,0,8,2,100,1,1243,0,0,0,0,80,1242901,0,1,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Spellhit - Run Script (No Repeat) (Phase 2)"), + +-- Sentinel Shaya Timed List 1 +(1242900,9,0,0,0,0,100,0,500,500,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Remove Flag Standstate 'Kneel'"), +(1242900,9,1,0,0,0,100,0,2000,2000,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Set Orientation Invoker"), +(1242900,9,2,0,0,0,100,0,1000,1000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Say Line 2"), +(1242900,9,3,0,0,0,100,0,60000,60000,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Set Health 70%"), +(1242900,9,4,0,0,0,100,0,0,0,0,0,0,5,33,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Sentinel Shaya - On Script - Play Emote"), +(1242900,9,5,0,0,0,100,0,500,500,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Say Line 3"), +(1242900,9,6,0,0,0,100,0,500,500,0,0,0,78,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Reset Script"), + +-- Sentinel Shaya Timed List 2 +(1242901,9,0,0,0,0,100,0,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Remove Flag Standstate 'Kneel'"), +(1242901,9,1,0,0,0,100,0,0,0,0,0,0,33,12429,0,0,0,0,0,16,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Give Quest Credit"), +(1242901,9,2,0,0,0,100,0,0,0,0,0,0,5,4,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Sentinel Shaya - On Script - Play Emote"), +(1242901,9,3,0,0,0,100,0,2500,2500,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Set Orientation Invoker"), +(1242901,9,4,0,0,0,100,0,1000,1000,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Say Line 0"), +(1242901,9,5,0,0,0,100,0,4000,4000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Say Line 1"), +(1242901,9,6,0,0,0,100,0,2000,2000,0,0,0,53,1,12429,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sentinel Shaya - On Script - Start Waypoint"), + +-- Grunt Kor'ja Script +(12430,0,0,1,25,0,100,0,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Reset - Set Phase 1"), +(12430,0,1,2,61,1,100,0,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Link - Set Flag Standstate Kneel (Phase 1)"), +(12430,0,2,0,61,1,100,0,0,0,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Link - Set Health 70% (Phase 1)"), +(12430,0,3,0,40,2,100,0,2,12430,0,0,0,41,1000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Waypoint 2 Reached - Despawn (Phase 2)"), +(12430,0,4,5,8,1,100,1,2052,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Spellhit - Set Phase 2 (No Repeat) (Phase 1)"), +(12430,0,5,0,61,2,100,0,0,0,0,0,0,80,1243000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Link - Run Script (Phase 2)"), +(12430,0,6,0,8,2,100,1,1243,0,0,0,0,80,1243001,0,1,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Spellhit - Run Script (No Repeat) (Phase 2)"), + +-- Grunt Kor'ja Timed List 1 +(1243000,9,0,0,0,0,100,0,500,500,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Remove Flag Standstate 'Kneel'"), +(1243000,9,1,0,0,0,100,0,2000,2000,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Set Orientation Invoker"), +(1243000,9,2,0,0,0,100,0,1000,1000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Say Line 2"), +(1243000,9,3,0,0,0,100,0,60000,60000,0,0,0,142,70,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Set Health 70%"), +(1243000,9,4,0,0,0,100,0,0,0,0,0,0,5,33,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Grunt Kor'ja - On Script - Play Emote"), +(1243000,9,5,0,0,0,100,0,500,500,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Say Line 3"), +(1243000,9,6,0,0,0,100,0,500,500,0,0,0,78,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Reset Script"), + +-- Grunt Kor'ja Timed List 2 +(1243001,9,0,0,0,0,100,0,0,0,0,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Remove Flag Standstate 'Kneel'"), +(1243001,9,1,0,0,0,100,0,0,0,0,0,0,33,12430,0,0,0,0,0,16,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Give Quest Credit"), +(1243001,9,2,0,0,0,100,0,0,0,0,0,0,5,4,0,0,0,0,0,1,0,0,0,0,0,0,0,0, "Grunt Kor'ja - On Script - Play Emote"), +(1243001,9,3,0,0,0,100,0,2500,2500,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Set Orientation Invoker"), +(1243001,9,4,0,0,0,100,0,500,500,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Say Line 0"), +(1243001,9,5,0,0,0,100,0,4000,4000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Say Line 1"), +(1243001,9,6,0,0,0,100,0,2000,2000,0,0,0,53,1,12430,0,0,0,0,1,0,0,0,0,0,0,0,0,"Grunt Kor'ja - On Script - Start Waypoint"); + +-- Remove old waypoints +DELETE FROM `script_waypoint` WHERE `entry` IN (12423,12427,12428,12429,12430); + +-- Waypoints +DELETE FROM `waypoints` WHERE `entry` IN (12423,12427,12428,12429,12430); +INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES + +-- Guard Roberts Waypoints +(12423,1,-9509.090,-144.348,58.772,"Guard Roberts"), +(12423,2,-9518.536,-171.302,59.214,"Guard Roberts"), + +-- Mountaineer Dolf Waypoints +(12427,1,-5689.931,-459.725,392.185,"Mountaineer Dolf"), +(12427,2,-5700.382,-450.403,393.179,"Mountaineer Dolf"), + +-- Deathguard Kel Waypoints +(12428,1,2454.314,361.823,31.4958,"Deathguard Kel"), +(12428,2,2475.569,382.817,30.644,"Deathguard Kel"), + +-- Sentinel Shaya Waypoints +(12429,1,9657.482,907.793,1273.894,"Sentinel Shaya"), +(12429,2,9643.783,908.450,1269.255,"Sentinel Shaya"), + +-- Grunt Kor'ja +(12430,1,159.649,-4779.886,14.572,"Grunt Kor'ja"), +(12430,2,140.527,-4812.074,16.830,"Grunt Kor'ja"); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN (12423,12427,12428,12429,12430); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES + +-- Guard Roberts Conditions +(22,5,12423,0,0,47,0,5624,10,0,0,0,0,"","Smart Event 4 for creature Guard Roberts only executes if player has quest 'Garments of the Light' in progress or completed"), + +-- Mountaineer Dolf Conditions +(22,5,12427,0,0,47,0,5625,10,0,0,0,0,"","Smart Event 4 for creature Mountaineer Dolf only executes if player has quest 'Garments of the Light' in progress or completed"), + +-- Deathguard Kel Conditions +(22,5,12428,0,0,47,0,5650,10,0,0,0,0,"","Smart Event 4 for creature Deathguard Kel only executes if player has quest 'Garments of Darkness' in progress or completed"), + +-- Sentinel Shaya Conditions +(22,5,12429,0,0,47,0,5621,10,0,0,0,0,"","Smart Event 4 for creature Sentinel Shaya only executes if player has quest 'Garments of the Moon' in progress or completed"), + +-- Grunt Kor'ja Conditions +(22,5,12430,0,0,47,0,5648,10,0,0,0,0,"","Smart Event 4 for creature Grunt Kor'ja only executes if player has quest 'Garments of Spirituality' in progress or completed"); + +-- Correct respawn time for "Guard Roberts", "Sentinel Shaya", "Mountaineer Dolf", "Deathguard Kel" and "Grunt Kor'ja" (Timed it on WotLK Classic) +UPDATE `creature` SET `spawntimesecs`=30 WHERE `ID` IN (12423,12427,12428,12429,12430); diff --git a/sql/updates/world/3.3.5/2025_02_03_00_world_2012_08_20_00_world_quest_template_434.sql b/sql/updates/world/3.3.5/2025_02_03_00_world_2012_08_20_00_world_quest_template_434.sql new file mode 100644 index 00000000000..84972ceddb4 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_02_03_00_world_2012_08_20_00_world_quest_template_434.sql @@ -0,0 +1 @@ +ALTER TABLE `quest_template` CHANGE `AllowableRaces` `AllowableRaces` int unsigned NOT NULL DEFAULT '0'; diff --git a/sql/updates/world/3.3.5/2025_02_05_00_world.sql b/sql/updates/world/3.3.5/2025_02_05_00_world.sql new file mode 100644 index 00000000000..54ab9a438f6 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_02_05_00_world.sql @@ -0,0 +1,105 @@ + +-- Intro for quest "The Binding" (1795) +-- Game objects are spawned by the script +DELETE FROM `gameobject` WHERE `guid` IN (29205,50355); +DELETE FROM `gameobject_addon` WHERE `guid` IN (29205,50355); + +-- Strahad Farsan Text +DELETE FROM `creature_text` WHERE `CreatureID`=6251; +INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES +(6251,0,0,"I hope you're ready, $n. Follow me.",12,0,100,1,0,0,2370,0,"Strahad Farsan"), +(6251,1,0,"Come, my acolytes. Take the rods of channeling and create the greater summoning circle.",12,0,100,1,0,0,2374,0,"Strahad Farsan"); + +-- Script +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry` IN (6251,6252,6253,6254,6268); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN( 6251,6252,6253,6254,6268) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (625100,625101,625102,625103,625200,625300,625400,626800) 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 + +-- Strahad Farsan Script +(6251,0,0,0,19,0,100,0,1795,0,0,0,0,80,625100,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Quest 'The Binding' Taken - Run Script"), +(6251,0,1,0,40,0,100,0,4,0,0,0,0,80,625101,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Waypoint 4 Reached - Run Script"), +(6251,0,2,0,40,0,100,0,6,0,0,0,0,80,625102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Waypoint 7 Reached - Run Script"), +(6251,0,3,0,38,0,100,0,0,3,0,0,0,65,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Data Set 0 3 - Resume Waypoint"), +(6251,0,4,0,40,0,100,0,9,0,0,0,0,80,625103,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Waypoint 10 Reached - Run Script"), + +-- Acolyte Magaz Script +(6252,0,0,0,38,0,100,0,0,1,0,0,0,80,625200,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Magaz - On Data Set 0 1 - Run Script"), +(6252,0,1,0,38,0,100,0,0,2,0,0,0,5,34,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Magaz - On Data Set 0 2 - Play Emote"), + +-- Acolyte Fenrick Script +(6253,0,0,0,38,0,100,0,0,1,0,0,0,80,625200,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Fenrick - On Data Set 0 1 - Run Script"), +(6253,0,1,0,38,0,100,0,0,2,0,0,0,5,34,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Fenrick - On Data Set 0 2 - Play Emote"), + +-- Acolyte Wytula Script +(6254,0,0,0,38,0,100,0,0,1,0,0,0,80,625200,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Wytula - On Data Set 0 1 - Run Script"), +(6254,0,1,0,38,0,100,0,0,2,0,0,0,5,34,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Wytula - On Data Set 0 2 - Play Emote"), + +-- Summoned Felhunter Script +(6268,0,0,0,0,0,100,0,5000,11000,11000,17000,0,11,2691,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Summoned Felhunter - In Combat - Cast 'Mana Burn'"), +(6268,0,1,0,54,0,100,0,0,0,0,0,0,80,626800,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Summoned Felhunter - On Just Summoned - Run Script"), +(6268,0,2,0,6,0,100,0,2000,2000,0,0,0,45,0,3,0,0,0,0,19,6251,0,0,0,0,0,0,0,"Summoned Felhunter - On Death - Set Data 0 3 (Strahad Farsan)"), + +-- Strahad Farsan Timed List 1 +(625100,9,0,0,0,0,100,0,0,0,0,0,0,83,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Remove Npc Flag Questgiver+Gossip"), +(625100,9,1,0,0,0,100,0,1000,1000,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Say Line 0"), +(625100,9,2,0,0,0,100,0,2000,2000,0,0,0,53,0,6251,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Start Waypoint"), + +-- Strahad Farsan Timed List 2 +(625101,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,"Strahad Farsan - On Script - Pause Waypoint"), +(625101,9,1,0,0,0,100,0,1000,1000,0,0,0,11,8677,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Cast 'Summon Effect'"), +(625101,9,2,0,0,0,100,0,6000,6000,0,0,0,50,92252,188,0,0,0,0,8,0,0,0,0,-768.80353,-3721.770,42.0,4.4998,"Strahad Farsan - On Script - Summon Gameobject 'Strahad's Summoning Circle'"), +(625101,9,3,0,0,0,100,0,1000,1000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Say Line 1"), +(625101,9,4,0,0,0,100,0,0,0,0,0,0,45,0,1,0,0,0,0,19,6252,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Set Data 0 1 (Acolyte Magaz)"), +(625101,9,5,0,0,0,100,0,0,0,0,0,0,45,0,1,0,0,0,0,19,6253,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Set Data 0 1 (Acolyte Fenrick)"), +(625101,9,6,0,0,0,100,0,0,0,0,0,0,45,0,1,0,0,0,0,19,6254,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Set Data 0 1 (Acolyte Wytula)"), + +-- Strahad Farsan Timed List 3 +(625102,9,0,0,0,0,100,0,0,0,0,0,0,54,180000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Pause Waypoint"), +(625102,9,1,0,0,0,100,0,1000,1000,0,0,0,66,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Set Orientation Invoker"), + +-- Strahad Farsan Timed List 4 +(625103,9,0,0,0,0,100,0,1000,1000,0,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2.05950,"Strahad Farsan - On Script - Set Orientation"), +(625103,9,1,0,0,0,100,0,1000,1000,0,0,0,82,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Strahad Farsan - On Script - Add Npc Flag Questgiver+Gossip"), + +-- Acolyte Magaz Timed List 1 +(625200,9,0,0,0,0,100,0,1000,1000,0,0,0,5,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Magaz - On Data Set - Play Emote"), +(625200,9,1,0,0,0,100,0,5000,5000,0,0,0,11,8675,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Magaz - On Script - Cast 'Warlock Channeling'"), +(625200,9,2,0,0,0,100,0,7500,7500,0,0,0,50,92388,173,0,0,0,0,8,0,0,0,0,-768.80353,-3721.770,44.10,2.5952,"Acolyte Magaz - On Script - Summon Gameobject 'Summoning Circle'"), + +-- Acolyte Fenrick Timed List 1 +(625300,9,0,0,0,0,100,0,1000,1000,0,0,0,5,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Fenrick - On Data Set - Play Emote"), +(625300,9,1,0,0,0,100,0,5000,5000,0,0,0,11,8675,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Fenrick - On Script - Cast 'Warlock Channeling'"), + +-- Acolyte Wytula Timed List 1 +(625400,9,0,0,0,0,100,0,1000,1000,0,0,0,5,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Wytula - On Data Set - Play Emote"), +(625400,9,1,0,0,0,100,0,5000,5000,0,0,0,11,8675,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Acolyte Wytula - On Script - Cast 'Warlock Channeling'"), + +-- Summoned Felhunter Timed List 1 +(626800,9,0,0,0,0,100,0,0,0,0,0,0,11,52096,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Summoned Felhunter - On Script - Cast 'Teleport Visual Only'"), +(626800,9,1,0,0,0,100,0,1000,1000,0,0,0,45,0,2,0,0,0,0,19,6252,0,0,0,0,0,0,0,"Summoned Felhunter - On Script - Set Data 0 2 (Acolyte Magaz)"), +(626800,9,2,0,0,0,100,0,0,0,0,0,0,45,0,2,0,0,0,0,19,6253,0,0,0,0,0,0,0,"Summoned Felhunter - On Script - Set Data 0 2 (Acolyte Fenrick)"), +(626800,9,3,0,0,0,100,0,0,0,0,0,0,45,0,2,0,0,0,0,19,6254,0,0,0,0,0,0,0,"Summoned Felhunter - On Script - Set Data 0 2 (Acolyte Wytula)"), +(626800,9,4,0,0,0,100,0,0,0,0,0,0,41,2000,0,0,0,0,0,13,92252,0,100,0,0,0,0,0,"Summoned Felhunter - On Script - Despawn Gameobject 'Strahad's Summoning Circle'"), +(626800,9,5,0,0,0,100,0,0,0,0,0,0,41,2000,0,0,0,0,0,13,92388,0,100,0,0,0,0,0,"Summoned Felhunter - On Script - Despawn Gameobject 'Summoning Circle'"), +(626800,9,6,0,0,0,100,0,500,500,0,0,0,49,0,0,0,0,0,0,21,20,0,0,0,0,0,0,0,"Summoned Felhunter - On Script - Start Attacking Closest Player"); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=6251; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES + +-- Condition to prevent script from running when there already is a Felhunter spawned +(22,1,6251,0,0,29,0,6268,100,0,1,0,0,"","Smart Event 0 for creature Strahad Farsan only executes if creature 'Summoned Felhunter' not near"); + +-- Strahad Farsan Waypoints +DELETE FROM `waypoints` WHERE `entry`=6251; +INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES +(6251,1,-786.65186,-3722.0166,40.380207,"Strahad Farsan"), +(6251,2,-784.910,-3717.9514,41.09593,"Strahad Farsan"), +(6251,3,-778.20404,-3718.2446,42.591854,"Strahad Farsan"), +(6251,4,-769.45544,-3721.2717,42.424034,"Strahad Farsan"), -- Summon +(6251,5,-767.81177,-3721.42969,42.37064,"Strahad Farsan"), +(6251,6,-762.8201,-3720.283,42.24128,"Strahad Farsan"), -- Waiting +(6251,7,-768.04926,-3720.5073,42.379726,"Strahad Farsan"), +(6251,8,-781.8862,-3716.743,41.55511,"Strahad Farsan"), +(6251,9,-785.9119,-3723.260,40.515202,"Strahad Farsan"); -- Home diff --git a/sql/updates/world/3.3.5/2025_02_07_00_world.sql b/sql/updates/world/3.3.5/2025_02_07_00_world.sql new file mode 100644 index 00000000000..edcf636fb22 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_02_07_00_world.sql @@ -0,0 +1,2 @@ +-- Add correct equipment to Witherheart the Stalker +UPDATE `creature_equip_template` SET `ItemID1`=10617, `ItemID2`=5285, `VerifiedBuild`=58797 WHERE `CreatureID`=8218 AND `ID`=1; diff --git a/sql/updates/world/3.3.5/2025_02_07_01_world.sql b/sql/updates/world/3.3.5/2025_02_07_01_world.sql new file mode 100644 index 00000000000..135844efac3 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_02_07_01_world.sql @@ -0,0 +1,58 @@ +-- Pathing for Mirelow Entry: 14424 +SET @NPC=14424; +SET @GUID=91113; +SET @PATH=@GUID * 10; +DELETE FROM `creature` WHERE `id` = @NPC AND `guid` != (@GUID); +DELETE FROM `pool_template` WHERE `entry`=@NPC; +DELETE FROM `pool_members` WHERE `Type`=0 AND `poolSpawnId`=1072; +UPDATE `creature` SET `position_x`=-2752.9434,`position_y`=-1311.9869,`position_z`=6.144358,`wander_distance`=0,`MovementType`=2 WHERE `id`=@NPC AND `guid`=@GUID; +UPDATE `creature_template` SET `MovementType`=2,`speed_walk`=1 WHERE `entry`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@GUID; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(@GUID, @PATH, 0, 0, 0, 0, 0, 1, 0, 0, 0, NULL); +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, -2752.9434, -1311.9869, 6.144358, NULL, 0, 0, 0, 100, 0), +(@PATH, 2, -2779.3325, -1318.1886, 6.212498, NULL, 0, 0, 0, 100, 0), +(@PATH, 3, -2802.5144, -1327.2316, 6.2124987, NULL, 0, 0, 0, 100, 0), +(@PATH, 4, -2841.5269, -1356.3691, 6.2124963, NULL, 0, 0, 0, 100, 0), +(@PATH, 5, -2868.5942, -1383.6816, 6.2125034, NULL, 0, 0, 0, 100, 0), +(@PATH, 6, -2888.584, -1418.0055, 6.2125034, NULL, 0, 0, 0, 100, 0), +(@PATH, 7, -2915.9563, -1455.4119, 6.2125106, NULL, 0, 0, 0, 100, 0), +(@PATH, 8, -2948.1558, -1477.9122, 6.2125034, NULL, 0, 0, 0, 100, 0), +(@PATH, 9, -2979.6265, -1493.0153, 6.2125106, NULL, 0, 0, 0, 100, 0), +(@PATH, 10, -3007.2742, -1519.1643, 6.1943064, NULL, 0, 0, 0, 100, 0), +(@PATH, 11, -3030.377, -1531.1482, 1.8713083, NULL, 0, 0, 0, 100, 0), +(@PATH, 12, -3050.034, -1538.9908, 2.2948234, NULL, 0, 0, 0, 100, 0), +(@PATH, 13, -3068.111, -1529.2074, 4.6410594, NULL, 0, 0, 0, 100, 0), +(@PATH, 14, -3048.722, -1507.4395, 2.3030105, NULL, 0, 0, 0, 100, 0), +(@PATH, 15, -3045.1477, -1488.9481, 6.1078167, NULL, 0, 0, 0, 100, 0), +(@PATH, 16, -3037.5547, -1465.8003, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 17, -3013.2668, -1444.2893, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 18, -2992.2075, -1423.2106, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 19, -2982.6704, -1384.7448, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 20, -2976.297, -1355.0217, 6.1414337, NULL, 0, 0, 0, 100, 0), +(@PATH, 21, -2972.429, -1315.0929, 6.212561, NULL, 0, 0, 0, 100, 0), +(@PATH, 22, -2959.098, -1289.4697, 6.212534, NULL, 0, 0, 0, 100, 0), +(@PATH, 23, -2946.3533, -1262.2607, 6.212534, NULL, 0, 0, 0, 100, 0), +(@PATH, 24, -2940.9849, -1235.0204, 6.212534, NULL, 0, 0, 0, 100, 0), +(@PATH, 25, -2927.3582, -1214.3258, 6.276264, NULL, 0, 0, 0, 100, 0), +(@PATH, 26, -2913.8328, -1184.8007, 6.2125435, NULL, 0, 0, 0, 100, 0), +(@PATH, 27, -2913.718, -1156.6484, 6.380024, NULL, 0, 0, 0, 100, 0), +(@PATH, 28, -2906.6707, -1130.346, 6.3375435, NULL, 0, 0, 0, 100, 0), +(@PATH, 29, -2924.4268, -1129.007, 6.262104, NULL, 0, 0, 0, 100, 0), +(@PATH, 30, -2948.263, -1141.3658, 6.581269, NULL, 0, 0, 0, 100, 0), +(@PATH, 31, -2981.483, -1160.7555, 6.2125306, NULL, 0, 0, 0, 100, 0), +(@PATH, 32, -3008.991, -1189.4165, 6.3375306, NULL, 0, 0, 0, 100, 0), +(@PATH, 33, -3033.5713, -1223.1588, 3.6263075, NULL, 0, 0, 0, 100, 0), +(@PATH, 34, -3058.1658, -1243.8303, 6.385656, NULL, 0, 0, 0, 100, 0), +(@PATH, 35, -3084.6208, -1262.775, 6.2125497, NULL, 0, 0, 0, 100, 0), +(@PATH, 36, -3110.9539, -1251.6007, 5.657193, NULL, 0, 0, 0, 100, 0), +(@PATH, 37, -3127.4268, -1279.7166, 6.2125597, NULL, 0, 0, 0, 100, 0), +(@PATH, 38, -3140.0647, -1310.3094, 6.2125597, NULL, 0, 0, 0, 100, 0), +(@PATH, 39, -3129.7153, -1336.1788, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 40, -3135.3235, -1368.5166, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 41, -3156.5852, -1393.152, 6.2125444, NULL, 0, 0, 0, 100, 0), +(@PATH, 42, -3176.052, -1410.8157, 6.2125344, NULL, 0, 0, 0, 100, 0), +(@PATH, 43, -3184.6921, -1435.9547, 6.2125344, NULL, 0, 0, 0, 100, 0), +(@PATH, 44, -3201.1177, -1461.5942, 6.2125344, NULL, 0, 0, 0, 100, 0); diff --git a/src/common/Collision/BoundingIntervalHierarchy.h b/src/common/Collision/BoundingIntervalHierarchy.h index a5717637a38..66bb7c61c6a 100644 --- a/src/common/Collision/BoundingIntervalHierarchy.h +++ b/src/common/Collision/BoundingIntervalHierarchy.h @@ -113,6 +113,7 @@ class TC_COMMON_API BIH delete[] dat.indices; } uint32 primCount() const { return uint32(objects.size()); } + G3D::AABox const& bound() const { return bounds; } template void intersectRay(const G3D::Ray &r, RayCallback& intersectCallback, float &maxDist, bool stopAtFirst = false) const diff --git a/src/common/Collision/DynamicTree.cpp b/src/common/Collision/DynamicTree.cpp index 34c38d98fa7..ceddd740613 100644 --- a/src/common/Collision/DynamicTree.cpp +++ b/src/common/Collision/DynamicTree.cpp @@ -150,22 +150,6 @@ struct DynamicTreeIntersectionCallback bool didHit() const { return did_hit;} }; -struct DynamicTreeAreaInfoCallback -{ - DynamicTreeAreaInfoCallback(uint32 phaseMask) : _phaseMask(phaseMask) {} - - void operator()(G3D::Vector3 const& p, GameObjectModel const& obj) - { - obj.intersectPoint(p, _areaInfo, _phaseMask); - } - - VMAP::AreaInfo const& GetAreaInfo() const { return _areaInfo; } - -private: - uint32 _phaseMask; - VMAP::AreaInfo _areaInfo; -}; - struct DynamicTreeLocationInfoCallback { DynamicTreeLocationInfoCallback(uint32 phaseMask) : _phaseMask(phaseMask), _hitModel(nullptr) {} @@ -265,24 +249,7 @@ float DynamicMapTree::getHeight(float x, float y, float z, float maxSearchDist, return -G3D::finf(); } -bool DynamicMapTree::getAreaInfo(float x, float y, float& z, uint32 phasemask, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const -{ - G3D::Vector3 v(x, y, z + 0.5f); - DynamicTreeAreaInfoCallback intersectionCallBack(phasemask); - impl->intersectPoint(v, intersectionCallBack); - if (intersectionCallBack.GetAreaInfo().result) - { - flags = intersectionCallBack.GetAreaInfo().flags; - adtId = intersectionCallBack.GetAreaInfo().adtId; - rootId = intersectionCallBack.GetAreaInfo().rootId; - groupId = intersectionCallBack.GetAreaInfo().groupId; - z = intersectionCallBack.GetAreaInfo().ground_Z; - return true; - } - return false; -} - -void DynamicMapTree::getAreaAndLiquidData(float x, float y, float z, uint32 phasemask, uint8 reqLiquidType, VMAP::AreaAndLiquidData& data) const +bool DynamicMapTree::getAreaAndLiquidData(float x, float y, float z, uint32 phasemask, Optional reqLiquidType, VMAP::AreaAndLiquidData& data) const { G3D::Vector3 v(x, y, z + 0.5f); DynamicTreeLocationInfoCallback intersectionCallBack(phasemask); @@ -292,13 +259,16 @@ void DynamicMapTree::getAreaAndLiquidData(float x, float y, float z, uint32 phas data.floorZ = intersectionCallBack.GetLocationInfo().ground_Z; uint32 liquidType = intersectionCallBack.GetLocationInfo().hitModel->GetLiquidType(); float liquidLevel; - if (!reqLiquidType || VMAP::VMapFactory::createOrGetVMapManager()->GetLiquidFlagsPtr(liquidType) & reqLiquidType) + if (!reqLiquidType || VMAP::VMapFactory::createOrGetVMapManager()->GetLiquidFlagsPtr(liquidType) & *reqLiquidType) if (intersectionCallBack.GetHitModel()->GetLiquidLevel(v, intersectionCallBack.GetLocationInfo(), liquidLevel)) data.liquidInfo.emplace(liquidType, liquidLevel); - data.areaInfo.emplace(0, + data.areaInfo.emplace(intersectionCallBack.GetLocationInfo().hitModel->GetWmoID(), + 0, intersectionCallBack.GetLocationInfo().rootId, - intersectionCallBack.GetLocationInfo().hitModel->GetWmoID(), - intersectionCallBack.GetLocationInfo().hitModel->GetMogpFlags()); + intersectionCallBack.GetLocationInfo().hitModel->GetMogpFlags(), + 0); + return true; } + return false; } diff --git a/src/common/Collision/DynamicTree.h b/src/common/Collision/DynamicTree.h index b62044b9544..0bcdbed4236 100644 --- a/src/common/Collision/DynamicTree.h +++ b/src/common/Collision/DynamicTree.h @@ -19,6 +19,7 @@ #define _DYNTREE_H #include "Define.h" +#include "Optional.h" namespace G3D { @@ -48,8 +49,7 @@ class TC_COMMON_API DynamicMapTree bool getIntersectionTime(uint32 phasemask, const G3D::Ray& ray, const G3D::Vector3& endPos, float& maxDist) const; - bool getAreaInfo(float x, float y, float& z, uint32 phasemask, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const; - void getAreaAndLiquidData(float x, float y, float z, uint32 phasemask, uint8 reqLiquidType, VMAP::AreaAndLiquidData& data) const; + bool getAreaAndLiquidData(float x, float y, float z, uint32 phasemask, Optional reqLiquidType, VMAP::AreaAndLiquidData& data) const; bool getObjectHitPos(uint32 phasemask, const G3D::Vector3& pPos1, const G3D::Vector3& pPos2, G3D::Vector3& pResultHitPos, diff --git a/src/common/Collision/Management/IVMapManager.h b/src/common/Collision/Management/IVMapManager.h index b25d93bd9b4..e48b4f38b75 100644 --- a/src/common/Collision/Management/IVMapManager.h +++ b/src/common/Collision/Management/IVMapManager.h @@ -53,17 +53,21 @@ namespace VMAP { struct AreaInfo { - AreaInfo(int32 _adtId, int32 _rootId, int32 _groupId, uint32 _flags) : adtId(_adtId), rootId(_rootId), groupId(_groupId), mogpFlags(_flags) { } - int32 const adtId; - int32 const rootId; - int32 const groupId; - uint32 const mogpFlags; + AreaInfo() = default; + AreaInfo(int32 _groupId, int32 _adtId, int32 _rootId, uint32 _mogpFlags, uint32 _uniqueId) + : groupId(_groupId), adtId(_adtId), rootId(_rootId), mogpFlags(_mogpFlags), uniqueId(_uniqueId) { } + int32 groupId = 0; + int32 adtId = 0; + int32 rootId = 0; + uint32 mogpFlags = 0; + uint32 uniqueId = 0; }; struct LiquidInfo { + LiquidInfo() = default; LiquidInfo(uint32 _type, float _level) : type(_type), level(_level) { } - uint32 const type; - float const level; + uint32 type = 0; + float level = 0.0f; }; float floorZ = VMAP_INVALID_HEIGHT; @@ -117,14 +121,12 @@ namespace VMAP bool isMapLoadingEnabled() const { return(iEnableLineOfSightCalc || iEnableHeightCalc ); } virtual std::string getDirFileName(unsigned int pMapId, int x, int y) const =0; + /** Query world model area info. \param z gets adjusted to the ground height for which this are info is valid */ - virtual bool getAreaInfo(uint32 mapId, float x, float y, float &z, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const=0; - virtual bool GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const=0; - // get both area + liquid data in a single vmap lookup - virtual void getAreaAndLiquidData(unsigned int mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const=0; + virtual bool getAreaAndLiquidData(unsigned int mapId, float x, float y, float z, Optional reqLiquidType, AreaAndLiquidData& data) const = 0; }; } diff --git a/src/common/Collision/Management/VMapManager2.cpp b/src/common/Collision/Management/VMapManager2.cpp index 9ee1d5a0b3f..4fed17787de 100644 --- a/src/common/Collision/Management/VMapManager2.cpp +++ b/src/common/Collision/Management/VMapManager2.cpp @@ -233,63 +233,8 @@ namespace VMAP return VMAP_INVALID_HEIGHT_VALUE; } - bool VMapManager2::getAreaInfo(uint32 mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const + bool VMapManager2::getAreaAndLiquidData(unsigned int mapId, float x, float y, float z, Optional reqLiquidType, AreaAndLiquidData& data) const { - if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG)) - { - InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); - if (instanceTree != iInstanceMapTrees.end()) - { - Vector3 pos = convertPositionToInternalRep(x, y, z); - bool result = instanceTree->second->getAreaInfo(pos, flags, adtId, rootId, groupId); - // z is not touched by convertPositionToInternalRep(), so just copy - z = pos.z; - return result; - } - } - - return false; - } - - bool VMapManager2::GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const - { - if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS)) - { - InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); - if (instanceTree != iInstanceMapTrees.end()) - { - LocationInfo info; - Vector3 pos = convertPositionToInternalRep(x, y, z); - if (instanceTree->second->GetLocationInfo(pos, info)) - { - floor = info.ground_Z; - ASSERT(floor < std::numeric_limits::max()); - ASSERT(info.hitModel); - type = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc - mogpFlags = info.hitModel->GetMogpFlags(); - if (reqLiquidType && !(GetLiquidFlagsPtr(type) & reqLiquidType)) - return false; - ASSERT(info.hitInstance); - if (info.hitInstance->GetLiquidLevel(pos, info, level)) - return true; - } - } - } - - return false; - } - - void VMapManager2::getAreaAndLiquidData(unsigned int mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const - { - if (IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS)) - { - data.floorZ = z; - int32 adtId, rootId, groupId; - uint32 flags; - if (getAreaInfo(mapId, x, y, data.floorZ, flags, adtId, rootId, groupId)) - data.areaInfo.emplace(adtId, rootId, groupId, flags); - return; - } InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { @@ -300,16 +245,23 @@ namespace VMAP ASSERT(info.hitModel); ASSERT(info.hitInstance); data.floorZ = info.ground_Z; - uint32 liquidType = info.hitModel->GetLiquidType(); - float liquidLevel; - if (!reqLiquidType || (GetLiquidFlagsPtr(liquidType) & reqLiquidType)) - if (info.hitInstance->GetLiquidLevel(pos, info, liquidLevel)) - data.liquidInfo.emplace(liquidType, liquidLevel); + if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS)) + { + uint32 liquidType = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc + float liquidLevel; + if (!reqLiquidType || (GetLiquidFlagsPtr(liquidType) & *reqLiquidType)) + if (info.hitInstance->GetLiquidLevel(pos, info, liquidLevel)) + data.liquidInfo.emplace(liquidType, liquidLevel); + } if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG)) - data.areaInfo.emplace(info.hitInstance->adtId, info.rootId, info.hitModel->GetWmoID(), info.hitModel->GetMogpFlags()); + data.areaInfo.emplace(info.hitModel->GetWmoID(), info.hitInstance->adtId, info.rootId, info.hitModel->GetMogpFlags(), info.hitInstance->ID); + + return true; } } + + return false; } WorldModel* VMapManager2::acquireModelInstance(const std::string& basepath, const std::string& filename, uint32 flags/* Only used when creating the model */) diff --git a/src/common/Collision/Management/VMapManager2.h b/src/common/Collision/Management/VMapManager2.h index 10a357318ab..25f4257997f 100644 --- a/src/common/Collision/Management/VMapManager2.h +++ b/src/common/Collision/Management/VMapManager2.h @@ -115,9 +115,7 @@ namespace VMAP bool processCommand(char* /*command*/) override { return false; } // for debug and extensions - bool getAreaInfo(uint32 mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const override; - bool GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const override; - void getAreaAndLiquidData(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const override; + bool getAreaAndLiquidData(uint32 mapId, float x, float y, float z, Optional reqLiquidType, AreaAndLiquidData& data) const override; WorldModel* acquireModelInstance(const std::string& basepath, const std::string& filename, uint32 flags = 0); void releaseModelInstance(const std::string& filename); diff --git a/src/common/Collision/Maps/MapDefines.h b/src/common/Collision/Maps/MapDefines.h index 6e7aa4410e5..1877d3eec1c 100644 --- a/src/common/Collision/Maps/MapDefines.h +++ b/src/common/Collision/Maps/MapDefines.h @@ -19,7 +19,8 @@ #define _MAPDEFINES_H #include "Define.h" -#include "DetourNavMesh.h" +#include "Optional.h" +#include const uint32 MMAP_MAGIC = 0x4d4d4150; // 'MMAP' #define MMAP_VERSION 15 @@ -69,4 +70,47 @@ enum NavTerrainFlag NAV_MAGMA_SLIME = 1 << (NAV_AREA_MAX_VALUE - NAV_AREA_MAGMA_SLIME) }; -#endif /* _MAPDEFINES_H */ +enum ZLiquidStatus : uint32 +{ + LIQUID_MAP_NO_WATER = 0x00000000, + LIQUID_MAP_ABOVE_WATER = 0x00000001, + LIQUID_MAP_WATER_WALK = 0x00000002, + LIQUID_MAP_IN_WATER = 0x00000004, + LIQUID_MAP_UNDER_WATER = 0x00000008, +}; + +#define MAP_LIQUID_STATUS_SWIMMING (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER) +#define MAP_LIQUID_STATUS_IN_CONTACT (MAP_LIQUID_STATUS_SWIMMING | LIQUID_MAP_WATER_WALK) + +struct LiquidData +{ + uint32 type_flags; + uint32 entry; + float level; + float depth_level; +}; + +struct WmoLocation +{ + WmoLocation() = default; + WmoLocation(int32 groupId, int32 nameSetId, int32 rootId, uint32 uniqueId) + : GroupId(groupId), NameSetId(nameSetId), RootId(rootId), UniqueId(uniqueId) { } + + int32 GroupId = 0; + int32 NameSetId = 0; + int32 RootId = 0; + uint32 UniqueId = 0; +}; + +struct PositionFullTerrainStatus +{ + PositionFullTerrainStatus() : areaId(0), floorZ(0.0f), outdoors(true), liquidStatus(LIQUID_MAP_NO_WATER) { } + uint32 areaId; + float floorZ; + bool outdoors; + ZLiquidStatus liquidStatus; + Optional wmoLocation; + Optional liquidInfo; +}; + +#endif // _MAPDEFINES_H diff --git a/src/common/Collision/Maps/MapTree.cpp b/src/common/Collision/Maps/MapTree.cpp index b023e134cd3..55d33e7ee6c 100644 --- a/src/common/Collision/Maps/MapTree.cpp +++ b/src/common/Collision/Maps/MapTree.cpp @@ -50,22 +50,6 @@ namespace VMAP ModelIgnoreFlags flags; }; - class AreaInfoCallback - { - public: - AreaInfoCallback(ModelInstance* val): prims(val) { } - void operator()(Vector3 const& point, uint32 entry) - { -#ifdef VMAP_DEBUG - TC_LOG_DEBUG("maps", "AreaInfoCallback: trying to intersect '{}'", prims[entry].name); -#endif - prims[entry].intersectPoint(point, aInfo); - } - - ModelInstance* prims; - AreaInfo aInfo; - }; - class LocationInfoCallback { public: @@ -96,22 +80,6 @@ namespace VMAP return tilefilename.str(); } - bool StaticMapTree::getAreaInfo(Vector3 &pos, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const - { - AreaInfoCallback intersectionCallBack(iTreeValues); - iTree.intersectPoint(pos, intersectionCallBack); - if (intersectionCallBack.aInfo.result) - { - flags = intersectionCallBack.aInfo.flags; - adtId = intersectionCallBack.aInfo.adtId; - rootId = intersectionCallBack.aInfo.rootId; - groupId = intersectionCallBack.aInfo.groupId; - pos.z = intersectionCallBack.aInfo.ground_Z; - return true; - } - return false; - } - bool StaticMapTree::GetLocationInfo(Vector3 const& pos, LocationInfo &info) const { LocationInfoCallback intersectionCallBack(iTreeValues, info); diff --git a/src/common/Collision/Maps/MapTree.h b/src/common/Collision/Maps/MapTree.h index bcb24f58709..9fed79314b4 100644 --- a/src/common/Collision/Maps/MapTree.h +++ b/src/common/Collision/Maps/MapTree.h @@ -30,6 +30,12 @@ namespace VMAP enum class LoadResult : uint8; enum class ModelIgnoreFlags : uint32; + struct GroupLocationInfo + { + const GroupModel* hitModel = nullptr; + int32 rootId = -1; + }; + struct TC_COMMON_API LocationInfo { LocationInfo(): rootId(-1), hitInstance(nullptr), hitModel(nullptr), ground_Z(-G3D::finf()) { } @@ -73,7 +79,6 @@ namespace VMAP bool isInLineOfSight(const G3D::Vector3& pos1, const G3D::Vector3& pos2, ModelIgnoreFlags ignoreFlags) const; bool getObjectHitPos(const G3D::Vector3& pos1, const G3D::Vector3& pos2, G3D::Vector3& pResultHitPos, float pModifyDist) const; float getHeight(const G3D::Vector3& pPos, float maxSearchDist) const; - bool getAreaInfo(G3D::Vector3 &pos, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const; bool GetLocationInfo(const G3D::Vector3 &pos, LocationInfo &info) const; bool InitMap(const std::string &fname, VMapManager2* vm); diff --git a/src/common/Collision/Models/GameObjectModel.cpp b/src/common/Collision/Models/GameObjectModel.cpp index 23735f2d8e5..1b3bb2ff092 100644 --- a/src/common/Collision/Models/GameObjectModel.cpp +++ b/src/common/Collision/Models/GameObjectModel.cpp @@ -183,27 +183,6 @@ bool GameObjectModel::intersectRay(const G3D::Ray& ray, float& MaxDist, bool Sto return hit; } -void GameObjectModel::intersectPoint(G3D::Vector3 const& point, VMAP::AreaInfo& info, uint32 ph_mask) const -{ - if (!(phasemask & ph_mask) || !owner->IsSpawned() || !isMapObject()) - return; - - if (!iBound.contains(point)) - return; - - // child bounds are defined in object space: - Vector3 pModel = iInvRot * (point - iPos) * iInvScale; - Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f); - float zDist; - if (iModel->IntersectPoint(pModel, zDirModel, zDist, info)) - { - Vector3 modelGround = pModel + zDist * zDirModel; - float world_Z = ((modelGround * iInvRot) * iScale + iPos).z; - if (info.ground_Z < world_Z) - info.ground_Z = world_Z; - } -} - bool GameObjectModel::GetLocationInfo(G3D::Vector3 const& point, VMAP::LocationInfo& info, uint32 ph_mask) const { if (!(phasemask & ph_mask) || !owner->IsSpawned() || !isMapObject()) @@ -216,7 +195,9 @@ bool GameObjectModel::GetLocationInfo(G3D::Vector3 const& point, VMAP::LocationI Vector3 pModel = iInvRot * (point - iPos) * iInvScale; Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f); float zDist; - if (iModel->GetLocationInfo(pModel, zDirModel, zDist, info)) + + VMAP::GroupLocationInfo groupInfo; + if (iModel->GetLocationInfo(pModel, zDirModel, zDist, groupInfo)) { Vector3 modelGround = pModel + zDist * zDirModel; float world_Z = ((modelGround * iInvRot) * iScale + iPos).z; diff --git a/src/common/Collision/Models/GameObjectModel.h b/src/common/Collision/Models/GameObjectModel.h index 78f17b75391..46de9bec4c3 100644 --- a/src/common/Collision/Models/GameObjectModel.h +++ b/src/common/Collision/Models/GameObjectModel.h @@ -71,7 +71,6 @@ class TC_COMMON_API GameObjectModel /*, public Intersectable*/ bool isMapObject() const { return isWmo; } bool intersectRay(const G3D::Ray& Ray, float& MaxDist, bool StopAtFirstHit, uint32 ph_mask, VMAP::ModelIgnoreFlags ignoreFlags) const; - void intersectPoint(G3D::Vector3 const& point, VMAP::AreaInfo& info, uint32 ph_mask) const; bool GetLocationInfo(G3D::Vector3 const& point, VMAP::LocationInfo& info, uint32 ph_mask) const; bool GetLiquidLevel(G3D::Vector3 const& point, VMAP::LocationInfo& info, float& liqHeight) const; diff --git a/src/common/Collision/Models/ModelInstance.cpp b/src/common/Collision/Models/ModelInstance.cpp index db0bc491a0d..5ed144f12c1 100644 --- a/src/common/Collision/Models/ModelInstance.cpp +++ b/src/common/Collision/Models/ModelInstance.cpp @@ -63,40 +63,6 @@ namespace VMAP return hit; } - void ModelInstance::intersectPoint(const G3D::Vector3& p, AreaInfo &info) const - { - if (!iModel) - { -#ifdef VMAP_DEBUG - std::cout << "\n"; -#endif - return; - } - - // M2 files don't contain area info, only WMO files - if (flags & MOD_M2) - return; - if (!iBound.contains(p)) - return; - // child bounds are defined in object space: - Vector3 pModel = iInvRot * (p - iPos) * iInvScale; - Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f); - float zDist; - if (iModel->IntersectPoint(pModel, zDirModel, zDist, info)) - { - Vector3 modelGround = pModel + zDist * zDirModel; - // Transform back to world space. Note that: - // Mat * vec == vec * Mat.transpose() - // and for rotation matrices: Mat.inverse() == Mat.transpose() - float world_Z = ((modelGround * iInvRot) * iScale + iPos).z; - if (info.ground_Z < world_Z) - { - info.ground_Z = world_Z; - info.adtId = adtId; - } - } - } - bool ModelInstance::GetLocationInfo(const G3D::Vector3& p, LocationInfo &info) const { if (!iModel) @@ -116,7 +82,9 @@ namespace VMAP Vector3 pModel = iInvRot * (p - iPos) * iInvScale; Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f); float zDist; - if (iModel->GetLocationInfo(pModel, zDirModel, zDist, info)) + + GroupLocationInfo groupInfo; + if (iModel->GetLocationInfo(pModel, zDirModel, zDist, groupInfo)) { Vector3 modelGround = pModel + zDist * zDirModel; // Transform back to world space. Note that: @@ -125,6 +93,8 @@ namespace VMAP float world_Z = ((modelGround * iInvRot) * iScale + iPos).z; if (info.ground_Z < world_Z) // hm...could it be handled automatically with zDist at intersection? { + info.rootId = groupInfo.rootId; + info.hitModel = groupInfo.hitModel; info.ground_Z = world_Z; info.hitInstance = this; return true; @@ -142,8 +112,7 @@ namespace VMAP if (info.hitModel->GetLiquidLevel(pModel, zDist)) { // calculate world height (zDist in model coords): - // assume WMO not tilted (wouldn't make much sense anyway) - liqHeight = zDist * iScale + iPos.z; + liqHeight = (Vector3(pModel.x, pModel.y, zDist) * iInvRot * iScale + iPos).z; return true; } return false; diff --git a/src/common/Collision/Models/ModelInstance.h b/src/common/Collision/Models/ModelInstance.h index e984aa1065a..366f1eee97b 100644 --- a/src/common/Collision/Models/ModelInstance.h +++ b/src/common/Collision/Models/ModelInstance.h @@ -67,7 +67,6 @@ namespace VMAP ModelInstance(ModelSpawn const& spawn, WorldModel* model); void setUnloaded() { iModel = nullptr; } bool intersectRay(G3D::Ray const& pRay, float& pMaxDist, bool pStopAtFirstHit, ModelIgnoreFlags ignoreFlags) const; - void intersectPoint(G3D::Vector3 const& p, AreaInfo &info) const; bool GetLocationInfo(G3D::Vector3 const& p, LocationInfo &info) const; bool GetLiquidLevel(G3D::Vector3 const& p, LocationInfo &info, float &liqHeight) const; WorldModel* getWorldModel() { return iModel; } diff --git a/src/common/Collision/Models/WorldModel.cpp b/src/common/Collision/Models/WorldModel.cpp index 59bc304ca7e..a68651d5e3d 100644 --- a/src/common/Collision/Models/WorldModel.cpp +++ b/src/common/Collision/Models/WorldModel.cpp @@ -20,9 +20,9 @@ #include "MapTree.h" #include "ModelInstance.h" #include "ModelIgnoreFlags.h" +#include using G3D::Vector3; -using G3D::Ray; template<> struct BoundsTrait { @@ -416,17 +416,46 @@ namespace VMAP return callback.hit; } - bool GroupModel::IsInsideObject(Vector3 const& pos, Vector3 const& down, float& z_dist) const + inline bool IsInsideOrAboveBound(G3D::AABox const& bounds, const G3D::Point3& point) { - if (triangles.empty() || !iBound.contains(pos)) - return false; - Vector3 rPos = pos - 0.1f * down; - float dist = G3D::finf(); - G3D::Ray ray(rPos, down); - bool hit = IntersectRay(ray, dist, false); - if (hit) - z_dist = dist - 0.1f; - return hit; + return point.x >= bounds.low().x + && point.y >= bounds.low().y + && point.z >= bounds.low().z + && point.x <= bounds.high().x + && point.y <= bounds.high().y; + } + + GroupModel::InsideResult GroupModel::IsInsideObject(G3D::Ray const& ray, float& z_dist) const + { + if (triangles.empty() || !IsInsideOrAboveBound(iBound, ray.origin())) + return OUT_OF_BOUNDS; + + if (meshTree.bound().high().z >= ray.origin().z) + { + float dist = G3D::finf(); + if (IntersectRay(ray, dist, false)) + { + z_dist = dist - 0.1f; + return INSIDE; + } + if (meshTree.bound().contains(ray.origin())) + return MAYBE_INSIDE; + } + else + { + // some group models don't have any floor to intersect with + // so we should attempt to intersect with a model part below this group + // then find back where we originated from (in WorldModel::GetLocationInfo) + float dist = G3D::finf(); + float delta = ray.origin().z - meshTree.bound().high().z; + if (IntersectRay(ray.bumpedRay(delta), dist, false)) + { + z_dist = dist - 0.1f + delta; + return ABOVE; + } + } + + return OUT_OF_BOUNDS; } bool GroupModel::GetLiquidLevel(Vector3 const& pos, float& liqHeight) const @@ -492,74 +521,60 @@ namespace VMAP return isc.hit; } - class WModelAreaCallback { - public: - WModelAreaCallback(std::vector const& vals, Vector3 const& down) : - prims(vals.begin()), hit(vals.end()), minVol(G3D::finf()), zDist(G3D::finf()), zVec(down) { } - std::vector::const_iterator prims; - std::vector::const_iterator hit; - float minVol; - float zDist; - Vector3 zVec; - void operator()(Vector3 const& point, uint32 entry) + class WModelAreaCallback + { + public: + WModelAreaCallback(std::vector const& vals) : + prims(vals), hit() { } + std::vector const& prims; + std::array hit; + + bool operator()(G3D::Ray const& ray, uint32 entry, float& distance, bool /*stopAtFirstHit*/) + { + float group_Z; + if (GroupModel::InsideResult result = prims[entry].IsInsideObject(ray, group_Z); result != GroupModel::OUT_OF_BOUNDS) { - float group_Z; - //float pVol = prims[entry].GetBound().volume(); - //if (pVol < minVol) - //{ - /* if (prims[entry].iBound.contains(point)) */ - if (prims[entry].IsInsideObject(point, zVec, group_Z)) + if (result != GroupModel::MAYBE_INSIDE) + { + if (group_Z < distance) { - //minVol = pVol; - //hit = prims + entry; - if (group_Z < zDist) - { - zDist = group_Z; - hit = prims + entry; - } -#ifdef VMAP_DEBUG - GroupModel const& gm = prims[entry]; - printf("%10u %8X %7.3f, %7.3f, %7.3f | %7.3f, %7.3f, %7.3f | z=%f, p_z=%f\n", gm.GetWmoID(), gm.GetMogpFlags(), - gm.GetBound().low().x, gm.GetBound().low().y, gm.GetBound().low().z, - gm.GetBound().high().x, gm.GetBound().high().y, gm.GetBound().high().z, group_Z, point.z); -#endif + distance = group_Z; + hit[result] = &prims[entry]; + return true; } - //} - //std::cout << "trying to intersect '" << prims[entry].name << "'\n"; + } + else + hit[result] = &prims[entry]; } + return false; + } }; - bool WorldModel::IntersectPoint(const G3D::Vector3 &p, const G3D::Vector3 &down, float &dist, AreaInfo &info) const + bool WorldModel::GetLocationInfo(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, GroupLocationInfo& info) const { if (groupModels.empty()) return false; - WModelAreaCallback callback(groupModels, down); - groupTree.intersectPoint(p, callback); - if (callback.hit != groupModels.end()) + WModelAreaCallback callback(groupModels); + G3D::Ray r(p - down * 0.1f, down); + float zDist = groupTree.bound().extent().length(); + groupTree.intersectRay(r, callback, zDist, false); + if (callback.hit[GroupModel::INSIDE]) { info.rootId = RootWMOID; - info.groupId = callback.hit->GetWmoID(); - info.flags = callback.hit->GetMogpFlags(); - info.result = true; - dist = callback.zDist; + info.hitModel = callback.hit[GroupModel::INSIDE]; + dist = zDist; return true; } - return false; - } - - bool WorldModel::GetLocationInfo(const G3D::Vector3 &p, const G3D::Vector3 &down, float &dist, LocationInfo &info) const - { - if (groupModels.empty()) - return false; - WModelAreaCallback callback(groupModels, down); - groupTree.intersectPoint(p, callback); - if (callback.hit != groupModels.end()) + // some group models don't have any floor to intersect with + // so we should attempt to intersect with a model part below the group `p` is in (stored in GroupModel::ABOVE) + // then find back where we originated from (GroupModel::MAYBE_INSIDE) + if (callback.hit[GroupModel::MAYBE_INSIDE] && callback.hit[GroupModel::ABOVE]) { info.rootId = RootWMOID; - info.hitModel = &(*callback.hit); - dist = callback.zDist; + info.hitModel = callback.hit[GroupModel::MAYBE_INSIDE]; + dist = zDist; return true; } return false; diff --git a/src/common/Collision/Models/WorldModel.h b/src/common/Collision/Models/WorldModel.h index 093a4ea84ed..e06807687df 100644 --- a/src/common/Collision/Models/WorldModel.h +++ b/src/common/Collision/Models/WorldModel.h @@ -31,6 +31,7 @@ namespace VMAP class TreeNode; struct AreaInfo; struct LocationInfo; + struct GroupLocationInfo; enum class ModelIgnoreFlags : uint32; class TC_COMMON_API MeshTriangle @@ -83,12 +84,14 @@ namespace VMAP void setMeshData(std::vector &vert, std::vector &tri); void setLiquidData(WmoLiquid*& liquid) { iLiquid = liquid; liquid = nullptr; } bool IntersectRay(const G3D::Ray &ray, float &distance, bool stopAtFirstHit) const; - bool IsInsideObject(const G3D::Vector3 &pos, const G3D::Vector3 &down, float &z_dist) const; + enum InsideResult { INSIDE = 0, MAYBE_INSIDE = 1, ABOVE = 2, OUT_OF_BOUNDS = -1 }; + InsideResult IsInsideObject(G3D::Ray const& ray, float& z_dist) const; bool GetLiquidLevel(const G3D::Vector3 &pos, float &liqHeight) const; uint32 GetLiquidType() const; bool writeToFile(FILE* wf); bool readFromFile(FILE* rf); - const G3D::AABox& GetBound() const { return iBound; } + G3D::AABox const& GetBound() const { return iBound; } + G3D::AABox const& GetMeshTreeBound() const { return meshTree.bound(); } uint32 GetMogpFlags() const { return iMogpFlags; } uint32 GetWmoID() const { return iGroupWMOID; } void getMeshData(std::vector& outVertices, std::vector& outTriangles, WmoLiquid*& liquid); @@ -112,8 +115,7 @@ namespace VMAP void setGroupModels(std::vector &models); void setRootWmoID(uint32 id) { RootWMOID = id; } bool IntersectRay(const G3D::Ray &ray, float &distance, bool stopAtFirstHit, ModelIgnoreFlags ignoreFlags) const; - bool IntersectPoint(const G3D::Vector3 &p, const G3D::Vector3 &down, float &dist, AreaInfo &info) const; - bool GetLocationInfo(const G3D::Vector3 &p, const G3D::Vector3 &down, float &dist, LocationInfo &info) const; + bool GetLocationInfo(const G3D::Vector3 &p, const G3D::Vector3 &down, float &dist, GroupLocationInfo& info) const; bool writeFile(const std::string &filename); bool readFile(const std::string &filename); void getGroupModels(std::vector& outGroupModels); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 35c9d4d5537..776eb7dbe87 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -176,7 +176,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() // 0: uint32, 1: uint8, 3: string, 4: uint32, 5: uint32 PrepareStatement(CHAR_INS_GUILD_RANK, "INSERT INTO guild_rank (guildid, rid, rname, rights, BankMoneyPerDay) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_GUILD_RANKS, "DELETE FROM guild_rank WHERE guildid = ?", CONNECTION_ASYNC); // 0: uint32 - PrepareStatement(CHAR_DEL_GUILD_LOWEST_RANK, "DELETE FROM guild_rank WHERE guildid = ? AND rid >= ?", CONNECTION_ASYNC); // 0: uint32, 1: uint8 + PrepareStatement(CHAR_DEL_GUILD_RANK, "DELETE FROM guild_rank WHERE guildid = ? AND rid = ?", CONNECTION_ASYNC); // 0: uint32, 1: uint8 PrepareStatement(CHAR_INS_GUILD_BANK_TAB, "INSERT INTO guild_bank_tab (guildid, TabId) VALUES (?, ?)", CONNECTION_ASYNC); // 0: uint32, 1: uint8 PrepareStatement(CHAR_DEL_GUILD_BANK_TAB, "DELETE FROM guild_bank_tab WHERE guildid = ? AND TabId = ?", CONNECTION_ASYNC); // 0: uint32, 1: uint8 PrepareStatement(CHAR_DEL_GUILD_BANK_TABS, "DELETE FROM guild_bank_tab WHERE guildid = ?", CONNECTION_ASYNC); // 0: uint32 @@ -373,7 +373,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_ALL_GM_TICKETS, "TRUNCATE TABLE gm_ticket", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_INVALID_SPELL_TALENTS, "DELETE FROM character_talent WHERE spell = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_INVALID_SPELL_SPELLS, "DELETE FROM character_spell WHERE spell = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_UPD_DELETE_INFO, "UPDATE characters SET deleteInfos_Name = name, deleteInfos_Account = account, deleteDate = UNIX_TIMESTAMP(), name = '', account = 0 WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_UPD_DELETE_INFO, "UPDATE characters SET deleteInfos_Name = name, deleteInfos_Account = account, deleteDate = UNIX_TIMESTAMP(), name = NULL, account = 0 WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_RESTORE_DELETE_INFO, "UPDATE characters SET name = ?, account = ?, deleteDate = NULL, deleteInfos_Name = NULL, deleteInfos_Account = NULL WHERE deleteDate IS NOT NULL AND guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_ZONE, "UPDATE characters SET zone = ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_LEVEL, "UPDATE characters SET level = ?, xp = 0 WHERE guid = ?", CONNECTION_ASYNC); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 7404a615c61..4258d1b5788 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -155,7 +155,7 @@ enum CharacterDatabaseStatements : uint32 CHAR_DEL_GUILD_MEMBERS, CHAR_INS_GUILD_RANK, CHAR_DEL_GUILD_RANKS, - CHAR_DEL_GUILD_LOWEST_RANK, + CHAR_DEL_GUILD_RANK, CHAR_INS_GUILD_BANK_TAB, CHAR_DEL_GUILD_BANK_TAB, CHAR_DEL_GUILD_BANK_TABS, diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp index 372f64a273c..b28abd0e7fc 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.cpp +++ b/src/server/database/Database/Implementation/WorldDatabase.cpp @@ -77,7 +77,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, help FROM command", CONNECTION_SYNCH); - PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, type, type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ?", CONNECTION_SYNCH); + PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, type, type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName, StringId FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME, "SELECT entry FROM item_template WHERE name = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH); diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 1616d3e5787..48cd8e63888 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -385,6 +385,11 @@ inline Creature* GetClosestCreatureWithEntry(WorldObject* source, uint32 entry, return source->FindNearestCreature(entry, maxSearchRange, alive); } +inline Creature* GetClosestCreatureWithOptions(WorldObject* source, float maxSearchRange, FindCreatureOptions const& options) +{ + return source->FindNearestCreatureWithOptions(maxSearchRange, options); +} + inline GameObject* GetClosestGameObjectWithEntry(WorldObject* source, uint32 entry, float maxSearchRange, bool spawnedOnly = true) { return source->FindNearestGameObject(entry, maxSearchRange, spawnedOnly); @@ -396,6 +401,12 @@ inline void GetCreatureListWithEntryInGrid(Container& container, WorldObject* so source->GetCreatureListWithEntryInGrid(container, entry, maxSearchRange); } +template +inline void GetCreatureListWithOptionsInGrid(Container& container, WorldObject* source, float maxSearchRange, FindCreatureOptions const& options) +{ + source->GetCreatureListWithOptionsInGrid(container, maxSearchRange, options); +} + template inline void GetGameObjectListWithEntryInGrid(Container& container, WorldObject* source, uint32 entry, float maxSearchRange) { diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 0cfea7c0c30..ce1e8053f57 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1216,7 +1216,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!summoner) break; - bool personalSpawn = flags.HasFlag(SmartActionSummonCreatureFlags::PersonalSpawn); + ObjectGuid privateObjectOwner; + if (flags.HasFlag(SmartActionSummonCreatureFlags::PersonalSpawn)) + privateObjectOwner = summoner->IsPrivateObject() ? summoner->GetPrivateObjectOwner() : summoner->GetGUID(); uint32 spawnsCount = std::max(e.action.summonCreature.count, 1u); float x, y, z, o; @@ -1229,7 +1231,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u o += e.target.o; for (uint32 counter = 0; counter < spawnsCount; counter++) { - if (Creature* summon = summoner->SummonCreature(e.action.summonCreature.creature, x, y, z, o, (TempSummonType)e.action.summonCreature.type, Milliseconds(e.action.summonCreature.duration), personalSpawn)) + if (Creature* summon = summoner->SummonCreature(e.action.summonCreature.creature, x, y, z, o, (TempSummonType)e.action.summonCreature.type, Milliseconds(e.action.summonCreature.duration), privateObjectOwner)) if (e.action.summonCreature.attackInvoker) summon->AI()->AttackStart(target->ToUnit()); } @@ -1240,7 +1242,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u for (uint32 counter = 0; counter < spawnsCount; counter++) { - if (Creature* summon = summoner->SummonCreature(e.action.summonCreature.creature, e.target.x, e.target.y, e.target.z, e.target.o, (TempSummonType)e.action.summonCreature.type, Milliseconds(e.action.summonCreature.duration), personalSpawn)) + if (Creature* summon = summoner->SummonCreature(e.action.summonCreature.creature, e.target.x, e.target.y, e.target.z, e.target.o, (TempSummonType)e.action.summonCreature.type, Milliseconds(e.action.summonCreature.duration), privateObjectOwner)) if (unit && e.action.summonCreature.attackInvoker) summon->AI()->AttackStart(unit); } diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 8219d4ab05c..a76564d8b77 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -294,7 +294,7 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria) } } -bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, WorldObject const* target, uint32 miscvalue1 /*= 0*/, uint32 miscvalue2 /* = 0*/) const +bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, WorldObject const* target, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /* = 0*/) const { switch (dataType) { @@ -350,7 +350,7 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Wo return unitTarget->HasAuraEffect(aura.spell_id, aura.effect_idx); } case ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE: - return CompareValues(ComparisionType(value.compType), miscvalue1, value.value); + return CompareValues(ComparisionType(value.compType), miscValue1, value.value); case ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL: { if (!target) @@ -422,13 +422,13 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Wo Unit const* unitTarget = nullptr; if (target) unitTarget = target->ToUnit(); - return instance->CheckAchievementCriteriaMeet(criteria_id, source, unitTarget, miscvalue1); + return instance->CheckAchievementCriteriaMeet(criteria_id, source, unitTarget, miscValue1); } case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM: { AchievementCriteriaEntry const* entry = ASSERT_NOTNULL(sAchievementMgr->GetAchievementCriteria(criteria_id)); - uint32 itemId = (entry->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscvalue2 : miscvalue1); + uint32 itemId = (entry->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1); ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(itemId); if (!itemTemplate) return false; @@ -457,7 +457,7 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Wo } case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY: { - ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(miscvalue1); + ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(miscValue1); if (!pProto) return false; return pProto->Quality == item.item_quality; @@ -468,10 +468,10 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Wo return false; } -bool AchievementCriteriaDataSet::Meets(Player const* source, WorldObject const* target, uint32 miscvalue1 /*= 0*/, uint32 miscvalue2 /* = 0*/) const +bool AchievementCriteriaDataSet::Meets(Player const* source, WorldObject const* target, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /* = 0*/) const { for (AchievementCriteriaData const& criteriadata : storage) - if (!criteriadata.Meets(criteria_id, source, target, miscvalue1, miscvalue2)) + if (!criteriadata.Meets(criteria_id, source, target, miscValue1, miscValue2)) return false; return true; @@ -845,7 +845,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS: SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE); break; - // std case: increment at miscvalue1 + // std case: increment at miscValue1 case ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE: case ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE: case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS: @@ -861,7 +861,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: SetCriteriaProgress(achievementCriteria, miscValue1, PROGRESS_ACCUMULATE); break; - // std case: increment at miscvalue2 + // std case: increment at miscValue2 case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE: case ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM: case ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM: @@ -869,7 +869,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: SetCriteriaProgress(achievementCriteria, miscValue2, PROGRESS_ACCUMULATE); break; - // std case: high value at miscvalue1 + // std case: high value at miscValue1 case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID: case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD: /* FIXME: for online player only currently */ case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT: @@ -949,7 +949,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui break; } case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING: - // miscvalue1 is the ingame fallheight*100 as stored in dbc + // miscValue1 is the ingame fallheight*100 as stored in dbc SetCriteriaProgress(achievementCriteria, miscValue1); break; case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: @@ -1871,8 +1871,8 @@ bool AchievementMgr::RequirementsSatisfied(AchievementCriteriaEntry const* achie return false; break; case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: - // miscvalue1=loot_type (note: 0 = LOOT_CORPSE and then it ignored) - // miscvalue2=count of item loot + // miscValue1=loot_type (note: 0 = LOOT_CORPSE and then it ignored) + // miscValue2=count of item loot if (!miscValue1 || !miscValue2) return false; if (miscValue1 != achievementCriteria->Asset.LootType) @@ -1924,8 +1924,8 @@ bool AchievementMgr::RequirementsSatisfied(AchievementCriteriaEntry const* achie return false; break; case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM: - // miscvalue1 = itemSlot - // miscvalue2 = itemid + // miscValue1 = itemSlot + // miscValue2 = itemid if (!miscValue2) return false; if (miscValue1 != achievementCriteria->Asset.ItemSlot) @@ -1933,15 +1933,15 @@ bool AchievementMgr::RequirementsSatisfied(AchievementCriteriaEntry const* achie break; case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT: case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT: - // miscvalue1 = itemid - // miscvalue2 = diced value + // miscValue1 = itemid + // miscValue2 = diced value if (!miscValue1) return false; if (miscValue2 != achievementCriteria->Asset.RollValue) return false; break; case ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE: - // miscvalue1 = emote + // miscValue1 = emote if (!miscValue1) return false; if (miscValue1 != achievementCriteria->Asset.EmoteID) diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 1139d34bb22..62a7ed1c61c 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -283,7 +283,7 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 new } //this function sends mail, when auction is cancelled to old bidder -void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction trans) +void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction trans, Item* item) { ObjectGuid bidder_guid = ObjectGuid(HighGuid::Player, auction->bidder); Player* bidder = ObjectAccessor::FindConnectedPlayer(bidder_guid); @@ -292,6 +292,9 @@ void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, Ch if (!bidder) bidder_accId = sCharacterCache->GetCharacterAccountIdByGuid(bidder_guid); + if (bidder) + bidder->GetSession()->SendAuctionRemovedNotification(auction->Id, auction->itemEntry, item->GetItemRandomPropertyId()); + // bidder exist if ((bidder || bidder_accId) && !sAuctionBotConfig->IsBotChar(auction->bidder)) MailDraft(auction->BuildAuctionMailSubject(AUCTION_CANCELLED_TO_BIDDER), "") diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 80dba9a5ed3..dd7bb5d484c 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -188,7 +188,7 @@ class TC_GAME_API AuctionHouseMgr void SendAuctionSuccessfulMail(AuctionEntry* auction, CharacterDatabaseTransaction trans); void SendAuctionExpiredMail(AuctionEntry* auction, CharacterDatabaseTransaction trans); void SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, CharacterDatabaseTransaction trans); - void SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction trans); + void SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction trans, Item* item); static uint32 GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item* pItem, uint32 count); static AuctionHouseEntry const* GetAuctionHouseEntry(uint32 factionTemplateId); diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index bd01ad5850b..3f668392fcf 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -18,6 +18,7 @@ #include "Battlefield.h" #include "BattlefieldMgr.h" #include "Battleground.h" +#include "BattlegroundPackets.h" #include "CellImpl.h" #include "CreatureTextMgr.h" #include "DBCStores.h" @@ -630,11 +631,10 @@ void Battlefield::RemovePlayerFromResurrectQueue(ObjectGuid playerGuid) void Battlefield::SendAreaSpiritHealerQueryOpcode(Player* player, ObjectGuid guid) { - WorldPacket data(SMSG_AREA_SPIRIT_HEALER_TIME, 12); - uint32 time = m_LastResurrectTimer; // resurrect every 30 seconds - - data << guid << time; - player->SendDirectMessage(&data); + WorldPackets::Battleground::AreaSpiritHealerTime areaSpiritHealerTime; + areaSpiritHealerTime.HealerGuid = guid; + areaSpiritHealerTime.TimeLeft = m_LastResurrectTimer; + player->SendDirectMessage(areaSpiritHealerTime.Write()); } // ---------------------- diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp index 6d5ebc28e4d..fb4143bd70b 100644 --- a/src/server/game/Battlegrounds/Arena.cpp +++ b/src/server/game/Battlegrounds/Arena.cpp @@ -18,6 +18,7 @@ #include "Arena.h" #include "ArenaScore.h" #include "ArenaTeamMgr.h" +#include "BattlegroundPackets.h" #include "Log.h" #include "ObjectAccessor.h" #include "Player.h" @@ -25,37 +26,20 @@ #include "WorldSession.h" #include "WorldStatePackets.h" -void ArenaScore::AppendToPacket(WorldPacket& data) +void ArenaScore::AppendToPacket(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint64(PlayerGuid); + playerData.PlayerGUID = PlayerGuid; - data << uint32(KillingBlows); - data << uint8(TeamId); - data << uint32(DamageDone); - data << uint32(HealingDone); + playerData.Kills = KillingBlows; + playerData.HonorOrFaction = TeamId; + playerData.DamageDone = DamageDone; + playerData.HealingDone = HealingDone; - BuildObjectivesBlock(data); + BuildObjectivesBlock(playerData); } -void ArenaScore::BuildObjectivesBlock(WorldPacket& data) +void ArenaScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& /*playerData*/) { - data << uint32(0); // Objectives Count -} - -void ArenaTeamScore::BuildRatingInfoBlock(WorldPacket& data) -{ - uint32 ratingLost = std::abs(std::min(RatingChange, 0)); - uint32 ratingWon = std::max(RatingChange, 0); - - // should be old rating, new rating, and client will calculate rating change itself - data << uint32(ratingLost); - data << uint32(ratingWon); - data << uint32(MatchmakerRating); -} - -void ArenaTeamScore::BuildTeamInfoBlock(WorldPacket& data) -{ - data << TeamName; } Arena::Arena() diff --git a/src/server/game/Battlegrounds/ArenaScore.h b/src/server/game/Battlegrounds/ArenaScore.h index a8dbcefe127..63552a36215 100644 --- a/src/server/game/Battlegrounds/ArenaScore.h +++ b/src/server/game/Battlegrounds/ArenaScore.h @@ -21,15 +21,15 @@ #include "BattlegroundScore.h" #include -struct TC_GAME_API ArenaScore : public BattlegroundScore +struct TC_GAME_API ArenaScore final : public BattlegroundScore { friend class Arena; protected: ArenaScore(ObjectGuid playerGuid, uint32 team) : BattlegroundScore(playerGuid), TeamId(team == ALLIANCE ? PVP_TEAM_ALLIANCE : PVP_TEAM_HORDE) { } - void AppendToPacket(WorldPacket& data) final override; - void BuildObjectivesBlock(WorldPacket& data) final override; + void AppendToPacket(WorldPackets::Battleground::PVPLogData_Player& playerData) override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; // For Logging purpose std::string ToString() const override @@ -50,8 +50,6 @@ struct TC_GAME_API ArenaTeamScore protected: ArenaTeamScore() : RatingChange(0), MatchmakerRating(0) { } - virtual ~ArenaTeamScore() { } - void Reset() { RatingChange = 0; @@ -66,9 +64,6 @@ struct TC_GAME_API ArenaTeamScore TeamName = teamName; } - void BuildRatingInfoBlock(WorldPacket& data); - void BuildTeamInfoBlock(WorldPacket& data); - int32 RatingChange; uint32 MatchmakerRating; std::string TeamName; diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index f9901f3c422..7bb47cc75e2 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -18,6 +18,7 @@ #include "ArenaTeam.h" #include "ArenaTeamMgr.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "CalendarPackets.h" #include "CharacterCache.h" #include "DatabaseEnv.h" @@ -326,18 +327,22 @@ void ArenaTeam::DelMember(ObjectGuid guid, bool cleanDb) { if (group && playerMember->GetGroup() && group->GetGUID() == playerMember->GetGroup()->GetGUID()) { - if (BattlegroundQueueTypeId bgQueue = BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_AA, GetType())) + for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) { + BattlegroundQueueTypeId bgQueue = playerMember->GetBattlegroundQueueTypeId(i); + if (bgQueue.BattlemasterListId != BATTLEGROUND_AA || bgQueue.TeamSize != GetType()) + continue; + GroupQueueInfo ginfo; BattlegroundQueue& queue = sBattlegroundMgr->GetBattlegroundQueue(bgQueue); if (queue.GetPlayerGroupInfoData(playerMember->GetGUID(), &ginfo)) if (!ginfo.IsInvitedToBGInstanceGUID) { - WorldPacket data; playerMember->RemoveBattlegroundQueueId(bgQueue); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, nullptr, playerMember->GetBattlegroundQueueIndex(bgQueue), STATUS_NONE, 0, 0, 0, 0); + WorldPackets::Battleground::BattlefieldStatusNone battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNone(&battlefieldStatus, i); queue.RemovePlayer(playerMember->GetGUID(), true); - playerMember->GetSession()->SendPacket(&data); + playerMember->SendDirectMessage(battlefieldStatus.Write()); } } } @@ -604,6 +609,20 @@ uint8 ArenaTeam::GetSlotByType(uint32 type) return 0xFF; } +uint8 ArenaTeam::GetTypeBySlot(uint8 slot) +{ + switch (slot) + { + case 0: return ARENA_TEAM_2v2; + case 1: return ARENA_TEAM_3v3; + case 2: return ARENA_TEAM_5v5; + default: + break; + } + TC_LOG_ERROR("bg.arena", "FATAL: Unknown arena team slot {} for some arena team", slot); + return 0xFF; +} + bool ArenaTeam::IsMember(ObjectGuid guid) const { for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index 9495218980c..c6ee45a5125 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -129,6 +129,7 @@ class TC_GAME_API ArenaTeam uint32 GetType() const { return Type; } uint8 GetSlot() const { return GetSlotByType(GetType()); } static uint8 GetSlotByType(uint32 type); + static uint8 GetTypeBySlot(uint8 slot); ObjectGuid GetCaptain() const { return CaptainGuid; } std::string const& GetName() const { return TeamName; } ArenaTeamStats const& GetStats() const { return Stats; } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 938ac559b4c..bb08efda239 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -18,6 +18,7 @@ #include "Battleground.h" #include "ArenaScore.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "BattlegroundScore.h" #include "ChatTextBuilder.h" #include "Creature.h" @@ -42,18 +43,21 @@ #include "WorldStatePackets.h" #include -void BattlegroundScore::AppendToPacket(WorldPacket& data) +void BattlegroundScore::AppendToPacket(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint64(PlayerGuid); + playerData.PlayerGUID = PlayerGuid; - data << uint32(KillingBlows); - data << uint32(HonorableKills); - data << uint32(Deaths); - data << uint32(BonusHonor); - data << uint32(DamageDone); - data << uint32(HealingDone); + playerData.Kills = KillingBlows; + playerData.HonorOrFaction = WorldPackets::Battleground::PVPLogData_Honor + { + .HonorKills = HonorableKills, + .Deaths = Deaths, + .ContributionPoints = BonusHonor + }; + playerData.DamageDone = DamageDone; + playerData.HealingDone = HealingDone; - BuildObjectivesBlock(data); + BuildObjectivesBlock(playerData); } template @@ -461,11 +465,10 @@ inline void Battleground::_ProcessJoin(uint32 diff) if (Player* player = ObjectAccessor::FindPlayer(itr->first)) { // BG Status packet - WorldPacket status; - BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(m_TypeID, GetArenaType()); - uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), player->GetBGTeam()); - player->SendDirectMessage(&status); + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(m_TypeID, GetBracketId(), GetArenaType()); + WorldPackets::Battleground::BattlefieldStatusActive battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusActive(&battlefieldStatus, this, player, player->GetBattlegroundQueueIndex(bgQueueTypeId), bgQueueTypeId); + player->SendDirectMessage(battlefieldStatus.Write()); player->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); player->ResetAllPowers(); @@ -716,10 +719,11 @@ void Battleground::EndBattleground(uint32 winner) //we must set it this way, because end time is sent in packet! m_EndTime = TIME_TO_AUTOREMOVE; - WorldPacket pvpLogData; - BuildPvPLogDataPacket(pvpLogData); + WorldPackets::Battleground::PVPMatchStatistics pvpMatchStatistics; + BuildPvPLogDataPacket(pvpMatchStatistics); + pvpMatchStatistics.Write(); - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(GetTypeID(), GetArenaType()); + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(GetTypeID(), GetBracketId(), GetArenaType()); for (BattlegroundPlayerMap::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr) { @@ -769,6 +773,10 @@ void Battleground::EndBattleground(uint32 winner) CharacterDatabase.Execute(stmt); } + // remove temporary currency bonus auras before rewarding player + player->RemoveAura(SPELL_HONORABLE_DEFENDER_25Y); + player->RemoveAura(SPELL_HONORABLE_DEFENDER_60Y); + // Reward winner team if (team == winner) { @@ -794,11 +802,12 @@ void Battleground::EndBattleground(uint32 winner) BlockMovement(player); - player->SendDirectMessage(&pvpLogData); + player->SendDirectMessage(pvpMatchStatistics.GetRawPacket()); + + WorldPackets::Battleground::BattlefieldStatusActive battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusActive(&battlefieldStatus, this, player, player->GetBattlegroundQueueIndex(bgQueueTypeId), bgQueueTypeId); + player->SendDirectMessage(battlefieldStatus.Write()); - WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType(), player->GetBGTeam()); - player->SendDirectMessage(&data); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND, player->GetMapId()); } } @@ -865,8 +874,7 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen if (participant) // if the player was a match participant, remove auras, calc rating, update queue { - BattlegroundTypeId bgTypeId = GetTypeID(); - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(GetTypeID(), GetArenaType()); + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(GetTypeID(), GetBracketId(), GetArenaType()); if (player) { player->ClearAfkReports(); @@ -874,7 +882,7 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen // if arena, remove the specific arena auras if (isArena()) { - bgTypeId = BATTLEGROUND_AA; // set the bg type to all arenas (it will be used for queue refreshing) + bgQueueTypeId.BattlemasterListId = BATTLEGROUND_AA; // set the bg type to all arenas (it will be used for queue refreshing) // unsummon current and summon old pet if there was one and there isn't a current pet player->RemovePet(nullptr, PET_SAVE_NOT_IN_SLOT); @@ -883,9 +891,9 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen if (SendPacket) { - WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_NONE, 0, 0, 0, 0); - player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusNone battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNone(&battlefieldStatus, player->GetBattlegroundQueueIndex(bgQueueTypeId)); + player->SendDirectMessage(battlefieldStatus.Write()); } // this call is important, because player, when joins to battleground, this method is not called, so it must be called when leaving bg @@ -904,12 +912,12 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen { // a player has left the battleground, so there are free slots -> add to queue AddToBGFreeSlotQueue(); - sBattlegroundMgr->ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, GetBracketId()); + sBattlegroundMgr->ScheduleQueueUpdate(0, bgQueueTypeId); } // Let others know - WorldPacket data; - sBattlegroundMgr->BuildPlayerLeftBattlegroundPacket(&data, guid); - SendPacketToTeam(team, &data, player, false); + WorldPackets::Battleground::BattlegroundPlayerLeft playerLeft; + playerLeft.Guid = guid; + SendPacketToTeam(team, playerLeft.Write(), player, false); } if (player) @@ -998,9 +1006,9 @@ void Battleground::AddPlayer(Player* player) if (!isInBattleground) UpdatePlayersCountByTeam(team, false); // +1 player - WorldPacket data; - sBattlegroundMgr->BuildPlayerJoinedBattlegroundPacket(&data, player); - SendPacketToTeam(team, &data, player, false); + WorldPackets::Battleground::BattlegroundPlayerJoined playerJoined; + playerJoined.Guid = player->GetGUID(); + SendPacketToTeam(team, playerJoined.Write(), player, false); player->RemoveAurasByType(SPELL_AURA_MOUNTED); @@ -1197,33 +1205,33 @@ bool Battleground::HasFreeSlots() const return GetPlayersSize() < GetMaxPlayers(); } -void Battleground::BuildPvPLogDataPacket(WorldPacket& data) +void Battleground::BuildPvPLogDataPacket(WorldPackets::Battleground::PVPMatchStatistics& pvpLogData) { - uint8 type = (isArena() ? 1 : 0); - - data.Initialize(MSG_PVP_LOG_DATA, 1 + 1 + 4 + 40 * GetPlayerScoresSize()); - data << uint8(type); // type (battleground = 0 / arena = 1) - - if (type) // arena + if (isArena()) { - for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i) - _arenaTeamScores[i].BuildRatingInfoBlock(data); + WorldPackets::Battleground::PVPLogData_Arena& arena = pvpLogData.Arena.emplace(); for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i) - _arenaTeamScores[i].BuildTeamInfoBlock(data); + { + ArenaTeamScore const& score = _arenaTeamScores[i]; + + uint32 ratingLost = std::abs(std::min(score.RatingChange, 0)); + uint32 ratingWon = std::max(score.RatingChange, 0); + + // should be old rating, new rating, and client will calculate rating change itself + arena.Ratings.Prematch[i] = ratingLost; + arena.Ratings.Postmatch[i] = ratingWon; + arena.Ratings.PrematchMMR[i] = score.MatchmakerRating; + + arena.TeamName[i] = score.TeamName; + } } if (GetStatus() == STATUS_WAIT_LEAVE) - { - data << uint8(1); // bg ended - data << uint8(GetWinner()); // who win - } - else - data << uint8(0); // bg not ended + pvpLogData.Winner = GetWinner(); - data << uint32(GetPlayerScoresSize()); - for (auto const& score : PlayerScores) - score.second->AppendToPacket(data); + for (auto const& [_, score] : PlayerScores) + score->AppendToPacket(pvpLogData.Players.emplace_back()); } bool Battleground::UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor) @@ -1726,16 +1734,17 @@ void Battleground::PlayerAddedToBGCheckIfBGIsRunning(Player* player) if (GetStatus() != STATUS_WAIT_LEAVE) return; - WorldPacket data; - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(GetTypeID(), GetArenaType()); + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(GetTypeID(), GetBracketId(), GetArenaType()); BlockMovement(player); - BuildPvPLogDataPacket(data); - player->SendDirectMessage(&data); + WorldPackets::Battleground::PVPMatchStatistics pvpMatchStatistics; + BuildPvPLogDataPacket(pvpMatchStatistics); + player->SendDirectMessage(pvpMatchStatistics.Write()); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType(), player->GetBGTeam()); - player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusActive battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusActive(&battlefieldStatus, this, player, player->GetBattlegroundQueueIndex(bgQueueTypeId), bgQueueTypeId); + player->SendDirectMessage(battlefieldStatus.Write()); } uint32 Battleground::GetAlivePlayersCountByTeam(uint32 Team) const diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 76c98c3f6c2..e22e749aae6 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -29,6 +29,10 @@ namespace WorldPackets { + namespace Battleground + { + class PVPMatchStatistics; + } namespace WorldState { class InitWorldStates; @@ -399,7 +403,7 @@ class TC_GAME_API Battleground Group* GetBgRaid(uint32 TeamID) const { return TeamID == ALLIANCE ? m_BgRaids[TEAM_ALLIANCE] : m_BgRaids[TEAM_HORDE]; } void SetBgRaid(uint32 TeamID, Group* bg_raid); - void BuildPvPLogDataPacket(WorldPacket& data); + void BuildPvPLogDataPacket(WorldPackets::Battleground::PVPMatchStatistics& pvpLogData); virtual bool UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor = true); static TeamId GetTeamIndexByTeamId(uint32 Team) { return Team == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; } @@ -497,6 +501,15 @@ class TC_GAME_API Battleground // because BattleGrounds with different types and same level range has different m_BracketId uint8 GetUniqueBracketId() const; + BattlegroundPlayer const* GetBattlegroundPlayerData(ObjectGuid const& playerGuid) const + { + auto itr = m_Players.find(playerGuid); + if (itr == m_Players.end()) + return nullptr; + + return &itr->second; + } + Trinity::unique_weak_ptr GetWeakPtr() const { return m_weakRef; } void SetWeakPtr(Trinity::unique_weak_ptr weakRef) { m_weakRef = std::move(weakRef); } diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 1b3d2f0c851..9dc3abf8328 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -28,6 +28,7 @@ #include "BattlegroundDS.h" #include "BattlegroundRV.h" #include "BattlegroundIC.h" +#include "BattlegroundPackets.h" #include "Common.h" #include "Containers.h" #include "Chat.h" @@ -113,24 +114,17 @@ void BattlegroundMgr::Update(uint32 diff) } // update events timer - for (int qtype = BATTLEGROUND_QUEUE_NONE; qtype < MAX_BATTLEGROUND_QUEUE_TYPES; ++qtype) - m_BattlegroundQueues[qtype].UpdateEvents(diff); + for (std::pair& pair : m_BattlegroundQueues) + pair.second.UpdateEvents(diff); // update scheduled queues if (!m_QueueUpdateScheduler.empty()) { - std::vector scheduled; + std::vector scheduled; std::swap(scheduled, m_QueueUpdateScheduler); - for (uint8 i = 0; i < scheduled.size(); i++) - { - uint32 arenaMMRating = scheduled[i] >> 32; - uint8 arenaType = scheduled[i] >> 24 & 255; - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundQueueTypeId(scheduled[i] >> 16 & 255); - BattlegroundTypeId bgTypeId = BattlegroundTypeId((scheduled[i] >> 8) & 255); - BattlegroundBracketId bracket_id = BattlegroundBracketId(scheduled[i] & 255); - m_BattlegroundQueues[bgQueueTypeId].BattlegroundQueueUpdate(diff, bgTypeId, bracket_id, arenaType, arenaMMRating > 0, arenaMMRating); - } + for (auto& [arenaMMRating, bgQueueTypeId] : scheduled) + GetBattlegroundQueue(bgQueueTypeId).BattlegroundQueueUpdate(diff, arenaMMRating > 0, arenaMMRating); } // if rating difference counts, maybe force-update queues @@ -141,11 +135,15 @@ void BattlegroundMgr::Update(uint32 diff) { // forced update for rated arenas (scan all, but skipped non rated) TC_LOG_TRACE("bg.arena", "BattlegroundMgr: UPDATING ARENA QUEUES"); - for (int qtype = BATTLEGROUND_QUEUE_2v2; qtype <= BATTLEGROUND_QUEUE_5v5; ++qtype) + for (uint8 teamSize : { ARENA_TYPE_2v2, ARENA_TYPE_3v3, ARENA_TYPE_5v5 }) + { for (int bracket = BG_BRACKET_ID_FIRST; bracket < MAX_BATTLEGROUND_BRACKETS; ++bracket) - m_BattlegroundQueues[qtype].BattlegroundQueueUpdate(diff, - BATTLEGROUND_AA, BattlegroundBracketId(bracket), - BattlegroundMgr::BGArenaType(BattlegroundQueueTypeId(qtype)), true, 0); + { + BattlegroundQueueTypeId ratedArenaQueueId = BGQueueTypeId(BATTLEGROUND_AA, bracket, teamSize); + if (BattlegroundQueue* arenaQueue = Trinity::Containers::MapGetValuePtr(m_BattlegroundQueues, ratedArenaQueueId)) + arenaQueue->BattlegroundQueueUpdate(diff, true, 0); + } + } m_NextRatedArenaUpdate = sWorld->getIntConfig(CONFIG_ARENA_RATED_UPDATE_TIMER); } @@ -172,77 +170,64 @@ void BattlegroundMgr::Update(uint32 diff) } } -void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint32 arenaFaction) +void BattlegroundMgr::BuildBattlegroundStatusHeader(WorldPackets::Battleground::BattlefieldStatusHeader* header, Battleground const* bg, uint32 queueSlot, BattlegroundQueueTypeId queueId) { - // we can be in 2 queues in same time... + header->QueueSlot = queueSlot; + header->QueueID = queueId.GetPacked(); + header->RangeMin = bg->GetMinLevel(); + header->RangeMax = bg->GetMaxLevel(); + header->InstanceID = bg->GetClientInstanceID(); + header->RegisteredMatch = bg->isRated(); +} - if (StatusID == 0 || !bg) - { - data->Initialize(SMSG_BATTLEFIELD_STATUS, 4+8); - *data << uint32(QueueSlot); // queue id (0...1) - *data << uint64(0); - return; - } +void BattlegroundMgr::BuildBattlegroundStatusNone(WorldPackets::Battleground::BattlefieldStatusNone* battlefieldStatus, uint32 queueSlot) +{ + battlefieldStatus->QueueSlot = queueSlot; +} + +void BattlegroundMgr::BuildBattlegroundStatusNeedConfirmation(WorldPackets::Battleground::BattlefieldStatusNeedConfirmation* battlefieldStatus, Battleground const* bg, uint32 queueSlot, uint32 timeout, BattlegroundQueueTypeId queueId) +{ + BuildBattlegroundStatusHeader(&battlefieldStatus->Hdr, bg, queueSlot, queueId); + battlefieldStatus->Mapid = bg->GetMapId(); + battlefieldStatus->Timeout = timeout; +} - data->Initialize(SMSG_BATTLEFIELD_STATUS, (4+8+1+1+4+1+4+4+4)); - *data << uint32(QueueSlot); // queue id (0...1) - player can be in 2 queues in time - // The following segment is read as uint64 in client but can be appended as their original type. - *data << uint8(arenatype); - TC_LOG_DEBUG("network", "BattlegroundMgr::BuildBattlegroundStatusPacket: arenatype = {} for bg instanceID {}, TypeID {}.", arenatype, bg->GetClientInstanceID(), bg->GetTypeID()); - *data << uint8(bg->isArena() ? 0xE : 0x0); - *data << uint32(bg->GetTypeID()); - *data << uint16(0x1F90); - // End of uint64 segment, decomposed this way for simplicity - *data << uint8(bg->GetMinLevel()); - *data << uint8(bg->GetMaxLevel()); - *data << uint32(bg->GetClientInstanceID()); - // alliance/horde for BG and skirmish/rated for Arenas - // following displays the minimap-icon 0 = faction icon 1 = arenaicon - *data << uint8(bg->isRated()); // 1 for rated match, 0 for bg or non rated match - - *data << uint32(StatusID); // status - switch (StatusID) +void BattlegroundMgr::BuildBattlegroundStatusActive(WorldPackets::Battleground::BattlefieldStatusActive* battlefieldStatus, Battleground const* bg, Player const* player, uint32 queueSlot, BattlegroundQueueTypeId queueId) +{ + BuildBattlegroundStatusHeader(&battlefieldStatus->Hdr, bg, queueSlot, queueId); + battlefieldStatus->ShutdownTimer = bg->GetEndTime(); + battlefieldStatus->ArenaFaction = player->GetBGTeam() == HORDE ? PVP_TEAM_HORDE : PVP_TEAM_ALLIANCE; + battlefieldStatus->StartTimer = bg->GetStartTime(); + battlefieldStatus->Mapid = bg->GetMapId(); + if (bg->IsRandom()) { - case STATUS_WAIT_QUEUE: // status_in_queue - *data << uint32(Time1); // average wait time, milliseconds - *data << uint32(Time2); // time in queue, updated every minute!, milliseconds - break; - case STATUS_WAIT_JOIN: // status_invite - *data << uint32(bg->GetMapId()); // map id - *data << uint64(0); // 3.3.5, unknown - *data << uint32(Time1); // time to remove from queue, milliseconds - break; - case STATUS_IN_PROGRESS: // status_in_progress - *data << uint32(bg->GetMapId()); // map id - *data << uint64(0); // 3.3.5, unknown - *data << uint32(Time1); // time to bg auto leave, 0 at bg start, 120000 after bg end, milliseconds - *data << uint32(Time2); // time from bg start, milliseconds - *data << uint8(arenaFaction == ALLIANCE ? 1 : 0); // arenafaction (0 for horde, 1 for alliance) - break; - default: - TC_LOG_ERROR("bg.battleground", "Unknown BG status!"); - break; + BattlegroundTemplate const* realTemplate = sBattlegroundMgr->GetBattlegroundTemplateByTypeId(bg->GetTypeID(true)); + if (PvPDifficultyEntry const* realBracket = GetBattlegroundBracketByLevel(realTemplate->MapIDs.front(), DEFAULT_MAX_LEVEL)) + battlefieldStatus->RandomQueueID = BattlegroundQueueTypeId{ + .BattlemasterListId = uint16(realTemplate->Id), + .BracketId = uint8(realBracket->GetBracketId()), + .TeamSize = 0 + }.GetPacked(); } } -void BattlegroundMgr::BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result) +void BattlegroundMgr::BuildBattlegroundStatusQueued(WorldPackets::Battleground::BattlefieldStatusQueued* battlefieldStatus, Battleground const* bg, uint32 queueSlot, uint32 joinTime, BattlegroundQueueTypeId queueId, uint32 avgWaitTime) { - data->Initialize(SMSG_GROUP_JOINED_BATTLEGROUND, 4); - *data << int32(result); - if (result == ERR_BATTLEGROUND_JOIN_TIMED_OUT || result == ERR_BATTLEGROUND_JOIN_FAILED) - *data << uint64(0); // player guid + BuildBattlegroundStatusHeader(&battlefieldStatus->Hdr, bg, queueSlot, queueId); + battlefieldStatus->AverageWaitTime = avgWaitTime; + battlefieldStatus->WaitTime = GetMSTimeDiffToNow(joinTime); } -void BattlegroundMgr::BuildPlayerLeftBattlegroundPacket(WorldPacket* data, ObjectGuid guid) +void BattlegroundMgr::BuildBattlegroundStatusFailed(WorldPackets::Battleground::BattlefieldStatusFailed* battlefieldStatus, GroupJoinBattlegroundResult result, ObjectGuid const* errorGuid /*= nullptr*/) { - data->Initialize(SMSG_BATTLEGROUND_PLAYER_LEFT, 8); - *data << uint64(guid); + battlefieldStatus->Reason = result; + if (errorGuid && (result == ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND || result == ERR_BATTLEGROUND_JOIN_TIMED_OUT)) + battlefieldStatus->ClientID = *errorGuid; } -void BattlegroundMgr::BuildPlayerJoinedBattlegroundPacket(WorldPacket* data, Player* player) +void BattlegroundMgr::BuildGroupJoinedBattlegroundPacket(WorldPackets::Battleground::GroupJoinedBattleground* groupJoinedBattleground, BattlegroundTypeId bgTypeId) { - data->Initialize(SMSG_BATTLEGROUND_PLAYER_JOINED, 8); - *data << uint64(player->GetGUID()); + groupJoinedBattleground->Reason = bgTypeId; } Battleground* BattlegroundMgr::GetBattlegroundThroughClientInstance(uint32 instanceId, BattlegroundTypeId bgTypeId) @@ -488,7 +473,7 @@ bool BattlegroundMgr::CreateBattleground(BattlegroundTemplate const* bgTemplate) AddBattleground(bg); } - bg->SetMapId(bgTemplate->BattlemasterEntry->MapID[0]); + bg->SetMapId(!bgTemplate->MapIDs.empty() ? bgTemplate->MapIDs.front() : -1); bg->SetName(bgTemplate->BattlemasterEntry->Name[sWorld->GetDefaultDbcLocale()]); bg->SetArenaorBGType(bgTemplate->IsArena()); bg->SetMinPlayersPerTeam(bgTemplate->MinPlayersPerTeam); @@ -549,6 +534,9 @@ void BattlegroundMgr::LoadBattlegroundTemplates() bgTemplate.Weight = fields[10].GetUInt8(); bgTemplate.ScriptId = sObjectMgr->GetScriptId(fields[11].GetString()); bgTemplate.BattlemasterEntry = bl; + for (int32 mapId : bl->MapID) + if (sMapStore.LookupEntry(mapId)) + bgTemplate.MapIDs.push_back(mapId); if (bgTemplate.MaxPlayersPerTeam == 0 || bgTemplate.MinPlayersPerTeam > bgTemplate.MaxPlayersPerTeam) { @@ -594,8 +582,8 @@ void BattlegroundMgr::LoadBattlegroundTemplates() _battlegroundTemplates[bgTypeId] = bgTemplate; - if (bgTemplate.BattlemasterEntry->MapID[1] == -1) // in this case we have only one mapId - _battlegroundMapTemplates[bgTemplate.BattlemasterEntry->MapID[0]] = &_battlegroundTemplates[bgTypeId]; + if (bgTemplate.MapIDs.size() == 1) + _battlegroundMapTemplates[bgTemplate.MapIDs[0]] = &_battlegroundTemplates[bgTypeId]; ++count; } @@ -622,7 +610,7 @@ void BattlegroundMgr::InitAutomaticArenaPointDistribution() TC_LOG_DEBUG("bg.battleground", "Automatic Arena Point Distribution initialized."); } -void BattlegroundMgr::BuildBattlegroundListPacket(WorldPacket* data, ObjectGuid guid, Player* player, BattlegroundTypeId bgTypeId, uint8 fromWhere) +void BattlegroundMgr::SendBattlegroundList(Player* player, ObjectGuid const& guid, BattlegroundTypeId bgTypeId) { if (!player) return; @@ -634,56 +622,34 @@ void BattlegroundMgr::BuildBattlegroundListPacket(WorldPacket* data, ObjectGuid winner_kills = Trinity::Honor::hk_honor_at_level(player->GetLevel(), float(winner_kills)); loser_kills = Trinity::Honor::hk_honor_at_level(player->GetLevel(), float(loser_kills)); - data->Initialize(SMSG_BATTLEFIELD_LIST); - *data << uint64(guid); // battlemaster guid - *data << uint8(fromWhere); // from where you joined - *data << uint32(bgTypeId); // battleground id - *data << uint8(0); // unk - *data << uint8(0); // unk + WorldPackets::Battleground::BattlefieldList battlefieldList; + battlefieldList.BattlemasterGuid = guid; + battlefieldList.PvpAnywhere = guid.IsEmpty(); + battlefieldList.BattlemasterListID = bgTypeId; + battlefieldList.MinLevel = 0; + battlefieldList.MaxLevel = 0; - // Rewards - *data << uint8(player->GetRandomWinner()); // 3.3.3 hasWin - *data << uint32(winner_kills); // 3.3.3 winHonor - *data << uint32(winner_arena); // 3.3.3 winArena - *data << uint32(loser_kills); // 3.3.3 lossHonor + battlefieldList.HasHolidayWinToday = player->GetRandomWinner(); + battlefieldList.HolidayWinHonorCurrencyBonus = winner_kills; + battlefieldList.HolidayFirstWinArenaCurrencyBonus = winner_arena; + battlefieldList.HolidayLossHonorCurrencyBonus = loser_kills; - uint8 isRandom = bgTypeId == BATTLEGROUND_RB; + battlefieldList.HasRandomWinToday = player->GetRandomWinner(); + battlefieldList.RandomWinHonorCurrencyBonus = winner_kills; + battlefieldList.RandomFirstWinArenaCurrencyBonus = winner_arena; + battlefieldList.RandomLossHonorCurrencyBonus = loser_kills; - *data << uint8(isRandom); // 3.3.3 isRandom - if (isRandom) + if (bgTypeId != BATTLEGROUND_AA) { - // Rewards (random) - *data << uint8(player->GetRandomWinner()); // 3.3.3 hasWin_Random - *data << uint32(winner_kills); // 3.3.3 winHonor_Random - *data << uint32(winner_arena); // 3.3.3 winArena_Random - *data << uint32(loser_kills); // 3.3.3 lossHonor_Random - } - - if (bgTypeId == BATTLEGROUND_AA) // arena - *data << uint32(0); // unk (count?) - else // battleground - { - size_t count_pos = data->wpos(); - *data << uint32(0); // number of bg instances - - BattlegroundDataContainer::iterator it = bgDataStore.find(bgTypeId); - if (it != bgDataStore.end()) + if (BattlegroundData const* battlegrounds = Trinity::Containers::MapGetValuePtr(bgDataStore, bgTypeId)) { // expected bracket entry - if (PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(it->second.m_Battlegrounds.begin()->second->GetMapId(), player->GetLevel())) - { - uint32 count = 0; - BattlegroundBracketId bracketId = bracketEntry->GetBracketId(); - BattlegroundClientIdsContainer& clientIds = it->second.m_ClientBattlegroundIds[bracketId]; - for (BattlegroundClientIdsContainer::const_iterator itr = clientIds.begin(); itr != clientIds.end(); ++itr) - { - *data << uint32(*itr); - ++count; - } - data->put(count_pos, count); - } + if (PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(battlegrounds->m_Battlegrounds.begin()->second->GetMapId(), player->GetLevel())) + battlefieldList.Battlefields = &battlegrounds->m_ClientBattlegroundIds[bracketEntry->GetBracketId()]; } } + + player->SendDirectMessage(battlefieldList.Write()); } void BattlegroundMgr::SendToBattleground(Player* player, uint32 instanceId, BattlegroundTypeId bgTypeId) @@ -705,12 +671,10 @@ void BattlegroundMgr::SendToBattleground(Player* player, uint32 instanceId, Batt void BattlegroundMgr::SendAreaSpiritHealerQueryOpcode(Player* player, Battleground* bg, ObjectGuid guid) { - WorldPacket data(SMSG_AREA_SPIRIT_HEALER_TIME, 12); - uint32 time_ = 30000 - bg->GetLastResurrectTime(); // resurrect every 30 seconds - if (time_ == uint32(-1)) - time_ = 0; - data << guid << time_; - player->SendDirectMessage(&data); + WorldPackets::Battleground::AreaSpiritHealerTime areaSpiritHealerTime; + areaSpiritHealerTime.HealerGuid = guid; + areaSpiritHealerTime.TimeLeft = std::max(30000 - int32(bg->GetLastResurrectTime()), 0); + player->SendDirectMessage(areaSpiritHealerTime.Write()); } bool BattlegroundMgr::IsArenaType(BattlegroundTypeId bgTypeId) @@ -723,86 +687,14 @@ bool BattlegroundMgr::IsArenaType(BattlegroundTypeId bgTypeId) || bgTypeId == BATTLEGROUND_RL; } -BattlegroundQueueTypeId BattlegroundMgr::BGQueueTypeId(BattlegroundTypeId bgTypeId, uint8 arenaType) -{ - switch (bgTypeId) - { - case BATTLEGROUND_AB: - return BATTLEGROUND_QUEUE_AB; - case BATTLEGROUND_AV: - return BATTLEGROUND_QUEUE_AV; - case BATTLEGROUND_EY: - return BATTLEGROUND_QUEUE_EY; - case BATTLEGROUND_IC: - return BATTLEGROUND_QUEUE_IC; - case BATTLEGROUND_RB: - return BATTLEGROUND_QUEUE_RB; - case BATTLEGROUND_SA: - return BATTLEGROUND_QUEUE_SA; - case BATTLEGROUND_WS: - return BATTLEGROUND_QUEUE_WS; - case BATTLEGROUND_AA: - case BATTLEGROUND_BE: - case BATTLEGROUND_DS: - case BATTLEGROUND_NA: - case BATTLEGROUND_RL: - case BATTLEGROUND_RV: - switch (arenaType) - { - case ARENA_TYPE_2v2: - return BATTLEGROUND_QUEUE_2v2; - case ARENA_TYPE_3v3: - return BATTLEGROUND_QUEUE_3v3; - case ARENA_TYPE_5v5: - return BATTLEGROUND_QUEUE_5v5; - default: - return BATTLEGROUND_QUEUE_NONE; - } - default: - return BATTLEGROUND_QUEUE_NONE; - } -} - -BattlegroundTypeId BattlegroundMgr::BGTemplateId(BattlegroundQueueTypeId bgQueueTypeId) +bool BattlegroundMgr::IsRandomBattleground(uint32 battlemasterListId) { - switch (bgQueueTypeId) - { - case BATTLEGROUND_QUEUE_WS: - return BATTLEGROUND_WS; - case BATTLEGROUND_QUEUE_AB: - return BATTLEGROUND_AB; - case BATTLEGROUND_QUEUE_AV: - return BATTLEGROUND_AV; - case BATTLEGROUND_QUEUE_EY: - return BATTLEGROUND_EY; - case BATTLEGROUND_QUEUE_SA: - return BATTLEGROUND_SA; - case BATTLEGROUND_QUEUE_IC: - return BATTLEGROUND_IC; - case BATTLEGROUND_QUEUE_RB: - return BATTLEGROUND_RB; - case BATTLEGROUND_QUEUE_2v2: - case BATTLEGROUND_QUEUE_3v3: - case BATTLEGROUND_QUEUE_5v5: - return BATTLEGROUND_AA; - default: - return BattlegroundTypeId(0); // used for unknown template (it exists and does nothing) - } + return battlemasterListId == BATTLEGROUND_RB; } -uint8 BattlegroundMgr::BGArenaType(BattlegroundQueueTypeId bgQueueTypeId) +BattlegroundQueueTypeId BattlegroundMgr::BGQueueTypeId(BattlegroundTypeId bgTypeId, uint8 bracketId, uint8 arenaType) { - switch (bgQueueTypeId) - { - case BATTLEGROUND_QUEUE_2v2: - return ARENA_TYPE_2v2; - case BATTLEGROUND_QUEUE_3v3: - return ARENA_TYPE_3v3; - case BATTLEGROUND_QUEUE_5v5: - return ARENA_TYPE_5v5; - default: - return 0; - } + return { .BattlemasterListId = uint16(bgTypeId), .BracketId = bracketId, .TeamSize = arenaType }; } void BattlegroundMgr::ToggleTesting() @@ -830,11 +722,40 @@ void BattlegroundMgr::SetHolidayActive(uint32 battlegroundId) bg->SetHoliday(true); } -void BattlegroundMgr::ScheduleQueueUpdate(uint32 arenaMatchmakerRating, uint8 arenaType, BattlegroundQueueTypeId bgQueueTypeId, BattlegroundTypeId bgTypeId, BattlegroundBracketId bracket_id) +bool BattlegroundMgr::IsValidQueueId(BattlegroundQueueTypeId bgQueueTypeId) +{ + BattlegroundTemplate const* battlemasterList = GetBattlegroundTemplateByTypeId(BattlegroundTypeId(bgQueueTypeId.BattlemasterListId)); + if (!battlemasterList) + return false; + + switch (battlemasterList->BattlemasterEntry->InstanceType) + { + case MAP_BATTLEGROUND: + if (bgQueueTypeId.TeamSize) + return false; + break; + case MAP_ARENA: + if (!bgQueueTypeId.TeamSize) + return false; + break; + default: + break; + } + + if (battlemasterList->MapIDs.empty()) + return false; + + if (!GetBattlegroundBracketById(battlemasterList->MapIDs[0], BattlegroundBracketId(bgQueueTypeId.BracketId))) + return false; + + return true; +} + +void BattlegroundMgr::ScheduleQueueUpdate(uint32 arenaMatchmakerRating, BattlegroundQueueTypeId bgQueueTypeId) { //This method must be atomic, @todo add mutex //we will use only 1 number created of bgTypeId and bracket_id - uint64 const scheduleId = ((uint64)arenaMatchmakerRating << 32) | ((uint64)arenaType << 24) | ((uint64)bgQueueTypeId << 16) | ((uint64)bgTypeId << 8) | (uint64)bracket_id; + ScheduledQueueUpdate scheduleId{ arenaMatchmakerRating, bgQueueTypeId }; if (std::find(m_QueueUpdateScheduler.begin(), m_QueueUpdateScheduler.end(), scheduleId) == m_QueueUpdateScheduler.end()) m_QueueUpdateScheduler.push_back(scheduleId); } @@ -958,23 +879,14 @@ BattlegroundTypeId BattlegroundMgr::GetRandomBG(BattlegroundTypeId bgTypeId) { if (BattlegroundTemplate const* bgTemplate = GetBattlegroundTemplateByTypeId(bgTypeId)) { - std::vector ids; - ids.reserve(16); - std::vector weights; - weights.reserve(16); - for (int32 mapId : bgTemplate->BattlemasterEntry->MapID) - { - if (mapId == -1) - break; - + std::vector ids; + ids.reserve(bgTemplate->MapIDs.size()); + for (int32 mapId : bgTemplate->MapIDs) if (BattlegroundTemplate const* bg = GetBattlegroundTemplateByMapId(mapId)) - { - ids.push_back(bg->Id); - weights.push_back(bg->Weight); - } - } + ids.push_back(bg); - return *Trinity::Containers::SelectRandomWeightedContainerElement(ids, weights); + if (!ids.empty()) + return (*Trinity::Containers::SelectRandomWeightedContainerElement(ids, [](BattlegroundTemplate const* bg) { return bg->Weight; }))->Id; } return BATTLEGROUND_TYPE_NONE; diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index 939d3ef87b1..d32366f90c1 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -58,10 +58,25 @@ struct BattlegroundTemplate uint8 Weight; uint32 ScriptId; BattlemasterListEntry const* BattlemasterEntry; + std::vector MapIDs; bool IsArena() const; }; +namespace WorldPackets +{ + namespace Battleground + { + struct BattlefieldStatusHeader; + class BattlefieldStatusNone; + class BattlefieldStatusNeedConfirmation; + class BattlefieldStatusActive; + class BattlefieldStatusQueued; + class GroupJoinedBattleground; + using BattlefieldStatusFailed = GroupJoinedBattleground; + } +} + class TC_GAME_API BattlegroundMgr { private: @@ -79,11 +94,15 @@ class TC_GAME_API BattlegroundMgr void Update(uint32 diff); /* Packet Building */ - void BuildPlayerJoinedBattlegroundPacket(WorldPacket* data, Player* player); - void BuildPlayerLeftBattlegroundPacket(WorldPacket* data, ObjectGuid guid); - void BuildBattlegroundListPacket(WorldPacket* data, ObjectGuid guid, Player* player, BattlegroundTypeId bgTypeId, uint8 fromWhere); - void BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result); - void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint32 arenaFaction); + static void BuildBattlegroundStatusHeader(WorldPackets::Battleground::BattlefieldStatusHeader* header, Battleground const* bg, uint32 queueSlot, BattlegroundQueueTypeId queueId); + static void BuildBattlegroundStatusNone(WorldPackets::Battleground::BattlefieldStatusNone* battlefieldStatus, uint32 queueSlot); + static void BuildBattlegroundStatusNeedConfirmation(WorldPackets::Battleground::BattlefieldStatusNeedConfirmation* battlefieldStatus, Battleground const* bg, uint32 queueSlot, uint32 timeout, BattlegroundQueueTypeId queueId); + static void BuildBattlegroundStatusActive(WorldPackets::Battleground::BattlefieldStatusActive* battlefieldStatus, Battleground const* bg, Player const* player, uint32 queueSlot, BattlegroundQueueTypeId queueId); + static void BuildBattlegroundStatusQueued(WorldPackets::Battleground::BattlefieldStatusQueued* battlefieldStatus, Battleground const* bg, uint32 queueSlot, uint32 joinTime, BattlegroundQueueTypeId queueId, uint32 avgWaitTime); + static void BuildBattlegroundStatusFailed(WorldPackets::Battleground::BattlefieldStatusFailed* battlefieldStatus, GroupJoinBattlegroundResult result, ObjectGuid const* errorGuid = nullptr); + static void BuildGroupJoinedBattlegroundPacket(WorldPackets::Battleground::GroupJoinedBattleground* groupJoinedBattleground, BattlegroundTypeId bgTypeId); + + void SendBattlegroundList(Player* player, ObjectGuid const& guid, BattlegroundTypeId bgTypeId); void SendAreaSpiritHealerQueryOpcode(Player* player, Battleground* bg, ObjectGuid guid); /* Battlegrounds */ @@ -103,8 +122,9 @@ class TC_GAME_API BattlegroundMgr void SendToBattleground(Player* player, uint32 InstanceID, BattlegroundTypeId bgTypeId); /* Battleground queues */ - BattlegroundQueue& GetBattlegroundQueue(BattlegroundQueueTypeId bgQueueTypeId) { return m_BattlegroundQueues[bgQueueTypeId]; } - void ScheduleQueueUpdate(uint32 arenaMatchmakerRating, uint8 arenaType, BattlegroundQueueTypeId bgQueueTypeId, BattlegroundTypeId bgTypeId, BattlegroundBracketId bracket_id); + bool IsValidQueueId(BattlegroundQueueTypeId bgQueueTypeId); + BattlegroundQueue& GetBattlegroundQueue(BattlegroundQueueTypeId bgQueueTypeId) { return m_BattlegroundQueues.emplace(bgQueueTypeId, bgQueueTypeId).first->second; } + void ScheduleQueueUpdate(uint32 arenaMatchmakerRating, BattlegroundQueueTypeId bgQueueTypeId); uint32 GetPrematureFinishTime() const; void ToggleArenaTesting(); @@ -116,9 +136,8 @@ class TC_GAME_API BattlegroundMgr bool isArenaTesting() const { return m_ArenaTesting; } bool isTesting() const { return m_Testing; } - static BattlegroundQueueTypeId BGQueueTypeId(BattlegroundTypeId bgTypeId, uint8 arenaType); - static BattlegroundTypeId BGTemplateId(BattlegroundQueueTypeId bgQueueTypeId); - static uint8 BGArenaType(BattlegroundQueueTypeId bgQueueTypeId); + static bool IsRandomBattleground(uint32 battlemasterListId); + static BattlegroundQueueTypeId BGQueueTypeId(BattlegroundTypeId bgTypeId, uint8 bracketId, uint8 arenaType); static HolidayIds BGTypeToWeekendHolidayId(BattlegroundTypeId bgTypeId); static BattlegroundTypeId WeekendHolidayIdToBGType(HolidayIds holiday); @@ -146,9 +165,17 @@ class TC_GAME_API BattlegroundMgr typedef std::map BattlegroundDataContainer; BattlegroundDataContainer bgDataStore; - BattlegroundQueue m_BattlegroundQueues[MAX_BATTLEGROUND_QUEUE_TYPES]; + std::map m_BattlegroundQueues; + + struct ScheduledQueueUpdate + { + uint32 ArenaMatchmakerRating; + BattlegroundQueueTypeId QueueId; + + bool operator==(ScheduledQueueUpdate const& right) const = default; + }; - std::vector m_QueueUpdateScheduler; + std::vector m_QueueUpdateScheduler; uint32 m_NextRatedArenaUpdate; time_t m_NextAutoDistributionTime; uint32 m_AutoDistributionTimeChecker; diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 6ac695a46bb..8ba8a152012 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -19,6 +19,7 @@ #include "ArenaTeam.h" #include "ArenaTeamMgr.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "Chat.h" #include "DatabaseEnv.h" #include "DBCStores.h" @@ -34,17 +35,14 @@ /*** BATTLEGROUND QUEUE SYSTEM ***/ /*********************************************************/ -BattlegroundQueue::BattlegroundQueue() +BattlegroundQueue::BattlegroundQueue(BattlegroundQueueTypeId queueId) : m_queueId(queueId) { for (uint32 i = 0; i < PVP_TEAMS_COUNT; ++i) { - for (uint32 j = 0; j < MAX_BATTLEGROUND_BRACKETS; ++j) - { - m_SumOfWaitTimes[i][j] = 0; - m_WaitTimeLastPlayer[i][j] = 0; - for (uint32 k = 0; k < COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME; ++k) - m_WaitTimes[i][j][k] = 0; - } + m_SumOfWaitTimes[i] = 0; + m_WaitTimeLastPlayer[i] = 0; + for (uint32 k = 0; k < COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME; ++k) + m_WaitTimes[i][k] = 0; } } @@ -52,14 +50,9 @@ BattlegroundQueue::~BattlegroundQueue() { m_events.KillAllEvents(false); - for (int i = 0; i < MAX_BATTLEGROUND_BRACKETS; ++i) - { - for (uint32 j = 0; j < BG_QUEUE_GROUP_TYPES_COUNT; ++j) - { - for (GroupsQueueType::iterator itr = m_QueuedGroups[i][j].begin(); itr!= m_QueuedGroups[i][j].end(); ++itr) - delete (*itr); - } - } + for (uint32 j = 0; j < BG_QUEUE_GROUP_TYPES_COUNT; ++j) + for (GroupsQueueType::iterator itr = m_QueuedGroups[j].begin(); itr!= m_QueuedGroups[j].end(); ++itr) + delete (*itr); } /*********************************************************/ @@ -130,20 +123,16 @@ bool BattlegroundQueue::SelectionPool::AddGroup(GroupQueueInfo* ginfo, uint32 de /*********************************************************/ // add group or player (grp == NULL) to bg queue with the given leader and bg specifications -GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, BattlegroundTypeId BgTypeId, PvPDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 arenateamid, uint32 PreviousOpponentsArenaTeamId) +GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group const* group, PvPDifficultyEntry const* bracketEntry, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 arenateamid, uint32 PreviousOpponentsArenaTeamId) { - BattlegroundBracketId bracketId = bracketEntry->GetBracketId(); - // create new ginfo GroupQueueInfo* ginfo = new GroupQueueInfo; - ginfo->BgTypeId = BgTypeId; - ginfo->ArenaType = ArenaType; ginfo->ArenaTeamId = arenateamid; ginfo->IsRated = isRated; ginfo->IsInvitedToBGInstanceGUID = 0; ginfo->JoinTime = GameTime::GetGameTimeMS(); ginfo->RemoveInviteTime = 0; - ginfo->Team = leader->GetTeam(); + ginfo->Team = Team(leader->GetTeam()); ginfo->ArenaTeamRating = ArenaRating; ginfo->ArenaMatchmakerRating = MatchmakerRating; ginfo->PreviousOpponentsTeamId = PreviousOpponentsArenaTeamId; @@ -158,7 +147,7 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, Battlegr index += PVP_TEAMS_COUNT; if (ginfo->Team == HORDE) index++; - TC_LOG_DEBUG("bg.battleground", "Adding Group to BattlegroundQueue bgTypeId : {}, bracket_id : {}, index : {}", BgTypeId, bracketId, index); + TC_LOG_DEBUG("bg.battleground", "Adding Group to BattlegroundQueue bgTypeId : {}, bracket_id : {}, index : {}", m_queueId.BattlemasterListId, m_queueId.BracketId, index); uint32 lastOnlineTime = GameTime::GetGameTimeMS(); @@ -167,13 +156,13 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, Battlegr { ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(arenateamid); if (team) - sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, team->GetName().c_str(), ginfo->ArenaType, ginfo->ArenaType, ginfo->ArenaTeamRating); + sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, team->GetName().c_str(), m_queueId.TeamSize, m_queueId.TeamSize, ginfo->ArenaTeamRating); } //add players from group to ginfo - if (grp) + if (group) { - for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->GetSource(); if (!member) @@ -195,12 +184,12 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, Battlegr //add GroupInfo to m_QueuedGroups { - m_QueuedGroups[bracketId][index].push_back(ginfo); + m_QueuedGroups[index].push_back(ginfo); //announce to world, this code needs mutex if (!isRated && !isPremade && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE)) { - if (Battleground* bg = sBattlegroundMgr->GetBattlegroundTemplate(ginfo->BgTypeId)) + if (Battleground* bg = sBattlegroundMgr->GetBattlegroundTemplate(BattlegroundTypeId(m_queueId.BattlemasterListId))) { uint32 MinPlayers = bg->GetMinPlayersPerTeam(); uint32 qHorde = 0; @@ -208,10 +197,10 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, Battlegr uint32 q_min_level = bracketEntry->MinLevel; uint32 q_max_level = bracketEntry->MaxLevel; GroupsQueueType::const_iterator itr; - for (itr = m_QueuedGroups[bracketId][BG_QUEUE_NORMAL_ALLIANCE].begin(); itr != m_QueuedGroups[bracketId][BG_QUEUE_NORMAL_ALLIANCE].end(); ++itr) + for (itr = m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE].begin(); itr != m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE].end(); ++itr) if (!(*itr)->IsInvitedToBGInstanceGUID) qAlliance += (*itr)->Players.size(); - for (itr = m_QueuedGroups[bracketId][BG_QUEUE_NORMAL_HORDE].begin(); itr != m_QueuedGroups[bracketId][BG_QUEUE_NORMAL_HORDE].end(); ++itr) + for (itr = m_QueuedGroups[BG_QUEUE_NORMAL_HORDE].begin(); itr != m_QueuedGroups[BG_QUEUE_NORMAL_HORDE].end(); ++itr) if (!(*itr)->IsInvitedToBGInstanceGUID) qHorde += (*itr)->Players.size(); @@ -235,11 +224,11 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, Battlegr return ginfo; } -void BattlegroundQueue::PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo, BattlegroundBracketId bracket_id) +void BattlegroundQueue::PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo) { uint32 timeInQueue = getMSTimeDiff(ginfo->JoinTime, GameTime::GetGameTimeMS()); uint8 team_index = TEAM_ALLIANCE; //default set to TEAM_ALLIANCE - or non rated arenas! - if (!ginfo->ArenaType) + if (!m_queueId.TeamSize) { if (ginfo->Team == HORDE) team_index = TEAM_HORDE; @@ -251,22 +240,22 @@ void BattlegroundQueue::PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* g } //store pointer to arrayindex of player that was added first - uint32* lastPlayerAddedPointer = &(m_WaitTimeLastPlayer[team_index][bracket_id]); + uint32* lastPlayerAddedPointer = &(m_WaitTimeLastPlayer[team_index]); //remove his time from sum - m_SumOfWaitTimes[team_index][bracket_id] -= m_WaitTimes[team_index][bracket_id][(*lastPlayerAddedPointer)]; + m_SumOfWaitTimes[team_index] -= m_WaitTimes[team_index][(*lastPlayerAddedPointer)]; //set average time to new - m_WaitTimes[team_index][bracket_id][(*lastPlayerAddedPointer)] = timeInQueue; + m_WaitTimes[team_index][(*lastPlayerAddedPointer)] = timeInQueue; //add new time to sum - m_SumOfWaitTimes[team_index][bracket_id] += timeInQueue; + m_SumOfWaitTimes[team_index] += timeInQueue; //set index of last player added to next one (*lastPlayerAddedPointer)++; (*lastPlayerAddedPointer) %= COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME; } -uint32 BattlegroundQueue::GetAverageQueueWaitTime(GroupQueueInfo* ginfo, BattlegroundBracketId bracket_id) const +uint32 BattlegroundQueue::GetAverageQueueWaitTime(GroupQueueInfo* ginfo) const { uint8 team_index = TEAM_ALLIANCE; //default set to TEAM_ALLIANCE - or non rated arenas! - if (!ginfo->ArenaType) + if (!m_queueId.TeamSize) { if (ginfo->Team == HORDE) team_index = TEAM_HORDE; @@ -277,8 +266,8 @@ uint32 BattlegroundQueue::GetAverageQueueWaitTime(GroupQueueInfo* ginfo, Battleg team_index = TEAM_HORDE; //for rated arenas use TEAM_HORDE } //check if there is enought values(we always add values > 0) - if (m_WaitTimes[team_index][bracket_id][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME - 1]) - return (m_SumOfWaitTimes[team_index][bracket_id] / COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME); + if (m_WaitTimes[team_index][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME - 1]) + return (m_SumOfWaitTimes[team_index] / COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME); else //if there aren't enough values return 0 - not available return 0; @@ -309,23 +298,20 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount) uint32 index = (group->Team == HORDE) ? BG_QUEUE_PREMADE_HORDE : BG_QUEUE_PREMADE_ALLIANCE; - for (int32 bracket_id_tmp = MAX_BATTLEGROUND_BRACKETS - 1; bracket_id_tmp >= 0 && bracket_id == -1; --bracket_id_tmp) + //we must check premade and normal team's queue - because when players from premade are joining bg, + //they leave groupinfo so we can't use its players size to find out index + for (uint32 j = index; j < BG_QUEUE_GROUP_TYPES_COUNT; j += PVP_TEAMS_COUNT) { - //we must check premade and normal team's queue - because when players from premade are joining bg, - //they leave groupinfo so we can't use its players size to find out index - for (uint32 j = index; j < BG_QUEUE_GROUP_TYPES_COUNT; j += PVP_TEAMS_COUNT) + GroupsQueueType::iterator k = m_QueuedGroups[j].begin(); + for (; k != m_QueuedGroups[j].end(); ++k) { - GroupsQueueType::iterator k = m_QueuedGroups[bracket_id_tmp][j].begin(); - for (; k != m_QueuedGroups[bracket_id_tmp][j].end(); ++k) + if ((*k) == group) { - if ((*k) == group) - { - bracket_id = bracket_id_tmp; - group_itr = k; - //we must store index to be able to erase iterator - index = j; - break; - } + bracket_id = m_queueId.BracketId; + group_itr = k; + //we must store index to be able to erase iterator + index = j; + break; } } } @@ -350,16 +336,16 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount) // if invited to bg, and should decrease invited count, then do it if (decreaseInvitedCount && group->IsInvitedToBGInstanceGUID) - if (Battleground* bg = sBattlegroundMgr->GetBattleground(group->IsInvitedToBGInstanceGUID, group->BgTypeId)) + if (Battleground* bg = sBattlegroundMgr->GetBattleground(group->IsInvitedToBGInstanceGUID, BattlegroundTypeId(m_queueId.BattlemasterListId))) bg->DecreaseInvitedCount(group->Team); // remove player queue info m_QueuedPlayers.erase(itr); // announce to world if arena team left queue for rated match, show only once - if (group->ArenaType && group->IsRated && group->Players.empty() && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE)) + if (m_queueId.TeamSize && group->IsRated && group->Players.empty() && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE)) if (ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(group->ArenaTeamId)) - sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, team->GetName().c_str(), group->ArenaType, group->ArenaType, group->ArenaTeamRating); + sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, team->GetName().c_str(), m_queueId.TeamSize, m_queueId.TeamSize, group->ArenaTeamRating); // if player leaves queue and he is invited to rated arena match, then he have to lose if (group->IsInvitedToBGInstanceGUID && group->IsRated && decreaseInvitedCount) @@ -378,7 +364,7 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount) // remove group queue info if needed if (group->Players.empty()) { - m_QueuedGroups[bracket_id][index].erase(group_itr); + m_QueuedGroups[index].erase(group_itr); delete group; return; } @@ -392,14 +378,14 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount) // first send removal information if (Player* plr2 = ObjectAccessor::FindConnectedPlayer(group->Players.begin()->first)) { - Battleground* bg = sBattlegroundMgr->GetBattlegroundTemplate(group->BgTypeId); - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(group->BgTypeId, group->ArenaType); - uint32 queueSlot = plr2->GetBattlegroundQueueIndex(bgQueueTypeId); - plr2->RemoveBattlegroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to + uint32 queueSlot = plr2->GetBattlegroundQueueIndex(m_queueId); + + plr2->RemoveBattlegroundQueueId(m_queueId); // must be called this way, because if you move this call to // queue->removeplayer, it causes bugs - WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); - plr2->SendDirectMessage(&data); + + WorldPackets::Battleground::BattlefieldStatusNone battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNone(&battlefieldStatus, queueSlot); + plr2->SendDirectMessage(battlefieldStatus.Write()); } // then actually delete, this may delete the group as well! RemovePlayer(group->Players.begin()->first, decreaseInvitedCount); @@ -429,7 +415,7 @@ uint32 BattlegroundQueue::GetPlayersInQueue(TeamId id) return m_SelectionPools[id].GetPlayerCount(); } -bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, uint32 side) +bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, Team side) { // set side if needed if (side) @@ -440,9 +426,8 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, // not yet invited // set invitation ginfo->IsInvitedToBGInstanceGUID = bg->GetInstanceID(); - BattlegroundTypeId bgTypeId = bg->GetTypeID(); - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, bg->GetArenaType()); - BattlegroundBracketId bracket_id = bg->GetBracketId(); + BattlegroundTypeId bgTypeId = BattlegroundTypeId(m_queueId.BattlemasterListId); + BattlegroundQueueTypeId bgQueueTypeId = m_queueId; // set ArenaTeamId for rated matches if (bg->isArena() && bg->isRated()) @@ -460,7 +445,7 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, continue; // invite the player - PlayerInvitedToBGUpdateAverageWaitTime(ginfo, bracket_id); + PlayerInvitedToBGUpdateAverageWaitTime(ginfo); //sBattlegroundMgr->InvitePlayer(player, bg, ginfo->Team); // set invited player counters @@ -469,10 +454,10 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, player->SetInviteForBattlegroundQueueType(bgQueueTypeId, ginfo->IsInvitedToBGInstanceGUID); // create remind invite events - BGQueueInviteEvent* inviteEvent = new BGQueueInviteEvent(player->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgTypeId, ginfo->ArenaType, ginfo->RemoveInviteTime); + BGQueueInviteEvent* inviteEvent = new BGQueueInviteEvent(player->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgTypeId, ginfo->RemoveInviteTime, bgQueueTypeId); m_events.AddEvent(inviteEvent, m_events.CalculateTime(Milliseconds(INVITATION_REMIND_TIME))); // create automatic remove events - BGQueueRemoveEvent* removeEvent = new BGQueueRemoveEvent(player->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgTypeId, bgQueueTypeId, ginfo->RemoveInviteTime); + BGQueueRemoveEvent* removeEvent = new BGQueueRemoveEvent(player->GetGUID(), ginfo->IsInvitedToBGInstanceGUID, bgQueueTypeId, ginfo->RemoveInviteTime); m_events.AddEvent(removeEvent, m_events.CalculateTime(Milliseconds(INVITE_ACCEPT_WAIT_TIME))); WorldPacket data; @@ -482,9 +467,9 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, TC_LOG_DEBUG("bg.battleground", "Battleground: invited player {} {} to BG instance {} queueindex {} bgtype {}", player->GetName(), player->GetGUID().ToString(), bg->GetInstanceID(), queueSlot, bg->GetTypeID()); - // send status packet - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME, 0, ginfo->ArenaType, 0); - player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusNeedConfirmation battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNeedConfirmation(&battlefieldStatus, bg, queueSlot, INVITE_ACCEPT_WAIT_TIME, bgQueueTypeId); + player->SendDirectMessage(battlefieldStatus.Write()); } return true; } @@ -497,12 +482,12 @@ This function is inviting players to already running battlegrounds Invitation type is based on config file large groups are disadvantageous, because they will be kicked first if invitation type = 1 */ -void BattlegroundQueue::FillPlayersToBG(Battleground* bg, BattlegroundBracketId bracket_id) +void BattlegroundQueue::FillPlayersToBG(Battleground* bg) { int32 hordeFree = bg->GetFreeSlotsForTeam(HORDE); int32 aliFree = bg->GetFreeSlotsForTeam(ALLIANCE); - uint32 aliCount = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE].size(); - uint32 hordeCount = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_HORDE].size(); + uint32 aliCount = m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE].size(); + uint32 hordeCount = m_QueuedGroups[BG_QUEUE_NORMAL_HORDE].size(); // try to get even teams if (sWorld->getIntConfig(CONFIG_BATTLEGROUND_INVITATION_TYPE) == BG_QUEUE_INVITATION_TYPE_EVEN) @@ -530,7 +515,7 @@ void BattlegroundQueue::FillPlayersToBG(Battleground* bg, BattlegroundBracketId } //iterator for iterating through bg queue - GroupsQueueType::const_iterator Ali_itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE].begin(); + GroupsQueueType::const_iterator Ali_itr = m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE].begin(); //count of groups in queue - used to stop cycles //index to queue which group is current @@ -538,7 +523,7 @@ void BattlegroundQueue::FillPlayersToBG(Battleground* bg, BattlegroundBracketId for (; aliIndex < aliCount && m_SelectionPools[TEAM_ALLIANCE].AddGroup((*Ali_itr), aliFree); aliIndex++) ++Ali_itr; //the same thing for horde - GroupsQueueType::const_iterator Horde_itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_HORDE].begin(); + GroupsQueueType::const_iterator Horde_itr = m_QueuedGroups[BG_QUEUE_NORMAL_HORDE].begin(); uint32 hordeIndex = 0; for (; hordeIndex < hordeCount && m_SelectionPools[TEAM_HORDE].AddGroup((*Horde_itr), hordeFree); hordeIndex++) @@ -602,22 +587,22 @@ void BattlegroundQueue::FillPlayersToBG(Battleground* bg, BattlegroundBracketId // this method checks if premade versus premade battleground is possible // then after 30 mins (default) in queue it moves premade group to normal queue // it tries to invite as much players as it can - to MaxPlayersPerTeam, because premade groups have more than MinPlayersPerTeam players -bool BattlegroundQueue::CheckPremadeMatch(BattlegroundBracketId bracket_id, uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam) +bool BattlegroundQueue::CheckPremadeMatch(uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam) { //check match - if (!m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].empty() && !m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].empty()) + if (!m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].empty() && !m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].empty()) { //start premade match //if groups aren't invited GroupsQueueType::const_iterator ali_group, horde_group; - for (ali_group = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].begin(); ali_group != m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].end(); ++ali_group) + for (ali_group = m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].begin(); ali_group != m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].end(); ++ali_group) if (!(*ali_group)->IsInvitedToBGInstanceGUID) break; - for (horde_group = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].begin(); horde_group != m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].end(); ++horde_group) + for (horde_group = m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].begin(); horde_group != m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].end(); ++horde_group) if (!(*horde_group)->IsInvitedToBGInstanceGUID) break; - if (ali_group != m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].end() && horde_group != m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].end()) + if (ali_group != m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].end() && horde_group != m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].end()) { m_SelectionPools[TEAM_ALLIANCE].AddGroup((*ali_group), MaxPlayersPerTeam); m_SelectionPools[TEAM_HORDE].AddGroup((*horde_group), MaxPlayersPerTeam); @@ -626,7 +611,7 @@ bool BattlegroundQueue::CheckPremadeMatch(BattlegroundBracketId bracket_id, uint GroupsQueueType::const_iterator itr; for (uint32 i = 0; i < PVP_TEAMS_COUNT; i++) { - for (itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].begin(); itr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++itr) + for (itr = m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE + i].begin(); itr != m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++itr) { //if itr can join BG and player count is less that maxPlayers, then add group to selectionpool if (!(*itr)->IsInvitedToBGInstanceGUID && !m_SelectionPools[i].AddGroup((*itr), maxPlayers)) @@ -644,14 +629,14 @@ bool BattlegroundQueue::CheckPremadeMatch(BattlegroundBracketId bracket_id, uint uint32 time_before = GameTime::GetGameTimeMS() - sWorld->getIntConfig(CONFIG_BATTLEGROUND_PREMADE_GROUP_WAIT_FOR_MATCH); for (uint32 i = 0; i < PVP_TEAMS_COUNT; i++) { - if (!m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].empty()) + if (!m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE + i].empty()) { - GroupsQueueType::iterator itr = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].begin(); + GroupsQueueType::iterator itr = m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE + i].begin(); if (!(*itr)->IsInvitedToBGInstanceGUID && ((*itr)->JoinTime < time_before || (*itr)->Players.size() < MinPlayersPerTeam)) { //we must insert group to normal queue and erase pointer from premade queue - m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].push_front((*itr)); - m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].erase(itr); + m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE + i].push_front((*itr)); + m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE + i].erase(itr); } } } @@ -660,13 +645,13 @@ bool BattlegroundQueue::CheckPremadeMatch(BattlegroundBracketId bracket_id, uint } // this method tries to create battleground or arena with MinPlayersPerTeam against MinPlayersPerTeam -bool BattlegroundQueue::CheckNormalMatch(Battleground* bg_template, BattlegroundBracketId bracket_id, uint32 minPlayers, uint32 maxPlayers) +bool BattlegroundQueue::CheckNormalMatch(Battleground* bg_template, uint32 minPlayers, uint32 maxPlayers) { GroupsQueueType::const_iterator itr_team[PVP_TEAMS_COUNT]; for (uint32 i = 0; i < PVP_TEAMS_COUNT; i++) { - itr_team[i] = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].begin(); - for (; itr_team[i] != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++(itr_team[i])) + itr_team[i] = m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE + i].begin(); + for (; itr_team[i] != m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++(itr_team[i])) { if (!(*(itr_team[i]))->IsInvitedToBGInstanceGUID) { @@ -685,7 +670,7 @@ bool BattlegroundQueue::CheckNormalMatch(Battleground* bg_template, Battleground { //we will try to invite more groups to team with less players indexed by j ++(itr_team[j]); //this will not cause a crash, because for cycle above reached break; - for (; itr_team[j] != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + j].end(); ++(itr_team[j])) + for (; itr_team[j] != m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE + j].end(); ++(itr_team[j])) { if (!(*(itr_team[j]))->IsInvitedToBGInstanceGUID) if (!m_SelectionPools[j].AddGroup(*(itr_team[j]), m_SelectionPools[(j + 1) % PVP_TEAMS_COUNT].GetPlayerCount())) @@ -703,13 +688,13 @@ bool BattlegroundQueue::CheckNormalMatch(Battleground* bg_template, Battleground } // this method will check if we can invite players to same faction skirmish match -bool BattlegroundQueue::CheckSkirmishForSameFaction(BattlegroundBracketId bracket_id, uint32 minPlayersPerTeam) +bool BattlegroundQueue::CheckSkirmishForSameFaction(uint32 minPlayersPerTeam) { if (m_SelectionPools[TEAM_ALLIANCE].GetPlayerCount() < minPlayersPerTeam && m_SelectionPools[TEAM_HORDE].GetPlayerCount() < minPlayersPerTeam) return false; - uint32 teamIndex = TEAM_ALLIANCE; - uint32 otherTeam = TEAM_HORDE; - uint32 otherTeamId = HORDE; + TeamId teamIndex = TEAM_ALLIANCE; + TeamId otherTeam = TEAM_HORDE; + Team otherTeamId = HORDE; if (m_SelectionPools[TEAM_HORDE].GetPlayerCount() == minPlayersPerTeam) { teamIndex = TEAM_HORDE; @@ -721,16 +706,16 @@ bool BattlegroundQueue::CheckSkirmishForSameFaction(BattlegroundBracketId bracke //store last ginfo pointer GroupQueueInfo* ginfo = m_SelectionPools[teamIndex].SelectedGroups.back(); //set itr_team to group that was added to selection pool latest - GroupsQueueType::iterator itr_team = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + teamIndex].begin(); - for (; itr_team != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + teamIndex].end(); ++itr_team) + GroupsQueueType::iterator itr_team = m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].begin(); + for (; itr_team != m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].end(); ++itr_team) if (ginfo == *itr_team) break; - if (itr_team == m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + teamIndex].end()) + if (itr_team == m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].end()) return false; GroupsQueueType::iterator itr_team2 = itr_team; ++itr_team2; //invite players to other selection pool - for (; itr_team2 != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + teamIndex].end(); ++itr_team2) + for (; itr_team2 != m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].end(); ++itr_team2) { //if selection pool is full then break; if (!(*itr_team2)->IsInvitedToBGInstanceGUID && !m_SelectionPools[otherTeam].AddGroup(*itr_team2, minPlayersPerTeam)) @@ -745,15 +730,15 @@ bool BattlegroundQueue::CheckSkirmishForSameFaction(BattlegroundBracketId bracke //set correct team (*itr)->Team = otherTeamId; //add team to other queue - m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + otherTeam].push_front(*itr); + m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].push_front(*itr); //remove team from old queue GroupsQueueType::iterator itr2 = itr_team; ++itr2; - for (; itr2 != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + teamIndex].end(); ++itr2) + for (; itr2 != m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].end(); ++itr2) { if (*itr2 == *itr) { - m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + teamIndex].erase(itr2); + m_QueuedGroups[uint8(BG_QUEUE_NORMAL_ALLIANCE) + uint8(teamIndex)].erase(itr2); break; } } @@ -771,13 +756,17 @@ this method is called when group is inserted, or player / group is removed from it must be called after fully adding the members of a group to ensure group joining should be called from Battleground::RemovePlayer function in some cases */ -void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTypeId bgTypeId, BattlegroundBracketId bracket_id, uint8 arenaType, bool isRated, uint32 arenaRating) +void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, bool isRated, uint32 arenaRating) { + BattlegroundTypeId bgTypeId = BattlegroundTypeId(m_queueId.BattlemasterListId); + BattlegroundBracketId bracket_id = BattlegroundBracketId(m_queueId.BracketId); + uint8 arenaType = m_queueId.TeamSize; + //if no players in queue - do nothing - if (m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].empty() && - m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].empty() && - m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE].empty() && - m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_HORDE].empty()) + if (m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].empty() && + m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].empty() && + m_QueuedGroups[BG_QUEUE_NORMAL_ALLIANCE].empty() && + m_QueuedGroups[BG_QUEUE_NORMAL_HORDE].empty()) return; // battleground with free slot for player should be always in the beggining of the queue @@ -795,7 +784,7 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp m_SelectionPools[TEAM_HORDE].Init(); // call a function that does the job for us - FillPlayersToBG(bg, bracket_id); + FillPlayersToBG(bg); // now everything is set, invite players for (GroupsQueueType::const_iterator citr = m_SelectionPools[TEAM_ALLIANCE].SelectedGroups.begin(); citr != m_SelectionPools[TEAM_ALLIANCE].SelectedGroups.end(); ++citr) @@ -842,7 +831,7 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp if (bg_template->isBattleground()) { - if (CheckPremadeMatch(bracket_id, MinPlayersPerTeam, MaxPlayersPerTeam)) + if (CheckPremadeMatch(MinPlayersPerTeam, MaxPlayersPerTeam)) { // create new battleground Battleground* bg2 = sBattlegroundMgr->CreateNewBattleground(bgTypeId, bracketEntry, 0, false); @@ -867,8 +856,8 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp if (!isRated) { // if there are enough players in pools, start new battleground or non rated arena - if (CheckNormalMatch(bg_template, bracket_id, MinPlayersPerTeam, MaxPlayersPerTeam) - || (bg_template->isArena() && CheckSkirmishForSameFaction(bracket_id, MinPlayersPerTeam))) + if (CheckNormalMatch(bg_template, MinPlayersPerTeam, MaxPlayersPerTeam) + || (bg_template->isArena() && CheckSkirmishForSameFaction(MinPlayersPerTeam))) { // we successfully created a pool Battleground* bg2 = sBattlegroundMgr->CreateNewBattleground(bgTypeId, bracketEntry, arenaType, false); @@ -895,14 +884,14 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp { GroupQueueInfo* front1 = nullptr; GroupQueueInfo* front2 = nullptr; - if (!m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].empty()) + if (!m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].empty()) { - front1 = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].front(); + front1 = m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].front(); arenaRating = front1->ArenaMatchmakerRating; } - if (!m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].empty()) + if (!m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].empty()) { - front2 = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].front(); + front2 = m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].front(); arenaRating = front2->ArenaMatchmakerRating; } if (front1 && front2) @@ -935,8 +924,8 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp for (uint8 i = BG_QUEUE_PREMADE_ALLIANCE; i < BG_QUEUE_NORMAL_ALLIANCE; i++) { // take the group that joined first - GroupsQueueType::iterator itr2 = m_QueuedGroups[bracket_id][i].begin(); - for (; itr2 != m_QueuedGroups[bracket_id][i].end(); ++itr2) + GroupsQueueType::iterator itr2 = m_QueuedGroups[i].begin(); + for (; itr2 != m_QueuedGroups[i].end(); ++itr2) { // if group match conditions, then add it to pool if (!(*itr2)->IsInvitedToBGInstanceGUID @@ -955,7 +944,7 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp if (found == 1) { - for (GroupsQueueType::iterator itr3 = itr_teams[0]; itr3 != m_QueuedGroups[bracket_id][team].end(); ++itr3) + for (GroupsQueueType::iterator itr3 = itr_teams[0]; itr3 != m_QueuedGroups[team].end(); ++itr3) { if (!(*itr3)->IsInvitedToBGInstanceGUID && (((*itr3)->ArenaMatchmakerRating >= arenaMinRating && (*itr3)->ArenaMatchmakerRating <= arenaMaxRating) || (int32)(*itr3)->JoinTime < discardTime) @@ -990,13 +979,13 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp // now we must move team if we changed its faction to another faction queue, because then we will spam log by errors in Queue::RemovePlayer if (aTeam->Team != ALLIANCE) { - m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].push_front(aTeam); - m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].erase(itr_teams[TEAM_ALLIANCE]); + m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].push_front(aTeam); + m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].erase(itr_teams[TEAM_ALLIANCE]); } if (hTeam->Team != HORDE) { - m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_HORDE].push_front(hTeam); - m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE].erase(itr_teams[TEAM_HORDE]); + m_QueuedGroups[BG_QUEUE_PREMADE_HORDE].push_front(hTeam); + m_QueuedGroups[BG_QUEUE_PREMADE_ALLIANCE].erase(itr_teams[TEAM_HORDE]); } arena->SetArenaMatchmakerRating(ALLIANCE, aTeam->ArenaMatchmakerRating); @@ -1026,18 +1015,16 @@ bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) if (!bg) return true; - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bg->GetTypeID(), bg->GetArenaType()); - uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); + uint32 queueSlot = player->GetBattlegroundQueueIndex(m_QueueId); if (queueSlot < PLAYER_MAX_BATTLEGROUND_QUEUES) // player is in queue or in battleground { // check if player is invited to this bg - BattlegroundQueue &bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); + BattlegroundQueue &bgQueue = sBattlegroundMgr->GetBattlegroundQueue(m_QueueId); if (bgQueue.IsPlayerInvited(m_PlayerGuid, m_BgInstanceGUID, m_RemoveTime)) { - WorldPacket data; - //we must send remaining time in queue - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, m_ArenaType, 0); - player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusNeedConfirmation battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNeedConfirmation(&battlefieldStatus, bg, queueSlot, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, m_QueueId); + player->SendDirectMessage(battlefieldStatus.Write()); } } return true; //event will be deleted @@ -1064,7 +1051,7 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) // player logged off (we should do nothing, he is correctly removed from queue in another procedure) return true; - Battleground* bg = sBattlegroundMgr->GetBattleground(m_BgInstanceGUID, m_BgTypeId); + Battleground* bg = sBattlegroundMgr->GetBattleground(m_BgInstanceGUID, BattlegroundTypeId(m_BgQueueTypeId.BattlemasterListId)); //battleground can be deleted already when we are removing queue info //bg pointer can be NULL! so use it carefully! @@ -1091,11 +1078,11 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) bgQueue.RemovePlayer(m_PlayerGuid, true); //update queues if battleground isn't ended if (bg && bg->isBattleground() && bg->GetStatus() != STATUS_WAIT_LEAVE) - sBattlegroundMgr->ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId()); + sBattlegroundMgr->ScheduleQueueUpdate(0, m_BgQueueTypeId); - WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); - player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusNone battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNone(&battlefieldStatus, queueSlot); + player->SendDirectMessage(battlefieldStatus.Write()); } } diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.h b/src/server/game/Battlegrounds/BattlegroundQueue.h index b7cad6f5d44..7dfa68a4309 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.h +++ b/src/server/game/Battlegrounds/BattlegroundQueue.h @@ -23,8 +23,6 @@ #include "Battleground.h" #include "EventProcessor.h" -#include - //this container can't be deque, because deque doesn't like removing the last element - if you remove it, it invalidates next iterator and crash appears typedef std::list BGFreeSlotQueueContainer; @@ -40,10 +38,8 @@ struct PlayerQueueInfo // stores informatio struct GroupQueueInfo // stores information about the group in queue (also used when joined as solo!) { std::map Players; // player queue info map - uint32 Team; // Player team (ALLIANCE/HORDE) - BattlegroundTypeId BgTypeId; // battleground type id + ::Team Team; // Player team (ALLIANCE/HORDE) bool IsRated; // rated - uint8 ArenaType; // 2v2, 3v3, 5v5 or 0 when BG uint32 ArenaTeamId; // team id if rated match uint32 JoinTime; // time when group was added uint32 RemoveInviteTime; // time when we will remove invite for players in group @@ -75,22 +71,22 @@ class Battleground; class TC_GAME_API BattlegroundQueue { public: - BattlegroundQueue(); + BattlegroundQueue(BattlegroundQueueTypeId queueId); ~BattlegroundQueue(); - void BattlegroundQueueUpdate(uint32 diff, BattlegroundTypeId bgTypeId, BattlegroundBracketId bracket_id, uint8 arenaType = 0, bool isRated = false, uint32 minRating = 0); + void BattlegroundQueueUpdate(uint32 diff, bool isRated = false, uint32 minRating = 0); void UpdateEvents(uint32 diff); - void FillPlayersToBG(Battleground* bg, BattlegroundBracketId bracket_id); - bool CheckPremadeMatch(BattlegroundBracketId bracket_id, uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam); - bool CheckNormalMatch(Battleground* bg_template, BattlegroundBracketId bracket_id, uint32 minPlayers, uint32 maxPlayers); - bool CheckSkirmishForSameFaction(BattlegroundBracketId bracket_id, uint32 minPlayersPerTeam); - GroupQueueInfo* AddGroup(Player* leader, Group* group, BattlegroundTypeId bgTypeId, PvPDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 ArenaTeamId = 0, uint32 OpponentsArenaTeamId = 0); + void FillPlayersToBG(Battleground* bg); + bool CheckPremadeMatch(uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam); + bool CheckNormalMatch(Battleground* bg_template, uint32 minPlayers, uint32 maxPlayers); + bool CheckSkirmishForSameFaction(uint32 minPlayersPerTeam); + GroupQueueInfo* AddGroup(Player* leader, Group const* group, PvPDifficultyEntry const* bracketEntry, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 ArenaTeamId = 0, uint32 OpponentsArenaTeamId = 0); void RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount); bool IsPlayerInvited(ObjectGuid pl_guid, const uint32 bgInstanceGuid, const uint32 removeTime); bool GetPlayerGroupInfoData(ObjectGuid guid, GroupQueueInfo* ginfo); - void PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo, BattlegroundBracketId bracket_id); - uint32 GetAverageQueueWaitTime(GroupQueueInfo* ginfo, BattlegroundBracketId bracket_id) const; + void PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo); + uint32 GetAverageQueueWaitTime(GroupQueueInfo* ginfo) const; typedef std::map QueuedPlayersMap; QueuedPlayersMap m_QueuedPlayers; @@ -107,7 +103,7 @@ class TC_GAME_API BattlegroundQueue BG_QUEUE_NORMAL_ALLIANCE is used for normal (or small) alliance groups or non-rated arena matches BG_QUEUE_NORMAL_HORDE is used for normal (or small) horde groups or non-rated arena matches */ - GroupsQueueType m_QueuedGroups[MAX_BATTLEGROUND_BRACKETS][BG_QUEUE_GROUP_TYPES_COUNT]; + GroupsQueueType m_QueuedGroups[BG_QUEUE_GROUP_TYPES_COUNT]; // class to select and invite groups to bg class SelectionPool @@ -127,12 +123,16 @@ class TC_GAME_API BattlegroundQueue //one selection pool for horde, other one for alliance SelectionPool m_SelectionPools[PVP_TEAMS_COUNT]; uint32 GetPlayersInQueue(TeamId id); + + BattlegroundQueueTypeId GetQueueId() const { return m_queueId; } private: - bool InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, uint32 side); - uint32 m_WaitTimes[PVP_TEAMS_COUNT][MAX_BATTLEGROUND_BRACKETS][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME]; - uint32 m_WaitTimeLastPlayer[PVP_TEAMS_COUNT][MAX_BATTLEGROUND_BRACKETS]; - uint32 m_SumOfWaitTimes[PVP_TEAMS_COUNT][MAX_BATTLEGROUND_BRACKETS]; + BattlegroundQueueTypeId m_queueId; + + bool InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, Team side); + uint32 m_WaitTimes[PVP_TEAMS_COUNT][COUNT_OF_PLAYERS_TO_AVERAGE_WAIT_TIME]; + uint32 m_WaitTimeLastPlayer[PVP_TEAMS_COUNT]; + uint32 m_SumOfWaitTimes[PVP_TEAMS_COUNT]; // Event handler EventProcessor m_events; @@ -145,8 +145,8 @@ class TC_GAME_API BattlegroundQueue class TC_GAME_API BGQueueInviteEvent : public BasicEvent { public: - BGQueueInviteEvent(ObjectGuid pl_guid, uint32 BgInstanceGUID, BattlegroundTypeId BgTypeId, uint8 arenaType, uint32 removeTime) : - m_PlayerGuid(pl_guid), m_BgInstanceGUID(BgInstanceGUID), m_BgTypeId(BgTypeId), m_ArenaType(arenaType), m_RemoveTime(removeTime) + BGQueueInviteEvent(ObjectGuid pl_guid, uint32 BgInstanceGUID, BattlegroundTypeId BgTypeId, uint32 removeTime, BattlegroundQueueTypeId queueId) : + m_PlayerGuid(pl_guid), m_BgInstanceGUID(BgInstanceGUID), m_BgTypeId(BgTypeId), m_RemoveTime(removeTime), m_QueueId(queueId) { } virtual ~BGQueueInviteEvent() { } @@ -156,8 +156,8 @@ class TC_GAME_API BGQueueInviteEvent : public BasicEvent ObjectGuid m_PlayerGuid; uint32 m_BgInstanceGUID; BattlegroundTypeId m_BgTypeId; - uint8 m_ArenaType; uint32 m_RemoveTime; + BattlegroundQueueTypeId m_QueueId; }; /* @@ -168,8 +168,8 @@ class TC_GAME_API BGQueueInviteEvent : public BasicEvent class TC_GAME_API BGQueueRemoveEvent : public BasicEvent { public: - BGQueueRemoveEvent(ObjectGuid pl_guid, uint32 bgInstanceGUID, BattlegroundTypeId BgTypeId, BattlegroundQueueTypeId bgQueueTypeId, uint32 removeTime) - : m_PlayerGuid(pl_guid), m_BgInstanceGUID(bgInstanceGUID), m_RemoveTime(removeTime), m_BgTypeId(BgTypeId), m_BgQueueTypeId(bgQueueTypeId) + BGQueueRemoveEvent(ObjectGuid pl_guid, uint32 bgInstanceGUID, BattlegroundQueueTypeId bgQueueTypeId, uint32 removeTime) + : m_PlayerGuid(pl_guid), m_BgInstanceGUID(bgInstanceGUID), m_RemoveTime(removeTime), m_BgQueueTypeId(bgQueueTypeId) { } virtual ~BGQueueRemoveEvent() { } @@ -180,7 +180,6 @@ class TC_GAME_API BGQueueRemoveEvent : public BasicEvent ObjectGuid m_PlayerGuid; uint32 m_BgInstanceGUID; uint32 m_RemoveTime; - BattlegroundTypeId m_BgTypeId; BattlegroundQueueTypeId m_BgQueueTypeId; }; diff --git a/src/server/game/Battlegrounds/BattlegroundScore.h b/src/server/game/Battlegrounds/BattlegroundScore.h index f4c19320678..999e8c4133d 100644 --- a/src/server/game/Battlegrounds/BattlegroundScore.h +++ b/src/server/game/Battlegrounds/BattlegroundScore.h @@ -22,6 +22,11 @@ #include "ObjectGuid.h" #include "SharedDefines.h" +namespace WorldPackets::Battleground +{ +struct PVPLogData_Player; +} + class WorldPacket; enum ScoreType @@ -92,8 +97,8 @@ struct BattlegroundScore } } - virtual void AppendToPacket(WorldPacket& data); - virtual void BuildObjectivesBlock(WorldPacket& /*data*/) = 0; + virtual void AppendToPacket(WorldPackets::Battleground::PVPLogData_Player& playerData); + virtual void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) = 0; // For Logging purpose virtual std::string ToString() const { return ""; } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index 2f0320c55c3..c9353d29e3c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -17,6 +17,7 @@ #include "BattlegroundAB.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "Creature.h" #include "DBCStores.h" #include "GameObject.h" @@ -25,15 +26,12 @@ #include "Player.h" #include "Random.h" #include "Util.h" -#include "WorldPacket.h" #include "WorldSession.h" #include "WorldStatePackets.h" -void BattlegroundABScore::BuildObjectivesBlock(WorldPacket& data) +void BattlegroundABScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint32(2); - data << uint32(BasesAssaulted); - data << uint32(BasesDefended); + playerData.Stats = { BasesAssaulted, BasesDefended }; } BattlegroundAB::BattlegroundAB() diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h index c30958d9c19..a57c38e435f 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h @@ -288,10 +288,10 @@ struct BattlegroundABScore final : public BattlegroundScore } } - void BuildObjectivesBlock(WorldPacket& data) final override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; - uint32 GetAttr1() const final override { return BasesAssaulted; } - uint32 GetAttr2() const final override { return BasesDefended; } + uint32 GetAttr1() const override { return BasesAssaulted; } + uint32 GetAttr2() const override { return BasesDefended; } uint32 BasesAssaulted; uint32 BasesDefended; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 8d258d34075..6f272a874d4 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -16,6 +16,7 @@ */ #include "BattlegroundAV.h" +#include "BattlegroundPackets.h" #include "Creature.h" #include "CreatureAI.h" #include "DBCStores.h" @@ -27,14 +28,9 @@ #include "WorldSession.h" #include "WorldStatePackets.h" -void BattlegroundAVScore::BuildObjectivesBlock(WorldPacket& data) +void BattlegroundAVScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint32(5); // Objectives Count - data << uint32(GraveyardsAssaulted); - data << uint32(GraveyardsDefended); - data << uint32(TowersAssaulted); - data << uint32(TowersDefended); - data << uint32(MinesCaptured); + playerData.Stats = { GraveyardsAssaulted, GraveyardsDefended, TowersAssaulted, TowersDefended, MinesCaptured }; } BattlegroundAV::BattlegroundAV() diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h index 249cb0dfb73..8e40f65a6a6 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h @@ -1597,13 +1597,13 @@ struct BattlegroundAVScore final : public BattlegroundScore } } - void BuildObjectivesBlock(WorldPacket& data) final override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; - uint32 GetAttr1() const final override { return GraveyardsAssaulted; } - uint32 GetAttr2() const final override { return GraveyardsDefended; } - uint32 GetAttr3() const final override { return TowersAssaulted; } - uint32 GetAttr4() const final override { return TowersDefended; } - uint32 GetAttr5() const final override { return MinesCaptured; } + uint32 GetAttr1() const override { return GraveyardsAssaulted; } + uint32 GetAttr2() const override { return GraveyardsDefended; } + uint32 GetAttr3() const override { return TowersAssaulted; } + uint32 GetAttr4() const override { return TowersDefended; } + uint32 GetAttr5() const override { return MinesCaptured; } uint32 GraveyardsAssaulted; uint32 GraveyardsDefended; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index f230ec277a8..a9e55f5cc33 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -17,6 +17,7 @@ #include "BattlegroundEY.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "Creature.h" #include "DBCStores.h" #include "GameObject.h" @@ -26,7 +27,6 @@ #include "Player.h" #include "Random.h" #include "Util.h" -#include "WorldPacket.h" #include "WorldStatePackets.h" // these variables aren't used outside of this file, so declare them only here @@ -36,10 +36,9 @@ uint32 BG_EY_HonorScoreTicks[BG_HONOR_MODE_NUM] = 160 // holiday }; -void BattlegroundEYScore::BuildObjectivesBlock(WorldPacket& data) +void BattlegroundEYScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint32(1); // Objectives Count - data << uint32(FlagCaptures); + playerData.Stats = { FlagCaptures }; } BattlegroundEY::BattlegroundEY() diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h index e45a09a7a13..81b3d897cab 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h @@ -370,9 +370,9 @@ struct BattlegroundEYScore final : public BattlegroundScore } } - void BuildObjectivesBlock(WorldPacket& data) final override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; - uint32 GetAttr1() const final override { return FlagCaptures; } + uint32 GetAttr1() const override { return FlagCaptures; } uint32 FlagCaptures; }; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index 15cdbe8eaac..cf71d03db3e 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -16,6 +16,7 @@ */ #include "BattlegroundIC.h" +#include "BattlegroundPackets.h" #include "GameObject.h" #include "Log.h" #include "Map.h" @@ -23,14 +24,11 @@ #include "ScriptedCreature.h" #include "Transport.h" #include "Vehicle.h" -#include "WorldPacket.h" #include "WorldStatePackets.h" -void BattlegroundICScore::BuildObjectivesBlock(WorldPacket& data) +void BattlegroundICScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint32(2); // Objectives Count - data << uint32(BasesAssaulted); - data << uint32(BasesDefended); + playerData.Stats = { BasesAssaulted, BasesDefended }; } BattlegroundIC::BattlegroundIC() diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h index c2192e28c53..e70d5555817 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h @@ -930,10 +930,10 @@ struct BattlegroundICScore final : public BattlegroundScore } } - void BuildObjectivesBlock(WorldPacket& data) final override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; - uint32 GetAttr1() const final override { return BasesAssaulted; } - uint32 GetAttr2() const final override { return BasesDefended; } + uint32 GetAttr1() const override { return BasesAssaulted; } + uint32 GetAttr2() const override { return BasesDefended; } uint32 BasesAssaulted; uint32 BasesDefended; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index 3477a18ebf7..3de916ca0e2 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -16,6 +16,7 @@ */ #include "BattlegroundSA.h" +#include "BattlegroundPackets.h" #include "DBCStores.h" #include "GameObject.h" #include "GameTime.h" @@ -26,14 +27,11 @@ #include "Player.h" #include "ScriptedCreature.h" #include "UpdateData.h" -#include "WorldPacket.h" #include "WorldStatePackets.h" -void BattlegroundSAScore::BuildObjectivesBlock(WorldPacket& data) +void BattlegroundSAScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint32(2); // Objectives Count - data << uint32(DemolishersDestroyed); - data << uint32(GatesDestroyed); + playerData.Stats = { DemolishersDestroyed, GatesDestroyed }; } BattlegroundSA::BattlegroundSA() diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h index 1f2c2e53af0..17b5b9dd041 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h @@ -539,10 +539,10 @@ struct BattlegroundSAScore final : public BattlegroundScore } } - void BuildObjectivesBlock(WorldPacket& data) final override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; - uint32 GetAttr1() const final override { return DemolishersDestroyed; } - uint32 GetAttr2() const final override { return GatesDestroyed; } + uint32 GetAttr1() const override { return DemolishersDestroyed; } + uint32 GetAttr2() const override { return GatesDestroyed; } uint32 DemolishersDestroyed; uint32 GatesDestroyed; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index 7c00dd59992..90d2d5ef106 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -17,6 +17,7 @@ #include "BattlegroundWS.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "DBCStores.h" #include "GameObject.h" #include "Log.h" @@ -71,11 +72,9 @@ BattlegroundWS::BattlegroundWS() _minutesElapsed = 0; } -void BattlegroundWGScore::BuildObjectivesBlock(WorldPacket& data) +void BattlegroundWGScore::BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) { - data << uint32(2); // Objectives Count - data << uint32(FlagCaptures); - data << uint32(FlagReturns); + playerData.Stats = { FlagCaptures, FlagReturns }; } BattlegroundWS::~BattlegroundWS() { } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h index aa120ab8f3a..1d034b30cbf 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h @@ -186,10 +186,10 @@ struct BattlegroundWGScore final : public BattlegroundScore } } - void BuildObjectivesBlock(WorldPacket& data) final override; + void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player& playerData) override; - uint32 GetAttr1() const final override { return FlagCaptures; } - uint32 GetAttr2() const final override { return FlagReturns; } + uint32 GetAttr1() const override { return FlagCaptures; } + uint32 GetAttr2() const override { return FlagReturns; } uint32 FlagCaptures; uint32 FlagReturns; diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 50ad9a8e673..502031712c4 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -374,21 +374,14 @@ void ThreatManager::AddThreat(Unit* target, float amount, SpellInfo const* spell return; amount = 0.0f; } - else if (TempSummon* tempSummonVictim = target->ToTempSummon()) + + // If victim is personal spawn, redirect all aggro to summoner + if (target->IsPrivateObject() && (!GetOwner()->IsPrivateObject() || !GetOwner()->CheckPrivateObjectOwnerVisibility(target))) { - if (tempSummonVictim->IsVisibleBySummonerOnly()) + if (Unit* privateObjectOwner = ObjectAccessor::GetUnit(*GetOwner(), target->GetPrivateObjectOwner())) { - if (Unit* tempSummonSummoner = tempSummonVictim->GetSummonerUnit()) - { - // Personnal Spawns from same summoner can aggro each other - if (!_owner->ToTempSummon() || - !_owner->ToTempSummon()->IsVisibleBySummonerOnly() || - tempSummonVictim->GetSummonerGUID() != GetOwner()->ToTempSummon()->GetSummonerGUID()) - { - AddThreat(tempSummonSummoner, amount, spell, ignoreModifiers, ignoreRedirects); - amount = 0.0f; - } - } + AddThreat(privateObjectOwner, amount, spell, ignoreModifiers, ignoreRedirects); + amount = 0.0f; } } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 5894c68df1e..7ecaf0977dc 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -122,7 +122,7 @@ ConditionMgr::ConditionTypeInfo const ConditionMgr::StaticConditionTypeData[COND }; // Checks if object meets the condition -// Can have CONDITION_SOURCE_TYPE_NONE && !mReferenceId if called from a special event (ie: eventAI) +// Can have CONDITION_SOURCE_TYPE_NONE && !mReferenceId if called from a special event (ie: SmartAI) bool Condition::Meets(ConditionSourceInfo& sourceInfo) const { ASSERT(ConditionTarget < MAX_CONDITION_TARGETS); diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp index 7852f71725e..544c0a61f2e 100644 --- a/src/server/game/DataStores/DBCStores.cpp +++ b/src/server/game/DataStores/DBCStores.cpp @@ -616,8 +616,8 @@ void LoadDBCStores(const std::string& dataPath) } // valid taxi network node - uint8 field = (uint8)((node->ID - 1) / 32); - uint32 submask = 1 << ((node->ID - 1) % 32); + uint32 field = uint32((node->ID - 1) / (sizeof(TaxiMask::value_type) * 8)); + TaxiMask::value_type submask = TaxiMask::value_type(1 << ((node->ID - 1) % (sizeof(TaxiMask::value_type) * 8))); sTaxiNodesMask[field] |= submask; if (node->MountCreatureID[0] && node->MountCreatureID[0] != 32981) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 5f730c9c996..fa44b3deac5 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -251,9 +251,12 @@ bool ForcedDespawnDelayEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) } Creature::Creature(bool isWorldObject): Unit(isWorldObject), MapObject(), m_groupLootTimer(0), lootingGroupLowGUID(0), m_PlayerDamageReq(0), m_lootRecipient(), m_lootRecipientGroup(0), _pickpocketLootRestore(0), - m_corpseRemoveTime(0), m_respawnTime(0), m_respawnDelay(300), m_corpseDelay(60), m_ignoreCorpseDecayRatio(false), m_wanderDistance(0.0f), m_boundaryCheckTime(2500), m_combatPulseTime(0), m_combatPulseDelay(0), m_reactState(REACT_AGGRESSIVE), - m_defaultMovementType(IDLE_MOTION_TYPE), m_spawnId(0), m_equipmentId(0), m_originalEquipmentId(0), m_AlreadyCallAssistance(false), m_AlreadySearchedAssistance(false), m_cannotReachTarget(false), m_cannotReachTimer(0), - m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_originalEntry(0), m_homePosition(), m_transportHomePosition(), m_creatureInfo(nullptr), m_creatureData(nullptr), _waypointPathId(0), _currentWaypointNodeInfo(0, 0), + m_corpseRemoveTime(0), m_respawnTime(0), m_respawnDelay(300), m_corpseDelay(60), m_ignoreCorpseDecayRatio(false), m_wanderDistance(0.0f), + m_boundaryCheckTime(2500), m_combatPulseTime(0), m_combatPulseDelay(0), m_reactState(REACT_AGGRESSIVE), + m_defaultMovementType(IDLE_MOTION_TYPE), m_spawnId(0), m_equipmentId(0), m_originalEquipmentId(0), + m_AlreadyCallAssistance(false), m_AlreadySearchedAssistance(false), m_cannotReachTarget(false), m_cannotReachTimer(0), + m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_originalEntry(0), m_homePosition(), m_transportHomePosition(), + m_creatureInfo(nullptr), m_creatureData(nullptr), m_stringIds(), _waypointPathId(0), _currentWaypointNodeInfo(0, 0), m_formation(nullptr), m_triggerJustAppeared(true), m_respawnCompatibilityMode(false), _lastDamagedTime(0), _regenerateHealth(true), _regenerateHealthLock(false), _isMissingCanSwimFlagOutOfCombat(false) { @@ -635,6 +638,8 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/, //We must update last scriptId or it looks like we reloaded a script, breaking some things such as gossip temporarily LastUsedScriptID = GetScriptId(); + m_stringIds[AsUnderlyingType(StringIdType::Template)] = &cInfo->StringId; + return true; } @@ -1057,9 +1062,9 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, u } { // area/zone id is needed immediately for ZoneScript::GetCreatureEntry hook before it is known which creature template to load (no model/scale available yet) - PositionFullTerrainStatus data; - GetMap()->GetFullTerrainStatusForPosition(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ(), data, MAP_ALL_LIQUIDS, DEFAULT_COLLISION_HEIGHT); - ProcessPositionDataChanged(data); + PositionFullTerrainStatus terrainStatus; + GetMap()->GetFullTerrainStatusForPosition(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ(), terrainStatus); + ProcessPositionDataChanged(terrainStatus); } // Allow players to see those units while dead, do it here (mayby altered by addon auras) @@ -1685,6 +1690,8 @@ bool Creature::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap, // checked at creature_template loading m_defaultMovementType = MovementGeneratorType(data->movementType); + m_stringIds[AsUnderlyingType(StringIdType::Spawn)] = &data->StringId; + if (addToMap && !GetMap()->AddToMap(this)) return false; return true; @@ -2772,6 +2779,34 @@ uint32 Creature::GetScriptId() const return ASSERT_NOTNULL(sObjectMgr->GetCreatureTemplate(GetEntry()))->ScriptID; } +void Creature::InheritStringIds(Creature const* parent) +{ + // copy references to stringIds from template and spawn + m_stringIds = parent->m_stringIds; + + // then copy script stringId, not just its reference + SetScriptStringId(std::string(parent->GetStringId(StringIdType::Script))); +} + +bool Creature::HasStringId(std::string_view id) const +{ + return std::ranges::any_of(m_stringIds, [id](std::string const* stringId) { return stringId && *stringId == id; }); +} + +void Creature::SetScriptStringId(std::string id) +{ + if (!id.empty()) + { + m_scriptStringId.emplace(std::move(id)); + m_stringIds[AsUnderlyingType(StringIdType::Script)] = &*m_scriptStringId; + } + else + { + m_scriptStringId.reset(); + m_stringIds[AsUnderlyingType(StringIdType::Script)] = nullptr; + } +} + VendorItemData const* Creature::GetVendorItems() const { return sObjectMgr->GetNpcVendorItemList(GetEntry()); diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 8a65ca53724..1c1504d74e3 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -198,6 +198,10 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma std::string const& GetAIName() const; std::string GetScriptName() const; uint32 GetScriptId() const; + void InheritStringIds(Creature const* parent); + bool HasStringId(std::string_view id) const; + void SetScriptStringId(std::string id); + std::string_view GetStringId(StringIdType type) const { return m_stringIds[size_t(type)] ? std::string_view(*m_stringIds[size_t(type)]) : std::string_view(); } // override WorldObject function for proper name localization std::string const& GetNameForLocaleIdx(LocaleConstant locale_idx) const override; @@ -421,6 +425,8 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma CreatureTemplate const* m_creatureInfo; // Can differ from sObjectMgr->GetCreatureTemplate(GetEntry()) in difficulty mode > 0 CreatureData const* m_creatureData; + std::array m_stringIds; + Optional m_scriptStringId; uint16 m_LootMode; // Bitmask (default: LOOT_MODE_DEFAULT) that determines what loot will be lootable diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index 325bc22ab26..f4e6bdb1968 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -349,6 +349,7 @@ struct TC_GAME_API CreatureTemplate uint32 SpellSchoolImmuneMask; uint32 flags_extra; uint32 ScriptID; + std::string StringId; WorldPacket QueryData[TOTAL_LOCALES]; uint32 GetRandomValidModelId() const; uint32 GetFirstValidModelId() const; diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp index ccd95f38583..2afc0f90307 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.cpp +++ b/src/server/game/Entities/Creature/TemporarySummon.cpp @@ -28,7 +28,7 @@ TempSummon::TempSummon(SummonPropertiesEntry const* properties, WorldObject* owner, bool isWorldObject) : Creature(isWorldObject), m_Properties(properties), m_type(TEMPSUMMON_MANUAL_DESPAWN), -m_timer(0), m_lifetime(0), m_canFollowOwner(true), m_visibleBySummonerOnly(false) +m_timer(0), m_lifetime(0), m_canFollowOwner(true) { if (owner) m_summonerGUID = owner->GetGUID(); diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h index 24aff599f97..60a55f96ce4 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.h +++ b/src/server/game/Entities/Creature/TemporarySummon.h @@ -54,9 +54,6 @@ class TC_GAME_API TempSummon : public Creature uint32 GetTimer() const { return m_timer; } bool CanFollowOwner() const { return m_canFollowOwner; } void SetCanFollowOwner(bool can) { m_canFollowOwner = can; } - void SetVisibleBySummonerOnly(bool visibleBySummonerOnly) { m_visibleBySummonerOnly = visibleBySummonerOnly; } - bool IsVisibleBySummonerOnly() const { return m_visibleBySummonerOnly; } - SummonPropertiesEntry const* const m_Properties; std::string GetDebugInfo() const override; @@ -66,7 +63,6 @@ class TC_GAME_API TempSummon : public Creature uint32 m_lifetime; ObjectGuid m_summonerGUID; bool m_canFollowOwner; - bool m_visibleBySummonerOnly; }; class TC_GAME_API Minion : public TempSummon diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index d893a357b85..db28b515d04 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -108,7 +108,7 @@ QuaternionData QuaternionData::fromEulerAnglesZYX(float Z, float Y, float X) } GameObject::GameObject() : WorldObject(false), MapObject(), - m_model(nullptr), m_goValue(), m_AI(nullptr), m_respawnCompatibilityMode(false) + m_model(nullptr), m_goValue(), m_stringIds(), m_AI(nullptr), m_respawnCompatibilityMode(false) { m_objectType |= TYPEMASK_GAMEOBJECT; m_objectTypeId = TYPEID_GAMEOBJECT; @@ -417,6 +417,9 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u } LastUsedScriptID = GetGOInfo()->ScriptId; + + m_stringIds[AsUnderlyingType(StringIdType::Template)] = &goinfo->StringId; + AIM_Initialize(); // Initialize loot duplicate count depending on raid difficulty @@ -1142,6 +1145,8 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap m_goData = data; + m_stringIds[AsUnderlyingType(StringIdType::Spawn)] = &data->StringId; + if (addToMap && !GetMap()->AddToMap(this)) return false; @@ -2270,6 +2275,34 @@ uint32 GameObject::GetScriptId() const return GetGOInfo()->ScriptId; } +void GameObject::InheritStringIds(GameObject const* parent) +{ + // copy references to stringIds from template and spawn + m_stringIds = parent->m_stringIds; + + // then copy script stringId, not just its reference + SetScriptStringId(std::string(parent->GetStringId(StringIdType::Script))); +} + +bool GameObject::HasStringId(std::string_view id) const +{ + return std::ranges::any_of(m_stringIds, [id](std::string const* stringId) { return stringId && *stringId == id; }); +} + +void GameObject::SetScriptStringId(std::string id) +{ + if (!id.empty()) + { + m_scriptStringId.emplace(std::move(id)); + m_stringIds[AsUnderlyingType(StringIdType::Script)] = &*m_scriptStringId; + } + else + { + m_scriptStringId.reset(); + m_stringIds[AsUnderlyingType(StringIdType::Script)] = nullptr; + } +} + // overwrite WorldObject function for proper name localization std::string const & GameObject::GetNameForLocaleIdx(LocaleConstant loc_idx) const { diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index f45682405b2..a73e6ce8fff 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -270,10 +270,15 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject void SetRespawnCompatibilityMode(bool mode = true) { m_respawnCompatibilityMode = mode; } bool GetRespawnCompatibilityMode() {return m_respawnCompatibilityMode; } + std::string const& GetAIName() const; uint32 GetScriptId() const; GameObjectAI* AI() const { return m_AI; } - std::string const& GetAIName() const; + void InheritStringIds(GameObject const* parent); + bool HasStringId(std::string_view id) const; + void SetScriptStringId(std::string id); + std::string_view GetStringId(StringIdType type) const { return m_stringIds[size_t(type)] ? std::string_view(*m_stringIds[size_t(type)]) : std::string_view(); } + void SetDisplayId(uint32 displayid); uint32 GetDisplayId() const { return GetUInt32Value(GAMEOBJECT_DISPLAYID); } @@ -339,6 +344,8 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject GameObjectTemplateAddon const* m_goTemplateAddon; GameObjectData const* m_goData; GameObjectValue m_goValue; + std::array m_stringIds; + Optional m_scriptStringId; int64 m_packedRotation; QuaternionData m_localRotation; diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index 40eda9ce862..a4e4a4bdce2 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -420,6 +420,7 @@ struct GameObjectTemplate std::string AIName; uint32 ScriptId; + std::string StringId; WorldPacket QueryData[TOTAL_LOCALES]; // helpers diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index c491f88dbab..49363f6b1d0 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -831,15 +831,15 @@ InventoryResult Item::CanBeMergedPartlyWith(ItemTemplate const* proto) const { // not allow merge looting currently items if (m_lootGenerated) - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; // check item type if (GetEntry() != proto->ItemId) - return EQUIP_ERR_ITEM_CANT_STACK; + return EQUIP_ERR_CANT_STACK; // check free space (full stacks can't be target of merge if (GetCount() >= proto->GetMaxStackSize()) - return EQUIP_ERR_ITEM_CANT_STACK; + return EQUIP_ERR_CANT_STACK; return EQUIP_ERR_OK; } diff --git a/src/server/game/Entities/Item/ItemDefines.h b/src/server/game/Entities/Item/ItemDefines.h index 10f5c2c46da..db5c7fd3a03 100644 --- a/src/server/game/Entities/Item/ItemDefines.h +++ b/src/server/game/Entities/Item/ItemDefines.h @@ -23,95 +23,98 @@ // EnumUtils: DESCRIBE THIS enum InventoryResult : uint8 { - EQUIP_ERR_OK = 0, - EQUIP_ERR_CANT_EQUIP_LEVEL_I = 1, - EQUIP_ERR_CANT_EQUIP_SKILL = 2, - EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT = 3, - EQUIP_ERR_BAG_FULL = 4, - EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG = 5, - EQUIP_ERR_CANT_TRADE_EQUIP_BAGS = 6, - EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE = 7, - EQUIP_ERR_NO_REQUIRED_PROFICIENCY = 8, - EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE = 9, - EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM = 10, - EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2 = 11, - EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2 = 12, - EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED = 13, - EQUIP_ERR_CANT_DUAL_WIELD = 14, - EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG = 15, - EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2 = 16, - EQUIP_ERR_CANT_CARRY_MORE_OF_THIS = 17, - EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3 = 18, - EQUIP_ERR_ITEM_CANT_STACK = 19, - EQUIP_ERR_ITEM_CANT_BE_EQUIPPED = 20, - EQUIP_ERR_ITEMS_CANT_BE_SWAPPED = 21, - EQUIP_ERR_SLOT_IS_EMPTY = 22, - EQUIP_ERR_ITEM_NOT_FOUND = 23, - EQUIP_ERR_CANT_DROP_SOULBOUND = 24, - EQUIP_ERR_OUT_OF_RANGE = 25, - EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT = 26, - EQUIP_ERR_COULDNT_SPLIT_ITEMS = 27, - EQUIP_ERR_MISSING_REAGENT = 28, - EQUIP_ERR_NOT_ENOUGH_MONEY = 29, - EQUIP_ERR_NOT_A_BAG = 30, - EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS = 31, - EQUIP_ERR_DONT_OWN_THAT_ITEM = 32, - EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER = 33, - EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT = 34, - EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK = 35, - EQUIP_ERR_ITEM_LOCKED = 36, - EQUIP_ERR_YOU_ARE_STUNNED = 37, - EQUIP_ERR_YOU_ARE_DEAD = 38, - EQUIP_ERR_CANT_DO_RIGHT_NOW = 39, - EQUIP_ERR_INT_BAG_ERROR = 40, - EQUIP_ERR_CAN_EQUIP_ONLY1_BOLT = 41, - EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH = 42, - EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED = 43, - EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED = 44, - EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED = 45, - EQUIP_ERR_BOUND_CANT_BE_WRAPPED = 46, - EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED = 47, - EQUIP_ERR_BAGS_CANT_BE_WRAPPED = 48, - EQUIP_ERR_ALREADY_LOOTED = 49, - EQUIP_ERR_INVENTORY_FULL = 50, - EQUIP_ERR_BANK_FULL = 51, - EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT = 52, - EQUIP_ERR_BAG_FULL3 = 53, - EQUIP_ERR_ITEM_NOT_FOUND2 = 54, - EQUIP_ERR_ITEM_CANT_STACK2 = 55, - EQUIP_ERR_BAG_FULL4 = 56, - EQUIP_ERR_ITEM_SOLD_OUT = 57, - EQUIP_ERR_OBJECT_IS_BUSY = 58, - EQUIP_ERR_NONE = 59, - EQUIP_ERR_NOT_IN_COMBAT = 60, - EQUIP_ERR_NOT_WHILE_DISARMED = 61, - EQUIP_ERR_BAG_FULL6 = 62, - EQUIP_ERR_CANT_EQUIP_RANK = 63, - EQUIP_ERR_CANT_EQUIP_REPUTATION = 64, - EQUIP_ERR_TOO_MANY_SPECIAL_BAGS = 65, - EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW = 66, - EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE = 67, - EQUIP_ERR_VENDOR_MISSING_TURNINS = 68, - EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS = 69, - EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS = 70, - EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED = 71, - EQUIP_ERR_MAIL_BOUND_ITEM = 72, - EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING = 73, - EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 75, - EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 76, - EQUIP_ERR_TOO_MUCH_GOLD = 77, - EQUIP_ERR_NOT_DURING_ARENA_MATCH = 78, - EQUIP_ERR_CANNOT_TRADE_THAT = 79, - EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW = 80, - EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM = 81, - EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS = 82, - // no output = 83, - EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED = 84, - EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED = 85, - EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 86, - EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW = 87, - EQUIP_ERR_CANT_EQUIP_NEED_TALENT = 88, - EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED = 89 + EQUIP_ERR_OK = 0, + EQUIP_ERR_CANT_EQUIP_LEVEL_I = 1, // You must reach level %d to use that item. + EQUIP_ERR_CANT_EQUIP_SKILL = 2, // You aren't skilled enough to use that item. + EQUIP_ERR_WRONG_SLOT = 3, // That item does not go in that slot. + EQUIP_ERR_BAG_FULL = 4, // That bag is full. + EQUIP_ERR_BAG_IN_BAG = 5, // Can't put non-empty bags in other bags. + EQUIP_ERR_TRADE_EQUIPPED_BAG = 6, // You can't trade equipped bags. + EQUIP_ERR_AMMO_ONLY = 7, // Only ammo can go there. + EQUIP_ERR_PROFICIENCY_NEEDED = 8, // You do not have the required proficiency for that item. + EQUIP_ERR_NO_SLOT_AVAILABLE = 9, // No equipment slot is available for that item. + EQUIP_ERR_CANT_EQUIP_EVER = 10, // You can never use that item. + EQUIP_ERR_CANT_EQUIP_EVER_2 = 11, // You can never use that item. + EQUIP_ERR_NO_SLOT_AVAILABLE_2 = 12, // No equipment slot is available for that item. + EQUIP_ERR_2HANDED_EQUIPPED = 13, // Cannot equip that with a two-handed weapon. + EQUIP_ERR_2HSKILLNOTFOUND = 14, // You cannot dual-wield + EQUIP_ERR_WRONG_BAG_TYPE = 15, // That item doesn't go in that container. + EQUIP_ERR_WRONG_BAG_TYPE_2 = 16, // That item doesn't go in that container. + EQUIP_ERR_ITEM_MAX_COUNT = 17, // You can't carry any more of those items. + EQUIP_ERR_NO_SLOT_AVAILABLE_3 = 18, // No equipment slot is available for that item. + EQUIP_ERR_CANT_STACK = 19, // This item cannot stack. + EQUIP_ERR_NOT_EQUIPPABLE = 20, // This item cannot be equipped. + EQUIP_ERR_CANT_SWAP = 21, // These items can't be swapped. + EQUIP_ERR_SLOT_EMPTY = 22, // That slot is empty. + EQUIP_ERR_ITEM_NOT_FOUND = 23, // The item was not found. + EQUIP_ERR_DROP_BOUND_ITEM = 24, // You can't drop a soulbound item. + EQUIP_ERR_OUT_OF_RANGE = 25, // Out of range. + EQUIP_ERR_TOO_FEW_TO_SPLIT = 26, // Tried to split more than number in stack. + EQUIP_ERR_SPLIT_FAILED = 27, // Couldn't split those items. + EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC = 28, // Missing reagent + EQUIP_ERR_NOT_ENOUGH_MONEY = 29, // You don't have enough money. + EQUIP_ERR_NOT_A_BAG = 30, // Not a bag. + EQUIP_ERR_DESTROY_NONEMPTY_BAG = 31, // You can only do that with empty bags. + EQUIP_ERR_NOT_OWNER = 32, // You don't own that item. + EQUIP_ERR_ONLY_ONE_QUIVER = 33, // You can only equip one quiver. + EQUIP_ERR_NO_BANK_SLOT = 34, // You must purchase that bag slot first + EQUIP_ERR_NO_BANK_HERE = 35, // You are too far away from a bank. + EQUIP_ERR_ITEM_LOCKED = 36, // Item is locked. + EQUIP_ERR_GENERIC_STUNNED = 37, // You are stunned + EQUIP_ERR_PLAYER_DEAD = 38, // You can't do that when you're dead. + EQUIP_ERR_CLIENT_LOCKED_OUT = 39, // You can't do that right now. + EQUIP_ERR_INTERNAL_BAG_ERROR = 40, // Internal Bag Error + EQUIP_ERR_ONLY_ONE_BOLT = 41, // You can only equip one quiver. + EQUIP_ERR_ONLY_ONE_AMMO = 42, // You can only equip one ammo pouch. + EQUIP_ERR_CANT_WRAP_STACKABLE = 43, // Stackable items can't be wrapped. + EQUIP_ERR_CANT_WRAP_EQUIPPED = 44, // Equipped items can't be wrapped. + EQUIP_ERR_CANT_WRAP_WRAPPED = 45, // Wrapped items can't be wrapped. + EQUIP_ERR_CANT_WRAP_BOUND = 46, // Bound items can't be wrapped. + EQUIP_ERR_CANT_WRAP_UNIQUE = 47, // Unique items can't be wrapped. + EQUIP_ERR_CANT_WRAP_BAGS = 48, // Bags can't be wrapped. + EQUIP_ERR_LOOT_GONE = 49, // Already looted + EQUIP_ERR_INV_FULL = 50, // Inventory is full. + EQUIP_ERR_BANK_FULL = 51, // Your bank is full + EQUIP_ERR_VENDOR_SOLD_OUT = 52, // That item is currently sold out. + EQUIP_ERR_BAG_FULL_2 = 53, // That bag is full. + EQUIP_ERR_ITEM_NOT_FOUND_2 = 54, // The item was not found. + EQUIP_ERR_CANT_STACK_2 = 55, // This item cannot stack. + EQUIP_ERR_BAG_FULL_3 = 56, // That bag is full. + EQUIP_ERR_VENDOR_SOLD_OUT_2 = 57, // That item is currently sold out. + EQUIP_ERR_OBJECT_IS_BUSY = 58, // That object is busy. + EQUIP_ERR_CANT_BE_DISENCHANTED = 59, // Item cannot be disenchanted + EQUIP_ERR_NOT_IN_COMBAT = 60, // You can't do that while in combat + EQUIP_ERR_NOT_WHILE_DISARMED = 61, // You can't do that while disarmed + EQUIP_ERR_BAG_FULL_4 = 62, // That bag is full. + EQUIP_ERR_CANT_EQUIP_RANK = 63, // You don't have the required rank for that item + EQUIP_ERR_CANT_EQUIP_REPUTATION = 64, // You don't have the required reputation for that item + EQUIP_ERR_TOO_MANY_SPECIAL_BAGS = 65, // You cannot equip another bag of that type + EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW = 66, // You can't loot that item now. + EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE = 67, // You cannot equip more than one of those. + EQUIP_ERR_VENDOR_MISSING_TURNINS = 68, // You do not have the required items for that purchase + EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS = 69, // You don't have enough honor points + EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS = 70, // You don't have enough arena points + EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED = 71, // You have the maximum number of those gems in your inventory or socketed into items. + EQUIP_ERR_MAIL_BOUND_ITEM = 72, // You can't mail soulbound items. + EQUIP_ERR_INTERNAL_BAG_ERROR_2 = 73, // Internal Bag Error + EQUIP_ERR_BAG_FULL_5 = 74, // That bag is full. + EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 75, // You have the maximum number of those gems socketed into equipped items. + EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 76, // You cannot socket more than one of those gems into a single item. + EQUIP_ERR_TOO_MUCH_GOLD = 77, // At gold limit + EQUIP_ERR_NOT_DURING_ARENA_MATCH = 78, // You can't do that while in an arena match + EQUIP_ERR_TRADE_BOUND_ITEM = 79, // You can't trade a soulbound item. + EQUIP_ERR_CANT_EQUIP_RATING = 80, // You don't have the personal, team, or battleground rating required to buy that item + EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM = 81, + EQUIP_ERR_NOT_SAME_ACCOUNT = 82, // Account-bound items can only be given to your own characters. + EQUIP_ERR_NONE = 83, + EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 84, // You can only carry %d %s + EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 85, // You can only equip %d |4item:items in the %s category + EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 86, // Your level is too high to use that item + EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW = 87, // You must reach level %d to purchase that item. + EQUIP_ERR_CANT_EQUIP_NEED_TALENT = 88, // You do not have the required talent to equip that. + EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 89, // You can only equip %d |4item:items in the %s category + EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 90, // Cannot equip item in this form + EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL = 91, // Your inventory is full. Your satchel has been delivered to your mailbox. }; // EnumUtils: DESCRIBE THIS diff --git a/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp b/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp index 663161b9751..0af6cb8b37e 100644 --- a/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp +++ b/src/server/game/Entities/Item/enuminfo_ItemDefines.cpp @@ -32,99 +32,103 @@ TC_API_EXPORT EnumText EnumUtils::ToString(InventoryResult valu switch (value) { case EQUIP_ERR_OK: return { "EQUIP_ERR_OK", "EQUIP_ERR_OK", "" }; - case EQUIP_ERR_CANT_EQUIP_LEVEL_I: return { "EQUIP_ERR_CANT_EQUIP_LEVEL_I", "EQUIP_ERR_CANT_EQUIP_LEVEL_I", "" }; - case EQUIP_ERR_CANT_EQUIP_SKILL: return { "EQUIP_ERR_CANT_EQUIP_SKILL", "EQUIP_ERR_CANT_EQUIP_SKILL", "" }; - case EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT: return { "EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT", "EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT", "" }; - case EQUIP_ERR_BAG_FULL: return { "EQUIP_ERR_BAG_FULL", "EQUIP_ERR_BAG_FULL", "" }; - case EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG: return { "EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG", "EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG", "" }; - case EQUIP_ERR_CANT_TRADE_EQUIP_BAGS: return { "EQUIP_ERR_CANT_TRADE_EQUIP_BAGS", "EQUIP_ERR_CANT_TRADE_EQUIP_BAGS", "" }; - case EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE: return { "EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE", "EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE", "" }; - case EQUIP_ERR_NO_REQUIRED_PROFICIENCY: return { "EQUIP_ERR_NO_REQUIRED_PROFICIENCY", "EQUIP_ERR_NO_REQUIRED_PROFICIENCY", "" }; - case EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE: return { "EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE", "EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE", "" }; - case EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM: return { "EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM", "EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM", "" }; - case EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2: return { "EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2", "EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2", "" }; - case EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2: return { "EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2", "EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2", "" }; - case EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED: return { "EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED", "EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED", "" }; - case EQUIP_ERR_CANT_DUAL_WIELD: return { "EQUIP_ERR_CANT_DUAL_WIELD", "EQUIP_ERR_CANT_DUAL_WIELD", "" }; - case EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG: return { "EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG", "EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG", "" }; - case EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2: return { "EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2", "EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2", "" }; - case EQUIP_ERR_CANT_CARRY_MORE_OF_THIS: return { "EQUIP_ERR_CANT_CARRY_MORE_OF_THIS", "EQUIP_ERR_CANT_CARRY_MORE_OF_THIS", "" }; - case EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3: return { "EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3", "EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3", "" }; - case EQUIP_ERR_ITEM_CANT_STACK: return { "EQUIP_ERR_ITEM_CANT_STACK", "EQUIP_ERR_ITEM_CANT_STACK", "" }; - case EQUIP_ERR_ITEM_CANT_BE_EQUIPPED: return { "EQUIP_ERR_ITEM_CANT_BE_EQUIPPED", "EQUIP_ERR_ITEM_CANT_BE_EQUIPPED", "" }; - case EQUIP_ERR_ITEMS_CANT_BE_SWAPPED: return { "EQUIP_ERR_ITEMS_CANT_BE_SWAPPED", "EQUIP_ERR_ITEMS_CANT_BE_SWAPPED", "" }; - case EQUIP_ERR_SLOT_IS_EMPTY: return { "EQUIP_ERR_SLOT_IS_EMPTY", "EQUIP_ERR_SLOT_IS_EMPTY", "" }; - case EQUIP_ERR_ITEM_NOT_FOUND: return { "EQUIP_ERR_ITEM_NOT_FOUND", "EQUIP_ERR_ITEM_NOT_FOUND", "" }; - case EQUIP_ERR_CANT_DROP_SOULBOUND: return { "EQUIP_ERR_CANT_DROP_SOULBOUND", "EQUIP_ERR_CANT_DROP_SOULBOUND", "" }; - case EQUIP_ERR_OUT_OF_RANGE: return { "EQUIP_ERR_OUT_OF_RANGE", "EQUIP_ERR_OUT_OF_RANGE", "" }; - case EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT: return { "EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT", "EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT", "" }; - case EQUIP_ERR_COULDNT_SPLIT_ITEMS: return { "EQUIP_ERR_COULDNT_SPLIT_ITEMS", "EQUIP_ERR_COULDNT_SPLIT_ITEMS", "" }; - case EQUIP_ERR_MISSING_REAGENT: return { "EQUIP_ERR_MISSING_REAGENT", "EQUIP_ERR_MISSING_REAGENT", "" }; - case EQUIP_ERR_NOT_ENOUGH_MONEY: return { "EQUIP_ERR_NOT_ENOUGH_MONEY", "EQUIP_ERR_NOT_ENOUGH_MONEY", "" }; - case EQUIP_ERR_NOT_A_BAG: return { "EQUIP_ERR_NOT_A_BAG", "EQUIP_ERR_NOT_A_BAG", "" }; - case EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS: return { "EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS", "EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS", "" }; - case EQUIP_ERR_DONT_OWN_THAT_ITEM: return { "EQUIP_ERR_DONT_OWN_THAT_ITEM", "EQUIP_ERR_DONT_OWN_THAT_ITEM", "" }; - case EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER: return { "EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER", "EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER", "" }; - case EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT: return { "EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT", "EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT", "" }; - case EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK: return { "EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK", "EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK", "" }; - case EQUIP_ERR_ITEM_LOCKED: return { "EQUIP_ERR_ITEM_LOCKED", "EQUIP_ERR_ITEM_LOCKED", "" }; - case EQUIP_ERR_YOU_ARE_STUNNED: return { "EQUIP_ERR_YOU_ARE_STUNNED", "EQUIP_ERR_YOU_ARE_STUNNED", "" }; - case EQUIP_ERR_YOU_ARE_DEAD: return { "EQUIP_ERR_YOU_ARE_DEAD", "EQUIP_ERR_YOU_ARE_DEAD", "" }; - case EQUIP_ERR_CANT_DO_RIGHT_NOW: return { "EQUIP_ERR_CANT_DO_RIGHT_NOW", "EQUIP_ERR_CANT_DO_RIGHT_NOW", "" }; - case EQUIP_ERR_INT_BAG_ERROR: return { "EQUIP_ERR_INT_BAG_ERROR", "EQUIP_ERR_INT_BAG_ERROR", "" }; - case EQUIP_ERR_CAN_EQUIP_ONLY1_BOLT: return { "EQUIP_ERR_CAN_EQUIP_ONLY1_BOLT", "EQUIP_ERR_CAN_EQUIP_ONLY1_BOLT", "" }; - case EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH: return { "EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH", "EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH", "" }; - case EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED: return { "EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED", "EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED", "" }; - case EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED: return { "EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED", "EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED", "" }; - case EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED: return { "EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED", "EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED", "" }; - case EQUIP_ERR_BOUND_CANT_BE_WRAPPED: return { "EQUIP_ERR_BOUND_CANT_BE_WRAPPED", "EQUIP_ERR_BOUND_CANT_BE_WRAPPED", "" }; - case EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED: return { "EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED", "EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED", "" }; - case EQUIP_ERR_BAGS_CANT_BE_WRAPPED: return { "EQUIP_ERR_BAGS_CANT_BE_WRAPPED", "EQUIP_ERR_BAGS_CANT_BE_WRAPPED", "" }; - case EQUIP_ERR_ALREADY_LOOTED: return { "EQUIP_ERR_ALREADY_LOOTED", "EQUIP_ERR_ALREADY_LOOTED", "" }; - case EQUIP_ERR_INVENTORY_FULL: return { "EQUIP_ERR_INVENTORY_FULL", "EQUIP_ERR_INVENTORY_FULL", "" }; - case EQUIP_ERR_BANK_FULL: return { "EQUIP_ERR_BANK_FULL", "EQUIP_ERR_BANK_FULL", "" }; - case EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT: return { "EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT", "EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT", "" }; - case EQUIP_ERR_BAG_FULL3: return { "EQUIP_ERR_BAG_FULL3", "EQUIP_ERR_BAG_FULL3", "" }; - case EQUIP_ERR_ITEM_NOT_FOUND2: return { "EQUIP_ERR_ITEM_NOT_FOUND2", "EQUIP_ERR_ITEM_NOT_FOUND2", "" }; - case EQUIP_ERR_ITEM_CANT_STACK2: return { "EQUIP_ERR_ITEM_CANT_STACK2", "EQUIP_ERR_ITEM_CANT_STACK2", "" }; - case EQUIP_ERR_BAG_FULL4: return { "EQUIP_ERR_BAG_FULL4", "EQUIP_ERR_BAG_FULL4", "" }; - case EQUIP_ERR_ITEM_SOLD_OUT: return { "EQUIP_ERR_ITEM_SOLD_OUT", "EQUIP_ERR_ITEM_SOLD_OUT", "" }; - case EQUIP_ERR_OBJECT_IS_BUSY: return { "EQUIP_ERR_OBJECT_IS_BUSY", "EQUIP_ERR_OBJECT_IS_BUSY", "" }; - case EQUIP_ERR_NONE: return { "EQUIP_ERR_NONE", "EQUIP_ERR_NONE", "" }; - case EQUIP_ERR_NOT_IN_COMBAT: return { "EQUIP_ERR_NOT_IN_COMBAT", "EQUIP_ERR_NOT_IN_COMBAT", "" }; - case EQUIP_ERR_NOT_WHILE_DISARMED: return { "EQUIP_ERR_NOT_WHILE_DISARMED", "EQUIP_ERR_NOT_WHILE_DISARMED", "" }; - case EQUIP_ERR_BAG_FULL6: return { "EQUIP_ERR_BAG_FULL6", "EQUIP_ERR_BAG_FULL6", "" }; - case EQUIP_ERR_CANT_EQUIP_RANK: return { "EQUIP_ERR_CANT_EQUIP_RANK", "EQUIP_ERR_CANT_EQUIP_RANK", "" }; - case EQUIP_ERR_CANT_EQUIP_REPUTATION: return { "EQUIP_ERR_CANT_EQUIP_REPUTATION", "EQUIP_ERR_CANT_EQUIP_REPUTATION", "" }; - case EQUIP_ERR_TOO_MANY_SPECIAL_BAGS: return { "EQUIP_ERR_TOO_MANY_SPECIAL_BAGS", "EQUIP_ERR_TOO_MANY_SPECIAL_BAGS", "" }; - case EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW: return { "EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW", "EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW", "" }; - case EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE: return { "EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE", "EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE", "" }; - case EQUIP_ERR_VENDOR_MISSING_TURNINS: return { "EQUIP_ERR_VENDOR_MISSING_TURNINS", "EQUIP_ERR_VENDOR_MISSING_TURNINS", "" }; - case EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS: return { "EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS", "EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS", "" }; - case EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS: return { "EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS", "EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS", "" }; - case EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED: return { "EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED", "EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED", "" }; - case EQUIP_ERR_MAIL_BOUND_ITEM: return { "EQUIP_ERR_MAIL_BOUND_ITEM", "EQUIP_ERR_MAIL_BOUND_ITEM", "" }; - case EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING: return { "EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING", "EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING", "" }; - case EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED: return { "EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "" }; - case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED: return { "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "" }; - case EQUIP_ERR_TOO_MUCH_GOLD: return { "EQUIP_ERR_TOO_MUCH_GOLD", "EQUIP_ERR_TOO_MUCH_GOLD", "" }; - case EQUIP_ERR_NOT_DURING_ARENA_MATCH: return { "EQUIP_ERR_NOT_DURING_ARENA_MATCH", "EQUIP_ERR_NOT_DURING_ARENA_MATCH", "" }; - case EQUIP_ERR_CANNOT_TRADE_THAT: return { "EQUIP_ERR_CANNOT_TRADE_THAT", "EQUIP_ERR_CANNOT_TRADE_THAT", "" }; - case EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW: return { "EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW", "EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW", "" }; + case EQUIP_ERR_CANT_EQUIP_LEVEL_I: return { "EQUIP_ERR_CANT_EQUIP_LEVEL_I", "EQUIP_ERR_CANT_EQUIP_LEVEL_I", "You must reach level %d to use that item." }; + case EQUIP_ERR_CANT_EQUIP_SKILL: return { "EQUIP_ERR_CANT_EQUIP_SKILL", "EQUIP_ERR_CANT_EQUIP_SKILL", "You aren't skilled enough to use that item." }; + case EQUIP_ERR_WRONG_SLOT: return { "EQUIP_ERR_WRONG_SLOT", "EQUIP_ERR_WRONG_SLOT", "That item does not go in that slot." }; + case EQUIP_ERR_BAG_FULL: return { "EQUIP_ERR_BAG_FULL", "EQUIP_ERR_BAG_FULL", "That bag is full." }; + case EQUIP_ERR_BAG_IN_BAG: return { "EQUIP_ERR_BAG_IN_BAG", "EQUIP_ERR_BAG_IN_BAG", "Can't put non-empty bags in other bags." }; + case EQUIP_ERR_TRADE_EQUIPPED_BAG: return { "EQUIP_ERR_TRADE_EQUIPPED_BAG", "EQUIP_ERR_TRADE_EQUIPPED_BAG", "You can't trade equipped bags." }; + case EQUIP_ERR_AMMO_ONLY: return { "EQUIP_ERR_AMMO_ONLY", "EQUIP_ERR_AMMO_ONLY", "Only ammo can go there." }; + case EQUIP_ERR_PROFICIENCY_NEEDED: return { "EQUIP_ERR_PROFICIENCY_NEEDED", "EQUIP_ERR_PROFICIENCY_NEEDED", "You do not have the required proficiency for that item." }; + case EQUIP_ERR_NO_SLOT_AVAILABLE: return { "EQUIP_ERR_NO_SLOT_AVAILABLE", "EQUIP_ERR_NO_SLOT_AVAILABLE", "No equipment slot is available for that item." }; + case EQUIP_ERR_CANT_EQUIP_EVER: return { "EQUIP_ERR_CANT_EQUIP_EVER", "EQUIP_ERR_CANT_EQUIP_EVER", "You can never use that item." }; + case EQUIP_ERR_CANT_EQUIP_EVER_2: return { "EQUIP_ERR_CANT_EQUIP_EVER_2", "EQUIP_ERR_CANT_EQUIP_EVER_2", "You can never use that item." }; + case EQUIP_ERR_NO_SLOT_AVAILABLE_2: return { "EQUIP_ERR_NO_SLOT_AVAILABLE_2", "EQUIP_ERR_NO_SLOT_AVAILABLE_2", "No equipment slot is available for that item." }; + case EQUIP_ERR_2HANDED_EQUIPPED: return { "EQUIP_ERR_2HANDED_EQUIPPED", "EQUIP_ERR_2HANDED_EQUIPPED", "Cannot equip that with a two-handed weapon." }; + case EQUIP_ERR_2HSKILLNOTFOUND: return { "EQUIP_ERR_2HSKILLNOTFOUND", "EQUIP_ERR_2HSKILLNOTFOUND", "You cannot dual-wield" }; + case EQUIP_ERR_WRONG_BAG_TYPE: return { "EQUIP_ERR_WRONG_BAG_TYPE", "EQUIP_ERR_WRONG_BAG_TYPE", "That item doesn't go in that container." }; + case EQUIP_ERR_WRONG_BAG_TYPE_2: return { "EQUIP_ERR_WRONG_BAG_TYPE_2", "EQUIP_ERR_WRONG_BAG_TYPE_2", "That item doesn't go in that container." }; + case EQUIP_ERR_ITEM_MAX_COUNT: return { "EQUIP_ERR_ITEM_MAX_COUNT", "EQUIP_ERR_ITEM_MAX_COUNT", "You can't carry any more of those items." }; + case EQUIP_ERR_NO_SLOT_AVAILABLE_3: return { "EQUIP_ERR_NO_SLOT_AVAILABLE_3", "EQUIP_ERR_NO_SLOT_AVAILABLE_3", "No equipment slot is available for that item." }; + case EQUIP_ERR_CANT_STACK: return { "EQUIP_ERR_CANT_STACK", "EQUIP_ERR_CANT_STACK", "This item cannot stack." }; + case EQUIP_ERR_NOT_EQUIPPABLE: return { "EQUIP_ERR_NOT_EQUIPPABLE", "EQUIP_ERR_NOT_EQUIPPABLE", "This item cannot be equipped." }; + case EQUIP_ERR_CANT_SWAP: return { "EQUIP_ERR_CANT_SWAP", "EQUIP_ERR_CANT_SWAP", "These items can't be swapped." }; + case EQUIP_ERR_SLOT_EMPTY: return { "EQUIP_ERR_SLOT_EMPTY", "EQUIP_ERR_SLOT_EMPTY", "That slot is empty." }; + case EQUIP_ERR_ITEM_NOT_FOUND: return { "EQUIP_ERR_ITEM_NOT_FOUND", "EQUIP_ERR_ITEM_NOT_FOUND", "The item was not found." }; + case EQUIP_ERR_DROP_BOUND_ITEM: return { "EQUIP_ERR_DROP_BOUND_ITEM", "EQUIP_ERR_DROP_BOUND_ITEM", "You can't drop a soulbound item." }; + case EQUIP_ERR_OUT_OF_RANGE: return { "EQUIP_ERR_OUT_OF_RANGE", "EQUIP_ERR_OUT_OF_RANGE", "Out of range." }; + case EQUIP_ERR_TOO_FEW_TO_SPLIT: return { "EQUIP_ERR_TOO_FEW_TO_SPLIT", "EQUIP_ERR_TOO_FEW_TO_SPLIT", "Tried to split more than number in stack." }; + case EQUIP_ERR_SPLIT_FAILED: return { "EQUIP_ERR_SPLIT_FAILED", "EQUIP_ERR_SPLIT_FAILED", "Couldn't split those items." }; + case EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC: return { "EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC", "EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC", "Missing reagent" }; + case EQUIP_ERR_NOT_ENOUGH_MONEY: return { "EQUIP_ERR_NOT_ENOUGH_MONEY", "EQUIP_ERR_NOT_ENOUGH_MONEY", "You don't have enough money." }; + case EQUIP_ERR_NOT_A_BAG: return { "EQUIP_ERR_NOT_A_BAG", "EQUIP_ERR_NOT_A_BAG", "Not a bag." }; + case EQUIP_ERR_DESTROY_NONEMPTY_BAG: return { "EQUIP_ERR_DESTROY_NONEMPTY_BAG", "EQUIP_ERR_DESTROY_NONEMPTY_BAG", "You can only do that with empty bags." }; + case EQUIP_ERR_NOT_OWNER: return { "EQUIP_ERR_NOT_OWNER", "EQUIP_ERR_NOT_OWNER", "You don't own that item." }; + case EQUIP_ERR_ONLY_ONE_QUIVER: return { "EQUIP_ERR_ONLY_ONE_QUIVER", "EQUIP_ERR_ONLY_ONE_QUIVER", "You can only equip one quiver." }; + case EQUIP_ERR_NO_BANK_SLOT: return { "EQUIP_ERR_NO_BANK_SLOT", "EQUIP_ERR_NO_BANK_SLOT", "You must purchase that bag slot first" }; + case EQUIP_ERR_NO_BANK_HERE: return { "EQUIP_ERR_NO_BANK_HERE", "EQUIP_ERR_NO_BANK_HERE", "You are too far away from a bank." }; + case EQUIP_ERR_ITEM_LOCKED: return { "EQUIP_ERR_ITEM_LOCKED", "EQUIP_ERR_ITEM_LOCKED", "Item is locked." }; + case EQUIP_ERR_GENERIC_STUNNED: return { "EQUIP_ERR_GENERIC_STUNNED", "EQUIP_ERR_GENERIC_STUNNED", "You are stunned" }; + case EQUIP_ERR_PLAYER_DEAD: return { "EQUIP_ERR_PLAYER_DEAD", "EQUIP_ERR_PLAYER_DEAD", "You can't do that when you're dead." }; + case EQUIP_ERR_CLIENT_LOCKED_OUT: return { "EQUIP_ERR_CLIENT_LOCKED_OUT", "EQUIP_ERR_CLIENT_LOCKED_OUT", "You can't do that right now." }; + case EQUIP_ERR_INTERNAL_BAG_ERROR: return { "EQUIP_ERR_INTERNAL_BAG_ERROR", "EQUIP_ERR_INTERNAL_BAG_ERROR", "Internal Bag Error" }; + case EQUIP_ERR_ONLY_ONE_BOLT: return { "EQUIP_ERR_ONLY_ONE_BOLT", "EQUIP_ERR_ONLY_ONE_BOLT", "You can only equip one quiver." }; + case EQUIP_ERR_ONLY_ONE_AMMO: return { "EQUIP_ERR_ONLY_ONE_AMMO", "EQUIP_ERR_ONLY_ONE_AMMO", "You can only equip one ammo pouch." }; + case EQUIP_ERR_CANT_WRAP_STACKABLE: return { "EQUIP_ERR_CANT_WRAP_STACKABLE", "EQUIP_ERR_CANT_WRAP_STACKABLE", "Stackable items can't be wrapped." }; + case EQUIP_ERR_CANT_WRAP_EQUIPPED: return { "EQUIP_ERR_CANT_WRAP_EQUIPPED", "EQUIP_ERR_CANT_WRAP_EQUIPPED", "Equipped items can't be wrapped." }; + case EQUIP_ERR_CANT_WRAP_WRAPPED: return { "EQUIP_ERR_CANT_WRAP_WRAPPED", "EQUIP_ERR_CANT_WRAP_WRAPPED", "Wrapped items can't be wrapped." }; + case EQUIP_ERR_CANT_WRAP_BOUND: return { "EQUIP_ERR_CANT_WRAP_BOUND", "EQUIP_ERR_CANT_WRAP_BOUND", "Bound items can't be wrapped." }; + case EQUIP_ERR_CANT_WRAP_UNIQUE: return { "EQUIP_ERR_CANT_WRAP_UNIQUE", "EQUIP_ERR_CANT_WRAP_UNIQUE", "Unique items can't be wrapped." }; + case EQUIP_ERR_CANT_WRAP_BAGS: return { "EQUIP_ERR_CANT_WRAP_BAGS", "EQUIP_ERR_CANT_WRAP_BAGS", "Bags can't be wrapped." }; + case EQUIP_ERR_LOOT_GONE: return { "EQUIP_ERR_LOOT_GONE", "EQUIP_ERR_LOOT_GONE", "Already looted" }; + case EQUIP_ERR_INV_FULL: return { "EQUIP_ERR_INV_FULL", "EQUIP_ERR_INV_FULL", "Inventory is full." }; + case EQUIP_ERR_BANK_FULL: return { "EQUIP_ERR_BANK_FULL", "EQUIP_ERR_BANK_FULL", "Your bank is full" }; + case EQUIP_ERR_VENDOR_SOLD_OUT: return { "EQUIP_ERR_VENDOR_SOLD_OUT", "EQUIP_ERR_VENDOR_SOLD_OUT", "That item is currently sold out." }; + case EQUIP_ERR_BAG_FULL_2: return { "EQUIP_ERR_BAG_FULL_2", "EQUIP_ERR_BAG_FULL_2", "That bag is full." }; + case EQUIP_ERR_ITEM_NOT_FOUND_2: return { "EQUIP_ERR_ITEM_NOT_FOUND_2", "EQUIP_ERR_ITEM_NOT_FOUND_2", "The item was not found." }; + case EQUIP_ERR_CANT_STACK_2: return { "EQUIP_ERR_CANT_STACK_2", "EQUIP_ERR_CANT_STACK_2", "This item cannot stack." }; + case EQUIP_ERR_BAG_FULL_3: return { "EQUIP_ERR_BAG_FULL_3", "EQUIP_ERR_BAG_FULL_3", "That bag is full." }; + case EQUIP_ERR_VENDOR_SOLD_OUT_2: return { "EQUIP_ERR_VENDOR_SOLD_OUT_2", "EQUIP_ERR_VENDOR_SOLD_OUT_2", "That item is currently sold out." }; + case EQUIP_ERR_OBJECT_IS_BUSY: return { "EQUIP_ERR_OBJECT_IS_BUSY", "EQUIP_ERR_OBJECT_IS_BUSY", "That object is busy." }; + case EQUIP_ERR_CANT_BE_DISENCHANTED: return { "EQUIP_ERR_CANT_BE_DISENCHANTED", "EQUIP_ERR_CANT_BE_DISENCHANTED", "Item cannot be disenchanted" }; + case EQUIP_ERR_NOT_IN_COMBAT: return { "EQUIP_ERR_NOT_IN_COMBAT", "EQUIP_ERR_NOT_IN_COMBAT", "You can't do that while in combat" }; + case EQUIP_ERR_NOT_WHILE_DISARMED: return { "EQUIP_ERR_NOT_WHILE_DISARMED", "EQUIP_ERR_NOT_WHILE_DISARMED", "You can't do that while disarmed" }; + case EQUIP_ERR_BAG_FULL_4: return { "EQUIP_ERR_BAG_FULL_4", "EQUIP_ERR_BAG_FULL_4", "That bag is full." }; + case EQUIP_ERR_CANT_EQUIP_RANK: return { "EQUIP_ERR_CANT_EQUIP_RANK", "EQUIP_ERR_CANT_EQUIP_RANK", "You don't have the required rank for that item" }; + case EQUIP_ERR_CANT_EQUIP_REPUTATION: return { "EQUIP_ERR_CANT_EQUIP_REPUTATION", "EQUIP_ERR_CANT_EQUIP_REPUTATION", "You don't have the required reputation for that item" }; + case EQUIP_ERR_TOO_MANY_SPECIAL_BAGS: return { "EQUIP_ERR_TOO_MANY_SPECIAL_BAGS", "EQUIP_ERR_TOO_MANY_SPECIAL_BAGS", "You cannot equip another bag of that type" }; + case EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW: return { "EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW", "EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW", "You can't loot that item now." }; + case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE: return { "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE", "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE", "You cannot equip more than one of those." }; + case EQUIP_ERR_VENDOR_MISSING_TURNINS: return { "EQUIP_ERR_VENDOR_MISSING_TURNINS", "EQUIP_ERR_VENDOR_MISSING_TURNINS", "You do not have the required items for that purchase" }; + case EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS: return { "EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS", "EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS", "You don't have enough honor points" }; + case EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS: return { "EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS", "EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS", "You don't have enough arena points" }; + case EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED: return { "EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED", "EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED", "You have the maximum number of those gems in your inventory or socketed into items." }; + case EQUIP_ERR_MAIL_BOUND_ITEM: return { "EQUIP_ERR_MAIL_BOUND_ITEM", "EQUIP_ERR_MAIL_BOUND_ITEM", "You can't mail soulbound items." }; + case EQUIP_ERR_INTERNAL_BAG_ERROR_2: return { "EQUIP_ERR_INTERNAL_BAG_ERROR_2", "EQUIP_ERR_INTERNAL_BAG_ERROR_2", "Internal Bag Error" }; + case EQUIP_ERR_BAG_FULL_5: return { "EQUIP_ERR_BAG_FULL_5", "EQUIP_ERR_BAG_FULL_5", "That bag is full." }; + case EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED: return { "EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "You have the maximum number of those gems socketed into equipped items." }; + case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED: return { "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "You cannot socket more than one of those gems into a single item." }; + case EQUIP_ERR_TOO_MUCH_GOLD: return { "EQUIP_ERR_TOO_MUCH_GOLD", "EQUIP_ERR_TOO_MUCH_GOLD", "At gold limit" }; + case EQUIP_ERR_NOT_DURING_ARENA_MATCH: return { "EQUIP_ERR_NOT_DURING_ARENA_MATCH", "EQUIP_ERR_NOT_DURING_ARENA_MATCH", "You can't do that while in an arena match" }; + case EQUIP_ERR_TRADE_BOUND_ITEM: return { "EQUIP_ERR_TRADE_BOUND_ITEM", "EQUIP_ERR_TRADE_BOUND_ITEM", "You can't trade a soulbound item." }; + case EQUIP_ERR_CANT_EQUIP_RATING: return { "EQUIP_ERR_CANT_EQUIP_RATING", "EQUIP_ERR_CANT_EQUIP_RATING", "You don't have the personal, team, or battleground rating required to buy that item" }; case EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM: return { "EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM", "EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM", "" }; - case EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS: return { "EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS", "EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS", "" }; - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED", "" }; - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED", "" }; - case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED: return { "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "" }; - case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW: return { "EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW", "EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW", "" }; - case EQUIP_ERR_CANT_EQUIP_NEED_TALENT: return { "EQUIP_ERR_CANT_EQUIP_NEED_TALENT", "EQUIP_ERR_CANT_EQUIP_NEED_TALENT", "" }; - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED", "" }; + case EQUIP_ERR_NOT_SAME_ACCOUNT: return { "EQUIP_ERR_NOT_SAME_ACCOUNT", "EQUIP_ERR_NOT_SAME_ACCOUNT", "Account-bound items can only be given to your own characters." }; + case EQUIP_ERR_NONE: return { "EQUIP_ERR_NONE", "EQUIP_ERR_NONE", "" }; + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS", "You can only carry %d %s" }; + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS", "You can only equip %d |4item:items in the %s category" }; + case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED: return { "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "Your level is too high to use that item" }; + case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW: return { "EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW", "EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW", "You must reach level %d to purchase that item." }; + case EQUIP_ERR_CANT_EQUIP_NEED_TALENT: return { "EQUIP_ERR_CANT_EQUIP_NEED_TALENT", "EQUIP_ERR_CANT_EQUIP_NEED_TALENT", "You do not have the required talent to equip that." }; + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS", "You can only equip %d |4item:items in the %s category" }; + case EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP: return { "EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP", "EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP", "Cannot equip item in this form" }; + case EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL: return { "EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL", "EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL", "Your inventory is full. Your satchel has been delivered to your mailbox." }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils::Count() { return 88; } +TC_API_EXPORT size_t EnumUtils::Count() { return 92; } template <> TC_API_EXPORT InventoryResult EnumUtils::FromIndex(size_t index) @@ -134,91 +138,95 @@ TC_API_EXPORT InventoryResult EnumUtils::FromIndex(size_t index case 0: return EQUIP_ERR_OK; case 1: return EQUIP_ERR_CANT_EQUIP_LEVEL_I; case 2: return EQUIP_ERR_CANT_EQUIP_SKILL; - case 3: return EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT; + case 3: return EQUIP_ERR_WRONG_SLOT; case 4: return EQUIP_ERR_BAG_FULL; - case 5: return EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG; - case 6: return EQUIP_ERR_CANT_TRADE_EQUIP_BAGS; - case 7: return EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE; - case 8: return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; - case 9: return EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE; - case 10: return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; - case 11: return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2; - case 12: return EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2; - case 13: return EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED; - case 14: return EQUIP_ERR_CANT_DUAL_WIELD; - case 15: return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; - case 16: return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2; - case 17: return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; - case 18: return EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3; - case 19: return EQUIP_ERR_ITEM_CANT_STACK; - case 20: return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; - case 21: return EQUIP_ERR_ITEMS_CANT_BE_SWAPPED; - case 22: return EQUIP_ERR_SLOT_IS_EMPTY; + case 5: return EQUIP_ERR_BAG_IN_BAG; + case 6: return EQUIP_ERR_TRADE_EQUIPPED_BAG; + case 7: return EQUIP_ERR_AMMO_ONLY; + case 8: return EQUIP_ERR_PROFICIENCY_NEEDED; + case 9: return EQUIP_ERR_NO_SLOT_AVAILABLE; + case 10: return EQUIP_ERR_CANT_EQUIP_EVER; + case 11: return EQUIP_ERR_CANT_EQUIP_EVER_2; + case 12: return EQUIP_ERR_NO_SLOT_AVAILABLE_2; + case 13: return EQUIP_ERR_2HANDED_EQUIPPED; + case 14: return EQUIP_ERR_2HSKILLNOTFOUND; + case 15: return EQUIP_ERR_WRONG_BAG_TYPE; + case 16: return EQUIP_ERR_WRONG_BAG_TYPE_2; + case 17: return EQUIP_ERR_ITEM_MAX_COUNT; + case 18: return EQUIP_ERR_NO_SLOT_AVAILABLE_3; + case 19: return EQUIP_ERR_CANT_STACK; + case 20: return EQUIP_ERR_NOT_EQUIPPABLE; + case 21: return EQUIP_ERR_CANT_SWAP; + case 22: return EQUIP_ERR_SLOT_EMPTY; case 23: return EQUIP_ERR_ITEM_NOT_FOUND; - case 24: return EQUIP_ERR_CANT_DROP_SOULBOUND; + case 24: return EQUIP_ERR_DROP_BOUND_ITEM; case 25: return EQUIP_ERR_OUT_OF_RANGE; - case 26: return EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT; - case 27: return EQUIP_ERR_COULDNT_SPLIT_ITEMS; - case 28: return EQUIP_ERR_MISSING_REAGENT; + case 26: return EQUIP_ERR_TOO_FEW_TO_SPLIT; + case 27: return EQUIP_ERR_SPLIT_FAILED; + case 28: return EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC; case 29: return EQUIP_ERR_NOT_ENOUGH_MONEY; case 30: return EQUIP_ERR_NOT_A_BAG; - case 31: return EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS; - case 32: return EQUIP_ERR_DONT_OWN_THAT_ITEM; - case 33: return EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER; - case 34: return EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT; - case 35: return EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK; + case 31: return EQUIP_ERR_DESTROY_NONEMPTY_BAG; + case 32: return EQUIP_ERR_NOT_OWNER; + case 33: return EQUIP_ERR_ONLY_ONE_QUIVER; + case 34: return EQUIP_ERR_NO_BANK_SLOT; + case 35: return EQUIP_ERR_NO_BANK_HERE; case 36: return EQUIP_ERR_ITEM_LOCKED; - case 37: return EQUIP_ERR_YOU_ARE_STUNNED; - case 38: return EQUIP_ERR_YOU_ARE_DEAD; - case 39: return EQUIP_ERR_CANT_DO_RIGHT_NOW; - case 40: return EQUIP_ERR_INT_BAG_ERROR; - case 41: return EQUIP_ERR_CAN_EQUIP_ONLY1_BOLT; - case 42: return EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH; - case 43: return EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED; - case 44: return EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED; - case 45: return EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED; - case 46: return EQUIP_ERR_BOUND_CANT_BE_WRAPPED; - case 47: return EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED; - case 48: return EQUIP_ERR_BAGS_CANT_BE_WRAPPED; - case 49: return EQUIP_ERR_ALREADY_LOOTED; - case 50: return EQUIP_ERR_INVENTORY_FULL; + case 37: return EQUIP_ERR_GENERIC_STUNNED; + case 38: return EQUIP_ERR_PLAYER_DEAD; + case 39: return EQUIP_ERR_CLIENT_LOCKED_OUT; + case 40: return EQUIP_ERR_INTERNAL_BAG_ERROR; + case 41: return EQUIP_ERR_ONLY_ONE_BOLT; + case 42: return EQUIP_ERR_ONLY_ONE_AMMO; + case 43: return EQUIP_ERR_CANT_WRAP_STACKABLE; + case 44: return EQUIP_ERR_CANT_WRAP_EQUIPPED; + case 45: return EQUIP_ERR_CANT_WRAP_WRAPPED; + case 46: return EQUIP_ERR_CANT_WRAP_BOUND; + case 47: return EQUIP_ERR_CANT_WRAP_UNIQUE; + case 48: return EQUIP_ERR_CANT_WRAP_BAGS; + case 49: return EQUIP_ERR_LOOT_GONE; + case 50: return EQUIP_ERR_INV_FULL; case 51: return EQUIP_ERR_BANK_FULL; - case 52: return EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT; - case 53: return EQUIP_ERR_BAG_FULL3; - case 54: return EQUIP_ERR_ITEM_NOT_FOUND2; - case 55: return EQUIP_ERR_ITEM_CANT_STACK2; - case 56: return EQUIP_ERR_BAG_FULL4; - case 57: return EQUIP_ERR_ITEM_SOLD_OUT; + case 52: return EQUIP_ERR_VENDOR_SOLD_OUT; + case 53: return EQUIP_ERR_BAG_FULL_2; + case 54: return EQUIP_ERR_ITEM_NOT_FOUND_2; + case 55: return EQUIP_ERR_CANT_STACK_2; + case 56: return EQUIP_ERR_BAG_FULL_3; + case 57: return EQUIP_ERR_VENDOR_SOLD_OUT_2; case 58: return EQUIP_ERR_OBJECT_IS_BUSY; - case 59: return EQUIP_ERR_NONE; + case 59: return EQUIP_ERR_CANT_BE_DISENCHANTED; case 60: return EQUIP_ERR_NOT_IN_COMBAT; case 61: return EQUIP_ERR_NOT_WHILE_DISARMED; - case 62: return EQUIP_ERR_BAG_FULL6; + case 62: return EQUIP_ERR_BAG_FULL_4; case 63: return EQUIP_ERR_CANT_EQUIP_RANK; case 64: return EQUIP_ERR_CANT_EQUIP_REPUTATION; case 65: return EQUIP_ERR_TOO_MANY_SPECIAL_BAGS; case 66: return EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW; - case 67: return EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE; + case 67: return EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE; case 68: return EQUIP_ERR_VENDOR_MISSING_TURNINS; case 69: return EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS; case 70: return EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS; case 71: return EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED; case 72: return EQUIP_ERR_MAIL_BOUND_ITEM; - case 73: return EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING; - case 74: return EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED; - case 75: return EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED; - case 76: return EQUIP_ERR_TOO_MUCH_GOLD; - case 77: return EQUIP_ERR_NOT_DURING_ARENA_MATCH; - case 78: return EQUIP_ERR_CANNOT_TRADE_THAT; - case 79: return EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW; - case 80: return EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM; - case 81: return EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS; - case 82: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED; - case 83: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED; - case 84: return EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED; - case 85: return EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW; - case 86: return EQUIP_ERR_CANT_EQUIP_NEED_TALENT; - case 87: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED; + case 73: return EQUIP_ERR_INTERNAL_BAG_ERROR_2; + case 74: return EQUIP_ERR_BAG_FULL_5; + case 75: return EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED; + case 76: return EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED; + case 77: return EQUIP_ERR_TOO_MUCH_GOLD; + case 78: return EQUIP_ERR_NOT_DURING_ARENA_MATCH; + case 79: return EQUIP_ERR_TRADE_BOUND_ITEM; + case 80: return EQUIP_ERR_CANT_EQUIP_RATING; + case 81: return EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM; + case 82: return EQUIP_ERR_NOT_SAME_ACCOUNT; + case 83: return EQUIP_ERR_NONE; + case 84: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS; + case 85: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS; + case 86: return EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED; + case 87: return EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW; + case 88: return EQUIP_ERR_CANT_EQUIP_NEED_TALENT; + case 89: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS; + case 90: return EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP; + case 91: return EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL; default: throw std::out_of_range("index"); } } @@ -231,91 +239,95 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(InventoryResult value) case EQUIP_ERR_OK: return 0; case EQUIP_ERR_CANT_EQUIP_LEVEL_I: return 1; case EQUIP_ERR_CANT_EQUIP_SKILL: return 2; - case EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT: return 3; + case EQUIP_ERR_WRONG_SLOT: return 3; case EQUIP_ERR_BAG_FULL: return 4; - case EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG: return 5; - case EQUIP_ERR_CANT_TRADE_EQUIP_BAGS: return 6; - case EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE: return 7; - case EQUIP_ERR_NO_REQUIRED_PROFICIENCY: return 8; - case EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE: return 9; - case EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM: return 10; - case EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2: return 11; - case EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2: return 12; - case EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED: return 13; - case EQUIP_ERR_CANT_DUAL_WIELD: return 14; - case EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG: return 15; - case EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG2: return 16; - case EQUIP_ERR_CANT_CARRY_MORE_OF_THIS: return 17; - case EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3: return 18; - case EQUIP_ERR_ITEM_CANT_STACK: return 19; - case EQUIP_ERR_ITEM_CANT_BE_EQUIPPED: return 20; - case EQUIP_ERR_ITEMS_CANT_BE_SWAPPED: return 21; - case EQUIP_ERR_SLOT_IS_EMPTY: return 22; + case EQUIP_ERR_BAG_IN_BAG: return 5; + case EQUIP_ERR_TRADE_EQUIPPED_BAG: return 6; + case EQUIP_ERR_AMMO_ONLY: return 7; + case EQUIP_ERR_PROFICIENCY_NEEDED: return 8; + case EQUIP_ERR_NO_SLOT_AVAILABLE: return 9; + case EQUIP_ERR_CANT_EQUIP_EVER: return 10; + case EQUIP_ERR_CANT_EQUIP_EVER_2: return 11; + case EQUIP_ERR_NO_SLOT_AVAILABLE_2: return 12; + case EQUIP_ERR_2HANDED_EQUIPPED: return 13; + case EQUIP_ERR_2HSKILLNOTFOUND: return 14; + case EQUIP_ERR_WRONG_BAG_TYPE: return 15; + case EQUIP_ERR_WRONG_BAG_TYPE_2: return 16; + case EQUIP_ERR_ITEM_MAX_COUNT: return 17; + case EQUIP_ERR_NO_SLOT_AVAILABLE_3: return 18; + case EQUIP_ERR_CANT_STACK: return 19; + case EQUIP_ERR_NOT_EQUIPPABLE: return 20; + case EQUIP_ERR_CANT_SWAP: return 21; + case EQUIP_ERR_SLOT_EMPTY: return 22; case EQUIP_ERR_ITEM_NOT_FOUND: return 23; - case EQUIP_ERR_CANT_DROP_SOULBOUND: return 24; + case EQUIP_ERR_DROP_BOUND_ITEM: return 24; case EQUIP_ERR_OUT_OF_RANGE: return 25; - case EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT: return 26; - case EQUIP_ERR_COULDNT_SPLIT_ITEMS: return 27; - case EQUIP_ERR_MISSING_REAGENT: return 28; + case EQUIP_ERR_TOO_FEW_TO_SPLIT: return 26; + case EQUIP_ERR_SPLIT_FAILED: return 27; + case EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC: return 28; case EQUIP_ERR_NOT_ENOUGH_MONEY: return 29; case EQUIP_ERR_NOT_A_BAG: return 30; - case EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS: return 31; - case EQUIP_ERR_DONT_OWN_THAT_ITEM: return 32; - case EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER: return 33; - case EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT: return 34; - case EQUIP_ERR_TOO_FAR_AWAY_FROM_BANK: return 35; + case EQUIP_ERR_DESTROY_NONEMPTY_BAG: return 31; + case EQUIP_ERR_NOT_OWNER: return 32; + case EQUIP_ERR_ONLY_ONE_QUIVER: return 33; + case EQUIP_ERR_NO_BANK_SLOT: return 34; + case EQUIP_ERR_NO_BANK_HERE: return 35; case EQUIP_ERR_ITEM_LOCKED: return 36; - case EQUIP_ERR_YOU_ARE_STUNNED: return 37; - case EQUIP_ERR_YOU_ARE_DEAD: return 38; - case EQUIP_ERR_CANT_DO_RIGHT_NOW: return 39; - case EQUIP_ERR_INT_BAG_ERROR: return 40; - case EQUIP_ERR_CAN_EQUIP_ONLY1_BOLT: return 41; - case EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH: return 42; - case EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED: return 43; - case EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED: return 44; - case EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED: return 45; - case EQUIP_ERR_BOUND_CANT_BE_WRAPPED: return 46; - case EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED: return 47; - case EQUIP_ERR_BAGS_CANT_BE_WRAPPED: return 48; - case EQUIP_ERR_ALREADY_LOOTED: return 49; - case EQUIP_ERR_INVENTORY_FULL: return 50; + case EQUIP_ERR_GENERIC_STUNNED: return 37; + case EQUIP_ERR_PLAYER_DEAD: return 38; + case EQUIP_ERR_CLIENT_LOCKED_OUT: return 39; + case EQUIP_ERR_INTERNAL_BAG_ERROR: return 40; + case EQUIP_ERR_ONLY_ONE_BOLT: return 41; + case EQUIP_ERR_ONLY_ONE_AMMO: return 42; + case EQUIP_ERR_CANT_WRAP_STACKABLE: return 43; + case EQUIP_ERR_CANT_WRAP_EQUIPPED: return 44; + case EQUIP_ERR_CANT_WRAP_WRAPPED: return 45; + case EQUIP_ERR_CANT_WRAP_BOUND: return 46; + case EQUIP_ERR_CANT_WRAP_UNIQUE: return 47; + case EQUIP_ERR_CANT_WRAP_BAGS: return 48; + case EQUIP_ERR_LOOT_GONE: return 49; + case EQUIP_ERR_INV_FULL: return 50; case EQUIP_ERR_BANK_FULL: return 51; - case EQUIP_ERR_ITEM_IS_CURRENTLY_SOLD_OUT: return 52; - case EQUIP_ERR_BAG_FULL3: return 53; - case EQUIP_ERR_ITEM_NOT_FOUND2: return 54; - case EQUIP_ERR_ITEM_CANT_STACK2: return 55; - case EQUIP_ERR_BAG_FULL4: return 56; - case EQUIP_ERR_ITEM_SOLD_OUT: return 57; + case EQUIP_ERR_VENDOR_SOLD_OUT: return 52; + case EQUIP_ERR_BAG_FULL_2: return 53; + case EQUIP_ERR_ITEM_NOT_FOUND_2: return 54; + case EQUIP_ERR_CANT_STACK_2: return 55; + case EQUIP_ERR_BAG_FULL_3: return 56; + case EQUIP_ERR_VENDOR_SOLD_OUT_2: return 57; case EQUIP_ERR_OBJECT_IS_BUSY: return 58; - case EQUIP_ERR_NONE: return 59; + case EQUIP_ERR_CANT_BE_DISENCHANTED: return 59; case EQUIP_ERR_NOT_IN_COMBAT: return 60; case EQUIP_ERR_NOT_WHILE_DISARMED: return 61; - case EQUIP_ERR_BAG_FULL6: return 62; + case EQUIP_ERR_BAG_FULL_4: return 62; case EQUIP_ERR_CANT_EQUIP_RANK: return 63; case EQUIP_ERR_CANT_EQUIP_REPUTATION: return 64; case EQUIP_ERR_TOO_MANY_SPECIAL_BAGS: return 65; case EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW: return 66; - case EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE: return 67; + case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE: return 67; case EQUIP_ERR_VENDOR_MISSING_TURNINS: return 68; case EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS: return 69; case EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS: return 70; case EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED: return 71; case EQUIP_ERR_MAIL_BOUND_ITEM: return 72; - case EQUIP_ERR_NO_SPLIT_WHILE_PROSPECTING: return 73; - case EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED: return 74; - case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED: return 75; - case EQUIP_ERR_TOO_MUCH_GOLD: return 76; - case EQUIP_ERR_NOT_DURING_ARENA_MATCH: return 77; - case EQUIP_ERR_CANNOT_TRADE_THAT: return 78; - case EQUIP_ERR_PERSONAL_ARENA_RATING_TOO_LOW: return 79; - case EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM: return 80; - case EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS: return 81; - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED: return 82; - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED: return 83; - case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED: return 84; - case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW: return 85; - case EQUIP_ERR_CANT_EQUIP_NEED_TALENT: return 86; - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED: return 87; + case EQUIP_ERR_INTERNAL_BAG_ERROR_2: return 73; + case EQUIP_ERR_BAG_FULL_5: return 74; + case EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED: return 75; + case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED: return 76; + case EQUIP_ERR_TOO_MUCH_GOLD: return 77; + case EQUIP_ERR_NOT_DURING_ARENA_MATCH: return 78; + case EQUIP_ERR_TRADE_BOUND_ITEM: return 79; + case EQUIP_ERR_CANT_EQUIP_RATING: return 80; + case EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM: return 81; + case EQUIP_ERR_NOT_SAME_ACCOUNT: return 82; + case EQUIP_ERR_NONE: return 83; + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS: return 84; + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS: return 85; + case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED: return 86; + case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW: return 87; + case EQUIP_ERR_CANT_EQUIP_NEED_TALENT: return 88; + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS: return 89; + case EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP: return 90; + case EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL: return 91; default: throw std::out_of_range("value"); } } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 059fb6ebcec..060f3e25e61 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -233,19 +233,6 @@ void Object::DestroyForPlayer(Player* target, bool onDeath) const { ASSERT(target); - if (IsUnit()) - { - if (Battleground* bg = target->GetBattleground()) - { - if (bg->isArena()) - { - WorldPacket data(SMSG_ARENA_UNIT_DESTROYED, 8); - data << uint64(GetGUID()); - target->SendDirectMessage(&data); - } - } - } - WorldPacket data(SMSG_DESTROY_OBJECT, 8 + 1); data << uint64(GetGUID()); //! If the following bool is true, the client will call "void CGUnit_C::OnDeath()" for this object. @@ -505,15 +492,7 @@ void Object::ClearUpdateMask(bool remove) void Object::BuildFieldsUpdate(Player* player, UpdateDataMapType& data_map) const { - UpdateDataMapType::iterator iter = data_map.find(player); - - if (iter == data_map.end()) - { - std::pair p = data_map.emplace(player, UpdateData()); - ASSERT(p.second); - iter = p.first; - } - + UpdateDataMapType::iterator iter = data_map.try_emplace(player).first; BuildValuesUpdateBlockForPlayer(&iter->second, iter->first); } @@ -1056,7 +1035,7 @@ void WorldObject::_Create(ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 void WorldObject::UpdatePositionData() { PositionFullTerrainStatus data; - GetMap()->GetFullTerrainStatusForPosition(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ(), data, MAP_ALL_LIQUIDS, GetCollisionHeight()); + GetMap()->GetFullTerrainStatusForPosition(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ(), data, {}, GetCollisionHeight()); ProcessPositionDataChanged(data); } @@ -1542,6 +1521,22 @@ float WorldObject::GetSightRange(WorldObject const* target) const return 0.0f; } +bool WorldObject::CheckPrivateObjectOwnerVisibility(WorldObject const* seer) const +{ + if (!IsPrivateObject()) + return true; + + // Owner of this private object + if (_privateObjectOwner == seer->GetGUID()) + return true; + + // Another private object of the same owner + if (_privateObjectOwner == seer->GetPrivateObjectOwner()) + return true; + + return false; +} + bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool implicitDetect, bool distanceCheck, bool checkAlert) const { if (this == obj) @@ -1553,6 +1548,9 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool implicitDetect, bo if (obj->IsAlwaysVisibleFor(this) || CanAlwaysSee(obj)) return true; + if (!obj->CheckPrivateObjectOwnerVisibility(this)) + return false; + bool corpseVisibility = false; if (distanceCheck) { @@ -1582,15 +1580,8 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool implicitDetect, bo WorldObject const* viewpoint = this; if (Player const* player = ToPlayer()) - { viewpoint = player->GetViewpoint(); - if (Creature const* creature = obj->ToCreature()) - if (TempSummon const* tempSummon = creature->ToTempSummon()) - if (tempSummon->IsVisibleBySummonerOnly() && GetGUID() != tempSummon->GetSummonerGUID()) - return false; - } - if (!viewpoint) viewpoint = this; @@ -1858,7 +1849,7 @@ void WorldObject::AddObjectToRemoveList() map->AddObjectToRemoveList(this); } -TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties /*= nullptr*/, uint32 duration /*= 0*/, WorldObject* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/, bool visibleBySummonerOnly /*= false*/) +TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties /*= nullptr*/, uint32 duration /*= 0*/, WorldObject* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/, ObjectGuid privateObjectOwner /*= ObjectGuid::Empty*/) { uint32 mask = UNIT_MASK_SUMMON; if (properties) @@ -1946,7 +1937,7 @@ TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropert summon->InitStats(duration); - summon->SetVisibleBySummonerOnly(visibleBySummonerOnly); + summon->SetPrivateObjectOwner(privateObjectOwner); AddToMap(summon->ToCreature()); summon->InitSummon(); @@ -1998,11 +1989,11 @@ void WorldObject::ClearZoneScript() m_zoneScript = nullptr; } -TempSummon* WorldObject::SummonCreature(uint32 entry, Position const& pos, TempSummonType despawnType /*= TEMPSUMMON_MANUAL_DESPAWN*/, Milliseconds despawnTime /*= 0s*/, uint32 /*vehId = 0*/, uint32 spellId /*= 0*/, bool visibleBySummonerOnly /*= false*/) +TempSummon* WorldObject::SummonCreature(uint32 entry, Position const& pos, TempSummonType despawnType /*= TEMPSUMMON_MANUAL_DESPAWN*/, Milliseconds despawnTime /*= 0s*/, uint32 vehId /*= 0*/, uint32 spellId /*= 0*/, ObjectGuid privateObjectOwner /*= ObjectGuid::Empty*/) { if (Map* map = FindMap()) { - if (TempSummon* summon = map->SummonCreature(entry, pos, nullptr, despawnTime.count(), this, spellId, 0, visibleBySummonerOnly)) + if (TempSummon* summon = map->SummonCreature(entry, pos, nullptr, despawnTime.count(), this, spellId, vehId, privateObjectOwner)) { summon->SetTempSummonType(despawnType); return summon; @@ -2012,13 +2003,13 @@ TempSummon* WorldObject::SummonCreature(uint32 entry, Position const& pos, TempS return nullptr; } -TempSummon* WorldObject::SummonCreature(uint32 id, float x, float y, float z, float o /*= 0*/, TempSummonType despawnType /*= TEMPSUMMON_MANUAL_DESPAWN*/, Milliseconds despawnTime /*= 0s*/, bool visibleBySummonerOnly /*= false*/) +TempSummon* WorldObject::SummonCreature(uint32 id, float x, float y, float z, float o /*= 0*/, TempSummonType despawnType /*= TEMPSUMMON_MANUAL_DESPAWN*/, Milliseconds despawnTime /*= 0s*/, ObjectGuid privateObjectOwner /*= ObjectGuid::Empty*/) { if (!x && !y && !z) GetClosePoint(x, y, z, GetCombatReach()); if (!o) o = GetOrientation(); - return SummonCreature(id, { x,y,z,o }, despawnType, despawnTime, 0, 0, visibleBySummonerOnly); + return SummonCreature(id, { x,y,z,o }, despawnType, despawnTime, 0, 0, privateObjectOwner); } GameObject* WorldObject::SummonGameObject(uint32 entry, Position const& pos, QuaternionData const& rot, Seconds respawnTime, GOSummonType summonType) @@ -2114,6 +2105,19 @@ Creature* WorldObject::FindNearestCreature(uint32 entry, float range, bool alive return creature; } +Creature* WorldObject::FindNearestCreatureWithOptions(float range, FindCreatureOptions const& options) const +{ + Creature* creature = nullptr; + Trinity::NearestCheckCustomizer checkCustomizer(*this, range); + Trinity::CreatureWithOptionsInObjectRangeCheck checker(*this, checkCustomizer, options); + Trinity::CreatureLastSearcher searcher(this, creature, checker); + if (options.IgnorePhases) + searcher.i_phaseMask = PHASEMASK_ANYWHERE; + + Cell::VisitAllObjects(this, searcher, range); + return creature; +} + GameObject* WorldObject::FindNearestGameObject(uint32 entry, float range, bool spawnedOnly) const { GameObject* go = nullptr; @@ -2123,6 +2127,19 @@ GameObject* WorldObject::FindNearestGameObject(uint32 entry, float range, bool s return go; } +GameObject* WorldObject::FindNearestGameObjectWithOptions(float range, FindGameObjectOptions const& options) const +{ + GameObject* go = nullptr; + Trinity::NearestCheckCustomizer checkCustomizer(*this, range); + Trinity::GameObjectWithOptionsInObjectRangeCheck checker(*this, checkCustomizer, options); + Trinity::GameObjectLastSearcher searcher(this, go, checker); + if (options.IgnorePhases) + searcher.i_phaseMask = PHASEMASK_ANYWHERE; + + Cell::VisitGridObjects(this, searcher, range); + return go; +} + GameObject* WorldObject::FindNearestUnspawnedGameObject(uint32 entry, float range) const { GameObject* go = nullptr; @@ -3119,6 +3136,18 @@ void WorldObject::GetGameObjectListWithEntryInGrid(Container& gameObjectContaine Cell::VisitGridObjects(this, searcher, maxSearchRange); } +template +void WorldObject::GetGameObjectListWithOptionsInGrid(Container& gameObjectContainer, float maxSearchRange, FindGameObjectOptions const& options) const +{ + Trinity::InRangeCheckCustomizer checkCustomizer(*this, maxSearchRange); + Trinity::GameObjectWithOptionsInObjectRangeCheck check(*this, checkCustomizer, options); + Trinity::GameObjectListSearcher searcher(this, gameObjectContainer, check); + if (options.IgnorePhases) + searcher.i_phaseMask = PHASEMASK_ANYWHERE; + + Cell::VisitGridObjects(this, searcher, maxSearchRange); +} + template void WorldObject::GetCreatureListWithEntryInGrid(Container& creatureContainer, uint32 entry, float maxSearchRange /*= 250.0f*/) const { @@ -3127,6 +3156,18 @@ void WorldObject::GetCreatureListWithEntryInGrid(Container& creatureContainer, u Cell::VisitGridObjects(this, searcher, maxSearchRange); } +template +void WorldObject::GetCreatureListWithOptionsInGrid(Container& creatureContainer, float maxSearchRange, FindCreatureOptions const& options) const +{ + Trinity::InRangeCheckCustomizer checkCustomizer(*this, maxSearchRange); + Trinity::CreatureWithOptionsInObjectRangeCheck check(*this, checkCustomizer, options); + Trinity::CreatureListSearcher searcher(this, creatureContainer, check); + if (options.IgnorePhases) + searcher.i_phaseMask = PHASEMASK_ANYWHERE; + + Cell::VisitGridObjects(this, searcher, maxSearchRange); +} + template void WorldObject::GetPlayerListInGrid(Container& playerContainer, float maxSearchRange, bool alive /*= true*/) const { @@ -3580,10 +3621,18 @@ template TC_GAME_API void WorldObject::GetGameObjectListWithEntryInGrid(std::lis template TC_GAME_API void WorldObject::GetGameObjectListWithEntryInGrid(std::deque&, uint32, float) const; template TC_GAME_API void WorldObject::GetGameObjectListWithEntryInGrid(std::vector&, uint32, float) const; +template TC_GAME_API void WorldObject::GetGameObjectListWithOptionsInGrid(std::list&, float, FindGameObjectOptions const&) const; +template TC_GAME_API void WorldObject::GetGameObjectListWithOptionsInGrid(std::deque&, float, FindGameObjectOptions const&) const; +template TC_GAME_API void WorldObject::GetGameObjectListWithOptionsInGrid(std::vector&, float, FindGameObjectOptions const&) const; + template TC_GAME_API void WorldObject::GetCreatureListWithEntryInGrid(std::list&, uint32, float) const; template TC_GAME_API void WorldObject::GetCreatureListWithEntryInGrid(std::deque&, uint32, float) const; template TC_GAME_API void WorldObject::GetCreatureListWithEntryInGrid(std::vector&, uint32, float) const; +template TC_GAME_API void WorldObject::GetCreatureListWithOptionsInGrid(std::list&, float, FindCreatureOptions const&) const; +template TC_GAME_API void WorldObject::GetCreatureListWithOptionsInGrid(std::deque&,float, FindCreatureOptions const&) const; +template TC_GAME_API void WorldObject::GetCreatureListWithOptionsInGrid(std::vector&, float, FindCreatureOptions const&) const; + template TC_GAME_API void WorldObject::GetPlayerListInGrid(std::list&, float, bool) const; template TC_GAME_API void WorldObject::GetPlayerListInGrid(std::deque&, float, bool) const; template TC_GAME_API void WorldObject::GetPlayerListInGrid(std::vector&, float, bool) const; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 9dca2efa026..f9587e64f4d 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -21,6 +21,7 @@ #include "Common.h" #include "Duration.h" #include "EventProcessor.h" +#include "MapDefines.h" #include "ModelIgnoreFlags.h" #include "MovementInfo.h" #include "ObjectDefines.h" @@ -57,9 +58,7 @@ class WorldObject; class WorldPacket; class ZoneScript; struct FactionTemplateEntry; -struct PositionFullTerrainStatus; struct QuaternionData; -enum ZLiquidStatus : uint32; typedef std::unordered_map UpdateDataMapType; @@ -296,6 +295,43 @@ class FlaggedValuesArray32 T_FLAGS m_flags; }; +struct FindCreatureOptions +{ + Optional CreatureId; + Optional StringId; + + Optional IsAlive; + Optional IsInCombat; + Optional IsSummon; + + bool IgnorePhases = false; + bool IgnoreNotOwnedPrivateObjects = true; + bool IgnorePrivateObjects = false; + + Optional AuraSpellId; + Optional OwnerGuid; + Optional CharmerGuid; + Optional CreatorGuid; + Optional PrivateObjectOwnerGuid; +}; + +struct FindGameObjectOptions +{ + Optional GameObjectId; + Optional StringId; + + Optional IsSummon; + Optional IsSpawned; + + bool IgnorePhases = false; + bool IgnoreNotOwnedPrivateObjects = true; + bool IgnorePrivateObjects = false; + + Optional OwnerGuid; + Optional PrivateObjectOwnerGuid; + Optional GameObjectType; +}; + class TC_GAME_API WorldObject : public Object, public WorldLocation { protected: @@ -418,15 +454,17 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void ClearZoneScript(); ZoneScript* GetZoneScript() const { return m_zoneScript; } - TempSummon* SummonCreature(uint32 entry, Position const& pos, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime = 0s, uint32 vehId = 0, uint32 spellId = 0, bool visibleBySummonerOnly = false); - TempSummon* SummonCreature(uint32 entry, float x, float y, float z, float o = 0, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime = 0s, bool visibleBySummonerOnly = false); + TempSummon* SummonCreature(uint32 entry, Position const& pos, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime = 0s, uint32 vehId = 0, uint32 spellId = 0, ObjectGuid privateObjectOwner = ObjectGuid::Empty); + TempSummon* SummonCreature(uint32 entry, float x, float y, float z, float o = 0, TempSummonType despawnType = TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime = 0s, ObjectGuid privateObjectOwner = ObjectGuid::Empty); GameObject* SummonGameObject(uint32 entry, Position const& pos, QuaternionData const& rot, Seconds respawnTime, GOSummonType summonType = GO_SUMMON_TIMED_OR_CORPSE_DESPAWN); GameObject* SummonGameObject(uint32 entry, float x, float y, float z, float ang, QuaternionData const& rot, Seconds respawnTime, GOSummonType summonType = GO_SUMMON_TIMED_OR_CORPSE_DESPAWN); Creature* SummonTrigger(float x, float y, float z, float ang, Milliseconds despawnTime, CreatureAI* (*GetAI)(Creature*) = nullptr); void SummonCreatureGroup(uint8 group, std::list* list = nullptr); Creature* FindNearestCreature(uint32 entry, float range, bool alive = true) const; + Creature* FindNearestCreatureWithOptions(float range, FindCreatureOptions const& options) const; GameObject* FindNearestGameObject(uint32 entry, float range, bool spawnedOnly = true) const; + GameObject* FindNearestGameObjectWithOptions(float range, FindGameObjectOptions const& options) const; GameObject* FindNearestUnspawnedGameObject(uint32 entry, float range) const; GameObject* FindNearestGameObjectOfType(GameobjectTypes type, float range) const; Player* SelectNearestPlayer(float distance) const; @@ -483,9 +521,15 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation template void GetGameObjectListWithEntryInGrid(Container& gameObjectContainer, uint32 entry, float maxSearchRange = 250.0f) const; + template + void GetGameObjectListWithOptionsInGrid(Container& gameObjectContainer, float maxSearchRange, FindGameObjectOptions const& options) const; + template void GetCreatureListWithEntryInGrid(Container& creatureContainer, uint32 entry, float maxSearchRange = 250.0f) const; + template + void GetCreatureListWithOptionsInGrid(Container& creatureContainer, float maxSearchRange, FindCreatureOptions const& options) const; + template void GetPlayerListInGrid(Container& playerContainer, float maxSearchRange, bool alive = true) const; @@ -546,6 +590,12 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation // Event handler EventProcessor m_Events; + // Watcher + bool IsPrivateObject() const { return !_privateObjectOwner.IsEmpty(); } + ObjectGuid GetPrivateObjectOwner() const { return _privateObjectOwner; } + void SetPrivateObjectOwner(ObjectGuid const& owner) { _privateObjectOwner = owner; } + bool CheckPrivateObjectOwnerVisibility(WorldObject const* seer) const; + protected: std::string m_name; bool m_isActive; @@ -582,6 +632,9 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation uint32 m_phaseMask; // in area phase state uint16 m_notifyflags; + + ObjectGuid _privateObjectOwner; + virtual bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool incOwnRadius = true, bool incTargetRadius = true) const; bool CanNeverSee(WorldObject const* obj) const; diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 18fc2590554..44097221333 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -55,7 +55,7 @@ enum TypeMask TYPEMASK_DYNAMICOBJECT = 0x0040, TYPEMASK_CORPSE = 0x0080, - TYPEMASK_SEER = TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT, + TYPEMASK_SEER = TYPEMASK_UNIT | TYPEMASK_PLAYER | TYPEMASK_DYNAMICOBJECT, TYPEMASK_WORLDOBJECT = TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_DYNAMICOBJECT | TYPEMASK_CORPSE }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 17eb1bb9efa..497c803a8be 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25,6 +25,7 @@ #include "BattlefieldMgr.h" #include "Battleground.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "BattlegroundScore.h" #include "CellImpl.h" #include "Channel.h" @@ -251,7 +252,7 @@ Player::Player(WorldSession* session): Unit(true) SetLastRuneGraceTimer(i, 0); } - for (uint8 i=0; i < MAX_TIMERS; i++) + for (uint8 i = 0; i < MAX_TIMERS; i++) m_MirrorTimer[i] = DISABLED_MIRROR_TIMER; m_MirrorTimerFlags = UNDERWATER_NONE; @@ -512,7 +513,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo SetArenaFaction(0); SetUInt32Value(PLAYER_GUILDID, 0); - SetRank(0); + SetGuildRank(0); SetUInt32Value(PLAYER_GUILD_TIMESTAMP, 0); for (int i = 0; i < KNOWN_TITLES_SIZE; ++i) @@ -543,7 +544,9 @@ bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo InitRunes(); - SetMoney(sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY)); + SetMoney(GetClass() != CLASS_DEATH_KNIGHT + ? sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY) + : sWorld->getIntConfig(CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY)); SetHonorPoints(sWorld->getIntConfig(CONFIG_START_HONOR_POINTS)); SetArenaPoints(sWorld->getIntConfig(CONFIG_START_ARENA_POINTS)); @@ -1323,9 +1326,7 @@ void Player::Update(uint32 p_time) m_hostileReferenceCheckTimer -= p_time; } - //we should execute delayed teleports only for alive(!) players - //because we don't want player's ghost teleported from graveyard - if (IsHasDelayedTeleport() && IsAlive()) + if (IsHasDelayedTeleport()) TeleportTo(m_teleport_dest, m_teleport_options); } @@ -5264,8 +5265,8 @@ float Player::GetSpellCritFromIntellect() const if (level > GT_MAX_LEVEL) level = GT_MAX_LEVEL; - GtChanceToSpellCritBaseEntry const* critBase = sGtChanceToSpellCritBaseStore.LookupEntry(pclass-1); - GtChanceToSpellCritEntry const* critRatio = sGtChanceToSpellCritStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1); + GtChanceToSpellCritBaseEntry const* critBase = sGtChanceToSpellCritBaseStore.LookupEntry(pclass - 1); + GtChanceToSpellCritEntry const* critRatio = sGtChanceToSpellCritStore.LookupEntry((pclass - 1) * GT_MAX_LEVEL + level - 1); if (critBase == nullptr || critRatio == nullptr) return 0.0f; @@ -6093,8 +6094,8 @@ void Player::SendActionButtons(uint32 state) const data << uint8(state); /* state can be 0, 1, 2 - 0 - Looks to be sent when initial action buttons get sent, however on Trinity we use 1 since 0 had some difficulties - 1 - Used in any SMSG_ACTION_BUTTONS packet with button data on Trinity. Only used after spec swaps on retail. + 0 - Sends initial action buttons, client does not validate if we have the spell or not + 1 - Used used after spec swaps, client validates if a spell is known. 2 - Clears the action bars client sided. This is sent during spec swap before unlearning and before sending the new buttons */ if (state != 2) @@ -10126,11 +10127,11 @@ InventoryResult Player::CanTakeMoreSimilarItems(uint32 entry, uint32 count, Item { if (no_space_count) *no_space_count = count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } if (pItem && pItem->m_lootGenerated) - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; // no maximum if ((pProto->MaxCount <= 0 && pProto->ItemLimitCategory == 0) || pProto->MaxCount == 2147483647) @@ -10143,7 +10144,7 @@ InventoryResult Player::CanTakeMoreSimilarItems(uint32 entry, uint32 count, Item { if (no_space_count) *no_space_count = count + curcount - pProto->MaxCount; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } @@ -10155,7 +10156,7 @@ InventoryResult Player::CanTakeMoreSimilarItems(uint32 entry, uint32 count, Item { if (no_space_count) *no_space_count = count; - return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + return EQUIP_ERR_NOT_EQUIPPABLE; } if (limitEntry->Flags == ITEM_LIMIT_CATEGORY_MODE_HAVE) @@ -10167,7 +10168,7 @@ InventoryResult Player::CanTakeMoreSimilarItems(uint32 entry, uint32 count, Item *no_space_count = count + curcount - limitEntry->Quantity; if (itemLimitCategory) *itemLimitCategory = pProto->ItemLimitCategory; - return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED; + return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS; } } } @@ -10234,7 +10235,7 @@ InventoryResult Player::CanStoreItem_InSpecificSlot(uint8 bag, uint8 slot, ItemP uint32 need_space; if (pSrcItem && pSrcItem->IsNotEmptyBag() && !IsBagPos(uint16(bag) << 8 | slot)) - return EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS; + return EQUIP_ERR_DESTROY_NONEMPTY_BAG; // empty specific slot - check item fit to slot if (!pItem2 || swap) @@ -10243,31 +10244,31 @@ InventoryResult Player::CanStoreItem_InSpecificSlot(uint8 bag, uint8 slot, ItemP { // keyring case if (slot >= KEYRING_SLOT_START && slot < KEYRING_SLOT_START+GetMaxKeyringSize() && !(pProto->BagFamily & BAG_FAMILY_MASK_KEYS)) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; // currencytoken case if (slot >= CURRENCYTOKEN_SLOT_START && slot < CURRENCYTOKEN_SLOT_END && !(pProto->IsCurrencyToken())) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; // prevent cheating if ((slot >= BUYBACK_SLOT_START && slot < BUYBACK_SLOT_END) || slot >= PLAYER_SLOT_END) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; } else { Bag* pBag = GetBagByPos(bag); if (!pBag) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; ItemTemplate const* pBagProto = pBag->GetTemplate(); if (!pBagProto) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; if (slot >= pBagProto->ContainerSlots) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; if (!ItemCanGoIntoBag(pProto, pBagProto)) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; } // non empty stack with space @@ -10301,26 +10302,26 @@ InventoryResult Player::CanStoreItem_InBag(uint8 bag, ItemPosCountVec &dest, Ite { // skip specific bag already processed in first called CanStoreItem_InBag if (bag == skip_bag) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; // skip non-existing bag or self targeted bag Bag* pBag = GetBagByPos(bag); if (!pBag || pBag == pSrcItem) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; if (pSrcItem && pSrcItem->IsNotEmptyBag()) - return EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS; + return EQUIP_ERR_DESTROY_NONEMPTY_BAG; ItemTemplate const* pBagProto = pBag->GetTemplate(); if (!pBagProto) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; // specialized bag mode or non-specialized if (non_specialized != (pBagProto->Class == ITEM_CLASS_CONTAINER && pBagProto->SubClass == ITEM_SUBCLASS_CONTAINER)) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; if (!ItemCanGoIntoBag(pProto, pBagProto)) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; for (uint32 j = 0; j < pBag->GetBagSize(); j++) { @@ -10370,7 +10371,7 @@ InventoryResult Player::CanStoreItem_InInventorySlots(uint8 slot_begin, uint8 sl { //this is never called for non-bag slots so we can do this if (pSrcItem && pSrcItem->IsNotEmptyBag()) - return EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS; + return EQUIP_ERR_DESTROY_NONEMPTY_BAG; for (uint32 j = slot_begin; j < slot_end; j++) { @@ -10425,7 +10426,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des { if (no_space_count) *no_space_count = count; - return swap ? EQUIP_ERR_ITEMS_CANT_BE_SWAPPED : EQUIP_ERR_ITEM_NOT_FOUND; + return swap ? EQUIP_ERR_CANT_SWAP : EQUIP_ERR_ITEM_NOT_FOUND; } if (pItem) @@ -10435,14 +10436,14 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des { if (no_space_count) *no_space_count = count; - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; } if (pItem->IsBindedNotWith(this)) { if (no_space_count) *no_space_count = count; - return EQUIP_ERR_DONT_OWN_THAT_ITEM; + return EQUIP_ERR_NOT_OWNER; } } @@ -10478,7 +10479,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } @@ -10507,7 +10508,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } res = CanStoreItem_InInventorySlots(INVENTORY_SLOT_ITEM_START, INVENTORY_SLOT_ITEM_END, dest, pProto, count, true, pItem, bag, slot); @@ -10525,7 +10526,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } else // equipped bag @@ -10549,7 +10550,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } } @@ -10576,7 +10577,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } res = CanStoreItem_InInventorySlots(CURRENCYTOKEN_SLOT_START, CURRENCYTOKEN_SLOT_END, dest, pProto, count, false, pItem, bag, slot); @@ -10594,7 +10595,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } else if (pProto->IsCurrencyToken()) @@ -10614,7 +10615,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } @@ -10633,7 +10634,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } else // equipped bag @@ -10656,7 +10657,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } } @@ -10681,7 +10682,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } res = CanStoreItem_InInventorySlots(INVENTORY_SLOT_ITEM_START, INVENTORY_SLOT_ITEM_END, dest, pProto, count, true, pItem, bag, slot); @@ -10699,7 +10700,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } if (pProto->BagFamily) @@ -10717,7 +10718,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } } @@ -10735,7 +10736,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } } @@ -10761,7 +10762,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } else if (pProto->IsCurrencyToken()) @@ -10781,7 +10782,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } @@ -10798,13 +10799,13 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } } if (pItem && pItem->IsNotEmptyBag()) - return EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG; + return EQUIP_ERR_BAG_IN_BAG; // search free slot res = CanStoreItem_InInventorySlots(INVENTORY_SLOT_ITEM_START, INVENTORY_SLOT_ITEM_END, dest, pProto, count, false, pItem, bag, slot); @@ -10822,7 +10823,7 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } for (uint8 i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; i++) @@ -10838,14 +10839,14 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec &des if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_CANT_CARRY_MORE_OF_THIS; + return EQUIP_ERR_ITEM_MAX_COUNT; } } if (no_space_count) *no_space_count = count + no_similar_count; - return EQUIP_ERR_INVENTORY_FULL; + return EQUIP_ERR_INV_FULL; } ////////////////////////////////////////////////////////////////////////// @@ -10936,11 +10937,11 @@ InventoryResult Player::CanStoreItems(Item** items, int count, uint32* itemLimit // item used if (item->m_lootGenerated) - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; // item it 'bind' if (item->IsBindedNotWith(this)) - return EQUIP_ERR_DONT_OWN_THAT_ITEM; + return EQUIP_ERR_NOT_OWNER; ItemTemplate const* pBagProto; @@ -11186,10 +11187,10 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool { // item used if (pItem->m_lootGenerated) - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; if (pItem->IsBindedNotWith(this)) - return EQUIP_ERR_DONT_OWN_THAT_ITEM; + return EQUIP_ERR_NOT_OWNER; // check count of items (skip for auto move for same player from bank) InventoryResult res = CanTakeMoreSimilarItems(pItem); @@ -11202,10 +11203,10 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool // May be here should be more stronger checks; STUNNED checked // ROOT, CONFUSED, DISTRACTED, FLEEING this needs to be checked. if (HasUnitState(UNIT_STATE_STUNNED)) - return EQUIP_ERR_YOU_ARE_STUNNED; + return EQUIP_ERR_GENERIC_STUNNED; if (IsCharmed()) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; // @todo is this the correct error? + return EQUIP_ERR_CLIENT_LOCKED_OUT; // @todo is this the correct error? // do not allow equipping gear except weapons, offhands, projectiles, relics in // - combat @@ -11221,27 +11222,27 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool } if (IsInCombat()&& (pProto->Class == ITEM_CLASS_WEAPON || pProto->InventoryType == INVTYPE_RELIC) && m_weaponChangeTimer != 0) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; // maybe exist better err + return EQUIP_ERR_CLIENT_LOCKED_OUT; // maybe exist better err if (IsNonMeleeSpellCast(false)) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; } ScalingStatDistributionEntry const* ssd = pProto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(pProto->ScalingStatDistribution) : 0; // check allowed level (extend range to upper values if MaxLevel more or equal max player level, this let GM set high level with 1...max range items) if (ssd && ssd->Maxlevel < DEFAULT_MAX_LEVEL && ssd->Maxlevel < GetLevel()) - return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + return EQUIP_ERR_NOT_EQUIPPABLE; uint8 eslot = FindEquipSlot(pProto, slot, swap); if (eslot == NULL_SLOT) - return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + return EQUIP_ERR_NOT_EQUIPPABLE; res = CanUseItem(pItem, not_loading); if (res != EQUIP_ERR_OK) return res; if (!swap && GetItemByPos(INVENTORY_SLOT_BAG_0, eslot)) - return EQUIP_ERR_NO_EQUIPMENT_SLOT_AVAILABLE; + return EQUIP_ERR_NO_SLOT_AVAILABLE; // if we are swapping 2 equiped items, CanEquipUniqueItem check // should ignore the item we are trying to swap, and not the @@ -11285,8 +11286,8 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool if (ItemTemplate const* pBagProto = pBag->GetTemplate()) if (pBagProto->Class == pProto->Class && (!swap || pBag->GetSlot() != eslot)) return (pBagProto->SubClass == ITEM_SUBCLASS_AMMO_POUCH) - ? EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH - : EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER; + ? EQUIP_ERR_ONLY_ONE_AMMO + : EQUIP_ERR_ONLY_ONE_QUIVER; uint32 type = pProto->InventoryType; @@ -11294,21 +11295,21 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool { // Do not allow polearm to be equipped in the offhand (rare case for the only 1h polearm 41750) if (type == INVTYPE_WEAPON && pProto->SubClass == ITEM_SUBCLASS_WEAPON_POLEARM) - return EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT; + return EQUIP_ERR_WRONG_SLOT; else if (type == INVTYPE_WEAPON || type == INVTYPE_WEAPONOFFHAND) { if (!CanDualWield()) - return EQUIP_ERR_CANT_DUAL_WIELD; + return EQUIP_ERR_2HSKILLNOTFOUND; } else if (type == INVTYPE_2HWEAPON) { if (!CanDualWield() || !CanTitanGrip()) - return EQUIP_ERR_CANT_DUAL_WIELD; + return EQUIP_ERR_2HSKILLNOTFOUND; } if (IsTwoHandUsed()) - return EQUIP_ERR_CANT_EQUIP_WITH_TWOHANDED; + return EQUIP_ERR_2HANDED_EQUIPPED; } // equip two-hand weapon case (with possible unequip 2 items) @@ -11317,10 +11318,10 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool if (eslot == EQUIPMENT_SLOT_OFFHAND) { if (!CanTitanGrip()) - return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + return EQUIP_ERR_NOT_EQUIPPABLE; } else if (eslot != EQUIPMENT_SLOT_MAINHAND) - return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + return EQUIP_ERR_NOT_EQUIPPABLE; if (!CanTitanGrip()) { @@ -11330,7 +11331,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool if (offItem && (!not_loading || CanUnequipItem(uint16(INVENTORY_SLOT_BAG_0) << 8 | EQUIPMENT_SLOT_OFFHAND, false) != EQUIP_ERR_OK || CanStoreItem(NULL_BAG, NULL_SLOT, off_dest, offItem, false) != EQUIP_ERR_OK)) - return swap ? EQUIP_ERR_ITEMS_CANT_BE_SWAPPED : EQUIP_ERR_INVENTORY_FULL; + return swap ? EQUIP_ERR_CANT_SWAP : EQUIP_ERR_INV_FULL; } } dest = ((INVENTORY_SLOT_BAG_0 << 8) | eslot); @@ -11338,7 +11339,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool } } - return !swap ? EQUIP_ERR_ITEM_NOT_FOUND : EQUIP_ERR_ITEMS_CANT_BE_SWAPPED; + return !swap ? EQUIP_ERR_ITEM_NOT_FOUND : EQUIP_ERR_CANT_SWAP; } InventoryResult Player::CanUnequipItem(uint16 pos, bool swap) const @@ -11362,10 +11363,10 @@ InventoryResult Player::CanUnequipItem(uint16 pos, bool swap) const // item used if (pItem->m_lootGenerated) - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; if (IsCharmed()) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; // @todo is this the correct error? + return EQUIP_ERR_CLIENT_LOCKED_OUT; // @todo is this the correct error? // do not allow unequipping gear except weapons, offhands, projectiles, relics in // - combat @@ -11381,7 +11382,7 @@ InventoryResult Player::CanUnequipItem(uint16 pos, bool swap) const } if (!swap && pItem->IsNotEmptyBag()) - return EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS; + return EQUIP_ERR_DESTROY_NONEMPTY_BAG; return EQUIP_ERR_OK; } @@ -11389,7 +11390,7 @@ InventoryResult Player::CanUnequipItem(uint16 pos, bool swap) const InventoryResult Player::CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, Item* pItem, bool swap, bool not_loading) const { if (!pItem) - return swap ? EQUIP_ERR_ITEMS_CANT_BE_SWAPPED : EQUIP_ERR_ITEM_NOT_FOUND; + return swap ? EQUIP_ERR_CANT_SWAP : EQUIP_ERR_ITEM_NOT_FOUND; uint32 count = pItem->GetCount(); @@ -11397,14 +11398,14 @@ InventoryResult Player::CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec &dest GetName(), GetGUID().ToString(), bag, slot, pItem->GetEntry(), pItem->GetCount()); ItemTemplate const* pProto = pItem->GetTemplate(); if (!pProto) - return swap ? EQUIP_ERR_ITEMS_CANT_BE_SWAPPED : EQUIP_ERR_ITEM_NOT_FOUND; + return swap ? EQUIP_ERR_CANT_SWAP : EQUIP_ERR_ITEM_NOT_FOUND; // item used if (pItem->m_lootGenerated) - return EQUIP_ERR_ALREADY_LOOTED; + return EQUIP_ERR_LOOT_GONE; if (pItem->IsBindedNotWith(this)) - return EQUIP_ERR_DONT_OWN_THAT_ITEM; + return EQUIP_ERR_NOT_OWNER; // Currency tokens are not supposed to be swapped out of their hidden bag uint8 pItemslot = pItem->GetSlot(); @@ -11412,7 +11413,7 @@ InventoryResult Player::CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec &dest { TC_LOG_ERROR("entities.player.cheat", "Possible hacking attempt: Player {} ({}) tried to move token [{} entry: {}] out of the currency bag!", GetName(), GetGUID().ToString(), pItem->GetGUID().ToString(), pProto->ItemId); - return EQUIP_ERR_ITEMS_CANT_BE_SWAPPED; + return EQUIP_ERR_CANT_SWAP; } // check count of items (skip for auto move for same player from bank) @@ -11426,10 +11427,10 @@ InventoryResult Player::CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec &dest if (slot >= BANK_SLOT_BAG_START && slot < BANK_SLOT_BAG_END) { if (!pItem->IsBag()) - return EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT; + return EQUIP_ERR_WRONG_SLOT; if (slot - BANK_SLOT_BAG_START >= GetBankBagSlotCount()) - return EQUIP_ERR_MUST_PURCHASE_THAT_BAG_SLOT; + return EQUIP_ERR_NO_BANK_SLOT; res = CanUseItem(pItem, not_loading); if (res != EQUIP_ERR_OK) @@ -11450,7 +11451,7 @@ InventoryResult Player::CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec &dest if (bag != NULL_BAG) { if (pItem->IsNotEmptyBag()) - return EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG; + return EQUIP_ERR_BAG_IN_BAG; // search stack in bag for merge to if (pProto->Stackable != 1) @@ -11582,7 +11583,7 @@ InventoryResult Player::CanUseItem(Item* pItem, bool not_loading) const GetName(), GetGUID().ToString(), pItem->GetEntry()); if (!IsAlive() && not_loading) - return EQUIP_ERR_YOU_ARE_DEAD; + return EQUIP_ERR_PLAYER_DEAD; //if (isStunned()) // return EQUIP_ERR_YOU_ARE_STUNNED; @@ -11591,7 +11592,7 @@ InventoryResult Player::CanUseItem(Item* pItem, bool not_loading) const if (pProto) { if (pItem->IsBindedNotWith(this)) - return EQUIP_ERR_DONT_OWN_THAT_ITEM; + return EQUIP_ERR_NOT_OWNER; InventoryResult res = CanUseItem(pProto); if (res != EQUIP_ERR_OK) @@ -11604,7 +11605,7 @@ InventoryResult Player::CanUseItem(Item* pItem, bool not_loading) const // Armor that is binded to account can "morph" from plate to mail, etc. if skill is not learned yet. if (pProto->Quality == ITEM_QUALITY_HEIRLOOM && pProto->Class == ITEM_CLASS_ARMOR && !HasSkill(itemSkill)) { - /// @todo when you right-click already equipped item it throws EQUIP_ERR_NO_REQUIRED_PROFICIENCY. + /// @todo when you right-click already equipped item it throws EQUIP_ERR_PROFICIENCY_NEEDED. // In fact it's a visual bug, everything works properly... I need sniffs of operations with // binded to account items from off server. @@ -11622,7 +11623,7 @@ InventoryResult Player::CanUseItem(Item* pItem, bool not_loading) const } } if (!allowEquip && GetSkillValue(itemSkill) == 0) - return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; + return EQUIP_ERR_PROFICIENCY_NEEDED; } if (pProto->RequiredReputationFaction && uint32(GetReputationRank(pProto->RequiredReputationFaction)) < pProto->RequiredReputationRank) @@ -11643,28 +11644,28 @@ InventoryResult Player::CanUseItem(ItemTemplate const* proto) const if (((proto->Flags2 & ITEM_FLAG2_FACTION_HORDE) && GetTeam() != HORDE) || (((proto->Flags2 & ITEM_FLAG2_FACTION_ALLIANCE) && GetTeam() != ALLIANCE))) - return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; + return EQUIP_ERR_CANT_EQUIP_EVER; if ((proto->AllowableClass & GetClassMask()) == 0 || (proto->AllowableRace & GetRaceMask()) == 0) - return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; + return EQUIP_ERR_CANT_EQUIP_EVER; if (proto->RequiredSkill != 0) { if (GetSkillValue(proto->RequiredSkill) == 0) - return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; + return EQUIP_ERR_PROFICIENCY_NEEDED; else if (GetSkillValue(proto->RequiredSkill) < proto->RequiredSkillRank) return EQUIP_ERR_CANT_EQUIP_SKILL; } if (proto->RequiredSpell != 0 && !HasSpell(proto->RequiredSpell)) - return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; + return EQUIP_ERR_PROFICIENCY_NEEDED; if (GetLevel() < proto->RequiredLevel) return EQUIP_ERR_CANT_EQUIP_LEVEL_I; // If World Event is not active, prevent using event dependant items if (proto->HolidayId && !IsHolidayActive((HolidayIds)proto->HolidayId)) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; // learning (recipes, mounts, pets, etc.) if (proto->Spells[0].SpellId == 483 || proto->Spells[0].SpellId == 55884) @@ -11698,15 +11699,15 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje }; //Copy from function Item::GetSkill() if ((proto->AllowableClass & GetClassMask()) == 0 || (proto->AllowableRace & GetRaceMask()) == 0) - return EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; + return EQUIP_ERR_CANT_EQUIP_EVER; if (proto->RequiredSpell != 0 && !HasSpell(proto->RequiredSpell)) - return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; + return EQUIP_ERR_PROFICIENCY_NEEDED; if (proto->RequiredSkill != 0) { if (!GetSkillValue(proto->RequiredSkill)) - return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; + return EQUIP_ERR_PROFICIENCY_NEEDED; else if (GetSkillValue(proto->RequiredSkill) < proto->RequiredSkillRank) return EQUIP_ERR_CANT_EQUIP_SKILL; } @@ -11714,7 +11715,7 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje uint8 _class = GetClass(); if (proto->Class == ITEM_CLASS_WEAPON && GetSkillValue(item_weapon_skills[proto->SubClass]) == 0) - return EQUIP_ERR_NO_REQUIRED_PROFICIENCY; + return EQUIP_ERR_PROFICIENCY_NEEDED; if (proto->Class == ITEM_CLASS_ARMOR && proto->SubClass > ITEM_SUBCLASS_ARMOR_MISCELLANEOUS && proto->SubClass < ITEM_SUBCLASS_ARMOR_BUCKLER && proto->InventoryType != INVTYPE_CLOAK) { @@ -11723,29 +11724,29 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje if (GetLevel() < 40) { if (proto->SubClass != ITEM_SUBCLASS_ARMOR_MAIL) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; } else if (proto->SubClass != ITEM_SUBCLASS_ARMOR_PLATE) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; } else if (_class == CLASS_HUNTER || _class == CLASS_SHAMAN) { if (GetLevel() < 40) { if (proto->SubClass != ITEM_SUBCLASS_ARMOR_LEATHER) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; } else if (proto->SubClass != ITEM_SUBCLASS_ARMOR_MAIL) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; } if (_class == CLASS_ROGUE || _class == CLASS_DRUID) if (proto->SubClass != ITEM_SUBCLASS_ARMOR_LEATHER) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; if (_class == CLASS_MAGE || _class == CLASS_PRIEST || _class == CLASS_WARLOCK) if (proto->SubClass != ITEM_SUBCLASS_ARMOR_CLOTH) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; + return EQUIP_ERR_CLIENT_LOCKED_OUT; } return EQUIP_ERR_OK; @@ -11755,14 +11756,14 @@ InventoryResult Player::CanUseAmmo(uint32 item) const { TC_LOG_DEBUG("entities.player.items", "STORAGE: CanUseAmmo item = {}", item); if (!IsAlive()) - return EQUIP_ERR_YOU_ARE_DEAD; + return EQUIP_ERR_PLAYER_DEAD; //if (isStunned()) // return EQUIP_ERR_YOU_ARE_STUNNED; ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(item); if (pProto) { if (pProto->InventoryType!= INVTYPE_AMMO) - return EQUIP_ERR_ONLY_AMMO_CAN_GO_HERE; + return EQUIP_ERR_AMMO_ONLY; InventoryResult res = CanUseItem(pProto); if (res != EQUIP_ERR_OK) @@ -11774,7 +11775,7 @@ InventoryResult Player::CanUseAmmo(uint32 item) const // Requires No Ammo if (HasAura(46699)) - return EQUIP_ERR_BAG_FULL6; + return EQUIP_ERR_BAG_FULL_4; return EQUIP_ERR_OK; } @@ -12725,21 +12726,21 @@ void Player::SplitItem(uint16 src, uint16 dst, uint32 count) if (pSrcItem->m_lootGenerated) // prevent split looting item (item { //best error message found for attempting to split while looting - SendEquipError(EQUIP_ERR_COULDNT_SPLIT_ITEMS, pSrcItem, nullptr); + SendEquipError(EQUIP_ERR_SPLIT_FAILED, pSrcItem, nullptr); return; } // not let split all items (can be only at cheating) if (pSrcItem->GetCount() == count) { - SendEquipError(EQUIP_ERR_COULDNT_SPLIT_ITEMS, pSrcItem, nullptr); + SendEquipError(EQUIP_ERR_SPLIT_FAILED, pSrcItem, nullptr); return; } // not let split more existing items (can be only at cheating) if (pSrcItem->GetCount() < count) { - SendEquipError(EQUIP_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT, pSrcItem, nullptr); + SendEquipError(EQUIP_ERR_TOO_FEW_TO_SPLIT, pSrcItem, nullptr); return; } @@ -12842,7 +12843,7 @@ void Player::SwapItem(uint16 src, uint16 dst) if (!IsAlive()) { - SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, pSrcItem, pDstItem); + SendEquipError(EQUIP_ERR_PLAYER_DEAD, pSrcItem, pDstItem); return; } @@ -12863,14 +12864,14 @@ void Player::SwapItem(uint16 src, uint16 dst) // prevent put equipped/bank bag in self if (IsBagPos(src) && srcslot == dstbag) { - SendEquipError(EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG, pSrcItem, pDstItem); + SendEquipError(EQUIP_ERR_BAG_IN_BAG, pSrcItem, pDstItem); return; } // prevent equipping bag in the same slot from its inside if (IsBagPos(dst) && srcbag == dstslot) { - SendEquipError(EQUIP_ERR_ITEMS_CANT_BE_SWAPPED, pSrcItem, pDstItem); + SendEquipError(EQUIP_ERR_CANT_SWAP, pSrcItem, pDstItem); return; } @@ -13071,7 +13072,7 @@ void Player::SwapItem(uint16 src, uint16 dst) if (!bagItemProto || !ItemCanGoIntoBag(bagItemProto, emptyProto)) { // one from items not go to empty target bag - SendEquipError(EQUIP_ERR_NONEMPTY_BAG_OVER_OTHER_BAG, pSrcItem, pDstItem); + SendEquipError(EQUIP_ERR_BAG_IN_BAG, pSrcItem, pDstItem); return; } @@ -13081,7 +13082,7 @@ void Player::SwapItem(uint16 src, uint16 dst) if (count > emptyBag->GetBagSize()) { // too small targeted bag - SendEquipError(EQUIP_ERR_ITEMS_CANT_BE_SWAPPED, pSrcItem, pDstItem); + SendEquipError(EQUIP_ERR_CANT_SWAP, pSrcItem, pDstItem); return; } @@ -13295,9 +13296,9 @@ void Player::SendEquipError(InventoryResult msg, Item* pItem, Item* pItem2, uint data << uint64(0); // container break; } - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED: - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED: - case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED: + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS: + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS: + case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS: { ItemTemplate const* proto = pItem ? pItem->GetTemplate() : sObjectMgr->GetItemTemplate(itemid); data << uint32(proto ? proto->ItemLimitCategory : 0); @@ -14369,7 +14370,7 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men return; } - GetSession()->SendBattleGroundList(guid, bgTypeId); + sBattlegroundMgr->SendBattlegroundList(this, guid, bgTypeId); break; } } @@ -14633,7 +14634,7 @@ bool Player::CanAddQuest(Quest const* quest, bool msg) const InventoryResult msg2 = CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, srcitem, count); // player already have max number (in most case 1) source item, no additional item needed and quest can be added. - if (msg2 == EQUIP_ERR_CANT_CARRY_MORE_OF_THIS) + if (msg2 == EQUIP_ERR_ITEM_MAX_COUNT) return true; if (msg2 != EQUIP_ERR_OK) { @@ -15735,7 +15736,7 @@ bool Player::GiveQuestSourceItem(Quest const* quest) return true; } // player already have max amount required item, just report success - else if (msg == EQUIP_ERR_CANT_CARRY_MORE_OF_THIS) + else if (msg == EQUIP_ERR_ITEM_MAX_COUNT) return true; SendEquipError(msg, nullptr, nullptr, srcitem); @@ -16674,14 +16675,17 @@ void Player::SendQuestReward(Quest const* quest, uint32 XP) const { uint32 questId = quest->GetQuestId(); sGameEventMgr->HandleQuestComplete(questId); - WorldPacket data(SMSG_QUESTGIVER_QUEST_COMPLETE, (4+4+4+4+4)); - data << uint32(questId); + + uint32 xp; if (!IsMaxLevel()) - data << uint32(XP); + xp = XP; else - data << uint32(0); + xp = 0; + WorldPacket data(SMSG_QUESTGIVER_QUEST_COMPLETE, (4+4+4+4+4)); + data << uint32(questId); + data << uint32(xp); data << uint32(quest->GetRewOrReqMoney(this)); data << uint32(10 * quest->CalculateHonorGain(GetQuestLevel(quest))); data << uint32(quest->GetBonusTalents()); // bonus talents @@ -17254,7 +17258,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol { map = currentBg->GetBgMap(); - BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(currentBg->GetTypeID(), currentBg->GetArenaType()); + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(currentBg->GetTypeID(), currentBg->GetBracketId(), currentBg->GetArenaType()); AddBattlegroundQueueId(bgQueueTypeId); m_bgData.bgTypeID = currentBg->GetTypeID(); @@ -18060,7 +18064,7 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) { std::map::iterator invalidBagItr = invalidBagMap.find(bagGuid); if (std::find(problematicItems.begin(), problematicItems.end(), invalidBagItr->second) != problematicItems.end()) - err = EQUIP_ERR_INT_BAG_ERROR; + err = EQUIP_ERR_INTERNAL_BAG_ERROR; } else { @@ -18918,8 +18922,8 @@ void Player::SendSavedInstances() } } - //Send opcode 811. true or false means, whether you have current raid/heroic instances - data.Initialize(SMSG_UPDATE_INSTANCE_OWNERSHIP); + //Send opcode SMSG_UPDATE_INSTANCE_OWNERSHIP. true or false means, whether you have current raid/heroic instances + data.Initialize(SMSG_UPDATE_INSTANCE_OWNERSHIP, 4); data << uint32(hasBeenSaved); SendDirectMessage(&data); @@ -18932,7 +18936,7 @@ void Player::SendSavedInstances() { if (itr->second.perm) { - data.Initialize(SMSG_UPDATE_LAST_INSTANCE); + data.Initialize(SMSG_UPDATE_LAST_INSTANCE, 4); data << uint32(itr->second.save->GetMapId()); SendDirectMessage(&data); } @@ -19699,7 +19703,7 @@ void Player::_SaveInventory(CharacterDatabaseTransaction trans) // save all changes to the item... if (item->GetState() != ITEM_NEW) // only for existing items, no duplicates item->SaveToDB(trans); - // ...but do not save position in invntory + // ...but do not save position in inventory continue; } } @@ -20365,7 +20369,7 @@ void Player::SendResetInstanceFailed(uint32 reason, uint32 MapId) const // 1: There are players offline in your party. // 2>: There are players in your party attempting to zone into an instance. */ - WorldPacket data(SMSG_INSTANCE_RESET_FAILED, 4); + WorldPacket data(SMSG_INSTANCE_RESET_FAILED, 8); data << uint32(reason); data << uint32(MapId); SendDirectMessage(&data); @@ -20675,6 +20679,16 @@ void Player::TextEmote(std::string_view text, WorldObject const* /*= nullptr*/, SendMessageToSetInRange(&data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true, !GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT), true); } +void Player::WhisperAddon(std::string const& text, Player* receiver) +{ + std::string _text(text); + sScriptMgr->OnPlayerChat(this, CHAT_MSG_WHISPER, uint32(LANG_ADDON), _text, receiver); + + WorldPacket data; + ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER, LANG_ADDON, this, this, _text); + receiver->SendDirectMessage(&data); +} + void Player::TextEmote(uint32 textId, WorldObject const* target /*= nullptr*/, bool /*isBossEmote = false*/) { Talk(textId, CHAT_MSG_EMOTE, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), target); @@ -21502,10 +21516,12 @@ void Player::InitDisplayIds() inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int32 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore) { + uint32 stacks = count; + count = stacks * pProto->BuyCount; ItemPosCountVec vDest; uint16 uiDest = 0; InventoryResult msg = bStore ? - CanStoreNewItem(bag, slot, vDest, item, pProto->BuyCount * count) : + CanStoreNewItem(bag, slot, vDest, item, count) : CanEquipNewItem(slot, uiDest, item, false); if (msg != EQUIP_ERR_OK) { @@ -21520,15 +21536,15 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c ItemExtendedCostEntry const* iece = sItemExtendedCostStore.LookupEntry(crItem->ExtendedCost); ASSERT(iece); if (iece->HonorPoints) - ModifyHonorPoints(-int32(iece->HonorPoints * count)); + ModifyHonorPoints(-int32(iece->HonorPoints * stacks)); if (iece->ArenaPoints) - ModifyArenaPoints(-int32(iece->ArenaPoints * count)); + ModifyArenaPoints(-int32(iece->ArenaPoints * stacks)); for (uint8 i = 0; i < MAX_ITEM_EXTENDED_COST_REQUIREMENTS; ++i) { if (iece->ItemID[i]) - DestroyItemCount(iece->ItemID[i], (iece->ItemCount[i] * count), true); + DestroyItemCount(iece->ItemID[i], iece->ItemCount[i] * stacks, true); } } @@ -21537,15 +21553,16 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c EquipNewItem(uiDest, item, true); if (it) { - uint32 new_count = pVendor->UpdateVendorItemCurrentCount(crItem, pProto->BuyCount * count); + uint32 new_count = pVendor->UpdateVendorItemCurrentCount(crItem, count); WorldPacket data(SMSG_BUY_ITEM, (8+4+4+4)); data << uint64(pVendor->GetGUID()); data << uint32(vendorslot + 1); // numbered from 1 at client data << int32(crItem->maxcount > 0 ? new_count : 0xFFFFFFFF); - data << uint32(count); + data << uint32(stacks); SendDirectMessage(&data); - SendNewItem(it, pProto->BuyCount * count, true, false, false); + + SendNewItem(it, count, true, false, false); if (!bStore) AutoUnequipOffhandIfNeed(); @@ -21564,7 +21581,7 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c } // Return true is the bought item has a max count to force refresh of window by caller -bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot) +bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uint32 item, uint32 count, uint8 bag, uint8 slot) { // cheating attempt if (count < 1) count = 1; @@ -21649,6 +21666,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin if (crItem->ExtendedCost) { + uint32 stacks = count; ItemExtendedCostEntry const* iece = sItemExtendedCostStore.LookupEntry(crItem->ExtendedCost); if (!iece) { @@ -21657,14 +21675,14 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin } // honor points price - if (GetHonorPoints() < (iece->HonorPoints * count)) + if (GetHonorPoints() < (iece->HonorPoints * stacks)) { SendEquipError(EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS, nullptr, nullptr); return false; } // arena points price - if (GetArenaPoints() < (iece->ArenaPoints * count)) + if (GetArenaPoints() < (iece->ArenaPoints * stacks)) { SendEquipError(EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS, nullptr, nullptr); return false; @@ -21673,7 +21691,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin // item base price for (uint8 i = 0; i < MAX_ITEM_EXTENDED_COST_REQUIREMENTS; ++i) { - if (iece->ItemID[i] && !HasItemCount(iece->ItemID[i], (iece->ItemCount[i] * count))) + if (iece->ItemID[i] && !HasItemCount(iece->ItemID[i], (iece->ItemCount[i] * stacks))) { SendEquipError(EQUIP_ERR_VENDOR_MISSING_TURNINS, nullptr, nullptr); return false; @@ -21693,11 +21711,11 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin if (crItem->IsGoldRequired(pProto) && pProto->BuyPrice > 0) //Assume price cannot be negative (do not know why it is int32) { uint32 maxCount = MAX_MONEY_AMOUNT / pProto->BuyPrice; - if ((uint32)count > maxCount) + if (uint32(count) > maxCount) { TC_LOG_ERROR("entities.player.cheat", "Player::BuyItemFromVendorSlot: Player '{}' ({}) tried to buy item (ItemID: {}, Count: {}), causing overflow", - GetName(), GetGUID().ToString(), pProto->ItemId, (uint32)count); - count = (uint8)maxCount; + GetName(), GetGUID().ToString(), pProto->ItemId, uint32(count)); + count = uint32(maxCount); } price = pProto->BuyPrice * count; //it should not exceed MAX_MONEY_AMOUNT @@ -21720,7 +21738,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin { if (pProto->BuyCount * count != 1) { - SendEquipError(EQUIP_ERR_ITEM_CANT_BE_EQUIPPED, nullptr, nullptr); + SendEquipError(EQUIP_ERR_NOT_EQUIPPABLE, nullptr, nullptr); return false; } if (!_StoreOrEquipNewItem(vendorslot, item, count, bag, slot, price, pProto, creature, crItem, false)) @@ -21728,7 +21746,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin } else { - SendEquipError(EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, nullptr, nullptr); + SendEquipError(EQUIP_ERR_WRONG_SLOT, nullptr, nullptr); return false; } @@ -22174,23 +22192,33 @@ bool Player::CanReportAfkDueToLimit() ///This player has been blamed to be inactive in a battleground void Player::ReportedAfkBy(Player* reporter) { + WorldPackets::Battleground::ReportPvPPlayerAFKResult reportAfkResult; + reportAfkResult.Offender = GetGUID(); Battleground* bg = GetBattleground(); // Battleground also must be in progress! if (!bg || bg != reporter->GetBattleground() || GetTeam() != reporter->GetTeam() || bg->GetStatus() != STATUS_IN_PROGRESS) + { + reporter->SendDirectMessage(reportAfkResult.Write()); return; + } // check if player has 'Idle' or 'Inactive' debuff - if (m_bgData.bgAfkReporter.find(reporter->GetGUID().GetCounter()) == m_bgData.bgAfkReporter.end() && !HasAura(43680) && !HasAura(43681) && reporter->CanReportAfkDueToLimit()) + if (m_bgData.bgAfkReporter.find(reporter->GetGUID()) == m_bgData.bgAfkReporter.end() && !HasAura(43680) && !HasAura(43681) && reporter->CanReportAfkDueToLimit()) { - m_bgData.bgAfkReporter.insert(reporter->GetGUID().GetCounter()); + m_bgData.bgAfkReporter.insert(reporter->GetGUID()); // by default 3 players have to complain to apply debuff if (m_bgData.bgAfkReporter.size() >= sWorld->getIntConfig(CONFIG_BATTLEGROUND_REPORT_AFK)) { // cast 'Idle' spell CastSpell(this, 43680, true); m_bgData.bgAfkReporter.clear(); + reportAfkResult.NumBlackMarksOnOffender = m_bgData.bgAfkReporter.size(); + reportAfkResult.NumPlayersIHaveReported = reporter->m_bgData.bgAfkReportedCount; + reportAfkResult.Result = WorldPackets::Battleground::ReportPvPPlayerAFKResult::PVP_REPORT_AFK_SUCCESS; } } + + reporter->SendDirectMessage(reportAfkResult.Write()); } WorldLocation Player::GetStartPosition() const @@ -23208,10 +23236,8 @@ Battleground* Player::GetBattleground() const bool Player::InBattlegroundQueue(bool ignoreArena) const { for (uint8 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) - if (m_bgBattlegroundQueueID[i].bgQueueTypeId != BATTLEGROUND_QUEUE_NONE && (!ignoreArena || - (m_bgBattlegroundQueueID[i].bgQueueTypeId != BATTLEGROUND_QUEUE_2v2 && - m_bgBattlegroundQueueID[i].bgQueueTypeId != BATTLEGROUND_QUEUE_3v3 && - m_bgBattlegroundQueueID[i].bgQueueTypeId != BATTLEGROUND_QUEUE_5v5))) + if (m_bgBattlegroundQueueID[i].bgQueueTypeId != BATTLEGROUND_QUEUE_NONE + && (!ignoreArena || m_bgBattlegroundQueueID[i].bgQueueTypeId.BattlemasterListId != BATTLEGROUND_AA)) return true; return false; } @@ -24481,17 +24507,14 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost) SendDirectMessage(&data); } -uint32 Player::GetRuneBaseCooldown(uint8 index) +uint32 Player::GetRuneTypeBaseCooldown(RuneType runeType) const { - uint8 rune = GetBaseRune(index); - uint32 cooldown = RUNE_BASE_COOLDOWN; + float cooldown = RUNE_BASE_COOLDOWN; AuraEffectList const& regenAura = GetAuraEffectsByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for (AuraEffectList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i) - { - if ((*i)->GetMiscValue() == POWER_RUNE && (*i)->GetMiscValueB() == rune) - cooldown = cooldown * (100 - (*i)->GetAmount()) / 100; - } + if ((*i)->GetMiscValue() == POWER_RUNE && (*i)->GetMiscValueB() == runeType) + cooldown *= 1.0f - (*i)->GetAmount() / 100.0f; return cooldown; } @@ -24708,7 +24731,7 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot) if (!item || item->is_looted) { - SendEquipError(EQUIP_ERR_ALREADY_LOOTED, nullptr, nullptr); + SendEquipError(EQUIP_ERR_LOOT_GONE, nullptr, nullptr); return; } @@ -24976,7 +24999,7 @@ InventoryResult Player::CanEquipUniqueItem(ItemTemplate const* itemProto, uint8 { // there is an equip limit on this item if (HasItemOrGemWithIdEquipped(itemProto->ItemId, 1, except_slot)) - return EQUIP_ERR_ITEM_UNIQUE_EQUIPABLE; + return EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE; } // check unique-equipped limit @@ -24984,16 +25007,16 @@ InventoryResult Player::CanEquipUniqueItem(ItemTemplate const* itemProto, uint8 { ItemLimitCategoryEntry const* limitEntry = sItemLimitCategoryStore.LookupEntry(itemProto->ItemLimitCategory); if (!limitEntry) - return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; + return EQUIP_ERR_NOT_EQUIPPABLE; // NOTE: limitEntry->mode not checked because if item have have-limit then it applied and to equip case if (limit_count > limitEntry->Quantity) - return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED; + return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS; // there is an equip limit on this item if (HasItemWithLimitCategoryEquipped(itemProto->ItemLimitCategory, limitEntry->Quantity - limit_count + 1, except_slot)) - return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED; + return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS; else if (HasGemWithLimitCategoryEquipped(itemProto->ItemLimitCategory, limitEntry->Quantity - limit_count + 1, except_slot)) return EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED; } @@ -26104,14 +26127,15 @@ void Player::SetReputation(uint32 factionentry, uint32 value) { GetReputationMgr().SetReputation(sFactionStore.LookupEntry(factionentry), value); } + uint32 Player::GetReputation(uint32 factionentry) const { return GetReputationMgr().GetReputation(sFactionStore.LookupEntry(factionentry)); } -std::string const& Player::GetGuildName() const +std::string Player::GetGuildName() const { - return sGuildMgr->GetGuildById(GetGuildId())->GetName(); + return GetGuildId() ? sGuildMgr->GetGuildById(GetGuildId())->GetName() : ""; } void Player::SendDuelCountdown(uint32 counter) @@ -26204,6 +26228,26 @@ PetStable& Player::GetOrInitPetStable() return *m_petStable; } +void Player::SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece, uint8 error) const +{ + WorldPacket data(SMSG_ITEM_REFUND_RESULT, 8 + 4 + 4 + 4 + 4 + 4 * 4 + 4 * 4); + data << uint64(item->GetGUID()); // item guid + data << uint32(error); // 0, or error code + if (!error) + { + data << uint32(item->GetPaidMoney()); // money cost + data << uint32(iece->HonorPoints); // honor point cost + data << uint32(iece->ArenaPoints); // arena point cost + for (uint8 i = 0; i < MAX_ITEM_EXTENDED_COST_REQUIREMENTS; ++i) // item cost data + { + data << uint32(iece->ItemID[i]); + data << uint32(iece->ItemCount[i]); + } + } + + SendDirectMessage(&data); +} + void Player::RefundItem(Item* item) { if (!item->IsRefundable()) @@ -26215,10 +26259,7 @@ void Player::RefundItem(Item* item) if (item->IsRefundExpired()) // item refund has expired { item->SetNotRefundable(this); - WorldPacket data(SMSG_ITEM_REFUND_RESULT, 8+4); - data << uint64(item->GetGUID()); // Guid - data << uint32(10); // Error! - SendDirectMessage(&data); + SendItemRefundResult(item, nullptr, 10); return; } @@ -26256,25 +26297,11 @@ void Player::RefundItem(Item* item) if (store_error) { - WorldPacket data(SMSG_ITEM_REFUND_RESULT, 8+4); - data << uint64(item->GetGUID()); // Guid - data << uint32(10); // Error! - SendDirectMessage(&data); + SendItemRefundResult(item, iece, 10); return; } - WorldPacket data(SMSG_ITEM_REFUND_RESULT, 8+4+4+4+4+4*4+4*4); - data << uint64(item->GetGUID()); // item guid - data << uint32(0); // 0, or error code - data << uint32(item->GetPaidMoney()); // money cost - data << uint32(iece->HonorPoints); // honor point cost - data << uint32(iece->ArenaPoints); // arena point cost - for (uint8 i = 0; i < MAX_ITEM_EXTENDED_COST_REQUIREMENTS; ++i) // item cost data - { - data << uint32(iece->ItemID[i]); - data << uint32(iece->ItemCount[i]); - } - SendDirectMessage(&data); + SendItemRefundResult(item, iece, 0); uint32 moneyRefund = item->GetPaidMoney(); // item-> will be invalidated in DestroyItem diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 6a0e544d312..cc4df35f6a9 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -44,6 +44,7 @@ struct CharTitlesEntry; struct ChatChannelsEntry; struct CreatureTemplate; struct FactionEntry; +struct ItemExtendedCostEntry; struct ItemSetEffect; struct ItemTemplate; struct Loot; @@ -830,7 +831,7 @@ struct BGData /// when player is teleported to BG - (it is battleground's GUID) BattlegroundTypeId bgTypeID; - std::set bgAfkReporter; + GuidSet bgAfkReporter; uint8 bgAfkReportedCount; time_t bgAfkReportedTimer; @@ -1079,6 +1080,7 @@ class TC_GAME_API Player : public Unit, public GridObject /// Handles whispers from Addons and players based on sender, receiver's guid and language. void Whisper(std::string_view text, Language language, Player* receiver, bool = false) override; void Whisper(uint32 textId, Player* target, bool isBossWhisper = false) override; + void WhisperAddon(std::string const& text, Player* receiver); /*********************************************************/ /*** STORAGE SYSTEM ***/ @@ -1188,7 +1190,7 @@ class TC_GAME_API Player : public Unit, public GridObject bool IsTwoHandUsed() const; bool IsUsingTwoHandedWeaponInOneHand() const; void SendNewItem(Item* item, uint32 count, bool received, bool created, bool broadcast = false, bool sendChatMessage = true); - bool BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot); + bool BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uint32 item, uint32 count, uint8 bag, uint8 slot); bool _StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int32 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore); float GetReputationPriceDiscount(Creature const* creature) const; @@ -1471,7 +1473,7 @@ class TC_GAME_API Player : public Unit, public GridObject void RemoveTemporarySpell(uint32 spellId); void SetReputation(uint32 factionentry, uint32 value); uint32 GetReputation(uint32 factionentry) const; - std::string const& GetGuildName() const; + std::string GetGuildName() const; // Talents uint32 GetFreeTalentPoints() const { return GetUInt32Value(PLAYER_CHARACTER_POINTS1); } @@ -1605,8 +1607,8 @@ class TC_GAME_API Player : public Unit, public GridObject void SendUpdateToOutOfRangeGroupMembers(); void SetInGuild(uint32 guildId); - void SetRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); } - uint8 GetRank() const { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); } + void SetGuildRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); } + uint8 GetGuildRank() const { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); } void SetGuildIdInvited(uint32 GuildId) { m_GuildIdInvited = GuildId; } uint32 GetGuildId() const { return GetUInt32Value(PLAYER_GUILDID); } Guild* GetGuild(); @@ -2178,7 +2180,8 @@ class TC_GAME_API Player : public Unit, public GridObject RuneType GetBaseRune(uint8 index) const { return RuneType(m_runes->runes[index].BaseRune); } RuneType GetCurrentRune(uint8 index) const { return RuneType(m_runes->runes[index].CurrentRune); } uint32 GetRuneCooldown(uint8 index) const { return m_runes->runes[index].Cooldown; } - uint32 GetRuneBaseCooldown(uint8 index); + uint32 GetRuneBaseCooldown(uint8 index) const { return GetRuneTypeBaseCooldown(GetBaseRune(index)); } + uint32 GetRuneTypeBaseCooldown(RuneType runeType) const; bool IsBaseRuneSlotsOnCooldown(RuneType runeType) const; RuneType GetLastUsedRune() const { return m_runes->lastUsedRune; } void SetLastUsedRune(RuneType type) { m_runes->lastUsedRune = type; } @@ -2495,6 +2498,7 @@ class TC_GAME_API Player : public Unit, public GridObject GuidSet m_refundableItems; void SendRefundInfo(Item* item); void RefundItem(Item* item); + void SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece, uint8 error) const; // know currencies are not removed at any point (0 displayed) void AddKnownCurrency(uint32 itemId); diff --git a/src/server/game/Entities/Player/PlayerTaxi.h b/src/server/game/Entities/Player/PlayerTaxi.h index 8fe480b9d07..880ffd03291 100644 --- a/src/server/game/Entities/Player/PlayerTaxi.h +++ b/src/server/game/Entities/Player/PlayerTaxi.h @@ -38,15 +38,15 @@ class TC_GAME_API PlayerTaxi bool IsTaximaskNodeKnown(uint32 nodeidx) const { - uint8 field = uint8((nodeidx - 1) / 32); - uint32 submask = 1 << ((nodeidx-1) % 32); - return (m_taximask[field] & submask) == submask; + uint32 field = uint32((nodeidx - 1) / (sizeof(TaxiMask::value_type) * 8)); + TaxiMask::value_type submask = TaxiMask::value_type(1 << ((nodeidx - 1) % (sizeof(TaxiMask::value_type) * 8))); + return (m_taximask[field] & submask) != 0; } bool SetTaximaskNode(uint32 nodeidx) { - uint8 field = uint8((nodeidx - 1) / 32); - uint32 submask = 1 << ((nodeidx - 1) % 32); - if ((m_taximask[field] & submask) != submask) + uint32 field = uint32((nodeidx - 1) / (sizeof(TaxiMask::value_type) * 8)); + TaxiMask::value_type submask = TaxiMask::value_type(1 << ((nodeidx - 1) % (sizeof(TaxiMask::value_type) * 8))); + if ((m_taximask[field] & submask) == 0) { m_taximask[field] |= submask; return true; diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index cb467b8de38..eb2a81d6283 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -292,7 +292,7 @@ float Player::GetHealthBonusFromStamina() float baseStam = std::min(20.0f, stamina); float moreStam = stamina - baseStam; - return baseStam + (moreStam*10.0f); + return baseStam + (moreStam * 10.0f); } float Player::GetManaBonusFromIntellect() @@ -1033,20 +1033,8 @@ void Player::UpdateRuneRegen(RuneType rune) if (rune >= NUM_RUNE_TYPES) return; - uint32 cooldown = 0; - - for (uint32 i = 0; i < MAX_RUNES; ++i) - if (GetBaseRune(i) == rune) - { - cooldown = GetRuneBaseCooldown(i); - break; - } - - if (cooldown <= 0) - return; - - float regen = float(1 * IN_MILLISECONDS) / float(cooldown); - SetFloatValue(PLAYER_RUNE_REGEN_1 + uint8(rune), regen); + if (uint32 cooldown = GetRuneTypeBaseCooldown(rune)) + SetFloatValue(PLAYER_RUNE_REGEN_1 + uint8(rune), float(1 * IN_MILLISECONDS) / float(cooldown)); } void Player::_ApplyAllStatBonuses() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 88df3a10c4d..bac4222cf4d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -20,6 +20,7 @@ #include "Battlefield.h" #include "BattlefieldMgr.h" #include "Battleground.h" +#include "BattlegroundPackets.h" #include "BattlegroundScore.h" #include "CellImpl.h" #include "CharacterCache.h" @@ -410,10 +411,10 @@ Unit::~Unit() _DeleteRemovedAuras(); - delete i_motionMaster; - delete m_charmInfo; - delete movespline; - delete _spellHistory; + delete std::exchange(i_motionMaster, nullptr); + delete std::exchange(m_charmInfo, nullptr); + delete std::exchange(movespline, nullptr); + delete std::exchange(_spellHistory, nullptr); ASSERT(!m_duringRemoveFromWorld); ASSERT(!m_attacking); @@ -6632,6 +6633,10 @@ float Unit::SpellDamagePctDone(Unit* victim, SpellInfo const* spellProto, Damage return false; }); + // Add SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC percent bonus + if (spellProto->Mechanic) + AddPct(DoneTotalMod, GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC, spellProto->Mechanic)); + // done scripted mod (take it from owner) Unit const* owner = GetOwner() ? GetOwner() : this; AuraEffectList const& mOverrideClassScript = owner->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); @@ -7932,6 +7937,10 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType return false; }); + // Add SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC percent bonus + if (spellProto && spellProto->Mechanic) + AddPct(DoneTotalMod, GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC, spellProto->Mechanic)); + // done scripted mod (take it from owner) Unit* owner = GetOwner() ? GetOwner() : this; AuraEffectList const& mOverrideClassScript = owner->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); @@ -8432,9 +8441,9 @@ int32 Unit::ModifyPower(Powers power, int32 dVal, bool withPowerUpdate /*= true* int32 curPower = (int32)GetPower(power); int32 val = dVal + curPower; - if (val <= 0) + if (val <= GetMinPower(power)) { - SetPower(power, 0, withPowerUpdate); + SetPower(power, GetMinPower(power), withPowerUpdate); return -curPower; } @@ -9317,7 +9326,7 @@ float Unit::GetWeaponDamageRange(WeaponAttackType attType, WeaponDamageRange typ bool Unit::CanFreeMove() const { return !HasUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_FLEEING | UNIT_STATE_IN_FLIGHT | - UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED) && GetOwnerGUID().IsEmpty(); + UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED); } void Unit::SetLevel(uint8 lvl, bool sendUpdate/* = true*/) @@ -11100,8 +11109,9 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id) // only if not player and not controlled by player pet. And not at BG if ((durabilityLoss && !player && !victim->ToPlayer()->InBattleground()) || (player && sWorld->getBoolConfig(CONFIG_DURABILITY_LOSS_IN_PVP))) { - TC_LOG_DEBUG("entities.unit", "We are dead, losing {} percent durability", sWorld->getRate(RATE_DURABILITY_LOSS_ON_DEATH)); - plrVictim->DurabilityLossAll(sWorld->getRate(RATE_DURABILITY_LOSS_ON_DEATH), false); + double baseLoss = sWorld->getRate(RATE_DURABILITY_LOSS_ON_DEATH); + TC_LOG_DEBUG("entities.unit", "We are dead, losing {} percent durability", baseLoss); + plrVictim->DurabilityLossAll(baseLoss, false); // durability lost message plrVictim->SendDurabilityLoss(); } @@ -12128,8 +12138,8 @@ float Unit::MeleeSpellMissChance(Unit const* victim, WeaponAttackType attType, i //calculate miss chance float missChance = victim->GetUnitMissChance(); - // melee attacks while dual wielding have +19% chance to miss - if (!spellId && haveOffhandWeapon()) + // Check if dual wielding, add additional miss penalty - when mainhand has on next swing spell, offhand doesnt suffer penalty + if (!spellId && haveOffhandWeapon() && attType != RANGED_ATTACK && !m_currentSpells[CURRENT_MELEE_SPELL]) missChance += 19.0f; // bonus from skills is 0.04% @@ -12210,6 +12220,17 @@ void Unit::UpdateObjectVisibility(bool forced) } } +void Unit::SendMoveKnockBack(Player* player, float speedXY, float speedZ, float vcos, float vsin) +{ + WorldPacket data(SMSG_MOVE_KNOCK_BACK, (8 + 4 + 4 + 4 + 4 + 4)); + data << GetPackGUID(); + data << uint32(0); // counter + data << TaggedPosition(vcos, vsin); + data << float(speedXY); // Horizontal speed + data << float(speedZ); // Z Movement speed (vertical) + player->SendDirectMessage(&data); +} + void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ) { if (IsMovedByServer()) @@ -12220,15 +12241,7 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ) { float vcos, vsin; GetSinCos(x, y, vsin, vcos); - - WorldPacket data(SMSG_MOVE_KNOCK_BACK, (8 + 4 + 4 + 4 + 4 + 4)); - data << GetPackGUID(); - data << uint32(0); // counter - data << TaggedPosition(vcos, vsin); - data << float(speedXY); // Horizontal speed - data << float(-speedZ); // Z Movement speed (vertical) - - GetGameClientMovingMe()->SendDirectMessage(&data); + SendMoveKnockBack(GetGameClientMovingMe()->GetBasePlayer(), speedXY, -speedZ, vcos, vsin); if (HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) || HasAuraType(SPELL_AURA_FLY)) SetCanFly(true, true); @@ -12325,23 +12338,26 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const } } // Female - else switch (skinColor) + else { - case 10: // White - return 29409; - case 6: // Light Brown - case 7: - return 29410; - case 4: // Brown - case 5: - return 29411; - case 0: // Dark - case 1: - case 2: - case 3: - return 29412; - default: // original - Grey - return 8571; + switch (skinColor) + { + case 10: // White + return 29409; + case 6: // Light Brown + case 7: + return 29410; + case 4: // Brown + case 5: + return 29411; + case 0: // Dark + case 1: + case 2: + case 3: + return 29412; + default: // original - Grey + return 8571; + } } } else if (Player::TeamForRace(GetRace()) == ALLIANCE) @@ -12403,23 +12419,26 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const } } // Female - else switch (skinColor) + else { - case 0: // Dark (Black) - case 1: - return 29418; - case 2: // White - case 3: - return 29419; - case 6: // Light Brown/Grey - case 7: - case 8: - case 9: - return 29420; - case 10: // Completly White - return 29421; - default: // original - Brown - return 2289; + switch (skinColor) + { + case 0: // Dark (Black) + case 1: + return 29418; + case 2: // White + case 3: + return 29419; + case 6: // Light Brown/Grey + case 7: + case 8: + case 9: + return 29420; + case 10: // Completly White + return 29421; + default: // original - Brown + return 2289; + } } } else if (Player::TeamForRace(GetRace()) == ALLIANCE) @@ -12474,15 +12493,7 @@ void Unit::JumpTo(float speedXY, float speedZ, bool forward, Optional { float vcos = std::cos(angle+GetOrientation()); float vsin = std::sin(angle+GetOrientation()); - - WorldPacket data(SMSG_MOVE_KNOCK_BACK, (8+4+4+4+4+4)); - data << GetPackGUID(); - data << uint32(0); // Sequence - data << TaggedPosition(vcos, vsin); - data << float(speedXY); // Horizontal speed - data << float(-speedZ); // Z Movement speed (vertical) - - ToPlayer()->SendDirectMessage(&data); + SendMoveKnockBack(ToPlayer(), speedXY, -speedZ, vcos, vsin); } } @@ -13574,6 +13585,21 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player const* t data->append(fieldBuffer); } +void Unit::DestroyForPlayer(Player* target, bool onDeath) const +{ + if (Battleground* bg = target->GetBattleground()) + { + if (bg->isArena()) + { + WorldPackets::Battleground::DestroyArenaUnit destroyArenaUnit; + destroyArenaUnit.Guid = GetGUID(); + target->GetSession()->SendPacket(destroyArenaUnit.Write()); + } + } + + WorldObject::DestroyForPlayer(target, onDeath); +} + int32 Unit::GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect const* aurEff, AuraType auraType, bool checkMiscValue /*= false*/, int32 miscValue /*= 0*/) const { int32 val = 0; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 42e94a53e28..5991b268b87 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -931,6 +931,7 @@ class TC_GAME_API Unit : public WorldObject void SetPowerType(Powers power, bool sendUpdate = true); void UpdateDisplayPower(); uint32 GetPower(Powers power) const { return GetUInt32Value(UNIT_FIELD_POWER1 + int32(power)); } + int32 GetMinPower(Powers /*power*/) const { return 0; } uint32 GetMaxPower(Powers power) const { return GetUInt32Value(UNIT_FIELD_MAXPOWER1 + int32(power)); } float GetPowerPct(Powers power) const { return GetMaxPower(power) ? 100.f * GetPower(power) / GetMaxPower(power) : 0.0f; } int32 CountPctFromMaxPower(Powers power, int32 pct) const { return CalculatePct(GetMaxPower(power), pct); } @@ -1204,6 +1205,7 @@ class TC_GAME_API Unit : public WorldObject void UpdateOrientation(float orientation); void UpdateHeight(float newZ); + void SendMoveKnockBack(Player* player, float speedXY, float speedZ, float vcos, float vsin); void KnockbackFrom(float x, float y, float speedXY, float speedZ); void JumpTo(float speedXY, float speedZ, bool forward = true, Optional dest = {}); void JumpTo(WorldObject* obj, float speedZ, bool withOrientation = false); @@ -1831,6 +1833,7 @@ class TC_GAME_API Unit : public WorldObject explicit Unit (bool isWorldObject); void BuildValuesUpdate(uint8 updatetype, ByteBuffer* data, Player const* target) const override; + void DestroyForPlayer(Player* target, bool onDeath) const override; void _UpdateSpells(uint32 time); void _DeleteRemovedAuras(); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 31a1fa1d2a9..41aa94a6d2d 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -495,7 +495,9 @@ void ObjectMgr::LoadCreatureTemplates() // 62 "flags_extra," // 63 - "ScriptName" + "ScriptName," + // 64 + "StringId" " FROM creature_template ct" " LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId"); @@ -615,6 +617,7 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) creatureTemplate.SpellSchoolImmuneMask = fields[61].GetUInt32(); creatureTemplate.flags_extra = fields[62].GetUInt32(); creatureTemplate.ScriptID = GetScriptId(fields[63].GetString()); + creatureTemplate.StringId = fields[64].GetString(); } void ObjectMgr::LoadCreatureTemplateResistances() @@ -2164,8 +2167,8 @@ void ObjectMgr::LoadCreatures() QueryResult result = WorldDatabase.Query("SELECT creature.guid, id, map, position_x, position_y, position_z, orientation, modelid, equipment_id, spawntimesecs, wander_distance, " // 11 12 13 14 15 16 17 18 19 20 21 "currentwaypoint, curhealth, curmana, MovementType, spawnMask, phaseMask, eventEntry, poolSpawnId, creature.npcflag, creature.unit_flags, creature.dynamicflags, " - // 22 - "creature.ScriptName " + // 22 23 + "creature.ScriptName, creature.StringId " "FROM creature " "LEFT OUTER JOIN game_event_creature ON creature.guid = game_event_creature.guid " "LEFT OUTER JOIN pool_members ON pool_members.type = 0 AND creature.guid = pool_members.spawnId"); @@ -2221,6 +2224,7 @@ void ObjectMgr::LoadCreatures() data.unit_flags = fields[20].GetUInt32(); data.dynamicflags = fields[21].GetUInt32(); data.scriptId = GetScriptId(fields[22].GetString()); + data.StringId = fields[23].GetString(); data.spawnGroupData = GetDefaultSpawnGroup(); MapEntry const* mapEntry = sMapStore.LookupEntry(data.mapId); @@ -2485,8 +2489,8 @@ void ObjectMgr::LoadGameObjects() QueryResult result = WorldDatabase.Query("SELECT gameobject.guid, id, map, position_x, position_y, position_z, orientation, " // 7 8 9 10 11 12 13 14 15 16 17 "rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, spawnMask, phaseMask, eventEntry, poolSpawnId, " - // 18 - "ScriptName " + // 18 19 + "ScriptName, StringId " "FROM gameobject LEFT OUTER JOIN game_event_gameobject ON gameobject.guid = game_event_gameobject.guid " "LEFT OUTER JOIN pool_members ON pool_members.type = 1 AND gameobject.guid = pool_members.spawnId"); @@ -2590,6 +2594,7 @@ void ObjectMgr::LoadGameObjects() uint32 PoolId = fields[17].GetUInt32(); data.scriptId = GetScriptId(fields[18].GetString()); + data.StringId = fields[19].GetString(); if (data.rotation.x < -1.0f || data.rotation.x > 1.0f) { @@ -6842,8 +6847,8 @@ uint32 ObjectMgr::GetNearestTaxiNode(float x, float y, float z, uint32 mapid, ui if (!node || node->ContinentID != mapid || (!node->MountCreatureID[team == ALLIANCE ? 1 : 0] && node->MountCreatureID[0] != 32981)) // dk flight continue; - uint8 field = (uint8)((i - 1) / 32); - uint32 submask = 1<<((i-1)%32); + uint32 field = uint32((node->ID - 1) / (sizeof(TaxiMask::value_type) * 8)); + TaxiMask::value_type submask = TaxiMask::value_type(1 << ((node->ID - 1) % (sizeof(TaxiMask::value_type) * 8))); // skip not taxi network nodes if ((sTaxiNodesMask[field] & submask) == 0) @@ -7661,8 +7666,8 @@ void ObjectMgr::LoadGameObjectTemplate() QueryResult result = WorldDatabase.Query("SELECT entry, type, displayId, name, IconName, castBarCaption, unk1, size, " // 8 9 10 11 12 13 14 15 16 17 18 19 20 "Data0, Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8, Data9, Data10, Data11, Data12, " - // 21 22 23 24 25 26 27 28 29 30 31 32 33 - "Data13, Data14, Data15, Data16, Data17, Data18, Data19, Data20, Data21, Data22, Data23, AIName, ScriptName " + // 21 22 23 24 25 26 27 28 29 30 31 32 33 34 + "Data13, Data14, Data15, Data16, Data17, Data18, Data19, Data20, Data21, Data22, Data23, AIName, ScriptName, StringId " "FROM gameobject_template"); if (!result) @@ -7693,6 +7698,7 @@ void ObjectMgr::LoadGameObjectTemplate() got.AIName = fields[32].GetString(); got.ScriptId = GetScriptId(fields[33].GetString()); + got.StringId = fields[34].GetString(); // Checks if (!got.AIName.empty() && !sGameObjectAIRegistry->HasItem(got.AIName)) @@ -9699,7 +9705,7 @@ bool ObjectMgr::RemoveVendorItem(uint32 entry, uint32 item, bool persist /*= tru return true; } -bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 item_id, int32 maxcount, uint32 incrtime, uint32 ExtendedCost, Player* player, std::set* skip_vendors, uint32 ORnpcflag) const +bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 id, int32 maxcount, uint32 incrtime, uint32 ExtendedCost, Player* player, std::set* skip_vendors, uint32 ORnpcflag) const { CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(vendor_entry); if (!cInfo) @@ -9726,12 +9732,12 @@ bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 item_id, int32 max return false; } - if (!sObjectMgr->GetItemTemplate(item_id)) + if (!sObjectMgr->GetItemTemplate(id)) { if (player) - ChatHandler(player->GetSession()).PSendSysMessage(LANG_ITEM_NOT_FOUND, item_id); + ChatHandler(player->GetSession()).PSendSysMessage(LANG_ITEM_NOT_FOUND, id); else - TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` for Vendor (Entry: {}) have in item list non-existed item ({}), ignore", vendor_entry, item_id); + TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` for Vendor (Entry: {}) have in item list non-existed item ({}), ignore", vendor_entry, id); return false; } @@ -9740,7 +9746,7 @@ bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 item_id, int32 max if (player) ChatHandler(player->GetSession()).PSendSysMessage(LANG_EXTENDED_COST_NOT_EXIST, ExtendedCost); else - TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` has Item (Entry: {}) with wrong ExtendedCost ({}) for vendor ({}), ignore", item_id, ExtendedCost, vendor_entry); + TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` has Item (Entry: {}) with wrong ExtendedCost ({}) for vendor ({}), ignore", id, ExtendedCost, vendor_entry); return false; } @@ -9749,7 +9755,7 @@ bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 item_id, int32 max if (player) ChatHandler(player->GetSession()).PSendSysMessage("MaxCount != 0 (%u) but IncrTime == 0", maxcount); else - TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` has `maxcount` ({}) for item {} of vendor (Entry: {}) but `incrtime`=0, ignore", maxcount, item_id, vendor_entry); + TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` has `maxcount` ({}) for item {} of vendor (Entry: {}) but `incrtime`=0, ignore", maxcount, id, vendor_entry); return false; } else if (maxcount == 0 && incrtime > 0) @@ -9757,7 +9763,7 @@ bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 item_id, int32 max if (player) ChatHandler(player->GetSession()).PSendSysMessage("MaxCount == 0 but IncrTime<>= 0"); else - TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` has `maxcount`=0 for item {} of vendor (Entry: {}) but `incrtime`<>0, ignore", item_id, vendor_entry); + TC_LOG_ERROR("sql.sql", "Table `(game_event_)npc_vendor` has `maxcount`=0 for item {} of vendor (Entry: {}) but `incrtime`<>0, ignore", id, vendor_entry); return false; } @@ -9765,12 +9771,12 @@ bool ObjectMgr::IsVendorItemValid(uint32 vendor_entry, uint32 item_id, int32 max if (!vItems) return true; // later checks for non-empty lists - if (vItems->FindItemCostPair(item_id, ExtendedCost)) + if (vItems->FindItemCostPair(id, ExtendedCost)) { if (player) - ChatHandler(player->GetSession()).PSendSysMessage(LANG_ITEM_ALREADY_IN_LIST, item_id, ExtendedCost); + ChatHandler(player->GetSession()).PSendSysMessage(LANG_ITEM_ALREADY_IN_LIST, id, ExtendedCost); else - TC_LOG_ERROR("sql.sql", "Table `npc_vendor` has duplicate items {} (with extended cost {}) for vendor (Entry: {}), ignoring", item_id, ExtendedCost, vendor_entry); + TC_LOG_ERROR("sql.sql", "Table `npc_vendor` has duplicate items {} (with extended cost {}) for vendor (Entry: {}), ignoring", id, ExtendedCost, vendor_entry); return false; } @@ -10035,7 +10041,7 @@ void ObjectMgr::LoadCreatureClassLevelStats() for (uint8 i = 0; i < MAX_EXPANSIONS; ++i) { - stats.BaseHealth[i] = fields[2 + i].GetUInt16(); + stats.BaseHealth[i] = fields[2 + i].GetUInt32(); if (stats.BaseHealth[i] == 0) { @@ -10051,8 +10057,8 @@ void ObjectMgr::LoadCreatureClassLevelStats() } } - stats.BaseMana = fields[5].GetUInt16(); - stats.BaseArmor = fields[6].GetUInt16(); + stats.BaseMana = fields[5].GetUInt32(); + stats.BaseArmor = fields[6].GetUInt32(); stats.AttackPower = fields[7].GetUInt16(); stats.RangedAttackPower = fields[8].GetUInt16(); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index cdd1981ada0..46c7a273a6a 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -966,7 +966,7 @@ class TC_GAME_API ObjectMgr GameObjectTemplate const* GetGameObjectTemplate(uint32 entry) const; GameObjectTemplateContainer const& GetGameObjectTemplates() const { return _gameObjectTemplateStore; } - uint32 LoadReferenceVendor(int32 vendor, int32 item_id, std::set* skip_vendors); + uint32 LoadReferenceVendor(int32 vendor, int32 item, std::set* skip_vendors); void LoadGameObjectTemplate(); void LoadGameObjectTemplateAddons(); @@ -1489,7 +1489,7 @@ class TC_GAME_API ObjectMgr } void AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedCost, bool persist = true); // for event bool RemoveVendorItem(uint32 entry, uint32 item, bool persist = true); // for event - bool IsVendorItemValid(uint32 vendor_entry, uint32 item, int32 maxcount, uint32 ptime, uint32 ExtendedCost, Player* player = nullptr, std::set* skip_vendors = nullptr, uint32 ORnpcflag = 0) const; + bool IsVendorItemValid(uint32 vendor_entry, uint32 id, int32 maxcount, uint32 ptime, uint32 ExtendedCost, Player* player = nullptr, std::set* skip_vendors = nullptr, uint32 ORnpcflag = 0) const; void LoadScriptNames(); ScriptNameContainer const& GetAllScriptNames() const; diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 5448b8e93d9..a5990e8817c 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -32,6 +32,15 @@ namespace Trinity { + template + struct GridMapTypeMaskForType : std::integral_constant { }; + + template<> struct GridMapTypeMaskForType : std::integral_constant { }; + template<> struct GridMapTypeMaskForType : std::integral_constant { }; + template<> struct GridMapTypeMaskForType : std::integral_constant { }; + template<> struct GridMapTypeMaskForType : std::integral_constant { }; + template<> struct GridMapTypeMaskForType : std::integral_constant { }; + struct TC_GAME_API VisibleNotifier { Player &i_player; @@ -191,10 +200,53 @@ namespace Trinity // SEARCHERS & LIST SEARCHERS & WORKERS // WorldObject searchers & workers + enum class WorldObjectSearcherContinuation + { + Continue, + Return + }; + + template + class SearcherFirstObjectResult + { + Type& result; + + protected: + explicit SearcherFirstObjectResult(Type& ref_) : result(ref_) { } + + WorldObjectSearcherContinuation ShouldContinue() const + { + return result ? WorldObjectSearcherContinuation::Return : WorldObjectSearcherContinuation::Continue; + } + + void Insert(Type object) + { + result = object; + } + }; + + template + class SearcherLastObjectResult + { + Type& result; + + protected: + explicit SearcherLastObjectResult(Type& ref_) : result(ref_) { } + + WorldObjectSearcherContinuation ShouldContinue() const + { + return WorldObjectSearcherContinuation::Continue; + } + + void Insert(Type object) + { + result = object; + } + }; // Generic base class to insert elements into arbitrary containers using push_back template - class ContainerInserter + class SearcherContainerResult { using InserterType = void(*)(void*, Type&&); @@ -203,7 +255,7 @@ namespace Trinity protected: template - ContainerInserter(T& ref_) : ref(&ref_) + explicit SearcherContainerResult(T& ref_) : ref(&ref_) { inserter = [](void* containerRaw, Type&& object) { @@ -212,71 +264,52 @@ namespace Trinity }; } + WorldObjectSearcherContinuation ShouldContinue() const + { + return WorldObjectSearcherContinuation::Continue; + } + void Insert(Type object) { inserter(ref, std::move(object)); } }; - template - struct WorldObjectSearcher + template + struct WorldObjectSearcherBase : Result { uint32 i_mapTypeMask; uint32 i_phaseMask; - WorldObject* &i_object; - Check &i_check; - - WorldObjectSearcher(WorldObject const* searcher, WorldObject* & result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) - : i_mapTypeMask(mapTypeMask), i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } + Check& i_check; - void Visit(GameObjectMapType &m); - void Visit(PlayerMapType &m); - void Visit(CreatureMapType &m); - void Visit(CorpseMapType &m); - void Visit(DynamicObjectMapType &m); + template + WorldObjectSearcherBase(uint32 phaseMask, Container& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) + : Result(result), i_mapTypeMask(mapTypeMask), i_phaseMask(phaseMask), i_check(check) { } - template void Visit(GridRefManager &) { } + template + void Visit(GridRefManager&); }; template - struct WorldObjectLastSearcher + struct WorldObjectSearcher : WorldObjectSearcherBase> { - uint32 i_mapTypeMask; - uint32 i_phaseMask; - WorldObject* &i_object; - Check &i_check; - - WorldObjectLastSearcher(WorldObject const* searcher, WorldObject* & result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) - : i_mapTypeMask(mapTypeMask), i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } - - void Visit(GameObjectMapType &m); - void Visit(PlayerMapType &m); - void Visit(CreatureMapType &m); - void Visit(CorpseMapType &m); - void Visit(DynamicObjectMapType &m); - - template void Visit(GridRefManager &) { } + WorldObjectSearcher(WorldObject const* searcher, WorldObject*& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) + : WorldObjectSearcherBase>(searcher->GetPhaseMask(), result, check, mapTypeMask) { } }; template - struct WorldObjectListSearcher : ContainerInserter + struct WorldObjectLastSearcher : WorldObjectSearcherBase> { - uint32 i_mapTypeMask; - uint32 i_phaseMask; - Check& i_check; + WorldObjectLastSearcher(WorldObject const* searcher, WorldObject*& result, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) + : WorldObjectSearcherBase>(searcher->GetPhaseMask(), result, check, mapTypeMask) { } + }; + template + struct WorldObjectListSearcher : WorldObjectSearcherBase> + { template - WorldObjectListSearcher(WorldObject const* searcher, Container& container, Check & check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) - : ContainerInserter(container), - i_mapTypeMask(mapTypeMask), i_phaseMask(searcher->GetPhaseMask()), i_check(check) { } - - void Visit(PlayerMapType &m); - void Visit(CreatureMapType &m); - void Visit(CorpseMapType &m); - void Visit(GameObjectMapType &m); - void Visit(DynamicObjectMapType &m); - - template void Visit(GridRefManager &) { } + WorldObjectListSearcher(WorldObject const* searcher, Container& container, Check& check, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) + : WorldObjectSearcherBase>(searcher->GetPhaseMask(), container, check, mapTypeMask) { } }; template @@ -289,100 +322,55 @@ namespace Trinity WorldObjectWorker(WorldObject const* searcher, Do const& _do, uint32 mapTypeMask = GRID_MAP_TYPE_MASK_ALL) : i_mapTypeMask(mapTypeMask), i_phaseMask(searcher->GetPhaseMask()), i_do(_do) { } - void Visit(GameObjectMapType &m) - { - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_GAMEOBJECT)) - return; - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - i_do(itr->GetSource()); - } - - void Visit(PlayerMapType &m) - { - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_PLAYER)) - return; - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - i_do(itr->GetSource()); - } - void Visit(CreatureMapType &m) - { - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CREATURE)) - return; - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - i_do(itr->GetSource()); - } - - void Visit(CorpseMapType &m) + template + void Visit(GridRefManager& m) { - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CORPSE)) + if (!(i_mapTypeMask & GridMapTypeMaskForType::value)) return; - for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr) + for (auto itr = m.begin(); itr != m.end(); ++itr) if (itr->GetSource()->InSamePhase(i_phaseMask)) i_do(itr->GetSource()); } - - void Visit(DynamicObjectMapType &m) - { - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_DYNAMICOBJECT)) - return; - for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - i_do(itr->GetSource()); - } - - template void Visit(GridRefManager &) { } }; // Gameobject searchers - template - struct GameObjectSearcher + template + struct GameObjectSearcherBase : Result { uint32 i_phaseMask; - GameObject* &i_object; Check &i_check; - GameObjectSearcher(WorldObject const* searcher, GameObject* & result, Check& check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } + template + GameObjectSearcherBase(uint32 phaseMask, Container& result, Check& check) + : Result(result), i_phaseMask(phaseMask), i_check(check) { } - void Visit(GameObjectMapType &m); + void Visit(GameObjectMapType& m); template void Visit(GridRefManager &) { } }; - // Last accepted by Check GO if any (Check can change requirements at each call) template - struct GameObjectLastSearcher + struct GameObjectSearcher : GameObjectSearcherBase> { - uint32 i_phaseMask; - GameObject* &i_object; - Check& i_check; - - GameObjectLastSearcher(WorldObject const* searcher, GameObject* & result, Check& check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } - - void Visit(GameObjectMapType &m); - - template void Visit(GridRefManager &) { } + GameObjectSearcher(WorldObject const* searcher, GameObject*& result, Check& check) + : GameObjectSearcherBase>(searcher->GetPhaseMask(), result, check) { } }; + // Last accepted by Check GO if any (Check can change requirements at each call) template - struct GameObjectListSearcher : ContainerInserter + struct GameObjectLastSearcher : GameObjectSearcherBase> { - uint32 i_phaseMask; - Check& i_check; + GameObjectLastSearcher(WorldObject const* searcher, GameObject*& result, Check& check) + : GameObjectSearcherBase>(searcher->GetPhaseMask(), result, check) { } + }; + template + struct GameObjectListSearcher : GameObjectSearcherBase> + { template - GameObjectListSearcher(WorldObject const* searcher, Container& container, Check & check) - : ContainerInserter(container), - i_phaseMask(searcher->GetPhaseMask()), i_check(check) { } - - void Visit(GameObjectMapType &m); - - template void Visit(GridRefManager &) { } + GameObjectListSearcher(WorldObject const* searcher, Container& container, Check& check) + : GameObjectSearcherBase>(searcher->GetPhaseMask(), container, check) { } }; template @@ -407,105 +395,88 @@ namespace Trinity // Unit searchers - // First accepted by Check Unit if any - template - struct UnitSearcher + template + struct UnitSearcherBase : Result { uint32 i_phaseMask; - Unit* &i_object; - Check & i_check; + Check& i_check; - UnitSearcher(WorldObject const* searcher, Unit* & result, Check & check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } + template + UnitSearcherBase(uint32 phaseMask, Container& result, Check& check) + : Result(result), i_phaseMask(phaseMask), i_check(check) { } - void Visit(CreatureMapType &m); - void Visit(PlayerMapType &m); + void Visit(CreatureMapType& m) { VisitImpl(m); } + void Visit(PlayerMapType& m) { VisitImpl(m); } - template void Visit(GridRefManager &) { } + template void Visit(GridRefManager&) { } + + private: + template void VisitImpl(GridRefManager& m); }; - // Last accepted by Check Unit if any (Check can change requirements at each call) + // First accepted by Check Unit if any template - struct UnitLastSearcher + struct UnitSearcher : UnitSearcherBase> { - uint32 i_phaseMask; - Unit* &i_object; - Check & i_check; - - UnitLastSearcher(WorldObject const* searcher, Unit* & result, Check & check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } - - void Visit(CreatureMapType &m); - void Visit(PlayerMapType &m); + UnitSearcher(WorldObject const* searcher, Unit*& result, Check& check) + : UnitSearcherBase>(searcher->GetPhaseMask(), result, check) { } + }; - template void Visit(GridRefManager &) { } + // Last accepted by Check Unit if any (Check can change requirements at each call) + template + struct UnitLastSearcher : UnitSearcherBase> + { + UnitLastSearcher(WorldObject const* searcher, Unit*& result, Check& check) + : UnitSearcherBase>(searcher->GetPhaseMask(), result, check) { } }; // All accepted by Check units if any template - struct UnitListSearcher : ContainerInserter + struct UnitListSearcher : UnitSearcherBase> { - uint32 i_phaseMask; - Check& i_check; - template UnitListSearcher(WorldObject const* searcher, Container& container, Check& check) - : ContainerInserter(container), - i_phaseMask(searcher->GetPhaseMask()), i_check(check) { } - - void Visit(PlayerMapType &m); - void Visit(CreatureMapType &m); - - template void Visit(GridRefManager &) { } + : UnitSearcherBase>(searcher->GetPhaseMask(), container, check) { } }; // Creature searchers - template - struct CreatureSearcher + template + struct CreatureSearcherBase : Result { uint32 i_phaseMask; - Creature* &i_object; - Check & i_check; + Check& i_check; - CreatureSearcher(WorldObject const* searcher, Creature* & result, Check & check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } + template + CreatureSearcherBase(uint32 phaseMask, Container& result, Check& check) + : Result(result), i_phaseMask(phaseMask), i_check(check) { } - void Visit(CreatureMapType &m); + void Visit(CreatureMapType& m); template void Visit(GridRefManager &) { } }; - // Last accepted by Check Creature if any (Check can change requirements at each call) template - struct CreatureLastSearcher + struct CreatureSearcher : CreatureSearcherBase> { - uint32 i_phaseMask; - Creature* &i_object; - Check & i_check; - - CreatureLastSearcher(WorldObject const* searcher, Creature* & result, Check & check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } - - void Visit(CreatureMapType &m); - - template void Visit(GridRefManager &) { } + CreatureSearcher(WorldObject const* searcher, Creature*& result, Check& check) + : CreatureSearcherBase>(searcher->GetPhaseMask(), result, check) { } }; + // Last accepted by Check Creature if any (Check can change requirements at each call) template - struct CreatureListSearcher : ContainerInserter + struct CreatureLastSearcher : CreatureSearcherBase> { - uint32 i_phaseMask; - Check& i_check; + CreatureLastSearcher(WorldObject const* searcher, Creature*& result, Check& check) + : CreatureSearcherBase>(searcher->GetPhaseMask(), result, check) { } + }; + template + struct CreatureListSearcher : CreatureSearcherBase> + { template CreatureListSearcher(WorldObject const* searcher, Container& container, Check & check) - : ContainerInserter(container), - i_phaseMask(searcher->GetPhaseMask()), i_check(check) { } - - void Visit(CreatureMapType &m); - - template void Visit(GridRefManager &) { } + : CreatureSearcherBase>(searcher->GetPhaseMask(), container, check) { } }; template @@ -529,56 +500,45 @@ namespace Trinity // Player searchers - template - struct PlayerSearcher + template + struct PlayerSearcherBase : Result { uint32 i_phaseMask; - Player* &i_object; - Check & i_check; + Check& i_check; - PlayerSearcher(WorldObject const* searcher, Player* & result, Check & check) - : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) { } + template + PlayerSearcherBase(uint32 phaseMask, Container& result, Check& check) + : Result(result), i_phaseMask(phaseMask), i_check(check) { } - void Visit(PlayerMapType &m); + void Visit(PlayerMapType& m); template void Visit(GridRefManager &) { } }; template - struct PlayerListSearcher : ContainerInserter + struct PlayerSearcher : PlayerSearcherBase> { - uint32 i_phaseMask; - Check& i_check; - - template - PlayerListSearcher(WorldObject const* searcher, Container& container, Check & check) - : ContainerInserter(container), - i_phaseMask(searcher->GetPhaseMask()), i_check(check) { } - - template - PlayerListSearcher(uint32 phaseMask, Container& container, Check & check) - : ContainerInserter(container), - i_phaseMask(phaseMask), i_check(check) { } - - void Visit(PlayerMapType &m); - - template void Visit(GridRefManager &) { } + PlayerSearcher(WorldObject const* searcher, Player*& result, Check& check) + : PlayerSearcherBase>(searcher->GetPhaseMask(), result, check) { } }; template - struct PlayerLastSearcher + struct PlayerLastSearcher : PlayerSearcherBase> { - uint32 i_phaseMask; - Player* &i_object; - Check& i_check; - - PlayerLastSearcher(WorldObject const* searcher, Player*& result, Check& check) : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) - { - } + PlayerLastSearcher(WorldObject const* searcher, Player*& result, Check& check) + : PlayerSearcherBase>(searcher->GetPhaseMask(), result, check) { } + }; - void Visit(PlayerMapType& m); + template + struct PlayerListSearcher : PlayerSearcherBase> + { + template + PlayerListSearcher(WorldObject const* searcher, Container& container, Check& check) + : PlayerSearcherBase>(searcher->GetPhaseMask(), container, check) { } - template void Visit(GridRefManager &) { } + template + PlayerListSearcher(uint32 phaseMask, Container& container, Check& check) + : PlayerSearcherBase>(phaseMask, container, check) { } }; template @@ -622,6 +582,44 @@ namespace Trinity // CHECKS && DO classes + // CHECK modifiers + class InRangeCheckCustomizer + { + public: + explicit InRangeCheckCustomizer(WorldObject const& obj, float range) : i_obj(obj), i_range(range) { } + + bool Test(WorldObject const* o) const + { + return i_obj.IsWithinDist(o, i_range); + } + + void Update(WorldObject const* /*o*/) { } + + private: + WorldObject const& i_obj; + float i_range; + }; + + class NearestCheckCustomizer + { + public: + explicit NearestCheckCustomizer(WorldObject const& obj, float range) : i_obj(obj), i_range(range) { } + + bool Test(WorldObject const* o) const + { + return i_obj.IsWithinDistInMap(o, i_range); + } + + void Update(WorldObject const* o) + { + i_range = i_obj.GetDistance(o); + } + + private: + WorldObject const& i_obj; + float i_range; + }; + // WorldObject check classes class TC_GAME_API AnyDeadUnitObjectInRangeCheck @@ -1375,7 +1373,12 @@ namespace Trinity bool operator()(Creature* u) { - if (u->getDeathState() != DEAD && u->GetEntry() == i_entry && u->IsAlive() == i_alive && u->GetGUID() != i_obj.GetGUID() && i_obj.IsWithinDistInMap(u, i_range)) + if (u->getDeathState() != DEAD + && u->GetEntry() == i_entry + && u->IsAlive() == i_alive + && u->GetGUID() != i_obj.GetGUID() + && i_obj.IsWithinDistInMap(u, i_range) + && u->CheckPrivateObjectOwnerVisibility(&i_obj)) { i_range = i_obj.GetDistance(u); // use found unit range as new range limit for next check return true; @@ -1393,6 +1396,114 @@ namespace Trinity NearestCreatureEntryWithLiveStateInObjectRangeCheck(NearestCreatureEntryWithLiveStateInObjectRangeCheck const&) = delete; }; + template + class CreatureWithOptionsInObjectRangeCheck + { + public: + CreatureWithOptionsInObjectRangeCheck(WorldObject const& obj, Customizer& customizer, FindCreatureOptions const& args) + : i_obj(obj), i_args(args), i_customizer(customizer) { } + + bool operator()(Creature const* u) const + { + if (u->getDeathState() == DEAD) // Despawned + return false; + + if (u->GetGUID() == i_obj.GetGUID()) + return false; + + if (!i_customizer.Test(u)) + return false; + + if (i_args.CreatureId && u->GetEntry() != i_args.CreatureId) + return false; + + if (i_args.StringId && !u->HasStringId(*i_args.StringId)) + return false; + + if (i_args.IsAlive.has_value() && u->IsAlive() != i_args.IsAlive) + return false; + + if (i_args.IsSummon.has_value() && u->IsSummon() != i_args.IsSummon) + return false; + + if (i_args.IsInCombat.has_value() && u->IsInCombat() != i_args.IsInCombat) + return false; + + if ((i_args.OwnerGuid && u->GetOwnerGUID() != i_args.OwnerGuid) + || (i_args.CharmerGuid && u->GetCharmerGUID() != i_args.CharmerGuid) + || (i_args.CreatorGuid && u->GetCreatorGUID() != i_args.CreatorGuid) + || (i_args.PrivateObjectOwnerGuid && u->GetPrivateObjectOwner() != i_args.PrivateObjectOwnerGuid)) + return false; + + if (i_args.IgnorePrivateObjects && u->IsPrivateObject()) + return false; + + if (i_args.IgnoreNotOwnedPrivateObjects && !u->CheckPrivateObjectOwnerVisibility(&i_obj)) + return false; + + if (i_args.AuraSpellId && !u->HasAura(*i_args.AuraSpellId)) + return false; + + i_customizer.Update(u); + return true; + } + + private: + WorldObject const& i_obj; + FindCreatureOptions const& i_args; + Customizer& i_customizer; + }; + + template + class GameObjectWithOptionsInObjectRangeCheck + { + public: + GameObjectWithOptionsInObjectRangeCheck(WorldObject const& obj, Customizer& customizer, FindGameObjectOptions const& args) + : i_obj(obj), i_args(args), i_customizer(customizer) { } + + bool operator()(GameObject const* go) const + { + if (i_args.IsSpawned.has_value() && i_args.IsSpawned != go->isSpawned()) // Despawned + return false; + + if (go->GetGUID() == i_obj.GetGUID()) + return false; + + if (!i_customizer.Test(go)) + return false; + + if (i_args.GameObjectId && go->GetEntry() != i_args.GameObjectId) + return false; + + if (i_args.StringId && !go->HasStringId(*i_args.StringId)) + return false; + + if (i_args.IsSummon.has_value() && (go->GetSpawnId() == 0) != i_args.IsSummon) + return false; + + if ((i_args.OwnerGuid && go->GetOwnerGUID() != i_args.OwnerGuid) + || (i_args.PrivateObjectOwnerGuid && go->GetPrivateObjectOwner() != i_args.PrivateObjectOwnerGuid)) + return false; + + if (i_args.IgnorePrivateObjects && go->IsPrivateObject()) + return false; + + if (i_args.IgnoreNotOwnedPrivateObjects && !go->CheckPrivateObjectOwnerVisibility(&i_obj)) + return false; + + if (i_args.GameObjectType && go->GetGoType() != i_args.GameObjectType) + return false; + + i_customizer.Update(go); + return true; + } + + private: + WorldObject const& i_obj; + FindGameObjectOptions const& i_args; + Customizer& i_customizer; + }; + class AnyPlayerInObjectRangeCheck { public: diff --git a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h index 5c2d958ed2c..2a852b6c046 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h +++ b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h @@ -41,469 +41,118 @@ inline void Trinity::VisibleNotifier::Visit(GridRefManager &m) // WorldObject searchers & workers -template -void Trinity::WorldObjectSearcher::Visit(GameObjectMapType &m) +template +template +void Trinity::WorldObjectSearcherBase::Visit(GridRefManager& m) { - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_GAMEOBJECT)) + if (!(i_mapTypeMask & GridMapTypeMaskForType::value)) return; - // already found - if (i_object) + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) return; - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) + for (GridReference const& ref : m) { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) + if (i_check(ref.GetSource())) { - i_object = itr->GetSource(); - return; - } - } -} - -template -void Trinity::WorldObjectSearcher::Visit(PlayerMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_PLAYER)) - return; - - // already found - if (i_object) - return; - - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; + this->Insert(ref.GetSource()); - if (i_check(itr->GetSource())) - { - i_object = itr->GetSource(); - return; + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) + return; } } } -template -void Trinity::WorldObjectSearcher::Visit(CreatureMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CREATURE)) - return; - - // already found - if (i_object) - return; - - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - { - i_object = itr->GetSource(); - return; - } - } -} - -template -void Trinity::WorldObjectSearcher::Visit(CorpseMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CORPSE)) - return; - - // already found - if (i_object) - return; - - for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - { - i_object = itr->GetSource(); - return; - } - } -} - -template -void Trinity::WorldObjectSearcher::Visit(DynamicObjectMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_DYNAMICOBJECT)) - return; - - // already found - if (i_object) - return; - - for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - { - i_object = itr->GetSource(); - return; - } - } -} - -template -void Trinity::WorldObjectLastSearcher::Visit(GameObjectMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_GAMEOBJECT)) - return; - - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::WorldObjectLastSearcher::Visit(PlayerMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_PLAYER)) - return; - - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::WorldObjectLastSearcher::Visit(CreatureMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CREATURE)) - return; - - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::WorldObjectLastSearcher::Visit(CorpseMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CORPSE)) - return; - - for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::WorldObjectLastSearcher::Visit(DynamicObjectMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_DYNAMICOBJECT)) - return; - - for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::WorldObjectListSearcher::Visit(PlayerMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_PLAYER)) - return; - - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - -template -void Trinity::WorldObjectListSearcher::Visit(CreatureMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CREATURE)) - return; - - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - -template -void Trinity::WorldObjectListSearcher::Visit(CorpseMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_CORPSE)) - return; - - for (CorpseMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - -template -void Trinity::WorldObjectListSearcher::Visit(GameObjectMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_GAMEOBJECT)) - return; - - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - -template -void Trinity::WorldObjectListSearcher::Visit(DynamicObjectMapType &m) -{ - if (!(i_mapTypeMask & GRID_MAP_TYPE_MASK_DYNAMICOBJECT)) - return; - - for (DynamicObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - // Gameobject searchers -template -void Trinity::GameObjectSearcher::Visit(GameObjectMapType &m) +template +void Trinity::GameObjectSearcherBase::Visit(GameObjectMapType& m) { - // already found - if (i_object) + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) return; - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) + for (GridReference const& ref : m) { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) + if (!ref.GetSource()->InSamePhase(i_phaseMask)) continue; - if (i_check(itr->GetSource())) + if (i_check(ref.GetSource())) { - i_object = itr->GetSource(); - return; - } - } -} + this->Insert(ref.GetSource()); -template -void Trinity::GameObjectLastSearcher::Visit(GameObjectMapType &m) -{ - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) + return; + } } } -template -void Trinity::GameObjectListSearcher::Visit(GameObjectMapType &m) -{ - for (GameObjectMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - // Unit searchers -template -void Trinity::UnitSearcher::Visit(CreatureMapType &m) +template +template +void Trinity::UnitSearcherBase::VisitImpl(GridRefManager& m) { - // already found - if (i_object) + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) return; - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) + for (GridReference const& ref : m) { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) + if (!ref.GetSource()->InSamePhase(i_phaseMask)) continue; - if (i_check(itr->GetSource())) + if (i_check(ref.GetSource())) { - i_object = itr->GetSource(); - return; - } - } -} - -template -void Trinity::UnitSearcher::Visit(PlayerMapType &m) -{ - // already found - if (i_object) - return; - - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; + this->Insert(ref.GetSource()); - if (i_check(itr->GetSource())) - { - i_object = itr->GetSource(); - return; + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) + return; } } } -template -void Trinity::UnitLastSearcher::Visit(CreatureMapType &m) -{ - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::UnitLastSearcher::Visit(PlayerMapType &m) -{ - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); - } -} - -template -void Trinity::UnitListSearcher::Visit(PlayerMapType &m) -{ - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - -template -void Trinity::UnitListSearcher::Visit(CreatureMapType &m) -{ - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - // Creature searchers -template -void Trinity::CreatureSearcher::Visit(CreatureMapType &m) +template +void Trinity::CreatureSearcherBase::Visit(CreatureMapType& m) { - // already found - if (i_object) + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) return; - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) + for (GridReference const& ref : m) { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) + if (!ref.GetSource()->InSamePhase(i_phaseMask)) continue; - if (i_check(itr->GetSource())) + if (i_check(ref.GetSource())) { - i_object = itr->GetSource(); - return; - } - } -} - -template -void Trinity::CreatureLastSearcher::Visit(CreatureMapType &m) -{ - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; + this->Insert(ref.GetSource()); - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) + return; + } } } -template -void Trinity::CreatureListSearcher::Visit(CreatureMapType &m) -{ - for (CreatureMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} +// Player searchers -template -void Trinity::PlayerListSearcher::Visit(PlayerMapType &m) +template +void Trinity::PlayerSearcherBase::Visit(PlayerMapType& m) { - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) - if (itr->GetSource()->InSamePhase(i_phaseMask)) - if (i_check(itr->GetSource())) - Insert(itr->GetSource()); -} - -template -void Trinity::PlayerSearcher::Visit(PlayerMapType &m) -{ - // already found - if (i_object) + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) return; - for (PlayerMapType::iterator itr=m.begin(); itr != m.end(); ++itr) + for (GridReference const& ref : m) { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) + if (!ref.GetSource()->InSamePhase(i_phaseMask)) continue; - if (i_check(itr->GetSource())) + if (i_check(ref.GetSource())) { - i_object = itr->GetSource(); - return; - } - } -} + this->Insert(ref.GetSource()); -template -void Trinity::PlayerLastSearcher::Visit(PlayerMapType& m) -{ - for (PlayerMapType::iterator itr = m.begin(); itr != m.end(); ++itr) - { - if (!itr->GetSource()->InSamePhase(i_phaseMask)) - continue; - - if (i_check(itr->GetSource())) - i_object = itr->GetSource(); + if (this->ShouldContinue() == WorldObjectSearcherContinuation::Return) + return; + } } } diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index e3b870cba51..7c17d794c0e 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -2013,8 +2013,10 @@ void Group::UpdateLooterGuid(WorldObject* pLootedObject, bool ifneed) } } -GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 /*MaxPlayerCount*/, bool isRated, uint32 arenaSlot) +GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 /*MaxPlayerCount*/, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid) const { + errorGuid = ObjectGuid::Empty; + // check if this group is LFG group if (isLFGGroup()) return ERR_LFG_CANT_USE_BATTLEGROUND; @@ -2042,16 +2044,15 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const* uint32 arenaTeamId = reference->GetArenaTeamId(arenaSlot); uint32 team = reference->GetTeam(); - BattlegroundQueueTypeId bgQueueTypeIdRandom = BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_RB, 0); - // check every member of the group to be able to join memberscount = 0; - for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next(), ++memberscount) + for (GroupReference const* itr = GetFirstMember(); itr != nullptr; itr = itr->next(), ++memberscount) { Player* member = itr->GetSource(); // offline member? don't let join if (!member) return ERR_BATTLEGROUND_JOIN_FAILED; + errorGuid = member->GetGUID(); // rbac permissions if (!member->CanJoinToBattleground(bgOrTemplate)) return ERR_BATTLEGROUND_JOIN_TIMED_OUT; @@ -2069,7 +2070,8 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const* if (member->InBattlegroundQueueForBattlegroundQueueType(bgQueueTypeId)) return ERR_BATTLEGROUND_JOIN_FAILED; // not blizz-like // don't let join if someone from the group is in bg queue random - if (bgOrTemplate->GetTypeID() != BATTLEGROUND_AA && member->InBattlegroundQueueForBattlegroundQueueType(bgQueueTypeIdRandom)) + bool isInRandomBgQueue = member->InBattlegroundQueueForBattlegroundQueueType(BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_RB, memberBracketEntry->GetBracketId(), 0)); + if (bgOrTemplate->GetTypeID() != BATTLEGROUND_AA && isInRandomBgQueue) return ERR_IN_RANDOM_BG; // don't let join to bg queue random if someone from the group is already in bg queue if (bgOrTemplate->GetTypeID() == BATTLEGROUND_RB && member->InBattlegroundQueue(true)) @@ -2088,6 +2090,8 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const* return ERR_BATTLEGROUND_JOIN_FAILED; } + errorGuid = ObjectGuid::Empty; + // only check for MinPlayerCount since MinPlayerCount == MaxPlayerCount for arenas... if (bgOrTemplate->isArena() && memberscount != MinPlayerCount) return ERR_ARENA_TEAM_PARTY_SIZE; diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index f03a2fc44fa..8c43bba5301 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -257,7 +257,7 @@ class TC_GAME_API Group void SetBattlegroundGroup(Battleground* bg); void SetBattlefieldGroup(Battlefield* bf); - GroupJoinBattlegroundResult CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot); + GroupJoinBattlegroundResult CanJoinBattlegroundQueue(Battleground const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid) const; void ChangeMembersGroup(ObjectGuid guid, uint8 group); void SetTargetIcon(uint8 id, ObjectGuid whoGuid, ObjectGuid targetGuid); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index d548d226bfb..5864e8c4d14 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -581,7 +581,7 @@ void Guild::Member::ChangeRank(CharacterDatabaseTransaction trans, uint8 newRank // Update rank information in player's field, if he is online. if (Player* player = FindConnectedPlayer()) - player->SetRank(newRank); + player->SetGuildRank(newRank); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_MEMBER_RANK); stmt->setUInt8 (0, newRank); @@ -796,13 +796,13 @@ bool Guild::PlayerMoveItemData::InitItem() // Anti-WPE protection. Do not move non-empty bags to bank. if (m_pItem->IsNotEmptyBag()) { - m_pPlayer->SendEquipError(EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS, m_pItem); + m_pPlayer->SendEquipError(EQUIP_ERR_DESTROY_NONEMPTY_BAG, m_pItem); m_pItem = nullptr; } // Bound items cannot be put into bank. else if (!m_pItem->CanBeTraded()) { - m_pPlayer->SendEquipError(EQUIP_ERR_ITEMS_CANT_BE_SWAPPED, m_pItem); + m_pPlayer->SendEquipError(EQUIP_ERR_CANT_SWAP, m_pItem); m_pItem = nullptr; } } @@ -1029,11 +1029,11 @@ InventoryResult Guild::BankMoveItemData::CanStore(Item* pItem, bool swap) uint32 count = pItem->GetCount(); // Soulbound items cannot be moved if (pItem->IsSoulBound()) - return EQUIP_ERR_CANT_DROP_SOULBOUND; + return EQUIP_ERR_DROP_BOUND_ITEM; // Make sure destination bank tab exists if (m_container >= m_pGuild->_GetPurchasedTabsSize()) - return EQUIP_ERR_ITEM_DOESNT_GO_INTO_BAG; + return EQUIP_ERR_WRONG_BAG_TYPE; // Slot explicitely specified. Check it. if (m_slotId != NULL_SLOT) @@ -1044,7 +1044,7 @@ InventoryResult Guild::BankMoveItemData::CanStore(Item* pItem, bool swap) pItemDest = nullptr; if (!_ReserveSpace(m_slotId, pItem, pItemDest, count)) - return EQUIP_ERR_ITEM_CANT_STACK; + return EQUIP_ERR_CANT_STACK; if (count == 0) return EQUIP_ERR_OK; @@ -1398,17 +1398,17 @@ void Guild::HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string _BroadcastEvent(GE_BANK_TAB_UPDATED, ObjectGuid::Empty, std::to_string(tabId), tab->GetName(), tab->GetIcon()); } -void Guild::HandleSetMemberNote(WorldSession* session, std::string_view name, std::string_view note, bool officer) +void Guild::HandleSetMemberNote(WorldSession* session, std::string_view note, std::string_view name, bool isPublic) { // Player must have rights to set public/officer note - if (!_HasRankRight(session->GetPlayer(), officer ? GR_RIGHT_EOFFNOTE : GR_RIGHT_EPNOTE)) + if (!_HasRankRight(session->GetPlayer(), isPublic ? GR_RIGHT_EPNOTE : GR_RIGHT_EOFFNOTE)) SendCommandResult(session, GUILD_COMMAND_PUBLIC_NOTE, ERR_GUILD_PERMISSIONS); else if (Member* member = GetMember(name)) { - if (officer) - member->SetOfficerNote(note); - else + if (isPublic) member->SetPublicNote(note); + else + member->SetOfficerNote(note); HandleRoster(session); } @@ -1579,12 +1579,12 @@ void Guild::HandleRemoveMember(WorldSession* session, std::string_view name) else { ObjectGuid guid = member->GetGUID(); + _LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUID().GetCounter(), guid.GetCounter()); + _BroadcastEvent(GE_REMOVED, ObjectGuid::Empty, name, player->GetName()); // After call to DeleteMember pointer to member becomes invalid CharacterDatabaseTransaction trans(nullptr); DeleteMember(trans, guid, false, true); - _LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUID().GetCounter(), guid.GetCounter()); - _BroadcastEvent(GE_REMOVED, ObjectGuid::Empty, name, player->GetName()); } } } @@ -1676,7 +1676,7 @@ void Guild::HandleRemoveRank(WorldSession* session, uint8 rankId) stmt->setUInt8(1, rankId); CharacterDatabase.Execute(stmt); // Delete rank - stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_LOWEST_RANK); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_RANK); stmt->setUInt32(0, m_id); stmt->setUInt8(1, rankId); CharacterDatabase.Execute(stmt); @@ -1835,12 +1835,7 @@ void Guild::SendBankLog(WorldSession* session, uint8 tabId) const void Guild::SendBankTabData(WorldSession* session, uint8 tabId, bool sendAllSlots) const { if (tabId < _GetPurchasedTabsSize()) - _SendBankContent(session, tabId, sendAllSlots); -} - -void Guild::SendBankTabsInfo(WorldSession* session, bool sendAllSlots /*= false*/) const -{ - _SendBankList(session, 0, sendAllSlots); + SendBankList(session, tabId, sendAllSlots); } void Guild::SendBankTabText(WorldSession* session, uint8 tabId) const @@ -1897,7 +1892,7 @@ void Guild::SendLoginInfo(WorldSession* session) TC_LOG_DEBUG("guild", "SMSG_GUILD_EVENT [{}] MOTD", session->GetPlayerInfo()); - SendBankTabsInfo(session); + SendBankList(session); Player* player = session->GetPlayer(); @@ -2218,7 +2213,7 @@ bool Guild::AddMember(CharacterDatabaseTransaction trans, ObjectGuid guid, uint8 { player->SetInGuild(m_id); player->SetGuildIdInvited(0); - player->SetRank(rankId); + player->SetGuildRank(rankId); member.SetStats(player); SendLoginInfo(player->GetSession()); name = player->GetName(); @@ -2294,7 +2289,7 @@ bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo // If player not online data in data field will be loaded from guild tabs no need to update it !! if (Player* newLeaderPlayer = newLeader->FindPlayer()) - newLeaderPlayer->SetRank(GR_GUILDMASTER); + newLeaderPlayer->SetGuildRank(GR_GUILDMASTER); // If leader does not exist (at guild loading with deleted leader) do not send broadcasts if (oldLeader) @@ -2312,7 +2307,7 @@ bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo if (player) { player->SetInGuild(0); - player->SetRank(0); + player->SetGuildRank(0); } else sCharacterCache->UpdateCharacterGuildId(guid, 0); @@ -2788,20 +2783,6 @@ bool Guild::_DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError return true; } -void Guild::_SendBankContent(WorldSession* session, uint8 tabId, bool sendAllSlots) const -{ - ObjectGuid guid = session->GetPlayer()->GetGUID(); - if (!_MemberHasTabRights(guid, tabId, GUILD_BANK_RIGHT_VIEW_TAB)) - return; - - _SendBankList(session, tabId, sendAllSlots); -} - -void Guild::_SendBankMoneyUpdate(WorldSession* session) const -{ - _SendBankList(session); -} - void Guild::_SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const { ASSERT(pSrc->IsBank() || pDest->IsBank()); @@ -2836,7 +2817,7 @@ void Guild::_SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) cons void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const { - _SendBankList(nullptr, tabId, false, &slots); + SendBankList(nullptr, tabId, false, &slots); } void Guild::_BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, @@ -2865,15 +2846,15 @@ void Guild::_BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, TC_LOG_DEBUG("guild", "SMSG_GUILD_EVENT [Broadcast] Event: {} ({})", GetGuildEventString(guildEvent), guildEvent); } -void Guild::_SendBankList(WorldSession* session /* = nullptr*/, uint8 tabId /*= 0*/, bool sendAllSlots /*= false*/, SlotIds *slots /*= nullptr*/) const +void Guild::SendBankList(WorldSession* session /* = nullptr*/, uint8 tabId /*= 0*/, bool fullUpdate /*= false*/, SlotIds *slots /*= nullptr*/) const { WorldPackets::Guild::GuildBankQueryResults packet; packet.Money = m_bankMoney; packet.Tab = int32(tabId); - packet.FullUpdate = sendAllSlots; + packet.FullUpdate = fullUpdate; - if (sendAllSlots && !tabId) + if (fullUpdate && !tabId) { packet.TabInfo.reserve(_GetPurchasedTabsSize()); for (uint8 i = 0; i < _GetPurchasedTabsSize(); ++i) @@ -2885,55 +2866,58 @@ void Guild::_SendBankList(WorldSession* session /* = nullptr*/, uint8 tabId /*= } } - if (BankTab const* tab = GetBankTab(tabId)) + if (!session || _MemberHasTabRights(session->GetPlayer()->GetGUID(), tabId, GUILD_BANK_RIGHT_VIEW_TAB)) { - auto fillItems = [&](auto begin, auto end, bool skipEmpty) + if (BankTab const* tab = GetBankTab(tabId)) { - for (auto itr = begin; itr != end; ++itr) + auto fillItems = [&](auto begin, auto end, bool skipEmpty) { - if (Item* tabItem = tab->GetItem(*itr)) + for (auto itr = begin; itr != end; ++itr) { - WorldPackets::Guild::GuildBankItemInfo itemInfo; - - itemInfo.Slot = *itr; - itemInfo.ItemID = tabItem->GetEntry(); - itemInfo.RandomPropertiesID = tabItem->GetItemRandomPropertyId(); - itemInfo.RandomPropertiesSeed = tabItem->GetItemSuffixFactor(); - itemInfo.Count = int32(tabItem->GetCount()); - itemInfo.Charges = int32(abs(tabItem->GetSpellCharges())); - itemInfo.EnchantmentID = int32(tabItem->GetEnchantmentId(PERM_ENCHANTMENT_SLOT)); - itemInfo.Flags = tabItem->GetInt32Value(ITEM_FIELD_FLAGS); - - for (uint32 socketSlot = 0; socketSlot < MAX_GEM_SOCKETS; ++socketSlot) + if (Item* tabItem = tab->GetItem(*itr)) { - if (uint32 enchId = tabItem->GetEnchantmentId(EnchantmentSlot(SOCK_ENCHANTMENT_SLOT + socketSlot))) + WorldPackets::Guild::GuildBankItemInfo itemInfo; + + itemInfo.Slot = *itr; + itemInfo.ItemID = tabItem->GetEntry(); + itemInfo.RandomPropertiesID = tabItem->GetItemRandomPropertyId(); + itemInfo.RandomPropertiesSeed = tabItem->GetItemSuffixFactor(); + itemInfo.Count = int32(tabItem->GetCount()); + itemInfo.Charges = int32(abs(tabItem->GetSpellCharges())); + itemInfo.EnchantmentID = int32(tabItem->GetEnchantmentId(PERM_ENCHANTMENT_SLOT)); + itemInfo.Flags = tabItem->GetInt32Value(ITEM_FIELD_FLAGS); + + for (uint32 socketSlot = 0; socketSlot < MAX_GEM_SOCKETS; ++socketSlot) { - WorldPackets::Guild::GuildBankSocketEnchant gem; - gem.SocketIndex = socketSlot; - gem.SocketEnchantID = int32(enchId); - itemInfo.SocketEnchant.push_back(gem); + if (uint32 enchId = tabItem->GetEnchantmentId(EnchantmentSlot(SOCK_ENCHANTMENT_SLOT + socketSlot))) + { + WorldPackets::Guild::GuildBankSocketEnchant gem; + gem.SocketIndex = socketSlot; + gem.SocketEnchantID = int32(enchId); + itemInfo.SocketEnchant.push_back(gem); + } } - } - packet.ItemInfo.push_back(itemInfo); - } - else if (!skipEmpty) - { - WorldPackets::Guild::GuildBankItemInfo itemInfo; + packet.ItemInfo.push_back(itemInfo); + } + else if (!skipEmpty) + { + WorldPackets::Guild::GuildBankItemInfo itemInfo; - itemInfo.Slot = *itr; - itemInfo.ItemID = 0; + itemInfo.Slot = *itr; + itemInfo.ItemID = 0; - packet.ItemInfo.push_back(itemInfo); + packet.ItemInfo.push_back(itemInfo); + } } - } - }; + }; - if (sendAllSlots) - fillItems(boost::make_counting_iterator(uint8(0)), boost::make_counting_iterator(uint8(GUILD_BANK_MAX_SLOTS)), true); - else if (slots && !slots->empty()) - fillItems(slots->begin(), slots->end(), false); + if (fullUpdate) + fillItems(boost::make_counting_iterator(uint8(0)), boost::make_counting_iterator(uint8(GUILD_BANK_MAX_SLOTS)), true); + else if (slots && !slots->empty()) + fillItems(slots->begin(), slots->end(), false); + } } if (session) @@ -2943,7 +2927,7 @@ void Guild::_SendBankList(WorldSession* session /* = nullptr*/, uint8 tabId /*= session->SendPacket(packet.Write()); TC_LOG_DEBUG("guild", "SMSG_GUILD_BANK_LIST [{}]: TabId: {}, FullSlots: {}, slots: {}", - session->GetPlayerInfo(), tabId, sendAllSlots, packet.WithdrawalsRemaining); + session->GetPlayerInfo(), tabId, fullUpdate, packet.WithdrawalsRemaining); } else /// @todo - Probably this is just sent to session + those that have sent CMSG_GUILD_BANKER_ACTIVATE { @@ -2959,7 +2943,7 @@ void Guild::_SendBankList(WorldSession* session /* = nullptr*/, uint8 tabId /*= packet.SetWithdrawalsRemaining(_GetMemberRemainingSlots(member, tabId)); player->SendDirectMessage(packet.GetRawPacket()); TC_LOG_DEBUG("guild", "SMSG_GUILD_BANK_LIST [{}]: TabId: {}, FullSlots: {}, slots: {}" - , player->GetName(), tabId, sendAllSlots, packet.WithdrawalsRemaining); + , player->GetName(), tabId, fullUpdate, packet.WithdrawalsRemaining); } } } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index c83b2233404..e42d62bab88 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -313,8 +313,8 @@ class TC_GAME_API Guild std::string GetPublicNote() const { return m_publicNote; } std::string GetOfficerNote() const { return m_officerNote; } uint8 GetClass() const { return m_class; } - uint8 GetLevel() const { return m_level; } uint8 GetGender() const { return m_gender; } + uint8 GetLevel() const { return m_level; } uint8 GetFlags() const { return m_flags; } uint32 GetZoneId() const { return m_zoneId; } bool IsOnline() const { return (m_flags & GUILDMEMBER_STATUS_ONLINE); } @@ -501,7 +501,6 @@ class TC_GAME_API Guild private: ObjectGuid::LowType m_guildId; - uint8 m_rankId; std::string m_name; uint32 m_rights; @@ -655,7 +654,7 @@ class TC_GAME_API Guild void HandleSetEmblem(WorldSession* session, EmblemInfo const& emblemInfo); void HandleSetLeader(WorldSession* session, std::string_view name); void HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string_view name, std::string_view icon); - void HandleSetMemberNote(WorldSession* session, std::string_view name, std::string_view note, bool officer); + void HandleSetMemberNote(WorldSession* session, std::string_view note, std::string_view name, bool isPublic); void HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string_view name, uint32 rights, uint32 moneyPerDay, std::array const& rightsAndSlots); void HandleBuyBankTab(WorldSession* session, uint8 tabId); void HandleInviteMember(WorldSession* session, std::string_view name); @@ -678,7 +677,7 @@ class TC_GAME_API Guild void SendInfo(WorldSession* session) const; void SendEventLog(WorldSession* session) const; void SendBankLog(WorldSession* session, uint8 tabId) const; - void SendBankTabsInfo(WorldSession* session, bool showTabs = false) const; + void SendBankList(WorldSession* session = nullptr, uint8 tabId = 0, bool fullUpdate = false, SlotIds* slots = nullptr) const; void SendBankTabData(WorldSession* session, uint8 tabId, bool sendAllSlots) const; void SendBankTabText(WorldSession* session, uint8 tabId) const; void SendPermissions(WorldSession* session) const; @@ -823,11 +822,8 @@ class TC_GAME_API Guild void _MoveItems(MoveItemData* pSrc, MoveItemData* pDest, uint32 splitedAmount); bool _DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError, uint32 splitedAmount = 0); - void _SendBankContent(WorldSession* session, uint8 tabId, bool sendAllSlots) const; - void _SendBankMoneyUpdate(WorldSession* session) const; void _SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const; void _SendBankContentUpdate(uint8 tabId, SlotIds slots) const; - void _SendBankList(WorldSession* session = nullptr, uint8 tabId = 0, bool sendFullSlots = false, SlotIds* slots = nullptr) const; void _BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, Optional param1 = {}, Optional param2 = {}, Optional param3 = {}) const; }; diff --git a/src/server/game/Handlers/ArenaTeamHandler.cpp b/src/server/game/Handlers/ArenaTeamHandler.cpp index 6a04bcce3f0..077a8e18805 100644 --- a/src/server/game/Handlers/ArenaTeamHandler.cpp +++ b/src/server/game/Handlers/ArenaTeamHandler.cpp @@ -234,8 +234,12 @@ void WorldSession::HandleArenaTeamLeaveOpcode(WorldPacket& recvData) } // Player cannot be removed during queues - if (BattlegroundQueueTypeId bgQueue = BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_AA, arenaTeam->GetType())) + for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) { + BattlegroundQueueTypeId bgQueue = _player->GetBattlegroundQueueTypeId(i); + if (bgQueue.BattlemasterListId != BATTLEGROUND_AA || bgQueue.TeamSize != arenaTeam->GetType()) + continue; + GroupQueueInfo ginfo; BattlegroundQueue& queue = sBattlegroundMgr->GetBattlegroundQueue(bgQueue); if (queue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo)) @@ -277,8 +281,12 @@ void WorldSession::HandleArenaTeamDisbandOpcode(WorldPacket& recvData) return; // Teams cannot be disbanded during queues - if (BattlegroundQueueTypeId bgQueue = BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_AA, arenaTeam->GetType())) + for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) { + BattlegroundQueueTypeId bgQueue = _player->GetBattlegroundQueueTypeId(i); + if (bgQueue.BattlemasterListId != BATTLEGROUND_AA || bgQueue.TeamSize != arenaTeam->GetType()) + continue; + GroupQueueInfo ginfo; BattlegroundQueue& queue = sBattlegroundMgr->GetBattlegroundQueue(bgQueue); if (queue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo)) @@ -336,8 +344,12 @@ void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket& recvData) } // Team cannot be removed during queues - if (BattlegroundQueueTypeId bgQueue = BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_AA, arenaTeam->GetType())) + for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) { + BattlegroundQueueTypeId bgQueue = _player->GetBattlegroundQueueTypeId(i); + if (bgQueue.BattlemasterListId != BATTLEGROUND_AA || bgQueue.TeamSize != arenaTeam->GetType()) + continue; + GroupQueueInfo ginfo; BattlegroundQueue& queue = sBattlegroundMgr->GetBattlegroundQueue(bgQueue); if (queue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo)) @@ -403,7 +415,7 @@ void WorldSession::HandleArenaTeamLeaderOpcode(WorldPacket& recvData) void WorldSession::SendArenaTeamCommandResult(uint32 teamAction, const std::string& team, const std::string& player, uint32 errorId) { - WorldPacket data(SMSG_ARENA_TEAM_COMMAND_RESULT, 4+team.length()+1+player.length()+1+4); + WorldPacket data(SMSG_ARENA_TEAM_COMMAND_RESULT, 4 + team.length() + 1 + player.length() + 1 + 4); data << uint32(teamAction); data << team; data << player; @@ -413,10 +425,10 @@ void WorldSession::SendArenaTeamCommandResult(uint32 teamAction, const std::stri void WorldSession::SendNotInArenaTeamPacket(uint8 type) { - WorldPacket data(SMSG_ARENA_ERROR, 4+1); // 886 - You are not in a %uv%u arena team - uint32 unk = 0; - data << uint32(unk); // unk(0) - if (!unk) + WorldPacket data(SMSG_ARENA_ERROR, 4+1); + uint32 error = 0; + data << uint32(error); // 0 = ERR_ARENA_NO_TEAM_II, 1 = ERR_ARENA_EXPIRED_CAIS, 2 = ERR_LFG_CANT_USE_BATTLEGROUND + if (!error) data << uint8(type); // team type (2=2v2, 3=3v3, 5=5v5), can be used for custom types... SendPacket(&data); } diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index fd6bd6da091..b50b071b943 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -76,14 +76,31 @@ void WorldSession::SendAuctionHello(ObjectGuid guid, Unit const* unit) } //call this method when player bids, creates, or deletes auction -void WorldSession::SendAuctionCommandResult(uint32 auctionItemId, AuctionAction command, AuctionError errorCode, InventoryResult bagResult) +void WorldSession::SendAuctionCommandResult(AuctionEntry const* auction, AuctionAction command, AuctionError errorCode, InventoryResult bagResult) { - WorldPacket data(SMSG_AUCTION_COMMAND_RESULT, 16); - data << int32(auctionItemId); + WorldPacket data(SMSG_AUCTION_COMMAND_RESULT, 4 + 4 + 4 + 8 + 4 + 4); + data << int32(auction ? auction->Id : 0); data << int32(command); data << int32(errorCode); - if (errorCode == ERR_AUCTION_INVENTORY) - data << int32(bagResult); + + switch (errorCode) + { + case ERR_AUCTION_OK: + if (command == AUCTION_PLACE_BID) + data << uint32(auction->bid ? auction->GetAuctionOutBid() : 0); + break; + case ERR_AUCTION_INVENTORY: + data << uint32(bagResult); + break; + case ERR_AUCTION_HIGHER_BID: + data << uint64(auction->bidder); + data << uint32(auction->bid); + data << uint32(auction->bid ? auction->GetAuctionOutBid() : 0); + break; + default: + break; + } + SendPacket(&data); } @@ -115,6 +132,15 @@ void WorldSession::SendAuctionOwnerNotification(AuctionEntry* auction) SendPacket(&data); } +void WorldSession::SendAuctionRemovedNotification(uint32 auctionId, uint32 itemEntry, int32 randomPropertyId) +{ + WorldPacket data(SMSG_AUCTION_REMOVED_NOTIFICATION, (4+4+4)); + data << uint32(auctionId); + data << uint32(itemEntry); + data << uint32(randomPropertyId); + SendPacket(&data); +} + //this void creates new auction and adds auction to some auctionhouse void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) { @@ -129,7 +155,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (itemsCount > MAX_AUCTION_ITEMS) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); recvData.rfinish(); return; } @@ -156,7 +182,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (bid > MAX_MONEY_AMOUNT || buyout > MAX_MONEY_AMOUNT) { TC_LOG_DEBUG("network", "WORLD: HandleAuctionSellItem - Player {} {} attempted to sell item with higher price than max gold amount.", _player->GetName(), _player->GetGUID().ToString()); - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); return; } @@ -200,7 +226,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (!item) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_ITEM_NOT_FOUND); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_ITEM_NOT_FOUND); return; } @@ -211,7 +237,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) item->GetTemplate()->HasFlag(ITEM_FLAG_CONJURED) || item->GetUInt32Value(ITEM_FIELD_DURATION) || item->GetCount() < count[i] || itemEntry != item->GetTemplate()->ItemId) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); return; } @@ -221,7 +247,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (!finalCount) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); return; } @@ -232,7 +258,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) { if (itemGUIDs[i] == itemGUIDs[j]) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); return; } } @@ -244,7 +270,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (item->GetMaxStackCount() < finalCount) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); return; } } @@ -257,7 +283,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) uint32 deposit = sAuctionMgr->GetAuctionDeposit(auctionHouseEntry, etime, item, finalCount); if (!_player->HasEnoughMoney(deposit)) { - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_NOT_ENOUGHT_MONEY); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_NOT_ENOUGHT_MONEY); return; } @@ -271,7 +297,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (!auctioneerData) { TC_LOG_ERROR("misc", "Data for auctioneer not found ({})", auctioneer.ToString()); - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); delete AH; return; } @@ -280,7 +306,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (!auctioneerInfo) { TC_LOG_ERROR("misc", "Non existing auctioneer ({})", auctioneer.ToString()); - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); delete AH; return; } @@ -319,7 +345,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) // Add to pending auctions, or fail with insufficient funds error if (!sAuctionMgr->PendingAuctionAdd(_player, AH)) { - SendAuctionCommandResult(AH->Id, AUCTION_SELL_ITEM, ERR_AUCTION_NOT_ENOUGHT_MONEY); + SendAuctionCommandResult(AH, AUCTION_SELL_ITEM, ERR_AUCTION_NOT_ENOUGHT_MONEY); return; } @@ -335,7 +361,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) _player->SaveInventoryAndGoldToDB(trans); CharacterDatabase.CommitTransaction(trans); - SendAuctionCommandResult(AH->Id, AUCTION_SELL_ITEM, ERR_AUCTION_OK); + SendAuctionCommandResult(AH, AUCTION_SELL_ITEM, ERR_AUCTION_OK); GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION, 1); } @@ -345,7 +371,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) if (!newItem) { TC_LOG_ERROR("network", "CMSG_AUCTION_SELL_ITEM: Could not create clone of item {}", item->GetEntry()); - SendAuctionCommandResult(0, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_SELL_ITEM, ERR_AUCTION_DATABASE_ERROR); delete AH; return; } @@ -377,7 +403,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) // Add to pending auctions, or fail with insufficient funds error if (!sAuctionMgr->PendingAuctionAdd(_player, AH)) { - SendAuctionCommandResult(AH->Id, AUCTION_SELL_ITEM, ERR_AUCTION_NOT_ENOUGHT_MONEY); + SendAuctionCommandResult(AH, AUCTION_SELL_ITEM, ERR_AUCTION_NOT_ENOUGHT_MONEY); return; } @@ -417,7 +443,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket& recvData) _player->SaveInventoryAndGoldToDB(trans); CharacterDatabase.CommitTransaction(trans); - SendAuctionCommandResult(AH->Id, AUCTION_SELL_ITEM, ERR_AUCTION_OK); + SendAuctionCommandResult(AH, AUCTION_SELL_ITEM, ERR_AUCTION_OK); GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION, 1); } @@ -456,7 +482,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) if (!auction || auction->owner == player->GetGUID().GetCounter()) { //you cannot bid your own auction: - SendAuctionCommandResult(0, AUCTION_PLACE_BID, ERR_AUCTION_BID_OWN); + SendAuctionCommandResult(nullptr, AUCTION_PLACE_BID, ERR_AUCTION_BID_OWN); return; } @@ -466,7 +492,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) if (!auction_owner && sCharacterCache->GetCharacterAccountIdByGuid(ownerGuid) == player->GetSession()->GetAccountId()) { //you cannot bid your another character auction: - SendAuctionCommandResult(0, AUCTION_PLACE_BID, ERR_AUCTION_BID_OWN); + SendAuctionCommandResult(auction, AUCTION_PLACE_BID, ERR_AUCTION_BID_OWN); return; } @@ -478,14 +504,15 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) if ((price < auction->buyout || auction->buyout == 0) && price < auction->bid + auction->GetAuctionOutBid()) { - //auction has already higher bid, client tests it! + // client already test it but just in case ... + SendAuctionCommandResult(auction, AUCTION_PLACE_BID, ERR_AUCTION_HIGHER_BID); return; } if (!player->HasEnoughMoney(price)) { - //you don't have enought money!, client tests! - //SendAuctionCommandResult(auction->auctionId, AUCTION_PLACE_BID, ???); + // client already test it but just in case ... + SendAuctionCommandResult(auction, AUCTION_PLACE_BID, ERR_AUCTION_NOT_ENOUGHT_MONEY); return; } @@ -533,7 +560,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) trans->Append(stmt); } - SendAuctionCommandResult(auction->Id, AUCTION_PLACE_BID, ERR_AUCTION_OK); + SendAuctionCommandResult(auction, AUCTION_PLACE_BID, ERR_AUCTION_OK); } else { @@ -560,7 +587,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) sAuctionMgr->SendAuctionSuccessfulMail(auction, trans); sAuctionMgr->SendAuctionWonMail(auction, trans); - SendAuctionCommandResult(auction->Id, AUCTION_PLACE_BID, ERR_AUCTION_OK); + SendAuctionCommandResult(auction, AUCTION_PLACE_BID, ERR_AUCTION_OK); auction->DeleteFromDB(trans); @@ -608,8 +635,7 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket& recvData) uint32 auctionCut = auction->GetAuctionCut(); if (!player->HasEnoughMoney(auctionCut)) //player doesn't have enough money, maybe message needed return; - //some auctionBidderNotification would be needed, but don't know that parts.. - sAuctionMgr->SendAuctionCancelledToBidderMail(auction, trans); + sAuctionMgr->SendAuctionCancelledToBidderMail(auction, trans, pItem); player->ModifyMoney(-int32(auctionCut)); } @@ -621,20 +647,20 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket& recvData) else { TC_LOG_ERROR("network", "Auction id: {} got non existing item (item guid : {})!!!", auction->Id, auction->itemGUIDLow); - SendAuctionCommandResult(0, AUCTION_CANCEL, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(auction, AUCTION_CANCEL, ERR_AUCTION_DATABASE_ERROR); return; } } else { - SendAuctionCommandResult(0, AUCTION_CANCEL, ERR_AUCTION_DATABASE_ERROR); + SendAuctionCommandResult(nullptr, AUCTION_CANCEL, ERR_AUCTION_DATABASE_ERROR); //this code isn't possible ... maybe there should be assert TC_LOG_ERROR("entities.player.cheat", "CHEATER : {} tried to cancel auction (id: {}) of another player or auction is NULL", player->GetGUID().ToString(), auctionId); return; } //inform player, that auction is removed - SendAuctionCommandResult(auction->Id, AUCTION_CANCEL, ERR_AUCTION_OK); + SendAuctionCommandResult(auction, AUCTION_CANCEL, ERR_AUCTION_OK); // Now remove the auction @@ -788,7 +814,7 @@ void WorldSession::HandleAuctionListItems(WorldPacket& recvData) WorldPacket data(SMSG_AUCTION_LIST_RESULT, (4+4+4)); uint32 count = 0; uint32 totalcount = 0; - data << (uint32) 0; + data << uint32(0); // converting string that we try to find to lower case std::wstring wsearchedname; diff --git a/src/server/game/Handlers/BankHandler.cpp b/src/server/game/Handlers/BankHandler.cpp index 745f131b824..1c306cc6707 100644 --- a/src/server/game/Handlers/BankHandler.cpp +++ b/src/server/game/Handlers/BankHandler.cpp @@ -83,7 +83,7 @@ void WorldSession::HandleAutoBankItemOpcode(WorldPackets::Bank::AutoBankItem& pa if (dest.size() == 1 && dest[0].pos == item->GetPos()) { - _player->SendEquipError(EQUIP_ERR_NONE, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_SWAP, item, nullptr); return; } diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 3facbdaa57d..81f3591dc98 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -18,8 +18,11 @@ #include "WorldSession.h" #include "ArenaTeam.h" #include "ArenaTeamMgr.h" +#include "Battlefield.h" +#include "BattlefieldMgr.h" #include "Battleground.h" #include "BattlegroundMgr.h" +#include "BattlegroundPackets.h" #include "Chat.h" #include "Common.h" #include "Creature.h" @@ -30,21 +33,15 @@ #include "Group.h" #include "Language.h" #include "Log.h" +#include "NPCPackets.h" #include "Object.h" #include "ObjectAccessor.h" -#include "ObjectMgr.h" -#include "Opcodes.h" #include "Player.h" #include "World.h" -#include "WorldPacket.h" -void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket& recvData) +void WorldSession::HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello) { - ObjectGuid guid; - recvData >> guid; - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_BATTLEMASTER_HELLO Message from {}", guid.ToString()); - - Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_BATTLEMASTER); + Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(hello.Unit, UNIT_NPC_FLAG_BATTLEMASTER); if (!unit) return; @@ -62,49 +59,25 @@ void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket& recvData) return; } - SendBattleGroundList(guid, bgTypeId); -} - -void WorldSession::SendBattleGroundList(ObjectGuid guid, BattlegroundTypeId bgTypeId) -{ - WorldPacket data; - sBattlegroundMgr->BuildBattlegroundListPacket(&data, guid, _player, bgTypeId, 0); - SendPacket(&data); + sBattlegroundMgr->SendBattlegroundList(_player, hello.Unit, bgTypeId); } -void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) +void WorldSession::HandleBattlemasterJoinOpcode(WorldPackets::Battleground::BattlemasterJoin& battlemasterJoin) { - ObjectGuid guid; - uint32 bgTypeId_; - uint32 instanceId; - uint8 joinAsGroup; bool isPremade = false; - Group* grp = nullptr; - - recvData >> guid; // battlemaster guid - recvData >> bgTypeId_; // battleground type id (DBC id) - recvData >> instanceId; // instance id, 0 if First Available selected - recvData >> joinAsGroup; // join as group - - if (!sBattlemasterListStore.LookupEntry(bgTypeId_)) + if (!sBattlemasterListStore.LookupEntry(battlemasterJoin.BattlemasterListID)) { - TC_LOG_ERROR("network", "Battleground: invalid bgtype ({}) received. possible cheater? player {}", bgTypeId_, _player->GetGUID().ToString()); + TC_LOG_ERROR("network", "Battleground: invalid bgtype ({}) received. possible cheater? player {}", battlemasterJoin.BattlemasterListID, _player->GetGUID().ToString()); return; } - if (DisableMgr::IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, bgTypeId_, nullptr)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, battlemasterJoin.BattlemasterListID, nullptr)) { ChatHandler(this).PSendSysMessage(LANG_BG_DISABLED); return; } - BattlegroundTypeId bgTypeId = BattlegroundTypeId(bgTypeId_); - - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_BATTLEMASTER_JOIN Message from {}", guid.ToString()); - - // can do this, since it's battleground, not arena - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, 0); - BattlegroundQueueTypeId bgQueueTypeIdRandom = BattlegroundMgr::BGQueueTypeId(BATTLEGROUND_RB, 0); + BattlegroundTypeId bgTypeId = BattlegroundTypeId(battlemasterJoin.BattlemasterListID); // ignore if player is already in BG if (_player->InBattleground()) @@ -112,8 +85,8 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) // get bg instance or bg template if instance not found Battleground* bg = nullptr; - if (instanceId) - bg = sBattlegroundMgr->GetBattlegroundThroughClientInstance(instanceId, bgTypeId); + if (battlemasterJoin.InstanceID) + bg = sBattlegroundMgr->GetBattlegroundThroughClientInstance(battlemasterJoin.InstanceID, bgTypeId); if (!bg) bg = sBattlegroundMgr->GetBattlegroundTemplate(bgTypeId); @@ -125,53 +98,64 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) if (!bracketEntry) return; - GroupJoinBattlegroundResult err; + // can do this, since it's battleground, not arena + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, bracketEntry->GetBracketId(), 0); + + GroupJoinBattlegroundResult err = ERR_BATTLEGROUND_NONE; + + Group const* grp = _player->GetGroup(); // check queue conditions - if (!joinAsGroup) + if (!battlemasterJoin.JoinAsGroup) { if (GetPlayer()->isUsingLfg()) { - // player is using dungeon finder or raid finder - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_LFG_CANT_USE_BATTLEGROUND); - GetPlayer()->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_LFG_CANT_USE_BATTLEGROUND); + SendPacket(battlefieldStatus.Write()); return; } // check RBAC permissions if (!_player->CanJoinToBattleground(bg)) { - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_BATTLEGROUND_JOIN_TIMED_OUT); - GetPlayer()->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_BATTLEGROUND_JOIN_TIMED_OUT); + SendPacket(battlefieldStatus.Write()); return; } // check Deserter debuff if (_player->IsDeserter()) { - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS); + SendPacket(battlefieldStatus.Write()); return; } - if (_player->GetBattlegroundQueueIndex(bgQueueTypeIdRandom) < PLAYER_MAX_BATTLEGROUND_QUEUES) + bool isInRandomBgQueue = [&] + { + for (uint32 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) + if (_player->GetBattlegroundQueueTypeId(i).BattlemasterListId == BATTLEGROUND_RB) + return true; + return false; + }(); + if (!BattlegroundMgr::IsRandomBattleground(bgTypeId) && isInRandomBgQueue) { // player is already in random queue - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_IN_RANDOM_BG); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_IN_RANDOM_BG); + SendPacket(battlefieldStatus.Write()); return; } - if (_player->InBattlegroundQueue(true) && bgTypeId == BATTLEGROUND_RB) + if (_player->InBattlegroundQueue(true) && !isInRandomBgQueue && BattlegroundMgr::IsRandomBattleground(bgTypeId)) { // player is already in queue, can't start random queue - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_IN_NON_RANDOM_BG); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_IN_NON_RANDOM_BG); + SendPacket(battlefieldStatus.Write()); return; } @@ -183,9 +167,9 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) // check if has free queue slots if (!_player->HasFreeBattlegroundQueueId()) { - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_BATTLEGROUND_TOO_MANY_QUEUES); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_BATTLEGROUND_TOO_MANY_QUEUES); + SendPacket(battlefieldStatus.Write()); return; } @@ -194,28 +178,27 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) return; BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); - - GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, nullptr, bgTypeId, bracketEntry, 0, false, isPremade, 0, 0); - uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry->GetBracketId()); - // already checked if queueSlot is valid, now just get it + GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, nullptr, bracketEntry, false, isPremade, 0, 0); + uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo); uint32 queueSlot = _player->AddBattlegroundQueueId(bgQueueTypeId); - WorldPacket data; - // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType, 0); - SendPacket(&data); - TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for bg queue type {} bg type {}: GUID {}, NAME {}", - bgQueueTypeId, bgTypeId, _player->GetGUID().ToString(), _player->GetName()); + WorldPackets::Battleground::BattlefieldStatusQueued battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusQueued(&battlefieldStatus, bg, queueSlot, ginfo->JoinTime, bgQueueTypeId, avgTime); + SendPacket(battlefieldStatus.Write()); + + TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for bg queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, {}, NAME {}", + bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), + _player->GetGUID().ToString(), _player->GetName()); } else { - grp = _player->GetGroup(); - // no group found, error if (!grp) return; if (grp->GetLeaderGUID() != _player->GetGUID()) return; - err = grp->CanJoinBattlegroundQueue(bg, bgQueueTypeId, 0, bg->GetMaxPlayersPerTeam(), false, 0); + + ObjectGuid errorGuid; + err = grp->CanJoinBattlegroundQueue(bg, bgQueueTypeId, 0, bg->GetMaxPlayersPerTeam(), false, 0, errorGuid); isPremade = (grp->GetMembersCount() >= bg->GetMinPlayersPerTeam()); BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); @@ -225,96 +208,63 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) if (err > 0) { TC_LOG_DEBUG("bg.battleground", "Battleground: the following players are joining as group:"); - ginfo = bgQueue.AddGroup(_player, grp, bgTypeId, bracketEntry, 0, false, isPremade, 0, 0); - avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry->GetBracketId()); + ginfo = bgQueue.AddGroup(_player, grp, bracketEntry, false, isPremade, 0, 0); + avgTime = bgQueue.GetAverageQueueWaitTime(ginfo); } - for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->GetSource(); if (!member) continue; // this should never happen - WorldPacket data; - if (err <= 0) { - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); - member->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, err, &errorGuid); + member->SendDirectMessage(battlefieldStatus.Write()); continue; } // add to queue uint32 queueSlot = member->AddBattlegroundQueueId(bgQueueTypeId); - // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType, 0); - member->SendDirectMessage(&data); - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); - member->SendDirectMessage(&data); - TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for bg queue type {} bg type {}: GUID {}, NAME {}", - bgQueueTypeId, bgTypeId, member->GetGUID().ToString(), member->GetName()); + WorldPackets::Battleground::BattlefieldStatusQueued battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusQueued(&battlefieldStatus, bg, queueSlot, ginfo->JoinTime, bgQueueTypeId, avgTime); + member->SendDirectMessage(battlefieldStatus.Write()); + + WorldPackets::Battleground::GroupJoinedBattleground groupJoinedBattleground; + BattlegroundMgr::BuildGroupJoinedBattlegroundPacket(&groupJoinedBattleground, BattlegroundTypeId(err)); + member->SendDirectMessage(battlefieldStatus.Write()); + TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for bg queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, {}, NAME {}", + bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), + member->GetGUID().ToString(), member->GetName()); } TC_LOG_DEBUG("bg.battleground", "Battleground: group end"); } - sBattlegroundMgr->ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId()); + sBattlegroundMgr->ScheduleQueueUpdate(0, bgQueueTypeId); } -void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket& /*recvData*/) +void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPackets::Battleground::BattlegroundPlayerPositionsRequest& /*battlegroundPlayerPositionsRequest*/) { - TC_LOG_DEBUG("network", "WORLD: Recvd MSG_BATTLEGROUND_PLAYER_POSITIONS Message"); - Battleground* bg = _player->GetBattleground(); if (!bg) // can't be received if player not in battleground return; - uint32 flagCarrierCount = 0; - Player* allianceFlagCarrier = nullptr; - Player* hordeFlagCarrier = nullptr; - + WorldPackets::Battleground::BattlegroundPlayerPositions playerPositions; if (ObjectGuid guid = bg->GetFlagPickerGUID(TEAM_ALLIANCE)) - { - allianceFlagCarrier = ObjectAccessor::FindPlayer(guid); - if (allianceFlagCarrier) - ++flagCarrierCount; - } + if (Player* allianceFlagCarrier = ObjectAccessor::GetPlayer(*_player, guid)) + playerPositions.FlagCarriers.emplace_back(guid, allianceFlagCarrier->GetPosition()); if (ObjectGuid guid = bg->GetFlagPickerGUID(TEAM_HORDE)) - { - hordeFlagCarrier = ObjectAccessor::FindPlayer(guid); - if (hordeFlagCarrier) - ++flagCarrierCount; - } - - WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, 4 + 4 + 16 * flagCarrierCount); - // Used to send several player positions (found used in AV) - data << 0; // CGBattlefieldInfo__m_numPlayerPositions - /* - for (CGBattlefieldInfo__m_numPlayerPositions) - data << guid << posx << posy; - */ - data << flagCarrierCount; - if (allianceFlagCarrier) - { - data << uint64(allianceFlagCarrier->GetGUID()); - data << float(allianceFlagCarrier->GetPositionX()); - data << float(allianceFlagCarrier->GetPositionY()); - } - - if (hordeFlagCarrier) - { - data << uint64(hordeFlagCarrier->GetGUID()); - data << float(hordeFlagCarrier->GetPositionX()); - data << float(hordeFlagCarrier->GetPositionY()); - } + if (Player* hordeFlagCarrier = ObjectAccessor::GetPlayer(*_player, guid)) + playerPositions.FlagCarriers.emplace_back(guid, hordeFlagCarrier->GetPosition()); - SendPacket(&data); + SendPacket(playerPositions.Write()); } -void WorldSession::HandlePVPLogDataOpcode(WorldPacket & /*recvData*/) +void WorldSession::HandlePVPLogDataOpcode(WorldPackets::Battleground::PVPLogDataRequest& /*pvpLogDataRequest*/) { - TC_LOG_DEBUG("network", "WORLD: Recvd MSG_PVP_LOG_DATA Message"); - Battleground* bg = _player->GetBattleground(); if (!bg) return; @@ -323,101 +273,73 @@ void WorldSession::HandlePVPLogDataOpcode(WorldPacket & /*recvData*/) if (bg->isArena()) return; - WorldPacket data; - bg->BuildPvPLogDataPacket(data); - SendPacket(&data); - - TC_LOG_DEBUG("network", "WORLD: Sent MSG_PVP_LOG_DATA Message"); + WorldPackets::Battleground::PVPMatchStatistics pvpMatchStatistics; + bg->BuildPvPLogDataPacket(pvpMatchStatistics); + SendPacket(pvpMatchStatistics.Write()); } -void WorldSession::HandleBattlefieldListOpcode(WorldPacket &recvData) +void WorldSession::HandleBattlefieldListOpcode(WorldPackets::Battleground::BattlefieldListRequest& battlefieldList) { - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_BATTLEFIELD_LIST Message"); - - uint32 bgTypeId; - recvData >> bgTypeId; // id from DBC - - uint8 fromWhere; - recvData >> fromWhere; // 0 - battlemaster (lua: ShowBattlefieldList), 1 - UI (lua: RequestBattlegroundInstanceInfo) - - uint8 canGainXP; - recvData >> canGainXP; // players with locked xp have their own bg queue on retail - - BattlemasterListEntry const* bl = sBattlemasterListStore.LookupEntry(bgTypeId); - if (!bl) + BattlemasterListEntry const* battlemasterListEntry = sBattlemasterListStore.LookupEntry(battlefieldList.ListID); + if (!battlemasterListEntry) { - TC_LOG_DEBUG("bg.battleground", "BattlegroundHandler: invalid bgtype ({}) with player (Name: {}, {}) received.", bgTypeId, _player->GetName(), _player->GetGUID().ToString()); + TC_LOG_DEBUG("bg.battleground", "BattlegroundHandler: invalid bgtype ({}) with player (Name: {}, {}) received.", battlefieldList.ListID, _player->GetName(), _player->GetGUID().ToString()); return; } - WorldPacket data; - sBattlegroundMgr->BuildBattlegroundListPacket(&data, ObjectGuid::Empty, _player, BattlegroundTypeId(bgTypeId), fromWhere); - SendPacket(&data); + sBattlegroundMgr->SendBattlegroundList(_player, ObjectGuid::Empty, BattlegroundTypeId(battlefieldList.ListID)); } -void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) +void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::BattlefieldPort& battlefieldPort) { - uint8 type; // arenatype if arena - uint8 unk2; // unk, can be 0x0 (may be if was invited?) and 0x1 - uint32 bgTypeId_; // type id from dbc - uint16 unk; // 0x1F90 constant? - uint8 action; // enter battle 0x1, leave queue 0x0 - - recvData >> type >> unk2 >> bgTypeId_ >> unk >> action; - if (!sBattlemasterListStore.LookupEntry(bgTypeId_)) - { - TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} ArenaType: {}, Unk: {}, BgType: {}, Action: {}. Invalid BgType!", - GetPlayerInfo(), type, unk2, bgTypeId_, action); - return; - } - - if (!_player->InBattlegroundQueue()) + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundQueueTypeId::FromPacked(battlefieldPort.QueueID); + uint32 queueSlot = _player->GetBattlegroundQueueIndex(bgQueueTypeId); + if (queueSlot >= PLAYER_MAX_BATTLEGROUND_QUEUES) { - TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} ArenaType: {}, Unk: {}, BgType: {}, Action: {}. Player not in queue!", - GetPlayerInfo(), type, unk2, bgTypeId_, action); + TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, AcceptedInvite: {}. Invalid queueSlot.", + GetPlayerInfo(), bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), battlefieldPort.AcceptedInvite); return; } - //get GroupQueueInfo from BattlegroundQueue - BattlegroundTypeId bgTypeId = BattlegroundTypeId(bgTypeId_); - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, type); BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); + //we must use temporary variable, because GroupQueueInfo pointer can be deleted in BattlegroundQueue::RemovePlayer() function GroupQueueInfo ginfo; if (!bgQueue.GetPlayerGroupInfoData(_player->GetGUID(), &ginfo)) { - TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} ArenaType: {}, Unk: {}, BgType: {}, Action: {}. Player not in queue (No player Group Info)!", - GetPlayerInfo(), type, unk2, bgTypeId_, action); + TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, AcceptedInvite: {}. Player not in queue (No player Group Info)!", + GetPlayerInfo(), bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), battlefieldPort.AcceptedInvite); return; } - // if action == 1, then instanceId is required - if (!ginfo.IsInvitedToBGInstanceGUID && action == 1) + // if action == 1, then player must have been invited to join + if (!ginfo.IsInvitedToBGInstanceGUID && battlefieldPort.AcceptedInvite) { - TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} ArenaType: {}, Unk: {}, BgType: {}, Action: {}. Player is not invited to any bg!", - GetPlayerInfo(), type, unk2, bgTypeId_, action); + TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, AcceptedInvite: {}. Player is not invited to any bg!", + GetPlayerInfo(), bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), battlefieldPort.AcceptedInvite); return; } + BattlegroundTypeId bgTypeId = BattlegroundTypeId(bgQueueTypeId.BattlemasterListId); Battleground* bg = sBattlegroundMgr->GetBattleground(ginfo.IsInvitedToBGInstanceGUID, bgTypeId); if (!bg) { - if (action) + if (battlefieldPort.AcceptedInvite) { - TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} ArenaType: {}, Unk: {}, BgType: {}, Action: {}. Cant find BG with id {}!", - GetPlayerInfo(), type, unk2, bgTypeId_, action, ginfo.IsInvitedToBGInstanceGUID); + TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, AcceptedInvite: {}. Cant find BG with id {}!", + GetPlayerInfo(), bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), battlefieldPort.AcceptedInvite, ginfo.IsInvitedToBGInstanceGUID); return; } bg = sBattlegroundMgr->GetBattlegroundTemplate(bgTypeId); if (!bg) { - TC_LOG_ERROR("network", "BattlegroundHandler: bg_template not found for type id {}.", bgTypeId); + TC_LOG_ERROR("network", "BattlegroundHandler: BattlegroundTemplate not found for type id {}.", bgTypeId); return; } } - TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} ArenaType: {}, Unk: {}, BgType: {}, Action: {}.", - GetPlayerInfo(), type, unk2, bgTypeId_, action); + TC_LOG_DEBUG("bg.battleground", "CMSG_BATTLEFIELD_PORT {} queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, AcceptedInvite: {}.", + GetPlayerInfo(), bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), battlefieldPort.AcceptedInvite); // expected bracket entry PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bg->GetMapId(), _player->GetLevel()); @@ -425,16 +347,16 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) return; //some checks if player isn't cheating - it is not exactly cheating, but we cannot allow it - if (action == 1 && ginfo.ArenaType == 0) + if (battlefieldPort.AcceptedInvite && bgQueue.GetQueueId().TeamSize == 0) { //if player is trying to enter battleground (not arena!) and he has deserter debuff, we must just remove him from queue if (_player->IsDeserter()) { //send bg command result to show nice message - WorldPacket data2; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data2, ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS); - _player->SendDirectMessage(&data2); - action = 0; + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS); + SendPacket(battlefieldStatus.Write()); + battlefieldPort.AcceptedInvite = false; TC_LOG_DEBUG("bg.battleground", "Player {} {} has a deserter debuff, do not port him to battleground!", _player->GetName(), _player->GetGUID().ToString()); } //if player don't match battleground max level, then do not allow him to enter! (this might happen when player leveled up during his waiting in queue @@ -442,12 +364,11 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) { TC_LOG_ERROR("network", "Player {} {} has level ({}) higher than maxlevel ({}) of battleground ({})! Do not port him to battleground!", _player->GetName(), _player->GetGUID().ToString(), _player->GetLevel(), bg->GetMaxLevel(), bg->GetTypeID()); - action = 0; + battlefieldPort.AcceptedInvite = false; } } - uint32 queueSlot = _player->GetBattlegroundQueueIndex(bgQueueTypeId); - WorldPacket data; - if (action) + + if (battlefieldPort.AcceptedInvite) { // check Freeze debuff if (_player->HasAura(9454)) @@ -468,8 +389,9 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) // stop taxi flight at port _player->FinishTaxiFlight(); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), ginfo.Team); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusActive battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusActive(&battlefieldStatus, bg, _player, queueSlot, bgQueueTypeId); + SendPacket(battlefieldStatus.Write()); // remove battleground queue status from BGmgr bgQueue.RemovePlayer(_player->GetGUID(), false); @@ -487,7 +409,9 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) sBattlegroundMgr->SendToBattleground(_player, ginfo.IsInvitedToBGInstanceGUID, bgTypeId); // add only in HandleMoveWorldPortAck() // bg->AddPlayer(_player, team); - TC_LOG_DEBUG("bg.battleground", "Battleground: player {} {} joined battle for bg {}, bgtype {}, queue type {}.", _player->GetName(), _player->GetGUID().ToString(), bg->GetInstanceID(), bg->GetTypeID(), bgQueueTypeId); + TC_LOG_DEBUG("bg.battleground", "Battleground: player {} ({}) joined battle for bg {}, bgtype {}, queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}.", + _player->GetName(), _player->GetGUID().ToString(), bg->GetInstanceID(), bg->GetTypeID(), + bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize)); } else // leave queue { @@ -505,14 +429,20 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) at->SaveToDB(); } } + + WorldPackets::Battleground::BattlefieldStatusNone battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNone(&battlefieldStatus, queueSlot); + SendPacket(battlefieldStatus.Write()); + _player->RemoveBattlegroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to queue->removeplayer, it causes bugs - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); bgQueue.RemovePlayer(_player->GetGUID(), true); // player left queue, we should update it - do not update Arena Queue - if (!ginfo.ArenaType) - sBattlegroundMgr->ScheduleQueueUpdate(ginfo.ArenaMatchmakerRating, ginfo.ArenaType, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId()); - SendPacket(&data); - TC_LOG_DEBUG("bg.battleground", "Battleground: player {} {} left queue for bgtype {}, queue type {}.", _player->GetName(), _player->GetGUID().ToString(), bg->GetTypeID(), bgQueueTypeId); + if (!bgQueue.GetQueueId().TeamSize) + sBattlegroundMgr->ScheduleQueueUpdate(ginfo.ArenaMatchmakerRating, bgQueueTypeId); + + TC_LOG_DEBUG("bg.battleground", "Battleground: player {} ({}) left queue for bgtype {}, queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}.", + _player->GetName(), _player->GetGUID().ToString(), bg->GetTypeID(), + bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize)); // track if player refuses to join the BG after being invited if (bg->isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS) && @@ -526,15 +456,8 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) } } -void WorldSession::HandleBattlefieldLeaveOpcode(WorldPacket& recvData) +void WorldSession::HandleBattlefieldLeaveOpcode(WorldPackets::Battleground::BattlefieldLeave& /*battlefieldLeave*/) { - TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_LEAVE_BATTLEFIELD Message"); - - recvData.read_skip(); // unk1 - recvData.read_skip(); // unk2 - recvData.read_skip(); // BattlegroundTypeId - recvData.read_skip(); // unk3 - // not allow leave battleground in combat if (_player->IsInCombat()) if (Battleground* bg = _player->GetBattleground()) @@ -544,35 +467,31 @@ void WorldSession::HandleBattlefieldLeaveOpcode(WorldPacket& recvData) _player->LeaveBattleground(); } -void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) +void WorldSession::HandleRequestBattlefieldStatusOpcode(WorldPackets::Battleground::RequestBattlefieldStatus& /*requestBattlefieldStatus*/) { - // empty opcode - TC_LOG_DEBUG("network", "WORLD: Battleground status"); - - WorldPacket data; // we must update all queues here Battleground* bg = nullptr; for (uint8 i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) { BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i); - if (!bgQueueTypeId) + if (bgQueueTypeId == BATTLEGROUND_QUEUE_NONE) continue; - BattlegroundTypeId bgTypeId = BattlegroundMgr::BGTemplateId(bgQueueTypeId); - uint8 arenaType = BattlegroundMgr::BGArenaType(bgQueueTypeId); - if (bgTypeId == _player->GetBattlegroundTypeId()) + BattlegroundTypeId bgTypeId = BattlegroundTypeId(bgQueueTypeId.BattlemasterListId); + bg = _player->GetBattleground(); + if (bg) { - bg = _player->GetBattleground(); - //i cannot check any variable from player class because player class doesn't know if player is in 2v2 / 3v3 or 5v5 arena - //so i must use bg pointer to get that information - if (bg && bg->GetArenaType() == arenaType) + BattlegroundPlayer const* bgPlayer = bg->GetBattlegroundPlayerData(_player->GetGUID()); + if (bgPlayer) { - // this line is checked, i only don't know if GetStartTime is changing itself after bg end! - // send status in Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType, _player->GetBGTeam()); - SendPacket(&data); + //i cannot check any variable from player class because player class doesn't know if player is in 2v2 / 3v3 or 5v5 arena + //so i must use bg pointer to get that information + WorldPackets::Battleground::BattlefieldStatusActive battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusActive(&battlefieldStatus, bg, _player, i, bgQueueTypeId); + SendPacket(battlefieldStatus.Write()); continue; } } + //we are sending update to player about queue - he can be invited there! //get GroupQueueInfo for queue status BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); @@ -584,10 +503,10 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) bg = sBattlegroundMgr->GetBattleground(ginfo.IsInvitedToBGInstanceGUID, bgTypeId); if (!bg) continue; - uint32 remainingTime = getMSTimeDiff(GameTime::GetGameTimeMS(), ginfo.RemoveInviteTime); - // send status invited to Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_JOIN, remainingTime, 0, arenaType, 0); - SendPacket(&data); + + WorldPackets::Battleground::BattlefieldStatusNeedConfirmation battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusNeedConfirmation(&battlefieldStatus, bg, i, getMSTimeDiff(GameTime::GetGameTimeMS(), ginfo.RemoveInviteTime), bgQueueTypeId); + SendPacket(battlefieldStatus.Write()); } else { @@ -600,60 +519,34 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) if (!bracketEntry) continue; - uint32 avgTime = bgQueue.GetAverageQueueWaitTime(&ginfo, bracketEntry->GetBracketId()); - // send status in Battleground Queue - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(ginfo.JoinTime, GameTime::GetGameTimeMS()), arenaType, 0); - SendPacket(&data); + uint32 avgTime = bgQueue.GetAverageQueueWaitTime(&ginfo); + WorldPackets::Battleground::BattlefieldStatusQueued battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusQueued(&battlefieldStatus, bg, i, 0, bgQueueTypeId, avgTime); + SendPacket(battlefieldStatus.Write()); } } } -void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) +void WorldSession::HandleBattlemasterJoinArena(WorldPackets::Battleground::BattlemasterJoinArena& packet) { - TC_LOG_DEBUG("network", "WORLD: CMSG_BATTLEMASTER_JOIN_ARENA"); - - ObjectGuid guid; // arena Battlemaster guid - uint8 arenaslot; // 2v2, 3v3 or 5v5 - uint8 asGroup; // asGroup - uint8 isRated; // isRated - Group* grp = nullptr; - - recvData >> guid >> arenaslot >> asGroup >> isRated; - // ignore if rated but queued solo - if (isRated && !asGroup) + if (packet.IsRated && !packet.JoinAsGroup) return; // ignore if we already in BG or BG queue if (_player->InBattleground()) return; - Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_BATTLEMASTER); + Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.BattlemasterGuid, UNIT_NPC_FLAG_BATTLEMASTER); if (!unit) return; - uint8 arenatype = 0; + uint8 arenatype = ArenaTeam::GetTypeBySlot(packet.TeamSizeIndex); uint32 arenaRating = 0; uint32 matchmakerRating = 0; uint32 previousOpponents = 0; - switch (arenaslot) - { - case 0: - arenatype = ARENA_TYPE_2v2; - break; - case 1: - arenatype = ARENA_TYPE_3v3; - break; - case 2: - arenatype = ARENA_TYPE_5v5; - break; - default: - TC_LOG_ERROR("network", "Unknown arena slot {} at HandleBattlemasterJoinArena()", arenaslot); - return; - } - - //check existance + //check existence Battleground* bg = sBattlegroundMgr->GetBattlegroundTemplate(BATTLEGROUND_AA); if (!bg) { @@ -668,29 +561,28 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) } BattlegroundTypeId bgTypeId = bg->GetTypeID(); - BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, arenatype); PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bg->GetMapId(), _player->GetLevel()); if (!bracketEntry) return; - GroupJoinBattlegroundResult err = ERR_GROUP_JOIN_BATTLEGROUND_FAIL; - - if (!asGroup) + BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, bracketEntry->GetBracketId(), arenatype); + Group* grp = _player->GetGroup(); + if (!packet.JoinAsGroup) { if (_player->isUsingLfg()) { // player is using dungeon finder or raid finder - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_LFG_CANT_USE_BATTLEGROUND); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_LFG_CANT_USE_BATTLEGROUND); + SendPacket(battlefieldStatus.Write()); return; } if (!_player->CanJoinToBattleground(bg)) { - WorldPacket data; - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_BATTLEGROUND_JOIN_FAILED); - _player->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_BATTLEGROUND_JOIN_FAILED); + SendPacket(battlefieldStatus.Write()); return; } @@ -704,27 +596,26 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) } else { - grp = _player->GetGroup(); // no group found, error if (!grp) return; if (grp->GetLeaderGUID() != _player->GetGUID()) return; - err = grp->CanJoinBattlegroundQueue(bg, bgQueueTypeId, arenatype, arenatype, isRated != 0, arenaslot); } uint32 ateamId = 0; - if (isRated) + if (packet.IsRated) { - ateamId = _player->GetArenaTeamId(arenaslot); + ateamId = _player->GetArenaTeamId(packet.TeamSizeIndex); // check real arenateam existence only here (if it was moved to group->CanJoin .. () then we would ahve to get it twice) ArenaTeam* at = sArenaTeamMgr->GetArenaTeamById(ateamId); if (!at) { - _player->GetSession()->SendNotInArenaTeamPacket(arenatype); + SendNotInArenaTeamPacket(arenatype); return; } + // get the team rating for queueing arenaRating = at->GetRating(); matchmakerRating = at->GetAverageMMR(grp); @@ -736,24 +627,26 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) previousOpponents = at->GetPreviousOpponents(); } - BattlegroundQueue &bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); - if (asGroup) + BattlegroundQueue& bgQueue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId); + if (packet.JoinAsGroup) { uint32 avgTime = 0; + GroupQueueInfo* ginfo = nullptr; + ObjectGuid errorGuid; + GroupJoinBattlegroundResult err = grp->CanJoinBattlegroundQueue(bg, bgQueueTypeId, arenatype, arenatype, true, packet.TeamSizeIndex, errorGuid); if (err > 0) { - TC_LOG_DEBUG("bg.battleground", "Battleground: arena join as group start"); - if (isRated) + if (packet.IsRated) { - TC_LOG_DEBUG("bg.battleground", "Battleground: arena team id {}, leader {} queued with matchmaker rating {} for type {}", _player->GetArenaTeamId(arenaslot), _player->GetName(), matchmakerRating, arenatype); + TC_LOG_DEBUG("bg.battleground", "Battleground: arena team id {}, leader {} queued with matchmaker rating {} for type {}", _player->GetArenaTeamId(packet.TeamSizeIndex), _player->GetName(), matchmakerRating, arenatype); bg->SetRated(true); } else bg->SetRated(false); - GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, grp, bgTypeId, bracketEntry, arenatype, isRated != 0, false, arenaRating, matchmakerRating, ateamId, previousOpponents); - avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry->GetBracketId()); + ginfo = bgQueue.AddGroup(_player, grp, bracketEntry, packet.IsRated, false, arenaRating, matchmakerRating, ateamId, previousOpponents); + avgTime = bgQueue.GetAverageQueueWaitTime(ginfo); } for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) @@ -762,50 +655,61 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) if (!member) continue; - WorldPacket data; - if (err <= 0) { - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); - member->SendDirectMessage(&data); + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, err, &errorGuid); + member->SendDirectMessage(battlefieldStatus.Write()); continue; } + if (!_player->CanJoinToBattleground(bg)) + { + WorldPackets::Battleground::BattlefieldStatusFailed battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusFailed(&battlefieldStatus, ERR_BATTLEGROUND_JOIN_FAILED, &errorGuid); + member->SendDirectMessage(battlefieldStatus.Write()); + return; + } + // add to queue uint32 queueSlot = member->AddBattlegroundQueueId(bgQueueTypeId); - // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype, 0); - member->SendDirectMessage(&data); - sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); - member->SendDirectMessage(&data); - TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for arena as group bg queue type {} bg type {}: {}, NAME {}", bgQueueTypeId, bgTypeId, member->GetGUID().ToString(), member->GetName()); + WorldPackets::Battleground::BattlefieldStatusQueued battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusQueued(&battlefieldStatus, bg, queueSlot, ginfo->JoinTime, bgQueueTypeId, avgTime); + member->SendDirectMessage(battlefieldStatus.Write()); + + WorldPackets::Battleground::GroupJoinedBattleground groupJoinedBattleground; + BattlegroundMgr::BuildGroupJoinedBattlegroundPacket(&groupJoinedBattleground, BattlegroundTypeId(err)); + member->SendDirectMessage(groupJoinedBattleground.Write()); + TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for arena as group bg queue {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}, {}, NAME {}", + bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), + member->GetGUID().ToString(), member->GetName()); } } else { - GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, nullptr, bgTypeId, bracketEntry, arenatype, isRated != 0, false, arenaRating, matchmakerRating, ateamId, previousOpponents); - uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo, bracketEntry->GetBracketId()); + GroupQueueInfo* ginfo = bgQueue.AddGroup(_player, nullptr, bracketEntry, packet.IsRated, false, arenaRating, matchmakerRating, ateamId, previousOpponents); + uint32 avgTime = bgQueue.GetAverageQueueWaitTime(ginfo); uint32 queueSlot = _player->AddBattlegroundQueueId(bgQueueTypeId); - WorldPacket data; - // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype, 0); - SendPacket(&data); - TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for arena, skirmish, bg queue type {} bg type {}: {}, NAME {}", bgQueueTypeId, bgTypeId, _player->GetGUID().ToString(), _player->GetName()); + WorldPackets::Battleground::BattlefieldStatusQueued battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusQueued(&battlefieldStatus, bg, queueSlot, ginfo->JoinTime, bgQueueTypeId, avgTime); + SendPacket(battlefieldStatus.Write()); + + TC_LOG_DEBUG("bg.battleground", "Battleground: player joined queue for arena, skirmish, bg queue type {{ BattlemasterListId: {}, BracketId: {}, TeamSize: {} }}: {}, NAME {}", + bgQueueTypeId.BattlemasterListId, uint32(bgQueueTypeId.BracketId), uint32(bgQueueTypeId.TeamSize), + _player->GetGUID().ToString(), _player->GetName()); } - sBattlegroundMgr->ScheduleQueueUpdate(matchmakerRating, arenatype, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId()); + + sBattlegroundMgr->ScheduleQueueUpdate(matchmakerRating, bgQueueTypeId); } -void WorldSession::HandleReportPvPAFK(WorldPacket& recvData) +void WorldSession::HandleReportPvPAFK(WorldPackets::Battleground::ReportPvPPlayerAFK& reportPvPPlayerAFK) { - ObjectGuid playerGuid; - recvData >> playerGuid; - Player* reportedPlayer = ObjectAccessor::FindPlayer(playerGuid); - + Player* reportedPlayer = ObjectAccessor::FindPlayer(reportPvPPlayerAFK.Offender); if (!reportedPlayer) { - TC_LOG_INFO("bg.reportpvpafk", "WorldSession::HandleReportPvPAFK: {} [IP: {}] reported {}", _player->GetName(), _player->GetSession()->GetRemoteAddress(), playerGuid.ToString()); + TC_LOG_INFO("bg.reportpvpafk", "WorldSession::HandleReportPvPAFK: {} [IP: {}] reported {}", _player->GetName(), _player->GetSession()->GetRemoteAddress(), reportPvPPlayerAFK.Offender.ToString()); return; } @@ -813,3 +717,56 @@ void WorldSession::HandleReportPvPAFK(WorldPacket& recvData) reportedPlayer->ReportedAfkBy(_player); } + +void WorldSession::HandleAreaSpiritHealerQueryOpcode(WorldPackets::Battleground::AreaSpiritHealerQuery& areaSpiritHealerQuery) +{ + Player* player = GetPlayer(); + Creature* spiritHealer = ObjectAccessor::GetCreature(*player, areaSpiritHealerQuery.HealerGuid); + if (!spiritHealer) + return; + + if (!spiritHealer->IsSpiritService()) + return; + + if (Battleground* bg = _player->GetBattleground()) + sBattlegroundMgr->SendAreaSpiritHealerQueryOpcode(_player, bg, areaSpiritHealerQuery.HealerGuid); + + if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) + bf->SendAreaSpiritHealerQueryOpcode(_player, areaSpiritHealerQuery.HealerGuid); +} + +void WorldSession::HandleAreaSpiritHealerQueueOpcode(WorldPackets::Battleground::AreaSpiritHealerQueue& areaSpiritHealerQueue) +{ + Creature* spiritHealer = ObjectAccessor::GetCreature(*GetPlayer(), areaSpiritHealerQueue.HealerGuid); + if (!spiritHealer) + return; + + if (!spiritHealer->IsSpiritService()) + return; + + if (Battleground* bg = _player->GetBattleground()) + bg->AddPlayerToResurrectQueue(areaSpiritHealerQueue.HealerGuid, _player->GetGUID()); + + if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) + bf->AddPlayerToResurrectQueue(areaSpiritHealerQueue.HealerGuid, _player->GetGUID()); +} + +void WorldSession::HandleHearthAndResurrect(WorldPackets::Battleground::HearthAndResurrect& /*hearthAndResurrect*/) +{ + if (_player->IsInFlight()) + return; + + if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) + { + bf->PlayerAskToLeave(_player); + return; + } + + AreaTableEntry const* atEntry = sAreaTableStore.LookupEntry(_player->GetAreaId()); + if (!atEntry || !(atEntry->Flags & AREA_FLAG_WINTERGRASP_2)) + return; + + _player->BuildPlayerRepop(); + _player->ResurrectPlayer(1.0f); + _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation()); +} diff --git a/src/server/game/Handlers/BattlefieldHandler.cpp b/src/server/game/Handlers/BattlefieldHandler.cpp index 934ba73d6fc..d64564bff75 100644 --- a/src/server/game/Handlers/BattlefieldHandler.cpp +++ b/src/server/game/Handlers/BattlefieldHandler.cpp @@ -155,14 +155,10 @@ void WorldSession::HandleBfEntryInviteResponse(WorldPacket& recvData) // If player accept invitation if (accepted) - { bf->PlayerAcceptInviteToWar(_player); - } else - { if (_player->GetZoneId() == bf->GetZoneId()) bf->KickPlayerFromBattlefield(_player->GetGUID()); - } } /** @@ -178,9 +174,6 @@ void WorldSession::HandleBfQueueExitRequest(WorldPacket& recvData) TC_LOG_DEBUG("misc", "HandleBfQueueExitRequest: battleId: {} ", battleId); - Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); - if (!bf) - return; - - bf->AskToLeaveQueue(_player); + if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId)) + bf->AskToLeaveQueue(_player); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 8d9ce0217ae..bd916a61f86 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -595,12 +595,12 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) stmt->setUInt32(2, realm.Id.Realm); trans->Append(stmt); - LoginDatabase.CommitTransaction(trans); - - AddTransactionCallback(CharacterDatabase.AsyncCommitTransaction(characterTransaction)).AfterComplete([this, newChar = std::move(newChar)](bool success) + AddTransactionCallback(CharacterDatabase.AsyncCommitTransaction(characterTransaction)).AfterComplete([this, newChar = std::move(newChar), trans](bool success) { if (success) { + LoginDatabase.CommitTransaction(trans); + TC_LOG_INFO("entities.player.character", "Account: {} (IP: {}) Create Character: {} {}", GetAccountId(), GetRemoteAddress(), newChar->GetName(), newChar->GetGUID().ToString()); sScriptMgr->OnPlayerCreate(newChar.get()); sCharacterCache->AddCharacterCacheEntry(newChar->GetGUID(), GetAccountId(), newChar->GetName(), newChar->GetNativeGender(), newChar->GetRace(), newChar->GetClass(), newChar->GetLevel()); @@ -776,12 +776,12 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder) { Field* fields = resultGuild->Fetch(); pCurrChar->SetInGuild(fields[0].GetUInt32()); - pCurrChar->SetRank(fields[1].GetUInt8()); + pCurrChar->SetGuildRank(fields[1].GetUInt8()); } else if (pCurrChar->GetGuildId()) // clear guild related fields in case wrong data about non existed membership { pCurrChar->SetInGuild(0); - pCurrChar->SetRank(0); + pCurrChar->SetGuildRank(0); } if (pCurrChar->GetGuildId() != 0) @@ -1305,7 +1305,7 @@ void WorldSession::HandleAlterAppearance(WorldPacket& recvData) // 0 - ok // 1, 3 - not enough money - // 2 - you have to seat on barber chair + // 2 - you have to sit on barber chair if (!_player->HasEnoughMoney(cost)) { SendBarberShopResult(BARBER_SHOP_RESULT_NO_MONEY); diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 50f5cefe9eb..ef38b1edef0 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -366,7 +366,10 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) (HasPermission(rbac::RBAC_PERM_CAN_FILTER_WHISPERS) && !sender->isAcceptWhispers() && !sender->IsInWhisperWhiteList(receiver->GetGUID()))) sender->AddWhisperWhiteList(receiver->GetGUID()); - GetPlayer()->Whisper(msg, Language(lang), receiver); + if (lang == LANG_ADDON) + GetPlayer()->WhisperAddon(msg, receiver); + else + GetPlayer()->Whisper(msg, Language(lang), receiver); break; } case CHAT_MSG_PARTY: @@ -649,6 +652,9 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData) case EMOTE_STATE_KNEEL: case EMOTE_ONESHOT_NONE: break; + case EMOTE_STATE_DANCE: + GetPlayer()->SetEmoteState(emote); + break; default: // Only allow text-emotes for "dead" entities (feign death included) if (GetPlayer()->HasUnitState(UNIT_STATE_DIED)) diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 1cff1a545a4..e9d64c786e9 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -525,7 +525,7 @@ void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket& recvData) if (!group) return; - uint8 x; + uint8 x; recvData >> x; /** error handling **/ @@ -533,9 +533,7 @@ void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket& recvData) // everything's fine, do it if (x == 0xFF) // target icon request - { group->SendTargetIconList(this); - } else // target icon update { if (group->isRaidGroup() && !group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID())) @@ -803,7 +801,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke { AuraApplication const* aurApp = player->GetVisibleAura(i); *data << uint32(aurApp ? aurApp->GetBase()->GetId() : 0); - *data << uint8(1); + *data << uint8(aurApp ? aurApp->GetFlags() : 0); } } } @@ -812,9 +810,9 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke if (mask & GROUP_UPDATE_FLAG_PET_GUID) { if (pet) - *data << (uint64) pet->GetGUID(); + *data << pet->GetGUID(); else - *data << (uint64) 0; + *data << uint64(0); } if (mask & GROUP_UPDATE_FLAG_PET_NAME) @@ -906,15 +904,15 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket &recvData) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_REQUEST_PARTY_MEMBER_STATS"); - ObjectGuid Guid; - recvData >> Guid; + ObjectGuid guid; + recvData >> guid; - Player* player = ObjectAccessor::FindConnectedPlayer(Guid); + Player* player = ObjectAccessor::FindConnectedPlayer(guid); if (!player || !GetPlayer()->IsInSameRaidWith(player)) { WorldPacket data(SMSG_PARTY_MEMBER_STATS_FULL, 3+4+2); data << uint8(0); // only for SMSG_PARTY_MEMBER_STATS_FULL, probably arena/bg related - data << Guid.WriteAsPacked(); + data << guid.WriteAsPacked(); data << uint32(GROUP_UPDATE_FLAG_STATUS); data << uint16(MEMBER_STATUS_OFFLINE); SendPacket(&data); @@ -1006,7 +1004,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket &recvData) data << uint32(pet->GetMaxHealth()); if (updateFlags & GROUP_UPDATE_FLAG_PET_POWER_TYPE) - data << (uint8)pet->GetPowerType(); + data << uint8(pet->GetPowerType()); if (updateFlags & GROUP_UPDATE_FLAG_PET_CUR_POWER) data << uint16(pet->GetPower(pet->GetPowerType())); @@ -1038,17 +1036,12 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket &recvData) SendPacket(&data); } -/*!*/void WorldSession::HandleRequestRaidInfoOpcode(WorldPacket & /*recvData*/) +void WorldSession::HandleRequestRaidInfoOpcode(WorldPacket& /*recvData*/) { // every time the player checks the character screen _player->SendRaidInfo(); } -/*void WorldSession::HandleGroupCancelOpcode(WorldPacket& recvData) -{ - TC_LOG_DEBUG("WORLD: got CMSG_GROUP_CANCEL."); -}*/ - void WorldSession::HandleOptOutOfLootOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_OPT_OUT_OF_LOOT"); diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index 8a8e1c8d85e..3519f5f1811 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -151,7 +151,7 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPackets::Guild::GuildSetM if (normalizePlayerName(packet.NoteeName)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetMemberNote(this, packet.NoteeName, packet.Note, false); + guild->HandleSetMemberNote(this, packet.Note, packet.NoteeName, false); } void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPackets::Guild::GuildSetMemberNote& packet) @@ -161,7 +161,7 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPackets::Guild::GuildSet if (normalizePlayerName(packet.NoteeName)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetMemberNote(this, packet.NoteeName, packet.Note, true); + guild->HandleSetMemberNote(this, packet.Note, packet.NoteeName, true); } void WorldSession::HandleGuildSetRankPermissions(WorldPackets::Guild::GuildSetRankPermissions& packet) @@ -265,7 +265,7 @@ void WorldSession::HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivat return; } - guild->SendBankTabsInfo(this, packet.FullUpdate); + guild->SendBankList(this, 0, packet.FullUpdate); } // Called when opening guild bank tab only (first one) @@ -276,7 +276,7 @@ void WorldSession::HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTa if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->SendBankTabData(this, packet.Tab, true /*packet.FullUpdate*/); + guild->SendBankList(this, packet.Tab, true /*packet.FullUpdate*/); // HACK: client doesn't query entire tab content if it had received SMSG_GUILD_BANK_LIST in this session // but we broadcast bank updates to entire guild when *ANYONE* changes anything, incorrectly initializing clients // tab content with only data for that change @@ -332,7 +332,7 @@ void WorldSession::HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapIt // Player <-> Bank // Allow to work with inventory only if (!Player::IsInventoryPos(playerBag, playerSlotId) && !(playerBag == NULL_BAG && playerSlotId == NULL_SLOT)) - GetPlayer()->SendEquipError(EQUIP_ERR_NONE, nullptr); + GetPlayer()->SendEquipError(EQUIP_ERR_INTERNAL_BAG_ERROR, nullptr); else guild->SwapItemsWithInventory(GetPlayer(), toChar != 0, packet.BankTab, packet.BankSlot, playerBag, playerSlotId, splitedAmount); } diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index ec546fcbf97..b22de311602 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -56,7 +56,7 @@ void WorldSession::HandleSplitItemOpcode(WorldPacket& recvData) if (!_player->IsValidPos(dstbag, dstslot, false)) // can be autostore pos { - _player->SendEquipError(EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, nullptr, nullptr); + _player->SendEquipError(EQUIP_ERR_WRONG_SLOT, nullptr, nullptr); return; } @@ -83,7 +83,7 @@ void WorldSession::HandleSwapInvItemOpcode(WorldPacket& recvData) if (!_player->IsValidPos(INVENTORY_SLOT_BAG_0, dstslot, true)) { - _player->SendEquipError(EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, nullptr, nullptr); + _player->SendEquipError(EQUIP_ERR_WRONG_SLOT, nullptr, nullptr); return; } @@ -147,7 +147,7 @@ void WorldSession::HandleSwapItem(WorldPacket& recvData) if (!_player->IsValidPos(dstbag, dstslot, true)) { - _player->SendEquipError(EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, nullptr, nullptr); + _player->SendEquipError(EQUIP_ERR_WRONG_SLOT, nullptr, nullptr); return; } @@ -295,7 +295,7 @@ void WorldSession::HandleDestroyItemOpcode(WorldPacket& recvData) if (pItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_USER_DESTROY)) { - _player->SendEquipError(EQUIP_ERR_CANT_DROP_SOULBOUND, nullptr, nullptr); + _player->SendEquipError(EQUIP_ERR_DROP_BOUND_ITEM, nullptr, nullptr); return; } @@ -549,28 +549,12 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket& recvData) else return; // cheating - uint8 bag = NULL_BAG; // init for case invalid bagGUID - - // find bag slot by bag guid - if (bagguid == _player->GetGUID()) + uint8 bag = NULL_BAG; + if (bagguid == GetPlayer()->GetGUID()) // The client sends the player guid when trying to store an item in the default backpack bag = INVENTORY_SLOT_BAG_0; + else if (Item* bagItem = _player->GetItemByGuid(bagguid)) + bag = bagItem->GetSlot(); else - { - for (int i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; ++i) - { - if (Bag* pBag = _player->GetBagByPos(i)) - { - if (bagguid == pBag->GetGUID()) - { - bag = i; - break; - } - } - } - } - - // bag not found, cheating? - if (bag == NULL_BAG) return; GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, bag, bagslot); @@ -653,41 +637,48 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) { if (VendorItem const* item = items->GetItem(slot)) { - if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(item->item)) + ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(item->item); + if (!itemTemplate) + continue; + + uint32 leftInStock = !item->maxcount ? 0xFFFFFFFF : vendor->GetVendorItemCurrentCount(item); + if (!_player->IsGameMaster()) // ignore conditions if GM on { - if (!(itemTemplate->AllowableClass & _player->GetClassMask()) && itemTemplate->Bonding == BIND_WHEN_PICKED_UP && !_player->IsGameMaster()) + // Respect allowed class + if (!(itemTemplate->AllowableClass & _player->GetClassMask()) && itemTemplate->Bonding == BIND_WHEN_PICKED_UP) continue; + // Only display items in vendor lists for the team the // player is on. If GM on, display all items. - if (!_player->IsGameMaster() && ((itemTemplate->HasFlag(ITEM_FLAG2_FACTION_HORDE) && _player->GetTeam() == ALLIANCE) || (itemTemplate->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && _player->GetTeam() == HORDE))) + if ((itemTemplate->HasFlag(ITEM_FLAG2_FACTION_HORDE) && _player->GetTeam() == ALLIANCE) || + (itemTemplate->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && _player->GetTeam() == HORDE)) continue; // Items sold out are not displayed in list - uint32 leftInStock = !item->maxcount ? 0xFFFFFFFF : vendor->GetVendorItemCurrentCount(item); - if (!_player->IsGameMaster() && !leftInStock) + if (leftInStock == 0) continue; + } - if (!sConditionMgr->IsObjectMeetingVendorItemConditions(vendor->GetEntry(), item->item, _player, vendor)) - { - TC_LOG_DEBUG("condition", "SendListInventory: conditions not met for creature entry {} item {}", vendor->GetEntry(), item->item); - continue; - } + if (!sConditionMgr->IsObjectMeetingVendorItemConditions(vendor->GetEntry(), item->item, _player, vendor)) + { + TC_LOG_DEBUG("condition", "SendListInventory: conditions not met for creature entry {} item {}", vendor->GetEntry(), item->item); + continue; + } - // reputation discount - int32 price = item->IsGoldRequired(itemTemplate) ? uint32(floor(itemTemplate->BuyPrice * discountMod)) : 0; + // reputation discount + int32 price = item->IsGoldRequired(itemTemplate) ? uint32(floor(itemTemplate->BuyPrice * discountMod)) : 0; - data << uint32(slot + 1); // client expects counting to start at 1 - data << uint32(item->item); - data << uint32(itemTemplate->DisplayInfoID); - data << int32(leftInStock); - data << uint32(price); - data << uint32(itemTemplate->MaxDurability); - data << uint32(itemTemplate->BuyCount); - data << uint32(item->ExtendedCost); + data << uint32(slot + 1); // client expects counting to start at 1 + data << uint32(item->item); + data << uint32(itemTemplate->DisplayInfoID); + data << int32(leftInStock); + data << uint32(price); + data << uint32(itemTemplate->MaxDurability); + data << uint32(itemTemplate->BuyCount); + data << uint32(item->ExtendedCost); - if (++count >= MAX_VENDOR_ITEMS) - break; - } + if (++count >= MAX_VENDOR_ITEMS) + break; } } @@ -716,7 +707,7 @@ void WorldSession::HandleAutoStoreBagItemOpcode(WorldPacket& recvData) if (!_player->IsValidPos(dstbag, NULL_SLOT, false)) // can be autostore pos { - _player->SendEquipError(EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, nullptr, nullptr); + _player->SendEquipError(EQUIP_ERR_WRONG_SLOT, nullptr, nullptr); return; } @@ -745,7 +736,7 @@ void WorldSession::HandleAutoStoreBagItemOpcode(WorldPacket& recvData) if (dest.size() == 1 && dest[0].pos == src) { // just remove grey item state - _player->SendEquipError(EQUIP_ERR_NONE, pItem, nullptr); + _player->SendEquipError(EQUIP_ERR_INTERNAL_BAG_ERROR, pItem, nullptr); return; } @@ -757,7 +748,7 @@ void WorldSession::HandleSetAmmoOpcode(WorldPacket& recvData) { if (!_player->IsAlive()) { - _player->SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, nullptr, nullptr); + _player->SendEquipError(EQUIP_ERR_PLAYER_DEAD, nullptr, nullptr); return; } @@ -859,44 +850,44 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recvData) if (item == gift) // not possable with pacjket from real client { - _player->SendEquipError(EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_WRAPPED, item, nullptr); return; } if (item->IsEquipped()) { - _player->SendEquipError(EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_EQUIPPED, item, nullptr); return; } if (!item->GetGuidValue(ITEM_FIELD_GIFTCREATOR).IsEmpty()) // HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPED); { - _player->SendEquipError(EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_WRAPPED, item, nullptr); return; } if (item->IsBag()) { - _player->SendEquipError(EQUIP_ERR_BAGS_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_BAGS, item, nullptr); return; } if (item->IsSoulBound()) { - _player->SendEquipError(EQUIP_ERR_BOUND_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_BOUND, item, nullptr); return; } if (item->GetMaxStackCount() != 1) { - _player->SendEquipError(EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_STACKABLE, item, nullptr); return; } // maybe not correct check (it is better than nothing) - if (item->GetTemplate()->MaxCount>0) + if (item->GetTemplate()->MaxCount > 0) { - _player->SendEquipError(EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED, item, nullptr); + _player->SendEquipError(EQUIP_ERR_CANT_WRAP_UNIQUE, item, nullptr); return; } @@ -1108,9 +1099,10 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recvData) { if (GemEnchants[i]) { + uint32 gemCount = 1; itemTarget->SetEnchantment(EnchantmentSlot(SOCK_ENCHANTMENT_SLOT+i), GemEnchants[i], 0, 0, _player->GetGUID()); if (Item* guidItem = _player->GetItemByGuid(gem_guids[i])) - _player->DestroyItem(guidItem->GetBagSlot(), guidItem->GetSlot(), true); + _player->DestroyItemCount(guidItem, gemCount, true); } } diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index 590e62774b5..d41d1b2aaa3 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -455,12 +455,12 @@ void WorldSession::HandleLootMasterGiveOpcode(WorldPacket& recvData) ItemPosCountVec dest; InventoryResult msg = target->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, item.itemid, item.count); if (!item.AllowedForPlayer(target, true)) - msg = EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; + msg = EQUIP_ERR_CANT_EQUIP_EVER; if (msg != EQUIP_ERR_OK) { - if (msg == EQUIP_ERR_CANT_CARRY_MORE_OF_THIS) + if (msg == EQUIP_ERR_ITEM_MAX_COUNT) _player->SendLootError(lootguid, LOOT_ERROR_MASTER_UNIQUE_ITEM); - else if (msg == EQUIP_ERR_INVENTORY_FULL) + else if (msg == EQUIP_ERR_INV_FULL) _player->SendLootError(lootguid, LOOT_ERROR_MASTER_INV_FULL); else _player->SendLootError(lootguid, LOOT_ERROR_MASTER_OTHER); diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 858b35f6ac2..22fe050c80d 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -194,7 +194,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& sendMail) // handle empty bag before CanBeTraded, since that func already has that check if (item->IsNotEmptyBag()) { - player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS); + player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_DESTROY_NONEMPTY_BAG); return; } @@ -206,7 +206,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& sendMail) if (item->IsBoundAccountWide() && item->IsSoulBound() && GetAccountId() != receiverAccountId) { - player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS); + player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_NOT_SAME_ACCOUNT); return; } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index eda9900a26e..29d61b64340 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -17,9 +17,6 @@ #include "WorldSession.h" #include "AccountMgr.h" -#include "Battlefield.h" -#include "BattlefieldMgr.h" -#include "Battleground.h" #include "BattlegroundMgr.h" #include "CharacterPackets.h" #include "Chat.h" @@ -1327,72 +1324,6 @@ void WorldSession::SendSetPhaseShift(uint32 PhaseShift) data << uint32(PhaseShift); SendPacket(&data); } -// Battlefield and Battleground -void WorldSession::HandleAreaSpiritHealerQueryOpcode(WorldPacket& recvData) -{ - TC_LOG_DEBUG("network", "WORLD: CMSG_AREA_SPIRIT_HEALER_QUERY"); - - Battleground* bg = _player->GetBattleground(); - - ObjectGuid guid; - recvData >> guid; - - Creature* unit = GetPlayer()->GetMap()->GetCreature(guid); - if (!unit) - return; - - if (!unit->IsSpiritService()) // it's not spirit service - return; - - if (bg) - sBattlegroundMgr->SendAreaSpiritHealerQueryOpcode(_player, bg, guid); - - if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) - bf->SendAreaSpiritHealerQueryOpcode(_player, guid); -} - -void WorldSession::HandleAreaSpiritHealerQueueOpcode(WorldPacket& recvData) -{ - TC_LOG_DEBUG("network", "WORLD: CMSG_AREA_SPIRIT_HEALER_QUEUE"); - - Battleground* bg = _player->GetBattleground(); - - ObjectGuid guid; - recvData >> guid; - - Creature* unit = GetPlayer()->GetMap()->GetCreature(guid); - if (!unit) - return; - - if (!unit->IsSpiritService()) // it's not spirit service - return; - - if (bg) - bg->AddPlayerToResurrectQueue(guid, _player->GetGUID()); - - if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) - bf->AddPlayerToResurrectQueue(guid, _player->GetGUID()); -} - -void WorldSession::HandleHearthAndResurrect(WorldPacket& /*recvData*/) -{ - if (_player->IsInFlight()) - return; - - if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId())) - { - bf->PlayerAskToLeave(_player); - return; - } - - AreaTableEntry const* atEntry = sAreaTableStore.LookupEntry(_player->GetAreaId()); - if (!atEntry || !(atEntry->Flags & AREA_FLAG_WINTERGRASP_2)) - return; - - _player->BuildPlayerRepop(); - _player->ResurrectPlayer(1.0f); - _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation()); -} void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket) { diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 8064c73d622..8df75eb2e67 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -303,6 +303,10 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvPacket) if (!mover->movespline->Finalized()) return; + // stop some emotes at player move + if (plrMover && (plrMover->GetEmoteState() != 0)) + plrMover->SetEmoteState(EMOTE_ONESHOT_NONE); + /* handle special cases */ if (movementInfo.HasMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) { diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp index 47640072dbe..e233c83b868 100644 --- a/src/server/game/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Handlers/PetitionsHandler.cpp @@ -463,7 +463,7 @@ void WorldSession::HandleSignPetition(WorldPacket& recvData) WorldPacket data(SMSG_PETITION_SIGN_RESULTS, (8+8+4)); data << uint64(petitionGuid); data << uint64(_player->GetGUID()); - data << (uint32)PETITION_SIGN_ALREADY_SIGNED; + data << uint32(PETITION_SIGN_ALREADY_SIGNED); // close at signer side SendPacket(&data); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 06aab37890c..56d99a85012 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -181,7 +181,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) // additional check, client outputs message on its own if (!player->IsAlive()) { - player->SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, nullptr, nullptr); + player->SendEquipError(EQUIP_ERR_PLAYER_DEAD, nullptr, nullptr); return; } @@ -207,7 +207,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) // Verify that the bag is an actual bag or wrapped item that can be used "normally" if (!proto->HasFlag(ITEM_FLAG_HAS_LOOT) && !item->IsWrapped()) { - player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, nullptr); + player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr); TC_LOG_ERROR("entities.player.cheat", "Possible hacking attempt: Player {} {} tried to open item [{}, entry: {}] which is not openable!", player->GetName(), player->GetGUID().ToString(), item->GetGUID().ToString(), proto->ItemId); return; diff --git a/src/server/game/Handlers/TaxiHandler.cpp b/src/server/game/Handlers/TaxiHandler.cpp index 889a0114148..2a0f5ebaf4d 100644 --- a/src/server/game/Handlers/TaxiHandler.cpp +++ b/src/server/game/Handlers/TaxiHandler.cpp @@ -91,12 +91,12 @@ void WorldSession::SendTaxiMenu(Creature* unit) { // find current node uint32 curloc = sObjectMgr->GetNearestTaxiNode(unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ(), unit->GetMapId(), GetPlayer()->GetTeam()); - - if (curloc == 0) + if (!curloc) return; bool lastTaxiCheaterState = GetPlayer()->isTaxiCheater(); - if (unit->GetEntry() == 29480) GetPlayer()->SetTaxiCheater(true); // Grimwing in Ebon Hold, special case. NOTE: Not perfect, Zul'Aman should not be included according to WoWhead, and I think taxicheat includes it. + if (unit->GetEntry() == 29480) + GetPlayer()->SetTaxiCheater(true); // Grimwing in Ebon Hold, special case. NOTE: Not perfect, Zul'Aman should not be included according to WoWhead, and I think taxicheat includes it. TC_LOG_DEBUG("network", "WORLD: CMSG_TAXINODE_STATUS_QUERY {} ", curloc); diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp index 4d8588bf7be..9b02adb6c86 100644 --- a/src/server/game/Handlers/TradeHandler.cpp +++ b/src/server/game/Handlers/TradeHandler.cpp @@ -327,7 +327,7 @@ void WorldSession::HandleAcceptTradeOpcode(WorldPacket& /*recvPacket*/) if (item->IsBindedNotWith(trader)) { info.Status = TRADE_STATUS_CLOSE_WINDOW; - info.Result = EQUIP_ERR_CANNOT_TRADE_THAT; + info.Result = EQUIP_ERR_TRADE_BOUND_ITEM; SendTradeStatus(info); return; } diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 765852581fd..ecc900b41bd 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2352,7 +2352,7 @@ float GridMap::getLiquidLevel(float x, float y) const } // Get water state on map -inline ZLiquidStatus GridMap::GetLiquidStatus(float x, float y, float z, uint8 ReqLiquidType, LiquidData* data, float collisionHeight) +inline ZLiquidStatus GridMap::GetLiquidStatus(float x, float y, float z, Optional ReqLiquidType, LiquidData* data, float collisionHeight) { // Check water type (if no water return) if (!_liquidGlobalFlags && !_liquidFlags) @@ -2400,7 +2400,7 @@ inline ZLiquidStatus GridMap::GetLiquidStatus(float x, float y, float z, uint8 R return LIQUID_MAP_NO_WATER; // Check req liquid type mask - if (ReqLiquidType && !(ReqLiquidType&type)) + if (ReqLiquidType && !(*ReqLiquidType & type)) return LIQUID_MAP_NO_WATER; // Check water level: @@ -2466,7 +2466,7 @@ float Map::GetWaterOrGroundLevel(uint32 phasemask, float x, float y, float z, fl LiquidData liquid_status; - ZLiquidStatus res = GetLiquidStatus(phasemask, x, y, ground_z, MAP_ALL_LIQUIDS, &liquid_status, collisionHeight); + ZLiquidStatus res = GetLiquidStatus(phasemask, x, y, ground_z, {}, &liquid_status, collisionHeight); switch (res) { case LIQUID_MAP_ABOVE_WATER: @@ -2542,27 +2542,18 @@ static inline bool IsInWMOInterior(uint32 mogpFlags) bool Map::GetAreaInfo(uint32 phaseMask, float x, float y, float z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const { - float vmap_z = z; - float dynamic_z = z; float check_z = z; VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager(); - uint32 vflags; - int32 vadtId; - int32 vrootId; - int32 vgroupId; - uint32 dflags; - int32 dadtId; - int32 drootId; - int32 dgroupId; - - bool hasVmapAreaInfo = vmgr->getAreaInfo(GetId(), x, y, vmap_z, vflags, vadtId, vrootId, vgroupId); - bool hasDynamicAreaInfo = _dynamicTree.getAreaInfo(x, y, dynamic_z, phaseMask, dflags, dadtId, drootId, dgroupId); - auto useVmap = [&]() { check_z = vmap_z; flags = vflags; adtId = vadtId; rootId = vrootId; groupId = vgroupId; }; - auto useDyn = [&]() { check_z = dynamic_z; flags = dflags; adtId = dadtId; rootId = drootId; groupId = dgroupId; }; + VMAP::AreaAndLiquidData vdata; + VMAP::AreaAndLiquidData ddata; + bool hasVmapAreaInfo = vmgr->getAreaAndLiquidData(GetId(), x, y, z, {}, vdata) && vdata.areaInfo.has_value(); + bool hasDynamicAreaInfo = _dynamicTree.getAreaAndLiquidData(x, y, z, phaseMask, {}, ddata) && ddata.areaInfo.has_value(); + auto useVmap = [&] { check_z = vdata.floorZ; groupId = vdata.areaInfo->groupId; adtId = vdata.areaInfo->adtId; rootId = vdata.areaInfo->rootId; flags = vdata.areaInfo->mogpFlags; }; + auto useDyn = [&] { check_z = ddata.floorZ; groupId = ddata.areaInfo->groupId; adtId = ddata.areaInfo->adtId; rootId = ddata.areaInfo->rootId; flags = ddata.areaInfo->mogpFlags; }; if (hasVmapAreaInfo) { - if (hasDynamicAreaInfo && dynamic_z > vmap_z) + if (hasDynamicAreaInfo && ddata.floorZ > vdata.floorZ) useDyn(); else useVmap(); @@ -2641,34 +2632,31 @@ void Map::GetZoneAndAreaId(uint32 phaseMask, uint32& zoneid, uint32& areaid, flo zoneid = area->ParentAreaID; } -ZLiquidStatus Map::GetLiquidStatus(uint32 phaseMask, float x, float y, float z, uint8 ReqLiquidType, LiquidData* data, float collisionHeight) const +ZLiquidStatus Map::GetLiquidStatus(uint32 phaseMask, float x, float y, float z, Optional ReqLiquidType, LiquidData* data, float collisionHeight) const { ZLiquidStatus result = LIQUID_MAP_NO_WATER; VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager(); - float liquid_level = INVALID_HEIGHT; - float ground_level = INVALID_HEIGHT; - uint32 liquid_type = 0; - uint32 mogpFlags = 0; + VMAP::AreaAndLiquidData vmapData; bool useGridLiquid = true; - if (vmgr->GetLiquidLevel(GetId(), x, y, z, ReqLiquidType, liquid_level, ground_level, liquid_type, mogpFlags)) + if (vmgr->getAreaAndLiquidData(GetId(), x, y, z, ReqLiquidType, vmapData) && vmapData.liquidInfo) { - useGridLiquid = !IsInWMOInterior(mogpFlags); - TC_LOG_DEBUG("maps", "GetLiquidStatus(): vmap liquid level: {} ground: {} type: {}", liquid_level, ground_level, liquid_type); + useGridLiquid = !vmapData.areaInfo || !IsInWMOInterior(vmapData.areaInfo->mogpFlags); + TC_LOG_DEBUG("maps", "GetLiquidStatus(): vmap liquid level: {} ground: {} type: {}", vmapData.liquidInfo->level, vmapData.floorZ, vmapData.liquidInfo->type); // Check water level and ground level - if (liquid_level > ground_level && G3D::fuzzyGe(z, ground_level - GROUND_HEIGHT_TOLERANCE)) + if (vmapData.liquidInfo->level > vmapData.floorZ && G3D::fuzzyGe(z, vmapData.floorZ - GROUND_HEIGHT_TOLERANCE)) { // All ok in water -> store data if (data) { // hardcoded in client like this - if (GetId() == 530 && liquid_type == 2) - liquid_type = 15; + if (GetId() == 530 && vmapData.liquidInfo->type == 2) + vmapData.liquidInfo->type = 15; uint32 liquidFlagType = 0; - if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(liquid_type)) + if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(vmapData.liquidInfo->type)) liquidFlagType = liq->SoundBank; - if (liquid_type && liquid_type < 21) + if (vmapData.liquidInfo->type && vmapData.liquidInfo->type < 21) { if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(GetAreaId(phaseMask, x, y, z))) { @@ -2682,20 +2670,20 @@ ZLiquidStatus Map::GetLiquidStatus(uint32 phaseMask, float x, float y, float z, if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(overrideLiquid)) { - liquid_type = overrideLiquid; + vmapData.liquidInfo->type = overrideLiquid; liquidFlagType = liq->SoundBank; } } } - data->level = liquid_level; - data->depth_level = ground_level; + data->level = vmapData.liquidInfo->level; + data->depth_level = vmapData.floorZ; - data->entry = liquid_type; + data->entry = vmapData.liquidInfo->type; data->type_flags = 1 << liquidFlagType; } - float delta = liquid_level - z; + float delta = vmapData.liquidInfo->level - z; // Get position delta if (delta > collisionHeight) // Under water @@ -2715,7 +2703,7 @@ ZLiquidStatus Map::GetLiquidStatus(uint32 phaseMask, float x, float y, float z, LiquidData map_data; ZLiquidStatus map_result = gmap->GetLiquidStatus(x, y, z, ReqLiquidType, &map_data, collisionHeight); // Not override LIQUID_MAP_ABOVE_WATER with LIQUID_MAP_NO_WATER: - if (map_result != LIQUID_MAP_NO_WATER && (map_data.level > ground_level)) + if (map_result != LIQUID_MAP_NO_WATER && (map_data.level > vmapData.floorZ)) { if (data) { @@ -2732,7 +2720,7 @@ ZLiquidStatus Map::GetLiquidStatus(uint32 phaseMask, float x, float y, float z, return result; } -void Map::GetFullTerrainStatusForPosition(uint32 phaseMask, float x, float y, float z, PositionFullTerrainStatus& data, uint8 reqLiquidType, float collisionHeight) const +void Map::GetFullTerrainStatusForPosition(uint32 phaseMask, float x, float y, float z, PositionFullTerrainStatus& data, Optional reqLiquidType, float collisionHeight) const { VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager(); VMAP::AreaAndLiquidData vmapData; @@ -2779,7 +2767,7 @@ void Map::GetFullTerrainStatusForPosition(uint32 phaseMask, float x, float y, fl { if (wmoData->areaInfo) { - data.areaInfo.emplace(wmoData->areaInfo->adtId, wmoData->areaInfo->rootId, wmoData->areaInfo->groupId, wmoData->areaInfo->mogpFlags); + data.wmoLocation.emplace(wmoData->areaInfo->groupId, wmoData->areaInfo->adtId, wmoData->areaInfo->rootId, wmoData->areaInfo->uniqueId); // wmo found WMOAreaTableEntry const* wmoEntry = GetWMOAreaTableEntryByTripple(wmoData->areaInfo->rootId, wmoData->areaInfo->adtId, wmoData->areaInfo->groupId); data.outdoors = (wmoData->areaInfo->mogpFlags & 0x8) != 0; @@ -2908,7 +2896,7 @@ bool Map::IsInWater(uint32 phaseMask, float x, float y, float pZ, LiquidData* da { LiquidData liquid_status; LiquidData* liquid_ptr = data ? data : &liquid_status; - return (GetLiquidStatus(phaseMask, x, y, pZ, MAP_ALL_LIQUIDS, liquid_ptr) & (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER)) != 0; + return (GetLiquidStatus(phaseMask, x, y, pZ, {}, liquid_ptr) & (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER)) != 0; } bool Map::IsUnderWater(uint32 phaseMask, float x, float y, float z) const @@ -2983,6 +2971,9 @@ void Map::SendInitTransports(Player* player) if (*i != player->GetTransport()) (*i)->BuildCreateUpdateBlockForPlayer(&transData, player); + if (!transData.HasData()) + return; + WorldPacket packet; transData.BuildPacket(&packet); player->SendDirectMessage(&packet); @@ -2996,6 +2987,9 @@ void Map::SendRemoveTransports(Player* player) if (*i != player->GetTransport()) (*i)->BuildOutOfRangeUpdateBlock(&transData); + if (!transData.HasData()) + return; + WorldPacket packet; transData.BuildPacket(&packet); player->SendDirectMessage(&packet); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 84783d95c0c..dfe0ff4a37a 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -24,6 +24,7 @@ #include "DynamicTree.h" #include "GridDefines.h" #include "GridRefManager.h" +#include "MapDefines.h" #include "MapRefManager.h" #include "MPSCQueue.h" #include "ObjectGuid.h" @@ -140,18 +141,6 @@ struct map_liquidHeader float liquidLevel; }; -enum ZLiquidStatus : uint32 -{ - LIQUID_MAP_NO_WATER = 0x00000000, - LIQUID_MAP_ABOVE_WATER = 0x00000001, - LIQUID_MAP_WATER_WALK = 0x00000002, - LIQUID_MAP_IN_WATER = 0x00000004, - LIQUID_MAP_UNDER_WATER = 0x00000008 -}; - -#define MAP_LIQUID_STATUS_SWIMMING (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER) -#define MAP_LIQUID_STATUS_IN_CONTACT (MAP_LIQUID_STATUS_SWIMMING | LIQUID_MAP_WATER_WALK) - #define MAP_LIQUID_TYPE_NO_WATER 0x00 #define MAP_LIQUID_TYPE_WATER 0x01 #define MAP_LIQUID_TYPE_OCEAN 0x02 @@ -162,34 +151,6 @@ enum ZLiquidStatus : uint32 #define MAP_LIQUID_TYPE_DARK_WATER 0x10 -struct LiquidData -{ - uint32 type_flags; - uint32 entry; - float level; - float depth_level; -}; - -struct PositionFullTerrainStatus -{ - struct AreaInfo - { - AreaInfo(int32 _adtId, int32 _rootId, int32 _groupId, uint32 _flags) : adtId(_adtId), rootId(_rootId), groupId(_groupId), mogpFlags(_flags) { } - int32 const adtId; - int32 const rootId; - int32 const groupId; - uint32 const mogpFlags; - }; - - PositionFullTerrainStatus() : areaId(0), floorZ(0.0f), outdoors(true), liquidStatus(LIQUID_MAP_NO_WATER) { } - uint32 areaId; - float floorZ; - bool outdoors; - ZLiquidStatus liquidStatus; - Optional areaInfo; - Optional liquidInfo; -}; - class TC_GAME_API GridMap { uint32 _flags; @@ -250,7 +211,7 @@ class TC_GAME_API GridMap inline float getHeight(float x, float y) const {return (this->*_gridGetHeight)(x, y);} float getMinHeight(float x, float y) const; float getLiquidLevel(float x, float y) const; - ZLiquidStatus GetLiquidStatus(float x, float y, float z, uint8 ReqLiquidType, LiquidData* data = 0, float collisionHeight = 2.03128f); // DEFAULT_COLLISION_HEIGHT in Object.h + ZLiquidStatus GetLiquidStatus(float x, float y, float z, Optional ReqLiquidType, LiquidData* data = 0, float collisionHeight = 2.03128f); // DEFAULT_COLLISION_HEIGHT in Object.h }; #pragma pack(push, 1) @@ -400,8 +361,8 @@ class TC_GAME_API Map : public GridRefManager Map const* GetParent() const { return m_parentMap; } - void GetFullTerrainStatusForPosition(uint32 phaseMask, float x, float y, float z, PositionFullTerrainStatus& data, uint8 reqLiquidType, float collisionHeight) const; - ZLiquidStatus GetLiquidStatus(uint32 phaseMask, float x, float y, float z, uint8 ReqLiquidType, LiquidData* data = nullptr, float collisionHeight = 2.03128f) const; // DEFAULT_COLLISION_HEIGHT in Object.h + void GetFullTerrainStatusForPosition(uint32 phaseMask, float x, float y, float z, PositionFullTerrainStatus& data, Optional reqLiquidType = {}, float collisionHeight = 2.03128f) const; // DEFAULT_COLLISION_HEIGHT in Object.h + ZLiquidStatus GetLiquidStatus(uint32 phaseMask, float x, float y, float z, Optional ReqLiquidType, LiquidData* data = nullptr, float collisionHeight = 2.03128f) const; // DEFAULT_COLLISION_HEIGHT in Object.h bool GetAreaInfo(uint32 phaseMask, float x, float y, float z, uint32& mogpflags, int32& adtId, int32& rootId, int32& groupId) const; uint32 GetAreaId(uint32 phaseMask, float x, float y, float z) const; @@ -505,7 +466,7 @@ class TC_GAME_API Map : public GridRefManager void UpdateIteratorBack(Player* player); - TempSummon* SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties = nullptr, uint32 duration = 0, WorldObject* summoner = nullptr, uint32 spellId = 0, uint32 vehId = 0, bool visibleOnlyBySummoner = false); + TempSummon* SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties = nullptr, uint32 duration = 0, WorldObject* summoner = nullptr, uint32 spellId = 0, uint32 vehId = 0, ObjectGuid privateObjectOwner = ObjectGuid::Empty); void SummonCreatureGroup(uint8 group, std::list* list = nullptr); Player* GetPlayer(ObjectGuid const& guid); Corpse* GetCorpse(ObjectGuid const& guid); diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp index b2e42a91bb8..a49c8bc95f4 100644 --- a/src/server/game/Maps/MapManager.cpp +++ b/src/server/game/Maps/MapManager.cpp @@ -180,7 +180,10 @@ Map::EnterState MapManager::PlayerCannotEnter(uint32 mapid, Player* player, bool TC_LOG_DEBUG("maps", "MAP: Player '{}' has corpse in instance '{}' and can enter.", player->GetName(), mapName); } else + { TC_LOG_DEBUG("maps", "Map::CanPlayerEnter - player '{}' is dead but does not have a corpse!", player->GetName()); + return Map::CANNOT_ENTER_CORPSE_IN_DIFFERENT_INSTANCE; + } } //Get instance where player's group is bound & its map diff --git a/src/server/game/Maps/SpawnData.h b/src/server/game/Maps/SpawnData.h index 863fa13f4bc..d12b814f91f 100644 --- a/src/server/game/Maps/SpawnData.h +++ b/src/server/game/Maps/SpawnData.h @@ -99,6 +99,7 @@ struct SpawnData : public SpawnMetadata int32 spawntimesecs = 0; uint8 spawnMask = 0; uint32 scriptId = 0; + std::string StringId; protected: SpawnData(SpawnObjectType t) : SpawnMetadata(t) {} diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 138991a5115..5ad1cef8d55 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1153,7 +1153,7 @@ enum TrinityStrings LANG_NPCINFO_NPC_FLAGS = 5086, // master branch ONLY LANG_NPCINFO_PHASE_IDS = 5087, // master branch ONLY LANG_SCENARIO = 5088, // master branch ONLY - LANG_OBJECTINFO_STRINGIDS = 5089, // master branch ONLY + LANG_OBJECTINFO_STRINGIDS = 5089, // Room for more Trinity strings 5090-6603 diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index 08de2f4e12c..bb90f288596 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -184,7 +184,7 @@ void PathGenerator::BuildPolyPath(G3D::Vector3 const& startPos, G3D::Vector3 con // Check both start and end points, if they're both in water, then we can *safely* let the creature move for (uint32 i = 0; i < _pathPoints.size(); ++i) { - ZLiquidStatus status = _source->GetMap()->GetLiquidStatus(_source->GetPhaseMask(), _pathPoints[i].x, _pathPoints[i].y, _pathPoints[i].z, MAP_ALL_LIQUIDS, nullptr, _source->GetCollisionHeight()); + ZLiquidStatus status = _source->GetMap()->GetLiquidStatus(_source->GetPhaseMask(), _pathPoints[i].x, _pathPoints[i].y, _pathPoints[i].z, {}, nullptr, _source->GetCollisionHeight()); // One of the points is not in the water, cancel movement. if (status == LIQUID_MAP_NO_WATER) { @@ -696,7 +696,7 @@ void PathGenerator::UpdateFilter() NavTerrainFlag PathGenerator::GetNavTerrain(float x, float y, float z) { LiquidData data; - ZLiquidStatus liquidStatus = _source->GetMap()->GetLiquidStatus(_source->GetPhaseMask(), x, y, z, MAP_ALL_LIQUIDS, &data, _source->GetCollisionHeight()); + ZLiquidStatus liquidStatus = _source->GetMap()->GetLiquidStatus(_source->GetPhaseMask(), x, y, z, {}, &data, _source->GetCollisionHeight()); if (liquidStatus == LIQUID_MAP_NO_WATER) return NAV_GROUND; diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index 931b6ebd1d0..d09ce2c2e4e 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -266,6 +266,11 @@ namespace Movement args.path[1] = transform(dest); } + void MoveSplineInit::SetFall() + { + args.flags.EnableFalling(); + } + Vector3 TransportPathTransform::operator()(Vector3 input) { if (_transformForTransport) diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index acf57a89fb4..6fcd3258443 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -151,7 +151,6 @@ namespace Movement inline void MoveSplineInit::SetWalk(bool enable) { args.walk = enable; } inline void MoveSplineInit::SetSmooth() { args.flags.EnableCatmullRom(); } inline void MoveSplineInit::SetCyclic() { args.flags.cyclic = true; } - inline void MoveSplineInit::SetFall() { args.flags.EnableFalling(); } inline void MoveSplineInit::SetVelocity(float vel) { args.velocity = vel; args.HasVelocity = true; } inline void MoveSplineInit::SetBackward() { args.flags.backward = true; } inline void MoveSplineInit::SetTransportEnter() { args.flags.EnableTransportEnter(); } diff --git a/src/server/game/Petitions/PetitionMgr.h b/src/server/game/Petitions/PetitionMgr.h index 4e38ba0da02..16fddfa2f47 100644 --- a/src/server/game/Petitions/PetitionMgr.h +++ b/src/server/game/Petitions/PetitionMgr.h @@ -27,18 +27,22 @@ enum PetitionTurns { - PETITION_TURN_OK = 0, - PETITION_TURN_ALREADY_IN_GUILD = 2, - PETITION_TURN_NEED_MORE_SIGNATURES = 4 + PETITION_TURN_OK = 0, + PETITION_TURN_ALREADY_IN_GUILD = 2, + PETITION_TURN_NEED_MORE_SIGNATURES = 4, + PETITION_TURN_GUILD_PERMISSIONS = 11, }; enum PetitionSigns { - PETITION_SIGN_OK = 0, - PETITION_SIGN_ALREADY_SIGNED = 1, - PETITION_SIGN_ALREADY_IN_GUILD = 2, - PETITION_SIGN_CANT_SIGN_OWN = 3, - PETITION_SIGN_NOT_SERVER = 4 + PETITION_SIGN_OK = 0, + PETITION_SIGN_ALREADY_SIGNED = 1, + PETITION_SIGN_ALREADY_IN_GUILD = 2, + PETITION_SIGN_CANT_SIGN_OWN = 3, + PETITION_SIGN_NOT_SERVER = 5, + PETITION_SIGN_FULL = 8, + PETITION_SIGN_ALREADY_SIGNED_OTHER = 10, + PETITION_SIGN_RESTRICTED_ACCOUNT = 11, }; typedef std::pair Signature; diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 511bf145014..ddc0097fada 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -36,7 +36,7 @@ Quest::Quest(Field* questRecord) _type = questRecord[5].GetUInt16(); _suggestedPlayers = questRecord[6].GetUInt8(); _timeAllowed = questRecord[7].GetUInt32(); - _allowableRaces = questRecord[8].GetUInt16(); + _allowableRaces = questRecord[8].GetUInt32(); _requiredFactionId1 = questRecord[9].GetUInt16(); _requiredFactionId2 = questRecord[10].GetUInt16(); _requiredFactionValue1 = questRecord[11].GetInt32(); diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index 041ea5b7599..de8cc0b7524 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -19,6 +19,7 @@ #define AllPackets_h__ #include "BankPackets.h" +#include "BattlegroundPackets.h" #include "CalendarPackets.h" #include "CharacterPackets.h" #include "ChatPackets.h" diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp new file mode 100644 index 00000000000..460820e900a --- /dev/null +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -0,0 +1,272 @@ +/* + * This file is part of the TrinityCore 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 General Public License as published by the + * Free Software Foundation; either version 2 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 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 "BattlegroundPackets.h" +#include "Battleground.h" + +void WorldPackets::Battleground::AreaSpiritHealerQuery::Read() +{ + _worldPacket >> HealerGuid; +} + +void WorldPackets::Battleground::AreaSpiritHealerQueue::Read() +{ + _worldPacket >> HealerGuid; +} + +WorldPacket const* WorldPackets::Battleground::AreaSpiritHealerTime::Write() +{ + _worldPacket << HealerGuid; + _worldPacket << int32(TimeLeft); + + return &_worldPacket; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData_RatingData const& ratingData) +{ + for (std::size_t i = 0; i < 2; ++i) + { + data << int32(ratingData.Prematch[i]); + data << int32(ratingData.Postmatch[i]); + data << int32(ratingData.PrematchMMR[i]); + } + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData_Arena const& arena) +{ + data << arena.Ratings; + for (std::string_view const& teamName : arena.TeamName) + data << teamName; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData_Honor const& honorData) +{ + data << uint32(honorData.HonorKills); + data << uint32(honorData.Deaths); + data << uint32(honorData.ContributionPoints); + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData_Player const& playerData) +{ + data << playerData.PlayerGUID; + data << uint32(playerData.Kills); + std::visit([&](auto const& v) { return data << v; }, playerData.HonorOrFaction); + data << uint32(playerData.DamageDone); + data << uint32(playerData.HealingDone); + data << uint32(playerData.Stats.size()); + for (uint32 pvpStat : playerData.Stats) + data << uint32(pvpStat); + + return data; +} + +WorldPacket const* WorldPackets::Battleground::PVPMatchStatistics::Write() +{ + _worldPacket.reserve(sizeof(PVPLogData_Arena) + 1 + 1 + 4 + Players.size() * sizeof(PVPLogData_Player)); + + _worldPacket << uint8(Arena.has_value()); + if (Arena) + _worldPacket << *Arena; + + _worldPacket << uint8(Winner.has_value()); + if (Winner) + _worldPacket << uint8(*Winner); + + _worldPacket << uint32(Players.size()); + for (PVPLogData_Player const& player : Players) + _worldPacket << player; + + return &_worldPacket; +} + +void WorldPackets::Battleground::BattlemasterJoin::Read() +{ + _worldPacket >> BattlemasterGuid; + _worldPacket >> BattlemasterListID; + _worldPacket >> InstanceID; + _worldPacket >> JoinAsGroup; +} + +void WorldPackets::Battleground::BattlemasterJoinArena::Read() +{ + _worldPacket >> BattlemasterGuid; + _worldPacket >> TeamSizeIndex; + _worldPacket >> JoinAsGroup; + _worldPacket >> IsRated; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::BattlefieldStatusHeader const& header) +{ + data << uint32(header.QueueSlot); + data << uint64(header.QueueID); + data << uint8(header.RangeMin); + data << uint8(header.RangeMax); + data << uint32(header.InstanceID); + data << uint8(header.RegisteredMatch); + return data; +} + +WorldPacket const* WorldPackets::Battleground::BattlefieldStatusNone::Write() +{ + _worldPacket << uint32(QueueSlot); + _worldPacket << uint64(0); + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::BattlefieldStatusNeedConfirmation::Write() +{ + _worldPacket << Hdr; + _worldPacket << uint32(STATUS_WAIT_JOIN); + _worldPacket << uint32(Mapid); + _worldPacket << uint64(RandomQueueID); + _worldPacket << uint32(Timeout); + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::BattlefieldStatusActive::Write() +{ + _worldPacket << Hdr; + _worldPacket << uint32(STATUS_IN_PROGRESS); + _worldPacket << uint32(Mapid); + _worldPacket << uint64(RandomQueueID); + _worldPacket << uint32(ShutdownTimer); + _worldPacket << uint32(StartTimer); + _worldPacket << uint8(ArenaFaction); + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::BattlefieldStatusQueued::Write() +{ + _worldPacket << Hdr; + _worldPacket << uint32(STATUS_WAIT_QUEUE); + _worldPacket << uint32(AverageWaitTime); + _worldPacket << uint32(WaitTime); + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::GroupJoinedBattleground::Write() +{ + _worldPacket << uint32(Reason); + if (Reason == ERR_BATTLEGROUND_JOIN_TIMED_OUT || Reason == ERR_BATTLEGROUND_JOIN_FAILED) + _worldPacket << ClientID; + + return &_worldPacket; +} + +void WorldPackets::Battleground::BattlefieldLeave::Read() +{ + _worldPacket >> QueueID; +} + +void WorldPackets::Battleground::BattlefieldPort::Read() +{ + _worldPacket >> QueueID; + _worldPacket >> AcceptedInvite; +} + +void WorldPackets::Battleground::BattlefieldListRequest::Read() +{ + _worldPacket >> ListID; + _worldPacket >> PvpAnywhere; + _worldPacket >> NoXpGain; +} + +WorldPacket const* WorldPackets::Battleground::BattlefieldList::Write() +{ + _worldPacket << BattlemasterGuid; + _worldPacket << uint8(PvpAnywhere); + _worldPacket << int32(BattlemasterListID); + _worldPacket << uint8(MinLevel); + _worldPacket << uint8(MaxLevel); + + _worldPacket << uint8(HasHolidayWinToday); + _worldPacket << uint32(HolidayWinHonorCurrencyBonus); + _worldPacket << uint32(HolidayFirstWinArenaCurrencyBonus); + _worldPacket << uint32(HolidayLossHonorCurrencyBonus); + + _worldPacket << uint8(BattlemasterListID == BATTLEGROUND_RB); + if (BattlemasterListID == BATTLEGROUND_RB) + { + _worldPacket << uint8(HasRandomWinToday); + _worldPacket << uint32(RandomWinHonorCurrencyBonus); + _worldPacket << uint32(RandomFirstWinArenaCurrencyBonus); + _worldPacket << uint32(RandomLossHonorCurrencyBonus); + } + + _worldPacket << uint32(Battlefields ? Battlefields->size() : 0); + if (Battlefields) + for (uint32 battlefield : *Battlefields) + _worldPacket << uint32(battlefield); + + return &_worldPacket; +} + +void WorldPackets::Battleground::ReportPvPPlayerAFK::Read() +{ + _worldPacket >> Offender; +} + +WorldPacket const* WorldPackets::Battleground::ReportPvPPlayerAFKResult::Write() +{ + _worldPacket << uint8(Result); + _worldPacket << uint8(NumBlackMarksOnOffender); + _worldPacket << uint8(NumPlayersIHaveReported); + _worldPacket << Offender; + return &_worldPacket; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::BattlegroundPlayerPosition const& playerPosition) +{ + data << playerPosition.Guid; + data << playerPosition.Pos; + return data; +} + +WorldPacket const* WorldPackets::Battleground::BattlegroundPlayerPositions::Write() +{ + _worldPacket << uint32(Players.size()); + for (BattlegroundPlayerPosition const& pos : Players) + _worldPacket << pos; + + _worldPacket << uint32(FlagCarriers.size()); + for (BattlegroundPlayerPosition const& pos : FlagCarriers) + _worldPacket << pos; + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::BattlegroundPlayerJoined::Write() +{ + _worldPacket << Guid; + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::BattlegroundPlayerLeft::Write() +{ + _worldPacket << Guid; + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Battleground::DestroyArenaUnit::Write() +{ + _worldPacket << Guid; + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h new file mode 100644 index 00000000000..3006c89dc7f --- /dev/null +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -0,0 +1,375 @@ +/* + * This file is part of the TrinityCore 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 General Public License as published by the + * Free Software Foundation; either version 2 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 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 . + */ + +#ifndef BattlegroundPackets_h__ +#define BattlegroundPackets_h__ + +#include "Packet.h" +#include "ObjectGuid.h" +#include "Optional.h" +#include "Position.h" +#include +#include + +namespace WorldPackets +{ + namespace Battleground + { + class AreaSpiritHealerQuery final : public ClientPacket + { + public: + AreaSpiritHealerQuery(WorldPacket&& packet) : ClientPacket(CMSG_AREA_SPIRIT_HEALER_QUERY, std::move(packet)) { } + + void Read() override; + + ObjectGuid HealerGuid; + }; + + class AreaSpiritHealerQueue final : public ClientPacket + { + public: + AreaSpiritHealerQueue(WorldPacket&& packet) : ClientPacket(CMSG_AREA_SPIRIT_HEALER_QUEUE, std::move(packet)) { } + + void Read() override; + + ObjectGuid HealerGuid; + }; + + class AreaSpiritHealerTime final : public ServerPacket + { + public: + AreaSpiritHealerTime() : ServerPacket(SMSG_AREA_SPIRIT_HEALER_TIME, 8 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid HealerGuid; + int32 TimeLeft = 0; + }; + + class HearthAndResurrect final : public ClientPacket + { + public: + HearthAndResurrect(WorldPacket&& packet) : ClientPacket(CMSG_HEARTH_AND_RESURRECT, std::move(packet)) { } + + void Read() override { } + }; + + class PVPLogDataRequest final : public ClientPacket + { + public: + PVPLogDataRequest(WorldPacket&& packet) : ClientPacket(MSG_PVP_LOG_DATA, std::move(packet)) { } + + void Read() override { } + }; + + struct PVPLogData_RatingData + { + std::array Prematch = { }; + std::array Postmatch = { }; + std::array PrematchMMR = { }; + }; + + struct PVPLogData_Arena + { + PVPLogData_RatingData Ratings; + std::array TeamName; + }; + + struct PVPLogData_Honor + { + uint32 HonorKills = 0; + uint32 Deaths = 0; + uint32 ContributionPoints = 0; + }; + + struct PVPLogData_Player + { + ObjectGuid PlayerGUID; + uint32 Kills = 0; + std::variant HonorOrFaction; + uint32 DamageDone = 0; + uint32 HealingDone = 0; + std::vector Stats; + }; + + class PVPMatchStatistics final : public ServerPacket + { + public: + PVPMatchStatistics() : ServerPacket(MSG_PVP_LOG_DATA, 0) { } + + WorldPacket const* Write() override; + + Optional Winner; + std::vector Players; + Optional Arena; + }; + + struct BattlefieldStatusHeader + { + uint32 QueueSlot = 0; + uint64 QueueID = 0; + uint8 RangeMin = 0; + uint8 RangeMax = 0; + uint32 InstanceID = 0; + bool RegisteredMatch = false; + }; + + class BattlefieldStatusNone final : public ServerPacket + { + public: + BattlefieldStatusNone() : ServerPacket(SMSG_BATTLEFIELD_STATUS, 4 + 8) { } + + WorldPacket const* Write() override; + + uint32 QueueSlot = 0; + }; + + class BattlefieldStatusNeedConfirmation final : public ServerPacket + { + public: + BattlefieldStatusNeedConfirmation() : ServerPacket(SMSG_BATTLEFIELD_STATUS, 4 + 4 + sizeof(BattlefieldStatusHeader) + 8) { } + + WorldPacket const* Write() override; + + uint32 Timeout = 0; + uint32 Mapid = 0; + BattlefieldStatusHeader Hdr; + uint64 RandomQueueID = 0; + }; + + class BattlefieldStatusActive final : public ServerPacket + { + public: + BattlefieldStatusActive() : ServerPacket(SMSG_BATTLEFIELD_STATUS, sizeof(BattlefieldStatusHeader) + 4 + 1 + 4 + 4 + 8) { } + + WorldPacket const* Write() override; + + BattlefieldStatusHeader Hdr; + uint32 ShutdownTimer = 0; + uint8 ArenaFaction = 0; + uint32 StartTimer = 0; + uint32 Mapid = 0; + uint64 RandomQueueID = 0; + }; + + class BattlefieldStatusQueued final : public ServerPacket + { + public: + BattlefieldStatusQueued() : ServerPacket(SMSG_BATTLEFIELD_STATUS, 4 + sizeof(BattlefieldStatusHeader) + 4) { } + + WorldPacket const* Write() override; + + uint32 AverageWaitTime = 0; + BattlefieldStatusHeader Hdr; + uint32 WaitTime = 0; + }; + + class GroupJoinedBattleground final : public ServerPacket + { + public: + GroupJoinedBattleground() : ServerPacket(SMSG_GROUP_JOINED_BATTLEGROUND, 8 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid ClientID; + int32 Reason = 0; + }; + + using BattlefieldStatusFailed = GroupJoinedBattleground; + + class BattlemasterJoin final : public ClientPacket + { + public: + BattlemasterJoin(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEMASTER_JOIN, std::move(packet)) { } + + void Read() override; + + ObjectGuid BattlemasterGuid; + uint32 BattlemasterListID = 0; + uint32 InstanceID = 0; + bool JoinAsGroup = false; + }; + + class BattlemasterJoinArena final : public ClientPacket + { + public: + BattlemasterJoinArena(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEMASTER_JOIN_ARENA, std::move(packet)) { } + + void Read() override; + + ObjectGuid BattlemasterGuid; + uint8 TeamSizeIndex = 0; + bool JoinAsGroup = false; + bool IsRated = false; + }; + + class BattlefieldLeave final : public ClientPacket + { + public: + BattlefieldLeave(WorldPacket&& packet) : ClientPacket(CMSG_LEAVE_BATTLEFIELD, std::move(packet)) { } + + void Read() override; + + uint64 QueueID = 0; + }; + + class BattlefieldPort final : public ClientPacket + { + public: + BattlefieldPort(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEFIELD_PORT, std::move(packet)) { } + + void Read() override; + + uint64 QueueID = 0; + bool AcceptedInvite = false; + }; + + class BattlefieldListRequest final : public ClientPacket + { + public: + BattlefieldListRequest(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEFIELD_LIST, std::move(packet)) { } + + void Read() override; + + int32 ListID = 0; + bool PvpAnywhere = false; + bool NoXpGain = false; + }; + + class BattlefieldList final : public ServerPacket + { + public: + BattlefieldList() : ServerPacket(SMSG_BATTLEFIELD_LIST, 8 + 1 + 4 + 1 + 1 + 1 + 4 + 4 + 4 + 1 + 1 + 4 + 4 + 4 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid BattlemasterGuid; + int32 BattlemasterListID = 0; + uint8 MinLevel = 0; + uint8 MaxLevel = 0; + std::set const* Battlefields = nullptr; + bool PvpAnywhere = false; + bool HasHolidayWinToday = false; + uint32 HolidayWinHonorCurrencyBonus = 0; + uint32 HolidayFirstWinArenaCurrencyBonus = 0; + uint32 HolidayLossHonorCurrencyBonus = 0; + bool HasRandomWinToday = false; + uint32 RandomWinHonorCurrencyBonus = 0; + uint32 RandomFirstWinArenaCurrencyBonus = 0; + uint32 RandomLossHonorCurrencyBonus = 0; + }; + + class RequestBattlefieldStatus final : public ClientPacket + { + public: + RequestBattlefieldStatus(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEFIELD_STATUS, std::move(packet)) { } + + void Read() override { } + }; + + class ReportPvPPlayerAFK final : public ClientPacket + { + public: + ReportPvPPlayerAFK(WorldPacket&& packet) : ClientPacket(CMSG_REPORT_PVP_AFK, std::move(packet)) { } + + void Read() override; + + ObjectGuid Offender; + }; + + class ReportPvPPlayerAFKResult final : public ServerPacket + { + public: + ReportPvPPlayerAFKResult() : ServerPacket(SMSG_REPORT_PVP_AFK_RESULT, 8 + 1 + 1 + 1) { } + + WorldPacket const* Write() override; + + enum ResultCode : uint8 + { + PVP_REPORT_AFK_SUCCESS = 0, + PVP_REPORT_AFK_GENERIC_FAILURE = 1, // there are more error codes but they are impossible to receive without modifying the client + PVP_REPORT_AFK_SYSTEM_ENABLED = 5, + PVP_REPORT_AFK_SYSTEM_DISABLED = 6 + }; + + ObjectGuid Offender; + uint8 NumPlayersIHaveReported = 0; + uint8 NumBlackMarksOnOffender = 0; + uint8 Result = PVP_REPORT_AFK_GENERIC_FAILURE; + }; + + class BattlegroundPlayerPositionsRequest final : public ClientPacket + { + public: + BattlegroundPlayerPositionsRequest(WorldPacket&& packet) : ClientPacket(MSG_BATTLEGROUND_PLAYER_POSITIONS, std::move(packet)) { } + + void Read() override { } + }; + + struct BattlegroundPlayerPosition + { + BattlegroundPlayerPosition() { } + BattlegroundPlayerPosition(ObjectGuid const& guid, TaggedPosition const& pos) : Guid(guid), Pos(pos) { } + + ObjectGuid Guid; + TaggedPosition Pos; + }; + + class BattlegroundPlayerPositions final : public ServerPacket + { + public: + BattlegroundPlayerPositions() : ServerPacket(MSG_BATTLEGROUND_PLAYER_POSITIONS, 4 + 4) { } + + WorldPacket const* Write() override; + + std::vector Players; + std::vector FlagCarriers; + }; + + class BattlegroundPlayerJoined final : public ServerPacket + { + public: + BattlegroundPlayerJoined() : ServerPacket(SMSG_BATTLEGROUND_PLAYER_JOINED, 8) { } + + WorldPacket const* Write() override; + + ObjectGuid Guid; + }; + + class BattlegroundPlayerLeft final : public ServerPacket + { + public: + BattlegroundPlayerLeft() : ServerPacket(SMSG_BATTLEGROUND_PLAYER_LEFT, 8) { } + + WorldPacket const* Write() override; + + ObjectGuid Guid; + }; + + class DestroyArenaUnit final : public ServerPacket + { + public: + DestroyArenaUnit() : ServerPacket(SMSG_ARENA_UNIT_DESTROYED, 8) { } + + WorldPacket const* Write() override; + + ObjectGuid Guid; + }; + } +} + +#endif // BattlegroundPackets_h__ diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 34710741eca..4b10b53f56f 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -851,7 +851,7 @@ void OpcodeTable::Initialize() /*0x2D0*/ DEFINE_HANDLER(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck ); /*0x2D1*/ DEFINE_HANDLER(CMSG_MOVE_NOT_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMover ); /*0x2D2*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SOUND, STATUS_NEVER); - /*0x2D3*/ DEFINE_HANDLER(CMSG_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldStatusOpcode ); + /*0x2D3*/ DEFINE_HANDLER(CMSG_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestBattlefieldStatusOpcode); /*0x2D4*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS, STATUS_NEVER); /*0x2D5*/ DEFINE_HANDLER(CMSG_BATTLEFIELD_PORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattleFieldPortOpcode ); /*0x2D6*/ DEFINE_HANDLER(MSG_INSPECT_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleInspectHonorStatsOpcode ); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 15cb8e3830d..52ac6f7452d 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -531,7 +531,8 @@ void WorldSession::LogoutPlayer(bool save) for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) { - if (BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i)) + BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i); + if (bgQueueTypeId != BATTLEGROUND_QUEUE_NONE) { // track if player logs out after invited to join BG if (_player->IsInvitedForBattlegroundQueueType(bgQueueTypeId) && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS)) diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 54ef82b4f26..a8c5a892f87 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -88,6 +88,22 @@ namespace WorldPackets class BuyBankSlot; } + namespace Battleground + { + class AreaSpiritHealerQuery; + class AreaSpiritHealerQueue; + class HearthAndResurrect; + class PVPLogDataRequest; + class BattlemasterJoin; + class BattlemasterJoinArena; + class BattlefieldLeave; + class BattlefieldPort; + class BattlefieldListRequest; + class RequestBattlefieldStatus; + class ReportPvPPlayerAFK; + class BattlegroundPlayerPositionsRequest; + } + namespace Calendar { class CalendarAddEvent; @@ -541,8 +557,6 @@ class TC_GAME_API WorldSession void SendAttackStop(Unit const* enemy); - void SendBattleGroundList(ObjectGuid guid, BattlegroundTypeId bgTypeId = BATTLEGROUND_RB); - void SendTradeStatus(TradeStatusInfo const& status); void SendUpdateTrade(bool trader_data = true); void SendCancelTrade(TradeStatus status); @@ -583,9 +597,21 @@ class TC_GAME_API WorldSession void UpdateInstanceEnterTimes(); //auction void SendAuctionHello(ObjectGuid guid, Unit const* unit); - void SendAuctionCommandResult(uint32 auctionItemId, AuctionAction command, AuctionError errorCode, InventoryResult bagResult = InventoryResult(0)); + + /** + * @fn void WorldSession::SendAuctionCommandResult(uint32 auctionId, uint32 action, uint32 errorCode, uint32 bagError = 0); + * + * @brief Notifies the client of the result of his last auction operation. It is called when the player bids, creates, or deletes an auction + * + * @param auction The relevant auction data + * @param command The action that was performed. + * @param errorCode The resulting error code. + * @param bagResult (Optional) InventoryResult. + */ + void SendAuctionCommandResult(AuctionEntry const* auction, AuctionAction command, AuctionError errorCode, InventoryResult bagResult = InventoryResult(0)); void SendAuctionBidderNotification(uint32 location, uint32 auctionId, ObjectGuid bidder, uint32 bidSum, uint32 diff, uint32 item_template); void SendAuctionOwnerNotification(AuctionEntry* auction); + void SendAuctionRemovedNotification(uint32 auctionId, uint32 itemEntry, int32 randomPropertyId); //Item Enchantment void SendEnchantmentLog(ObjectGuid target, ObjectGuid caster, uint32 itemId, uint32 enchantId); @@ -777,8 +803,6 @@ class TC_GAME_API WorldSession void HandleRequestRaidInfoOpcode(WorldPacket& recvData); - void HandleBattlefieldStatusOpcode(WorldPacket& recvData); - void HandleGroupInviteOpcode(WorldPackets::Party::PartyInviteClient& packet); void HandleGroupAcceptOpcode(WorldPacket& recvPacket); void HandleGroupDeclineOpcode(WorldPacket& recvPacket); @@ -1011,15 +1035,19 @@ class TC_GAME_API WorldSession void HandleDismissCritter(WorldPackets::Pet::DismissCritter& dismissCritter); //Battleground - void HandleBattlemasterHelloOpcode(WorldPacket& recvData); - void HandleBattlemasterJoinOpcode(WorldPacket& recvData); - void HandleBattlegroundPlayerPositionsOpcode(WorldPacket& recvData); - void HandlePVPLogDataOpcode(WorldPacket& recvData); - void HandleBattleFieldPortOpcode(WorldPacket& recvData); - void HandleBattlefieldListOpcode(WorldPacket& recvData); - void HandleBattlefieldLeaveOpcode(WorldPacket& recvData); - void HandleBattlemasterJoinArena(WorldPacket& recvData); - void HandleReportPvPAFK(WorldPacket& recvData); + void HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello); + void HandleBattlemasterJoinOpcode(WorldPackets::Battleground::BattlemasterJoin& battlemasterJoin); + void HandleBattlegroundPlayerPositionsOpcode(WorldPackets::Battleground::BattlegroundPlayerPositionsRequest& battlegroundPlayerPositionsRequest); + void HandlePVPLogDataOpcode(WorldPackets::Battleground::PVPLogDataRequest& pvpLogDataRequest); + void HandleBattleFieldPortOpcode(WorldPackets::Battleground::BattlefieldPort& battlefieldPort); + void HandleBattlefieldListOpcode(WorldPackets::Battleground::BattlefieldListRequest& battlefieldList); + void HandleBattlefieldLeaveOpcode(WorldPackets::Battleground::BattlefieldLeave& battlefieldLeave); + void HandleBattlemasterJoinArena(WorldPackets::Battleground::BattlemasterJoinArena& packet); + void HandleReportPvPAFK(WorldPackets::Battleground::ReportPvPPlayerAFK& reportPvPPlayerAFK); + void HandleAreaSpiritHealerQueryOpcode(WorldPackets::Battleground::AreaSpiritHealerQuery& areaSpiritHealerQuery); + void HandleAreaSpiritHealerQueueOpcode(WorldPackets::Battleground::AreaSpiritHealerQueue& areaSpiritHealerQueue); + void HandleHearthAndResurrect(WorldPackets::Battleground::HearthAndResurrect& hearthAndResurrect); + void HandleRequestBattlefieldStatusOpcode(WorldPackets::Battleground::RequestBattlefieldStatus& requestBattlefieldStatus); // Battlefield void SendBfInvitePlayerToWar(uint32 battleId, uint32 zoneId, uint32 time); @@ -1043,7 +1071,6 @@ class TC_GAME_API WorldSession void HandleTimeSyncResponse(WorldPacket& recvData); void HandleWhoIsOpcode(WorldPacket& recvData); void HandleResetInstancesOpcode(WorldPacket& recvData); - void HandleHearthAndResurrect(WorldPacket& recvData); void HandleInstanceLockResponse(WorldPacket& recvPacket); // Looking for Dungeon/Raid @@ -1086,8 +1113,6 @@ class TC_GAME_API WorldSession void HandleArenaTeamDisbandOpcode(WorldPacket& recvData); void HandleArenaTeamLeaderOpcode(WorldPacket& recvData); - void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recvData); - void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recvData); void HandleSelfResOpcode(WorldPacket& recvData); void HandleComplainOpcode(WorldPacket& recvData); void HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& packet); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index ef2138eb879..f6c0dc170e1 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -353,7 +353,7 @@ enum AuraType : uint32 SPELL_AURA_X_RAY = 273, SPELL_AURA_ABILITY_CONSUME_NO_AMMO = 274, SPELL_AURA_MOD_IGNORE_SHAPESHIFT = 275, - SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC = 276, // NYI + SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC = 276, SPELL_AURA_MOD_MAX_AFFECTED_TARGETS = 277, SPELL_AURA_MOD_DISARM_RANGED = 278, SPELL_AURA_INITIALIZE_IMAGES = 279, diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 7458e62ec94..b33ffa86fea 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -951,7 +951,7 @@ uint8 Aura::CalcMaxCharges(Unit* caster) const if (Player* modOwner = caster->GetSpellModOwner()) modOwner->ApplySpellMod(GetId(), SPELLMOD_CHARGES, maxProcCharges); - return maxProcCharges; + return uint8(maxProcCharges); } bool Aura::ModCharges(int32 num, AuraRemoveMode removeMode) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index e4a923f51f3..f1a90646117 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1377,7 +1377,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn float ground = m_caster->GetMapHeight(x, y, z); float liquidLevel = VMAP_INVALID_HEIGHT_VALUE; LiquidData liquidData; - if (m_caster->GetMap()->GetLiquidStatus(m_caster->GetPhaseMask(), x, y, z, MAP_ALL_LIQUIDS, &liquidData, m_caster->GetCollisionHeight())) + if (m_caster->GetMap()->GetLiquidStatus(m_caster->GetPhaseMask(), x, y, z, {}, &liquidData, m_caster->GetCollisionHeight())) liquidLevel = liquidData.level; if (liquidLevel <= ground) // When there is no liquid Map::GetWaterOrGroundLevel returns ground level @@ -1891,9 +1891,11 @@ WorldObject* Spell::SearchNearbyTarget(float range, SpellTargetObjectTypes objec uint32 containerTypeMask = GetSearcherTypeMask(objectType, condList); if (!containerTypeMask) return nullptr; + Trinity::WorldObjectSpellNearbyTargetCheck check(range, m_caster, m_spellInfo, selectionType, condList); Trinity::WorldObjectLastSearcher searcher(m_caster, target, check, containerTypeMask); - SearchTargets > (searcher, containerTypeMask, m_caster, m_caster, range); + searcher.i_phaseMask = PHASEMASK_ANYWHERE; + SearchTargets>(searcher, containerTypeMask, m_caster, m_caster, range); return target; } @@ -1906,7 +1908,8 @@ void Spell::SearchAreaTargets(std::list& targets, float range, Pos float extraSearchRadius = range > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; Trinity::WorldObjectSpellAreaTargetCheck check(range, position, m_caster, referer, m_spellInfo, selectionType, condList); Trinity::WorldObjectListSearcher searcher(m_caster, targets, check, containerTypeMask); - SearchTargets > (searcher, containerTypeMask, m_caster, position, range + extraSearchRadius); + searcher.i_phaseMask = PHASEMASK_ANYWHERE; + SearchTargets>(searcher, containerTypeMask, m_caster, position, range + extraSearchRadius); } void Spell::SearchChainTargets(std::list& targets, uint32 chainTargets, WorldObject* target, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectType, ConditionContainer* condList, bool isChainHeal) @@ -4215,7 +4218,7 @@ void Spell::SendSpellStart() //TC_LOG_DEBUG("spells", "Sending SMSG_SPELL_START id={}", m_spellInfo->Id); - uint32 castFlags = CAST_FLAG_UNKNOWN_2; + uint32 castFlags = CAST_FLAG_HAS_TRAJECTORY; uint32 schoolImmunityMask = 0; uint32 mechanicImmunityMask = 0; if (Unit* unitCaster = m_caster->ToUnit()) @@ -5391,13 +5394,13 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint return SPELL_FAILED_ONLY_BATTLEGROUNDS; // do not allow spells to be cast in arenas - // - with greater than 10 min CD without SPELL_ATTR4_USABLE_IN_ARENA flag - // - with SPELL_ATTR4_NOT_USABLE_IN_ARENA flag - if (m_spellInfo->HasAttribute(SPELL_ATTR4_NOT_USABLE_IN_ARENA) || - (m_spellInfo->GetRecoveryTime() > 10 * MINUTE * IN_MILLISECONDS && !m_spellInfo->HasAttribute(SPELL_ATTR4_USABLE_IN_ARENA))) - if (MapEntry const* mapEntry = sMapStore.LookupEntry(m_caster->GetMapId())) - if (mapEntry->IsBattleArena()) - return SPELL_FAILED_NOT_IN_ARENA; + if (Player* player = m_caster->ToPlayer()) + if (player->InArena()) + { + SpellCastResult castResult = CheckArenaCastRules(); + if (castResult != SPELL_CAST_OK) + return castResult; + } // zone check if (m_caster->GetTypeId() != TYPEID_PLAYER || !m_caster->ToPlayer()->IsGameMaster()) @@ -6392,6 +6395,25 @@ int32 Spell::CalculateDamage(SpellEffectInfo const& spellEffectInfo) const return m_caster->CalculateSpellDamage(spellEffectInfo, m_spellValue->EffectBasePoints + spellEffectInfo.EffectIndex); } +SpellCastResult Spell::CheckArenaCastRules() const +{ + // check USABLE attributes + // USABLE takes precedence over NOT_USABLE + if (m_spellInfo->HasAttribute(SPELL_ATTR4_USABLE_IN_ARENA)) + return SPELL_CAST_OK; + + // check NOT_USABLE attributes + if (m_spellInfo->AttributesEx4 & SPELL_ATTR4_NOT_USABLE_IN_ARENA) + return SPELL_FAILED_NOT_IN_ARENA; + + // check cooldowns + uint32 spellCooldown = m_spellInfo->GetRecoveryTime(); + if (spellCooldown > 10 * MINUTE * IN_MILLISECONDS) // not sure if still needed + return SPELL_FAILED_NOT_IN_ARENA; + + return SPELL_CAST_OK; +} + SpellCastResult Spell::CheckMovement() const { if (IsTriggered()) @@ -6821,7 +6843,7 @@ SpellCastResult Spell::CheckItems(uint32* param1 /*= nullptr*/, uint32* param2 / if (spellEffectInfo.IsEffect(SPELL_EFFECT_CREATE_ITEM_2)) if (target->ToPlayer()->GetFreeInventorySpace() == 0) { - player->SendEquipError(EQUIP_ERR_INVENTORY_FULL, nullptr, nullptr, spellEffectInfo.ItemType); + player->SendEquipError(EQUIP_ERR_INV_FULL, nullptr, nullptr, spellEffectInfo.ItemType); return SPELL_FAILED_DONT_REPORT; } @@ -6886,9 +6908,19 @@ SpellCastResult Spell::CheckItems(uint32* param1 /*= nullptr*/, uint32* param2 / if (!targetItem) return SPELL_FAILED_ITEM_NOT_FOUND; - // required level has to be checked also! Exploit fix - if (targetItem->GetTemplate()->ItemLevel < m_spellInfo->BaseLevel || (targetItem->GetTemplate()->RequiredLevel && targetItem->GetTemplate()->RequiredLevel < m_spellInfo->BaseLevel)) - return SPELL_FAILED_LOWLEVEL; + // Apply item level restriction + if (!m_spellInfo->HasAttribute(SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF)) + { + uint32 requiredLevel = targetItem->GetTemplate()->RequiredLevel; + if (!requiredLevel) + requiredLevel = targetItem->GetTemplate()->ItemLevel; + + if (requiredLevel < m_spellInfo->BaseLevel) + return SPELL_FAILED_LOWLEVEL; + } + if (m_CastItem + && m_spellInfo->MaxLevel > 0 && targetItem->GetTemplate()->ItemLevel > m_spellInfo->MaxLevel) + return SPELL_FAILED_HIGHLEVEL; bool isItemUsable = false; for (uint8 e = 0; e < MAX_ITEM_PROTO_SPELLS; ++e) @@ -6956,14 +6988,18 @@ SpellCastResult Spell::CheckItems(uint32* param1 /*= nullptr*/, uint32* param2 / return SPELL_FAILED_NOT_TRADEABLE; } - // Apply item level restriction if the enchanting spell has max level restrition set - if (m_CastItem && m_spellInfo->MaxLevel > 0) + // Apply item level restriction + if (!m_spellInfo->HasAttribute(SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF)) { - if (item->GetTemplate()->ItemLevel < m_CastItem->GetTemplate()->RequiredLevel) + uint32 requiredLevel = item->GetTemplate()->RequiredLevel; + if (!requiredLevel) + requiredLevel = item->GetTemplate()->ItemLevel; + + if (requiredLevel < m_spellInfo->BaseLevel) return SPELL_FAILED_LOWLEVEL; - if (item->GetTemplate()->ItemLevel > m_spellInfo->MaxLevel) - return SPELL_FAILED_HIGHLEVEL; } + if (m_CastItem && m_spellInfo->MaxLevel > 0 && item->GetTemplate()->ItemLevel > m_spellInfo->MaxLevel) + return SPELL_FAILED_HIGHLEVEL; break; } case SPELL_EFFECT_ENCHANT_HELD_ITEM: diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 7abeb67b13c..fe8b1a54670 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -76,7 +76,7 @@ enum SpellCastFlags { CAST_FLAG_NONE = 0x00000000, CAST_FLAG_PENDING = 0x00000001, // aoe combat log? - CAST_FLAG_UNKNOWN_2 = 0x00000002, + CAST_FLAG_HAS_TRAJECTORY = 0x00000002, CAST_FLAG_UNKNOWN_3 = 0x00000004, CAST_FLAG_UNKNOWN_4 = 0x00000008, // ignore AOE visual CAST_FLAG_UNKNOWN_5 = 0x00000010, @@ -338,6 +338,7 @@ class TC_GAME_API Spell SpellCastResult CheckPower() const; SpellCastResult CheckRuneCost(uint32 runeCostID) const; SpellCastResult CheckCasterAuras(uint32* param1) const; + SpellCastResult CheckArenaCastRules() const; SpellCastResult CheckMovement() const; bool CheckSpellCancelsAuraEffect(AuraType auraType, uint32* param1) const; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 423883689d7..a6317dbe9f3 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1463,7 +1463,7 @@ void Spell::DoCreateItem(uint32 itemId) if (msg != EQUIP_ERR_OK) { // convert to possible store amount - if (msg == EQUIP_ERR_INVENTORY_FULL || msg == EQUIP_ERR_CANT_CARRY_MORE_OF_THIS) + if (msg == EQUIP_ERR_INV_FULL || msg == EQUIP_ERR_ITEM_MAX_COUNT) num_to_add -= no_space; else { @@ -1566,6 +1566,10 @@ void Spell::EffectPersistentAA() if (!unitCaster) return; + // Caster not in world, might be spell triggered from aura removal + if (!unitCaster->IsInWorld()) + return; + // only handle at last effect for (size_t i = effectInfo->EffectIndex + 1; i < m_spellInfo->GetEffects().size(); ++i) if (m_spellInfo->GetEffect(SpellEffIndex(i)).IsEffect(SPELL_EFFECT_PERSISTENT_AREA_AURA)) @@ -1573,11 +1577,13 @@ void Spell::EffectPersistentAA() ASSERT(!_dynObjAura); - float radius = effectInfo->CalcRadius(unitCaster); - - // Caster not in world, might be spell triggered from aura removal - if (!unitCaster->IsInWorld()) - return; + float radius = 0.0f; + for (size_t i = 0; i <= effectInfo->EffectIndex; ++i) + { + SpellEffectInfo const& spellEffectInfo = m_spellInfo->GetEffect(SpellEffIndex(i)); + if (spellEffectInfo.IsEffect(SPELL_EFFECT_PERSISTENT_AREA_AURA)) + radius = std::max(radius, spellEffectInfo.CalcRadius(unitCaster)); + } DynamicObject* dynObj = new DynamicObject(false); if (!dynObj->CreateDynamicObject(unitCaster->GetMap()->GenerateLowGuid(), unitCaster, m_spellInfo->Id, *destTarget, radius, DYNAMIC_OBJECT_AREA_SPELL)) @@ -1600,7 +1606,9 @@ void Spell::EffectPersistentAA() return; ASSERT(_dynObjAura->GetDynobjOwner()); - _dynObjAura->_ApplyEffectForTargets(effectInfo->EffectIndex); + for (size_t i = 0; i < m_spellInfo->GetEffects().size(); ++i) + if (m_spellInfo->GetEffect(SpellEffIndex(i)).IsEffect(SPELL_EFFECT_PERSISTENT_AREA_AURA)) + _dynObjAura->_ApplyEffectForTargets(i); } void Spell::EffectEnergize() @@ -1972,9 +1980,9 @@ void Spell::EffectSummonChangeItem() InventoryResult msg = player->CanEquipItem(m_CastItem->GetSlot(), dest, pNewItem, true); - if (msg == EQUIP_ERR_OK || msg == EQUIP_ERR_CANT_DO_RIGHT_NOW) + if (msg == EQUIP_ERR_OK || msg == EQUIP_ERR_CLIENT_LOCKED_OUT) { - if (msg == EQUIP_ERR_CANT_DO_RIGHT_NOW) dest = EQUIPMENT_SLOT_MAINHAND; + if (msg == EQUIP_ERR_CLIENT_LOCKED_OUT) dest = EQUIPMENT_SLOT_MAINHAND; // prevent crash at access and unexpected charges counting with item update queue corrupt if (m_CastItem == m_targets.GetItemTarget()) @@ -2038,7 +2046,9 @@ void Spell::EffectSummonType() if (m_originalCaster) caster = m_originalCaster; - bool personalSpawn = (properties->Flags & SUMMON_PROP_FLAG_PERSONAL_SPAWN) != 0; + ObjectGuid privateObjectOwner; + if (properties->Flags & SUMMON_PROP_FLAG_PERSONAL_SPAWN) + privateObjectOwner = m_originalCaster->IsPrivateObject() ? m_originalCaster->GetPrivateObjectOwner() : m_originalCaster->GetGUID(); int32 duration = m_spellInfo->GetDuration(); if (Player* modOwner = caster->GetSpellModOwner()) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_DURATION, duration); @@ -2114,7 +2124,7 @@ void Spell::EffectSummonType() if (!unitCaster) return; - summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, personalSpawn); + summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, privateObjectOwner); if (!summon || !summon->IsTotem()) return; @@ -2134,7 +2144,7 @@ void Spell::EffectSummonType() if (!unitCaster) return; - summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, personalSpawn); + summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, privateObjectOwner); if (!summon || !summon->HasUnitTypeMask(UNIT_MASK_MINION)) return; @@ -2158,7 +2168,7 @@ void Spell::EffectSummonType() // randomize position for multiple summons pos = caster->GetRandomPoint(*destTarget, radius); - summon = caster->SummonCreature(entry, pos, summonType, Milliseconds(duration), 0, m_spellInfo->Id, personalSpawn); + summon = caster->SummonCreature(entry, pos, summonType, Milliseconds(duration), 0, m_spellInfo->Id, privateObjectOwner); if (!summon) continue; @@ -2183,7 +2193,7 @@ void Spell::EffectSummonType() if (!unitCaster) return; - summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, personalSpawn); + summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, privateObjectOwner); break; } case SUMMON_CATEGORY_VEHICLE: diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index d308b1ff023..48ae954b080 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -405,7 +405,7 @@ bool SpellEffectInfo::IsAura() const bool SpellEffectInfo::IsAura(AuraType aura) const { - return IsAura() && ApplyAuraName == uint32(aura); + return IsAura() && ApplyAuraName == aura; } bool SpellEffectInfo::IsTargetingArea() const @@ -3361,7 +3361,7 @@ SpellInfo const* SpellInfo::GetAuraRankForLevel(uint8 level) const return this; // Client ignores spell with these attributes (sub_53D9D0) - if (HasAttribute(SPELL_ATTR0_NEGATIVE_1) || HasAttribute(SPELL_ATTR2_UNK3) || HasAttribute(SPELL_ATTR3_DRAIN_SOUL)) + if (HasAttribute(SPELL_ATTR0_NEGATIVE_1) || HasAttribute(SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF) || HasAttribute(SPELL_ATTR3_DRAIN_SOUL)) return this; bool needRankSelection = false; diff --git a/src/server/game/Time/WowTime.cpp b/src/server/game/Time/WowTime.cpp index b88f0c56a8e..6ad2760dcf0 100644 --- a/src/server/game/Time/WowTime.cpp +++ b/src/server/game/Time/WowTime.cpp @@ -161,10 +161,10 @@ std::strong_ordering operator<=>(WowTime const& left, WowTime const& right) if (std::strong_ordering cmp = compareFieldIfSet(&WowTime::_weekDay); advstd::is_neq(cmp)) return cmp; - if (std::strong_ordering cmp = compareFieldIfSet(&WowTime::_year); advstd::is_neq(cmp)) + if (std::strong_ordering cmp = compareFieldIfSet(&WowTime::_hour); advstd::is_neq(cmp)) return cmp; - if (std::strong_ordering cmp = compareFieldIfSet(&WowTime::_hour); advstd::is_neq(cmp)) + if (std::strong_ordering cmp = compareFieldIfSet(&WowTime::_minute); advstd::is_neq(cmp)) return cmp; return std::strong_ordering::equal; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index b49ef889c1a..eece2729411 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -917,6 +917,19 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_START_PLAYER_MONEY] = MAX_MONEY_AMOUNT; } + m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY] = sConfigMgr->GetIntDefault("StartDeathKnightPlayerMoney", 2000); + if (int32(m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY]) < 0) + { + TC_LOG_ERROR("server.loading", "StartDeathKnightPlayerMoney ({}) must be in range 0..{}. Set to {}.", m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY], MAX_MONEY_AMOUNT, 2000); + m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY] = 2000; + } + else if (m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY] > MAX_MONEY_AMOUNT) + { + TC_LOG_ERROR("server.loading", "StartDeathKnightPlayerMoney ({}) must be in range 0..{}. Set to {}.", + m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY], MAX_MONEY_AMOUNT, MAX_MONEY_AMOUNT); + m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY] = MAX_MONEY_AMOUNT; + } + m_int_configs[CONFIG_MAX_HONOR_POINTS] = sConfigMgr->GetIntDefault("MaxHonorPoints", 75000); if (int32(m_int_configs[CONFIG_MAX_HONOR_POINTS]) < 0) { diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index c8e7ffd0ff2..18bf66d7e22 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -238,6 +238,7 @@ enum WorldIntConfigs : uint32 CONFIG_START_PLAYER_LEVEL, CONFIG_START_DEATH_KNIGHT_PLAYER_LEVEL, CONFIG_START_PLAYER_MONEY, + CONFIG_START_DEATH_KNIGHT_PLAYER_MONEY, CONFIG_MAX_HONOR_POINTS, CONFIG_START_HONOR_POINTS, CONFIG_MAX_ARENA_POINTS, diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 65c671bef2f..8b26d375c28 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -296,7 +296,7 @@ class misc_commandscript : public CommandScript zoneX, zoneY, groundZ, floorZ, map->GetMinHeight(object->GetPositionX(), object->GetPositionY()), haveMap, haveVMap, haveMMap); LiquidData liquidStatus; - ZLiquidStatus status = map->GetLiquidStatus(object->GetPhaseMask(), object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), MAP_ALL_LIQUIDS, &liquidStatus, object->GetCollisionHeight()); + ZLiquidStatus status = map->GetLiquidStatus(object->GetPhaseMask(), object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), {}, &liquidStatus); if (status) handler->PSendSysMessage(LANG_LIQUID_STATUS, liquidStatus.level, liquidStatus.depth_level, liquidStatus.entry, liquidStatus.type_flags, status); diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 9e8529f1cb8..15150eea1c5 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -507,6 +507,8 @@ class npc_commandscript : public CommandScript handler->PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor()); handler->PSendSysMessage(LANG_NPCINFO_POSITION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); handler->PSendSysMessage(LANG_OBJECTINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str()); + handler->PSendSysMessage(LANG_OBJECTINFO_STRINGIDS, STRING_VIEW_FMT_ARG(target->GetStringId(StringIdType::Template)), + STRING_VIEW_FMT_ARG(target->GetStringId(StringIdType::Spawn)), STRING_VIEW_FMT_ARG(target->GetStringId(StringIdType::Script))); handler->PSendSysMessage(LANG_NPCINFO_REACTSTATE, DescribeReactState(target->GetReactState())); if (CreatureAI const* ai = target->AI()) handler->PSendSysMessage(LANG_OBJECTINFO_AITYPE, Trinity::GetTypeName(*ai).c_str()); diff --git a/src/server/scripts/Custom/cfpve.cpp b/src/server/scripts/Custom/cfpve.cpp new file mode 100644 index 00000000000..6b9ef1a723e --- /dev/null +++ b/src/server/scripts/Custom/cfpve.cpp @@ -0,0 +1,108 @@ +/* + * This file is part of the TrinityCore 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 General Public License as published by the + * Free Software Foundation; either version 2 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 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 "Player.h" +#include "Group.h" +#include "ObjectAccessor.h" + +enum MiscCrossFactionPVE +{ + ZONE_ICECROWN_CITADEL = 4812, + ICC_MAP_ID = 631, + ZONE_TRIAL_OF_THE_CHAMPION = 4723, + TOCHAMPION_MAP_ID = 650, + ZONE_TRIAL_OF_THE_CRUSADER = 4722, + TOCRUSADER_MAP_ID = 649, + ZONE_PIT_OF_SARON = 4813, + POS_MAP_ID = 658, + ZONE_HALLS_OF_REFLECTION = 4820, + HOR_MAP_ID = 668, + ZONE_FORGE_OF_SOULS = 4809, + FOS_MAP_ID = 632, + ZONE_HALLS_OF_STONE = 4264, + HOS_MAP_ID = 599, + ZONE_THE_NEXUS = 4265, + TN_MAP_ID = 576, + ZONE_WARSONG_GULCH = 3277, + WSG_MAP_ID = 489, + ZONE_ARATHI_BASIN = 3358, + AB_MAP_ID = 529 +}; + +class CfPlayerScript : public PlayerScript +{ +public: + CfPlayerScript() : PlayerScript("CfPlayerScript") {} + + // Called when a player enters the world (logs in or teleports) + void OnLogin(Player* player, bool firstLogin) override + { + HandleFactionChange(player, player->GetMapId()); + } + + // Called when a player changes zones + void OnUpdateZone(Player* player, uint32 newZone, uint32 /*newArea*/) override + { + HandleFactionChange(player, newZone); + } + +private: + // Store the original faction in a map + std::unordered_map originalFactionMap; + + void HandleFactionChange(Player* player, uint32 zoneOrMapId) + { + static const std::set zoneSet = { + ICC_MAP_ID, TOCHAMPION_MAP_ID, TOCRUSADER_MAP_ID, POS_MAP_ID, + HOR_MAP_ID, FOS_MAP_ID, HOS_MAP_ID, TN_MAP_ID, WSG_MAP_ID, AB_MAP_ID + }; + + if (zoneSet.count(zoneOrMapId)) + { + // Change faction to match the group leader + if (Group* group = player->GetGroup()) + { + if (Player* leader = ObjectAccessor::FindPlayer(group->GetLeaderGUID())) + { + if (originalFactionMap.find(player->GetGUID()) == originalFactionMap.end()) + { + // Store the original faction + originalFactionMap[player->GetGUID()] = player->GetFaction(); + } + player->SetFaction(leader->GetFaction()); + } + } + } + else + { + // Restore player's original faction + auto it = originalFactionMap.find(player->GetGUID()); + if (it != originalFactionMap.end()) + { + player->SetFaction(it->second); + originalFactionMap.erase(it); // Clean up the map after restoring + } + } + } +}; + +void AddSC_cfpve() +{ + new CfPlayerScript(); +} diff --git a/src/server/scripts/Custom/custom_script_loader.cpp b/src/server/scripts/Custom/custom_script_loader.cpp index 9e5e9ba2bfd..718f9586f04 100644 --- a/src/server/scripts/Custom/custom_script_loader.cpp +++ b/src/server/scripts/Custom/custom_script_loader.cpp @@ -17,8 +17,11 @@ // This is where scripts' loading functions should be declared: + void AddSC_cfpve(); + // The name of this function should match: // void Add${NameOfDirectory}Scripts() void AddCustomScripts() { + AddSC_cfpve(); } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp index 238739fd9f0..6cdd8dc843e 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp @@ -87,8 +87,9 @@ class boss_mal_ganis : public CreatureScript _defeated = true; // @todo hack most likely - if (InstanceMap* map = instance->instance->ToInstanceMap()) - map->PermBindAllPlayers(); + if (instance->instance->IsHeroic()) + if (InstanceMap* map = instance->instance->ToInstanceMap()) + map->PermBindAllPlayers(); } } diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 3913560d859..78448c14103 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -91,7 +91,7 @@ class npc_draenei_survivor : public CreatureScript DoCast(me, SPELL_IRRIDATION, true); - me->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + me->SetPvP(true); me->SetUnitFlag(UNIT_FLAG_IN_COMBAT); me->SetHealth(me->CountPctFromMaxHealth(10)); me->SetStandState(UNIT_STAND_STATE_SLEEP); @@ -115,7 +115,7 @@ class npc_draenei_survivor : public CreatureScript { if (spellInfo->SpellFamilyFlags[2] & 0x080000000) { - me->RemoveUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); + me->SetPvP(false); me->SetStandState(UNIT_STAND_STATE_STAND); DoCast(me, SPELL_STUNNED, true); diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 75b55d566d5..04098b968b7 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -50,11 +50,12 @@ enum Spells enum Events { - EVENT_MAGIC_BANE = 1, - EVENT_SHADOW_BOLT = 2, - EVENT_CORRUPT_SOUL = 3, - EVENT_SOULSTORM = 4, - EVENT_FEAR = 5 + EVENT_MAGIC_BANE = 1, + EVENT_SHADOW_BOLT, + EVENT_CORRUPT_SOUL, + EVENT_SOULSTORM, + EVENT_FEAR, + EVENT_TELEPORT }; enum CombatPhases @@ -114,9 +115,7 @@ struct boss_bronjahm : public BossAI if (events.IsInPhase(PHASE_1) && !HealthAbovePct(30)) { events.SetPhase(PHASE_2); - DoCast(me, SPELL_TELEPORT); - events.ScheduleEvent(EVENT_FEAR, 12s, 16s, 0, PHASE_2); - events.ScheduleEvent(EVENT_SOULSTORM, 100ms, 0, PHASE_2); + events.ScheduleEvent(EVENT_TELEPORT, 1ms, 0, PHASE_2); } } @@ -196,6 +195,11 @@ struct boss_bronjahm : public BossAI me->CastSpell(nullptr, SPELL_FEAR, { SPELLVALUE_MAX_TARGETS, 1 }); events.ScheduleEvent(EVENT_FEAR, 8s, 12s, 0, PHASE_2); break; + case EVENT_TELEPORT: + DoCastSelf(SPELL_TELEPORT); + events.ScheduleEvent(EVENT_FEAR, 12s, 16s, 0, PHASE_2); + events.ScheduleEvent(EVENT_SOULSTORM, 100ms, 0, PHASE_2); + break; default: break; } diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index fae90261770..33ad236f791 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -547,22 +547,20 @@ class spell_ick_explosive_barrage : public AuraScript void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - Unit* caster = GetCaster(); - if (!caster || caster->GetTypeId() != TYPEID_UNIT) + Creature* target = GetTarget()->ToCreature(); + if (!target) return; - caster->GetMotionMaster()->MoveIdle(); - caster->GetMotionMaster()->Clear(MOTION_PRIORITY_NORMAL); + target->SetReactState(REACT_PASSIVE); } void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - Unit* caster = GetCaster(); - if (!caster || caster->GetTypeId() != TYPEID_UNIT) + Creature* target = GetTarget()->ToCreature(); + if (!target) return; - if (Unit* victim = caster->GetVictim()) - caster->GetMotionMaster()->MoveChase(victim); + target->SetReactState(REACT_AGGRESSIVE); } void Register() override diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 81264592509..f9a30113a37 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -214,7 +214,7 @@ class spell_spawn_blood_pool : public SpellScript Unit* caster = GetCaster(); Position summonPos = caster->GetPosition(); LiquidData liquidStatus; - if (caster->GetMap()->GetLiquidStatus(caster->GetPhaseMask(), caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), MAP_ALL_LIQUIDS, &liquidStatus, caster->GetCollisionHeight())) + if (caster->GetMap()->GetLiquidStatus(caster->GetPhaseMask(), caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), {}, &liquidStatus, caster->GetCollisionHeight())) summonPos.m_positionZ = liquidStatus.level; dest.Relocate(summonPos); } diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 2cf9d7bc5c7..1bdeed4655f 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -4286,6 +4286,64 @@ class spell_item_eggnog : public SpellScript } }; +// Titanium Seal of Dalaran +enum TitaniumSealOfDalaranTexts +{ + TEXT_TSOD_COIN_TOSS = 32638, + TEXT_TSOD_FLIPPED_HEADS = 32663, + TEXT_TSOD_FLIPPED_TAILS = 32664 +}; + +// 60458 - Toss Your Luck! +class spell_item_titanium_seal_of_dalaran_toss : public SpellScript +{ + PrepareSpellScript(spell_item_titanium_seal_of_dalaran_toss); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return sObjectMgr->GetBroadcastText(TEXT_TSOD_COIN_TOSS); + } + + void RelocateHeight(SpellDestination& dest) + { + dest.RelocateOffset({ 0.0f, 0.0f, 20.0f }); + } + + void TriggerEmote(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->TextEmote(TEXT_TSOD_COIN_TOSS, caster); + } + + void Register() override + { + OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_item_titanium_seal_of_dalaran_toss::RelocateHeight, EFFECT_0, TARGET_DEST_CASTER); + OnEffectLaunch += SpellEffectFn(spell_item_titanium_seal_of_dalaran_toss::TriggerEmote, EFFECT_0, SPELL_EFFECT_TRIGGER_MISSILE); + } +}; + +// 60476 - Toss Your Luck! +class spell_item_titanium_seal_of_dalaran_catch : public SpellScript +{ + PrepareSpellScript(spell_item_titanium_seal_of_dalaran_catch); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return sObjectMgr->GetBroadcastText(TEXT_TSOD_FLIPPED_HEADS) && sObjectMgr->GetBroadcastText(TEXT_TSOD_FLIPPED_TAILS); + } + + void TriggerEmote(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->TextEmote(RAND(TEXT_TSOD_FLIPPED_HEADS, TEXT_TSOD_FLIPPED_TAILS), caster); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_item_titanium_seal_of_dalaran_catch::TriggerEmote, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_item_spell_scripts() { // 23074 Arcanite Dragonling @@ -4421,4 +4479,6 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_mad_alchemists_potion); RegisterSpellScript(spell_item_crazy_alchemists_potion); RegisterSpellScript(spell_item_eggnog); + RegisterSpellScript(spell_item_titanium_seal_of_dalaran_toss); + RegisterSpellScript(spell_item_titanium_seal_of_dalaran_catch); } diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index 89417cb3362..5a82e210f5a 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -77,7 +77,7 @@ class item_only_for_flight : public ItemScript return false; // error - player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, nullptr); + player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr); return true; } }; @@ -178,7 +178,7 @@ class item_captured_frog : public ItemScript player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, nullptr); } else - player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, nullptr); + player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr); return true; } }; diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp index 31c4702224e..77b6f3a6f45 100644 --- a/src/server/scripts/World/npc_professions.cpp +++ b/src/server/scripts/World/npc_professions.cpp @@ -409,7 +409,7 @@ void ProcessUnlearnAction(Player* player, Creature* creature, uint32 spellId, ui player->SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, creature, 0, 0); } else - player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, nullptr, nullptr); + player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, nullptr, nullptr); CloseGossipMenuFor(player); } diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index e9f6fa7f605..df0e4b1e3e8 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -897,9 +897,6 @@ void npc_doctor::npc_doctorAI::UpdateAI(uint32 diff) if (Creature* Patient = me->SummonCreature(patientEntry, **point, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5s)) { - //303, this flag appear to be required for client side item->spell to work (TARGET_SINGLE_FRIEND) - Patient->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); - Patients.push_back(Patient->GetGUID()); ENSURE_AI(npc_injured_patient::npc_injured_patientAI, Patient->AI())->DoctorGUID = me->GetGUID(); ENSURE_AI(npc_injured_patient::npc_injured_patientAI, Patient->AI())->Coord = *point; @@ -915,175 +912,6 @@ void npc_doctor::npc_doctorAI::UpdateAI(uint32 diff) } } -/*###### -## npc_garments_of_quests -######*/ - -/// @todo get text for each NPC - -enum Garments -{ - SPELL_LESSER_HEAL_R2 = 2052, - SPELL_FORTITUDE_R1 = 1243, - - QUEST_MOON = 5621, - QUEST_LIGHT_1 = 5624, - QUEST_LIGHT_2 = 5625, - QUEST_SPIRIT = 5648, - QUEST_DARKNESS = 5650, - - ENTRY_SHAYA = 12429, - ENTRY_ROBERTS = 12423, - ENTRY_DOLF = 12427, - ENTRY_KORJA = 12430, - ENTRY_DG_KEL = 12428, - - // used by 12429, 12423, 12427, 12430, 12428, but signed for 12429 - SAY_THANKS = 0, - SAY_GOODBYE = 1, - SAY_HEALED = 2, -}; - -class npc_garments_of_quests : public CreatureScript -{ -public: - npc_garments_of_quests() : CreatureScript("npc_garments_of_quests") { } - - struct npc_garments_of_questsAI : public EscortAI - { - npc_garments_of_questsAI(Creature* creature) : EscortAI(creature) - { - switch (me->GetEntry()) - { - case ENTRY_SHAYA: - quest = QUEST_MOON; - break; - case ENTRY_ROBERTS: - quest = QUEST_LIGHT_1; - break; - case ENTRY_DOLF: - quest = QUEST_LIGHT_2; - break; - case ENTRY_KORJA: - quest = QUEST_SPIRIT; - break; - case ENTRY_DG_KEL: - quest = QUEST_DARKNESS; - break; - default: - quest = 0; - break; - } - - Initialize(); - } - - void Initialize() - { - IsHealed = false; - CanRun = false; - - RunAwayTimer = 5000; - } - - ObjectGuid CasterGUID; - - bool IsHealed; - bool CanRun; - - uint32 RunAwayTimer; - uint32 quest; - - void Reset() override - { - CasterGUID.Clear(); - - Initialize(); - - me->SetStandState(UNIT_STAND_STATE_KNEEL); - // expect database to have RegenHealth=0 - me->SetHealth(me->CountPctFromMaxHealth(70)); - } - - void JustEngagedWith(Unit* /*who*/) override { } - - void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override - { - if (spellInfo->Id == SPELL_LESSER_HEAL_R2 || spellInfo->Id == SPELL_FORTITUDE_R1) - { - //not while in combat - if (me->IsInCombat()) - return; - - //nothing to be done now - if (IsHealed && CanRun) - return; - - if (Player* player = caster->ToPlayer()) - { - if (quest && player->GetQuestStatus(quest) == QUEST_STATUS_INCOMPLETE) - { - if (IsHealed && !CanRun && spellInfo->Id == SPELL_FORTITUDE_R1) - { - Talk(SAY_THANKS, player); - CanRun = true; - } - else if (!IsHealed && spellInfo->Id == SPELL_LESSER_HEAL_R2) - { - CasterGUID = player->GetGUID(); - me->SetStandState(UNIT_STAND_STATE_STAND); - Talk(SAY_HEALED, player); - IsHealed = true; - } - } - - // give quest credit, not expect any special quest objectives - if (CanRun) - player->TalkedToCreature(me->GetEntry(), me->GetGUID()); - } - } - } - - void UpdateAI(uint32 diff) override - { - if (CanRun && !me->IsInCombat()) - { - if (RunAwayTimer <= diff) - { - if (Unit* unit = ObjectAccessor::GetUnit(*me, CasterGUID)) - { - switch (me->GetEntry()) - { - case ENTRY_SHAYA: - case ENTRY_ROBERTS: - case ENTRY_DOLF: - case ENTRY_KORJA: - case ENTRY_DG_KEL: - Talk(SAY_GOODBYE, unit); - break; - } - - Start(false, true); - } - else - EnterEvadeMode(); //something went wrong - - RunAwayTimer = 30000; - } - else - RunAwayTimer -= diff; - } - - EscortAI::UpdateAI(diff); - } - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_garments_of_questsAI(creature); - } -}; - /*###### ## npc_guardian ######*/ @@ -2459,7 +2287,6 @@ void AddSC_npcs_special() new npc_midsummer_bunny_pole(); new npc_doctor(); new npc_injured_patient(); - new npc_garments_of_quests(); new npc_guardian(); new npc_steam_tonk(); new npc_tournament_mount(); diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index 2ae3043b79c..f6f2e4e7045 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -480,7 +480,7 @@ enum SpellAttr2 : uint32 SPELL_ATTR2_CAN_TARGET_DEAD = 0x00000001, // TITLE Can target dead players or corpses SPELL_ATTR2_UNK1 = 0x00000002, // TITLE Unknown attribute 1@Attr2 SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS = 0x00000004, // TITLE Ignore Line of Sight - SPELL_ATTR2_UNK3 = 0x00000008, // TITLE Ignore aura scaling + SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF = 0x00000008, // TITLE Allow Low Level Buff SPELL_ATTR2_DISPLAY_IN_STANCE_BAR = 0x00000010, // TITLE Show in stance bar (client only) SPELL_ATTR2_AUTOREPEAT_FLAG = 0x00000020, // TITLE Ranged auto-attack spell SPELL_ATTR2_CANT_TARGET_TAPPED = 0x00000040, // TITLE Cannot target others' tapped units DESCRIPTION Can only target untapped units, or those tapped by caster @@ -2766,6 +2766,13 @@ enum CreatureEliteType CREATURE_ELITE_TRIVIAL = 5 // found in 2.2.3 for 2 mobs }; +enum class StringIdType : int32 +{ + Template = 0, + Spawn = 1, + Script = 2 +}; + // values based at Holidays.dbc enum HolidayIds { @@ -3663,23 +3670,32 @@ enum DuelCompleteType : uint8 DUEL_FLED = 2 }; -// handle the queue types and bg types separately to enable joining queue for different sized arenas at the same time -enum BattlegroundQueueTypeId +struct BattlegroundQueueTypeId { - BATTLEGROUND_QUEUE_NONE = 0, - BATTLEGROUND_QUEUE_AV = 1, - BATTLEGROUND_QUEUE_WS = 2, - BATTLEGROUND_QUEUE_AB = 3, - BATTLEGROUND_QUEUE_EY = 4, - BATTLEGROUND_QUEUE_SA = 5, - BATTLEGROUND_QUEUE_IC = 6, - BATTLEGROUND_QUEUE_RB = 7, - BATTLEGROUND_QUEUE_2v2 = 8, - BATTLEGROUND_QUEUE_3v3 = 9, - BATTLEGROUND_QUEUE_5v5 = 10, - MAX_BATTLEGROUND_QUEUE_TYPES + uint16 BattlemasterListId; + uint8 BracketId; + uint8 TeamSize; + + static constexpr BattlegroundQueueTypeId FromPacked(uint64 packedQueueId) + { + return { .BattlemasterListId = uint16((packedQueueId >> 16) & 0xFFFF), .BracketId = uint8((packedQueueId >> 8) & 0x7F), .TeamSize = uint8(packedQueueId & 0x7F) }; + } + + constexpr uint64 GetPacked() const + { + return (uint64(BattlemasterListId) << 16) + | (uint64(BracketId & 0xFF) << 8) + | (uint64(TeamSize & 0x3F)) + | UI64LIT(0x1F90000000000000); + } + + constexpr bool operator==(BattlegroundQueueTypeId const& right) const = default; + + constexpr std::strong_ordering operator<=>(BattlegroundQueueTypeId const& right) const = default; }; +constexpr BattlegroundQueueTypeId BATTLEGROUND_QUEUE_NONE = { 0, 0, 0 }; + enum GroupJoinBattlegroundResult { // positive values are indexes in BattlemasterList.dbc diff --git a/src/server/shared/enuminfo_SharedDefines.cpp b/src/server/shared/enuminfo_SharedDefines.cpp index c29d65018a6..61e776be136 100644 --- a/src/server/shared/enuminfo_SharedDefines.cpp +++ b/src/server/shared/enuminfo_SharedDefines.cpp @@ -529,7 +529,7 @@ TC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr2 value) case SPELL_ATTR2_CAN_TARGET_DEAD: return { "SPELL_ATTR2_CAN_TARGET_DEAD", "Can target dead players or corpses", "" }; case SPELL_ATTR2_UNK1: return { "SPELL_ATTR2_UNK1", "Unknown attribute 1@Attr2", "" }; case SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS: return { "SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS", "Ignore Line of Sight", "" }; - case SPELL_ATTR2_UNK3: return { "SPELL_ATTR2_UNK3", "Ignore aura scaling", "" }; + case SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF: return { "SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF", "Allow Low Level Buff", "" }; case SPELL_ATTR2_DISPLAY_IN_STANCE_BAR: return { "SPELL_ATTR2_DISPLAY_IN_STANCE_BAR", "Show in stance bar (client only)", "" }; case SPELL_ATTR2_AUTOREPEAT_FLAG: return { "SPELL_ATTR2_AUTOREPEAT_FLAG", "Ranged auto-attack spell", "" }; case SPELL_ATTR2_CANT_TARGET_TAPPED: return { "SPELL_ATTR2_CANT_TARGET_TAPPED", "Cannot target others' tapped units", "Can only target untapped units, or those tapped by caster" }; @@ -573,7 +573,7 @@ TC_API_EXPORT SpellAttr2 EnumUtils::FromIndex(size_t index) case 0: return SPELL_ATTR2_CAN_TARGET_DEAD; case 1: return SPELL_ATTR2_UNK1; case 2: return SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS; - case 3: return SPELL_ATTR2_UNK3; + case 3: return SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF; case 4: return SPELL_ATTR2_DISPLAY_IN_STANCE_BAR; case 5: return SPELL_ATTR2_AUTOREPEAT_FLAG; case 6: return SPELL_ATTR2_CANT_TARGET_TAPPED; @@ -614,7 +614,7 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(SpellAttr2 value) case SPELL_ATTR2_CAN_TARGET_DEAD: return 0; case SPELL_ATTR2_UNK1: return 1; case SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS: return 2; - case SPELL_ATTR2_UNK3: return 3; + case SPELL_ATTR2_ALLOW_LOW_LEVEL_BUFF: return 3; case SPELL_ATTR2_DISPLAY_IN_STANCE_BAR: return 4; case SPELL_ATTR2_AUTOREPEAT_FLAG: return 5; case SPELL_ATTR2_CANT_TARGET_TAPPED: return 6; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 90ad17d3181..971eebc6cf9 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -845,6 +845,14 @@ StartDeathKnightPlayerLevel = 55 StartPlayerMoney = 0 +# +# StartDeathKnightPlayerMoney +# Description: Amount of money (in Copper) that a death knight character has after creation. +# Default: 2000 +# 100 - (1 Silver) + +StartDeathKnightPlayerMoney = 2000 + # # MaxHonorPoints # Description: Maximum honor points a character can have.