diff --git a/README.md b/README.md index 4578348a..e182aced 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Build Status -![fuck it ship it](http://forthebadge.com/images/badges/fuck-it-ship-it.svg) +![fuck it ship it](https://forthebadge.com/badges/fuck-it-ship-it.svg) ## Introduction @@ -51,7 +51,7 @@ audio processing may require [lame](https://sourceforge.net/projects/lame/files/ `git clone git@github.com:Sarjuuk/MPQExtractor.git MPQExtractor` #### 2. Prepare the database -Ensure that the account you are going to use has **full** access on the database AoWoW is going to occupy and ideally only **read** access on the world database you are going to reference. +Ensure that the account you are going to use has **full** access on the database AoWoW is going to occupy and ideally only **read** access on the world and optionally auth and characters databases you are going to reference. Import files 01 - 03 from `setup/sql/` in order into the AoWoW database `mysql --default-character-set=utf8 -p {your-db-here} < setup/sql/01-db_structure.sql`, etc. **Optional**: If you are using MySQL ≥ 8.4.0 and want to support fulltext search for locale zhCN, additionally import `setup/sql/04-db_optional_mysql_only.sql`. Enables this in settings after AoWoW has been set up. @@ -104,7 +104,7 @@ When you've created your admin account you are done. ## Troubleshooting Q: The Page appears white, without any styles. -A: The static content is not being displayed. You are either using SSL and AoWoW is unable to detect it or STATIC_HOST is not defined properly. Either way this can be fixed via config `php aowow --siteconfig` +A: The static content is not being displayed. You are either using SSL and AoWoW is unable to detect it or STATIC_HOST is not defined properly. Either way this can be fixed via config `php aowow --configure` Q: Fatal error: Can't inherit abstract function \ (previously declared abstract in \) in \ A: You are using multiple cache optimization modules for php that are in conflict with each other. (Zend OPcache, XCache, ..) Disable all but one. @@ -141,4 +141,4 @@ A: A search is only conducted against the currently used locale. You may have on Said website with the red smiling rocket, for providing this beautiful website! Please do not regard this project as blatant rip-off, rather as "We do really liked your presentation, but since time and content progresses, you are sadly no longer supplying the data we need". -![uses badges](http://forthebadge.com/images/badges/uses-badges.svg) +![uses badges](https://forthebadge.com/badges/uses-badges.svg) diff --git a/endpoints/filter/filter.php b/endpoints/filter/filter.php index ff7835f4..9830385c 100644 --- a/endpoints/filter/filter.php +++ b/endpoints/filter/filter.php @@ -19,14 +19,28 @@ class FilterBaseResponse extends TextResponse parent::__construct($rawParam); - $catg = null; + $catg = $page = null; if (strstr($rawParam, '=')) - [$this->page, $catg] = explode('=', $rawParam); + [$page, $catg] = explode('=', $rawParam); else - $this->page = $rawParam; + $page = $rawParam; + + if (!$page || preg_match('/[^a-z\-]/i', $page)) + return; + + $this->page = strtolower($page); if ($catg !== null) - $this->catg = explode('.', $catg); + { + // category is a string for profiler (region.realm) but not passed through here + foreach (explode('.', $catg) as $c) + { + if (preg_match('/\D/', $c)) + break; + + $this->catg[] = intval($c); + } + } $opts = ['parentCats' => $this->catg]; @@ -38,14 +52,22 @@ class FilterBaseResponse extends TextResponse }; // yes, the whole _POST! .. should the input fields be exposed and static so they can be evaluated via BaseResponse::initRequestData() ? - $this->filter = Type::newFilter($fileStr, $_POST, $opts); + if (!$this->filter = Type::newFilter($fileStr, $_POST, $opts)) + trigger_error('Filter::__construct - tried to init filter from bogus GET data', E_USER_WARNING); } protected function generate() : void { + // could not build filter from $this->page > go to front page + if (!$this->filter) + { + $this->redirectTo = '.'; + return; + } + $url = '?'.$this->page; - $this->filter?->mergeCat($this->catg); + $this->filter->mergeCat($this->catg); if ($this->catg) $url .= '='.implode('.', $this->catg); @@ -53,7 +75,7 @@ class FilterBaseResponse extends TextResponse if ($x = $this->filter?->buildGETParam()) $url .= '&filter='.$x; - if ($this->filter?->error) + if ($this->filter->error) $_SESSION['error']['fi'] = $this->filter::class; // do get request diff --git a/endpoints/quest/quest.php b/endpoints/quest/quest.php index 815e5777..b3d1d74e 100644 --- a/endpoints/quest/quest.php +++ b/endpoints/quest/quest.php @@ -634,7 +634,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache // PSA: 'redundant' data is on purpose (e.g. creature required for kill, also dropps item required to collect) // external events - $endTextWrapper = '%s'; + $endText = $this->subject->parseText('end', false); if ($_specialFlags & QUEST_FLAG_SPECIAL_EXT_COMPLETE) { // areatrigger @@ -643,7 +643,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache if ($atSpawns = DB::AoWoW()->selectAssoc('SELECT `typeId` AS ARRAY_KEY, `posX`, `posY`, `floor`, `areaId` FROM ::spawns WHERE `type` = %i AND `typeId` IN %in', Type::AREATRIGGER, $atir)) { if (User::isInGroup(U_GROUP_STAFF)) - $endTextWrapper = '%s'; + $endText = ''.($endText ?: Lang::areatrigger('unnamed', [$atir[0]])).''; foreach ($atSpawns as $atId => $atsp) { @@ -651,7 +651,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache 'type' => User::isInGroup(U_GROUP_STAFF) ? Type::AREATRIGGER : -1, 'id' => $atId, 'point' => 'requirement', - 'name' => $this->subject->parseText('end', false), + 'name' => $this->subject->parseText('end', false) ?: Lang::areatrigger('unnamed', [$atir[0]]), 'coord' => [$atsp['posX'], $atsp['posY']], 'coords' => [[$atsp['posX'], $atsp['posY']]], 'objective' => $objectiveIdx++ @@ -674,7 +674,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache // complete-spell else if ($endSpell = new SpellList(array(DB::OR, [DB::AND, ['effect1Id', SPELL_EFFECT_QUEST_COMPLETE], ['effect1MiscValue', $this->typeId]], [DB::AND, ['effect2Id', SPELL_EFFECT_QUEST_COMPLETE], ['effect2MiscValue', $this->typeId]], [DB::AND, ['effect3Id', SPELL_EFFECT_QUEST_COMPLETE], ['effect3MiscValue', $this->typeId]]))) if (!$endSpell->error) - $endTextWrapper = '%s'; + $endText = ''.($endText ?: $endSpell->getField('name', true)).''; } // ..adding creature kill requirements @@ -898,7 +898,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache $this->offerReward = $this->subject->parseText('offerReward', false); $this->requestItems = $this->subject->parseText('requestItems', false); $this->completed = $this->subject->parseText('completed', false); - $this->end = sprintf($endTextWrapper, $this->subject->parseText('end', false)); + $this->end = $endText; $this->suggestedPl = $this->subject->getField('suggestedPlayers'); $this->unavailable = $_flags & QUEST_FLAG_UNAVAILABLE || $this->subject->getField('cuFlags') & CUSTOM_EXCLUDE_FOR_LISTVIEW; $this->redButtons = array( @@ -1216,7 +1216,10 @@ class QuestBaseResponse extends TemplateResponse implements ICache $gains[5] = $this->subject->getField('rewardArenaPoints'); // honor points - $gains[4] = [$this->subject->getField('rewardHonorPoints'), $side]; + if ($_ = $this->subject->getField('rewardHonorPoints')) + $gains[4] = [$_, $side]; + else + $gains[4] = null; // talent points $gains[3] = $this->subject->getField('rewardTalents'); diff --git a/endpoints/spell/spell.php b/endpoints/spell/spell.php index fb5247b1..3819ddc6 100644 --- a/endpoints/spell/spell.php +++ b/endpoints/spell/spell.php @@ -1344,10 +1344,11 @@ class SpellBaseResponse extends TemplateResponse implements ICache s.`id` AS ARRAY_KEY, ic.`name` AS `iconString` FROM ::spell s JOIN ::icons ic ON s.`iconId` = ic.`id` - WHERE (`effect1CreateItemId` = %i AND `effect1Id` = %i)',// OR + WHERE (s.`cuFlags` & %i) = 0 AND + (`effect1CreateItemId` = %i AND `effect1Id` = %i)',// OR // (`effect2CreateItemId` = %i AND `effect2Id` = %i) OR // (`effect3CreateItemId` = %i AND `effect3Id` = %i)', - $itemId, SPELL_EFFECT_CREATE_ITEM //, $itemId, SPELL_EFFECT_CREATE_ITEM, $itemId, SPELL_EFFECT_CREATE_ITEM + CUSTOM_UNAVAILABLE, $itemId, SPELL_EFFECT_CREATE_ITEM //, $itemId, SPELL_EFFECT_CREATE_ITEM, $itemId, SPELL_EFFECT_CREATE_ITEM ); if (!$spells) diff --git a/includes/components/filter.class.php b/includes/components/filter.class.php index 13b44d32..de0339f2 100644 --- a/includes/components/filter.class.php +++ b/includes/components/filter.class.php @@ -635,7 +635,7 @@ abstract class Filter // note: a fulltext search purely from exclude tokens will return no result foreach ($fulltext as $ft) - $this->ftTokens[$field][] = ($ex ? '-' : '+') . $ft . '*'; + $this->ftTokens[$field][] = ($ex ? '-' : '+') . '(' . $ft . '* ' . Util::strrev($ft) . '*)'; } } diff --git a/includes/components/profiler.class.php b/includes/components/profiler.class.php index 9dc17fea..e3c4d452 100644 --- a/includes/components/profiler.class.php +++ b/includes/components/profiler.class.php @@ -257,7 +257,7 @@ class Profiler { self::getRealms(); - // sort depends on encountered order in `logon`.`realmlist`. Is that a problem? + // sort depends on encountered order in `auth`.`realmlist`. Is that a problem? return array_unique(array_column(self::$realms, 'region')); } diff --git a/includes/components/search.class.php b/includes/components/search.class.php index 78f52f21..5587071c 100644 --- a/includes/components/search.class.php +++ b/includes/components/search.class.php @@ -118,7 +118,7 @@ class Search // note: a fulltext search purely from exclude tokens will return no result foreach ($fulltext as $ft) - $this->fulltext[] = ($ex ? '-' : '+') . $ft . '*'; + $this->fulltext[] = ($ex ? '-' : '+') . '(' . $ft . '* ' . Util::strrev($ft) . '*)'; } else $this->invalid[] = $raw; diff --git a/includes/dbtypes/areatrigger.class.php b/includes/dbtypes/areatrigger.class.php index aa0a543e..527afb25 100644 --- a/includes/dbtypes/areatrigger.class.php +++ b/includes/dbtypes/areatrigger.class.php @@ -27,13 +27,13 @@ class AreaTriggerList extends DBTypeList foreach ($this->iterate() as $id => &$_curTpl) if (!$_curTpl['name']) - $_curTpl['name'] = 'Unnamed Areatrigger #' . $id; + $_curTpl['name'] = Lang::areatrigger('unnamed', [$id]); } public static function getName(int $id) : ?LocString { - if ($n = DB::Aowow()->SelectRow('SELECT IF(`name`, `name`, CONCAT("Unnamed Areatrigger #", `id`) AS "name_loc0" FROM %n WHERE `id` = %i', self::$dataTable, $id)) - return new LocString($n); + if ($n = DB::Aowow()->SelectRow('SELECT `name` AS "name_loc0" FROM %n WHERE `id` = %i', self::$dataTable, $id)) + return new LocString($n, callback: fn($x) => $x ?: Lang::areatrigger('unnamed', [$id])); return null; } diff --git a/includes/dbtypes/gameobject.class.php b/includes/dbtypes/gameobject.class.php index ad0fe167..7dcc92c1 100644 --- a/includes/dbtypes/gameobject.class.php +++ b/includes/dbtypes/gameobject.class.php @@ -34,8 +34,8 @@ class GameObjectList extends DBTypeList // post processing foreach ($this->iterate() as $_id => &$curTpl) { - if (!$curTpl['name_loc0']) - $curTpl['name_loc0'] = 'Unnamed Object #' . $_id; + if (!$curTpl['name_loc'.Lang::getLocale()->value]) + $curTpl['name_loc'.Lang::getLocale()->value] = Lang::gameObject('unnamed', [$_id]); // unpack miscInfo $curTpl['mStone'] = diff --git a/includes/utilities.php b/includes/utilities.php index daf48799..39e9f297 100644 --- a/includes/utilities.php +++ b/includes/utilities.php @@ -360,6 +360,15 @@ abstract class Util return mb_strtolower($str); } + public static function strrev(string $str) : string + { + $out = ''; + for ($i = 1, $len = mb_strlen($str); $i <= $len; $i++) + $out .= mb_substr($str, -$i, 1); + + return $out; + } + // doesn't handle scientific notation .. why would you input 3e3 for 3000..? public static function checkNumeric(mixed &$data, int $typeCast = NUM_ANY) : bool { diff --git a/localization/locale_dede.php b/localization/locale_dede.php index f95bffd4..1ca688b4 100644 --- a/localization/locale_dede.php +++ b/localization/locale_dede.php @@ -1143,11 +1143,13 @@ $lang = array( 'areatrigger' => array( 'notFound' => "Dieser Areatrigger existiert nicht.", 'foundIn' => "Dieser Areatrigger befindet sich in", + 'unnamed' => "Unbenannter Areatrigger #%d", 'types' => ['Unbenutzt', 'Gasthaus', 'Teleporter', 'Questziel', 'Smarter Trigger', 'Script'] ), 'gameObject' => array( 'id' => "Objekt-ID: ", 'notFound' => "Dieses Objekt existiert nicht.", + 'unnamed' => "Unbenanntes Objekt #%d", 'cat' => [0 => "Anderes", 3 => "Behälter", 6 => "Fallen", 9 => "Bücher", 25 => "Fischschwärme", -5 => "Truhen", -3 => "Kräuter", -4 => "Erzadern", -2 => "Quest", -6 => "Werkzeuge"], 'type' => [ 3 => "Behälter", 6 => "", 9 => "Buch", 25 => "", -5 => "Truhe", -3 => "Kraut", -4 => "Erzvorkommen", -2 => "Quest", -6 => ""], 'unkPosition' => "Der Standort dieses Objekts ist nicht bekannt.", diff --git a/localization/locale_enus.php b/localization/locale_enus.php index 13488289..6735239a 100644 --- a/localization/locale_enus.php +++ b/localization/locale_enus.php @@ -1143,11 +1143,13 @@ $lang = array( 'areatrigger' => array( 'notFound' => "This areatrigger doesn't exist.", 'foundIn' => "This areatrigger can be found in", + 'unnamed' => "Unnamed areatrigger #%d", 'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script'] ), 'gameObject' => array( 'id' => "Object ID: ", 'notFound' => "This object doesn't exist.", + 'unnamed' => "Unnamed object #%d", 'cat' => [0 => "Other", 3 => "Containers", 6 => "Traps", 9 => "Books", 25 => "Fishing Pools", -5 => "Chests", -3 => "Herbs", -4 => "Mineral Veins", -2 => "Quest", -6 => "Tools"], 'type' => [ 3 => "Container", 6 => "", 9 => "Book", 25 => "", -5 => "Chest", -3 => "Herb", -4 => "Mineral Vein", -2 => "Quest", -6 => ""], // used for tooltip 'unkPosition' => "The location of this object is unknown.", diff --git a/localization/locale_eses.php b/localization/locale_eses.php index 96db72fd..bae6c931 100644 --- a/localization/locale_eses.php +++ b/localization/locale_eses.php @@ -1143,11 +1143,13 @@ $lang = array( 'areatrigger' => array( 'notFound' => "Este activador de área no existe.", 'foundIn' => "Este activador de área se puede encontrar en", + 'unnamed' => "[Unnamed areatrigger] #%d", 'types' => ['Sin usar', 'Taberna', 'Teletransportador', 'Objetivo de misión', 'Activador inteligente', 'Script'] ), 'gameObject' => array( 'id' => "ID de Entidad: ", 'notFound' => "Esta entidad no existe.", + 'unnamed' => "[Unnamed object] #%d", 'cat' => [0 => "Otros", 3 => "Contenedores", 6 => "Trampas", 9 => "Libros", 25 => "Bancos de peces", -5 => "Cofres", -3 => "Hierbas", -4 => "Venas de minerales", -2 => "Misiones", -6 => "Herramientas"], 'type' => [ 3 => "Contenedore", 6 => "", 9 => "Libro", 25 => "", -5 => "Cofre", -3 => "Hierba", -4 => "Filóne de mineral", -2 => "Misión", -6 => ""], 'unkPosition' => "No se conoce la ubicación de esta entidad.", diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php index d311dea5..eef73e93 100644 --- a/localization/locale_frfr.php +++ b/localization/locale_frfr.php @@ -1143,11 +1143,13 @@ $lang = array( 'areatrigger' => array( 'notFound' => "This areatrigger doesn't exist.", 'foundIn' => "This areatrigger can be found in", + 'unnamed' => "[Unnamed areatrigger] #%d", 'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script'] ), 'gameObject' => array( 'id' => "ID Entité: ", 'notFound' => "Cette entité n'existe pas.", + 'unnamed' => "[Unnamed object] #%d", 'cat' => [0 => "Autre", 3 => "Conteneurs", 6 => "Pièges", 9 => "Livres", 25 => "Bancs de poissons", -5 => "Coffres", -3 => "Herbes", -4 => "Filons de minerai", -2 => "Quêtes", -6 => "Outils"], 'type' => [ 3 => "Conteneur", 6 => "", 9 => "Livre", 25 => "", -5 => "Coffre", -3 => "Herbe", -4 => "Filon de minerai", -2 => "Quête", -6 => ""], 'unkPosition' => "L'emplacement de cette entité est inconnu.", diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php index 71bce292..04429780 100644 --- a/localization/locale_ruru.php +++ b/localization/locale_ruru.php @@ -1143,11 +1143,13 @@ $lang = array( 'areatrigger' => array( 'notFound' => "This areatrigger doesn't exist.", 'foundIn' => "This areatrigger can be found in", + 'unnamed' => "[Unnamed areatrigger] #%d", 'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script'] ), 'gameObject' => array( 'id' => "Объект ID: ", 'notFound' => "Такой объект не существует.", + 'unnamed' => "[Unnamed object] #%d", 'cat' => [0 => "Другое", 3 => "Контейнеры", 6 => "Ловушки", 9 => "Книги", 25 => "Рыболовные лунки", -5 => "Сундуки", -3 => "Травы", -4 => "Полезные ископаемые", -2 => "Задания", -6 => "Инструменты"], 'type' => [ 3 => "Контейнер", 6 => "", 9 => "Книга", 25 => "", -5 => "Сундук", -3 => "Растение", -4 => "Полезное ископаемое", -2 => "Задание", -6 => ""], 'unkPosition' => "Местонахождение этого объекта неизвестно.", diff --git a/localization/locale_zhcn.php b/localization/locale_zhcn.php index 445d19d2..ec6a1025 100644 --- a/localization/locale_zhcn.php +++ b/localization/locale_zhcn.php @@ -1143,11 +1143,13 @@ $lang = array( 'areatrigger' => array( 'notFound' => "这个区域触发器不存在。", 'foundIn' => "这个区域触发器可以在以下地区找到:", + 'unnamed' => "[Unnamed areatrigger] #%d", 'types' => ['未使用', '酒馆', '传送门', '任务目标', 'Smart Trigger', '脚本'] ), 'gameObject' => array( 'id' => "对象ID:", 'notFound' => "这个对象不存在。", + 'unnamed' => "[Unnamed object] #%d", 'cat' => [0 => "其他", 3 => "容器", 6 => "陷阱", 9 => "书籍", 25 => "钓鱼点", -5 => "宝箱", -3 => "草药", -4 => "矿脉", -2 => "任务", -6 => "工具"], 'type' => [ 3 => "容器", 6 => "", 9 => "书籍", 25 => "", -5 => "宝箱", -3 => "草药", -4 => "矿脉", -2 => "任务", -6 => ""], 'unkPosition' => "这个对象的位置未知。", diff --git a/setup/sql/02-db_initial_data.sql b/setup/sql/02-db_initial_data.sql index 064dfdfa..fe750cf3 100644 --- a/setup/sql/02-db_initial_data.sql +++ b/setup/sql/02-db_initial_data.sql @@ -71,7 +71,7 @@ UNLOCK TABLES; LOCK TABLES `aowow_dbversion` WRITE; /*!40000 ALTER TABLE `aowow_dbversion` DISABLE KEYS */; -INSERT INTO `aowow_dbversion` VALUES (1772564119,0,NULL,NULL); +INSERT INTO `aowow_dbversion` VALUES (1774551740,0,NULL,NULL); /*!40000 ALTER TABLE `aowow_dbversion` ENABLE KEYS */; UNLOCK TABLES; @@ -153,7 +153,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',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',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'),('items',33147,'class','9','Formula: Enchant Cloak - Subtlety - Class: Recipes'),('items',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,'questSortId','3562','Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),('quests',9575,'questSortId','3562','Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),('quests',11354,'questSortId','3562','Wanted: Nazan\'s Riding Crop - category Hellfire Citadel -> Hellfire Ramparts'),('quests',9589,'questSortId','3713','The Blood is Life - category Hellfire Citadel -> Blood Furnace'),('quests',9590,'questSortId','3713','The Blood is Life - category Hellfire Citadel -> Blood Furnace'),('quests',9607,'questSortId','3713','Heart of Rage - category Hellfire Citadel -> Blood Furnace'),('quests',9608,'questSortId','3713','Heart of Rage - category Hellfire Citadel -> Blood Furnace'),('quests',11362,'questSortId','3713','Wanted: Keli\'dan\'s Feathered Stave - category Hellfire Citadel -> Blood Furnace'),('quests',9492,'questSortId','3714','Turning the Tide - category Hellfire Citadel -> Shattered Halls'),('quests',9493,'questSortId','3714','Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9494,'questSortId','3714','Fel Embers - category Hellfire Citadel -> Shattered Halls'),('quests',9495,'questSortId','3714','The Will of the Warchief - category Hellfire Citadel -> Shattered Halls'),('quests',9496,'questSortId','3714','Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9497,'questSortId','3714','Emblem of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9524,'questSortId','3714','Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),('quests',9525,'questSortId','3714','Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),('quests',11363,'questSortId','3714','Wanted: Bladefist\'s Seal - category Hellfire Citadel -> Shattered Halls'),('quests',11364,'questSortId','3714','Wanted: Shattered Hand Centurions - category Hellfire Citadel -> Shattered Halls'),('pet',30,'expansion','1','Pet - Dragonhawk: BC'),('pet',31,'expansion','1','Pet - Ravager: BC'),('pet',32,'expansion','1','Pet - Warp Stalker: BC'),('pet',33,'expansion','1','Pet - Sporebat: BC'),('pet',34,'expansion','1','Pet - Nether Ray: BC'),('pet',37,'expansion','2','Pet - Moth: WotLK'),('pet',38,'expansion','2','Pet - Chimaera: WotLK'),('pet',39,'expansion','2','Pet - Devilsaur: WotLK'),('pet',41,'expansion','2','Pet - Silithid: WotLK'),('pet',42,'expansion','2','Pet - Worm: WotLK'),('pet',43,'expansion','2','Pet - Rhino: WotLK'),('pet',44,'expansion','2','Pet - Wasp: WotLK'),('pet',45,'expansion','2','Pet - Core Hound: WotLK'),('pet',46,'expansion','2','Pet - Spirit Beast: WotLK'); +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',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',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'),('items',33147,'class','9','Formula: Enchant Cloak - Subtlety - Class: Recipes'),('items',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,'questSortId','3562','Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),('quests',9575,'questSortId','3562','Weaken the Ramparts - category Hellfire Citadel -> Hellfire Ramparts'),('quests',11354,'questSortId','3562','Wanted: Nazan\'s Riding Crop - category Hellfire Citadel -> Hellfire Ramparts'),('quests',9589,'questSortId','3713','The Blood is Life - category Hellfire Citadel -> Blood Furnace'),('quests',9590,'questSortId','3713','The Blood is Life - category Hellfire Citadel -> Blood Furnace'),('quests',9607,'questSortId','3713','Heart of Rage - category Hellfire Citadel -> Blood Furnace'),('quests',9608,'questSortId','3713','Heart of Rage - category Hellfire Citadel -> Blood Furnace'),('quests',11362,'questSortId','3713','Wanted: Keli\'dan\'s Feathered Stave - category Hellfire Citadel -> Blood Furnace'),('quests',9492,'questSortId','3714','Turning the Tide - category Hellfire Citadel -> Shattered Halls'),('quests',9493,'questSortId','3714','Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9494,'questSortId','3714','Fel Embers - category Hellfire Citadel -> Shattered Halls'),('quests',9495,'questSortId','3714','The Will of the Warchief - category Hellfire Citadel -> Shattered Halls'),('quests',9496,'questSortId','3714','Pride of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9497,'questSortId','3714','Emblem of the Fel Horde - category Hellfire Citadel -> Shattered Halls'),('quests',9524,'questSortId','3714','Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),('quests',9525,'questSortId','3714','Imprisoned in the Citadel - category Hellfire Citadel -> Shattered Halls'),('quests',11363,'questSortId','3714','Wanted: Bladefist\'s Seal - category Hellfire Citadel -> Shattered Halls'),('quests',11364,'questSortId','3714','Wanted: Shattered Hand Centurions - category Hellfire Citadel -> Shattered Halls'),('pet',30,'expansion','1','Pet - Dragonhawk: BC'),('pet',31,'expansion','1','Pet - Ravager: BC'),('pet',32,'expansion','1','Pet - Warp Stalker: BC'),('pet',33,'expansion','1','Pet - Sporebat: BC'),('pet',34,'expansion','1','Pet - Nether Ray: BC'),('pet',37,'expansion','2','Pet - Moth: WotLK'),('pet',38,'expansion','2','Pet - Chimaera: WotLK'),('pet',39,'expansion','2','Pet - Devilsaur: WotLK'),('pet',41,'expansion','2','Pet - Silithid: WotLK'),('pet',42,'expansion','2','Pet - Worm: WotLK'),('pet',43,'expansion','2','Pet - Rhino: WotLK'),('pet',44,'expansion','2','Pet - Wasp: WotLK'),('pet',45,'expansion','2','Pet - Core Hound: WotLK'),('pet',46,'expansion','2','Pet - Spirit Beast: WotLK'),('spell',17579,'cuFlags','1610612736','Alchemy: Greater Holy Protection Potion - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',54020,'cuFlags','1610612736','Alchemy: Transmute: Eternal Might - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',2336,'cuFlags','1610612736','Alchemy: Elixir of Tongues - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',13460,'cuFlags','1610612736','Greater Holy Protection Potion - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',40248,'cuFlags','1610612736','Eternal Might - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',2460,'cuFlags','1610612736','Elixir of Tongues - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',8366,'cuFlags','1610612736','Blacksmithing: Ironforge Chain - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',2671,'cuFlags','1610612736','Blacksmithing: Rough Bronze Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',8368,'cuFlags','1610612736','Blacksmithing: Ironforge Gauntlets - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',9942,'cuFlags','1610612736','Blacksmithing: Mithril Scale Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',16960,'cuFlags','1610612736','Blacksmithing: Thorium Greatsword - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',16965,'cuFlags','1610612736','Blacksmithing: Bleakwood Hew - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',16967,'cuFlags','1610612736','Blacksmithing: Inlaid Thorium Hammer - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',16980,'cuFlags','1610612736','Blacksmithing: Rune Edge - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',28244,'cuFlags','536870912','Blacksmithing: Icebane Bracers - set: CUSTOM_UNAVAILABLE'),('spell',28242,'cuFlags','536870912','Blacksmithing: Icebane Breastplate - set: CUSTOM_UNAVAILABLE'),('spell',28243,'cuFlags','536870912','Blacksmithing: Icebane Gauntlets - set: CUSTOM_UNAVAILABLE'),('spell',16986,'cuFlags','1610612736','Blacksmithing: Blood Talon - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',16987,'cuFlags','1610612736','Blacksmithing: Darkspear - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',2867,'cuFlags','1610612736','Rough Bronze Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',6730,'cuFlags','1610612736','Ironforge Chain - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',6733,'cuFlags','1610612736','Ironforge Gauntlets - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',7925,'cuFlags','1610612736','Mithril Scale Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',12764,'cuFlags','1610612736','Thorium Greatsword - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',12769,'cuFlags','1610612736','Bleakwood Hew - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',12772,'cuFlags','1610612736','Inlaid Thorium Hammer - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',12779,'cuFlags','1610612736','Rune Edge - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',12795,'cuFlags','1610612736','Blood Talon - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',12802,'cuFlags','1610612736','Darkspear - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',22671,'cuFlags','536870912','Icebane Bracers - set: CUSTOM_UNAVAILABLE'),('items',22669,'cuFlags','536870912','Icebane Breastplate - set: CUSTOM_UNAVAILABLE'),('items',22670,'cuFlags','536870912','Icebane Gauntlets - set: CUSTOM_UNAVAILABLE'),('spell',28021,'cuFlags','1610612736','Enchanting: Arcane Dust - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',44612,'cuFlags','1610612736','Enchanting: Enchant Gloves - Greater Blasting - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',62257,'cuFlags','1610612736','Enchanting: Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',38985,'cuFlags','1610612736','Scroll of Enchant Gloves - Greater Blasting - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',44946,'cuFlags','1610612736','Scroll of Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',44945,'cuFlags','1610612736','Formula: Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',30549,'cuFlags','1610612736','Engineering: Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',67790,'cuFlags','1610612736','Engineering: Dimensional Folder: K3 - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',30343,'cuFlags','1610612736','Engineering: Blue Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',30342,'cuFlags','1610612736','Engineering: Red Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',30561,'cuFlags','1610612736','Engineering: Goblin Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',30573,'cuFlags','1610612736','Engineering: Gnomish Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12722,'cuFlags','1610612736','Engineering: Goblin Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12904,'cuFlags','1610612736','Engineering: Gnomish Ham Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12720,'cuFlags','1610612736','Engineering: Goblin \"Boom\" Box - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12900,'cuFlags','1610612736','Engineering: Mobile Alarm- set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',23882,'cuFlags','1610612736','Schematic: Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',23820,'cuFlags','1610612736','Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',48933,'cuFlags','1610612736','Dimensional Folder: K3 - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',23770,'cuFlags','1610612736','Blue Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',23769,'cuFlags','1610612736','Red Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',23831,'cuFlags','1610612736','Goblin Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',23832,'cuFlags','1610612736','Gnomish Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10585,'cuFlags','1610612736','Goblin Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10723,'cuFlags','1610612736','Gnomish Ham Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10580,'cuFlags','1610612736','Goblin \"Boom\" Box - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10719,'cuFlags','1610612736','Mobile Alarm - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',8387,'cuFlags','1610612736','Herbalism: Find Herbs - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',2369,'cuFlags','1610612736','Herbalism: Herb Gathering - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',2371,'cuFlags','1610612736','Herbalism: Herb Gathering - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',52175,'cuFlags','1610612736','Inscription: Decipher - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',25614,'cuFlags','1610612736','Jewelcrafting: Silver Rose Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',32810,'cuFlags','1610612736','Jewelcrafting: Primal Stone Statue - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',26918,'cuFlags','1610612736','Jewelcrafting: Arcanite Sword Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',26920,'cuFlags','1610612736','Jewelcrafting: Blood Crown - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',20956,'cuFlags','1610612736','Silver Rose Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',25884,'cuFlags','1610612736','Primal Stone Statue - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',21793,'cuFlags','1610612736','Arcanite Sword Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',21780,'cuFlags','1610612736','Blood Crown - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',10550,'cuFlags','1610612736','Leatherworking: Nightscape Cloak - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',28224,'cuFlags','536870912','Leatherworking: Icy Scale Bracers - set: CUSTOM_UNAVAILABLE'),('spell',28222,'cuFlags','536870912','Leatherworking: Icy Scale Breastplate - set: CUSTOM_UNAVAILABLE'),('spell',28223,'cuFlags','536870912','Leatherworking: Icy Scale Gauntlets - set: CUSTOM_UNAVAILABLE'),('spell',28221,'cuFlags','536870912','Leatherworking: Polar Bracers - set: CUSTOM_UNAVAILABLE'),('spell',28220,'cuFlags','536870912','Leatherworking: Polar Gloves - set: CUSTOM_UNAVAILABLE'),('spell',28219,'cuFlags','536870912','Leatherworking: Polar Tunic - set: CUSTOM_UNAVAILABLE'),('spell',55243,'cuFlags','1610612736','Leatherworking: Bracers of Deflection - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',19106,'cuFlags','536870912','Leatherworking: Onyxia Scale Breastplate - set: CUSTOM_UNAVAILABLE'),('items',8195,'cuFlags','1610612736','Nightscape Cloak - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',22665,'cuFlags','536870912','Icy Scale Bracers - set: CUSTOM_UNAVAILABLE'),('items',22664,'cuFlags','536870912','Icy Scale Breastplate - set: CUSTOM_UNAVAILABLE'),('items',22666,'cuFlags','536870912','Icy Scale Gauntlets - set: CUSTOM_UNAVAILABLE'),('items',22663,'cuFlags','536870912','Polar Bracers - set: CUSTOM_UNAVAILABLE'),('items',22662,'cuFlags','536870912','Polar Gloves - set: CUSTOM_UNAVAILABLE'),('items',22661,'cuFlags','536870912','Polar Tunic - set: CUSTOM_UNAVAILABLE'),('items',41264,'cuFlags','1610612736','Bracers of Deflection - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',15141,'cuFlags','536870912','Onyxia Scale Breastplate - set: CUSTOM_UNAVAILABLE'),('spell',8388,'cuFlags','1610612736','Mining: Find Minerals - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',7636,'cuFlags','1610612736','Tailoring: Green Woolen Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',8778,'cuFlags','1610612736','Tailoring: Boots of Darkness - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12063,'cuFlags','1610612736','Tailoring: Stormcloth Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12062,'cuFlags','1610612736','Tailoring: Stormcloth Pants - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12068,'cuFlags','1610612736','Tailoring: Stormcloth Vest - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12083,'cuFlags','1610612736','Tailoring: Stormcloth Headband - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12087,'cuFlags','1610612736','Tailoring: Stormcloth Shoulders - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',12090,'cuFlags','1610612736','Tailoring: Stormcloth Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',28208,'cuFlags','536870912','Tailoring: Glacial Cloak - set: CUSTOM_UNAVAILABLE'),('spell',28205,'cuFlags','536870912','Tailoring: Glacial Gloves - set: CUSTOM_UNAVAILABLE'),('spell',28207,'cuFlags','536870912','Tailoring: Glacial Vest - set: CUSTOM_UNAVAILABLE'),('spell',28209,'cuFlags','536870912','Tailoring: Glacial Wrists - set: CUSTOM_UNAVAILABLE'),('spell',36670,'cuFlags','1610612736','Tailoring: Lifeblood Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',36672,'cuFlags','1610612736','Tailoring: Lifeblood Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',36669,'cuFlags','1610612736','Tailoring: Lifeblood Leggings - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',36667,'cuFlags','1610612736','Tailoring: Netherflame Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',36668,'cuFlags','1610612736','Tailoring: Netherflame Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',36665,'cuFlags','1610612736','Tailoring: Netherflame Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',56048,'cuFlags','1610612736','Tailoring: Duskweave Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('spell',31461,'cuFlags','1610612736','Tailoring: Heavy Netherweave Net - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',6243,'cuFlags','1610612736','Green Woolen Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',7027,'cuFlags','1610612736','Boots of Darkness - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10011,'cuFlags','1610612736','Stormcloth Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10010,'cuFlags','1610612736','Stormcloth Pants - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10020,'cuFlags','1610612736','Stormcloth Vest - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10032,'cuFlags','1610612736','Stormcloth Headband - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10038,'cuFlags','1610612736','Stormcloth Shoulders - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',10039,'cuFlags','1610612736','Stormcloth Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',22658,'cuFlags','536870912','Glacial Cloak - set: CUSTOM_UNAVAILABLE'),('items',22654,'cuFlags','536870912','Glacial Gloves - set: CUSTOM_UNAVAILABLE'),('items',22652,'cuFlags','536870912','Glacial Vest - set: CUSTOM_UNAVAILABLE'),('items',22655,'cuFlags','536870912','Glacial Wrists - set: CUSTOM_UNAVAILABLE'),('items',30463,'cuFlags','1610612736','Lifeblood Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',30464,'cuFlags','1610612736','Lifeblood Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',30465,'cuFlags','1610612736','Lifeblood Leggings - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',30460,'cuFlags','1610612736','Netherflame Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',30461,'cuFlags','1610612736','Netherflame Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',30459,'cuFlags','1610612736','Netherflame Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',41544,'cuFlags','1610612736','Duskweave Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),('items',24269,'cuFlags','1610612736','Heavy Netherweave Net - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'); /*!40000 ALTER TABLE `aowow_setup_custom_data` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; diff --git a/setup/sql/updates/1774468408_01.sql b/setup/sql/updates/1774468408_01.sql new file mode 100644 index 00000000..f30e8121 --- /dev/null +++ b/setup/sql/updates/1774468408_01.sql @@ -0,0 +1 @@ +UPDATE `aowow_dbversion` SET `sql` = CONCAT(IFNULL(`sql`, ''), ' search'); diff --git a/setup/sql/updates/1774551739_01.sql b/setup/sql/updates/1774551739_01.sql new file mode 100644 index 00000000..debc3e95 --- /dev/null +++ b/setup/sql/updates/1774551739_01.sql @@ -0,0 +1,135 @@ +INSERT INTO `aowow_setup_custom_data` (`command`, `entry`, `field`, `value`, `comment`) VALUES + ('spell', 17579, 'cuFlags', 1610612736, 'Alchemy: Greater Holy Protection Potion - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 54020, 'cuFlags', 1610612736, 'Alchemy: Transmute: Eternal Might - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 2336, 'cuFlags', 1610612736, 'Alchemy: Elixir of Tongues - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 13460, 'cuFlags', 1610612736, 'Greater Holy Protection Potion - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 40248, 'cuFlags', 1610612736, 'Eternal Might - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 2460, 'cuFlags', 1610612736, 'Elixir of Tongues - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 8366, 'cuFlags', 1610612736, 'Blacksmithing: Ironforge Chain - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 2671, 'cuFlags', 1610612736, 'Blacksmithing: Rough Bronze Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 8368, 'cuFlags', 1610612736, 'Blacksmithing: Ironforge Gauntlets - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 9942, 'cuFlags', 1610612736, 'Blacksmithing: Mithril Scale Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 16960, 'cuFlags', 1610612736, 'Blacksmithing: Thorium Greatsword - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 16965, 'cuFlags', 1610612736, 'Blacksmithing: Bleakwood Hew - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 16967, 'cuFlags', 1610612736, 'Blacksmithing: Inlaid Thorium Hammer - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 16980, 'cuFlags', 1610612736, 'Blacksmithing: Rune Edge - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 28244, 'cuFlags', 536870912, 'Blacksmithing: Icebane Bracers - set: CUSTOM_UNAVAILABLE'), + ('spell', 28242, 'cuFlags', 536870912, 'Blacksmithing: Icebane Breastplate - set: CUSTOM_UNAVAILABLE'), + ('spell', 28243, 'cuFlags', 536870912, 'Blacksmithing: Icebane Gauntlets - set: CUSTOM_UNAVAILABLE'), + ('spell', 16986, 'cuFlags', 1610612736, 'Blacksmithing: Blood Talon - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 16987, 'cuFlags', 1610612736, 'Blacksmithing: Darkspear - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 2867, 'cuFlags', 1610612736, 'Rough Bronze Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 6730, 'cuFlags', 1610612736, 'Ironforge Chain - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 6733, 'cuFlags', 1610612736, 'Ironforge Gauntlets - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 7925, 'cuFlags', 1610612736, 'Mithril Scale Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 12764, 'cuFlags', 1610612736, 'Thorium Greatsword - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 12769, 'cuFlags', 1610612736, 'Bleakwood Hew - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 12772, 'cuFlags', 1610612736, 'Inlaid Thorium Hammer - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 12779, 'cuFlags', 1610612736, 'Rune Edge - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 12795, 'cuFlags', 1610612736, 'Blood Talon - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 12802, 'cuFlags', 1610612736, 'Darkspear - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 22671, 'cuFlags', 536870912, 'Icebane Bracers - set: CUSTOM_UNAVAILABLE'), + ('items', 22669, 'cuFlags', 536870912, 'Icebane Breastplate - set: CUSTOM_UNAVAILABLE'), + ('items', 22670, 'cuFlags', 536870912, 'Icebane Gauntlets - set: CUSTOM_UNAVAILABLE'), + ('spell', 28021, 'cuFlags', 1610612736, 'Enchanting: Arcane Dust - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 44612, 'cuFlags', 1610612736, 'Enchanting: Enchant Gloves - Greater Blasting - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 62257, 'cuFlags', 1610612736, 'Enchanting: Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 38985, 'cuFlags', 1610612736, 'Scroll of Enchant Gloves - Greater Blasting - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 44946, 'cuFlags', 1610612736, 'Scroll of Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 44945, 'cuFlags', 1610612736, 'Formula: Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 30549, 'cuFlags', 1610612736, 'Engineering: Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 67790, 'cuFlags', 1610612736, 'Engineering: Dimensional Folder: K3 - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 30343, 'cuFlags', 1610612736, 'Engineering: Blue Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 30342, 'cuFlags', 1610612736, 'Engineering: Red Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 30561, 'cuFlags', 1610612736, 'Engineering: Goblin Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 30573, 'cuFlags', 1610612736, 'Engineering: Gnomish Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12722, 'cuFlags', 1610612736, 'Engineering: Goblin Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12904, 'cuFlags', 1610612736, 'Engineering: Gnomish Ham Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12720, 'cuFlags', 1610612736, 'Engineering: Goblin "Boom" Box - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12900, 'cuFlags', 1610612736, 'Engineering: Mobile Alarm- set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 23882, 'cuFlags', 1610612736, 'Schematic: Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 23820, 'cuFlags', 1610612736, 'Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 48933, 'cuFlags', 1610612736, 'Dimensional Folder: K3 - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 23770, 'cuFlags', 1610612736, 'Blue Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 23769, 'cuFlags', 1610612736, 'Red Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 23831, 'cuFlags', 1610612736, 'Goblin Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 23832, 'cuFlags', 1610612736, 'Gnomish Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10585, 'cuFlags', 1610612736, 'Goblin Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10723, 'cuFlags', 1610612736, 'Gnomish Ham Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10580, 'cuFlags', 1610612736, 'Goblin "Boom" Box - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10719, 'cuFlags', 1610612736, 'Mobile Alarm - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 8387, 'cuFlags', 1610612736, 'Herbalism: Find Herbs - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 2369, 'cuFlags', 1610612736, 'Herbalism: Herb Gathering - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 2371, 'cuFlags', 1610612736, 'Herbalism: Herb Gathering - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 52175, 'cuFlags', 1610612736, 'Inscription: Decipher - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 25614, 'cuFlags', 1610612736, 'Jewelcrafting: Silver Rose Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 32810, 'cuFlags', 1610612736, 'Jewelcrafting: Primal Stone Statue - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 26918, 'cuFlags', 1610612736, 'Jewelcrafting: Arcanite Sword Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 26920, 'cuFlags', 1610612736, 'Jewelcrafting: Blood Crown - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 20956, 'cuFlags', 1610612736, 'Silver Rose Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 25884, 'cuFlags', 1610612736, 'Primal Stone Statue - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 21793, 'cuFlags', 1610612736, 'Arcanite Sword Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 21780, 'cuFlags', 1610612736, 'Blood Crown - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 10550, 'cuFlags', 1610612736, 'Leatherworking: Nightscape Cloak - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 28224, 'cuFlags', 536870912, 'Leatherworking: Icy Scale Bracers - set: CUSTOM_UNAVAILABLE'), + ('spell', 28222, 'cuFlags', 536870912, 'Leatherworking: Icy Scale Breastplate - set: CUSTOM_UNAVAILABLE'), + ('spell', 28223, 'cuFlags', 536870912, 'Leatherworking: Icy Scale Gauntlets - set: CUSTOM_UNAVAILABLE'), + ('spell', 28221, 'cuFlags', 536870912, 'Leatherworking: Polar Bracers - set: CUSTOM_UNAVAILABLE'), + ('spell', 28220, 'cuFlags', 536870912, 'Leatherworking: Polar Gloves - set: CUSTOM_UNAVAILABLE'), + ('spell', 28219, 'cuFlags', 536870912, 'Leatherworking: Polar Tunic - set: CUSTOM_UNAVAILABLE'), + ('spell', 55243, 'cuFlags', 1610612736, 'Leatherworking: Bracers of Deflection - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 19106, 'cuFlags', 536870912, 'Leatherworking: Onyxia Scale Breastplate - set: CUSTOM_UNAVAILABLE'), + ('items', 8195, 'cuFlags', 1610612736, 'Nightscape Cloak - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 22665, 'cuFlags', 536870912, 'Icy Scale Bracers - set: CUSTOM_UNAVAILABLE'), + ('items', 22664, 'cuFlags', 536870912, 'Icy Scale Breastplate - set: CUSTOM_UNAVAILABLE'), + ('items', 22666, 'cuFlags', 536870912, 'Icy Scale Gauntlets - set: CUSTOM_UNAVAILABLE'), + ('items', 22663, 'cuFlags', 536870912, 'Polar Bracers - set: CUSTOM_UNAVAILABLE'), + ('items', 22662, 'cuFlags', 536870912, 'Polar Gloves - set: CUSTOM_UNAVAILABLE'), + ('items', 22661, 'cuFlags', 536870912, 'Polar Tunic - set: CUSTOM_UNAVAILABLE'), + ('items', 41264, 'cuFlags', 1610612736, 'Bracers of Deflection - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 15141, 'cuFlags', 536870912, 'Onyxia Scale Breastplate - set: CUSTOM_UNAVAILABLE'), + ('spell', 8388, 'cuFlags', 1610612736, 'Mining: Find Minerals - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 7636, 'cuFlags', 1610612736, 'Tailoring: Green Woolen Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 8778, 'cuFlags', 1610612736, 'Tailoring: Boots of Darkness - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12063, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12062, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Pants - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12068, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Vest - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12083, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Headband - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12087, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Shoulders - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 12090, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 28208, 'cuFlags', 536870912, 'Tailoring: Glacial Cloak - set: CUSTOM_UNAVAILABLE'), + ('spell', 28205, 'cuFlags', 536870912, 'Tailoring: Glacial Gloves - set: CUSTOM_UNAVAILABLE'), + ('spell', 28207, 'cuFlags', 536870912, 'Tailoring: Glacial Vest - set: CUSTOM_UNAVAILABLE'), + ('spell', 28209, 'cuFlags', 536870912, 'Tailoring: Glacial Wrists - set: CUSTOM_UNAVAILABLE'), + ('spell', 36670, 'cuFlags', 1610612736, 'Tailoring: Lifeblood Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 36672, 'cuFlags', 1610612736, 'Tailoring: Lifeblood Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 36669, 'cuFlags', 1610612736, 'Tailoring: Lifeblood Leggings - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 36667, 'cuFlags', 1610612736, 'Tailoring: Netherflame Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 36668, 'cuFlags', 1610612736, 'Tailoring: Netherflame Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 36665, 'cuFlags', 1610612736, 'Tailoring: Netherflame Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 56048, 'cuFlags', 1610612736, 'Tailoring: Duskweave Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('spell', 31461, 'cuFlags', 1610612736, 'Tailoring: Heavy Netherweave Net - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 6243, 'cuFlags', 1610612736, 'Green Woolen Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 7027, 'cuFlags', 1610612736, 'Boots of Darkness - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10011, 'cuFlags', 1610612736, 'Stormcloth Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10010, 'cuFlags', 1610612736, 'Stormcloth Pants - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10020, 'cuFlags', 1610612736, 'Stormcloth Vest - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10032, 'cuFlags', 1610612736, 'Stormcloth Headband - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10038, 'cuFlags', 1610612736, 'Stormcloth Shoulders - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 10039, 'cuFlags', 1610612736, 'Stormcloth Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 22658, 'cuFlags', 536870912, 'Glacial Cloak - set: CUSTOM_UNAVAILABLE'), + ('items', 22654, 'cuFlags', 536870912, 'Glacial Gloves - set: CUSTOM_UNAVAILABLE'), + ('items', 22652, 'cuFlags', 536870912, 'Glacial Vest - set: CUSTOM_UNAVAILABLE'), + ('items', 22655, 'cuFlags', 536870912, 'Glacial Wrists - set: CUSTOM_UNAVAILABLE'), + ('items', 30463, 'cuFlags', 1610612736, 'Lifeblood Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 30464, 'cuFlags', 1610612736, 'Lifeblood Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 30465, 'cuFlags', 1610612736, 'Lifeblood Leggings - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 30460, 'cuFlags', 1610612736, 'Netherflame Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 30461, 'cuFlags', 1610612736, 'Netherflame Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 30459, 'cuFlags', 1610612736, 'Netherflame Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 41544, 'cuFlags', 1610612736, 'Duskweave Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'), + ('items', 24269, 'cuFlags', 1610612736, 'Heavy Netherweave Net - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'); + +UPDATE `aowow_dbversion` SET + `sql` = CONCAT(IFNULL(`sql`, ''), ' spell items'), + `build` = CONCAT(IFNULL(`build`, ''), ' profiler'); diff --git a/setup/sql/updates/1774728772_01.sql b/setup/sql/updates/1774728772_01.sql new file mode 100644 index 00000000..f30e8121 --- /dev/null +++ b/setup/sql/updates/1774728772_01.sql @@ -0,0 +1 @@ +UPDATE `aowow_dbversion` SET `sql` = CONCAT(IFNULL(`sql`, ''), ' search'); diff --git a/setup/sql/updates/1775758635_01.sql b/setup/sql/updates/1775758635_01.sql new file mode 100644 index 00000000..6d163b57 --- /dev/null +++ b/setup/sql/updates/1775758635_01.sql @@ -0,0 +1 @@ +UPDATE `aowow_dbversion` SET `build` = CONCAT(IFNULL(`build`, ''), ' profiler'); diff --git a/setup/tools/clisetup/dbconfig.us.php b/setup/tools/clisetup/dbconfig.us.php index 35557c61..e2120989 100644 --- a/setup/tools/clisetup/dbconfig.us.php +++ b/setup/tools/clisetup/dbconfig.us.php @@ -85,7 +85,7 @@ CLISetup::registerUtility(new class extends UtilityScript { CLI::write(); if (!DB::isConnectable(DB_AUTH) || !$this->test()) - CLI::write('[db] auth server not yet set up.', CLI::LOG_ERROR); + CLI::write('[db] auth db not yet set up.', CLI::LOG_ERROR); else if ($realms = DB::Auth()->selectAssoc('SELECT `id` AS "0", `name` AS "1", `icon` AS "2", `timezone` AS "3", `allowedSecurityLevel` AS "4" FROM realmlist')) { $tbl = [['Realm Id', 'Name', 'Type', 'Region', 'GMLevel', 'Status']]; @@ -309,15 +309,21 @@ CLISetup::registerUtility(new class extends UtilityScript $buff[] = $dbInfo['prefix'] ? 'pre.: '.$dbInfo['prefix'] : ''; $buff[] = $note; } + else if ($idx == DB_AUTH) + $buff[] = CLI::bold(''); else - $buff[] = CLI::bold(''); + $buff[] = CLI::bold(''); return $buff; } public function writeCLIHelp() : bool { - CLI::write(' Remember to use the correct Realm Id from '.CLI::bold('`logon`.`realmlist`').' when connecting to your characters DB.', -1, false); + CLI::write(' Connecting to '.CLI::bold('`auth`').' is optional and only required when using the character profiler tool or using the game accounts for login.', -1, false); + CLI::write(); + CLI::write(' Connecting to '.CLI::bold('`characters`').' is optional and only required when using the character profiler tool.', -1, false); + CLI::write(' Remember to use the correct Realm Id from '.CLI::bold('`auth`.`realmlist`').' when connecting to your characters DB.', -1, false); + CLI::write(); CLI::write(' To remove a db entry edit it and leave all fields empty.', -1, false); CLI::write(); CLI::write(); diff --git a/setup/tools/clisetup/setup.us.php b/setup/tools/clisetup/setup.us.php index 60c312e2..5b8c4762 100644 --- a/setup/tools/clisetup/setup.us.php +++ b/setup/tools/clisetup/setup.us.php @@ -170,8 +170,10 @@ CLISetup::registerUtility(new class extends UtilityScript CLI::write(' usage: php aowow --setup [--locales: --datasrc:] [--step=]', -1, false); CLI::write(); CLI::write(' Initially essential connection information are set up and basic connectivity tests run afterwards.', -1, false); + CLI::write(); CLI::write(' In the main stage dbc and world data is compiled into the database and required sound, image and data files are generated.', -1, false); CLI::write(' This should not require further input and will take about 15-20 minutes, plus 10 minutes per additional locale.', -1, false); + CLI::write(); CLI::write(' Lastly pending updates are applied and you are prompted to create an administrator account.', -1, false); if (($startStep = $this->getSavedStartStep()) !== 0) diff --git a/setup/tools/clisetup/update.us.php b/setup/tools/clisetup/update.us.php index 7f4fd99f..9b4cc185 100644 --- a/setup/tools/clisetup/update.us.php +++ b/setup/tools/clisetup/update.us.php @@ -111,8 +111,13 @@ CLISetup::registerUtility(new class extends UtilityScript CLI::write(); CLI::write(' Checks /setup/sql/updates for new *.sql files and applies them. If required by an applied update, the --sql and --build command are triggered afterwards.', -1, false); CLI::write(' Use this after fetching the latest rev. from Github.', -1, false); - CLI::write(); - CLI::write(' Last Update: '.date(Util::$dateFormatInternal, $this->date).' (Part #'.$this->part.')', -1, false); + + if ($this->date) + { + CLI::write(); + CLI::write(' Last Update: '.date(Util::$dateFormatInternal, $this->date).' (Part #'.$this->part.')', -1, false); + } + CLI::write(); CLI::write(); diff --git a/setup/tools/filegen/profiler.ss.php b/setup/tools/filegen/profiler.ss.php index b653f22b..835e229e 100644 --- a/setup/tools/filegen/profiler.ss.php +++ b/setup/tools/filegen/profiler.ss.php @@ -329,7 +329,7 @@ CLISetup::registerSetup("build", new class extends SetupScript { $condition = array( [['cuFlags', CUSTOM_EXCLUDE_FOR_LISTVIEW, '&'], 0], - [['flags', 1, '&'], 0], // no statistics + [['flags', 1, '&'], 0], // no statistics ); $achievez = new AchievementList($condition); @@ -343,8 +343,10 @@ CLISetup::registerSetup("build", new class extends SetupScript $buff = "var _ = g_achievements;\n"; foreach ($achievez->getListviewData(ACHIEVEMENTINFO_PROFILE) as $id => $data) { - $sumPoints += $data['points']; - $buff .= '_['.$id.'] = '.Util::toJSON($data).";\n"; + if ($data['side'] & SIDE_ALLIANCE) // both sides have the same point total + $sumPoints += $data['points']; + + $buff .= '_['.$id.'] = '.Util::toJSON($data).";\n"; } // categories to sort by diff --git a/setup/tools/sqlgen/search.ss.php b/setup/tools/sqlgen/search.ss.php index bcaebc09..6c60bee4 100644 --- a/setup/tools/sqlgen/search.ss.php +++ b/setup/tools/sqlgen/search.ss.php @@ -133,13 +133,18 @@ CLISetup::registerSetup("sql", new class extends SetupScript $rows = array_filter($rows, fn($x) => $x['name'] !== null); - CLI::write(' * inserting', tmpRow: true); - - DB::Aowow()->qry('INSERT INTO ::objects_search %m', array( + $result = array( 'id' => array_column($rows, 'id'), 'locale' => array_column($rows, 'locale'), 'nName' => array_column($rows, 'name') - )); + ); + + $n = ceil(count(current($result)) / CLISetup::SQL_BATCH); + for ($i = 0; $i < $n; $i++) + { + CLI::write(' * inserting batch '.($i + 1).' / '.$n, tmpRow: true); + DB::Aowow()->qry('INSERT INTO ::objects_search %m', array_map(fn($x) => array_slice($x, $i * CLISetup::SQL_BATCH, CLISetup::SQL_BATCH), $result)); + } } private function normalizeCreatures() : void @@ -162,16 +167,21 @@ CLISetup::registerSetup("sql", new class extends SetupScript array_walk($rows, self::normalizeRow(...), ['name', 'subname']); - $rows = array_filter($rows, fn($x) => $x['name'] !== null && $x['subname'] !== null); + $rows = array_filter($rows, fn($x) => $x['name'] !== null || $x['subname'] !== null); - CLI::write(' * inserting', tmpRow: true); - - DB::Aowow()->qry('INSERT INTO ::creature_search %m', array( + $result = array( 'id' => array_column($rows, 'id'), 'locale' => array_column($rows, 'locale'), 'nName' => array_column($rows, 'name'), 'nSubname' => array_column($rows, 'subname') - )); + ); + + $n = ceil(count(current($result)) / CLISetup::SQL_BATCH); + for ($i = 0; $i < $n; $i++) + { + CLI::write(' * inserting batch '.($i + 1).' / '.$n, tmpRow: true); + DB::Aowow()->qry('INSERT INTO ::creature_search %m', array_map(fn($x) => array_slice($x, $i * CLISetup::SQL_BATCH, CLISetup::SQL_BATCH), $result)); + } } private function normalizeItems() : void @@ -279,9 +289,9 @@ CLISetup::registerSetup("sql", new class extends SetupScript $buff = self::normalize(str_replace('
', ' ', $_)); } - if ($_ = $desc ?: Util::localizedString($spell, 'description', true)) + if (!$desc && ($_ = Util::localizedString($spell, 'description', true))) $desc = self::normalize($_); - if ($_ = $buff ?: Util::localizedString($spell, 'buff', true)) + if (!$buff && ($_ = Util::localizedString($spell, 'buff', true))) $buff = self::normalize($_); if ($_ = Util::localizedString($spell, 'name', true)) $name = self::normalize($_); @@ -311,7 +321,7 @@ CLISetup::registerSetup("sql", new class extends SetupScript $row[$key] = self::normalize($row[$key] ?? ''); } - // e.g. "Zul'Aman O'Reilly" => "Zul Aman ZulAman OReilly Reilly" + // e.g. "Zul'Aman O'Reilly" => "Zul Aman ZulAman OReilly Reilly luZ namA luZnamA yllieRO yllieR" private static function normalize(?string $words) : ?string { if (!$words) @@ -341,7 +351,13 @@ CLISetup::registerSetup("sql", new class extends SetupScript $result[] = $word; } - return $result ? implode(' ', array_unique($result)) : null; + if (!$result) + return null; + + $result = array_unique($result); + $reversed = array_map(Util::strrev(...), $result); + + return implode(' ', array_merge($result, $reversed)); } }); diff --git a/template/bricks/announcement.tpl.php b/template/bricks/announcement.tpl.php index 4f674a06..4b5313ee 100644 --- a/template/bricks/announcement.tpl.php +++ b/template/bricks/announcement.tpl.php @@ -1,9 +1,13 @@ announcements as $a): ?> +
+ diff --git a/template/bricks/book.tpl.php b/template/bricks/book.tpl.php index 2ef56dc4..e7b3922c 100644 --- a/template/bricks/book.tpl.php +++ b/template/bricks/book.tpl.php @@ -3,7 +3,10 @@ use \Aowow\Lang; + /** @var PageTemplate $this */ + if ($this->book): ?> +

@@ -11,4 +14,5 @@ if ($this->book): ?> + diff --git a/template/bricks/contribute.tpl.php b/template/bricks/contribute.tpl.php index 20d9834a..6f33b293 100644 --- a/template/bricks/contribute.tpl.php +++ b/template/bricks/contribute.tpl.php @@ -1,8 +1,15 @@ - + contribute): ?> +

@@ -10,25 +17,30 @@ if ($this->contribute):
+ localizedBrick('contrib', ['coError' => $this->community['coError'], 'ssError' => $this->community['ssError'], 'viError' => $this->community['viError']]); ?> +
+ diff --git a/template/bricks/footer.tpl.php b/template/bricks/footer.tpl.php index 73eb9586..d42b2964 100644 --- a/template/bricks/footer.tpl.php +++ b/template/bricks/footer.tpl.php @@ -2,31 +2,35 @@ namespace Aowow\Template; use \Aowow\Lang; + + /** @var PageTemplate $this */ ?>
@@ -44,6 +48,8 @@ endif; + + diff --git a/template/bricks/head.tpl.php b/template/bricks/head.tpl.php index 2ecc6468..e279d8ff 100644 --- a/template/bricks/head.tpl.php +++ b/template/bricks/head.tpl.php @@ -2,6 +2,8 @@ namespace Aowow\Template; use \Aowow\Lang; + + /** @var PageTemplate $this */ ?> <?=$this->concat('title', ' - '); ?> @@ -14,32 +16,39 @@ var g_serverTime = gServerTime; ?>; var g_staticUrl = "gStaticUrl; ?>"; var g_host = "gHost; ?>"; + gDataKey): - echo " var g_dataKey = '".$_SESSION['dataKey']."'\n"; + echo " var g_dataKey = '".$_SESSION['dataKey']."'".PHP_EOL; endif; ?> + renderArray('js', 4); ?> hasAnalytics): ?> + rss): ?> + + diff --git a/template/bricks/headIcons.tpl.php b/template/bricks/headIcons.tpl.php index d6fdb62d..5d1225c1 100644 --- a/template/bricks/headIcons.tpl.php +++ b/template/bricks/headIcons.tpl.php @@ -1,18 +1,24 @@ headIcons): foreach ($this->headIcons as $k => $v): - echo '
\n"; + echo '
'.PHP_EOL; endforeach; ?> + + diff --git a/template/bricks/header.tpl.php b/template/bricks/header.tpl.php index ae143fab..6910b755 100644 --- a/template/bricks/header.tpl.php +++ b/template/bricks/header.tpl.php @@ -1,14 +1,19 @@ + + brick('head'); ?> user::isPremium() ? ' class="premium-logo"' : ''); ?>>
+ headerLogo): ?> + +
diff --git a/template/pages/spells.tpl.php b/template/pages/spells.tpl.php index 0579cdad..e3452808 100644 --- a/template/pages/spells.tpl.php +++ b/template/pages/spells.tpl.php @@ -1,28 +1,34 @@ brick('header'); -$f = $this->filter->values; // shorthand + /** @var PageTemplate $this */ + + $this->brick('header'); + $f = $this->filter->values; // shorthand ?> +
brick('announcement'); + $this->brick('announcement'); -$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [1]]); + $this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [1]]); ?> +
-brick('headIcons'); -$this->brick('redButtons'); +brick('headIcons'); + + $this->brick('redButtons'); ?> +

h1; ?>

@@ -33,6 +39,7 @@ $this->brick('redButtons'); makeOptionsList(Lang::game('sc') , $f['sc'], 28,); ?>
+ classPanel): ?>
ucFirst(Lang::game('class')).Lang::main('colon'); ?>
@@ -42,11 +49,13 @@ $this->brick('redButtons'); makeOptionsList(Lang::game('cl') , $f['cl'], 28, fn($v, $k, &$e) => $v && ($e = ['class' => 'c'.$k])); ?>
+ glyphPanel): ?> +
@@ -55,7 +64,9 @@ if ($this->glyphPanel): makeOptionsList(Lang::game('gl') , $f['gl'], 28); ?>
+ + diff --git a/template/pages/talent.tpl.php b/template/pages/talent.tpl.php index dbc85fe8..2bb03f46 100644 --- a/template/pages/talent.tpl.php +++ b/template/pages/talent.tpl.php @@ -1,10 +1,11 @@ brick('header'); ?> +
diff --git a/template/pages/text-page-generic.tpl.php b/template/pages/text-page-generic.tpl.php index cda04390..4c05960c 100644 --- a/template/pages/text-page-generic.tpl.php +++ b/template/pages/text-page-generic.tpl.php @@ -1,11 +1,15 @@ brick('header'); ?> +
+ brick('announcement'); @@ -13,11 +17,13 @@ if ([$typeStr, $id] = $this->doResync): ?> +
+ inputbox): $this->brick(...$this->inputbox); // $templateName, [$templateVars] else: ?> +
h1 ? '

'.$this->h1.'

' : '');?> @@ -35,10 +42,13 @@ else: echo $this->extraHTML ?? ''; ?> +
+ +
diff --git a/template/pages/user.tpl.php b/template/pages/user.tpl.php index 3e4190da..81bf0372 100644 --- a/template/pages/user.tpl.php +++ b/template/pages/user.tpl.php @@ -3,8 +3,11 @@ use \Aowow\Lang; + /** @var PageTemplate $this */ + $this->brick('header'); ?> +
@@ -14,37 +17,50 @@ $this->brick('pageTemplate'); ?> + + brick('infobox'); ?> +
+ userIcon): ?> +

h1; ?>

+

h1; ?>

+ +

description): ?> +
+
+ lvTabs)): ?> + +
diff --git a/template/pages/video.tpl.php b/template/pages/video.tpl.php index f3cded7d..a069c3ab 100644 --- a/template/pages/video.tpl.php +++ b/template/pages/video.tpl.php @@ -3,20 +3,23 @@ use \Aowow\Lang; + /** @var PageTemplate $this */ + $this->brick('header'); ?> +
brick('announcement'); + $this->brick('announcement'); -$this->brick('pageTemplate'); - -$this->brick('infobox'); + $this->brick('pageTemplate'); + $this->brick('infobox'); ?> +

h1; ?>

ucFirst(Lang::main('name')).Lang::main('colon'); ?>