From bc71ae762cbf80393480dc2e0b7d88f412816db3 Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Mon, 21 Feb 2022 22:51:25 +0100 Subject: [PATCH] Setup/Data * move custom data from setup scripts to DB * move strings from DB to locale files * use common function to calculate coordinates of dungeon entrances instead of inline sql * fixed manual data zones and itemset * fixed typos across the board --- includes/game.php | 69 +++++ includes/kernel.php | 4 +- includes/profiler.class.php | 1 - includes/smartAI.class.php | 6 +- includes/types/title.class.php | 5 +- localization/locale_dede.php | 4 + localization/locale_enus.php | 4 + localization/locale_eses.php | 4 + localization/locale_frfr.php | 4 + localization/locale_ruru.php | 4 + localization/locale_zhcn.php | 4 + setup/db_structure.sql | 59 +++-- setup/setup.php | 4 +- setup/tools/dbc.class.php | 2 + setup/tools/setupScript.class.php | 21 +- setup/tools/sqlGen.class.php | 2 +- setup/tools/sqlgen/achievement.func.php | 6 +- setup/tools/sqlgen/classes.func.php | 16 +- setup/tools/sqlgen/currencies.func.php | 13 +- setup/tools/sqlgen/factions.func.php | 39 +-- setup/tools/sqlgen/holidays.func.php | 31 +-- setup/tools/sqlgen/items.func.php | 12 +- setup/tools/sqlgen/itemset.func.php | 6 - setup/tools/sqlgen/races.func.php | 17 +- setup/tools/sqlgen/shapeshiftforms.func.php | 12 +- setup/tools/sqlgen/skillline.func.php | 23 +- setup/tools/sqlgen/sounds.func.php | 6 +- setup/tools/sqlgen/spawns.func.php | 66 +---- setup/tools/sqlgen/titles.func.php | 7 +- setup/tools/sqlgen/zones.func.php | 139 ++++------- setup/updates/1645476214_01.sql | 263 ++++++++++++++++++++ setup/updates/1645476214_02.sql | 1 + 32 files changed, 481 insertions(+), 373 deletions(-) create mode 100644 setup/updates/1645476214_01.sql create mode 100644 setup/updates/1645476214_02.sql diff --git a/includes/game.php b/includes/game.php index 82b4f6cf..f638c5df 100644 --- a/includes/game.php +++ b/includes/game.php @@ -210,6 +210,75 @@ class Game return $pages; } + + /*********************/ + /* World Pos. Checks */ + /*********************/ + + private static $alphaMapCache = []; + + private static function alphaMapCheck(int $areaId, array &$set) : bool + { + $file = 'setup/generated/alphaMaps/'.$areaId.'.png'; + if (!file_exists($file)) // file does not exist (probably instanced area) + return false; + + // invalid and corner cases (literally) + if (!is_array($set) || empty($set['posX']) || empty($set['posY']) || $set['posX'] >= 100 || $set['posY'] >= 100) + { + $set = null; + return true; + } + + if (empty(self::$alphaMapCache[$areaId])) + self::$alphaMapCache[$areaId] = imagecreatefrompng($file); + + // alphaMaps are 1000 x 1000, adapt points [black => valid point] + if (!imagecolorat(self::$alphaMapCache[$areaId], $set['posX'] * 10, $set['posY'] * 10)) + $set = null; + + return true; + } + + public static function checkCoords(array $points) : array + { + $result = []; + $capitals = array( // capitals take precedence over their surroundings + 1497, 1637, 1638, 3487, // Undercity, Ogrimmar, Thunder Bluff, Silvermoon City + 1519, 1537, 1657, 3557, // Stormwind City, Ironforge, Darnassus, The Exodar + 3703, 4395 // Shattrath City, Dalaran + ); + + foreach ($points as $res) + { + if (self::alphaMapCheck($res['areaId'], $res)) + { + if (!$res) + continue; + + // some rough measure how central the spawn is on the map (the lower the number, the better) + // 0: perfect center; 1: touches a border + $q = abs( (($res['posX'] - 50) / 50) * (($res['posY'] - 50) / 50) ); + + if (empty($result) || $result[0] > $q) + $result = [$q, $res]; + } + else if (in_array($res['areaId'], $capitals)) // capitals (auto-discovered) and no hand-made alphaMap available + return $res; + else if (empty($result)) // add with lowest quality if alpha map is missing + $result = [1.0, $res]; + } + + // spawn does not really match on a map, but we need at least one result + if (!$result) + { + usort($points, function ($a, $b) { return ($a['dist'] < $b['dist']) ? -1 : 1; }); + $result = [1.0, $points[0]]; + } + + return $result[1]; + } + public static function getWorldPosForGUID(int $type, int ...$guids) : array { $result = []; diff --git a/includes/kernel.php b/includes/kernel.php index f11a4ab5..a6d2c1c4 100644 --- a/includes/kernel.php +++ b/includes/kernel.php @@ -130,7 +130,7 @@ function loadConfig(bool $noPHP = false) : void if ($php) ini_set(strtolower($k), $val); - else + else if (!defined('CFG_'.strtoupper($k))) define('CFG_'.strtoupper($k), $val); } } @@ -162,6 +162,8 @@ set_error_handler(function($errNo, $errStr, $errFile, $errLine) $errName = 'E_RECOVERABLE_ERROR'; Util::addNote($uGroup, $errName.' - '.$errStr.' @ '.$errFile. ':'.$errLine); + if (CLI) + CLI::write($errName.' - '.$errStr.' @ '.$errFile. ':'.$errLine, $errNo & 0x40A ? CLI::LOG_WARN : CLI::LOG_ERROR); if (DB::isConnectable(DB_AOWOW)) DB::Aowow()->query('INSERT INTO ?_errors (`date`, `version`, `phpError`, `file`, `line`, `query`, `userGroups`, `message`) VALUES (UNIX_TIMESTAMP(), ?d, ?d, ?, ?d, ?, ?d, ?) ON DUPLICATE KEY UPDATE `date` = UNIX_TIMESTAMP()', diff --git a/includes/profiler.class.php b/includes/profiler.class.php index 84f8f723..76db217b 100644 --- a/includes/profiler.class.php +++ b/includes/profiler.class.php @@ -112,7 +112,6 @@ class Profiler if ($queuePID && $queuePID != $pid) { trigger_error('pSync - another queue with PID #'.$queuePID.' is already running', E_USER_ERROR); - CLI::write('Profiler::queueLock() - another queue with PID #'.$queuePID.' is already runnung', CLI::LOG_ERROR); return false; } diff --git a/includes/smartAI.class.php b/includes/smartAI.class.php index 1c3f8858..88dbc472 100644 --- a/includes/smartAI.class.php +++ b/includes/smartAI.class.php @@ -269,7 +269,7 @@ class SmartAI foreach ($smartScripts as $s) { if ($s['action_type'] == SAI_ACTION_SPAWN_SPAWNGROUP) - $moreInfo[SAI_ACTION_SPAWN_SPAWNGROUP][] = $s['action_param'.$i]; + $moreInfo[SAI_ACTION_SPAWN_SPAWNGROUP][] = $s['action_param1']; else if (in_array($s['action_type'], array_keys($lookup))) { foreach ($lookup[$s['action_type']] as $p) @@ -952,7 +952,7 @@ class SmartAI $footer = Util::formatTime($e['param'][3], true); break; case SAI_EVENT_EVENT_PHASE_CHANGE: // 66 - On event phase mask set - $e['param'][10] = Lang::concat(Util::mask2bits($a['param'][0]), false); + $e['param'][10] = Lang::concat(Util::mask2bits($e['param'][0]), false); break; default: $body = '[span class=q10]Unhandled Event[/span] #'.$e['type']; @@ -1532,7 +1532,7 @@ class SmartAI continue; $this->jsGlobals[TYPE_ITEM][] = $i; - $buff[] = '[item='.$_.']'; + $buff[] = '[item='.$i.']'; } } else if (!$a['param'][1]) diff --git a/includes/types/title.class.php b/includes/types/title.class.php index 00ac972a..6e6de03c 100644 --- a/includes/types/title.class.php +++ b/includes/types/title.class.php @@ -115,9 +115,6 @@ class TitleList extends BaseType if (!empty($sources[12])) $sources[12] = (new AchievementList(array(['id', $sources[12]])))->getSourceData(); - if (!empty($sources[13])) - $sources[13] = DB::Aowow()->SELECT('SELECT *, Id AS ARRAY_KEY FROM ?_sourcestrings WHERE Id IN (?a)', $sources[13]); - foreach ($this->sources as $Id => $src) { $tmp = []; @@ -148,7 +145,7 @@ class TitleList extends BaseType // other source (only one item possible, so no iteration needed) if (isset($src[13])) - $tmp[13] = [Util::localizedString($sources[13][$this->sources[$Id][13][0]], 'source')]; + $tmp[13] = [Lang::game('pvpSources', $this->sources[$Id][13][0])]; $this->templates[$Id]['source'] = $tmp; } diff --git a/localization/locale_dede.php b/localization/locale_dede.php index d24f3e69..62964242 100644 --- a/localization/locale_dede.php +++ b/localization/locale_dede.php @@ -298,6 +298,10 @@ $lang = array( "Gemahlen", "Abgebaut", "Sondiert", "Aus Taschendiebstahl", "Geborgen", "Gehäutet", "In-Game-Store" ), + 'pvpSources' => array( + null, "Arenasaison 1", "Arenasaison 2", "Arenasaison 3", "Arenasaison 4", + "Arenasaison 5", "Arenasaison 6", "Arenasaison 7", "Arenasaison 8", "2009 Arena-Turnier" + ), 'languages' => array( 1 => "Orcisch", 2 => "Darnassisch", 3 => "Taurisch", 6 => "Zwergisch", 7 => "Gemeinsprache", 8 => "Dämonisch", 9 => "Titanisch", 10 => "Thalassisch", 11 => "Drachisch", 12 => "Kalimagisch", 13 => "Gnomisch", 14 => "Trollisch", diff --git a/localization/locale_enus.php b/localization/locale_enus.php index 12d573e5..f574bacf 100644 --- a/localization/locale_enus.php +++ b/localization/locale_enus.php @@ -298,6 +298,10 @@ $lang = array( "Milled", "Mined", "Prospected", "Pickpocketed", "Salvaged", "Skinned", "In-Game Store" ), + 'pvpSources' => array( + null, "Arena Season 1", "Arena Season 2", "Arena Season 3", "Arena Season 4", + "Arena Season 5", "Arena Season 6", "Arena Season 7", "Arena Season 8", "2009 Arena Tournament" + ), 'languages' => array( // Languages.dbc 1 => "Orcish", 2 => "Darnassian", 3 => "Taurahe", 6 => "Dwarvish", 7 => "Common", 8 => "Demonic", 9 => "Titan", 10 => "Thalassian", 11 => "Draconic", 12 => "Kalimag", 13 => "Gnomish", 14 => "Troll", diff --git a/localization/locale_eses.php b/localization/locale_eses.php index 7d62e4bc..2c35d2b5 100644 --- a/localization/locale_eses.php +++ b/localization/locale_eses.php @@ -298,6 +298,10 @@ $lang = array( "Molido", "Minado", "Prospectar", "Robado", "Rescatado", "Despellejado", "Tienda del juego" ), + 'pvpSources' => array( + null, "Temporada de arena 1", "Temporada de arena 2", "Temporada de arena 3", "Temporada de arena 4", + "Temporada de arena 5", "Temporada de arena 6", "Temporada de arena 7", "Temporada de arena 8", "Torneo de arena 2009" + ), 'languages' => array( 1 => "Orco", 2 => "Darnassiano", 3 => "Taurahe", 6 => "Enánico", 7 => "Lengua común", 8 => "Demoníaco", 9 => "Titánico", 10 => "Thalassiano", 11 => "Dracónico", 12 => "Kalimag", 13 => "Gnomótico", 14 => "Trol", diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php index aa264aed..e4bb675f 100644 --- a/localization/locale_frfr.php +++ b/localization/locale_frfr.php @@ -298,6 +298,10 @@ $lang = array( "Moulu", "Miné", "Prospecté", "Subtilisé (pickpocket)", "Ferraillé", "Dépecé", "Boutique en jeu" ), + 'pvpSources' => array( + null, "Saison 1 des combats d'arène", "Saison 2 des combats d'arène", "Saison 3 des combats d'arène", "Saison 4 des combats d'arène", + "Saison 5 des combats d'arène", "Saison 6 des combats d'arène", "Saison 7 des combats d'arène", "Saison 8 des combats d'arène", "Tournoi 2009 des combats d'arène" + ), 'languages' => array( 1 => "Orc", 2 => "Darnassien", 3 => "Taurahe", 6 => "Nain", 7 => "Commun", 8 => "Démoniaque", 9 => "Titan", 10 => "Thalassien", 11 => "Draconique", 12 => "Kalimag", 13 => "Gnome", 14 => "Troll", diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php index 870c90a6..2245941a 100644 --- a/localization/locale_ruru.php +++ b/localization/locale_ruru.php @@ -298,6 +298,10 @@ $lang = array( "[Milled]", "Выкапывается", "Просеивается", "Можно украсть", "Разобрано", "Собирается при снятии шкуры", "Внутриигровой магазин" ), + 'pvpSources' => array( + null, "Сезон арены 1", "Сезон арены 2", "Сезон арены 3", "Сезон арены 4", + "Сезон арены 5", "Сезон арены 6", "Сезон арены 7", "Сезон арены 8", "Турнир арены 2009" + ), 'languages' => array( 1 => "орочий", 2 => "дарнасский", 3 => "таурахэ", 6 => "дворфийский", 7 => "всеобщий", 8 => "язык демонов", 9 => "язык титанов", 10 => "талассийский", 11 => "драконий", 12 => "калимаг", 13 => "гномский", 14 => "язык троллей", diff --git a/localization/locale_zhcn.php b/localization/locale_zhcn.php index e9a82f33..97b6e868 100644 --- a/localization/locale_zhcn.php +++ b/localization/locale_zhcn.php @@ -298,6 +298,10 @@ $lang = array( "取消附魔", "可钓", "已采集", "经研磨", "开采", "已加工", "失窃", "废弃", "已剥皮", "游戏商店" ), + 'pvpSources' => array( + null, "Arena Season 1", "Arena Season 2", "Arena Season 3", "Arena Season 4", + "Arena Season 5", "Arena Season 6", "Arena Season 7", "Arena Season 8", "2009 Arena Tournament" + ), 'languages' => array( 1 => "兽人语", 2 => "达纳苏斯语", 3 => "牛头人语", 6 => "矮人语", 7 => "通用语", 8 => "恶魔语", 9 => "泰坦语", 10 => "萨拉斯语", 11 => "龙语", 12 => "卡利姆多语", 13 => "侏儒语", 14 => "巨魔语", diff --git a/setup/db_structure.sql b/setup/db_structure.sql index a9c7557e..f77935cc 100644 --- a/setup/db_structure.sql +++ b/setup/db_structure.sql @@ -2310,6 +2310,23 @@ CREATE TABLE `aowow_screenshots` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPACT; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `aowow_setup_custom_data` +-- + +DROP TABLE IF EXISTS `aowow_setup_custom_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `aowow_setup_custom_data` ( + `command` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', + `entry` int NOT NULL DEFAULT '0' COMMENT 'typeId', + `field` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', + `value` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, + `comment` text COLLATE utf8mb4_general_ci, + KEY `aowow_setup_custom_data_command_IDX` (`command`) USING BTREE +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `aowow_shapeshiftforms` -- @@ -2455,26 +2472,6 @@ CREATE TABLE `aowow_source` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Table structure for table `aowow_sourcestrings` --- - -DROP TABLE IF EXISTS `aowow_sourcestrings`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `aowow_sourcestrings` ( - `id` int(16) NOT NULL, - `source_loc0` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, - `source_loc2` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, - `source_loc3` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, - `source_loc4` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, - `source_loc6` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, - `source_loc8` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL, - PRIMARY KEY (`id`), - KEY `Id` (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - -- -- Table structure for table `aowow_spawns` -- @@ -3138,7 +3135,7 @@ UNLOCK TABLES; LOCK TABLES `aowow_dbversion` WRITE; /*!40000 ALTER TABLE `aowow_dbversion` DISABLE KEYS */; -INSERT INTO `aowow_dbversion` VALUES (1613670957,0,NULL,NULL); +INSERT INTO `aowow_dbversion` VALUES (1645476215,0,NULL,NULL); /*!40000 ALTER TABLE `aowow_dbversion` ENABLE KEYS */; UNLOCK TABLES; @@ -3182,16 +3179,6 @@ INSERT INTO `aowow_loot_link` VALUES (17537,185168,1,0),(18434,185169,1,0),(1753 /*!40000 ALTER TABLE `aowow_loot_link` ENABLE KEYS */; UNLOCK TABLES; --- --- Dumping data for table `aowow_sourcestrings` --- - -LOCK TABLES `aowow_sourcestrings` WRITE; -/*!40000 ALTER TABLE `aowow_sourcestrings` DISABLE KEYS */; -INSERT INTO `aowow_sourcestrings` VALUES (1,'Arena Season 1','Saison 1 des combats d\'arène','Arenasaison 1','Arena Season 1','Temporada de arena 1','Сезон арены 1'),(2,'Arena Season 2','Saison 2 des combats d\'arène','Arenasaison 2','Arena Season 2','Temporada de arena 2','Сезон арены 2'),(3,'Arena Season 3','Saison 3 des combats d\'arène','Arenasaison 3','Arena Season 3','Temporada de arena 3','Сезон арены 3'),(4,'Arena Season 4','Saison 4 des combats d\'arène','Arenasaison 4','Arena Season 4','Temporada de arena 4','Сезон арены 4'),(5,'Arena Season 5','Saison 5 des combats d\'arène','Arenasaison 5','Arena Season 5','Temporada de arena 5','Сезон арены 5'),(6,'Arena Season 6','Saison 6 des combats d\'arène','Arenasaison 6','Arena Season 6','Temporada de arena 6','Сезон арены 6'),(7,'Arena Season 7','Saison 7 des combats d\'arène','Arenasaison 7','Arena Season 7','Temporada de arena 7','Сезон арены 7'),(8,'Arena Season 8','Saison 8 des combats d\'arène','Arenasaison 8','Arena Season 8','Temporada de arena 8','Сезон арены 8'),(9,'2009 Arena Tournament','Tournoi 2009 des combats d\'arène','2009 Arena-Turnier','2009 Arena Tournament','Torneo de arena 2009','Турнир арены 2009'); -/*!40000 ALTER TABLE `aowow_sourcestrings` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Dumping data for table `aowow_profiler_excludes` -- @@ -3201,6 +3188,16 @@ LOCK TABLES `aowow_profiler_excludes` WRITE; INSERT INTO `aowow_profiler_excludes` VALUES (6,459,1,'Gray Wolf'),(6,468,1,'White Stallion'),(6,471,1,'Palamino'),(6,472,1,'Pinto'),(6,578,1,'Black Wolf'),(6,579,1,'Red Wolf'),(6,581,1,'Winter Wolf'),(6,3363,1,'Nether Drake'),(6,6896,1,'Black Ram'),(6,6897,1,'Blue Ram'),(6,8980,1,'Skeletal Horse'),(6,10681,1,'Summon Cockatoo'),(6,10686,1,'Summon Prairie Chicken'),(6,10687,1,'Summon White Plymouth Rock'),(6,10699,1,'Summon Bronze Whelpling'),(6,10700,1,'Summon Faeling'),(6,10701,1,'Summon Dart Frog'),(6,10702,1,'Summon Island Frog'),(6,10705,1,'Summon Eagle Owl'),(6,10708,1,'Summon Snowy Owl'),(6,10710,1,'Summon Cottontail Rabbit'),(6,10712,1,'Summon Spotted Rabbit'),(6,10715,1,'Summon Blue Racer'),(6,10718,1,'Green Water Snake'),(6,10719,1,'Ribbon Snake'),(6,10720,1,'Scarlet Snake'),(6,10721,1,'Summon Elven Wisp'),(6,10795,1,'Ivory Raptor'),(6,10798,1,'Obsidian Raptor'),(6,15648,1,'Corrupted Kitten'),(6,15779,1,'White Mechanostrider Mod B'),(6,15780,1,'Green Mechanostrider'),(6,15781,1,'Steel Mechanostrider'),(6,16055,1,'Black Nightsaber'),(6,16056,1,'Ancient Frostsaber'),(6,16058,1,'Primal Leopard'),(6,16059,1,'Tawny Sabercat'),(6,16060,1,'Golden Sabercat'),(6,16080,1,'Red Wolf'),(6,16081,1,'Winter Wolf'),(6,16082,1,'Palomino'),(6,16083,1,'White Stallion'),(6,16084,1,'Mottled Red Raptor'),(6,17450,1,'Ivory Raptor'),(6,17455,1,'Purple Mechanostrider'),(6,17456,1,'Red and Blue Mechanostrider'),(6,17458,1,'Fluorescent Green Mechanostrider'),(6,17459,1,'Icy Blue Mechanostrider Mod A'),(6,17460,1,'Frost Ram'),(6,17461,1,'Black Ram'),(6,17468,1,'Pet Fish'),(6,17469,1,'Pet Stone'),(6,18363,1,'Riding Kodo'),(6,18991,1,'Green Kodo'),(6,18992,1,'Teal Kodo'),(6,19363,1,'Summon Mechanical Yeti'),(6,23220,1,'Swift Dawnsaber'),(6,23428,1,'Albino Snapjaw'),(6,23429,1,'Loggerhead Snapjaw'),(6,23430,1,'Olive Snapjaw'),(6,23431,1,'Leatherback Snapjaw'),(6,23432,1,'Hawksbill Snapjaw'),(6,23530,16,'Tiny Red Dragon - wrong region'),(6,23531,16,'Tiny Green Dragon - wrong region'),(6,24985,1,'Summon Baby Murloc (Blue)'),(6,24986,1,'Summon Baby Murloc (Green)'),(6,24987,1,'Summon Baby Murloc (Orange)'),(6,24988,4,'Lurky - CE'),(6,24989,1,'Summon Baby Murloc (Pink)'),(6,24990,1,'Summon Baby Murloc (Purple)'),(6,25849,1,'Baby Shark'),(6,26067,1,'Summon Mechanical Greench'),(6,26391,1,'Tentacle Call'),(6,28828,1,'Nether Drake'),(6,29059,1,'Naxxramas Deathcharger'),(6,30152,1,'White Tiger Cub'),(6,30156,2,'Hippogryph Hatchling - TCG loot'),(6,30174,2,'Riding Turtle - TCG loot'),(6,32298,4,'Netherwhelp - CE'),(6,32345,1,'Peep the Phoenix Mount'),(6,33050,128,'Magical Crawdad'),(6,33057,1,'Summon Mighty Mr. Pinchy'),(6,33630,1,'Blue Mechanostrider'),(6,34407,1,'Great Elite Elekk'),(6,35157,1,'Summon Spotted Rabbit'),(6,37015,1,'Swift Nether Drake'),(6,40319,16,'Lucky - wrong region'),(6,40405,16,'Lucky - wrong region'),(6,43688,1,'Amani War Bear'),(6,43810,1,'Frost Wyrm'),(6,44317,1,'Merciless Nether Drake'),(6,44744,1,'Merciless Nether Drake'),(6,45125,2,'Rocket Chicken - TCG loot'),(6,45174,16,'Golden Pig - wrong region'),(6,45175,16,'Silver Pig - wrong region'),(6,45890,1,'Scorchling'),(6,47037,1,'Swift War Elekk'),(6,48406,16,'Essence of Competition - wrong region'),(6,48408,16,'Essence of Competition - wrong region'),(6,48954,8,'Swift Zhevra - promotion'),(6,49322,8,'Swift Zhevra - promotion'),(6,49378,1,'Brewfest Riding Kodo'),(6,50869,1,'Brewfest Kodo'),(6,50870,1,'Brewfest Ram'),(6,51851,1,'Vampiric Batling'),(6,51960,1,'Frost Wyrm Mount'),(6,52615,4,'Frosty - CE'),(6,53082,8,'Mini Tyrael - promotion'),(6,53768,1,'Haunted'),(6,54187,1,'Clockwork Rocket Bot'),(6,55068,1,'Mr. Chilly'),(6,58983,8,'Big Blizzard Bear - promotion'),(6,59572,1,'Black Polar Bear'),(6,59573,1,'Brown Polar Bear'),(6,59802,1,'Grand Ice Mammoth'),(6,59804,1,'Grand Ice Mammoth'),(6,59976,1,'Black Proto-Drake'),(6,60021,1,'Plagued Proto-Drake'),(6,60136,1,'Grand Caravan Mammoth'),(6,60140,1,'Grand Caravan Mammoth'),(6,61442,1,'Swift Mooncloth Carpet'),(6,61444,1,'Swift Shadoweave Carpet'),(6,61446,1,'Swift Spellfire Carpete'),(6,61855,1,'Baby Blizzard Bear'),(6,62048,1,'Black Dragonhawk Mount'),(6,62514,1,'Alarming Clockbot'),(6,63318,8,'Murkimus the Gladiator'),(6,64351,1,'XS-001 Constructor Bot'),(6,64656,1,'Blue Skeletal Warhorse'),(6,64731,128,'Sea Turtle - fishing only'),(6,65682,1,'Warbot'),(6,65917,2,'Magic Rooster - TCG loot'),(6,66030,8,'Grunty - promotion'),(6,66520,1,'Jade Tiger'),(6,66907,1,'Argent Warhorse'),(6,67527,16,'Onyx Panther - wrong region'),(6,68767,2,'Tuskarr Kite - TCG loot'),(6,68810,2,'Spectral Tiger Cub - TCG loot'),(6,69002,1,'Onyxian Whelpling'),(6,69452,8,'Core Hound Pup - promotion'),(6,69535,4,'Gryphon Hatchling - CE'),(6,69536,4,'Wind Rider Cub - CE'),(6,69539,1,'Zipao Tiger'),(6,69541,4,'Pandaren Monk - CE'),(6,69677,4,'Lil\' K.T. - CE'),(6,74856,2,'Blazing Hippogryph - TCG loot'),(6,74918,2,'Wooly White Rhino - TCG loot'),(6,75613,1,'Celestial Dragon'),(6,75614,1,'Celestial Steed - unavailable'),(6,75906,4,'Lil\' XT - CE'),(6,75936,1,'Murkimus the Gladiator'),(6,75973,8,'X-53 Touring Rocket - promotion'),(6,78381,8,'Mini Thor - promotion'),(8,87,1024,'Bloodsail Buccaneers - max rank is honored'),(8,92,1024,'Gelkis Clan Centaur - max rank is friendly'),(8,93,1024,'Magram Clan Centaur - max rank is friendly'),(6,46197,2,'X-51 Nether-Rocket - TCG loot'),(6,46199,2,'X-51 Nether-Rocket X-TREME - TCG loot'),(6,26656,1,'Black Qiraji Battle Tank - unavailable'),(6,43899,1,'Brewfest Ram - unavailable'),(6,49193,1,'Vengeful Nether Drake - unavailable'),(6,58615,1,'Brutal Nether Drake - unavailable'),(6,64927,1,'Deadly Gladiator\'s Frost Wyrm - unavailable'),(6,65439,1,'Furious Gladiator\'s Frost Wyrm - unavailable'),(6,67336,1,'Relentless Gladiator\'s Frost Wyrm - unavailable'),(6,71810,1,'Wrathful Gladiator\'s Frost Wyrm - unavailable'),(11,122,1,'RealmFirst Kel\'T Title - unavailable'),(11,159,1,'RealmFirst Algalon Title - unavailable'),(11,120,1,'RealmFirst Maly Title - unavailable'),(11,170,1,'RealmFirst TotGC Title - unavailable'),(11,139,1,'RealmFirst Sarth Title - unavailable'),(11,158,1,'RealmFirst Yogg Title - unavailable'),(6,28505,8,'Poley - promotion'),(6,28487,1,'Terky - unavailable'),(8,70,1024,'Syndicate - max rank is neutral'),(6,28242,1,'Icebane Breastplate'),(6,28243,1,'Icebane Gauntlets'),(6,28244,1,'Icebane Bracers'),(6,16986,1,'Blood Talon'),(6,16987,1,'Darkspear'),(6,16965,1,'Bleakwood Hew'),(6,8366,1,'Ironforge Chain'),(6,8368,1,'Ironforge Gauntlets'),(6,9942,1,'Mithril Scale Gloves'),(6,2671,1,'Rough Bronze Bracers'),(6,16980,1,'Rune Edge'),(6,16960,1,'Thorium Greatsword'),(6,16967,1,'Inlaid Thorium Hammer'),(6,30342,1,'Red Smoke Flare'),(6,30343,1,'Blue Smoke Flare'),(6,28205,1,'Glacial Gloves'),(6,28207,1,'Glacial Vest'),(6,28208,1,'Glacial Cloak'),(6,28209,1,'Glacial Wrists'),(6,28222,1,'Icy Scale Breastplate'),(6,28223,1,'Icy Scale Gauntlets'),(6,28224,1,'Icy Scale Bracers'),(6,28219,1,'Polar Tunic'),(6,28220,1,'Polar Gloves'),(6,28221,1,'Polar Bracers'),(6,28021,1,'Arcane Dust'),(6,44612,1,'Enchant Gloves - Greater Blasting'),(6,62257,1,'Enchant Weapon - Titanguard'),(6,31461,1,'Heavy Netherweave Net'),(6,56048,1,'Duskweave Boots'),(6,7636,1,'Green Woolen Robe'),(6,8778,1,'Boots of Darkness'),(6,12062,1,'Stormcloth Pants'),(6,12063,1,'Stormcloth Gloves'),(6,12068,1,'Stormcloth Vest'),(6,12083,1,'Stormcloth Headband'),(6,12087,1,'Stormcloth Shoulders'),(6,12090,1,'Stormcloth Boots'); /*!40000 ALTER TABLE `aowow_profiler_excludes` ENABLE KEYS */; UNLOCK TABLES; + +-- +-- Dumping data for table `aowow_setup_custom_data` +-- + +LOCK TABLES `aowow_setup_custom_data` WRITE; +/*!40000 ALTER TABLE `aowow_setup_custom_data` DISABLE KEYS */; +INSERT INTO `aowow_setup_custom_data` VALUES ('zones',2257,'cuFlags','0','Deeprun Tram - make visible'),('zones',2257,'category','0','Deeprun Tram - Category: Eastern Kingdoms'),('zones',2257,'type','1','Deeprun Tram - Type: Transit'),('zones',3698,'expansion','1','Nagrand Arena - Addon: BC'),('zones',3702,'expansion','1','Blades Edge Arena - Addon: BC'),('zones',3968,'expansion','1','Ruins of Lordaeron Arena - Addon: BC'),('zones',4378,'expansion','1','Dalaran Arena - Addon: WotLK'),('zones',4406,'expansion','1','Ring of Valor Arena - Addon: WotLK'),('zones',2597,'maxPlayer','40','Alterac Valey - Players: 40 [battlemasterlist.dbc: 5]'),('zones',4710,'maxPlayer','40','Isle of Conquest - Players: 40 [battlemasterlist.dbc: 5]'),('zones',3849,'parentAreaId','3523','The Mechanar - Parent: Netherstorm [not set in map.dbc]'),('zones',3849,'parentX','87.3','The Mechanar - Entrance xPos'),('zones',3849,'parentY','51.1','The Mechanar - Entrance yPos'),('zones',3847,'parentAreaId','3523','The Botanica - Parent: Netherstorm [not set in map.dbc]'),('zones',3847,'parentX','71.7','The Botanica - Entrance xPos'),('zones',3847,'parentY','55.1','The Botanica - Entrance yPos'),('zones',3848,'parentAreaId','3523','The Arcatraz - Parent: Netherstorm [not set in map.dbc]'),('zones',3848,'parentX','74.3','The Arcatraz - Entrance xPos'),('zones',3848,'parentY','57.8','The Arcatraz - Entrance yPos'),('zones',3845,'parentAreaId','3523','Tempest Keep - Parent: Netherstorm [not set in map.dbc]'),('zones',3845,'parentX','73.5','Tempest Keep - Entrance xPos'),('zones',3845,'parentY','63.7','Tempest Keep - Entrance yPos'),('zones',3456,'parentAreaId','65','Naxxramas - Parent: Netherstorm [not set in map.dbc]'),('zones',3456,'parentX','87.3','Naxxramas - Entrance xPos'),('zones',3456,'parentY','87.3','Naxxramas - Entrance yPos'),('zones',4893,'parentAreaId','4812','The Frost Queen\'s Lair - Parent: Icecrown Citadel'),('zones',4894,'parentAreaId','4812','Putricide\'s Laboratory [..] - Parent: Icecrown Citadel'),('zones',4895,'parentAreaId','4812','The Crimson Hall - Parent: Icecrown Citadel'),('zones',4896,'parentAreaId','4812','The Frozen Throne - Parent: Icecrown Citadel'),('zones',4897,'parentAreaId','4812','The Sanctum of Blood - Parent: Icecrown Citadel'),('zones',4893,'cuFlags','1073741824','The Frost Queen\'s Lair - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',4894,'cuFlags','1073741824','Putricide\'s Laboratory [..] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('achievement',1956,'itemExtra','44738','Higher Learning - item rewarded through gossip'),('zones',4895,'cuFlags','1073741824','The Crimson Hall - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('titles',137,'gender','2','Matron - female'),('zones',4896,'cuFlags','1073741824','The Frozen Throne - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',4897,'cuFlags','1073741824','The Sanctum of Blood - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',4076,'cuFlags','1073741824','Reuse Me 7 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',207,'cuFlags','1073741824','The Great Sea - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',208,'cuFlags','1073741824','Unused Ironcladcove - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',2817,'levelMin','74','Crystalsong Forest - missing lfgDungeons entry'),('zones',1477,'cuFlags','1073741824','The Temple of Atal\'Hakkar - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',41,'levelMin','50','Deadwind Pass - missing lfgDungeons entry'),('zones',41,'levelMax','60','Deadwind Pass - missing lfgDungeons entry'),('zones',2257,'levelMin','1','Deeprun Tram - missing lfgDungeons entry'),('zones',2257,'levelMax','80','Deeprun Tram - missing lfgDungeons entry'),('zones',4298,'category','0','Plaguelands: The Scarlet Enclave - Parent: Eastern Kingdoms'),('zones',4298,'levelMin','55','Plaguelands: The Scarlet Enclave - missing lfgDungeons entry'),('zones',4298,'levelMax','58','Plaguelands: The Scarlet Enclave - missing lfgDungeons entry'),('zones',493,'levelMin','15','Moonglade - missing lfgDungeons entry'),('zones',493,'levelMax','60','Moonglade - missing lfgDungeons entry'),('zones',2817,'levelMax','76','Crystalsong Forest - missing lfgDungeons entry'),('zones',4742,'levelMin','77','Hrothgar\'s Landing - missing lfgDungeons entry'),('zones',4742,'levelMax','80','Hrothgar\'s Landing - missing lfgDungeons entry'),('classes',8,'roles','4','Mage - rngDPS'),('classes',2,'roles','11','Paladin - mleDPS + Tank + Heal'),('classes',3,'roles','4','Hunter - rngDPS'),('classes',4,'roles','2','Rogue - mleDPS'),('classes',5,'roles','5','Priest - rngDPS + Heal'),('classes',6,'roles','10','Death Knight - mleDPS + Tank'),('classes',7,'roles','7','Shaman - mleDPS + rngDPS + Heal'),('classes',8,'roles','4','Mage - rngDPS'),('classes',8,'roles','4','Mage - rngDPS'),('classes',8,'roles','4','Mage - rngDPS'),('currencies',103,'cap','10000','Arena Points - cap'),('currencies',104,'cap','75000','Honor Points - cap'),('currencies',1,'cuFlags','1073741824','Currency Token Test Token 1 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('currencies',2,'cuFlags','1073741824','Currency Token Test Token 2 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('currencies',4,'cuFlags','1073741824','Currency Token Test Token 3 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('currencies',22,'cuFlags','1073741824','Birmingham Test Item 3 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('currencies',141,'cuFlags','1073741824','zzzOLDDaily Quest Faction Token - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('currencies',1,'category','3','Currency Token Test Token 1 - category: unused'),('currencies',2,'category','3','Currency Token Test Token 2 - category: unused'),('currencies',4,'category','3','Currency Token Test Token 3 - category: unused'),('currencies',22,'category','3','Birmingham Test Item 3 - category: unused'),('currencies',141,'category','3','zzzOLDDaily Quest Faction Token - category: unused'),('factions',68,'qmNpcIds','33555','Undercity - set Quartermaster'),('factions',47,'qmNpcIds','33310','Ironforge - set Quartermaster'),('factions',69,'qmNpcIds','33653','Darnassus - set Quartermaster'),('factions',72,'qmNpcIds','33307','Stormwind - set Quartermaster'),('factions',76,'qmNpcIds','33553','Orgrimmar - set Quartermaster'),('factions',81,'qmNpcIds','33556','Thunder Bluff - set Quartermaster'),('factions',922,'qmNpcIds','16528','Tranquillien - set Quartermaster'),('factions',930,'qmNpcIds','33657','Exodar - set Quartermaster'),('factions',932,'qmNpcIds','19321','The Aldor - set Quartermaster'),('factions',933,'qmNpcIds','20242 23007','The Consortium - set Quartermaster'),('factions',935,'qmNpcIds','21432','The Sha\'tar - set Quartermaster'),('factions',941,'qmNpcIds','20241','The Mag\'har - set Quartermaster'),('factions',942,'qmNpcIds','17904','Cenarion Expedition - set Quartermaster'),('factions',946,'qmNpcIds','17657','Honor Hold - set Quartermaster'),('factions',947,'qmNpcIds','17585','Thrallmar - set Quartermaster'),('factions',970,'qmNpcIds','18382','Sporeggar - set Quartermaster'),('factions',978,'qmNpcIds','20240','Kurenai - set Quartermaster'),('factions',989,'qmNpcIds','21643','Keepers of Time - set Quartermaster'),('factions',1011,'qmNpcIds','21655','Lower City - set Quartermaster'),('factions',1012,'qmNpcIds','23159','Ashtongue Deathsworn - set Quartermaster'),('factions',1037,'qmNpcIds','32773 32564','Alliance Vanguard - set Quartermaster'),('factions',1038,'qmNpcIds','23428','Ogri\'la - set Quartermaster'),('factions',1052,'qmNpcIds','32774 32565','Horde Expedition - set Quartermaster'),('factions',1073,'qmNpcIds','31916 32763','The Kalu\'ak - set Quartermaster'),('factions',1090,'qmNpcIds','32287','Kirin Tor - set Quartermaster'),('factions',1091,'qmNpcIds','32533','The Wyrmrest Accord - set Quartermaster'),('factions',1094,'qmNpcIds','34881','The Silver Covenant - set Quartermaster'),('factions',1105,'qmNpcIds','31910','The Oracles - set Quartermaster'),('factions',1106,'qmNpcIds','30431','Argent Crusade - set Quartermaster'),('factions',1119,'qmNpcIds','32540','The Sons of Hodir - set Quartermaster'),('factions',1124,'qmNpcIds','34772','The Sunreavers - set Quartermaster'),('factions',1156,'qmNpcIds','37687','The Ashen Verdict - set Quartermaster'),('factions',1082,'cuFlags','1073741824','REUSE - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('factions',952,'cuFlags','1073741824','Test Faction 3 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('titles',138,'gender','1','Patron - male'),('sounds',15407,'cat','10','UR_Algalon_Summon03 - is not an item pickup'),('shapeshiftforms',1,'displayIdH','8571','Cat Form - spellshapeshiftform.dbc missing displayId'),('shapeshiftforms',15,'displayIdH','8571','Creature - Cat - spellshapeshiftform.dbc missing displayId'),('shapeshiftforms',5,'displayIdH','2289','Bear Form - spellshapeshiftform.dbc missing displayId'),('shapeshiftforms',8,'displayIdH','2289','Dire Bear Form - spellshapeshiftform.dbc missing displayId'),('shapeshiftforms',14,'displayIdH','2289','Creature - Bear - spellshapeshiftform.dbc missing displayId'),('shapeshiftforms',27,'displayIdH','21244','Flight Form, Epic - spellshapeshiftform.dbc missing displayId'),('shapeshiftforms',29,'displayIdH','20872','Flight Form - spellshapeshiftform.dbc missing displayId'),('races',1,'leader','29611','Human - King Varian Wrynn'),('races',1,'factionId','72','Human - Stormwind'),('races',1,'startAreaId','12','Human - Elwynn Forest'),('races',2,'leader','4949','Orc - Thrall'),('races',2,'factionId','76','Orc - Orgrimmar'),('races',2,'startAreaId','14','Orc - Durotar'),('races',3,'leader','2784','Dwarf - King Magni Bronzebeard'),('races',3,'factionId','47','Dwarf - Ironforge'),('races',3,'startAreaId','1','Dwarf - Dun Morogh'),('races',4,'leader','7999','Night Elf - Tyrande Whisperwind'),('races',4,'factionId','69','Night Elf - Darnassus'),('races',4,'startAreaId','141','Night Elf - Teldrassil'),('races',5,'leader','10181','Undead - Lady Sylvanas Windrunner'),('races',5,'factionId','68','Undead - Undercity'),('races',5,'startAreaId','85','Undead - Tirisfal Glades'),('races',6,'leader','3057','Tauren - Cairne Bloodhoof'),('races',6,'factionId','81','Tauren - Thunder Bluff'),('races',6,'startAreaId','215','Tauren - Mulgore'),('races',7,'leader','7937','Gnome - High Tinker Mekkatorque'),('races',7,'factionId','54','Gnome - Gnomeregan Exiles'),('races',7,'startAreaId','1','Gnome - Dun Morogh'),('races',8,'leader','10540','Troll - Vol\'jin'),('races',8,'factionId','530','Troll - Darkspear Trolls'),('races',8,'startAreaId','14','Troll - Durotar'),('races',10,'leader','16802','Blood Elf - Lor\'themar Theron'),('races',10,'factionId','911','Blood Elf - Silvermoon City'),('races',10,'startAreaId','3430','Blood Elf - Eversong Woods'),('races',11,'leader','17468','Draenei - Prophet Velen'),('races',11,'factionId','930','Draenei - Exodar'),('races',11,'startAreaId','3524','Draenei - Azuremyst Isle'),('holidays',62,'iconString','inv_misc_missilelarge_red','Fireworks Spectacular'),('holidays',141,'iconString','calendar_winterveilstart','Feast of Winter Veil'),('holidays',181,'iconString','calendar_noblegardenstart','Noblegarden'),('holidays',201,'iconString','calendar_childrensweekstart','Children\'s Week'),('holidays',283,'iconString','inv_jewelry_necklace_21','Call to Arms: Alterac Valley'),('holidays',284,'iconString','inv_misc_rune_07','Call to Arms: Warsong Gulch'),('holidays',285,'iconString','inv_jewelry_amulet_07','Call to Arms: Arathi Basin'),('holidays',301,'iconString','calendar_fishingextravaganzastart','Stranglethorn Fishing Extravaganza'),('holidays',321,'iconString','calendar_harvestfestivalstart','Harvest Festival'),('holidays',324,'iconString','calendar_hallowsendstart','Hallow\'s End'),('holidays',327,'iconString','calendar_lunarfestivalstart','Lunar Festival'),('holidays',335,'iconString','calendar_loveintheairstart','Love is in the Air'),('holidays',341,'iconString','calendar_midsummerstart','Midsummer Fire Festival'),('holidays',353,'iconString','spell_nature_eyeofthestorm','Call to Arms: Eye of the Storm'),('holidays',372,'iconString','calendar_brewfeststart','Brewfest'),('holidays',374,'iconString','calendar_darkmoonfaireelwynnstart','Darkmoon Faire'),('holidays',375,'iconString','calendar_darkmoonfairemulgorestart','Darkmoon Faire'),('holidays',376,'iconString','calendar_darkmoonfaireterokkarstart','Darkmoon Faire'),('holidays',398,'iconString','calendar_piratesdaystart','Pirates\' Day'),('holidays',400,'iconString','achievement_bg_winsoa','Call to Arms: Strand of the Ancients'),('holidays',404,'iconString','calendar_harvestfestivalstart','Pilgrim\'s Bounty'),('holidays',406,'iconString','achievement_boss_lichking','Wrath of the Lich King Launch'),('holidays',409,'iconString','calendar_dayofthedeadstart','Day of the Dead'),('holidays',420,'iconString','achievement_bg_winwsg','Call to Arms: Isle of Conquest'),('holidays',423,'iconString','calendar_loveintheairstart','Love is in the Air'),('holidays',424,'iconString','calendar_fishingextravaganzastart','Kalu\'ak Fishing Derby'),('holidays',141,'achievementCatOrId','156','Feast of Winter Veil - Category: Feast of Winter Veil'),('holidays',181,'achievementCatOrId','159','Noblegarden - Category: Noblegarden'),('holidays',201,'achievementCatOrId','163','Children\'s Week - Category: Children\'s Week'),('holidays',324,'achievementCatOrId','158','Hallow\'s End - Category: Hallow\'s End'),('holidays',327,'achievementCatOrId','160','Lunar Festival - Category: Lunar Festival'),('holidays',341,'achievementCatOrId','161','Midsummer Fire Festival - Category: Midsummer Fire Festival'),('holidays',372,'achievementCatOrId','162','Brewfest - Category: Brewfest'),('holidays',398,'achievementCatOrId','-3457','Pirates\' Day - Achievement: The Captain\'s Booty'),('holidays',404,'achievementCatOrId','14981','Pilgrim\'s Bounty - Category: Pilgrim\'s Bounty'),('holidays',409,'achievementCatOrId','-3456','Day of the Dead - Achievement: Dead Man\'s Party'),('holidays',423,'achievementCatOrId','187','Love is in the Air - Category: Love is in the Air'),('holidays',324,'bossCreature','23682','Hallow\'s End - Headless Horseman'),('holidays',327,'bossCreature','15467','Lunar Festival - Omen'),('holidays',341,'bossCreature','25740','Midsummer Fire Festival - Ahune'),('holidays',372,'bossCreature','23872','Brewfest - Coren Direbrew'),('holidays',423,'bossCreature','36296','Love is in the Air - Apothecary Hummel'),('skillline',197,'professionMask','512','Tailoring'),('skillline',186,'professionMask','256','Mining'),('skillline',165,'specializations','10656 10658 10660','Leatherworking'),('skillline',165,'recipeSubClass','1','Leatherworking'),('skillline',165,'professionMask','128','Leatherworking'),('skillline',755,'recipeSubClass','10','Jewelcrafting'),('skillline',755,'professionMask','64','Jewelcrafting'),('skillline',129,'recipeSubClass','7','First Aid'),('skillline',129,'professionMask','32','First Aid'),('skillline',202,'specializations','20219 20222','Engineering'),('skillline',202,'recipeSubClass','3','Engineering'),('skillline',202,'professionMask','16','Engineering'),('skillline',333,'recipeSubClass','8','Enchanting'),('skillline',333,'professionMask','8','Enchanting'),('skillline',185,'recipeSubClass','5','Cooking'),('skillline',185,'professionMask','4','Cooking'),('skillline',164,'specializations','9788 9787 17041 17040 17039','Blacksmithing'),('skillline',164,'recipeSubClass','4','Blacksmithing'),('skillline',164,'professionMask','2','Blacksmithing'),('skillline',171,'specializations','28677 28675 28672','Alchemy'),('skillline',171,'recipeSubClass','6','Alchemy'),('skillline',171,'professionMask','1','Alchemy'),('skillline',393,'professionMask','0','Skinning'),('skillline',197,'recipeSubClass','2','Tailoring'),('skillline',197,'specializations','26798 26801 26797','Tailoring'),('skillline',356,'professionMask','1024','Fishing'),('skillline',356,'recipeSubClass','9','Fishing'),('skillline',182,'professionMask','2048','Herbalism'),('skillline',773,'professionMask','4096','Inscription'),('skillline',773,'recipeSubClass','11','Inscription'),('skillline',785,'name_loc0','Pet - Wasp','Pet - Wasp'),('skillline',781,'name_loc2','Familier - diablosaure exotique','Pet - Exotic Devlisaur'),('skillline',758,'name_loc6','Mascota: Evento - Control remoto','Pet - Event - Remote Control'),('skillline',758,'name_loc3','Tier - Ereignis Ferngesteuert','Pet - Event - Remote Control'),('skillline',758,'categoryId','7','Pet - Event - Remote Control - bring in line with other pets'),('skillline',788,'categoryId','7','Pet - Exotic Spirit Beast - bring in line with other pets'),('item',33147,'class','9','Formula: Enchant Cloak - Subtlety - Class: Recipes'),('item',33147,'subClass','8','Formula: Enchant Cloak - Subtlety - Subclass: Enchanting'); +/*!40000 ALTER TABLE `aowow_setup_custom_data` ENABLE KEYS */; +UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; diff --git a/setup/setup.php b/setup/setup.php index 23ab2437..7e58dc1d 100644 --- a/setup/setup.php +++ b/setup/setup.php @@ -59,13 +59,13 @@ switch ($cmd) // we accept only on $dbc = new DBC(trim($n), ['temporary' => false]); if ($dbc->error) { - CLI::write('CLISetup::loadDBC() - required DBC '.$name.'.dbc not found!', CLI::LOG_ERROR); + CLI::write('CLISetup::loadDBC() - required DBC '.$n.'.dbc not found!', CLI::LOG_ERROR); return false; } if (!$dbc->readFile()) { - CLI::write('CLISetup::loadDBC() - DBC '.$name.'.dbc could not be written to DB!', CLI::LOG_ERROR); + CLI::write('CLISetup::loadDBC() - DBC '.$n.'.dbc could not be written to DB!', CLI::LOG_ERROR); return false; } } diff --git a/setup/tools/dbc.class.php b/setup/tools/dbc.class.php index 70e08a77..740e212a 100644 --- a/setup/tools/dbc.class.php +++ b/setup/tools/dbc.class.php @@ -108,6 +108,7 @@ class DBC 'scalingstatvalues' => 'xniiiiiiiiiiiiiiiiiiiiii', 'skillline' => 'nixsxsssxsxsxxxxxxxxsxsssxsxsxxxxxxxxixxxxxxxxxxxxxxxxxx', 'skilllineability' => 'niiiixxixiiixx', + 'skilllinecategory' => 'nsxsssxsxsxxxxxxxxi', 'skillraceclassinfo' => 'niiiiixx', 'soundambience' => 'nii', 'soundemitters' => 'nffxxxxiix', @@ -212,6 +213,7 @@ class DBC 'scalingstatvalues' => 'id,shoulderMultiplier,trinketMultiplier,weaponMultiplier,rangedMultiplier,clothShoulderArmor,leatherShoulderArmor,mailShoulderArmor,plateShoulderArmor,weaponDPS1H,weaponDPS2H,casterDPS1H,casterDPS2H,rangedDPS,wandDPS,spellPower,primBudged,tertBudged,clothCloakArmor,clothChestArmor,leatherChestArmor,mailChestArmor,plateChestArmor', 'skillline' => 'id,categoryId,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,description_loc0,description_loc2,description_loc3,description_loc4,description_loc6,description_loc8,iconId', 'skilllineability' => 'id,skillLineId,spellId,reqRaceMask,reqClassMask,reqSkillLevel,acquireMethod,skillLevelGrey,skillLevelYellow', + 'skilllinecategory' => 'id,name_loc0,name_loc2,name_loc3,name_loc4,name_loc6,name_loc8,index', 'skillraceclassinfo' => 'id,skillLine,raceMask,classMask,flags,reqLevel', 'soundambience' => 'id,soundIdDay,soundIdNight', 'soundemitters' => 'id,posY,posX,soundId,mapId', diff --git a/setup/tools/setupScript.class.php b/setup/tools/setupScript.class.php index c22fc292..80b22870 100644 --- a/setup/tools/setupScript.class.php +++ b/setup/tools/setupScript.class.php @@ -32,14 +32,27 @@ trait TrDBCcopy trait TrCustomData { // apply post generator custom data - public function applyCustomData() : void + public function applyCustomData() : bool { - if (!$this->customData) - return; + $ok = true; + $this->customData = $this->customData ?? []; + if ($cd = DB::Aowow()->selectCol('SELECT `entry` AS ARRAY_KEY, `field` AS ARRAY_KEY2, `value` FROM ?_setup_custom_data WHERE `command` = ?', $this->command)) + $this->customData += $cd; foreach ($this->customData as $id => $data) - if ($data) + { + try + { DB::Aowow()->query('UPDATE ?_'.$this->command.' SET ?a WHERE id = ?d', $data, $id); + } + catch (Exception $e) + { + trigger_error('Custom Data for entry #'.$id.': '.$e->getMessage(), E_USER_ERROR); + $ok = false; + } + } + + return $ok; } } diff --git a/setup/tools/sqlGen.class.php b/setup/tools/sqlGen.class.php index 5b30685d..71f32a4d 100644 --- a/setup/tools/sqlGen.class.php +++ b/setup/tools/sqlGen.class.php @@ -239,7 +239,7 @@ class SqlGen if ($ssRef->generate($updateIds)) { if (method_exists($ssRef, 'applyCustomData')) - $ssRef->applyCustomData(); + return $ssRef->applyCustomData(); return true; } diff --git a/setup/tools/sqlgen/achievement.func.php b/setup/tools/sqlgen/achievement.func.php index 8a528bbe..90fce06c 100644 --- a/setup/tools/sqlgen/achievement.func.php +++ b/setup/tools/sqlgen/achievement.func.php @@ -9,7 +9,7 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'achievement'; @@ -17,10 +17,6 @@ SqlGen::register(new class extends SetupScript protected $tblDependencyTC = ['dbc_achievement', 'disables']; protected $dbcSourceFiles = ['achievement_category', 'achievement', 'spellicon']; - private $customData = array( - 1956 => ['itemExtra' => 44738] // Higher Learning - item rewarded through gossip - ); - public function generate(array $ids = []) : bool { /**************/ diff --git a/setup/tools/sqlgen/classes.func.php b/setup/tools/sqlgen/classes.func.php index 00709f20..de0b83f8 100644 --- a/setup/tools/sqlgen/classes.func.php +++ b/setup/tools/sqlgen/classes.func.php @@ -9,26 +9,12 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'classes'; protected $dbcSourceFiles = ['spell', 'charbaseinfo', 'skillraceclassinfo', 'skilllineability', 'chrclasses']; - // roles (1:heal; 2:mleDPS; 4:rngDPS; 8:tank) - private $customData = array( - 1 => ['roles' => 0xA], - 2 => ['roles' => 0xB], - 3 => ['roles' => 0x4], - 4 => ['roles' => 0x2], - 5 => ['roles' => 0x5], - 6 => ['roles' => 0xA], - 7 => ['roles' => 0x7], - 8 => ['roles' => 0x4], - 9 => ['roles' => 0x4], - 11 => ['roles' => 0xF], - ); - public function generate(array $ids = []) : bool { $classes = DB::Aowow()->select('SELECT *, id AS ARRAY_KEY FROM dbc_chrclasses'); diff --git a/setup/tools/sqlgen/currencies.func.php b/setup/tools/sqlgen/currencies.func.php index b62bb729..29fa2be7 100644 --- a/setup/tools/sqlgen/currencies.func.php +++ b/setup/tools/sqlgen/currencies.func.php @@ -9,7 +9,7 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'currencies'; @@ -17,17 +17,6 @@ SqlGen::register(new class extends SetupScript protected $tblDependencyTC = ['item_template', 'item_template_locale']; protected $dbcSourceFiles = ['itemdisplayinfo', 'currencytypes']; - // hide test tokens and move them to unused - private $customData = array( - 1 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3], - 2 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3], - 4 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3], - 22 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3], - 141 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3], - 103 => ['cap' => 10000], // Arena Points - 104 => ['cap' => 75000] // Honor Points - ); - public function generate(array $ids = []) : bool { if (!$ids) diff --git a/setup/tools/sqlgen/factions.func.php b/setup/tools/sqlgen/factions.func.php index d819abde..1e051606 100644 --- a/setup/tools/sqlgen/factions.func.php +++ b/setup/tools/sqlgen/factions.func.php @@ -9,49 +9,12 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'factions'; protected $dbcSourceFiles = ['faction', 'factiontemplate']; - private $customData = array( - 47 => ['qmNpcIds' => '33310'], - 68 => ['qmNpcIds' => '33555'], - 69 => ['qmNpcIds' => '33653'], - 72 => ['qmNpcIds' => '33307'], - 76 => ['qmNpcIds' => '33553'], - 81 => ['qmNpcIds' => '33556'], - 922 => ['qmNpcIds' => '16528'], - 930 => ['qmNpcIds' => '33657'], - 932 => ['qmNpcIds' => '19321'], - 933 => ['qmNpcIds' => '20242 23007'], - 935 => ['qmNpcIds' => '21432'], - 941 => ['qmNpcIds' => '20241'], - 942 => ['qmNpcIds' => '17904'], - 946 => ['qmNpcIds' => '17657'], - 947 => ['qmNpcIds' => '17585'], - 970 => ['qmNpcIds' => '18382'], - 978 => ['qmNpcIds' => '20240'], - 989 => ['qmNpcIds' => '21643'], - 1011 => ['qmNpcIds' => '21655'], - 1012 => ['qmNpcIds' => '23159'], - 1037 => ['qmNpcIds' => '32773 32564'], - 1038 => ['qmNpcIds' => '23428'], - 1052 => ['qmNpcIds' => '32774 32565'], - 1073 => ['qmNpcIds' => '31916 32763'], - 1090 => ['qmNpcIds' => '32287'], - 1091 => ['qmNpcIds' => '32533'], - 1094 => ['qmNpcIds' => '34881'], - 1105 => ['qmNpcIds' => '31910'], - 1106 => ['qmNpcIds' => '30431'], - 1119 => ['qmNpcIds' => '32540'], - 1124 => ['qmNpcIds' => '34772'], - 1156 => ['qmNpcIds' => '37687'], - 1082 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 952 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - ); - public function generate(array $ids = []) : bool { $factionQuery = ' diff --git a/setup/tools/sqlgen/holidays.func.php b/setup/tools/sqlgen/holidays.func.php index 6e5d6080..3eb44a06 100644 --- a/setup/tools/sqlgen/holidays.func.php +++ b/setup/tools/sqlgen/holidays.func.php @@ -10,41 +10,12 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'holidays'; protected $dbcSourceFiles = ['holidays', 'holidaydescriptions', 'holidaynames']; - private $customData = array( - 62 => ['iconString' => 'inv_misc_missilelarge_red' ], - 141 => ['iconString' => 'calendar_winterveilstart', 'achievementCatOrId' => 156 ], - 181 => ['iconString' => 'calendar_noblegardenstart', 'achievementCatOrId' => 159 ], - 201 => ['iconString' => 'calendar_childrensweekstart', 'achievementCatOrId' => 163 ], - 283 => ['iconString' => 'inv_jewelry_necklace_21' ], - 284 => ['iconString' => 'inv_misc_rune_07' ], - 285 => ['iconString' => 'inv_jewelry_amulet_07' ], - 301 => ['iconString' => 'calendar_fishingextravaganzastart' ], - 321 => ['iconString' => 'calendar_harvestfestivalstart' ], - 324 => ['iconString' => 'calendar_hallowsendstart', 'bossCreature' => 23682, 'achievementCatOrId' => 158 ], - 327 => ['iconString' => 'calendar_lunarfestivalstart', 'bossCreature' => 15467, 'achievementCatOrId' => 160 ], - 335 => ['iconString' => 'calendar_loveintheairstart' ], - 341 => ['iconString' => 'calendar_midsummerstart', 'bossCreature' => 25740, 'achievementCatOrId' => 161 ], - 353 => ['iconString' => 'spell_nature_eyeofthestorm' ], - 372 => ['iconString' => 'calendar_brewfeststart', 'bossCreature' => 23872, 'achievementCatOrId' => 162 ], - 374 => ['iconString' => 'calendar_darkmoonfaireelwynnstart' ], - 375 => ['iconString' => 'calendar_darkmoonfairemulgorestart' ], - 376 => ['iconString' => 'calendar_darkmoonfaireterokkarstart' ], - 398 => ['iconString' => 'calendar_piratesdaystart', 'achievementCatOrId' => -3457], - 400 => ['iconString' => 'achievement_bg_winsoa' ], - 404 => ['iconString' => 'calendar_harvestfestivalstart', 'achievementCatOrId' => 14981], - 406 => ['iconString' => 'achievement_boss_lichking' ], - 409 => ['iconString' => 'calendar_dayofthedeadstart', 'achievementCatOrId' => -3456], - 420 => ['iconString' => 'achievement_bg_winwsg' ], - 423 => ['iconString' => 'calendar_loveintheairstart', 'bossCreature' => 36296, 'achievementCatOrId' => 187 ], - 424 => ['iconString' => 'calendar_fishingextravaganzastart' ], - ); - public function generate(array $ids = []) : bool { $query = ' diff --git a/setup/tools/sqlgen/items.func.php b/setup/tools/sqlgen/items.func.php index 9ede7368..6674d157 100644 --- a/setup/tools/sqlgen/items.func.php +++ b/setup/tools/sqlgen/items.func.php @@ -9,7 +9,7 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'items'; @@ -17,16 +17,6 @@ SqlGen::register(new class extends SetupScript protected $tblDependencyTC = ['item_template', 'item_template_locale', 'spell_group', 'game_event']; protected $dbcSourceFiles = ['gemproperties', 'itemdisplayinfo', 'spell', 'glyphproperties', 'durabilityquality', 'durabilitycosts']; - private $customData = array( - 33147 => ['class' => 9, 'subClass' => 8], // one stray enchanting recipe .. with a strange icon - 7948 => ['itemset' => 221], // v unsure if this should be fixed v - 7949 => ['itemset' => 221], - 7950 => ['itemset' => 221], - 7951 => ['itemset' => 221], - 7952 => ['itemset' => 221], - 7953 => ['itemset' => 221] - ); - private $skill2cat = array( 773 => 11, // inscription 356 => 9, // fishing diff --git a/setup/tools/sqlgen/itemset.func.php b/setup/tools/sqlgen/itemset.func.php index 7e1aae3b..3c7b2e84 100644 --- a/setup/tools/sqlgen/itemset.func.php +++ b/setup/tools/sqlgen/itemset.func.php @@ -15,18 +15,12 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; - protected $command = 'itemset'; protected $tblDependencyAowow = ['spell']; protected $tblDependencyTC = ['item_template', 'game_event']; protected $dbcSourceFiles = ['itemset']; - private $customData = array( - 221 => ['item1' => 7948, 'item2' => 7949, 'item3' => 7950, 'item4' => 7951, 'item5' => 7952, 'item6' => 7953] - ); - private $setToHoliday = array ( 761 => 141, // Winterveil 762 => 372, // Brewfest diff --git a/setup/tools/sqlgen/races.func.php b/setup/tools/sqlgen/races.func.php index 675fc30e..5f503ce9 100644 --- a/setup/tools/sqlgen/races.func.php +++ b/setup/tools/sqlgen/races.func.php @@ -9,27 +9,12 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'races'; protected $dbcSourceFiles = ['chrraces', 'charbaseinfo']; - private $customData = array( - null, - ['leader' => 29611, 'factionId' => 72, 'startAreaId' => 12], - ['leader' => 4949, 'factionId' => 76, 'startAreaId' => 14], - ['leader' => 2784, 'factionId' => 47, 'startAreaId' => 1], - ['leader' => 7999, 'factionId' => 69, 'startAreaId' => 141], - ['leader' => 10181, 'factionId' => 68, 'startAreaId' => 85], - ['leader' => 3057, 'factionId' => 81, 'startAreaId' => 215], - ['leader' => 7937, 'factionId' => 54, 'startAreaId' => 1], - ['leader' => 10540, 'factionId' => 530, 'startAreaId' => 14], - null, - ['leader' => 16802, 'factionId' => 911, 'startAreaId' => 3430], - ['leader' => 17468, 'factionId' => 930, 'startAreaId' => 3524] - ); - public function generate(array $ids = []) : bool { /**********/ diff --git a/setup/tools/sqlgen/shapeshiftforms.func.php b/setup/tools/sqlgen/shapeshiftforms.func.php index 19acf730..245ace2d 100644 --- a/setup/tools/sqlgen/shapeshiftforms.func.php +++ b/setup/tools/sqlgen/shapeshiftforms.func.php @@ -9,22 +9,12 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'shapeshiftforms'; protected $dbcSourceFiles = ['spellshapeshiftform']; - private $customData = array( - 1 => ['displayIdH' => 8571], - 15 => ['displayIdH' => 8571], - 5 => ['displayIdH' => 2289], - 8 => ['displayIdH' => 2289], - 14 => ['displayIdH' => 2289], - 27 => ['displayIdH' => 21244], - 29 => ['displayIdH' => 20872] - ); - public function generate(array $ids = []) : bool { DB::Aowow()->query(' diff --git a/setup/tools/sqlgen/skillline.func.php b/setup/tools/sqlgen/skillline.func.php index a316feb2..d16f3b4c 100644 --- a/setup/tools/sqlgen/skillline.func.php +++ b/setup/tools/sqlgen/skillline.func.php @@ -9,34 +9,13 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'skillline'; protected $tblDependencyAowow = ['icons']; protected $dbcSourceFiles = ['skillline', 'spell', 'skilllineability']; - private $customData = array( - 393 => ['professionMask' => 0x0000], // Skinning - 171 => ['professionMask' => 0x0001, 'recipeSubClass' => 6, 'specializations' => '28677 28675 28672'], // Alchemy - 164 => ['professionMask' => 0x0002, 'recipeSubClass' => 4, 'specializations' => '9788 9787 17041 17040 17039'], // Blacksmithing - 185 => ['professionMask' => 0x0004, 'recipeSubClass' => 5], // Cooking - 333 => ['professionMask' => 0x0008, 'recipeSubClass' => 8], // Enchanting - 202 => ['professionMask' => 0x0010, 'recipeSubClass' => 3, 'specializations' => '20219 20222'], // Engineering - 129 => ['professionMask' => 0x0020, 'recipeSubClass' => 7], // First Aid - 755 => ['professionMask' => 0x0040, 'recipeSubClass' => 10], // Jewelcrafting - 165 => ['professionMask' => 0x0080, 'recipeSubClass' => 1, 'specializations' => '10656 10658 10660'], // Leatherworking - 186 => ['professionMask' => 0x0100], // Mining - 197 => ['professionMask' => 0x0200, 'recipeSubClass' => 2, 'specializations' => '26798 26801 26797'], // Tailoring - 356 => ['professionMask' => 0x0400, 'recipeSubClass' => 9], // Fishing - 182 => ['professionMask' => 0x0800], // Herbalism - 773 => ['professionMask' => 0x1000, 'recipeSubClass' => 11], // Inscription - 785 => ['name_loc0' => 'Pet - Wasp'], // Pet - Wasp - 781 => ['name_loc2' => 'Familier - diablosaure exotique'], // Pet - Exotic Devilsaur - 758 => ['name_loc6' => 'Mascota: Evento - Control remoto', 'name_loc3' => 'Tier - Ereignis Ferngesteuert', 'categoryId' => 7], // Pet - Event - Remote Control - 788 => ['categoryId' => 7], // Pet - Exotic Spirit Beast - ); - public function generate(array $ids = []) : bool { $baseQuery = ' diff --git a/setup/tools/sqlgen/sounds.func.php b/setup/tools/sqlgen/sounds.func.php index 385e3196..de5b396f 100644 --- a/setup/tools/sqlgen/sounds.func.php +++ b/setup/tools/sqlgen/sounds.func.php @@ -9,7 +9,7 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'sounds'; @@ -26,10 +26,6 @@ SqlGen::register(new class extends SetupScript 'material', 'itemgroupsounds', 'itemdisplayinfo', 'weaponimpactsounds', 'itemsubclass', 'weaponswingsounds2' /*, 'sheathesoundlookups' data is redundant with material..? */ ); - private $customData = array( - 15407 => ['cat' => 10] // UR_Algalon_Summon03 (this is not an item pickup) - ); - public function generate(array $ids = []) : bool { /* diff --git a/setup/tools/sqlgen/spawns.func.php b/setup/tools/sqlgen/spawns.func.php index bf73fc2a..d3796491 100644 --- a/setup/tools/sqlgen/spawns.func.php +++ b/setup/tools/sqlgen/spawns.func.php @@ -46,70 +46,6 @@ SqlGen::register(new class extends SetupScript ' - assembling waypoints from table waypoint_data', TYPE_NPC] ); - private $alphaMapCache = []; - - private function alphaMapCheck(int $areaId, array &$set) : bool - { - $file = 'setup/generated/alphaMaps/'.$areaId.'.png'; - if (!file_exists($file)) // file does not exist (probably instanced area) - return false; - - // invalid and corner cases (literally) - if (!is_array($set) || empty($set['posX']) || empty($set['posY']) || $set['posX'] >= 100 || $set['posY'] >= 100) - { - $set = null; - return true; - } - - if (empty($this->alphaMapCache[$areaId])) - $this->alphaMapCache[$areaId] = imagecreatefrompng($file); - - // alphaMaps are 1000 x 1000, adapt points [black => valid point] - if (!imagecolorat($this->alphaMapCache[$areaId], $set['posX'] * 10, $set['posY'] * 10)) - $set = null; - - return true; - } - - private function checkCoords(array $points) : array - { - $result = []; - $capitals = array( // capitals take precedence over their surroundings - 1497, 1637, 1638, 3487, // Undercity, Ogrimmar, Thunder Bluff, Silvermoon City - 1519, 1537, 1657, 3557, // Stormwind City, Ironforge, Darnassus, The Exodar - 3703, 4395 // Shattrath City, Dalaran - ); - - foreach ($points as $res) - { - if ($this->alphaMapCheck($res['areaId'], $res)) - { - if (!$res) - continue; - - // some rough measure how central the spawn is on the map (the lower the number, the better) - // 0: perfect center; 1: touches a border - $q = abs( (($res['posX'] - 50) / 50) * (($res['posY'] - 50) / 50) ); - - if (empty($result) || $result[0] > $q) - $result = [$q, $res]; - } - else if (in_array($res['areaId'], $capitals)) // capitals (auto-discovered) and no hand-made alphaMap available - return $res; - else if (empty($result)) // add with lowest quality if alpha map is missing - $result = [1.0, $res]; - } - - // spawn does not really match on a map, but we need at least one result - if (!$result) - { - usort($points, function ($a, $b) { return ($a['dist'] < $b['dist']) ? -1 : 1; }); - $result = [1.0, $points[0]]; - } - - return $result[1]; - } - public function generate(array $ids = []) : bool { /*********************/ @@ -207,7 +143,7 @@ SqlGen::register(new class extends SetupScript if (in_array($spawn['map'], [564, 580])) // Black Temple and Sunwell floor offset bullshit $points[0]['floor']++; - $final = $area ? $points[0] : $this->checkCoords($points); + $final = $area ? $points[0] : Game::checkCoords($points); } if ($idx < 5) diff --git a/setup/tools/sqlgen/titles.func.php b/setup/tools/sqlgen/titles.func.php index 23b6ca78..a93e5524 100644 --- a/setup/tools/sqlgen/titles.func.php +++ b/setup/tools/sqlgen/titles.func.php @@ -9,18 +9,13 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'titles'; protected $tblDependencyTC = ['quest_template', 'game_event_seasonal_questrelation', 'game_event', 'achievement_reward']; protected $dbcSourceFiles = ['chartitles']; - private $customData = array( - 137 => ['gender' => 2], - 138 => ['gender' => 1] - ); - private $titleHoliday = array( 137 => 201, 138 => 201, diff --git a/setup/tools/sqlgen/zones.func.php b/setup/tools/sqlgen/zones.func.php index b21cd536..7f4fe906 100644 --- a/setup/tools/sqlgen/zones.func.php +++ b/setup/tools/sqlgen/zones.func.php @@ -9,68 +9,39 @@ if (!CLI) SqlGen::register(new class extends SetupScript { - use TrCustomData; + use TrCustomData; // import custom data from DB protected $command = 'zones'; protected $tblDependencyTC = ['access_requirement']; - protected $dbcSourceFiles = ['worldmaptransforms', 'worldmaparea', 'map', 'mapdifficulty', 'areatable', 'lfgdungeons', 'battlemasterlist']; - - private $customData = array( - 2257 => ['cuFlags' => 0, 'category' => 0, 'type' => 1], // deeprun tram => type: transit - 3698 => ['expansion' => 1], // arenas - 3702 => ['expansion' => 1], - 3968 => ['expansion' => 1], - 4378 => ['expansion' => 2], - 4406 => ['expansion' => 2], - 2597 => ['maxPlayer' => 40], // is 5 in battlemasterlist ... dafuq? - 4710 => ['maxPlayer' => 40], - 3456 => ['parentAreaId' => 65, 'parentX' => 87.3, 'parentY' => 51.1], // has no coordinates set in map.dbc - // individual Tempest Keep ships - 3849 => ['parentAreaId' => 3523, 'parentX' => 70.5, 'parentY' => 69.6], - 3847 => ['parentAreaId' => 3523, 'parentX' => 71.7, 'parentY' => 55.1], - 3848 => ['parentAreaId' => 3523, 'parentX' => 74.3, 'parentY' => 57.8], - 3845 => ['parentAreaId' => 3523, 'parentX' => 73.5, 'parentY' => 63.7], - // individual Icecrown Citadel wings - 4893 => ['parentAreaId' => 4812, 'cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 4894 => ['parentAreaId' => 4812, 'cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 4895 => ['parentAreaId' => 4812, 'cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 4896 => ['parentAreaId' => 4812, 'cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 4897 => ['parentAreaId' => 4812, 'cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - // uncaught unused zones - 207 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 208 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 616 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW], - 1417 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW] - ); + protected $dbcSourceFiles = ['worldmaptransforms', 'worldmaparea', 'map', 'mapdifficulty', 'areatable', 'lfgdungeons', 'battlemasterlist', 'dungeonmap']; public function generate(array $ids = []) : bool { // base query - DB::Aowow()->query(' - REPLACE INTO ?_zones - SELECT + $baseData = DB::Aowow()->query('SELECT a.id, - IFNULL(wmt.targetMapId, m.id), -- map - m.id, -- mapBak - a.areaTable, -- parentArea - IFNULL(wmt.targetMapId, -- g_zone_categories + IFNULL(wmt.targetMapId, m.id) AS map, + m.id AS mapBak, + a.areaTable AS parentArea, + IFNULL(wmt.targetMapId, IF(m.areaType = 1, 2, IF(m.areaType = 2, 3, IF(m.areaType = 4, 9, IF(m.isBG = 1, 6, - IF(m.id = 609, 1, - IF(m.id = 571, 10, - IF(m.id = 530, 8, m.id)))))))), + IF(m.id = 571, 10, + IF(m.id = 530, 8, m.id))))))) AS category, a.flags, - IF(areaTable <> 0 OR -- cuFlags - (wma.id IS NULL AND pa.areaId IS NULL AND (flags & 0x11000) = 0), ?d, 0), + IF(a.mapId IN (13, 25, 37, 42, 169) OR + (a.mapId IN (0, 1, 530, 571) AND wma.id IS NULL) OR + a.areaTable <> 0 OR + (a.soundAmbience = 0 AND a.mapId IN (0, 1, 530, 571)), ?d, 0) AS cuFlags, IF(a.flags & 0x01000000, 5, -- g_zone_territories IF(m.isBG = 1, 4, IF(m.areaType = 4, 4, IF(a.flags & 0x00000800, 3, IF(a.factionGroupMask = 6, 2, - IF(a.factionGroupMask > 0, LOG2(a.factionGroupMask) - 1, 2)))))), + IF(a.factionGroupMask > 0, LOG2(a.factionGroupMask) - 1, 2)))))) AS faction, m.expansion, IF(m.areaType = 0, 0, -- g_zone_instancetypes IF(m.isBG = 1, 4, @@ -78,27 +49,27 @@ SqlGen::register(new class extends SetupScript IF(md.modeMask & 0xC, 8, IF(md.minPl = 10 AND md.maxPL = 25, 7, IF(m.areaType = 2, 3, - IF(m.areaType = 1 AND md.modeMask & 0x2, 5, 2))))))), + IF(m.areaType = 1 AND md.modeMask & 0x2, 5, 2))))))) AS `type`, IF (md.minPl = 10 AND md.maxPl = 25, -2, - IFNULL(bm.maxPlayers, IFNULL(md.maxPl, m.maxPlayers))), - 0, -- itemLevelN - 0, -- itemLevelH - 0, -- levelReq - IFNULL(lfgIni.levelLFG, 0), -- levelReqLFG - 0, -- levelHeroic - IF(a.flags & 0x8, 1, -- levelMin + IFNULL(bm.maxPlayers, IFNULL(md.maxPl, m.maxPlayers))) AS maxPlayer, + 0 AS `itemLevelN`, -- + 0 AS `itemLevelH`, + 0 AS `levelReq`, + IFNULL(lfgIni.levelLFG, 0) AS `levelReqLFG`, + 0 AS `levelHeroic`, + IF(a.flags & 0x8, 1, IFNULL(bm.minLevel, IFNULL(lfgIni.levelMin, - IFNULL(lfgOpen.levelMin, 0)))), - IF(a.flags & 0x8, ?d, -- levelMax + IFNULL(lfgOpen.levelMin, 0)))) AS `levelMin`, + IF(a.flags & 0x8, ?d, IFNULL(bm.maxLevel, IFNULL(lfgIni.levelMax, - IFNULL(lfgOpen.levelMax, 0)))), - "", -- attunements - "", -- heroic attunements - IFNULL(pa.areaId, 0), - IFNULL(pa.posX, 0), - IFNULL(pa.posY, 0), + IFNULL(lfgOpen.levelMax, 0)))) AS `levelMax`, + "" AS `attunementsN`, + "" AS `attunementsH`, + m.parentMapId, -- IFNULL(pa.areaId, 0), + m.parentX, -- IFNULL(pa.posX, 0), + m.parentY, -- IFNULL(pa.posY, 0), IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc0, m.name_loc0), IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc2, m.name_loc2), IF(wma.id IS NULL OR m.areaType = 0 OR a.mapId IN (269, 560) OR a.areaTable, a.name_loc3, m.name_loc3), @@ -114,26 +85,6 @@ SqlGen::register(new class extends SetupScript ) md ON md.mapId = m.id LEFT JOIN dbc_lfgdungeons lfgOpen ON a.mapId IN (0, 1, 530, 571) AND a.name_loc0 LIKE CONCAT("%", lfgOpen.name_loc0) AND lfgOpen.type = 4 - LEFT JOIN ( - SELECT - mapId, m.id, `left`, `right`, `top`, `bottom`, - IF((abs(((m.parentY - `right`) * 100 / (`left` - `right`)) - 50)) > abs(((m.parentX - `bottom`) * 100 / (`top` - `bottom`)) - 50), - (abs(((m.parentY - `right`) * 100 / (`left` - `right`)) - 50)), - (abs(((m.parentX - `bottom`) * 100 / (`top` - `bottom`)) - 50))) AS diff, - areaId, -- parentArea - 100 - ROUND((m.parentY - `right`) * 100 / (`left` - `right`), 1) as posX, - 100 - ROUND((m.parentX - `bottom`) * 100 / (`top` - `bottom`), 1) as posY - FROM - dbc_worldmaparea wma - JOIN - dbc_map m ON m.parentMapId = wma.mapid - WHERE - m.parentMapId IN (0, 1, 530, 571) AND areaId <> 0 AND - m.parentY BETWEEN `right` AND `left` AND - m.parentX BETWEEN bottom AND top - ORDER BY - diff ASC - ) pa ON pa.id = m.id AND m.parentMapId > -1 AND m.parentX <> 0 AND m.parentY <> 0 AND m.parentMapId = pa.mapId AND m.parentY BETWEEN pa.`right` AND pa.`left` AND m.parentX BETWEEN pa.bottom AND pa.top LEFT JOIN ( SELECT mapId, @@ -160,10 +111,30 @@ SqlGen::register(new class extends SetupScript wma.right > wmt.minY AND wma.top < wmt.maxX AND wma.bottom > wmt.minX - GROUP BY - a.id ', CUSTOM_EXCLUDE_FOR_LISTVIEW, MAX_LEVEL); + foreach ($baseData as &$bd) + { + if (!in_array($bd['parentMapId'], [0, 1, 530, 571])) + continue; + + if ($gPos = Game::worldPosToZonePos($bd['parentMapId'], $bd['parentY'], $bd['parentX'])) + { + $pos = Game::checkCoords($gPos); + $bd['parentMapId'] = $pos['areaId'] ?? $gPos[0]['areaId']; + $bd['parentX'] = $pos['posX'] ?? $gPos[0]['posX']; + $bd['parentY'] = $pos['posY'] ?? $gPos[0]['posY']; + } + else + { + $bd['parentMapId'] = 0; + $bd['parentX'] = 0; + $bd['parentY'] = 0; + } + } + + DB::Aowow()->query('REPLACE INTO ?_zones VALUES (?a)', $baseData); + // get requirements from world.access_requirement $zoneReq = DB::World()->select(' SELECT @@ -205,7 +176,7 @@ SqlGen::register(new class extends SetupScript $aN[TYPE_ITEM][] = $_; if ($req['reqItemH'] && ($entries = explode(' ', $req['reqItemH']))) - if ($entries = array_diff($entries, @(array)$aN[TYPE_ITEM])) + if ($entries = array_diff($entries, $aN[TYPE_ITEM] ?? [])) foreach ($entries as $_) $aH[TYPE_ITEM][] = $_; @@ -214,7 +185,7 @@ SqlGen::register(new class extends SetupScript $aN[TYPE_QUEST][] = $_; if ($req['reqQuestH'] && ($entries = explode(' ', $req['reqQuestH']))) - if ($entries = array_diff($entries, @(array)$aN[TYPE_QUEST])) + if ($entries = array_diff($entries, $aN[TYPE_QUEST] ?? [])) foreach ($entries as $_) $aH[TYPE_QUEST][] = $_; @@ -223,7 +194,7 @@ SqlGen::register(new class extends SetupScript $aN[TYPE_ACHIEVEMENT][] = $_; if ($req['reqAchievementH'] && ($entries = explode(' ', $req['reqAchievementH']))) - if ($entries = array_diff($entries, @(array)$aN[TYPE_ACHIEVEMENT])) + if ($entries = array_diff($entries, $aN[TYPE_ACHIEVEMENT] ?? [])) foreach ($entries as $_) $aH[TYPE_ACHIEVEMENT][] = $_; diff --git a/setup/updates/1645476214_01.sql b/setup/updates/1645476214_01.sql new file mode 100644 index 00000000..0a84fdc3 --- /dev/null +++ b/setup/updates/1645476214_01.sql @@ -0,0 +1,263 @@ +DROP TABLE IF EXISTS `aowow_setup_custom_data`; + +CREATE TABLE `aowow_setup_custom_data` ( + `command` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', + `entry` int NOT NULL DEFAULT '0' COMMENT 'typeId', + `field` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', + `value` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, + `comment` text COLLATE utf8mb4_general_ci, + KEY `aowow_setup_custom_data_command_IDX` (`command`) USING BTREE +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('zones',2257,'cuFlags','0','Deeprun Tram - make visible'), + ('zones',2257,'category','0','Deeprun Tram - Category: Eastern Kingdoms'), + ('zones',2257,'type','1','Deeprun Tram - Type: Transit'), + ('zones',3698,'expansion','1','Nagrand Arena - Addon: BC'), + ('zones',3702,'expansion','1','Blades Edge Arena - Addon: BC'), + ('zones',3968,'expansion','1','Ruins of Lordaeron Arena - Addon: BC'), + ('zones',4378,'expansion','1','Dalaran Arena - Addon: WotLK'), + ('zones',4406,'expansion','1','Ring of Valor Arena - Addon: WotLK'), + ('zones',2597,'maxPlayer','40','Alterac Valey - Players: 40 [battlemasterlist.dbc: 5]'), + ('zones',4710,'maxPlayer','40','Isle of Conquest - Players: 40 [battlemasterlist.dbc: 5]'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('zones',3849,'parentAreaId','3523','The Mechanar - Parent: Netherstorm [not set in map.dbc]'), + ('zones',3849,'parentX','87.3','The Mechanar - Entrance xPos'), + ('zones',3849,'parentY','51.1','The Mechanar - Entrance yPos'), + ('zones',3847,'parentAreaId','3523','The Botanica - Parent: Netherstorm [not set in map.dbc]'), + ('zones',3847,'parentX','71.7','The Botanica - Entrance xPos'), + ('zones',3847,'parentY','55.1','The Botanica - Entrance yPos'), + ('zones',3848,'parentAreaId','3523','The Arcatraz - Parent: Netherstorm [not set in map.dbc]'), + ('zones',3848,'parentX','74.3','The Arcatraz - Entrance xPos'), + ('zones',3848,'parentY','57.8','The Arcatraz - Entrance yPos'), + ('zones',3845,'parentAreaId','3523','Tempest Keep - Parent: Netherstorm [not set in map.dbc]'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('zones',3845,'parentX','73.5','Tempest Keep - Entrance xPos'), + ('zones',3845,'parentY','63.7','Tempest Keep - Entrance yPos'), + ('zones',3456,'parentAreaId','65','Naxxramas - Parent: Netherstorm [not set in map.dbc]'), + ('zones',3456,'parentX','87.3','Naxxramas - Entrance xPos'), + ('zones',3456,'parentY','87.3','Naxxramas - Entrance yPos'), + ('zones',4893,'parentAreaId','4812','The Frost Queen''s Lair - Parent: Icecrown Citadel'), + ('zones',4894,'parentAreaId','4812','Putricide''s Laboratory [..] - Parent: Icecrown Citadel'), + ('zones',4895,'parentAreaId','4812','The Crimson Hall - Parent: Icecrown Citadel'), + ('zones',4896,'parentAreaId','4812','The Frozen Throne - Parent: Icecrown Citadel'), + ('zones',4897,'parentAreaId','4812','The Sanctum of Blood - Parent: Icecrown Citadel'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('zones',4893,'cuFlags','1073741824','The Frost Queen''s Lair - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('zones',4894,'cuFlags','1073741824','Putricide''s Laboratory [..] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('achievement',1956,'itemExtra','44738','Higher Learning - item rewarded through gossip'), + ('zones',4895,'cuFlags','1073741824','The Crimson Hall - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('titles',137,'gender','2','Matron - female'), + ('zones',4896,'cuFlags','1073741824','The Frozen Throne - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('zones',4897,'cuFlags','1073741824','The Sanctum of Blood - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('zones',4076,'cuFlags','1073741824','Reuse Me 7 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('zones',207,'cuFlags','1073741824','The Great Sea - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('zones',208,'cuFlags','1073741824','Unused Ironcladcove - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('zones',2817,'levelMin','74','Crystalsong Forest - missing lfgDungeons entry'), + ('zones',1477,'cuFlags','1073741824','The Temple of Atal''Hakkar - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('zones',41,'levelMin','50','Deadwind Pass - missing lfgDungeons entry'), + ('zones',41,'levelMax','60','Deadwind Pass - missing lfgDungeons entry'), + ('zones',2257,'levelMin','1','Deeprun Tram - missing lfgDungeons entry'), + ('zones',2257,'levelMax','80','Deeprun Tram - missing lfgDungeons entry'), + ('zones',4298,'category','0','Plaguelands: The Scarlet Enclave - Parent: Eastern Kingdoms'), + ('zones',4298,'levelMin','55','Plaguelands: The Scarlet Enclave - missing lfgDungeons entry'), + ('zones',4298,'levelMax','58','Plaguelands: The Scarlet Enclave - missing lfgDungeons entry'), + ('zones',493,'levelMin','15','Moonglade - missing lfgDungeons entry'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('zones',493,'levelMax','60','Moonglade - missing lfgDungeons entry'), + ('zones',2817,'levelMax','76','Crystalsong Forest - missing lfgDungeons entry'), + ('zones',4742,'levelMin','77','Hrothgar''s Landing - missing lfgDungeons entry'), + ('zones',4742,'levelMax','80','Hrothgar''s Landing - missing lfgDungeons entry'), + ('classes',8,'roles','4','Mage - rngDPS'), + ('classes',2,'roles','11','Paladin - mleDPS + Tank + Heal'), + ('classes',3,'roles','4','Hunter - rngDPS'), + ('classes',4,'roles','2','Rogue - mleDPS'), + ('classes',5,'roles','5','Priest - rngDPS + Heal'), + ('classes',6,'roles','10','Death Knight - mleDPS + Tank'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('classes',7,'roles','7','Shaman - mleDPS + rngDPS + Heal'), + ('classes',8,'roles','4','Mage - rngDPS'), + ('classes',8,'roles','4','Mage - rngDPS'), + ('classes',8,'roles','4','Mage - rngDPS'), + ('currencies',103,'cap','10000','Arena Points - cap'), + ('currencies',104,'cap','75000','Honor Points - cap'), + ('currencies',1,'cuFlags','1073741824','Currency Token Test Token 1 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('currencies',2,'cuFlags','1073741824','Currency Token Test Token 2 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('currencies',4,'cuFlags','1073741824','Currency Token Test Token 3 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('currencies',22,'cuFlags','1073741824','Birmingham Test Item 3 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('currencies',141,'cuFlags','1073741824','zzzOLDDaily Quest Faction Token - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('currencies',1,'category','3','Currency Token Test Token 1 - category: unused'), + ('currencies',2,'category','3','Currency Token Test Token 2 - category: unused'), + ('currencies',4,'category','3','Currency Token Test Token 3 - category: unused'), + ('currencies',22,'category','3','Birmingham Test Item 3 - category: unused'), + ('currencies',141,'category','3','zzzOLDDaily Quest Faction Token - category: unused'), + ('factions',68,'qmNpcIds','33555','Undercity - set Quartermaster'), + ('factions',47,'qmNpcIds','33310','Ironforge - set Quartermaster'), + ('factions',69,'qmNpcIds','33653','Darnassus - set Quartermaster'), + ('factions',72,'qmNpcIds','33307','Stormwind - set Quartermaster'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('factions',76,'qmNpcIds','33553','Orgrimmar - set Quartermaster'), + ('factions',81,'qmNpcIds','33556','Thunder Bluff - set Quartermaster'), + ('factions',922,'qmNpcIds','16528','Tranquillien - set Quartermaster'), + ('factions',930,'qmNpcIds','33657','Exodar - set Quartermaster'), + ('factions',932,'qmNpcIds','19321','The Aldor - set Quartermaster'), + ('factions',933,'qmNpcIds','20242 23007','The Consortium - set Quartermaster'), + ('factions',935,'qmNpcIds','21432','The Sha''tar - set Quartermaster'), + ('factions',941,'qmNpcIds','20241','The Mag''har - set Quartermaster'), + ('factions',942,'qmNpcIds','17904','Cenarion Expedition - set Quartermaster'), + ('factions',946,'qmNpcIds','17657','Honor Hold - set Quartermaster'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('factions',947,'qmNpcIds','17585','Thrallmar - set Quartermaster'), + ('factions',970,'qmNpcIds','18382','Sporeggar - set Quartermaster'), + ('factions',978,'qmNpcIds','20240','Kurenai - set Quartermaster'), + ('factions',989,'qmNpcIds','21643','Keepers of Time - set Quartermaster'), + ('factions',1011,'qmNpcIds','21655','Lower City - set Quartermaster'), + ('factions',1012,'qmNpcIds','23159','Ashtongue Deathsworn - set Quartermaster'), + ('factions',1037,'qmNpcIds','32773 32564','Alliance Vanguard - set Quartermaster'), + ('factions',1038,'qmNpcIds','23428','Ogri''la - set Quartermaster'), + ('factions',1052,'qmNpcIds','32774 32565','Horde Expedition - set Quartermaster'), + ('factions',1073,'qmNpcIds','31916 32763','The Kalu''ak - set Quartermaster'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('factions',1090,'qmNpcIds','32287','Kirin Tor - set Quartermaster'), + ('factions',1091,'qmNpcIds','32533','The Wyrmrest Accord - set Quartermaster'), + ('factions',1094,'qmNpcIds','34881','The Silver Covenant - set Quartermaster'), + ('factions',1105,'qmNpcIds','31910','The Oracles - set Quartermaster'), + ('factions',1106,'qmNpcIds','30431','Argent Crusade - set Quartermaster'), + ('factions',1119,'qmNpcIds','32540','The Sons of Hodir - set Quartermaster'), + ('factions',1124,'qmNpcIds','34772','The Sunreavers - set Quartermaster'), + ('factions',1156,'qmNpcIds','37687','The Ashen Verdict - set Quartermaster'), + ('factions',1082,'cuFlags','1073741824','REUSE - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('factions',952,'cuFlags','1073741824','Test Faction 3 - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('titles',138,'gender','1','Patron - male'), + ('sounds',15407,'cat','10','UR_Algalon_Summon03 - is not an item pickup'), + ('shapeshiftforms',1,'displayIdH','8571','Cat Form - spellshapeshiftform.dbc missing displayId'), + ('shapeshiftforms',15,'displayIdH','8571','Creature - Cat - spellshapeshiftform.dbc missing displayId'), + ('shapeshiftforms',5,'displayIdH','2289','Bear Form - spellshapeshiftform.dbc missing displayId'), + ('shapeshiftforms',8,'displayIdH','2289','Dire Bear Form - spellshapeshiftform.dbc missing displayId'), + ('shapeshiftforms',14,'displayIdH','2289','Creature - Bear - spellshapeshiftform.dbc missing displayId'), + ('shapeshiftforms',27,'displayIdH','21244','Flight Form, Epic - spellshapeshiftform.dbc missing displayId'), + ('shapeshiftforms',29,'displayIdH','20872','Flight Form - spellshapeshiftform.dbc missing displayId'), + ('races',1,'leader','29611','Human - King Varian Wrynn'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('races',1,'factionId','72','Human - Stormwind'), + ('races',1,'startAreaId','12','Human - Elwynn Forest'), + ('races',2,'leader','4949','Orc - Thrall'), + ('races',2,'factionId','76','Orc - Orgrimmar'), + ('races',2,'startAreaId','14','Orc - Durotar'), + ('races',3,'leader','2784','Dwarf - King Magni Bronzebeard'), + ('races',3,'factionId','47','Dwarf - Ironforge'), + ('races',3,'startAreaId','1','Dwarf - Dun Morogh'), + ('races',4,'leader','7999','Night Elf - Tyrande Whisperwind'), + ('races',4,'factionId','69','Night Elf - Darnassus'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('races',4,'startAreaId','141','Night Elf - Teldrassil'), + ('races',5,'leader','10181','Undead - Lady Sylvanas Windrunner'), + ('races',5,'factionId','68','Undead - Undercity'), + ('races',5,'startAreaId','85','Undead - Tirisfal Glades'), + ('races',6,'leader','3057','Tauren - Cairne Bloodhoof'), + ('races',6,'factionId','81','Tauren - Thunder Bluff'), + ('races',6,'startAreaId','215','Tauren - Mulgore'), + ('races',7,'leader','7937','Gnome - High Tinker Mekkatorque'), + ('races',7,'factionId','54','Gnome - Gnomeregan Exiles'), + ('races',7,'startAreaId','1','Gnome - Dun Morogh'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('races',8,'leader','10540','Troll - Vol''jin'), + ('races',8,'factionId','530','Troll - Darkspear Trolls'), + ('races',8,'startAreaId','14','Troll - Durotar'), + ('races',10,'leader','16802','Blood Elf - Lor''themar Theron'), + ('races',10,'factionId','911','Blood Elf - Silvermoon City'), + ('races',10,'startAreaId','3430','Blood Elf - Eversong Woods'), + ('races',11,'leader','17468','Draenei - Prophet Velen'), + ('races',11,'factionId','930','Draenei - Exodar'), + ('races',11,'startAreaId','3524','Draenei - Azuremyst Isle'), + ('holidays',62,'iconString','inv_misc_missilelarge_red','Fireworks Spectacular'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('holidays',141,'iconString','calendar_winterveilstart','Feast of Winter Veil'), + ('holidays',181,'iconString','calendar_noblegardenstart','Noblegarden'), + ('holidays',201,'iconString','calendar_childrensweekstart','Children''s Week'), + ('holidays',283,'iconString','inv_jewelry_necklace_21','Call to Arms: Alterac Valley'), + ('holidays',284,'iconString','inv_misc_rune_07','Call to Arms: Warsong Gulch'), + ('holidays',285,'iconString','inv_jewelry_amulet_07','Call to Arms: Arathi Basin'), + ('holidays',301,'iconString','calendar_fishingextravaganzastart','Stranglethorn Fishing Extravaganza'), + ('holidays',321,'iconString','calendar_harvestfestivalstart','Harvest Festival'), + ('holidays',324,'iconString','calendar_hallowsendstart','Hallow''s End'), + ('holidays',327,'iconString','calendar_lunarfestivalstart','Lunar Festival'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('holidays',335,'iconString','calendar_loveintheairstart','Love is in the Air'), + ('holidays',341,'iconString','calendar_midsummerstart','Midsummer Fire Festival'), + ('holidays',353,'iconString','spell_nature_eyeofthestorm','Call to Arms: Eye of the Storm'), + ('holidays',372,'iconString','calendar_brewfeststart','Brewfest'), + ('holidays',374,'iconString','calendar_darkmoonfaireelwynnstart','Darkmoon Faire'), + ('holidays',375,'iconString','calendar_darkmoonfairemulgorestart','Darkmoon Faire'), + ('holidays',376,'iconString','calendar_darkmoonfaireterokkarstart','Darkmoon Faire'), + ('holidays',398,'iconString','calendar_piratesdaystart','Pirates'' Day'), + ('holidays',400,'iconString','achievement_bg_winsoa','Call to Arms: Strand of the Ancients'), + ('holidays',404,'iconString','calendar_harvestfestivalstart','Pilgrim''s Bounty'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('holidays',406,'iconString','achievement_boss_lichking','Wrath of the Lich King Launch'), + ('holidays',409,'iconString','calendar_dayofthedeadstart','Day of the Dead'), + ('holidays',420,'iconString','achievement_bg_winwsg','Call to Arms: Isle of Conquest'), + ('holidays',423,'iconString','calendar_loveintheairstart','Love is in the Air'), + ('holidays',424,'iconString','calendar_fishingextravaganzastart','Kalu''ak Fishing Derby'), + ('holidays',141,'achievementCatOrId','156','Feast of Winter Veil - Category: Feast of Winter Veil'), + ('holidays',181,'achievementCatOrId','159','Noblegarden - Category: Noblegarden'), + ('holidays',201,'achievementCatOrId','163','Children''s Week - Category: Children''s Week'), + ('holidays',324,'achievementCatOrId','158','Hallow''s End - Category: Hallow''s End'), + ('holidays',327,'achievementCatOrId','160','Lunar Festival - Category: Lunar Festival'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('holidays',341,'achievementCatOrId','161','Midsummer Fire Festival - Category: Midsummer Fire Festival'), + ('holidays',372,'achievementCatOrId','162','Brewfest - Category: Brewfest'), + ('holidays',398,'achievementCatOrId','-3457','Pirates'' Day - Achievement: The Captain''s Booty'), + ('holidays',404,'achievementCatOrId','14981','Pilgrim''s Bounty - Category: Pilgrim''s Bounty'), + ('holidays',409,'achievementCatOrId','-3456','Day of the Dead - Achievement: Dead Man''s Party'), + ('holidays',423,'achievementCatOrId','187','Love is in the Air - Category: Love is in the Air'), + ('holidays',324,'bossCreature','23682','Hallow''s End - Headless Horseman'), + ('holidays',327,'bossCreature','15467','Lunar Festival - Omen'), + ('holidays',341,'bossCreature','25740','Midsummer Fire Festival - Ahune'), + ('holidays',372,'bossCreature','23872','Brewfest - Coren Direbrew'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('holidays',423,'bossCreature','36296','Love is in the Air - Apothecary Hummel'), + ('skillline',197,'professionMask','512','Tailoring'), + ('skillline',186,'professionMask','256','Mining'), + ('skillline',165,'specializations','10656 10658 10660','Leatherworking'), + ('skillline',165,'recipeSubClass','1','Leatherworking'), + ('skillline',165,'professionMask','128','Leatherworking'), + ('skillline',755,'recipeSubClass','10','Jewelcrafting'), + ('skillline',755,'professionMask','64','Jewelcrafting'), + ('skillline',129,'recipeSubClass','7','First Aid'), + ('skillline',129,'professionMask','32','First Aid'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('skillline',202,'specializations','20219 20222','Engineering'), + ('skillline',202,'recipeSubClass','3','Engineering'), + ('skillline',202,'professionMask','16','Engineering'), + ('skillline',333,'recipeSubClass','8','Enchanting'), + ('skillline',333,'professionMask','8','Enchanting'), + ('skillline',185,'recipeSubClass','5','Cooking'), + ('skillline',185,'professionMask','4','Cooking'), + ('skillline',164,'specializations','9788 9787 17041 17040 17039','Blacksmithing'), + ('skillline',164,'recipeSubClass','4','Blacksmithing'), + ('skillline',164,'professionMask','2','Blacksmithing'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('skillline',171,'specializations','28677 28675 28672','Alchemy'), + ('skillline',171,'recipeSubClass','6','Alchemy'), + ('skillline',171,'professionMask','1','Alchemy'), + ('skillline',393,'professionMask','0','Skinning'), + ('skillline',197,'recipeSubClass','2','Tailoring'), + ('skillline',197,'specializations','26798 26801 26797','Tailoring'), + ('skillline',356,'professionMask','1024','Fishing'), + ('skillline',356,'recipeSubClass','9','Fishing'), + ('skillline',182,'professionMask','2048','Herbalism'), + ('skillline',773,'professionMask','4096','Inscription'); +INSERT INTO aowow_setup_custom_data (command,entry,field,value,comment) VALUES + ('skillline',773,'recipeSubClass','11','Inscription'), + ('skillline',785,'name_loc0','Pet - Wasp','Pet - Wasp'), + ('skillline',781,'name_loc2','Familier - diablosaure exotique','Pet - Exotic Devlisaur'), + ('skillline',758,'name_loc6','Mascota: Evento - Control remoto','Pet - Event - Remote Control'), + ('skillline',758,'name_loc3','Tier - Ereignis Ferngesteuert','Pet - Event - Remote Control'), + ('skillline',758,'categoryId','7','Pet - Event - Remote Control - bring in line with other pets'), + ('skillline',788,'categoryId','7','Pet - Exotic Spirit Beast - bring in line with other pets'), + ('item',33147,'class','9','Formula: Enchant Cloak - Subtlety - Class: Recipes'), + ('item',33147,'subClass','8','Formula: Enchant Cloak - Subtlety - Subclass: Enchanting'); \ No newline at end of file diff --git a/setup/updates/1645476214_02.sql b/setup/updates/1645476214_02.sql new file mode 100644 index 00000000..a5e32bbd --- /dev/null +++ b/setup/updates/1645476214_02.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS `aowow_sourcestrings`;