diff --git a/includes/basetype.class.php b/includes/basetype.class.php
index e4b9cb0a..7e4ced75 100644
--- a/includes/basetype.class.php
+++ b/includes/basetype.class.php
@@ -630,8 +630,13 @@ trait spawnHelper
$opts = $menu = $tt = $info = [];
$footer = '';
- if ($s['respawn'])
- $info[1] = ''.Lang::npc('respawnIn').Lang::main('colon').Lang::formatTime($s['respawn'] * 1000, 'game', 'timeAbbrev', true).'';
+ if ($s['respawn'] > 0)
+ $info[1] = ''.Lang::npc('respawnIn', [Lang::formatTime($s['respawn'] * 1000, 'game', 'timeAbbrev', true)]).'';
+ else if ($s['respawn'] < 0)
+ {
+ $info[1] = ''.Lang::npc('despawnAfter', [Lang::formatTime(-$s['respawn'] * 1000, 'game', 'timeAbbrev', true)]).'';
+ $opts['type'] = 4; // make pip purple
+ }
if (User::isInGroup(U_GROUP_STAFF))
{
diff --git a/includes/game.php b/includes/game.php
index 625c5356..44e4f158 100644
--- a/includes/game.php
+++ b/includes/game.php
@@ -48,7 +48,7 @@ class Game
-2 => [ 0],
0 => [ 1, 3, 4, 8, 9, 10, 11, 12, 25, 28, 33, 36, 38, 40, 41, 44, 45, 46, 47, 51, 85, 130, 132, 139, 154, 267, 1497, 1519, 1537, 2257, 3430, 3431, 3433, 3487, 4080, 4298],
1 => [ 14, 15, 16, 17, 141, 148, 188, 215, 220, 331, 357, 361, 363, 400, 405, 406, 440, 490, 493, 618, 1377, 1637, 1638, 1657, 1769, 3524, 3525, 3526, 3557],
- 2 => [ 206, 209, 491, 717, 718, 719, 721, 722, 796, 1176, 1196, 1337, 1417, 1581, 1583, 1584, 1941, 2017, 2057, 2100, 2366, 2367, 2437, 2557, 3535, 3562, 3688, 3713, 3714, 3715, 3716, 3717, 3789, 3790, 3791, 3792, 3842, 3847, 3848, 3849, 3905, 4100, 4131, 4196, 4228, 4264, 4265, 4272, 4277, 4415, 4416, 4494, 4522, 4723, 4809, 4813, 4820],
+ 2 => [ 206, 209, 491, 717, 718, 719, 721, 722, 796, 1176, 1196, 1337, 1477, 1581, 1583, 1584, 1941, 2017, 2057, 2100, 2366, 2367, 2437, 2557, 3535, 3562, 3688, 3713, 3714, 3715, 3716, 3717, 3789, 3790, 3791, 3792, 3842, 3847, 3848, 3849, 3905, 4100, 4131, 4196, 4228, 4264, 4265, 4272, 4277, 4415, 4416, 4494, 4522, 4723, 4809, 4813, 4820],
3 => [ 1977, 2159, 2677, 2717, 3428, 3429, 3456, 3457, 3606, 3607, 3805, 3836, 3845, 3923, 3959, 4075, 4273, 4493, 4500, 4603, 4722, 4812, 4987],
4 => [ -372, -263, -262, -261, -162, -161, -141, -82, -81, -61],
5 => [ -373, -371, -324, -304, -264, -201, -182, -181, -121, -101, -24],
@@ -59,26 +59,66 @@ class Game
10 => [ 65, 66, 67, 210, 394, 495, 2817, 3537, 3711, 4024, 4197, 4395, 4742]
);
+ // zoneorsort for quests need updating
+ // partially points non-instanced area with identical name for instance quests
+ public static $questSortFix = array(
+ -221 => 440, // Treasure Map => Tanaris
+ -284 => 0, // Special => Misc (some quests get shuffled into seasonal)
+ 151 => 0, // Designer Island => Misc
+ 22 => 0, // Programmer Isle
+ 35 => 33, // Booty Bay => Stranglethorn Vale
+ 131 => 132, // Kharanos => Coldridge Valley
+ 24 => 9, // Northshire Abbey => Northshire Valley
+ 279 => 36, // Dalaran Crater => Alterac Mountains
+ 4342 => 4298, // Acherus: The Ebon Hold => The Scarlet Enclave
+ 2079 => 15, // Alcaz Island => Dustwallow Marsh
+ 1939 => 440, // Abyssal Sands => Tanaris
+ 393 => 363, // Darkspeer Strand => Valley of Trials
+ 702 => 141, // Rut'theran Village => Teldrassil
+ 221 => 220, // Camp Narache => Red Cloud Mesa
+ 1116 => 357, // Feathermoon Stronghold => Feralas
+ 236 => 209, // Shadowfang Keep
+ 4769 => 4742, // Hrothgar's Landing => Hrothgar's Landing
+ 4613 => 4395, // Dalaran City => Dalaran
+ 4522 => 210, // Icecrown Citadell => Icecrown
+ 3896 => 3703, // Aldor Rise => Shattrath City
+ 3696 => 3522, // The Barrier Hills => Blade's Edge Mountains
+ 2839 => 2597, // Alterac Valley
+ 19 => 1977, // Zul'Gurub
+ 4445 => 4273, // Ulduar
+ 2300 => 1941, // Caverns of Time
+ 3545 => 3535, // Hellfire Citadel
+ 2562 => 3457, // Karazhan
+ 3840 => 3959, // Black Temple
+ 1717 => 491, // Razorfen Kraul
+ 978 => 1176, // Zul'Farrak
+ 133 => 721, // Gnomeregan
+ 3607 => 3905, // Serpentshrine Cavern
+ 3845 => 3842, // Tempest Keep
+ 1517 => 1337, // Uldaman
+ 1417 => 1477 // Sunken Temple
+ );
+
public static $questSubCats = array(
- 1 => [132], // Dun Morogh: Coldridge Valley
- 12 => [9], // Elwynn Forest: Northshire Valley
- 141 => [188], // Teldrassil: Shadowglen
- 3524 => [3526], // Azuremyst Isle: Ammen Vale
+ 1 => [132], // Dun Morogh: Coldridge Valley
+ 12 => [9], // Elwynn Forest: Northshire Valley
+ 141 => [188], // Teldrassil: Shadowglen
+ 3524 => [3526], // Azuremyst Isle: Ammen Vale
- 14 => [363], // Durotar: Valley of Trials
- 85 => [154], // Tirisfal Glades: Deathknell
- 215 => [220], // Mulgore: Red Cloud Mesa
- 3430 => [3431], // Eversong Woods: Sunstrider Isle
+ 14 => [363], // Durotar: Valley of Trials
+ 85 => [154], // Tirisfal Glades: Deathknell
+ 215 => [220], // Mulgore: Red Cloud Mesa
+ 3430 => [3431], // Eversong Woods: Sunstrider Isle
- 46 => [25], // Burning Steppes: Blackrock Mountain
- 361 => [1769], // Felwood: Timbermaw Hold
- 3519 => [3679], // Terokkar: Skettis
- 3535 => [3562, 3713, 3714], // Hellfire Citadel
- 3905 => [3715, 3716, 3717], // Coilfang Reservoir
- 3688 => [3789, 3790, 3792], // Auchindoun
- 1941 => [2366, 2367, 4100], // Caverns of Time
- 3842 => [3847, 3848, 3849], // Tempest Keep
- 4522 => [4809, 4813, 4820] // Icecrown Citadel
+ 46 => [25], // Burning Steppes: Blackrock Mountain
+ 361 => [1769], // Felwood: Timbermaw Hold
+ 3519 => [3679], // Terokkar: Skettis
+ 3535 => [3562, 3713, 3714], // Hellfire Citadel
+ 3905 => [3715, 3716, 3717], // Coilfang Reservoir
+ 3688 => [3789, 3790, 3792], // Auchindoun
+ 1941 => [2366, 2367, 4100], // Caverns of Time
+ 3842 => [3847, 3848, 3849], // Tempest Keep
+ 4522 => [4809, 4813, 4820] // Icecrown Citadel
);
/* why:
@@ -383,6 +423,10 @@ class Game
return [];
}
+ // Black Temple and Sunwell floor offset bullshit
+ if ($points && in_array($mapId, [564, 580]))
+ $points[0]['floor']++;
+
return $points;
}
diff --git a/localization/locale_dede.php b/localization/locale_dede.php
index 47bd1815..42934dd4 100644
--- a/localization/locale_dede.php
+++ b/localization/locale_dede.php
@@ -1021,7 +1021,8 @@ $lang = array(
'tameable' => "Zähmbar (%s)",
'waypoint' => "Wegpunkt",
'wait' => "Wartezeit",
- 'respawnIn' => "Wiedereinstieg in",
+ 'respawnIn' => "Respawn in: %s",
+ 'despawnAfter' => "Gespawnt durch Script
Despawn nach: %s",
'rank' => [0 => "Normal", 1 => "Elite", 4 => "Rar", 2 => "Rar Elite", 3 => "Boss"],
'textRanges' => [null, "an das Gebiet gesendet", "an die Zone gesendet", "an die Map gesendet", "an die Welt gesendet"],
'textTypes' => [null, "schreit", "sagt", "flüstert"],
@@ -1309,7 +1310,7 @@ $lang = array(
2 => array( "Dungeons",
206 => "Burg Utgarde", 209 => "Burg Schattenfang", 491 => "Kral der Klingenhauer", 717 => "Das Verlies", 718 => "Die Höhlen des Wehklagens",
719 => "Tiefschwarze Grotte", 721 => "Gnomeregan", 722 => "Hügel der Klingenhauer", 796 => "Das Scharlachrote Kloster", 1176 => "Zul'Farrak",
- 1196 => "Turm Utgarde", 1337 => "Uldaman", 1417 => "Versunkener Tempel", 1581 => "Die Todesminen", 1583 => "Schwarzfelsspitze",
+ 1196 => "Turm Utgarde", 1337 => "Uldaman", 1477 => "Versunkener Tempel", 1581 => "Die Todesminen", 1583 => "Schwarzfelsspitze",
1584 => "Schwarzfelstiefen", 1941 => "Höhlen der Zeit", 2017 => "Stratholme", 2057 => "Scholomance", 2100 => "Maraudon",
2366 => "Der schwarze Morast", 2367 => "Vorgebirge des Alten Hügellands",2437 => "Der Flammenschlund", 2557 => "Düsterbruch", 3535 => "Höllenfeuerzitadelle",
3562 => "Höllenfeuerbollwerk", 3688 => "Auchindoun", 3713 => "Der Blutkessel", 3714 => "Die zerschmetterten Hallen", 3715 => "Die Dampfkammer",
diff --git a/localization/locale_enus.php b/localization/locale_enus.php
index efa03f65..45891634 100644
--- a/localization/locale_enus.php
+++ b/localization/locale_enus.php
@@ -1021,7 +1021,8 @@ $lang = array(
'tameable' => "Tameable (%s)",
'waypoint' => "Waypoint",
'wait' => "Wait",
- 'respawnIn' => "Respawn in",
+ 'respawnIn' => "Respawn in: %s",
+ 'despawnAfter' => "Spawned by Script
Despawn after: %s",
'rank' => [0 => "Normal", 1 => "Elite", 4 => "Rare", 2 => "Rare Elite", 3 => "Boss"],
'textRanges' => [null, "sent to area", "sent to zone", "sent to map", "sent to world"],
'textTypes' => [null, "yells", "says", "whispers"],
@@ -1309,7 +1310,7 @@ $lang = array(
2 => array( "Dungeons",
206 => "Utgarde Keep", 209 => "Shadowfang Keep", 491 => "Razorfen Kraul", 717 => "The Stockade", 718 => "Wailing Caverns",
719 => "Blackfathom Deeps", 721 => "Gnomeregan", 722 => "Razorfen Downs", 796 => "Scarlet Monastery", 1176 => "Zul'Farrak",
- 1196 => "Utgarde Pinnacle", 1337 => "Uldaman", 1417 => "Sunken Temple", 1581 => "The Deadmines", 1583 => "Blackrock Spire",
+ 1196 => "Utgarde Pinnacle", 1337 => "Uldaman", 1477 => "Sunken Temple", 1581 => "The Deadmines", 1583 => "Blackrock Spire",
1584 => "Blackrock Depths", 1941 => "Caverns of Time", 2017 => "Stratholme", 2057 => "Scholomance", 2100 => "Maraudon",
2366 => "The Black Morass", 2367 => "Old Hillsbrad Foothills", 2437 => "Ragefire Chasm", 2557 => "Dire Maul", 3535 => "Hellfire Citadel",
3562 => "Hellfire Ramparts", 3688 => "Auchindoun", 3713 => "The Blood Furnace", 3714 => "The Shattered Halls", 3715 => "The Steamvault",
diff --git a/localization/locale_eses.php b/localization/locale_eses.php
index 19170270..0898e460 100644
--- a/localization/locale_eses.php
+++ b/localization/locale_eses.php
@@ -1021,7 +1021,8 @@ $lang = array(
'tameable' => "Domesticable (%s)",
'waypoint' => "punto de recorrido",
'wait' => "Tiempo de espera",
- 'respawnIn' => "Reingreso en",
+ 'respawnIn' => "Reingreso en: %s",
+ 'despawnAfter' => "[Spawned by Script
Despawn after]: %s",
'rank' => [0 => "Normal", 1 => "Élite", 4 => "Raro", 2 => "Élite raro", 3 => "Jefe"],
'textRanges' => [null, "Mandar al área", "Mandar a zona", "Mandar al mapa", "Mandar al mundo"],
'textTypes' => [null, "grita", "dice", "susurra"],
@@ -1309,7 +1310,7 @@ $lang = array(
2 => array( "Mazmorras",
206 => "Fortaleza de Utgarde", 209 => "Castillo de Colmillo Oscuro", 491 => "Horado Rajacieno", 717 => "Las Mazmorras", 718 => "Cuevas de los Lamentos",
719 => "Cavernas de Brazanegra", 721 => "Gnomeregan", 722 => "Zahúrda Rajacieno", 796 => "Monasterio Escarlata", 1176 => "Zul'Farrak",
- 1196 => "Pináculo de Utgarde", 1337 => "Uldaman", 1417 => "Templo Sumergido", 1581 => "Las Minas de la Muerte", 1583 => "Cumbre de Roca Negra",
+ 1196 => "Pináculo de Utgarde", 1337 => "Uldaman", 1477 => "Templo Sumergido", 1581 => "Las Minas de la Muerte", 1583 => "Cumbre de Roca Negra",
1584 => "Profundidades de Roca Negra", 1941 => "Cavernas del Tiempo", 2017 => "Stratholme", 2057 => "Scholomance", 2100 => "Maraudon",
2366 => "La Ciénaga Negra", 2367 => "Antiguas Laderas de Trabalomas",2437 => "Sima Ígnea", 2557 => "La Masacre", 3535 => "Ciudadela del Fuego Infernal",
3562 => "Murallas del Fuego Infernal", 3688 => "Auchindoun", 3713 => "El Horno de Sangre", 3714 => "Las Salas Arrasadas", 3715 => "La Cámara de Vapor",
diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php
index a3bb991d..ddd0870d 100644
--- a/localization/locale_frfr.php
+++ b/localization/locale_frfr.php
@@ -1021,7 +1021,8 @@ $lang = array(
'tameable' => "Domptable (%s)",
'waypoint' => "Point de route",
'wait' => "Période d'attente",
- 'respawnIn' => "Rentrée en",
+ 'respawnIn' => "Rentrée en : %s",
+ 'despawnAfter' => "[Spawned by Script
Despawn after] : %s",
'rank' => [0 => "Standard", 1 => "Élite", 4 => "Rare", 2 => "Élite rare", 3 =>"Boss"],
'textRanges' => [null, "[sent to area]", "[sent to zone]", "[sent to map]", "[sent to world]"],
'textTypes' => [null, "crie", "dit", "chuchote"],
@@ -1309,7 +1310,7 @@ $lang = array(
2 => array( "Donjons",
206 => "Donjon d'Utgarde", 209 => "Donjon d'Ombrecroc", 491 => "Kraal de Tranchebauge", 717 => "La Prison", 718 => "Cavernes des lamentations",
719 => "Profondeurs de Brassenoire", 721 => "Gnomeregan", 722 => "Souilles de Tranchebauge", 796 => "Monastère écarlate", 1176 => "Zul'Farrak",
- 1196 => "Cime d'Utgarde", 1337 => "Uldaman", 1417 => "Temple englouti", 1581 => "Les Mortemines", 1583 => "Pic Rochenoire",
+ 1196 => "Cime d'Utgarde", 1337 => "Uldaman", 1477 => "Temple englouti", 1581 => "Les Mortemines", 1583 => "Pic Rochenoire",
1584 => "Profondeurs de Rochenoire", 1941 => "Grottes du temps", 2017 => "Stratholme", 2057 => "Scholomance", 2100 => "Maraudon",
2366 => "Le Noir Marécage", 2367 => "Contreforts de Hautebrande d'antan",2437 => "Gouffre de Ragefeu", 2557 => "Hache-tripes", 3535 => "Citadelle des Flammes infernale",
3562 => "Remparts des Flammes infernales",3688 => "Auchindoun", 3713 => "La Fournaise du sang", 3714 => "Les Salles brisées", 3715 => "Le Caveau de la vapeur",
diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php
index 995459ba..ee751244 100644
--- a/localization/locale_ruru.php
+++ b/localization/locale_ruru.php
@@ -1021,7 +1021,8 @@ $lang = array(
'tameable' => "Можно приручить (%s)",
'waypoint' => "Путевой точки",
'wait' => "Период ожидания",
- 'respawnIn' => "Reentry in", /// ..lol?
+ 'respawnIn' => "Reentry in: %s",
+ 'despawnAfter' => "[Spawned by Script
Despawn after]: %s",
'rank' => [0 => "Обычный", 1 => "Элитный", 4 => "Редкий", 2 => "Редкий элитный", 3 =>"Босс"],
'textRanges' => [null, "[sent to area]", "[sent to zone]", "[sent to map]", "[sent to world]"],
'textTypes' => [null, "кричит", "говорит", "шепчет"],
@@ -1309,7 +1310,7 @@ $lang = array(
2 => array( "Подземелья",
206 => "Крепость Утгард", 209 => "Крепость Темного Клыка", 491 => "Лабиринты Иглошкурых", 717 => "Тюрьма", 718 => "Пещеры Стенаний",
719 => "Непроглядная Пучина", 721 => "Гномреган", 722 => "Курганы Иглошкурых", 796 => "Монастырь Алого ордена", 1176 => "Зул'Фаррак",
- 1196 => "Вершина Утгард", 1337 => "Ульдаман", 1417 => "Затонувший храм", 1581 => "Мертвые копи", 1583 => "Пик Черной горы",
+ 1196 => "Вершина Утгард", 1337 => "Ульдаман", 1477 => "Затонувший храм", 1581 => "Мертвые копи", 1583 => "Пик Черной горы",
1584 => "Глубины Черной горы", 1941 => "Пещеры Времени", 2017 => "Стратхольм", 2057 => "Некроситет", 2100 => "Мародон",
2366 => "Черные топи", 2367 => "Старые предгорья Хилсбрада", 2437 => "Огненная пропасть", 2557 => "Забытый Город", 3535 => "Цитадель Адского Пламени",
3562 => "Бастионы Адского Пламени", 3688 => "Аукиндон", 3713 => "Кузня Крови", 3714 => "Разрушенные залы", 3715 => "Паровое подземелье",
diff --git a/localization/locale_zhcn.php b/localization/locale_zhcn.php
index d9a1ef8e..22c54e5f 100644
--- a/localization/locale_zhcn.php
+++ b/localization/locale_zhcn.php
@@ -1020,7 +1020,8 @@ $lang = array(
'tameable' => "可驯服的(%s)",
'waypoint' => "路径点",
'wait' => "等待",
- 'respawnIn' => "重生",
+ 'respawnIn' => "重生:%s",
+ 'despawnAfter' => "[Spawned by Script
Despawn after]:%s",
'rank' => [0 => "普通", 1 => "稀有", 4 => "精英", 2 => "稀有精英", 3 => "首领"],
'textRanges' => [null, "发送到地区", "发送到区域", "发送到地图", "发送到世界"],
'textTypes' => [null, "喊道", "说", "悄悄地说"],
@@ -1308,7 +1309,7 @@ $lang = array(
2 => array( "地下城",
206 => "乌特加德城堡", 209 => "影牙城堡", 491 => "剃刀沼泽", 717 => "监狱", 718 => "哀嚎洞穴",
719 => "黑暗深渊", 721 => "诺莫瑞根", 722 => "剃刀高地", 796 => "血色修道院", 1176 => "祖尔法拉克",
- 1196 => "乌特加德之巅", 1337 => "奥达曼", 1417 => "沉没的神庙", 1581 => "死亡矿井", 1583 => "黑石塔",
+ 1196 => "乌特加德之巅", 1337 => "奥达曼", 1477 => "沉没的神庙", 1581 => "死亡矿井", 1583 => "黑石塔",
1584 => "黑石深渊", 1941 => "时光之穴", 2017 => "斯坦索姆", 2057 => "通灵学院", 2100 => "玛拉顿",
2366 => "黑色沼泽", 2367 => "旧希尔斯布莱德丘陵", 2437 => "怒焰裂谷", 2557 => "厄运之槌", 3535 => "地狱火堡垒",
3562 => "地狱火城墙", 3688 => "奥金顿", 3713 => "鲜血熔炉", 3714 => "破碎大厅", 3715 => "蒸汽地窟",
diff --git a/setup/db_structure.sql b/setup/db_structure.sql
index 80732611..7070d44e 100644
--- a/setup/db_structure.sql
+++ b/setup/db_structure.sql
@@ -2580,7 +2580,7 @@ CREATE TABLE `aowow_spawns` (
`guid` int NOT NULL COMMENT '< 0: vehicle accessory',
`type` smallint unsigned NOT NULL,
`typeId` int unsigned NOT NULL,
- `respawn` int unsigned NOT NULL COMMENT 'in seconds',
+ `respawn` int NOT NULL DEFAULT 0 COMMENT 'in seconds',
`spawnMask` tinyint unsigned NOT NULL DEFAULT 0,
`phaseMask` smallint unsigned NOT NULL DEFAULT 0,
`areaId` smallint unsigned NOT NULL DEFAULT 0,
@@ -3224,7 +3224,7 @@ UNLOCK TABLES;
LOCK TABLES `aowow_dbversion` WRITE;
/*!40000 ALTER TABLE `aowow_dbversion` DISABLE KEYS */;
-INSERT INTO `aowow_dbversion` VALUES (1716305877,0,NULL,NULL);
+INSERT INTO `aowow_dbversion` VALUES (1716918679,0,NULL,NULL);
/*!40000 ALTER TABLE `aowow_dbversion` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3284,7 +3284,7 @@ UNLOCK TABLES;
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',1,'roles','10','Warrior - 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',9,'roles','4','Warlock - rngDPS'),('classes',11,'roles','15','Druid - mleDPS + Tank + Heal + 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'),('currencies',1,'description_loc0','Text that describes this item can be found here.',''),('currencies',1,'description_loc2','Un texte qui décrit l\'objet figure ici.',''),('currencies',1,'description_loc3','Text, der den Gegenstand beschreibt, wird hier angezeigt.',''),('currencies',1,'description_loc6','Aquí puede encontrarse el texto que describe a este objeto.',''),('currencies',1,'description_loc8','Здесь находится описание предмета.',''),('currencies',61,'description_loc0','Tiffany Cartier\'s shop in Dalaran will gladly accept these tokens for unique jewelcrafting recipes.',''),('currencies',61,'description_loc2','La boutique de Tiffany Kartier, à Dalaran, accepte avec joie ces marques contre des dessins de joaillerie uniques.',''),('currencies',61,'description_loc3','Tiffany Cartiers Geschäft in Dalaran wird diese Symbole im Tausch gegen einzigartige Juweliersrezepte dankend annehmen.',''),('currencies',61,'description_loc4','达拉然的蒂凡妮·卡蒂亚会欣然接受这些代币,并用稀有的珠宝加工图鉴来交换。',''),('currencies',61,'description_loc6','La tienda de Tiffany Cartier en Dalaran cambiará gustosamente estos talismanes por recetas de joyería.',''),('currencies',61,'description_loc8','В магазине Тиффани Картье, что в Даларане, вам с радостью обменяют эти знаки на уникальные ювелирные эскизы.',''),('currencies',81,'description_loc0','Visit special cooking vendors in Dalaran and the capital cities to to purchase unusual cooking recipes, spices, and even a fine hat!',''),('currencies',81,'description_loc2','Rendez visite aux marchands de fournitures de cuisine à Dalaran et dans les autres capitales pour acheter des recettes de cuisine spéciales, des épices, et même une superbe toque !',''),('currencies',81,'description_loc3','Besucht besondere Kochhändler in Dalaran und den Hauptstädten, um ungewöhnliche Kochrezepte, Gewürze und sogar eine großartige Mütze zu kaufen!',''),('currencies',81,'description_loc4','造访达拉然以及各个主城的特殊烹饪供应商,购买罕见的烹饪配方、香料以及大厨的帽子!',''),('currencies',81,'description_loc6','Visita a los vendedores de cocina especiales de Dalaran y de las capitales para comprar recetas de cocina poco frecuentes, especias, ¡e incluso un bonito gorro!',''),('currencies',81,'description_loc8','Посетите торговцев кулинарными товарами в Даларане и других столицах, чтобы приобрести особые кулинарные рецепты, специи и даже головной убор!',''),('currencies',241,'description_loc0','Awarded for valiant acts in the Crusader\'s Coliseum.',''),('currencies',241,'description_loc2','Obtenu en récompense d’actes de bravoure au colisée des Croisés.',''),('currencies',241,'description_loc3','Werden für hehre Taten im Kolosseum der Kreuzfahrer verliehen.',''),('currencies',241,'description_loc4','表彰你在十字军演武场中展示的武勇。',''),('currencies',241,'description_loc6','Otorgado por las hazañas en el Coliseo de los Cruzados.',''),('currencies',241,'description_loc8','За храбрость, проявленную на турнирах Колизея Авангарда.',''),('currencies',181,'description_loc0','If you can read this, you\'ve found a bug. REPORT IT!',''),('currencies',181,'description_loc2','Si vous lisez ceci, c\'est un bug. SIGNALEZ-LE !',''),('currencies',181,'description_loc3','Wenn Ihr das hier lesen könnt, habt Ihr einen Bug gefunden. MELDET IHN!',''),('currencies',181,'description_loc6','Si puedes leer esto, has encontrado un error. ¡Informa!',''),('currencies',181,'description_loc8','Если вы видите это сообщение, это значит, что вы обнаружили ошибку. Сообщите о ней!',''),('currencies',103,'description_loc0','Used to purchase powerful PvP armor and weapons.',''),('currencies',103,'description_loc2','Utilisés pour acheter des armures et armes de JcJ puissantes.',''),('currencies',103,'description_loc3','Können für den Erwerb von mächtigen PVP-Waffen und -Rüstungen verwendet werden.',''),('currencies',103,'description_loc4','竞技场点数是通过在竞技场战斗中获胜而赢得的。你可以消费这些点数来购买强大的奖励品!',''),('currencies',103,'description_loc6','Se utilizan para comprar armas y armaduras de JcJ poderosas.',''),('currencies',103,'description_loc8','За эти очки можно покупать мощное оружие и доспехи для PvP-сражений.',''),('currencies',104,'description_loc0','Used to purchase less-powerful PvP armor and weapons.',''),('currencies',104,'description_loc2','Utilisés pour acheter des armures et armes de JcJ moyennement puissantes.',''),('currencies',104,'description_loc3','Können für den Erwerb von weniger mächtigen PVP-Waffen und -Rüstungen verwendet werden.',''),('currencies',104,'description_loc4','荣誉是通过在PvP战斗中 杀死敌对阵营的成员获得的。你可以使用荣誉点数购买特殊的物品。',''),('currencies',104,'description_loc6','Se utilizan para comprar armas y armaduras de JcJ menos poderosas.',''),('currencies',104,'description_loc8','За эти очки можно покупать не очень мощное оружие и доспехи для PvP-сражений.',''),('currencies',221,'description_loc0','Used to purchase less-powerful armor and weapons.',''),('currencies',221,'description_loc2','Utilisés pour acheter des armures et armes de JcJ moyennement puissantes.',''),('currencies',221,'description_loc3','Können für den Erwerb von weniger mächtigen Waffen und Rüstungen verwendet werden.',''),('currencies',221,'description_loc6','Se utilizan para comprar armas y armaduras menos poderosas.',''),('currencies',221,'description_loc8','За эти очки можно покупать не очень мощное оружие и доспехи.',''),('currencies',341,'description_loc0','Used to purchase powerful PvE armor and weapons.',''),('currencies',341,'description_loc2','Utilisés pour acheter des armures et armes de JcE puissantes.',''),('currencies',341,'description_loc3','Können für den Erwerb von mächtigen PVE-Waffen und -Rüstungen verwendet werden.',''),('currencies',341,'description_loc6','Se utilizan para comprar armas y armaduras de JcE poderosas.',''),('currencies',341,'description_loc8','За эти очки можно покупать мощное оружие и доспехи для PvE-сражений.',''),('spell',9787,'reqSpellId',9787,'Weaponsmith - requires itself'),('spell',9788,'reqSpellId',9788,'Armorsmith - requires itself'),('spell',10656,'reqSpellId',10656,'Dragonscale Leatherworking - requires itself'),('spell',10658,'reqSpellId',10658,'Elemental Leatherworking - requires itself'),('spell',10660,'reqSpellId',10660,'Tribal Leatherworking - requires itself'),('spell',17039,'reqSpellId',17039,'Master Swordsmith - requires itself'),('spell',17040,'reqSpellId',17040,'Master Hammersmith - requires itself'),('spell',17041,'reqSpellId',17041,'Master Axesmith - requires itself'),('spell',20219,'reqSpellId',20219,'Gnomish Engineer - requires itself'),('spell',20222,'reqSpellId',20222,'Goblin Engineer - requires itself'),('spell',26797,'reqSpellId',26797,'Spellfire Tailoring - requires itself'),('spell',26798,'reqSpellId',26798,'Mooncloth Tailoring - requires itself'),('spell',26801,'reqSpellId',26801,'Shadoweave Tailoring - requires itself'),('spell',379,'cuFLags',1073741824,'Earth Shield - hide'),('spell',17567,'cuFLags',1073741824,'Summon Blood Parrot - hide'),('spell',19483,'cuFLags',1073741824,'Immolation - hide'),('spell',20154,'cuFLags',1073741824,'Seal of Righteousness - hide'),('spell',21169,'cuFLags',1073741824,'Reincarnation - hide'),('spell',22845,'cuFLags',1073741824,'Frenzied Regeneration - hide'),('spell',23885,'cuFLags',1073741824,'Bloodthirst - hide'),('spell',27813,'cuFLags',1073741824,'Blessed Recovery - hide'),('spell',27817,'cuFLags',1073741824,'Blessed Recovery - hide'),('spell',27818,'cuFLags',1073741824,'Blessed Recovery - hide'),('spell',29442,'cuFLags',1073741824,'Magic Absorption - hide'),('spell',29841,'cuFLags',1073741824,'Second Wind - hide'),('spell',29842,'cuFLags',1073741824,'Second Wind - hide'),('spell',29886,'cuFLags',1073741824,'Create Soulwell - hide'),('spell',30708,'cuFLags',1073741824,'Totem of Wrath - hide'),('spell',30874,'cuFLags',1073741824,'Gift of the Water Spirit - hide'),('spell',31643,'cuFLags',1073741824,'Blazing Speed - hide'),('spell',32841,'cuFLags',1073741824,'Mass Resurrection - hide'),('spell',34919,'cuFLags',1073741824,'Vampiric Touch - hide'),('spell',44450,'cuFLags',1073741824,'Burnout - hide'),('spell',47633,'cuFLags',1073741824,'Death Coil - hide'),('spell',48954,'cuFLags',1073741824,'Swift Zhevra - hide'),('spell',49575,'cuFLags',1073741824,'Death Grip - hide'),('spell',50536,'cuFLags',1073741824,'Unholy Blight - hide'),('spell',52374,'cuFLags',1073741824,'Blood Strike - hide'),('spell',56816,'cuFLags',1073741824,'Rune Strike - hide'),('spell',58427,'cuFLags',1073741824,'Overkill - hide'),('spell',58889,'cuFLags',1073741824,'Create Soulwell - hide'),('spell',64380,'cuFLags',1073741824,'Shattering Throw - hide'),('spell',66122,'cuFLags',1073741824,'Magic Rooster - hide'),('spell',66123,'cuFLags',1073741824,'Magic Rooster - hide'),('spell',66124,'cuFLags',1073741824,'Magic Rooster - hide'),('spell',66175,'cuFLags',1073741824,'Macabre Marionette - hide'),('spell',54910,'cuFLags',1073741824,'Glyph of the Red Lynx - hide unused glyph'),('spell',57231,'cuFLags',1073741824,'Death Knight Glyph 25 - hide unused glyph'),('spell',58166,'cuFLags',1073741824,'Glyph of the Forest Lynx - hide unused glyph'),('spell',58239,'cuFLags',1073741824,'Glyph of the Penguin - hide unused glyph'),('spell',58240,'cuFLags',1073741824,'Glyph of the Bear Cub - hide unused glyph'),('spell',58261,'cuFLags',1073741824,'Glyph of the Arctic Wolf - hide unused glyph'),('spell',58262,'cuFLags',1073741824,'Glyph of the Black Wolf - hide unused glyph'),('spell',60460,'cuFLags',1073741824,'Glyph of Raise Dead - hide unused glyph'),('spell',54910,'skillLine1',0,'Glyph of the Red Lynx - hide unused glyph'),('spell',57231,'skillLine1',0,'Death Knight Glyph 25 - hide unused glyph'),('spell',58166,'skillLine1',0,'Glyph of the Forest Lynx - hide unused glyph'),('spell',58239,'skillLine1',0,'Glyph of the Penguin - hide unused glyph'),('spell',58240,'skillLine1',0,'Glyph of the Bear Cub - hide unused glyph'),('spell',58261,'skillLine1',0,'Glyph of the Arctic Wolf - hide unused glyph'),('spell',58262,'skillLine1',0,'Glyph of the Black Wolf - hide unused glyph'),('spell',60460,'skillLine1',0,'Glyph of Raise Dead - hide unused glyph'),('spell',54910,'iconIdAlt',0,'Glyph of the Red Lynx - hide unused glyph'),('spell',57231,'iconIdAlt',0,'Death Knight Glyph 25 - hide unused glyph'),('spell',58166,'iconIdAlt',0,'Glyph of the Forest Lynx - hide unused glyph'),('spell',58239,'iconIdAlt',0,'Glyph of the Penguin - hide unused glyph'),('spell',58240,'iconIdAlt',0,'Glyph of the Bear Cub - hide unused glyph'),('spell',58261,'iconIdAlt',0,'Glyph of the Arctic Wolf - hide unused glyph'),('spell',58262,'iconIdAlt',0,'Glyph of the Black Wolf - hide unused glyph'),('spell',60460,'iconIdAlt',0,'Glyph of Raise Dead - hide unused glyph');
+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,'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',1417,'cuFlags','1073741824','Sunken Temple [extra area on map 109] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',22,'cuFlags','1073741824','Programmer Isle - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',151,'cuFlags','1073741824','Designer Island - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',3948,'cuFlags','1073741824','Brian and Pat Test - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',4019,'cuFlags','1073741824','Development Land - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',3605,'cuFlags','1073741824','Hyjal Past [extra area on map 560] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),('zones',3535,'cuFlags','1073741824','Hellfire Citadel [extra area on map 540] - 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',1,'roles','10','Warrior - 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',9,'roles','4','Warlock - rngDPS'),('classes',11,'roles','15','Druid - mleDPS + Tank + Heal + 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'),('currencies',1,'description_loc0','Text that describes this item can be found here.',''),('currencies',1,'description_loc2','Un texte qui décrit l\'objet figure ici.',''),('currencies',1,'description_loc3','Text, der den Gegenstand beschreibt, wird hier angezeigt.',''),('currencies',1,'description_loc6','Aquí puede encontrarse el texto que describe a este objeto.',''),('currencies',1,'description_loc8','Здесь находится описание предмета.',''),('currencies',61,'description_loc0','Tiffany Cartier\'s shop in Dalaran will gladly accept these tokens for unique jewelcrafting recipes.',''),('currencies',61,'description_loc2','La boutique de Tiffany Kartier, à Dalaran, accepte avec joie ces marques contre des dessins de joaillerie uniques.',''),('currencies',61,'description_loc3','Tiffany Cartiers Geschäft in Dalaran wird diese Symbole im Tausch gegen einzigartige Juweliersrezepte dankend annehmen.',''),('currencies',61,'description_loc4','达拉然的蒂凡妮·卡蒂亚会欣然接受这些代币,并用稀有的珠宝加工图鉴来交换。',''),('currencies',61,'description_loc6','La tienda de Tiffany Cartier en Dalaran cambiará gustosamente estos talismanes por recetas de joyería.',''),('currencies',61,'description_loc8','В магазине Тиффани Картье, что в Даларане, вам с радостью обменяют эти знаки на уникальные ювелирные эскизы.',''),('currencies',81,'description_loc0','Visit special cooking vendors in Dalaran and the capital cities to to purchase unusual cooking recipes, spices, and even a fine hat!',''),('currencies',81,'description_loc2','Rendez visite aux marchands de fournitures de cuisine à Dalaran et dans les autres capitales pour acheter des recettes de cuisine spéciales, des épices, et même une superbe toque !',''),('currencies',81,'description_loc3','Besucht besondere Kochhändler in Dalaran und den Hauptstädten, um ungewöhnliche Kochrezepte, Gewürze und sogar eine großartige Mütze zu kaufen!',''),('currencies',81,'description_loc4','造访达拉然以及各个主城的特殊烹饪供应商,购买罕见的烹饪配方、香料以及大厨的帽子!',''),('currencies',81,'description_loc6','Visita a los vendedores de cocina especiales de Dalaran y de las capitales para comprar recetas de cocina poco frecuentes, especias, ¡e incluso un bonito gorro!',''),('currencies',81,'description_loc8','Посетите торговцев кулинарными товарами в Даларане и других столицах, чтобы приобрести особые кулинарные рецепты, специи и даже головной убор!',''),('currencies',241,'description_loc0','Awarded for valiant acts in the Crusader\'s Coliseum.',''),('currencies',241,'description_loc2','Obtenu en récompense d’actes de bravoure au colisée des Croisés.',''),('currencies',241,'description_loc3','Werden für hehre Taten im Kolosseum der Kreuzfahrer verliehen.',''),('currencies',241,'description_loc4','表彰你在十字军演武场中展示的武勇。',''),('currencies',241,'description_loc6','Otorgado por las hazañas en el Coliseo de los Cruzados.',''),('currencies',241,'description_loc8','За храбрость, проявленную на турнирах Колизея Авангарда.',''),('currencies',181,'description_loc0','If you can read this, you\'ve found a bug. REPORT IT!',''),('currencies',181,'description_loc2','Si vous lisez ceci, c\'est un bug. SIGNALEZ-LE !',''),('currencies',181,'description_loc3','Wenn Ihr das hier lesen könnt, habt Ihr einen Bug gefunden. MELDET IHN!',''),('currencies',181,'description_loc6','Si puedes leer esto, has encontrado un error. ¡Informa!',''),('currencies',181,'description_loc8','Если вы видите это сообщение, это значит, что вы обнаружили ошибку. Сообщите о ней!',''),('currencies',103,'description_loc0','Used to purchase powerful PvP armor and weapons.',''),('currencies',103,'description_loc2','Utilisés pour acheter des armures et armes de JcJ puissantes.',''),('currencies',103,'description_loc3','Können für den Erwerb von mächtigen PVP-Waffen und -Rüstungen verwendet werden.',''),('currencies',103,'description_loc4','竞技场点数是通过在竞技场战斗中获胜而赢得的。你可以消费这些点数来购买强大的奖励品!',''),('currencies',103,'description_loc6','Se utilizan para comprar armas y armaduras de JcJ poderosas.',''),('currencies',103,'description_loc8','За эти очки можно покупать мощное оружие и доспехи для PvP-сражений.',''),('currencies',104,'description_loc0','Used to purchase less-powerful PvP armor and weapons.',''),('currencies',104,'description_loc2','Utilisés pour acheter des armures et armes de JcJ moyennement puissantes.',''),('currencies',104,'description_loc3','Können für den Erwerb von weniger mächtigen PVP-Waffen und -Rüstungen verwendet werden.',''),('currencies',104,'description_loc4','荣誉是通过在PvP战斗中 杀死敌对阵营的成员获得的。你可以使用荣誉点数购买特殊的物品。',''),('currencies',104,'description_loc6','Se utilizan para comprar armas y armaduras de JcJ menos poderosas.',''),('currencies',104,'description_loc8','За эти очки можно покупать не очень мощное оружие и доспехи для PvP-сражений.',''),('currencies',221,'description_loc0','Used to purchase less-powerful armor and weapons.',''),('currencies',221,'description_loc2','Utilisés pour acheter des armures et armes de JcJ moyennement puissantes.',''),('currencies',221,'description_loc3','Können für den Erwerb von weniger mächtigen Waffen und Rüstungen verwendet werden.',''),('currencies',221,'description_loc6','Se utilizan para comprar armas y armaduras menos poderosas.',''),('currencies',221,'description_loc8','За эти очки можно покупать не очень мощное оружие и доспехи.',''),('currencies',341,'description_loc0','Used to purchase powerful PvE armor and weapons.',''),('currencies',341,'description_loc2','Utilisés pour acheter des armures et armes de JcE puissantes.',''),('currencies',341,'description_loc3','Können für den Erwerb von mächtigen PVE-Waffen und -Rüstungen verwendet werden.',''),('currencies',341,'description_loc6','Se utilizan para comprar armas y armaduras de JcE poderosas.',''),('currencies',341,'description_loc8','За эти очки можно покупать мощное оружие и доспехи для PvE-сражений.',''),('spell',9787,'reqSpellId',9787,'Weaponsmith - requires itself'),('spell',9788,'reqSpellId',9788,'Armorsmith - requires itself'),('spell',10656,'reqSpellId',10656,'Dragonscale Leatherworking - requires itself'),('spell',10658,'reqSpellId',10658,'Elemental Leatherworking - requires itself'),('spell',10660,'reqSpellId',10660,'Tribal Leatherworking - requires itself'),('spell',17039,'reqSpellId',17039,'Master Swordsmith - requires itself'),('spell',17040,'reqSpellId',17040,'Master Hammersmith - requires itself'),('spell',17041,'reqSpellId',17041,'Master Axesmith - requires itself'),('spell',20219,'reqSpellId',20219,'Gnomish Engineer - requires itself'),('spell',20222,'reqSpellId',20222,'Goblin Engineer - requires itself'),('spell',26797,'reqSpellId',26797,'Spellfire Tailoring - requires itself'),('spell',26798,'reqSpellId',26798,'Mooncloth Tailoring - requires itself'),('spell',26801,'reqSpellId',26801,'Shadoweave Tailoring - requires itself'),('spell',379,'cuFLags',1073741824,'Earth Shield - hide'),('spell',17567,'cuFLags',1073741824,'Summon Blood Parrot - hide'),('spell',19483,'cuFLags',1073741824,'Immolation - hide'),('spell',20154,'cuFLags',1073741824,'Seal of Righteousness - hide'),('spell',21169,'cuFLags',1073741824,'Reincarnation - hide'),('spell',22845,'cuFLags',1073741824,'Frenzied Regeneration - hide'),('spell',23885,'cuFLags',1073741824,'Bloodthirst - hide'),('spell',27813,'cuFLags',1073741824,'Blessed Recovery - hide'),('spell',27817,'cuFLags',1073741824,'Blessed Recovery - hide'),('spell',27818,'cuFLags',1073741824,'Blessed Recovery - hide'),('spell',29442,'cuFLags',1073741824,'Magic Absorption - hide'),('spell',29841,'cuFLags',1073741824,'Second Wind - hide'),('spell',29842,'cuFLags',1073741824,'Second Wind - hide'),('spell',29886,'cuFLags',1073741824,'Create Soulwell - hide'),('spell',30708,'cuFLags',1073741824,'Totem of Wrath - hide'),('spell',30874,'cuFLags',1073741824,'Gift of the Water Spirit - hide'),('spell',31643,'cuFLags',1073741824,'Blazing Speed - hide'),('spell',32841,'cuFLags',1073741824,'Mass Resurrection - hide'),('spell',34919,'cuFLags',1073741824,'Vampiric Touch - hide'),('spell',44450,'cuFLags',1073741824,'Burnout - hide'),('spell',47633,'cuFLags',1073741824,'Death Coil - hide'),('spell',48954,'cuFLags',1073741824,'Swift Zhevra - hide'),('spell',49575,'cuFLags',1073741824,'Death Grip - hide'),('spell',50536,'cuFLags',1073741824,'Unholy Blight - hide'),('spell',52374,'cuFLags',1073741824,'Blood Strike - hide'),('spell',56816,'cuFLags',1073741824,'Rune Strike - hide'),('spell',58427,'cuFLags',1073741824,'Overkill - hide'),('spell',58889,'cuFLags',1073741824,'Create Soulwell - hide'),('spell',64380,'cuFLags',1073741824,'Shattering Throw - hide'),('spell',66122,'cuFLags',1073741824,'Magic Rooster - hide'),('spell',66123,'cuFLags',1073741824,'Magic Rooster - hide'),('spell',66124,'cuFLags',1073741824,'Magic Rooster - hide'),('spell',66175,'cuFLags',1073741824,'Macabre Marionette - hide'),('spell',54910,'cuFLags',1073741824,'Glyph of the Red Lynx - hide unused glyph'),('spell',57231,'cuFLags',1073741824,'Death Knight Glyph 25 - hide unused glyph'),('spell',58166,'cuFLags',1073741824,'Glyph of the Forest Lynx - hide unused glyph'),('spell',58239,'cuFLags',1073741824,'Glyph of the Penguin - hide unused glyph'),('spell',58240,'cuFLags',1073741824,'Glyph of the Bear Cub - hide unused glyph'),('spell',58261,'cuFLags',1073741824,'Glyph of the Arctic Wolf - hide unused glyph'),('spell',58262,'cuFLags',1073741824,'Glyph of the Black Wolf - hide unused glyph'),('spell',60460,'cuFLags',1073741824,'Glyph of Raise Dead - hide unused glyph'),('spell',54910,'skillLine1',0,'Glyph of the Red Lynx - hide unused glyph'),('spell',57231,'skillLine1',0,'Death Knight Glyph 25 - hide unused glyph'),('spell',58166,'skillLine1',0,'Glyph of the Forest Lynx - hide unused glyph'),('spell',58239,'skillLine1',0,'Glyph of the Penguin - hide unused glyph'),('spell',58240,'skillLine1',0,'Glyph of the Bear Cub - hide unused glyph'),('spell',58261,'skillLine1',0,'Glyph of the Arctic Wolf - hide unused glyph'),('spell',58262,'skillLine1',0,'Glyph of the Black Wolf - hide unused glyph'),('spell',60460,'skillLine1',0,'Glyph of Raise Dead - hide unused glyph'),('spell',54910,'iconIdAlt',0,'Glyph of the Red Lynx - hide unused glyph'),('spell',57231,'iconIdAlt',0,'Death Knight Glyph 25 - hide unused glyph'),('spell',58166,'iconIdAlt',0,'Glyph of the Forest Lynx - hide unused glyph'),('spell',58239,'iconIdAlt',0,'Glyph of the Penguin - hide unused glyph'),('spell',58240,'iconIdAlt',0,'Glyph of the Bear Cub - hide unused glyph'),('spell',58261,'iconIdAlt',0,'Glyph of the Arctic Wolf - hide unused glyph'),('spell',58262,'iconIdAlt',0,'Glyph of the Black Wolf - hide unused glyph'),('spell',60460,'iconIdAlt',0,'Glyph of Raise Dead - hide unused glyph'),('quests',9572,'zoneOrSort','3562','Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),('quests',9575,'zoneOrSort','3562','Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),('quests',11354,'zoneOrSort','3562','Wanted: Nazan\'s Riding Crop - category Hellfire Citadel -> Hellfire Ramparts'),('quests',9589,'zoneOrSort','3713','The Blood is Life - category Hellfire Citadel -> Blood Furnace'),('quests',9590,'zoneOrSort','3713','The Blood is Life - category Hellfire Citadel -> Blood Furnace'),('quests',9607,'zoneOrSort','3713','Heart of Rage - category Hellfire Citadel -> Blood Furnace'),('quests',9608,'zoneOrSort','3713','Heart of Rage - category Hellfire Citadel -> Blood Furnace'),('quests',11362,'zoneOrSort','3713','Wanted: Keli\'dan\'s Feathered Stave - category Hellfire Citadel -> Blood Furnace'),('quests',9492,'zoneOrSort','3714','Turning the Tide - category Hellfire Citadel -> Shattered Halls'),('quests',9493,'zoneOrSort','3714','Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9494,'zoneOrSort','3714','Fel Embers - category Hellfire Citadel -> Shattered Halls'),('quests',9495,'zoneOrSort','3714','The Will of the Warchief - category Hellfire Citadel -> Shattered Halls'),('quests',9496,'zoneOrSort','3714','Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9497,'zoneOrSort','3714','Emblem of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9524,'zoneOrSort','3714','Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),('quests',9525,'zoneOrSort','3714','Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),('quests',11363,'zoneOrSort','3714','Wanted: Bladefist\'s Seal - category Hellfire Citadel -> Shattered Halls'),('quests',11364,'zoneOrSort','3714','Wanted: Shattered Hand Centurions - category Hellfire Citadel -> Shattered Halls');
/*!40000 ALTER TABLE `aowow_setup_custom_data` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
diff --git a/setup/tools/clisetup/setup.func.php b/setup/tools/clisetup/setup.func.php
index 850a24ff..20c21908 100644
--- a/setup/tools/clisetup/setup.func.php
+++ b/setup/tools/clisetup/setup.func.php
@@ -71,8 +71,8 @@ function setup() : void
['SqlGen::generate', 'titles', null, null, null],
['SqlGen::generate', 'items', null, null, null],
['FileGen::generate', 'complexImg', null, null, null], // alphamaps generated here are requires for spawns/waypoints
- ['SqlGen::generate', 'spawns', null, null, null], // this one ^_^
['SqlGen::generate', 'zones', null, null, null],
+ ['SqlGen::generate', 'spawns', null, null, null], // this one ^_^
['SqlGen::generate', 'itemset', null, null, null],
['SqlGen::generate', 'item_stats', null, null, null],
['SqlGen::generate', 'source', null, null, null],
diff --git a/setup/tools/clisetup/update.func.php b/setup/tools/clisetup/update.func.php
index e94829bf..05acbb60 100644
--- a/setup/tools/clisetup/update.func.php
+++ b/setup/tools/clisetup/update.func.php
@@ -45,7 +45,7 @@ function update(?array &$sql = [], ?array &$build = []) : void
$pi = pathinfo($file);
[$fDate, $fPart] = explode('_', $pi['filename']);
- $fData = intVal($fDate);
+ $fDate = intVal($fDate);
if ($date && $fDate < $date)
continue;
diff --git a/setup/tools/sqlgen/quests.func.php b/setup/tools/sqlgen/quests.func.php
index 7afb5ed1..e0e02ac5 100644
--- a/setup/tools/sqlgen/quests.func.php
+++ b/setup/tools/sqlgen/quests.func.php
@@ -9,6 +9,8 @@ if (!CLI)
SqlGen::register(new class extends SetupScript
{
+ use TrCustomData; // import custom data from DB
+
protected $command = 'quests';
protected $tblDependencyTC = ['quest_template', 'quest_template_addon', 'quest_template_locale', 'game_event', 'game_event_seasonal_questrelation', 'disables'];
@@ -193,46 +195,7 @@ SqlGen::register(new class extends SetupScript
for ($i = 1; $i < 6; $i++)
DB::Aowow()->query($repQuery, $i, $i, $i, $i, $ids ?: DBSIMPLE_SKIP);
- // zoneorsort for quests need updating
- // partially points non-instanced area with identic name for instance quests
- $subcats = array(
- -221 => 440, // Treasure Map => Tanaris
- -284 => 0, // Special => Misc (some quests get shuffled into seasonal)
- 151 => 0, // Designer Island => Misc
- 22 => 0, // Programmer Isle
- 35 => 33, // Booty Bay => Stranglethorn Vale
- 131 => 132, // Kharanos => Coldridge Valley
- 24 => 9, // Northshire Abbey => Northshire Valley
- 279 => 36, // Dalaran Crater => Alterac Mountains
- 4342 => 4298, // Acherus: The Ebon Hold => The Scarlet Enclave
- 2079 => 15, // Alcaz Island => Dustwallow Marsh
- 1939 => 440, // Abyssal Sands => Tanaris
- 393 => 363, // Darkspeer Strand => Valley of Trials
- 702 => 141, // Rut'theran Village => Teldrassil
- 221 => 220, // Camp Narache => Red Cloud Mesa
- 1116 => 357, // Feathermoon Stronghold => Feralas
- 236 => 209, // Shadowfang Keep
- 4769 => 4742, // Hrothgar's Landing => Hrothgar's Landing
- 4613 => 4395, // Dalaran City => Dalaran
- 4522 => 210, // Icecrown Citadell => Icecrown
- 3896 => 3703, // Aldor Rise => Shattrath City
- 3696 => 3522, // The Barrier Hills => Blade's Edge Mountains
- 2839 => 2597, // Alterac Valley
- 19 => 1977, // Zul'Gurub
- 4445 => 4273, // Ulduar
- 2300 => 1941, // Caverns of Time
- 3545 => 3535, // Hellfire Citadel
- 2562 => 3457, // Karazhan
- 3840 => 3959, // Black Temple
- 1717 => 491, // Razorfen Kraul
- 978 => 1176, // Zul'Farrak
- 133 => 721, // Gnomeregan
- 3607 => 3905, // Serpentshrine Cavern
- 3845 => 3842, // Tempest Keep
- 1517 => 1337 // Uldaman
- );
-
- foreach ($subcats as $child => $parent)
+ foreach (Game::$questSortFix as $child => $parent)
DB::Aowow()->query('UPDATE ?_quests SET zoneOrSort = ?d WHERE zoneOrSortBak = ?d', $parent, $child);
// move quests liked to holidays into appropirate quests-sorts. create dummy sorts as needed
diff --git a/setup/tools/sqlgen/source.func.php b/setup/tools/sqlgen/source.func.php
index ecc60002..b819f182 100644
--- a/setup/tools/sqlgen/source.func.php
+++ b/setup/tools/sqlgen/source.func.php
@@ -453,9 +453,9 @@ SqlGen::register(new class extends SetupScript
$q['zone'] = 0; // todo: do not use questSort for zoneId, but .. questender? (starter can be item)
if ($_ = $this->taughtSpell($q))
- $this->pushBuffer(Type::SPELL, $_, SRC_QUEST, $q['side'], $q['qty'] > 1 ? 0 : Type::QUEST, $q['quest'], $areaParent[$q['zone']] ?? $q['zone']);
+ $this->pushBuffer(Type::SPELL, $_, SRC_QUEST, $q['side'], $q['qty'] > 1 ? 0 : Type::QUEST, $q['quest'], $areaParent[$q['zone']] ?? Game::$questSortFix[$q['zone']] ?? $q['zone']);
- $this->pushBuffer(Type::ITEM, $iId, SRC_QUEST, $q['side'], $q['qty'] > 1 ? 0 : Type::QUEST, $q['quest'], $areaParent[$q['zone']] ?? $q['zone']);
+ $this->pushBuffer(Type::ITEM, $iId, SRC_QUEST, $q['side'], $q['qty'] > 1 ? 0 : Type::QUEST, $q['quest'], $areaParent[$q['zone']] ?? Game::$questSortFix[$q['zone']] ?? $q['zone']);
}
$mailLoot = DB::World()->select(
@@ -480,10 +480,10 @@ SqlGen::register(new class extends SetupScript
foreach ($this->refLoot[-$roi] as $iId => $r)
{
if ($_ = $this->taughtSpell($r))
- $this->pushBuffer(Type::SPELL, $_, SRC_QUEST, $l['side'], $l['qty'] > 1 ? 0 : Type::QUEST, $l['entry'], $areaParent[$l['zone']] ?? $l['zone']);
+ $this->pushBuffer(Type::SPELL, $_, SRC_QUEST, $l['side'], $l['qty'] > 1 ? 0 : Type::QUEST, $l['entry'], $areaParent[$l['zone']] ?? Game::$questSortFix[$l['zone']] ?? $l['zone']);
$itemOT[] = $iId;
- $this->pushBuffer(Type::ITEM, $iId, SRC_QUEST, $l['side'], $l['qty'] > 1 ? 0 : Type::QUEST, $l['entry'], $areaParent[$l['zone']] ?? $l['zone']);
+ $this->pushBuffer(Type::ITEM, $iId, SRC_QUEST, $l['side'], $l['qty'] > 1 ? 0 : Type::QUEST, $l['entry'], $areaParent[$l['zone']] ?? Game::$questSortFix[$l['zone']] ?? $l['zone']);
}
continue;
@@ -1011,7 +1011,7 @@ SqlGen::register(new class extends SetupScript
foreach ($qSpells as $sId => $spell)
for ($i = 1; $i <= 3; $i++)
if ($spell['effect'.$i.'Id'] == SPELL_EFFECT_LEARN_SPELL)
- $this->pushBuffer(Type::SPELL, $spell['effect'.$i.'TriggerSpell'], SRC_QUEST, $quests[$sId]['side'], $quests[$sId]['qty'] > 1 ? 0 : Type::QUEST, $quests[$sId]['id'], $areaParent[$quests[$sId]['zone']] ?? $quests[$sId]['zone']);
+ $this->pushBuffer(Type::SPELL, $spell['effect'.$i.'TriggerSpell'], SRC_QUEST, $quests[$sId]['side'], $quests[$sId]['qty'] > 1 ? 0 : Type::QUEST, $quests[$sId]['id'], $areaParent[$quests[$sId]['zone']] ?? Game::$questSortFix[$quests[$sId]['zone']] ?? $quests[$sId]['zone']);
}
private function spellTrainer() : void
@@ -1134,7 +1134,7 @@ SqlGen::register(new class extends SetupScript
$areaParent = DB::Aowow()->selectCol('SELECT id AS ARRAY_KEY, parentArea FROM ?_zones WHERE id IN (?a) AND parentArea > 0', array_filter(array_column($quests, 'zone')));
foreach ($quests as $titleId => $q)
- $this->pushBuffer(Type::TITLE, $titleId, SRC_QUEST, $q['side'], $q['qty'] > 1 ? 0 : Type::QUEST, $q['id'], $areaParent[$q['zone']] ?? $q['zone']);
+ $this->pushBuffer(Type::TITLE, $titleId, SRC_QUEST, $q['side'], $q['qty'] > 1 ? 0 : Type::QUEST, $q['id'], $areaParent[$q['zone']] ?? Game::$questSortFix[$q['zone']] ?? $q['zone']);
}
private function titleAchievement() : void
diff --git a/setup/tools/sqlgen/spawns.func.php b/setup/tools/sqlgen/spawns.func.php
index ac704d1e..66c12832 100644
--- a/setup/tools/sqlgen/spawns.func.php
+++ b/setup/tools/sqlgen/spawns.func.php
@@ -21,7 +21,7 @@ SqlGen::register(new class extends SetupScript
'FROM creature c LEFT JOIN creature_addon ca ON ca.guid = c.guid',
'creature spawns', Type::NPC],
- 2 => ['SELECT c.guid, 2 AS "type", c.id AS typeId, ABS(c.spawntimesecs) AS respawn, c.phaseMask, c.zoneId AS areaId, c.map, 0 as pathId, c.position_y AS `posX`, c.position_x AS `posY` ' .
+ 2 => ['SELECT c.guid, 2 AS "type", c.id AS typeId, c.spawntimesecs AS respawn, c.phaseMask, c.zoneId AS areaId, c.map, 0 as pathId, c.position_y AS `posX`, c.position_x AS `posY` ' .
'FROM gameobject c',
'gameobject spawns', Type::OBJECT],
@@ -133,7 +133,8 @@ SqlGen::register(new class extends SetupScript
// cannot be placed, but we know the instanced map and can thus at least assign a zone
if (!$points && !in_array($spawn['map'], [0, 1, 530, 571]) && $idx < 5)
{
- $area = DB::Aowow()->selectCell('SELECT id FROM dbc_areatable WHERE mapId = ?d AND areaTable = 0', $spawn['map']);
+ // use server calculated areaId if possible
+ $area = $area ?: DB::Aowow()->selectCell('SELECT id FROM aowow_zones WHERE mapId = ?d AND parentArea = 0 AND (cuFlags & ?d) = 0', $spawn['map'], CUSTOM_EXCLUDE_FOR_LISTVIEW);
if (!$area)
{
CLI::write('tried to default GUID '.$spawn['guid'].' to instanced area by mapId, but returned empty [M:'.$spawn['map'].']', CLI::LOG_WARN);
@@ -149,13 +150,7 @@ SqlGen::register(new class extends SetupScript
continue;
}
else // if areaId is set, area was determined by TC .. we're fine .. mostly
- {
- // Black Temple and Sunwell floor offset bullshit
- if (in_array($spawn['map'], [564, 580]))
- $points[0]['floor']++;
-
$final = $area ? $points[0] : Game::checkCoords($points);
- }
if ($idx < 5)
{
diff --git a/setup/updates/1716918678_01.sql b/setup/updates/1716918678_01.sql
new file mode 100644
index 00000000..8ffa2635
--- /dev/null
+++ b/setup/updates/1716918678_01.sql
@@ -0,0 +1,44 @@
+-- undo sunken temple data
+DELETE FROM aowow_setup_custom_data WHERE `command` = 'zones' AND `entry` IN (1477, 1417);
+-- undo icc unused subzone linking (still has EXCLUDE_FOR_LISTVIEW set)
+DELETE FROM aowow_setup_custom_data WHERE `command` = 'zones' AND `field` = 'parentAreaId' AND `value` = 4812;
+-- undo Hellfire Citadel recategorization
+DELETE FROM aowow_setup_custom_data WHERE `command` = 'quests' AND `field` = 'zoneOrSort' AND `entry` IN (9572, 9575, 11354, 9589, 9590, 9607, 9608, 11362, 9492, 9493, 9494, 9495, 9496, 9497, 9524, 9525, 11363, 11364);
+INSERT INTO aowow_setup_custom_data VALUES
+ ('zones', 1417, 'cuFlags', 1073741824, 'Sunken Temple [extra area on map 109] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ ('zones', 22, 'cuFlags', 1073741824, 'Programmer Isle - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ ('zones', 151, 'cuFlags', 1073741824, 'Designer Island - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ ('zones', 3948, 'cuFlags', 1073741824, 'Brian and Pat Test - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ ('zones', 4019, 'cuFlags', 1073741824, 'Development Land - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ ('zones', 3605, 'cuFlags', 1073741824, 'Hyjal Past [extra area on map 560] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ ('zones', 3535, 'cuFlags', 1073741824, 'Hellfire Citadel [extra area on map 540] - set: CUSTOM_EXCLUDE_FOR_LISTVIEW'),
+ -- move quests from generic Hellfire Citadel to...
+ -- ...Hellfire Ramparts [3562]
+ ('quests', 9572, 'zoneOrSort', 3562, 'Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),
+ ('quests', 9575, 'zoneOrSort', 3562, 'Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),
+ ('quests', 11354, 'zoneOrSort', 3562, "Wanted: Nazan's Riding Crop - category Hellfire Citadel -> Hellfire Ramparts"),
+ -- ...The Blood Furnace [3713]
+ ('quests', 9589, 'zoneOrSort', 3713, 'The Blood is Life - category Hellfire Citadel -> Blood Furnace'),
+ ('quests', 9590, 'zoneOrSort', 3713, 'The Blood is Life - category Hellfire Citadel -> Blood Furnace'),
+ ('quests', 9607, 'zoneOrSort', 3713, 'Heart of Rage - category Hellfire Citadel -> Blood Furnace'),
+ ('quests', 9608, 'zoneOrSort', 3713, 'Heart of Rage - category Hellfire Citadel -> Blood Furnace'),
+ ('quests', 11362, 'zoneOrSort', 3713, "Wanted: Keli'dan's Feathered Stave - category Hellfire Citadel -> Blood Furnace"),
+ -- ...The Shattered Halls [3714]
+ ('quests', 9492, 'zoneOrSort', 3714, 'Turning the Tide - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9493, 'zoneOrSort', 3714, 'Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9494, 'zoneOrSort', 3714, 'Fel Embers - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9495, 'zoneOrSort', 3714, 'The Will of the Warchief - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9496, 'zoneOrSort', 3714, 'Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9497, 'zoneOrSort', 3714, 'Emblem of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9524, 'zoneOrSort', 3714, 'Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 9525, 'zoneOrSort', 3714, 'Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),
+ ('quests', 11363, 'zoneOrSort', 3714, "Wanted: Bladefist's Seal - category Hellfire Citadel -> Shattered Halls"),
+ ('quests', 11364, 'zoneOrSort', 3714, 'Wanted: Shattered Hand Centurions - category Hellfire Citadel -> Shattered Halls');
+
+-- implement SpawnedByDefault
+ALTER TABLE aowow_spawns
+ MODIFY COLUMN `respawn` int signed NOT NULL DEFAULT 0;
+
+-- rebuild spawns
+UPDATE aowow_dbversion
+ SET `sql` = CONCAT(IFNULL(`sql`, ''), ' spawns quests');
diff --git a/static/js/locale_dede.js b/static/js/locale_dede.js
index e5475106..9ab0aaa7 100644
--- a/static/js/locale_dede.js
+++ b/static/js/locale_dede.js
@@ -427,7 +427,7 @@ var mn_quests = [
[1176, "Zul'Farrak"],
[1196, "Turm Utgarde"],
[1337, "Uldaman"],
- [1417, "Versunkener Tempel"],
+ [1477, "Versunkener Tempel"],
[1581, "Die Todesminen"],
[1583, "Schwarzfelsspitze"],
[1584, "Schwarzfelstiefen"],
@@ -1593,7 +1593,7 @@ var g_quest_sorts = {
1196: 'Turm Utgarde',
1337: 'Uldaman',
1377: 'Silithus',
- 1417: 'Versunkener Tempel',
+ 1477: 'Versunkener Tempel',
1497: 'Unterstadt',
1517: 'Uldaman',
1519: 'Sturmwind',
diff --git a/static/js/locale_enus.js b/static/js/locale_enus.js
index 8b91867b..ef2d4a8d 100644
--- a/static/js/locale_enus.js
+++ b/static/js/locale_enus.js
@@ -427,7 +427,7 @@ var mn_quests = [
[1176, "Zul'Farrak"],
[1196, "Utgarde Pinnacle"],
[1337, "Uldaman"],
- [1417, "Sunken Temple"],
+ [1477, "Sunken Temple"],
[1581, "The Deadmines"],
[1583, "Blackrock Spire"],
[1584, "Blackrock Depths"],
@@ -1640,7 +1640,7 @@ var g_quest_sorts = {
1196: 'Utgarde Pinnacle',
1337: 'Uldaman',
1377: 'Silithus',
- 1417: 'Sunken Temple',
+ 1477: 'Sunken Temple',
1497: 'Undercity',
1517: 'Uldaman',
1519: 'Stormwind City',
diff --git a/static/js/locale_eses.js b/static/js/locale_eses.js
index c7ff255e..582140d6 100644
--- a/static/js/locale_eses.js
+++ b/static/js/locale_eses.js
@@ -427,7 +427,7 @@ var mn_quests = [
[1176, "Zul'Farrak"],
[1196, "Pináculo de Utgarde"],
[1337, "Uldaman"],
- [1417, "Templo Sumergido"],
+ [1477, "Templo Sumergido"],
[1581, "Las Minas de la Muerte"],
[1583, "Cumbre de Roca Negra"],
[1584, "Profundidades de Roca Negra"],
@@ -1593,7 +1593,7 @@ var g_quest_sorts = {
1196: 'Pináculo de Utgarde',
1337: 'Uldaman',
1377: 'Silithus',
- 1417: 'Templo Sumergido',
+ 1477: 'Templo Sumergido',
1497: 'Entrañas',
1517: 'Uldaman',
1519: 'Ciudad de Ventormenta',
diff --git a/static/js/locale_frfr.js b/static/js/locale_frfr.js
index 1b1ce962..fdc29fed 100644
--- a/static/js/locale_frfr.js
+++ b/static/js/locale_frfr.js
@@ -427,7 +427,7 @@ var mn_quests = [
[1176, "Zul'Farrak"],
[1196, "Cime d'Utgarde"],
[1337, "Uldaman"],
- [1417, "Temple englouti"],
+ [1477, "Temple englouti"],
[1581, "Les Mortemines"],
[1583, "Pic Rochenoire"],
[1584, "Profondeurs de Rochenoire"],
@@ -1593,7 +1593,7 @@ var g_quest_sorts = {
1196: 'Cime d\'Utgarde',
1337: 'Uldaman',
1377: 'Silithus',
- 1417: 'Temple englouti',
+ 1477: 'Temple englouti',
1497: 'Fossoyeuse',
1517: 'Uldaman',
1519: 'Hurlevent',
diff --git a/static/js/locale_ruru.js b/static/js/locale_ruru.js
index e0c7e4cd..cdf325d7 100644
--- a/static/js/locale_ruru.js
+++ b/static/js/locale_ruru.js
@@ -427,7 +427,7 @@ var mn_quests = [
[1176, "Зул'Фаррак"],
[1196, "Вершина Утгард"],
[1337, "Ульдаман"],
- [1417, "Затонувший храм"],
+ [1477, "Затонувший храм"],
[1581, "Мертвые копи"],
[1583, "Пик Черной горы"],
[1584, "Глубины Черной горы"],
@@ -1593,7 +1593,7 @@ var g_quest_sorts = {
1196: 'Вершина Утгард',
1337: 'Ульдаман',
1377: 'Силитус',
- 1417: 'Затонувший храм',
+ 1477: 'Затонувший храм',
1497: 'Подгород',
1517: 'Ульдаман',
1519: 'Штормград',
diff --git a/static/js/locale_zhcn.js b/static/js/locale_zhcn.js
index c4f5bb5a..71724fd6 100644
--- a/static/js/locale_zhcn.js
+++ b/static/js/locale_zhcn.js
@@ -427,7 +427,7 @@ var mn_quests = [
[1176,"祖尔法拉克"], // Zul'Farrak,
[1196,"乌特加德之巅"], // Utgarde Pinnacle,
[1337,"奥达曼"], // Uldaman,
- [1417,"沉没的神庙"], // Sunken Temple
+ [1477,"沉没的神庙"], // Sunken Temple
[1581,"死亡矿井"], // The Deadmines,
[1583,"黑石塔"], // Blackrock Spire,
[1584,"黑石深渊"], // Blackrock Depths,
@@ -1639,7 +1639,7 @@ var g_quest_sorts = {
1196: '乌特加德之巅',
1337: '奥达曼',
1377: '希利苏斯',
- 1417: '沉没的神庙',
+ 1477: '沉没的神庙',
1497: '幽暗城',
1517: '奥达曼',
1519: '暴风城',