From c045fe10812e411b57100a00f445a65667daa041 Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Sat, 23 Mar 2013 14:50:01 +0100 Subject: [PATCH] implemented generic filters - what which index does needs to be implemented in the implementation - differences to wowhead * strings in criteria are more lenient and will also work with partial matches * the ? and * wildcards are supported --- includes/class.filter.php | 254 +++ includes/class.item.php | 7 +- includes/class.itemset.php | 11 +- includes/class.spell.php | 32 +- includes/defines.php | 5 + includes/kernel.php | 2 +- includes/utilities.php | 103 +- localization/locale_dede.php | 112 +- localization/locale_enus.php | 116 +- localization/locale_eses.php | 60 +- localization/locale_frfr.php | 60 +- localization/locale_ruru.php | 60 +- pages/compare.php | 2 +- pages/title.php | 10 +- search.php | 8 +- template/js/filters.js | 3060 +++++++++++++++++++++------------- template/js/global.js | 18 + template/js/locale_dede.js | 163 +- template/js/locale_enus.js | 807 +++++---- template/js/locale_eses.js | 173 +- template/js/locale_frfr.js | 159 +- template/js/locale_ruru.js | 162 +- 22 files changed, 3312 insertions(+), 2072 deletions(-) create mode 100644 includes/class.filter.php diff --git a/includes/class.filter.php b/includes/class.filter.php new file mode 100644 index 00000000..143ec2bf --- /dev/null +++ b/includes/class.filter.php @@ -0,0 +1,254 @@ + '%', '?' => '_']; + private static $criteria = ['cr', 'crs', 'crv']; // [cr]iterium, [cr].[s]ign, [cr].[v]alue + + private $fiData = ['c' => [], 'v' =>[]]; + private $query = ''; + private $form = []; // unsanitized: needed to preselect form-fields + private $setCr = []; // unsanitized: needed to preselect criteria + + public $error = false; // erronous search fields + + // parse the provided request into a usable format; recall self with GET-params if nessecary + public function init() + { + // prefer POST over GET, translate to url + if (!empty($_POST)) + { + foreach ($_POST as $k => $v) + { + if (is_array($v)) // array -> max depths:1 + { + if ($k == 'cr' && empty($v[0])) + continue; + + $sub = []; + foreach ($v as $sk => $sv) + { + $sv = str_replace("'", "\'", stripslashes($sv)); + $sub[$sk] = is_numeric($sv) ? (int)$sv : urlencode($sv); + } + if (!empty($sub) && in_array($k, Filter::$criteria)) + $this->fiData['c'][$k] = $sub; + else if (!empty($sub)) + $this->fiData['v'][$k] = $sub; + } + else // stings and integer + { + $v = str_replace("'", "\'", stripslashes($v)); + + if (in_array($k, Filter::$criteria)) + $this->fiData['c'][$k] = is_numeric($v) ? (int)$v : urlencode($v); + else + $this->fiData['v'][$k] = is_numeric($v) ? (int)$v : urlencode($v); + } + } + + // create get-data + $tmp = []; + foreach (array_merge($this->fiData['c'], $this->fiData['v']) as $k => $v) + { + if ($v == '') + continue; + else if (is_array($v)) + $tmp[$k] = $k."=".implode(':', $v); + else + $tmp[$k] = $k."=".$v; + } + + // do get request + $this->redirect(implode(';', $tmp)); + } + // sanitize input and build sql + else if (!empty($_GET['filter'])) + { + $tmp = explode(';', $_GET['filter']); + $cr = $crs = $crv = []; + + foreach (Filter::$criteria as $c) + { + foreach ($tmp as $i => $term) + { + if (strpos($term, $c.'=') === 0) + { + $$c = explode(':', explode('=', $term)[1]); + $this->setCr[$c] = json_encode($$c, JSON_NUMERIC_CHECK); + unset($tmp[$i]); + } + } + } + + for ($i = 0; $i < max(count($cr), count($crv), count($crs)); $i++) + { + if (!isset($cr[$i]) || !isset($crs[$i]) || !isset($crv[$i]) || + !intVal($cr[$i]) || $crs[$i] == '' || $crv[$i] == '') + { + $this->error = true; + continue; + } + + $this->sanitize($crv[$i]); + + if ($crv[$i] != '') + { + $this->fiData['c']['cr'][] = intVal($cr[$i]); + $this->fiData['c']['crs'][] = $crs[$i]; + $this->fiData['c']['crv'][] = $crv[$i]; + } + else + $this->error = true; + + } + + foreach ($tmp as $v) + { + $w = explode('=', $v); + + if (strstr($w[1], ':')) + { + $tmp2 = explode(':', $w[1]); + + $this->form[$w[0]] = $tmp2; + + array_walk($tmp2, function(&$v) { $v = intVal($v); }); + $this->fiData['v'][$w[0]] = $tmp2; + + } + else + { + $this->form[$w[0]] = $w[1]; + + $this->sanitize($w[1]); + + if ($w[1] != '') + $this->fiData['v'][$w[0]] = is_numeric($w[1]) ? (int)$w[1] : $w[1]; + else + $this->error = true; + } + } + + return $this->fiData; + } + } + + public function buildQuery() + { + if (!empty($this->query)) + return $this->query; + + $parts = []; + + // values + $parts = $this->createSQLForValues($this->fiData['v']); + + // criteria + $c = &$this->fiData['c']; + if (!empty($c)) + { + if (is_array($c['cr'])) + { + for ($i = 0; $i < count($c['cr']); $i++) + $parts[] = $this->createSQLForCriterium(array($c['cr'][$i], $c['crs'][$i], $c['crv'][$i])); + } + else + $parts[] = $this->createSQLForCriterium(array($c['cr'], $c['crs'], $c['crv'])); + } + + $this->query = empty($parts) ? '' : '('.implode(empty($this->fiData['v']['ma']) ? ' AND ' : ' OR ', $parts).')'; + return $this->query; + } + + public function getQuery() + { + return $this->query; + } + + public function getForm() + { + return $this->form; + } + + public function getSetCriteria() + { + if (!empty($this->setCr['cr'])) + return sprintf(Util::$setCriteriaString, $this->setCr['cr'], $this->setCr['crs'], $this->setCr['crv']); + else + return null; + } + + // santas little helper.. + protected function int2Op($int) + { + switch ($int) + { + case 1: return '>'; + case 2: return '>='; + case 3: return '='; + case 4: return '<='; + case 5: return '<'; + default: die('invalid op'); + } + } + + protected function int2Bool($int) + { + switch ($int) + { + case 1: return true; + case 2: return false; + default: die('invalid op'); + } + } + + protected function list2Mask($list) + { + $mask = 0x0; + + if (is_array($list)) + { + foreach ($list as $itm) + $mask += (1 << intVal($itm)); + } + else + $mask = (1 << intVal($list)); + + return $mask; + } + + private function sanitize(&$str) + { + $str = preg_replace(Filter::$pattern, '', trim($str)); + $str = strtr($str, Filter::$wildcards); + } + + // if called with POST-data, convert to GET request and call self + private function redirect($get) + { + header('Location: http://'.$_SERVER['SERVER_NAME'].str_replace('index.php', '', $_SERVER['PHP_SELF']).'?'.$_SERVER['QUERY_STRING'].'='.$get); + } + + protected function createSQLForCommunity($cr) + { + switch ($cr[0]) + { + case 14: // has Comments [y|n] + return ''; // IN / NOT IN (select Ids FROM aowow_comments ON type = X AND id Y and flags = valid) + case 15: // has Screenshots [y|n] + return ''; // IN / NOT IN (select Ids FROM aowow_screenshots ON type = X AND id Y and flags = valid) + case 16: // has Videos [y|n] + return ''; // IN / NOT IN (select Ids FROM aowow_videos ON type = X AND id Y and flags = valid) + } + } + + // apply Util::sqlEscape() and intVal() in the implementation of these + abstract protected function createSQLForCriterium($cr); + abstract protected function createSQLForValues($vl); +} + +?> diff --git a/includes/class.item.php b/includes/class.item.php index a23cd11b..0690cd0a 100644 --- a/includes/class.item.php +++ b/includes/class.item.php @@ -503,7 +503,7 @@ class ItemList extends BaseType // required skill if ($this->curTpl['RequiredSkill']) { - $skillText = DB::Aowow()->selectRow('SELECT * FROM ?_skill WHERE skillId = ?d', $this->curTpl['RequiredSkill']); + $skillText = DB::Aowow()->selectRow('SELECT * FROM ?_skill WHERE skillID = ?d', $this->curTpl['RequiredSkill']); $x .= '
'.Lang::$game['requires'].' '.Util::localizedString($skillText, 'name').''; if ($this->curTpl['RequiredSkillRank']) $x .= ' ('.$this->curTpl['RequiredSkillRank'].')'; @@ -832,8 +832,9 @@ class ItemList extends BaseType { $eqpSplList = new SpellList(array(['id', $equipSpells])); $stats = $eqpSplList->getStatGain(); - foreach ($stats as $mId => $qty) - if ($qty > 0) + + foreach ($stats as $stat) + foreach ($stat as $mId => $qty) @$this->itemMods[$this->id][$mId] += $qty; } diff --git a/includes/class.itemset.php b/includes/class.itemset.php index c0780cd3..98ed4a26 100644 --- a/includes/class.itemset.php +++ b/includes/class.itemset.php @@ -8,12 +8,12 @@ class ItemsetList extends BaseType private $classes = []; // used to build g_classes public $pieceToSet = []; // used to build g_items and search - protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_itemset WHERE [filter] [cond] ORDER BY maxlevel ASC'; + protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_itemset WHERE [filter] [cond] ORDER BY maxlevel DESC'; protected $matchQuery = 'SELECT COUNT(1) FROM ?_itemset WHERE [filter] [cond]'; - public function __construct($data) + public function __construct($data, $applyFilter = false) { - parent::__construct($data); + parent::__construct($data, $applyFilter); // post processing while ($this->iterate()) @@ -62,7 +62,8 @@ class ItemsetList extends BaseType 'heroic' => $this->curTpl['heroic'] == 1, // we want to be bool 'reqclass' => $this->curTpl['classMask'], 'classes' => $this->curTpl['classes'], - 'pieces' => $this->curTpl['pieces'] + 'pieces' => $this->curTpl['pieces'], + 'heroic' => $this->curTpl['heroic'] ); } @@ -75,7 +76,7 @@ class ItemsetList extends BaseType (new CharClassList(array(['id', $this->classes])))->addGlobalsToJscript($refs); if ($this->pieceToSet) - (new ItemList(array(['i.entry', array_keys($this->pieceToSet)])))->addGlobalsToJscript($refs); + (new ItemList(array(['i.entry', array_keys($this->pieceToSet)], 0)))->addGlobalsToJscript($refs); } public function addRewardsToJScript(&$ref) { } diff --git a/includes/class.spell.php b/includes/class.spell.php index 0c70126d..83dd439c 100644 --- a/includes/class.spell.php +++ b/includes/class.spell.php @@ -14,9 +14,9 @@ class SpellList extends BaseType protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_spell WHERE [filter] [cond] GROUP BY Id ORDER BY Id ASC'; protected $matchQuery = 'SELECT COUNT(1) FROM ?_spell WHERE [filter] [cond]'; - public function __construct($conditions) + public function __construct($conditions, $applyFilter = false) { - parent::__construct($conditions); + parent::__construct($conditions, $applyFilter); if ($this->error) return; @@ -50,10 +50,12 @@ class SpellList extends BaseType // required for itemSet-bonuses and socket-bonuses public function getStatGain() { - $stats = []; + $data = []; while ($this->iterate()) { + $stats = []; + for ($i = 1; $i <= 3; $i++) { if (!in_array($this->curTpl["effect".$i."AuraId"], [13, 22, 29, 34, 35, 83, 84, 85, 99, 124, 135, 143, 158, 161, 189, 230, 235, 240, 250])) @@ -216,9 +218,11 @@ class SpellList extends BaseType break; } } + + $data[$this->id] = $stats; } - return $stats; + return $data; } // description-, buff-parsing component @@ -247,7 +251,7 @@ class SpellList extends BaseType } // description-, buff-parsing component - private function resolveVariableString($variable, $level) + private function resolveVariableString($variable, $level, $interactive) { $signs = ['+', '-', '/', '*', '%', '^']; @@ -323,7 +327,7 @@ class SpellList extends BaseType } // Aura end - if ($rType) + if ($rType && $interactive) $str .= ''.$base." (".Util::setRatingLevel($level, $rType, $base).")"; else $str .= $base; @@ -439,7 +443,7 @@ class SpellList extends BaseType } // Aura end - if ($rType) + if ($rType && $interactive) return ''.abs($base)." (".Util::setRatingLevel($level, $rType, abs($base)).")"; else return $base; @@ -549,7 +553,7 @@ class SpellList extends BaseType } // Aura end - if ($rType && $equal) + if ($rType && $equal && $interactive) return ''.$min." (".Util::setRatingLevel($level, $rType, $min).")"; else return $min . (!$equal ? Lang::$game['valueDelim'] . $max : null); @@ -603,7 +607,7 @@ class SpellList extends BaseType } // description-, buff-parsing component - private function resolveFormulaString($formula, $precision = 0, $level) + private function resolveFormulaString($formula, $precision = 0, $level, $interactive) { // step 1: formula unpacking redux while (($formStartPos = strpos($formula, '${')) !== false) @@ -639,7 +643,7 @@ class SpellList extends BaseType ++$formCurPos; // for some odd reason the precision decimal survives if wo dont increment further.. } - $formOutStr = $this->resolveFormulaString($formOutStr, $formPrecision, $level); + $formOutStr = $this->resolveFormulaString($formOutStr, $formPrecision, $level, $interactive); $formula = substr_replace($formula, $formOutStr, $formStartPos, ($formCurPos - $formStartPos)); } @@ -663,7 +667,7 @@ class SpellList extends BaseType continue; } $pos += strlen($result[0]); - $str .= $this->resolveVariableString($result, $level); + $str .= $this->resolveVariableString($result, $level, $interactive); } $str .= substr($formula, $pos); $str = str_replace('#', '$', $str); // reset marks @@ -676,7 +680,7 @@ class SpellList extends BaseType // should probably used only once to create ?_spell. come to think of it, it yields the same results every time.. it absolutely has to! // although it seems to be pretty fast, even on those pesky test-spells with extra complex tooltips (Ron Test Spell X)) - public function parseText($type = 'description', $level = MAX_LEVEL) + public function parseText($type = 'description', $level = MAX_LEVEL, $interactive = false) { // oooo..kaaayy.. parsing text in 6 or 7 easy steps // we don't use the internal iterator here. This func has to be called for the individual template. @@ -902,7 +906,7 @@ class SpellList extends BaseType ++$formCurPos; // for some odd reason the precision decimal survives if wo dont increment further.. } - $formOutStr = $this->resolveFormulaString($formOutStr, $formPrecision, $level); + $formOutStr = $this->resolveFormulaString($formOutStr, $formPrecision, $level, $interactive); $data = substr_replace($data, $formOutStr, $formStartPos, ($formCurPos - $formStartPos)); } @@ -929,7 +933,7 @@ class SpellList extends BaseType $pos += strlen($result[0]); - $resolved = $this->resolveVariableString($result, $level); + $resolved = $this->resolveVariableString($result, $level, $interactive); $str .= intVal($resolved) ? abs($resolved) : $resolved; } $str .= substr($data, $pos); diff --git a/includes/defines.php b/includes/defines.php index 9f3d96cb..a639afd2 100644 --- a/includes/defines.php +++ b/includes/defines.php @@ -106,6 +106,11 @@ define('ITEMINFO_LOOT', 0x8); define('MAX_LEVEL', 80); +// Sides +define('SIDE_ALLIANCE', 1); +define('SIDE_HORDE', 2); +define('SIDE_BOTH', 3); + // ClassMask define('CLASS_WARRIOR', 0x1); define('CLASS_PALADIN', 0x2); diff --git a/includes/kernel.php b/includes/kernel.php index 94d293b1..747dc3d5 100644 --- a/includes/kernel.php +++ b/includes/kernel.php @@ -20,7 +20,7 @@ require 'includes/class.database.php'; // autoload any List-Classes spl_autoload_register(function ($class) { - if (strpos($class, 'List')) + if (strpos($class, 'List') && !strpos($class, 'Filter')) require 'includes/class.'.strtr($class, ['List' => '']).'.php'; }); diff --git a/includes/utilities.php b/includes/utilities.php index ee2186a0..9f169b91 100644 --- a/includes/utilities.php +++ b/includes/utilities.php @@ -35,20 +35,20 @@ abstract class BaseType * results in * WHERE id = 45 OR name NOT LIKE %test% LIMIT 5; */ - public function __construct($conditions = []) + public function __construct($conditions = [], $applyFilter = false) { global $AoWoWconf; // yes i hate myself.. $sql = []; $linking = ' AND '; $limit = ' LIMIT '.$AoWoWconf['sqlLimit']; - $className = strtr(get_class($this), ['List' => '']); + $className = get_class($this); if (!$this->setupQuery || !$this->matchQuery) return; // may be called without filtering - if (class_exists($className.'Filter')) + if ($applyFilter && class_exists($className.'Filter')) { $fiName = $className.'Filter'; $this->filter = new $fiName(); @@ -78,20 +78,29 @@ abstract class BaseType if (is_array($c[1])) { + $val = implode(',', Util::sqlEscape($c[1])); + if (!$val) + continue; + $op = (isset($c[2]) && $c[2] == '!') ? 'NOT IN' : 'IN'; - $val = '('.implode(',', Util::sqlEscape($c[1])).')'; + $val = '('.$val.')'; } else if (is_string($c[1])) { - $op = (isset($c[2]) && $c[2] == '!') ? 'NOT LIKE' : 'LIKE'; - $val = '"%'.Util::sqlEscape($c[1]).'%"'; + $val = Util::sqlEscape($c[1]); + if (!$val) + continue; + $op = (isset($c[2]) && $c[2] == '!') ? 'NOT LIKE' : 'LIKE'; + $val = '"%'.$val.'%"'; } else if (is_int($c[1])) { $op = (isset($c[2]) && $c[2] == '!') ? '<>' : '='; $val = Util::sqlEscape($c[1]); } + else // null for example + continue; if (isset($c[2]) && $c[2] != '!') $op = $c[2]; @@ -104,16 +113,15 @@ abstract class BaseType $limit = $c > 0 ? ' LIMIT '.$c : ''; else continue; // ignore other possibilities - } // todo: add strings propperly without them being escaped by simpleDB..? - $this->setupQuery = str_replace('[filter]', $this->filter && $this->filter->buildFilterQuery() ? $this->filter->query.' AND ' : NULL, $this->setupQuery); - $this->setupQuery = str_replace('[cond]', empty($sql) ? '1' : '('.implode($linking, $sql).')', $this->setupQuery); + $this->setupQuery = str_replace('[filter]', $this->filter && $this->filter->buildQuery() ? $this->filter->getQuery().' AND ' : NULL, $this->setupQuery); + $this->setupQuery = str_replace('[cond]', empty($sql) ? '1' : '('.implode($linking, $sql).')', $this->setupQuery); $this->setupQuery .= $limit; - $this->matchQuery = str_replace('[filter]', $this->filter && $this->filter->buildFilterQuery() ? $this->filter->query.' AND ' : NULL, $this->matchQuery); - $this->matchQuery = str_replace('[cond]', empty($sql) ? '1' : '('.implode($linking, $sql).')', $this->matchQuery); + $this->matchQuery = str_replace('[filter]', $this->filter && $this->filter->buildQuery() ? $this->filter->getQuery().' AND ' : NULL, $this->matchQuery); + $this->matchQuery = str_replace('[cond]', empty($sql) ? '1' : '('.implode($linking, $sql).')', $this->matchQuery); $rows = DB::Aowow()->Select($this->setupQuery); if (!$rows) @@ -162,10 +170,10 @@ abstract class BaseType return $this->curTpl[$field]; } - public function filterGetJs() + public function filterGetSetCriteria() { - if ($this->filter && isset($this->filter->fiData['c']['cr'])) - return "fi_setCriteria([".@implode(',',$this->filter->fiData['c']['cr'])."], [".@implode(',',$this->filter->fiData['c']['crs'])."], ['".@implode('\', \'',$this->filter->fiData['c']['crv'])."']);"; + if ($this->filter) + return $this->filter->getSetCriteria(); else return null; } @@ -173,11 +181,19 @@ abstract class BaseType public function filterGetForm() { if ($this->filter) - return $this->filter->form; + return $this->filter->getForm(); else return []; } + public function filterGetError() + { + if ($this->filter) + return $this->filter->error; + else + return false; + } + // should return data required to display a listview of any kind // this is a rudimentary example, that will not suffice for most Types abstract public function getListviewData(); @@ -233,14 +249,15 @@ class Lang public static $main; public static $search; public static $game; - public static $filter; public static $error; public static $account; public static $achievement; public static $compare; + public static $currency; public static $event; public static $item; + public static $itemset; public static $maps; public static $spell; public static $talent; @@ -411,7 +428,7 @@ class SmartyAoWoW extends Smarty $this->left_delimiter = '{'; $this->right_delimiter = '}'; $this->caching = false; // Total Cache, this site does not work - $this->assign('app_name', $config['page']['name']); + $this->assign('appName', $config['page']['name']); $this->assign('AOWOW_REVISION', AOWOW_REVISION); $this->_tpl_vars['page'] = array( 'reqJS' => [], // <[string]> path to required JSFile @@ -438,18 +455,14 @@ class SmartyAoWoW extends Smarty public function display($tpl) { // since it's the same for every page, except index.. - if (!$this->_tpl_vars['query'][0]) - return; + if ($this->_tpl_vars['query'][0] && !preg_match('/[^a-z]/i', $this->_tpl_vars['query'][0])) + { + $ann = DB::Aowow()->Select('SELECT * FROM ?_announcements WHERE flags & 0x10 AND (page = ?s OR page = "*")', $this->_tpl_vars['query'][0]); + foreach ($ann as $k => $v) + $ann[$k]['text'] = Util::localizedString($v, 'text'); - // sanitize - if (preg_match('/[^a-z]/i', $this->_tpl_vars['query'][0])) - return; - - $ann = DB::Aowow()->Select('SELECT * FROM ?_announcements WHERE flags & 0x10 AND (page = ?s OR page = "*")', $this->_tpl_vars['query'][0]); - foreach ($ann as $k => $v) - $ann[$k]['text'] = Util::localizedString($v, 'text'); - - $this->_tpl_vars['announcements'] = $ann; + $this->_tpl_vars['announcements'] = $ann; + } parent::display($tpl); } @@ -597,6 +610,7 @@ class Util public static $filterResultString = 'sprintf(%s, %s, %s) + LANG.dash + LANG.lvnote_tryfiltering.replace(\'\', \'\')'; public static $narrowResultString = 'sprintf(%s, %s, %s) + LANG.dash + LANG.lvnote_trynarrowing'; + public static $setCriteriaString = "fi_setCriteria(%s, %s, %s);\n"; public static $expansionString = array( // 3 & 4 unused .. obviously null, 'bc', 'wotlk', 'cata', 'mop' @@ -1232,18 +1246,14 @@ class Util return 0; } - private static function db_conform_array_callback(&$item, $key) + public static function sqlEscape($data) { - $item = Util::sqlEscape($item); - } + if (!is_array($data)) + return mysql_real_escape_string(trim($data)); - public static function sqlEscape($string) - { - if (!is_array($string)) - return mysql_real_escape_string(trim($string)); + array_walk($data, function(&$item, $key) { $item = Util::sqlEscape($item); }); - array_walk($string, 'Util::db_conform_array_callback'); - return $string; + return $data; } public static function jsEscape($string) @@ -1260,16 +1270,26 @@ class Util public static function localizedString($data, $field) { + $sqlLocales = ['EN', 2 => 'FR', 3 => 'DE', 6 => 'ES', 8 => 'RU']; + // default back to enUS if localization unavailable // default case: selected locale available if (!empty($data[$field.'_loc'.User::$localeId])) return $data[$field.'_loc'.User::$localeId]; + // dbc-case + else if (!empty($data[$field.$sqlLocales[User::$localeId]])) + return $data[$field.$sqlLocales[User::$localeId]]; + // locale not enUS; aowow-type localization available; add brackets else if (User::$localeId != LOCALE_EN && isset($data[$field.'_loc0']) && !empty($data[$field.'_loc0'])) return '['.$data[$field.'_loc0'].']'; + // dbc-case + else if (User::$localeId != LOCALE_EN && isset($data[$field.$sqlLocales[0]]) && !empty($data[$field.$sqlLocales[0]])) + return '['.$data[$field.$sqlLocales[0]].']'; + // locale not enUS; TC localization; add brackets else if (User::$localeId != LOCALE_EN && isset($data[$field]) && !empty($data[$field])) return '['.$data[$field].']'; @@ -1367,11 +1387,12 @@ class Util break; case 3: case 7: - $spl = new SpellList(array(['id', (int)$enchant['object'.$h]])); - $gain = $spl->getStatGain(); + $spl = new SpellList(array(['id', (int)$enchant['object'.$h]])); + $gains = $spl->getStatGain(); - foreach ($gain as $k => $v) // array_merge screws up somehow... - @$jsonStats[$k] += $v; + foreach ($gains as $gain) + foreach ($gain as $k => $v) // array_merge screws up somehow... + @$jsonStats[$k] += $v; break; case 4: switch ($enchant['object'.$h]) diff --git a/localization/locale_dede.php b/localization/locale_dede.php index 790421d1..fdad5b07 100644 --- a/localization/locale_dede.php +++ b/localization/locale_dede.php @@ -18,7 +18,6 @@ $lang = array( 'profiles' => "Deine Charaktere", 'links' => "Links", 'pageNotFound' => "Diese|Dieser|Dieses %s existiert nicht.", // todo: dämliche Fälle... - 'both' => "Beide", 'gender' => "Geschlecht", 'sex' => [null, 'Mann', 'Frau'], 'quickFacts' => "Kurzübersicht", @@ -50,61 +49,20 @@ $lang = array( // pwd_err = Gib bitte dein Passwort ein // signin_msg = Gib bitte deinen Accountnamen ein // c_pwd = Passwort wiederholen - // create_filter = Filter erstellen - // loading = Lädt ... - // soldby = Verkauft von - // droppedby = Gedroppt von - // containedinobject = Enthalten in - // containedinitem = Enthalten in Item - // contain = Enthält - // objectiveof = Ziel von - // rewardof = Belohnung von // facts = Übersicht - // pickpocketingloot = Gestohlen von - // prospectedfrom = Sondiert aus - // canbeplacedin = Kann abgelegt werden in - // minedfromobject = Abgebaut aus - // gatheredfromobject = Gesammelt von - // items = Gegenstände - // objects = Objekte - // quests = Quests - // npcs = NPCs - // drop = Drop - // starts = Startet - // ends = Beendet - // skinning = Kürschnerei - // pickpocketing = Taschendiebstahl - // sells = Verkauft - // reputationwith = Ruf mit der Fraktion - // experience = Erfahrung - // uponcompletionofthisquestyouwillgain = Bei Abschluss dieser Quest erhaltet Ihr - // reagentfor = Reagenz für - // skinnedfrom = Gekürschnert von - // disenchanting = Entzaubern // This_Object_cant_be_found = Der Standort dieses Objekts ist nicht bekannt. - // itemsets = Sets - // Spells = Zauber - // Items = Gegenstände - // Quests = Quests - // Factions = Fraktionen - // Item_Sets = Sets - // Compare = Gegenstandsvergleichswerkzeug - // NPCs = NPCs - // Objects = Objekte - // My_account = Mein Account - // Comments = Kommentare - // Latest_Comments = Neuste Kommentare - // day = Tag. - // hr = Std. - // min = Min. - // sec = Sek. - // Respawn = Respawn - // Class = Klasse - // class = Klasse - // race = Volk - // Race = Volk - // Races = Völker + // filter + 'extSearch' => "Erweiterte Suche", + 'addFilter' => "Weiteren Filter hinzufügen", + 'match' => "Verwendete Filter", + 'allFilter' => "Alle Filters", + 'oneFilter' => "Mindestens einer", + 'applyFilter' => "Filter anwenden", + 'resetForm' => "Formular zurücksetzen", + 'refineSearch' => "Tipp: Präzisiere deine Suche mit Durchsuchen einer Unterkategorie.", + + // infobox 'disabled' => "Deaktiviert", 'disabledHint' => "Kann nicht erhalten oder abgeschlossen werden.", 'serverside' => "Serverseitig", @@ -117,10 +75,10 @@ $lang = array( 'tryAgain' => "Bitte versucht es mit anderen Suchbegriffen oder überprüft deren Schreibweise.", ), 'game' => array( - 'alliance' => "Allianz", - 'horde' => "Horde", 'class' => "Klasse", 'classes' => "Klassen", + 'currency' => "Währung", + 'currencies' => "Währungen", 'races' => "Völker", 'title' => "Titel", 'titles' => "Titel", @@ -128,15 +86,18 @@ $lang = array( 'event' => "Weltereigniss", 'events' => "Weltereignisse", 'cooldown' => "%s Abklingzeit", + 'itemset' => "Ausrüstungsset", + 'itemsets' => "Ausrüstungssets", 'requires' => "Benötigt", 'reqLevel' => "Benötigt Stufe %s", 'reqLevelHlm' => "Benötigt Stufe %s", 'valueDelim' => " - ", // " bis " + 'si' => array(-2 => "Nur für Horde", -1 => "Nur für Allianz", null, "Allianz", "Horde", "Beide"), 'resistances' => array(null, 'Heiligwiderstand', 'Feuerwiderstand', 'Naturwiderstand', 'Frostwiderstand', 'Schattenwiderstand', 'Arkanwiderstand'), 'sc' => array("Körperlich", "Heilig", "Feuer", "Natur", "Frost", "Schatten", "Arkan"), 'di' => array(null, "Magie", "Fluch", "Krankheit", "Gift", "Verstohlenheit", "Unsichtbarkeit", null, null, "Wut"), - 'cl' => array("UNK_CL0", "Krieger", "Paladin", "Jäger", "Schurke", "Priester", "Todesritter", "Schamane", "Magier", "Hexenmeister", 'UNK_CL10', "Druide"), - 'ra' => array(-2 => "Horde", -1 => "Allianz", "Beide", "Mensch", "Orc", "Zwerg", "Nachtelf", "Untoter", "Taure", "Gnom", "Troll", 'UNK_RA9', "Blutelf", "Draenei"), + 'cl' => array(null, "Krieger", "Paladin", "Jäger", "Schurke", "Priester", "Todesritter", "Schamane", "Magier", "Hexenmeister", null, "Druide"), + 'ra' => array(-2 => "Horde", -1 => "Allianz", "Beide", "Mensch", "Orc", "Zwerg", "Nachtelf", "Untoter", "Taure", "Gnom", "Troll", null, "Blutelf", "Draenei"), 'rep' => array("Hasserfüllt", "Feindselig", "Unfreundlich", "Neutral", "Freundlich", "Wohlwollend", "Respektvoll", "Ehrfürchtig"), 'st' => array( null, "Katzengestalt", "Baum des Lebens", "Reisegestalt", "Wassergestalt", @@ -155,18 +116,6 @@ $lang = array( "Marschall / Kriegsherr", "Feldmarschall / Kriegsfürst", "Großmarschall / Oberster Kriegsfürst" ), ), - 'filter' => array( - 'extSearch' => "Erweiterte Suche", - 'onlyAlliance' => "Nur für Allianz", - 'onlyHorde' => "Nur für Horde", - 'addFilter' => "Weiteren Filter hinzufügen", - 'match' => "Verwendete Filter", - 'allFilter' => "Alle Filters", - 'oneFilter' => "Mindestens einer", - 'applyFilter' => "Filter anwenden", - 'resetForm' => "Formular zurücksetzen", - 'refineSearch' => "Tipp: Präzisiere deine Suche mit Durchsuchen einer Unterkategorie.", - ), 'error' => array( 'errNotFound' => "Seite nicht gefunden", 'errPage' => "Was? Wie hast du... vergesst es!\n
\n
\nAnscheinend konnte die von Euch angeforderte Seite nicht gefunden werden. Wenigstens nicht in dieser Dimension.\n
\n
\nVielleicht lassen einige Justierungen an der\n\n[WH-799 Großkonfabulierungsmaschine]\n\ndie Seite plötzlich wieder auftauchen!\n
\n
\nOder, Ihr könnt es auch \nuns melden\n- die Stabilität des WH-799 ist umstritten, und wir möchten gern noch so ein Problem vermeiden...", @@ -264,6 +213,27 @@ $lang = array( 'Allgemein', 'Spieler gegen Spieler', 'Ruf', 'Dungeon & Schlachtzug', 'Quests', 'Berufe', 'Weltereignisse' ) ), + 'currency' => array( + 'cat' => array( + 1 => "Verschiedenes", 2 => "Spieler gegen Spieler", 4 => "Classic", 21 => "Wrath of the Lich King", 22 => "Dungeon und Schlachtzug", 23 => "Burning Crusade", 41 => "Test", 3 => "Unbenutzt" + ) + ), + 'itemset' => array( + 'notes' => array( + null, "Dungeon-Set 1", "Dungeon-Set 2", "Tier 1 Raid-Set", + "Tier 2 Raid-Set", "Tier 3 Raid-Set", "Level 60 PvP-Set (Rar)", "Level 60 PvP-Set (Rar, alt)", + "Level 60 PvP-Set (Episch)", "Set der Ruinen von Ahn'Qiraj", "Set des Tempels von Ahn'Qiraj", "Set von Zul'Gurub", + "Tier 4 Raid-Set", "Tier 5 Raid-Set", "Dungeon-Set 3", "Set des Arathibeckens", + "Level 70 PvP-Set (Rar)", "Arena-Set Saison 1", "Tier 6 Raid-Set", "Arena-Set Saison 2", + "Arena-Set Saison 3", "Level 70 PvP-Set 2 (Rar)", "Arena-Set Saison 4", "Tier 7 Raid-Set", + "Arena-Set Saison 5", "Tier 8 Raid-Set", "Arena-Set Saison 6", "Tier 9 Raid-Set", + "Arena-Set Saison 7", "Tier 10 Raid-Set", "Arena-Set Saison 8" + ), + 'types' => array( + null, "Stoff", "Leder", "Schwere R\u00fcstung", "Platte", "Dolch", "Ring", + "Faustwaffe", "Einhandaxt", "Einhandstreitkolben", "Einhandschwert", "Schmuck", "Amulett" + ) + ), 'spell' => array( 'remaining' => "Noch %s", 'untilCanceled' => "bis Abbruch", @@ -317,6 +287,10 @@ $lang = array( 'socket' => array ( "Metasockel", "Roter Sockel", "Gelber Sockel", "Blauer Sockel", -1 => "Prismatischer Sockel" ), + 'quality' => array ( + "Schlecht", "Verbreitet", "Selten", "Rar", + "Episch", "Legendär", "Artefakt", "Erbstücke", + ), 'trigger' => array ( "Benutzen: ", "Anlegen: ", "Chance bei Treffer: ", null, null, null, null diff --git a/localization/locale_enus.php b/localization/locale_enus.php index e46f07ce..5c59963e 100644 --- a/localization/locale_enus.php +++ b/localization/locale_enus.php @@ -18,7 +18,6 @@ $lang = array( 'profiles' => "Your Characters", 'links' => "Links", 'pageNotFound' => "This %s doesn't exist.", - 'both' => "Both", 'gender' => "Gender", 'sex' => [null, 'Male', 'Female'], 'quickFacts' => "Quick Facts", @@ -49,63 +48,20 @@ $lang = array( // pwd_err = Enter your password // signin_msg = Enter your game account // c_pwd = Repeat password - // create_filter = Create a filter - // loading = Loading ... - // soldby = Sold by - // droppedby = Dropped by - // containedinobject = Contained in - // containedinitem = Contained in item - // contain = Contains - // objectiveof = Objective of - // rewardof = Reward of // facts = Facts - // pickpocketingloot = Pickpocketing - // prospectedfrom = Prospect from - // canbeplacedin = Can be placed in - // minedfromobject = Mined from - // gatheredfromobject = Gathered from - // items = Items - // objects = Objects - // quests = Quests - // npcs = NPCs - // drop = Drop - // starts = Starts - // ends = Ends - // skinning = Skinning - // pickpocketing = Pickpocketing - // sells = Sells - // reputationwith = Reputation with - // experience = experience - // uponcompletionofthisquestyouwillgain = Upon completion of quests, get - // reagentfor = Reagent for - // skinnedfrom = Skinned from - // disenchanting = Disenchanting // This_Object_cant_be_found = Object map not available, Object may be spawned via a script - // itemsets = Item Sets - // Spells = Spells - // Items = Items - // Quests = Quests - // Factions = Factions - // Item_Sets = Item sets - // NPCs = NPCs - // Objects = Objects - // Compare = Item Comparison Tool - // My_account = My account - // Comments = Comments - // Latest_Comments = Latest comments - // day = days - // hr = hr - // min = min - // sec = sec - // Respawn = Respawn - // Class = Class - // class = class - // race = race - // Race = Race - // Races = Races - // name = name - // Name = Name - // slain = slain + + // filter + 'extSearch' => "Extended search", + 'addFilter' => "Add another Filter", + 'match' => "Match", + 'allFilter' => "All filters", + 'oneFilter' => "At least one", + 'applyFilter' => "Apply filter", + 'resetForm' => "Reset Form", + 'refineSearch' => "Tip: Refine your search by browsing a subcategory.", + + // infobox 'name' => "Name", 'disabled' => "Disabled", 'disabledHint' => "Cannot be attained or completed", @@ -119,10 +75,10 @@ $lang = array( 'tryAgain' => "Please try some different keywords or check your spelling.", ), 'game' => array( - 'alliance' => "Alliance", - 'horde' => "Horde", 'class' => "class", 'classes' => "Classes", + 'currency' => "currency", + 'currencies' => "Currencies", 'races' => "Races", 'title' => "title", 'titles' => "Titles", @@ -130,15 +86,18 @@ $lang = array( 'event' => "World Event", 'events' => "World Events", 'cooldown' => "%s cooldown", + 'itemset' => "item Set", + 'itemsets' => "Item Sets", 'requires' => "Requires", 'reqLevel' => "Requires Level %s", 'reqLevelHlm' => "Requires Level %s", 'valueDelim' => " to ", + 'si' => array(-2 => "Horde only", -1 => "Alliance only", null, "Alliance", "Horde", "Both"), 'resistances' => array(null, 'Holy Resistance', 'Fire Resistance', 'Nature Resistance', 'Frost Resistance', 'Shadow Resistance', 'Arcane Resistance'), 'di' => array(null, "Magic", "Curse", "Disease", "Poison", "Stealth", "Invisibility", null, null, "Enrage"), 'sc' => array("Physical", "Holy", "Fire", "Nature", "Frost", "Shadow", "Arcane"), - 'cl' => array("UNK_CL0", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", 'UNK_CL10', "Druid"), - 'ra' => array(-2 => "Horde", -1 => "Alliance", "Both", "Human", "Orc", "Dwarf", "Night Elf", "Undead", "Tauren", "Gnome", "Troll", 'UNK_RA9', "Blood Elf", "Draenei"), + 'cl' => array(null, "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", null, "Druid"), + 'ra' => array(-2 => "Horde", -1 => "Alliance", "Both", "Human", "Orc", "Dwarf", "Night Elf", "Undead", "Tauren", "Gnome", "Troll", null, "Blood Elf", "Draenei"), 'rep' => array("Hated", "Hostile", "Unfriendly", "Neutral", "Friendly", "Honored", "Revered", "Exalted"), 'st' => array( null, "Cat Form", "Tree of Life", "Travel Form", "Aquatic Form", @@ -157,18 +116,6 @@ $lang = array( "Marshal / General", "Field Marshal / Warlord", "Grand Marshal / High Warlord" ), ), - 'filter' => array( - 'extSearch' => "Extended search", - 'onlyAlliance' => "Alliance only", - 'onlyHorde' => "Horde only", - 'addFilter' => "Add another Filter", - 'match' => "Match", - 'allFilter' => "All filters", - 'oneFilter' => "At least one", - 'applyFilter' => "Apply filter", - 'resetForm' => "Reset Form", - 'refineSearch' => "Tip: Refine your search by browsing a subcategory.", - ), 'error' => array( 'errNotFound' => "Page not found", 'errPage' => "What? How did you... nevermind that!\n
\n
\nIt appears that the page you have requested cannot be found. At least, not in this dimension.\n
\n
\nPerhaps a few tweaks to the [WH-799 Major Confabulation Engine] may result in the page suddenly making an appearance!\n
\n
\nOr, you can try \ncontacting us\n- the stability of the WH-799 is debatable, and we wouldn't want another accident...", @@ -266,6 +213,27 @@ $lang = array( 'General', 'Player vs. Player', 'Reputation', 'Dungeons & Raids', 'Quests', 'Professions', 'World Events' ) ), + 'currency' => array( + 'cat' => array( + 1 => "Miscellaneous", 2 => "Player vs. Player", 4 => "Classic", 21 => "Wrath of the Lich King", 22 => "Dungeon and Raid", 23 => "Burning Crusade", 41 => "Test", 3 => "Unused" + ) + ), + 'itemset' => array( + 'notes' => array( + null, "Dungeon Set 1", "Dungeon Set 2", "Tier 1 Raid Set", + "Tier 2 Raid Set", "Tier 3 Raid Set", "Level 60 PvP Rare Set", "Level 60 PvP Rare Set (Old)", + "Level 60 PvP Epic Set", "Ruins of Ahn'Qiraj Set", "Temple of Ahn'Qiraj Set", "Zul'Gurub Set", + "Tier 4 Raid Set", "Tier 5 Raid Set", "Dungeon Set 3", "Arathi Basin Set", + "Level 70 PvP Rare Set", "Arena Season 1 Set", "Tier 6 Raid Set", "Arena Season 2 Set", + "Arena Season 3 Set", "Level 70 PvP Rare Set 2", "Arena Season 4 Set", "Tier 7 Raid Set", + "Arena Season 5 Set", "Tier 8 Raid Set", "Arena Season 6 Set", "Tier 9 Raid Set", + "Arena Season 7 Set", "Tier 10 Raid Set", "Arena Season 8 Set" + ), + 'types' => array( + null, "Cloth", "Leather", "Mail", "Plate", "Dagger", "Ring", + "Fist Weapon", "One-Handed Axe", "One-Handed Mace", "One-Handed Sword", "Trinket", "Amulet" + ) + ), 'spell' => array( 'remaining' => "%s remaining", 'untilCanceled' => "until canceled", @@ -319,6 +287,10 @@ $lang = array( 'socket' => array( "Meta Socket", "Red Socket", "Yellow Socket", "Blue Socket", -1 => "Prismatic Socket" ), + 'quality' => array ( + "Poor", "Common", "Uncommon", "Rare", + "Epic", "Legendary", "Artifact", "Heirloom" + ), 'trigger' => array ( "Use: ", "Equip: ", "Chance on hit: ", null, null, null, null diff --git a/localization/locale_eses.php b/localization/locale_eses.php index db4dd456..4fd0cbc9 100644 --- a/localization/locale_eses.php +++ b/localization/locale_eses.php @@ -18,7 +18,6 @@ $lang = array( 'profiles' => "Tus personajes", // translate.google :x 'links' => "Enlaces", 'pageNotFound' => "Este %s no existe.", - 'both' => "Ambos", 'gender' => "Género", 'sex' => [null, 'Hombre', 'Mujer'], 'quickFacts' => "Notas rápidas", @@ -46,6 +45,17 @@ $lang = array( 'millisecsAbbr' => "[ms]", 'name' => "Nombre", + // filter + 'extSearch' => "Extender búsqueda", + 'addFilter' => "Añadir otro filtro", + 'match' => "Aplicar", + 'allFilter' => "Todos los filtros", + 'oneFilter' => "Por lo menos uno", + 'applyFilter' => "Aplicar filtro", + 'resetForm' => "Reiniciar formulario", + 'refineSearch' => "Sugerencia: Refina tu búsqueda llendo a una subcategoría.", + + // infobox 'disabled' => "[Disabled]", 'disabledHint' => "[Cannot be attained or completed]", 'serverside' => "[Serverside]", @@ -58,10 +68,10 @@ $lang = array( 'tryAgain' => "Por favor, introduzca otras palabras claves o verifique el término ingresado.", ), 'game' => array( - 'alliance' => "Alianza", - 'horde' => "Horda", 'class' => "clase", 'classes' => "Clases", + 'currency' => "monedas", + 'currencies' => "Monedas", 'races' => "Razas", 'title' => "título", 'titles' => "Títulos", @@ -69,15 +79,18 @@ $lang = array( 'event' => "Suceso mundial ", 'events' => "Eventos del mundo", 'cooldown' => "%s de reutilización", + 'itemset' => "conjunto de objetos", + 'itemsets' => "Conjuntos de objetos", 'requires' => "Requiere", 'reqLevel' => "Necesitas ser de nivel %s", 'reqLevelHlm' => "Necesitas ser de nivel %s", 'valueDelim' => " - ", + 'si' => array(-2 => "Horda solamente", -1 => "Alianza solamente", null, "Alianza", "Horda", "Ambos"), 'resistances' => array(null, 'Resistencia a lo Sagrado', 'v', 'Resistencia a la Naturaleza', 'Resistencia a la Escarcha', 'Resistencia a las Sombras', 'Resistencia a lo Arcano'), 'sc' => array("Física", "Sagrado", "Fuego", "Naturaleza", "Escarcha", "Sombras", "Arcano"), 'di' => array(null, "Magia", "Maldición", "Enfermedad", "Veneno", "Sigilo", "Invisibilidad", null, null, "Enfurecer"), - 'cl' => array("UNK_CL0", "Guerrero", "Paladín", "Cazador", "Pícaro", "Sacerdote", "Caballero de la Muerte", "Chamán", "Mago", "Brujo", 'UNK_CL10', "Druida"), - 'ra' => array(-2 => "Horda", -1 => "Alianza", "Ambos", "Humano", "Orco", "Enano", "Elfo de la noche", "No-muerto", "Tauren", "Gnomo", "Trol ", 'UNK_RA9', "Blood Elf", "Elfo de sangre"), + 'cl' => array(null, "Guerrero", "Paladín", "Cazador", "Pícaro", "Sacerdote", "Caballero de la Muerte", "Chamán", "Mago", "Brujo", null, "Druida"), + 'ra' => array(-2 => "Horda", -1 => "Alianza", "Ambos", "Humano", "Orco", "Enano", "Elfo de la noche", "No-muerto", "Tauren", "Gnomo", "Trol ", null, "Blood Elf", "Elfo de sangre"), 'rep' => array("Odiado", "Hostil", "Adverso", "Neutral", "Amistoso", "Honorable", "Reverenciado", "Exaltado"), 'st' => array( null, "Forma felina", "Árbol de vida", "Forma de viaje", "Forma acuática", @@ -96,18 +109,6 @@ $lang = array( "Marshal / General", "Field Marshal / Warlord", "Grand Marshal / High Warlord" ), ), - 'filter' => array( - 'extSearch' => "Extender búsqueda", - 'onlyAlliance' => "Alianza solamente", - 'onlyHorde' => "Horda solamente", - 'addFilter' => "Añadir otro filtro", - 'match' => "Aplicar", - 'allFilter' => "Todos los filtros", - 'oneFilter' => "Por lo menos uno", - 'applyFilter' => "Aplicar filtro", - 'resetForm' => "Reiniciar formulario", - 'refineSearch' => "Sugerencia: Refina tu búsqueda llendo a una subcategoría.", - ), 'error' => array( 'errNotFound' => "Page not found", 'errPage' => "What? How did you... nevermind that!\n
\n
\nIt appears that the page you have requested cannot be found. At least, not in this dimension.\n
\n
\nPerhaps a few tweaks to the [WH-799 Major Confabulation Engine] may result in the page suddenly making an appearance!\n
\n
\nOr, you can try \ncontacting us\n- the stability of the WH-799 is debatable, and we wouldn't want another accident...", @@ -165,6 +166,27 @@ $lang = array( 'General', 'Jugador contra Jugador', 'Reputación', 'Mazmorras y bandas', 'Misiones', 'Profesiones', 'Eventos del mundo' ) ), + 'currency' => array( + 'cat' => array( + 1 => "Miscelánea", 2 => "Jugador contra Jugador", 4 => "Clásico", 21 => "Wrath of the Lich King", 22 => "Mazmorra y banda", 23 => "Burning Crusade", 41 => "Prueba", 3 => "No las uso" + ) + ), + 'itemset' => array( + 'notes' => array( + null, "Set de mazmorra 1", "Set de mazmorra 2", "Set de banda tier 1", + "Set de banda tier 2", "Set de banda tier 3", "Set JcJ nivel 60 superior", "Set JcJ nivel 60 superior (obsoleto)", + "Set JcJ nivel 60 épico", "Set de las Ruinas de Ahn'Qiraj", "Set del Templo de Ahn'Qiraj", "Set de Zul'Gurub", + "Set de banda tier 4", "Set de banda tier 5", "Set de mazmorra 3", "Set de la Cuenca de Arathi", + "Set JcJ nivel 70 superior", "Set de la Temporada de Arenas 1", "Set de banda tier 6", "Set de la Temporada de Arenas 2", + "Set de la Temporada de Arenas 3", "Set JcJ nivel 70 superior 2", "Set de la Temporada de Arenas 4", "Set de banda tier 7", + "Set de la Temporada de Arenas 5", "Set de banda tier 8", "Set de la Temporada de Arenas 6", "Set de banda tier 9", + "Set de la Temporada de Arenas 7", "Set de banda tier 10", "Set de la Temporada de Arenas 8" + ), + 'types' => array( + null, "Tela", "Cuero", "Malla", "Placas", "Daga", "Anillo", + "Arma de puño", "Hacha de uno mano", "Maza de uno mano", "Espada de uno mano", "Abalorio", "Amuleto" + ) + ), 'spell' => array( 'remaining' => "%s restantes", 'untilCanceled' => "hasta que se cancela", @@ -218,6 +240,10 @@ $lang = array( 'socket' => array( "Ranura meta", "Ranura roja", "Ranura amarilla", "Ranura azul", -1 => "Ranura prismática " ), + 'quality' => array ( + "Pobre", "Común", "Poco Común", "Raro", + "Épica", "Legendaria", "Artefacto", "Reliquia" + ), 'trigger' => array ( "Uso: ", "Equipar: ", "Probabilidad al acertar: ", null, null, null, null diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php index 755199b5..678d184b 100644 --- a/localization/locale_frfr.php +++ b/localization/locale_frfr.php @@ -18,7 +18,6 @@ $lang = array( 'profiles' => "Vos personnages", // translate.google :x 'links' => "Liens", 'pageNotFound' => "Ce %s n'existe pas.", - 'both' => "Les deux", 'gender' => "Genre", 'sex' => [null, 'Homme', 'Femme'], 'quickFacts' => "En bref", @@ -46,6 +45,17 @@ $lang = array( 'millisecsAbbr' => "[ms]", 'name' => "Nom", + // filter + 'extSearch' => "Recherche avancée", + 'addFilter' => "Ajouter un autre filtre", + 'match' => "Critère", + 'allFilter' => "Tous les filtres", + 'oneFilter' => "Au moins un", + 'applyFilter' => "Appliquer le filtre", + 'resetForm' => "Rétablir", + 'refineSearch' => "Astuce : Affinez votre recherche en utilisant une sous-catégorie.", + + // infobox 'disabled' => "[Disabled]", 'disabledHint' => "[Cannot be attained or completed]", 'serverside' => "[Serverside]", @@ -58,10 +68,10 @@ $lang = array( 'tryAgain' => "Veuillez essayer d'autres mots ou vérifiez l'orthographe des termes de recherche.", ), 'game' => array ( - 'alliance' => "Alliance", - 'horde' => "Horde", 'class' => "classe", 'classes' => "Classes", + 'currency' => "monnaies", + 'currencies' => "Monnaies", 'races' => "Races", 'title' => "titre", 'titles' => "Titres", @@ -69,15 +79,18 @@ $lang = array( 'event' => "Évènement mondial", 'events' => "Évènements mondiaux", 'cooldown' => "%s de recharge", + 'itemset' => "ensemble d'objets", + 'itemsets' => "Ensembles d'objets", 'requires' => "Requiert", 'reqLevel' => "Niveau %s requis", 'reqLevelHlm' => "Requiert Niveau %s", 'valueDelim' => " - ", + 'si' => array(-2 => "Horde seulement", -1 => "Alliance seulement", null, "Alliance", "Horde", "Les deux"), 'resistances' => array(null, 'Résistance au Sacré', 'Résistance au Feu', 'Résistance à la Nature', 'Résistance au Givre', 'Résistance à l\'Ombre', 'Résistance aux Arcanes'), 'di' => array(null, "Magie", "Malédiction", "Maladie", "Poison", "Camouflage", "Invisibilité", null, null, "Enrager"), 'sc' => array("Physique", "Sacré", "Feu", "Nature", "Givre", "Ombre", "Arcane"), - 'cl' => array("UNK_CL0", "Guerrier", "Paladin", "Chasseur", "Voleur", "Prêtre", "DeathChevalier de la mort", "Chaman", "Mage", "Démoniste", 'UNK_CL10', "Druide"), - 'ra' => array(-2 => "Horde", -1 => "Alliance", "Les deux", "Humain", "Orc", "Nain", "Elfe de la nuit", "Mort-vivant", "Tauren", "Gnome", "Troll", 'UNK_RA9', "Elfe de sang", "Draeneï"), + 'cl' => array(null, "Guerrier", "Paladin", "Chasseur", "Voleur", "Prêtre", "DeathChevalier de la mort", "Chaman", "Mage", "Démoniste", null, "Druide"), + 'ra' => array(-2 => "Horde", -1 => "Alliance", "Les deux", "Humain", "Orc", "Nain", "Elfe de la nuit", "Mort-vivant", "Tauren", "Gnome", "Troll", null, "Elfe de sang", "Draeneï"), 'rep' => array("Détesté", "Hostile", "Inamical", "Neutre", "Amical", "Honoré", "Révéré", "Exalté"), 'st' => array( null, "Forme de félin", "Arbre de vie", "Forme de voyage", "Aquatic Form", @@ -96,18 +109,6 @@ $lang = array( "Marshal / General", "Field Marshal / Warlord", "Grand Marshal / High Warlord" ), ), - 'filter' => array( - 'extSearch' => "Recherche avancée", - 'onlyAlliance' => "Alliance seulement", - 'onlyHorde' => "Horde seulement", - 'addFilter' => "Ajouter un autre filtre", - 'match' => "Critère", - 'allFilter' => "Tous les filtres", - 'oneFilter' => "Au moins un", - 'applyFilter' => "Appliquer le filtre", - 'resetForm' => "Rétablir", - 'refineSearch' => "Astuce : Affinez votre recherche en utilisant une sous-catégorie.", - ), 'error' => array( 'errNotFound' => "Page not found", 'errPage' => "What? How did you... nevermind that!\n
\n
\nIt appears that the page you have requested cannot be found. At least, not in this dimension.\n
\n
\nPerhaps a few tweaks to the [WH-799 Major Confabulation Engine] may result in the page suddenly making an appearance!\n
\n
\nOr, you can try \ncontacting us\n- the stability of the WH-799 is debatable, and we wouldn't want another accident...", @@ -165,6 +166,27 @@ $lang = array( 'Général', 'Joueur ctr. Joueur', 'Réputation', 'Donjons & raids', 'Quêtes', 'Métiers', 'Évènements mondiaux' ) ), + 'currency' => array( + 'cat' => array( + 1 => "Divers", 2 => "JcJ", 4 => "Classique", 21 => "Wrath of the Lich King", 22 => "Raid", 23 => "Burning Crusade", 41 => "Test", 3 => "Inutilisées" + ) + ), + 'itemset' => array( + 'notes' => array( + null, "Ensemble de donjon 1", "Ensemble de donjon 2", "Ensemble de raid palier 1", + "Ensemble de raid palier 2", "Ensemble de raid palier 3", "Ensemble JcJ niveau 60 supérieur", "Ensemble JcJ niveau 60 supérieur (désuet)", + "Ensemble JcJ niveau 60 épique", "Ensemble des ruines d'Ahn'Qiraj", "Ensemble d'Ahn'Qiraj", "Ensemble de Zul'Gurub", + "Ensemble de raid palier 4", "Ensemble de raid palier 5", "Ensemble de donjon 3", "Ensemble du bassin d'Arathi", + "Ensemble JcJ niveau 70 supérieur", "Ensemble d'arène saison 1", "Ensemble de raid palier 6", "Ensemble d'arène saison 2", + "Ensemble d'arène saison 3", "Ensemble JcJ niveau 70 supérieur 2", "Ensemble d'arène saison 4", "Ensemble de raid palier 7", + "Ensemble d'arène saison 5", "Ensemble de raid palier 8", "Ensemble d'arène saison 6", "Ensemble de raid palier 9", + "Ensemble d'arène saison 7", "Ensemble de raid palier 10", "Set d'Arena de la Saison 8" + ), + 'types' => array( + null, "Tissu", "Cuir", "Mailles", "Plaques", "Dague", "Anneau", + "Arme de pugilat", "Hache à une main", "Masse à une main", "Épée à une main", "Bijou", "Amulette" + ) + ), 'spell' => array( 'remaining' => "%s restantes", 'untilCanceled' => "jusqu’à annulation", @@ -218,6 +240,10 @@ $lang = array( 'socket' => array( "Méta-châsse", "Châsse rouge", "Châsse jaune", "Châsse bleue", -1 => "Châsse prismatique" ), + 'quality' => array ( + "Médiocre", "Classique", "Bonne", "Rare", + "Épique", "Légendaire", "Artefact", "Héritage" + ), 'trigger' => array ( "Utilise: ", "Équipé : ", "Chances quand vous touchez : ", null, null, null, null diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php index 1fc25eda..7814a0ae 100644 --- a/localization/locale_ruru.php +++ b/localization/locale_ruru.php @@ -18,7 +18,6 @@ $lang = array( 'profiles' => "Ваши персонажи", // translate.google :x 'links' => "Ссылки", 'pageNotFound' => "Такое %s не существует.", - 'both' => "Обе", 'gender' => "Пол", 'sex' => [null, 'Мужчина', 'Женщина'], 'quickFacts' => "Краткая информация", @@ -46,6 +45,17 @@ $lang = array( 'millisecsAbbr' => "[ms]", 'name' => "Название", + // filter + 'extSearch' => "Расширенный поиск", + 'addFilter' => "Добавить другой фильтр", + 'match' => "Совпадение", + 'allFilter' => "Все фильтры", + 'oneFilter' => "Любое совпадение", + 'applyFilter' => "Применить фильтр", + 'resetForm' => "Очистить форму", + 'refineSearch' => "Совет: Уточните поиск, добавив подкатегорию.", + + // infobox 'disabled' => "[Disabled]", 'disabledHint' => "[Cannot be attained or completed]", 'serverside' => "[Serverside]", @@ -58,10 +68,10 @@ $lang = array( 'tryAgain' => "Пожалуйста, попробуйте другие ключевые слова или проверьте правильность запроса.", ), 'game' => array( - 'alliance' => "Альянс", - 'horde' => "Орда", 'class' => "класс", 'classes' => "Классы", + 'currency' => "валюта", + 'currencies' => "Валюта", 'races' => "Расы", 'title' => "звание", 'titles' => "Звания", @@ -69,15 +79,18 @@ $lang = array( 'event' => "Событие", 'events' => "Игровые события", 'cooldown' => "Восстановление: %s", + 'itemset' => "комплект", + 'itemsets' => "Комплекты", 'requires' => "Требует:", 'reqLevel' => "Требуется уровень: %s", 'reqLevelHlm' => "Требуется уровень: %s", 'valueDelim' => " - ", + 'si' => array(-2 => "Орда только", -1 => "Альянс только", null, "Альянс", "Орда", "Обе"), 'resistances' => array(null, 'Сопротивление светлой магии', 'Сопротивление огню', 'Сопротивление силам природы', 'Сопротивление магии льда', 'Сопротивление темной магии', 'Сопротивление тайной магии'), 'di' => array(null, "Magic", "Curse", "Disease", "Poison", "Stealth", "Invisibility", null, null, "Enrage"), 'sc' => array("Физический урон", "Свет", "Огонь", "природа", "Лед", "Тьма", "Тайная магия"), - 'cl' => array("UNK_CL0", "Воин", "Паладин", "Охотник", "Разбойник", "Жрец", "Рыцарь смерти", "Шаман", "Маг", "Чернокнижник", 'UNK_CL10', "Друид"), - 'ra' => array(-2 => "Орда", -1 => "Альянс", "Обе", "Человек", "Орк", "Дворф", "Ночной эльф", "Нежить", "Таурен", "Гном", "Тролль", 'UNK_RA9', "Эльф крови", "Дреней"), + 'cl' => array(null, "Воин", "Паладин", "Охотник", "Разбойник", "Жрец", "Рыцарь смерти", "Шаман", "Маг", "Чернокнижник", null, "Друид"), + 'ra' => array(-2 => "Орда", -1 => "Альянс", "Обе", "Человек", "Орк", "Дворф", "Ночной эльф", "Нежить", "Таурен", "Гном", "Тролль", null, "Эльф крови", "Дреней"), 'rep' => array("Ненависть", "Враждебность", "Неприязнь", "Равнодушие", "Дружелюбие", "Уважение", "Почтение", "Превознесение"), 'st' => array( null, "Облик кошки", "TОблик Древа жизни", "Походный облик", "Водный облик", @@ -96,18 +109,6 @@ $lang = array( "Marshal / General", "Field Marshal / Warlord", "Grand Marshal / High Warlord" ), ), - 'filter' => array( - 'extSearch' => "Расширенный поиск", - 'onlyAlliance' => "Альянс только", - 'onlyHorde' => "Орда только", - 'addFilter' => "Добавить другой фильтр", - 'match' => "Совпадение", - 'allFilter' => "Все фильтры", - 'oneFilter' => "Любое совпадение", - 'applyFilter' => "Применить фильтр", - 'resetForm' => "Очистить форму", - 'refineSearch' => "Совет: Уточните поиск, добавив подкатегорию.", - ), 'error' => array( 'errNotFound' => "Page not found", 'errPage' => "What? How did you... nevermind that!\n
\n
\nIt appears that the page you have requested cannot be found. At least, not in this dimension.\n
\n
\nPerhaps a few tweaks to the [WH-799 Major Confabulation Engine] may result in the page suddenly making an appearance!\n
\n
\nOr, you can try \ncontacting us\n- the stability of the WH-799 is debatable, and we wouldn't want another accident...", @@ -165,6 +166,27 @@ $lang = array( 'Общее', 'PvP', 'Репутация', 'Подземелья и рейды', 'Задания', 'Профессии', 'Игровые события' ) ), + 'currency' => array( + 'cat' => array( + 1 => "Разное", 2 => "PvP", 4 => "World of Warcraft", 21 => "Wrath of the Lich King", 22 => "Подземелья и рейды", 23 => "Burning Crusade", 41 => "Test", 3 => "Неактивно" + ) + ), + 'itemset' => array( + 'notes' => array( + null, "Комплект подземелий 1", "Комплект подземелий 2", "Рейдовый комплект Tier 1", + "Рейдовый комплект Tier 2", "Рейдовый комплект Tier 3", "PvP Комплект для 60 уровня", "PvP Комплект для 60 уровня (старая версия)", + "Эпический PvP Комплект для 60 уровня", "Комплект из Руин Ан'Киража", "Комплект из Храма Ан'Киража", "Комплект Зул'Гуруба", + "Рейдовый комплект Tier 4", "Рейдовый комплект Tier 5", "Комплект подземелий 3", "Комплект Низин Арати", + "Редкий PvP Комплект для 70 уровня", "Комплект Арены 1 сезона", "Рейдовый комплект Tier 6", "Комплект Арены 2 сезона", + "Комплект Арены 3 сезона", "PvP Комплект для 70 уровня 2", "Комплект Арены 4 сезона", "Рейдовый комплект Tier 7", + "Комплект Арены 5 сезона", "Рейдовый комплект Tier 8", "Комплект Арены 6 сезона", "Рейдовый комплект Tier 9", + "Комплект Арены 7 сезона", "Рейдовый комплект Tier 10", "Комплект Арены 8 сезона" + ), + 'types' => array( + null, "Ткань", "Кожа", "Кольчуга", "Латы", "Кинжал", "Кольцо", + "Кистевое оружие", "Одноручный топор", "Одноручное дробящее", "Одноручный меч", "Аксессуар", "Амулет" + ) + ), 'spell' => array( 'remaining' => "Осталось: %s", 'untilCanceled' => "до отмены", @@ -218,6 +240,10 @@ $lang = array( 'socket' => array( "Особое гнездо", "Красное гнездо", "Желтое гнездо", "Синее гнездо", -1 => "Бесцветное гнездо" ), + 'quality' => array ( + "Низкий", "Обычный", "Необычный", "Редкий", + "Эпический", "Легендарный", "Артефакт", "Фамильная черта" + ), 'trigger' => array ( "Использование: ", "Если на персонаже: ", "Возможный эффект при попадании: ", null, null, null, null diff --git a/pages/compare.php b/pages/compare.php index 42a21052..2d513f2b 100644 --- a/pages/compare.php +++ b/pages/compare.php @@ -48,7 +48,7 @@ if ($compareString) $pageData['summary'] = json_encode($outSet, JSON_NUMERIC_CHECK); $iList = new ItemList(array(['i.entry', $items])); - $data = $iList->getListviewData(ITEMINFO_SUBITEMS | ITEMINFO_JSON); + $data = $iList->getListviewData(ITEMINFO_SUBITEMS | ITEMINFO_JSON); foreach ($data as $id => $item) { while ($iList->id != $id) diff --git a/pages/title.php b/pages/title.php index 3f2376b0..b926933b 100644 --- a/pages/title.php +++ b/pages/title.php @@ -22,12 +22,12 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData)) $infobox = []; $colon = User::$localeId == LOCALE_FR ? ' : ' : ': '; // Je suis un prick! <_< - if ($title->getField('side') == 1) - $infobox[] = Lang::$main['side'].$colon.'[span class=alliance-icon]'.Lang::$game['alliance'].'[/span]'; - else if ($title->getField('side') == 2) - $infobox[] = Lang::$main['side'].$colon.'[span class=horde-icon]'.Lang::$game['horde'].'[/span]'; + if ($title->getField('side') == SIDE_ALLIANCE) + $infobox[] = Lang::$main['side'].$colon.'[span class=alliance-icon]'.Lang::$game['si'][SIDE_ALLIANCE].'[/span]'; + else if ($title->getField('side') == SIDE_HORDE) + $infobox[] = Lang::$main['side'].$colon.'[span class=horde-icon]'.Lang::$game['si'][SIDE_HORDE].'[/span]'; else - $infobox[] = Lang::$main['side'].$colon.Lang::$main['both']; + $infobox[] = Lang::$main['side'].$colon.Lang::$game['si'][SIDE_BOTH]; if ($g = $title->getField('gender')) $infobox[] = Lang::$main['gender'].$colon.'[span class='.($g == 2 ? 'female' : 'male').'-icon]'.Lang::$main['sex'][$g].'[/span]'; diff --git a/search.php b/search.php index 8c536feb..d458f2d1 100644 --- a/search.php +++ b/search.php @@ -232,7 +232,7 @@ if ($searchMask & 0x10) if ($data = $money->getListviewData()) { while ($money->iterate()) - $data[$money->id]['param1'] = strToLower($money->getField('iconString')); + $data[$money->id]['param1'] = '"'.strToLower($money->getField('iconString')).'"'; $found['currency'] = array( 'type' => TYPE_CURRENCY, @@ -249,7 +249,7 @@ if ($searchMask & 0x10) // 6 Itemsets if ($searchMask & 0x20) { - $sets = new ItemsetList(array($maxResults, ['name_loc'.User::$localeId, $query])); + $sets = new ItemsetList(array($maxResults, ['item1', 0, '!'], ['name_loc'.User::$localeId, $query])); // remove empty sets from search $sets->addGlobalsToJscript($jsGlobals); if ($data = $sets->getListviewData()) @@ -274,19 +274,21 @@ if ($searchMask & 0x20) if ($searchMask & 0x40) { if (($searchMask & SEARCH_TYPE_JSON) && $type == TYPE_ITEMSET && isset($found['itemset'])) - $conditions = [['i.entry', array_keys($found['itemset']['pcsToSet'])]]; + $conditions = [['i.entry', array_keys($found['itemset']['pcsToSet'])], 0]; else if (($searchMask & SEARCH_TYPE_JSON) && $type == TYPE_ITEM) $conditions = [['i.class', [2, 4]], [User::$localeId ? 'name_loc'.User::$localeId : 'name', $query], $AoWoWconf['sqlLimit']]; else $conditions = [[User::$localeId ? 'name_loc'.User::$localeId : 'name', $query], $maxResults]; $items = new ItemList($conditions, @$found['itemset']['pcsToSet']); + $items->addGlobalsToJscript($jsGlobals); if ($data = $items->getListviewData($searchMask & SEARCH_TYPE_JSON ? (ITEMINFO_SUBITEMS | ITEMINFO_JSON) : 0)) { while ($items->iterate()) { + $data[$items->id]['name'] = substr($data[$items->id]['name'], 1); $data[$items->id]['param1'] = '"'.$items->getField('icon').'"'; $data[$items->id]['param2'] = $items->getField('Quality'); } diff --git a/template/js/filters.js b/template/js/filters.js index 6f09918b..59ce6dee 100644 --- a/template/js/filters.js +++ b/template/js/filters.js @@ -3,1216 +3,1902 @@ var fi_weights = null; var fi_weightsFactor; var fi_nExtraCols; var fi_gemScores; -var fi_upgradeId; + var fi_filters = { - items: [ - {id: 1, name: "sepgeneral"}, - {id: 131, name: "addedinwotlk", type: "yn"}, - {id: 110, name: "addedinbc", type: "yn"}, - {id: 82, name: "addedinp24", type: "yn"}, - {id: 2, name: "bindonpickup", type: "yn"}, - {id: 3, name: "bindonequip", type: "yn"}, - {id: 4, name: "bindonuse", type: "yn"}, - {id: 133, name: "bindtoaccount", type: "yn"}, - {id: 146, name: "heroicitem", type: "yn"}, - {id: 107, name: "effecttext", type: "str"}, - {id: 81, name: "fitsgemslot", type: "gem"}, - {id: 132, name: "glyphtype", type: "glyphtype"}, - {id: 80, name: "hassockets", type: "gem"}, - {id: 100, name: "nsockets", type: "num"}, - {id: 124, name: "randomenchants", type: "str"}, - {id: 125, name: "reqarenartng", type: "num"}, - {id: 111, name: "reqskillrank", type: "num"}, - {id: 99, name: "requiresprof", type: "profession"}, - {id: 66, name: "requiresprofspec", type: "profession"}, - {id: 17, name: "requiresrepwith", type: "faction-any+none"}, - {id: 15, name: "unique", type: "yn"}, - {id: 83, name: "uniqueequipped", type: "yn"}, - {id: 152, name: "classspecific", type: "classs"}, - {id: 153, name: "racespecific", type: "race"}, - {id: 19, name: "sepbasestats"}, - {id: 21, name: "agi", type: "num"}, - {id: 23, name: "int", type: "num"}, - {id: 22, name: "sta", type: "num"}, - {id: 24, name: "spi", type: "num"}, - {id: 20, name: "str", type: "num"}, - {id: 115, name: "health", type: "num"}, - {id: 116, name: "mana", type: "num"}, - {id: 60, name: "healthrgn", type: "num"}, - {id: 61, name: "manargn", type: "num"}, - {id: 120, name: "sepdefensivestats"}, - {id: 41, name: "armor", type: "num"}, - {id: 44, name: "blockrtng", type: "num"}, - {id: 43, name: "block", type: "num"}, - {id: 42, name: "defrtng", type: "num"}, - {id: 45, name: "dodgertng", type: "num"}, - {id: 46, name: "parryrtng", type: "num"}, - {id: 79, name: "resirtng", type: "num"}, - {id: 31, name: "sepoffensivestats"}, - {id: 77, name: "atkpwr", type: "num"}, - {id: 97, name: "feratkpwr", type: "num", indent: 1}, - {id: 114, name: "armorpenrtng", type: "num"}, - {id: 96, name: "critstrkrtng", type: "num"}, - {id: 117, name: "exprtng", type: "num"}, - {id: 103, name: "hastertng", type: "num"}, - {id: 119, name: "hitrtng", type: "num"}, - {id: 94, name: "splpen", type: "num"}, - {id: 123, name: "splpwr", type: "num"}, - {id: 52, name: "arcsplpwr", type: "num", indent: 1}, - {id: 53, name: "firsplpwr", type: "num", indent: 1}, - {id: 54, name: "frosplpwr", type: "num", indent: 1}, - {id: 55, name: "holsplpwr", type: "num", indent: 1}, - {id: 56, name: "natsplpwr", type: "num", indent: 1}, - {id: 57, name: "shasplpwr", type: "num", indent: 1}, - {id: 122, name: "sepweaponstats"}, - {id: 32, name: "dps", type: "num"}, - {id: 35, name: "damagetype", type: "resistance"}, - {id: 33, name: "dmgmin1", type: "num"}, - {id: 34, name: "dmgmax1", type: "num"}, - {id: 36, name: "speed", type: "num"}, - {id: 134, name: "mledps", type: "num"}, - {id: 135, name: "mledmgmin", type: "num"}, - {id: 136, name: "mledmgmax", type: "num"}, - {id: 137, name: "mlespeed", type: "num"}, - {id: 138, name: "rgddps", type: "num"}, - {id: 139, name: "rgddmgmin", type: "num"}, - {id: 140, name: "rgddmgmax", type: "num"}, - {id: 141, name: "rgdspeed", type: "num"}, - {id: 121, name: "sepresistances"}, - {id: 25, name: "arcres", type: "num"}, - {id: 26, name: "firres", type: "num"}, - {id: 28, name: "frores", type: "num"}, - {id: 30, name: "holres", type: "num"}, - {id: 27, name: "natres", type: "num"}, - {id: 29, name: "shares", type: "num"}, - {id: 67, name: "sepsource"}, - {id: 86, name: "craftedprof", type: "profession"}, - {id: 16, name: "dropsin", type: "zone"}, - {id: 105, name: "dropsinnormal", type: "heroicdungeon-any"}, - {id: 106, name: "dropsinheroic", type: "heroicdungeon-any"}, - {id: 147, name: "dropsinnormal10", type: "multimoderaid-any"}, - {id: 148, name: "dropsinnormal25", type: "multimoderaid-any"}, - {id: 149, name: "dropsinheroic10", type: "heroicraid-any"}, - {id: 150, name: "dropsinheroic25", type: "heroicraid-any"}, - {id: 68, name: "otdisenchanting", type: "yn"}, - {id: 69, name: "otfishing", type: "yn"}, - {id: 70, name: "otherbgathering", type: "yn"}, - {id: 71, name: "otitemopening", type: "yn"}, - {id: 72, name: "otlooting", type: "yn"}, - {id: 143, name: "otmilling", type: "yn"}, - {id: 73, name: "otmining", type: "yn"}, - {id: 74, name: "otobjectopening", type: "yn"}, - {id: 75, name: "otpickpocketing", type: "yn"}, - {id: 88, name: "otprospecting", type: "yn"}, - {id: 93, name: "otpvp", type: "pvp"}, - {id: 76, name: "otskinning", type: "yn"}, - {id: 118, name: "purchasablewith", type: "currency-any"}, - {id: 144, name: "purchasablewithhonor", type: "yn"}, - {id: 145, name: "purchasablewitharena", type: "yn"}, - {id: 18, name: "rewardedbyfactionquest", type: "side"}, - {id: 126, name: "rewardedbyquestin", type: "zone-any"}, - {id: 92, name: "soldbyvendor", type: "yn"}, - {id: 129, name: "soldbynpc", type: "str-small"}, - {id: 128, name: "sepsource", type: "itemsource"}, - {id: 47, name: "sepindividualstats"}, - {id: 37, name: "mleatkpwr", type: "num"}, - {id: 84, name: "mlecritstrkrtng", type: "num"}, - {id: 78, name: "mlehastertng", type: "num"}, - {id: 95, name: "mlehitrtng", type: "num"}, - {id: 38, name: "rgdatkpwr", type: "num"}, - {id: 40, name: "rgdcritstrkrtng", type: "num"}, - {id: 101, name: "rgdhastertng", type: "num"}, - {id: 39, name: "rgdhitrtng", type: "num"}, - {id: 49, name: "splcritstrkrtng", type: "num"}, - {id: 102, name: "splhastertng", type: "num"}, - {id: 48, name: "splhitrtng", type: "num"}, - {id: 51, name: "spldmg", type: "num"}, - {id: 50, name: "splheal", type: "num"}, - {id: 58, name: "sepmisc"}, - {id: 109, name: "armorbonus", type: "num"}, - {id: 90, name: "avgbuyout", type: "num"}, - {id: 65, name: "avgmoney", type: "num"}, - {id: 63, name: "buyprice", type: "num"}, - {id: 9, name: "conjureditem", type: "yn"}, - {id: 62, name: "cooldown", type: "num"}, - {id: 8, name: "disenchantable", type: "yn"}, - {id: 59, name: "dura", type: "num"}, - {id: 104, name: "flavortext", type: "str"}, - {id: 7, name: "hasflavortext", type: "yn"}, - {id: 142, name: "icon", type: "str"}, - {id: 10, name: "locked", type: "yn"}, - {id: 127, name: "notavailable", type: "yn"}, - {id: 85, name: "objectivequest", type: "side"}, - {id: 11, name: "openable", type: "yn"}, - {id: 12, name: "partofset", type: "yn"}, - {id: 98, name: "partyloot", type: "yn"}, - {id: 89, name: "prospectable", type: "yn"}, - {id: 5, name: "questitem", type: "yn"}, - {id: 13, name: "randomlyenchanted", type: "yn"}, - {id: 14, name: "readable", type: "yn"}, - {id: 87, name: "reagentforability", type: "profession"}, - {id: 64, name: "sellprice", type: "num"}, - {id: 6, name: "startsquest", type: "side"}, - {id: 91, name: "tool", type: "totemcategory"}, - {id: 151, name: "id", type: "num", before: "name"}, - {id: 112, name: "sepcommunity"}, - {id: 130, name: "hascomments", type: "yn"}, - {id: 113, name: "hasscreenshots", type: "yn"} - ], - npcs: [ - {id: 4, name: "sepgeneral"}, - {id: 36, name: "addedinwotlk", type: "yn"}, - {id: 26, name: "addedinbc", type: "yn"}, - {id: 13, name: "addedinp24", type: "yn"}, - {id: 5, name: "canrepair", type: "yn"}, - {id: 3, name: "faction", type: "faction"}, - {id: 6, name: "foundin", type: "zone"}, - {id: 1, name: "health", type: "num"}, - {id: 2, name: "mana", type: "num"}, - {id: 32, name: "instanceboss", type: "yn"}, - {id: 7, name: "startsquest", type: "side"}, - {id: 8, name: "endsquest", type: "side"}, - {id: 34, name: "usemodel", type: "str-small"}, - {id: 35, name: "useskin", type: "str"}, - {id: 37, name: "id", type: "num"}, - {id: 14, name: "seploot"}, - {id: 12, name: "averagemoneydropped", type: "num"}, - {id: 15, name: "gatherable", type: "yn"}, - {id: 9, name: "lootable", type: "yn"}, - {id: 16, name: "minable", type: "yn"}, - {id: 11, name: "pickpocketable", type: "yn"}, - {id: 10, name: "skinnable", type: "yn"}, - {id: 17, name: "sepgossipoptions"}, - {id: 18, name: "auctioneer", type: "yn"}, - {id: 19, name: "banker", type: "yn"}, - {id: 20, name: "battlemaster", type: "yn"}, - {id: 21, name: "flightmaster", type: "yn"}, - {id: 22, name: "guildmaster", type: "yn"}, - {id: 23, name: "innkeeper", type: "yn"}, - {id: 24, name: "talentunlearner", type: "yn"}, - {id: 25, name: "tabardvendor", type: "yn"}, - {id: 27, name: "stablemaster", type: "yn"}, - {id: 28, name: "trainer", type: "yn"}, - {id: 29, name: "vendor", type: "yn"}, - {id: 30, name: "sepcommunity"}, - {id: 33, name: "hascomments", type: "yn"}, - {id: 31, name: "hasscreenshots", type: "yn"} - ], - objects: [ - {id: 8, name: "sepgeneral"}, - {id: 14, name: "addedinwotlk", type: "yn"}, - {id: 12, name: "addedinbc", type: "yn"}, - {id: 6, name: "addedinp24", type: "yn"}, - {id: 1, name: "foundin", type: "zone"}, - {id: 7, name: "requiredskilllevel", type: "num"}, - {id: 2, name: "startsquest", type: "side"}, - {id: 3, name: "endsquest", type: "side"}, - {id: 15, name: "id", type: "num"}, - {id: 9, name: "seploot"}, - {id: 5, name: "averagemoneycontained", type: "num"}, - {id: 4, name: "openable", type: "yn"}, - {id: 10, name: "sepcommunity"}, - {id: 13, name: "hascomments", type: "yn"}, - {id: 11, name: "hasscreenshots", type: "yn"} - ], - quests: [ - {id: 12, name: "sepgeneral"}, - {id: 26, name: "addedinwotlk", type: "yn"}, - {id: 20, name: "addedinbc", type: "yn"}, - {id: 8, name: "addedinp24", type: "yn"}, - {id: 27, name: "daily", type: "yn"}, - {id: 28, name: "weekly", type: "yn"}, - {id: 29, name: "repeatable", type: "yn"}, - {id: 9, name: "objectiveearnrepwith", type: "faction-any+none"}, - {id: 5, name: "sharable", type: "yn"}, - {id: 19, name: "startsfrom", type: "queststart"}, - {id: 21, name: "endsat", type: "questend"}, - {id: 11, name: "suggestedplayers", type: "num"}, - {id: 6, name: "timer", type: "num"}, - {id: 30, name: "id", type: "num"}, - {id: 13, name: "sepgainsrewards"}, - {id: 2, name: "experiencegained", type: "num"}, - {id: 23, name: "itemchoices", type: "num"}, - {id: 22, name: "itemrewards", type: "num"}, - {id: 3, name: "moneyrewarded", type: "num"}, - {id: 4, name: "spellrewarded", type: "yn"}, - {id: 1, name: "increasesrepwith", type: "faction"}, - {id: 10, name: "decreasesrepwith", type: "faction"}, - {id: 14, name: "sepseries"}, - {id: 7, name: "firstquestseries", type: "yn"}, - {id: 15, name: "lastquestseries", type: "yn"}, - {id: 16, name: "partseries", type: "yn"}, - {id: 17, name: "sepcommunity"}, - {id: 25, name: "hascomments", type: "yn"}, - {id: 18, name: "hasscreenshots", type: "yn"}, - {id: 24, name: "lacksstartend", type: "yn"} - ], - spells: [ - {id: 6, name: "sepgeneral"}, - {id: 2, name: "prcntbasemanarequired", type: "num"}, - {id: 19, name: "scaling", type: "yn"}, - {id: 10, name: "firstrank", type: "yn"}, - {id: 12, name: "lastrank", type: "yn"}, - {id: 13, name: "rankno", type: "num"}, - {id: 1, name: "manaenergyragecost", type: "num"}, - {id: 3, name: "requiresnearbyobject", type: "yn"}, - {id: 5, name: "requiresprofspec", type: "yn"}, - {id: 9, name: "source", type: "spellsource"}, - {id: 4, name: "trainingcost", type: "num"}, - {id: 14, name: "id", type: "num"}, - {id: 15, name: "icon", type: "str"}, - {id: 7, name: "sepcommunity"}, - {id: 11, name: "hascomments", type: "yn"}, - {id: 8, name: "hasscreenshots", type: "yn"} - ], - achievements: [ - {id: 1, name: "sepgeneral"}, - {id: 2, name: "givesreward", type: "yn"}, - {id: 3, name: "rewardtext", type: "str"}, - {id: 4, name: "location", type: "zone"}, - {id: 9, name: "id", type: "num"}, - {id: 8, name: "sepseries"}, - {id: 5, name: "firstseries", type: "yn"}, - {id: 6, name: "lastseries", type: "yn"}, - {id: 7, name: "partseries", type: "yn"} - ], - profiles: [ - {id: 1, name: "sepgeneral"}, - {id: 2, name: "gearscore", type: "num"}, - {id: 3, name: "achievementpoints", type: "num"}, - {id: 21, name: "wearingitem", type: "str-small"}, - {id: 23, name: "completedachievement", type: "str-small"}, - {id: 24, name: "sepprofession"}, - {id: 25, name: "alchemy", type: "str-small"}, - {id: 26, name: "blacksmithing", type: "str-small"}, - {id: 27, name: "enchanting", type: "str-small"}, - {id: 28, name: "engineering", type: "str-small"}, - {id: 29, name: "herbalism", type: "str-small"}, - {id: 30, name: "inscription", type: "str-small"}, - {id: 31, name: "jewelcrafting", type: "str-small"}, - {id: 32, name: "leatherworking", type: "str-small"}, - {id: 33, name: "mining", type: "str-small"}, - {id: 34, name: "skinning", type: "str-small"}, - {id: 35, name: "tailoring", type: "str-small"}, - {id: 4, name: "septalent"}, - {id: 5, name: "talenttree1", type: "num"}, - {id: 6, name: "talenttree2", type: "num"}, - {id: 7, name: "talenttree3", type: "num"}, - {id: 8, name: "sepguild"}, - {id: 36, name: "hasguild", type: "yn"}, - {id: 9, name: "guildname", type: "str"}, - {id: 10, name: "guildrank", type: "num"}, - {id: 11, name: "separenateam"}, - {id: 12, name: "teamname2v2", type: "str"}, - {id: 13, name: "teamrtng2v2", type: "num"}, - {id: 14, name: "teamcontrib2v2", type: "num"}, - {id: 15, name: "teamname3v3", type: "str"}, - {id: 16, name: "teamrtng3v3", type: "num"}, - {id: 17, name: "teamcontrib3v3", type: "num"}, - {id: 18, name: "teamname5v5", type: "str"}, - {id: 19, name: "teamrtng5v5", type: "num"}, - {id: 20, name: "teamcontrib5v5", type: "num"} - ] + + items: [ + { id: 1, name: 'sepgeneral' }, + { id: 2, name: 'bindonpickup', type: 'yn' }, + { id: 3, name: 'bindonequip', type: 'yn' }, + { id: 4, name: 'bindonuse', type: 'yn' }, + { id: 133, name: 'bindtoaccount', type: 'yn' }, + { id: 146, name: 'heroicitem', type: 'yn' }, + { id: 107, name: 'effecttext', type: 'str' }, + { id: 81, name: 'fitsgemslot', type: 'gem' }, + { id: 132, name: 'glyphtype', type: 'glyphtype' }, + { id: 80, name: 'hassockets', type: 'gem' }, + { id: 151, name: 'id', type: 'num', before: 'name', noweights: 1 }, + { id: 100, name: 'nsockets', type: 'num', noweights: 1 }, + { id: 124, name: 'randomenchants', type: 'str' }, + { id: 125, name: 'reqarenartng', type: 'num', noweights: 1 }, + { id: 111, name: 'reqskillrank', type: 'num', noweights: 1 }, + { id: 99, name: 'requiresprof', type: 'profession' }, + { id: 66, name: 'requiresprofspec', type: 'profession' }, + { id: 17, name: 'requiresrepwith', type: 'faction-any+none' }, + { id: 169, name: 'requiresevent', type: 'event-any+none' }, + { id: 160, name: 'relatedevent', type: 'event-any+none' }, + { id: 168, name: 'teachesspell', type: 'yn' }, + { id: 15, name: 'unique', type: 'yn' }, + { id: 83, name: 'uniqueequipped', type: 'yn' }, + { id: 152, name: 'classspecific', type: 'classs' }, + { id: 153, name: 'racespecific', type: 'race' }, + + { id: 19, name: 'sepbasestats' }, + { id: 21, name: 'agi', type: 'num' }, + { id: 23, name: 'int', type: 'num' }, + { id: 22, name: 'sta', type: 'num' }, + { id: 24, name: 'spi', type: 'num' }, + { id: 20, name: 'str', type: 'num' }, + { id: 115, name: 'health', type: 'num' }, + { id: 116, name: 'mana', type: 'num' }, + { id: 60, name: 'healthrgn', type: 'num' }, + { id: 61, name: 'manargn', type: 'num' }, + + { id: 120, name: 'sepdefensivestats' }, + { id: 41, name: 'armor', type: 'num' }, + { id: 44, name: 'blockrtng', type: 'num' }, + { id: 43, name: 'block', type: 'num' }, + { id: 42, name: 'defrtng', type: 'num' }, + { id: 45, name: 'dodgertng', type: 'num' }, + { id: 46, name: 'parryrtng', type: 'num' }, + { id: 79, name: 'resirtng', type: 'num' }, + + { id: 31, name: 'sepoffensivestats' }, + { id: 77, name: 'atkpwr', type: 'num' }, + { id: 97, name: 'feratkpwr', type: 'num', indent: 1 }, + { id: 114, name: 'armorpenrtng', type: 'num' }, + { id: 96, name: 'critstrkrtng', type: 'num' }, + { id: 117, name: 'exprtng', type: 'num' }, + { id: 103, name: 'hastertng', type: 'num' }, + { id: 119, name: 'hitrtng', type: 'num' }, + { id: 94, name: 'splpen', type: 'num' }, + { id: 123, name: 'splpwr', type: 'num' }, + { id: 52, name: 'arcsplpwr', type: 'num', indent: 1 }, + { id: 53, name: 'firsplpwr', type: 'num', indent: 1 }, + { id: 54, name: 'frosplpwr', type: 'num', indent: 1 }, + { id: 55, name: 'holsplpwr', type: 'num', indent: 1 }, + { id: 56, name: 'natsplpwr', type: 'num', indent: 1 }, + { id: 57, name: 'shasplpwr', type: 'num', indent: 1 }, + + { id: 122, name: 'sepweaponstats' }, + { id: 32, name: 'dps', type: 'num' }, + { id: 35, name: 'damagetype', type: 'resistance' }, + { id: 33, name: 'dmgmin1', type: 'num' }, + { id: 34, name: 'dmgmax1', type: 'num' }, + { id: 36, name: 'speed', type: 'num' }, + { id: 134, name: 'mledps', type: 'num' }, + { id: 135, name: 'mledmgmin', type: 'num' }, + { id: 136, name: 'mledmgmax', type: 'num' }, + { id: 137, name: 'mlespeed', type: 'num' }, + { id: 138, name: 'rgddps', type: 'num' }, + { id: 139, name: 'rgddmgmin', type: 'num' }, + { id: 140, name: 'rgddmgmax', type: 'num' }, + { id: 141, name: 'rgdspeed', type: 'num' }, + + { id: 121, name: 'sepresistances' }, + { id: 25, name: 'arcres', type: 'num' }, + { id: 26, name: 'firres', type: 'num' }, + { id: 28, name: 'frores', ype: 'num' }, + { id: 30, name: 'holres', type: 'num' }, + { id: 27, name: 'natres', type: 'num' }, + { id: 29, name: 'shares', type: 'num' }, + + { id: 67, name: 'sepsource' }, + { id: 86, name: 'craftedprof', type: 'profession' }, + { id: 16, name: 'dropsin', type: 'zone' }, + { id: 105, name: 'dropsinnormal', type: 'heroicdungeon-any' }, + { id: 106, name: 'dropsinheroic', type: 'heroicdungeon-any' }, + { id: 147, name: 'dropsinnormal10', type: 'multimoderaid-any' }, + { id: 148, name: 'dropsinnormal25', type: 'multimoderaid-any' }, + { id: 149, name: 'dropsinheroic10', type: 'heroicraid-any' }, + { id: 150, name: 'dropsinheroic25', type: 'heroicraid-any' }, + { id: 68, name: 'otdisenchanting', type: 'yn' }, + { id: 69, name: 'otfishing', type: 'yn' }, + { id: 70, name: 'otherbgathering', type: 'yn' }, + { id: 71, name: 'otitemopening', type: 'yn' }, + { id: 72, name: 'otlooting', type: 'yn' }, + { id: 143, name: 'otmilling', type: 'yn' }, + { id: 73, name: 'otmining', type: 'yn' }, + { id: 74, name: 'otobjectopening', type: 'yn' }, + { id: 75, name: 'otpickpocketing', type: 'yn' }, + { id: 88, name: 'otprospecting', type: 'yn' }, + { id: 93, name: 'otpvp', type: 'pvp' }, + { id: 171, name: 'otredemption', type: 'yn' }, + { id: 76, name: 'otskinning', type: 'yn' }, + { id: 158, name: 'purchasablewithcurrency', type: 'currency-any' }, + { id: 118, name: 'purchasablewithitem', type: 'itemcurrency-any' }, + { id: 144, name: 'purchasablewithhonor', type: 'yn' }, + { id: 145, name: 'purchasablewitharena', type: 'yn' }, + { id: 18, name: 'rewardedbyfactionquest', type: 'side' }, + { id: 126, name: 'rewardedbyquestin', type: 'zone-any' }, + { id: 172, name: 'rewardedbyachievement', type: 'yn' }, + { id: 92, name: 'soldbyvendor', type: 'yn' }, + { id: 129, name: 'soldbynpc', type: 'str-small' }, + { id: 128, name: 'sepsource', type: 'itemsource' }, + + { id: 47, name: 'sepindividualstats' }, + { id: 37, name: 'mleatkpwr', type: 'num' }, + { id: 84, name: 'mlecritstrkrtng', type: 'num' }, + { id: 78, name: 'mlehastertng', type: 'num' }, + { id: 95, name: 'mlehitrtng', type: 'num' }, + { id: 38, name: 'rgdatkpwr', type: 'num' }, + { id: 40, name: 'rgdcritstrkrtng', type: 'num' }, + { id: 101, name: 'rgdhastertng', type: 'num' }, + { id: 39, name: 'rgdhitrtng', type: 'num' }, + { id: 49, name: 'splcritstrkrtng', type: 'num' }, + { id: 102, name: 'splhastertng', type: 'num' }, + { id: 48, name: 'splhitrtng', type: 'num' }, + { id: 51, name: 'spldmg', type: 'num' }, + { id: 50, name: 'splheal', type: 'num' }, + + { id: 58, name: 'sepmisc' }, + { id: 109, name: 'armorbonus', type: 'num' }, + { id: 161, name: 'availabletoplayers', type: 'yn' }, + { id: 90, name: 'avgbuyout', type: 'num', noweights: 1 }, + { id: 65, name: 'avgmoney', type: 'num', noweights: 1 }, + { id: 9, name: 'conjureditem', type: 'yn' }, + { id: 62, name: 'cooldown', type: 'num', noweights: 1 }, + { id: 162, name: 'deprecated', type: 'yn' }, + { id: 8, name: 'disenchantable', type: 'yn' }, + { id: 163, name: 'disenchantsinto', type: 'disenchanting' }, + { id: 59, name: 'dura', type: 'num', noweights: 1 }, + { id: 104, name: 'flavortext', type: 'str' }, + { id: 7, name: 'hasflavortext', type: 'yn' }, + { id: 142, name: 'icon', type: 'str' }, + { id: 10, name: 'locked', type: 'yn' }, + { id: 159, name: 'millable', type: 'yn' }, + { id: 127, name: 'notavailable', type: 'yn' }, + { id: 85, name: 'objectivequest', type: 'side' }, + { id: 11, name: 'openable', type: 'yn' }, + { id: 12, name: 'partofset', type: 'yn' }, + { id: 98, name: 'partyloot', type: 'yn' }, + { id: 89, name: 'prospectable', type: 'yn' }, + { id: 5, name: 'questitem', type: 'yn' }, + { id: 13, name: 'randomlyenchanted', type: 'yn' }, + { id: 14, name: 'readable', type: 'yn' }, + { id: 87, name: 'reagentforability', type: 'profession' }, + { id: 63, name: 'buyprice', type: 'num', noweights: 1 }, + { id: 154, name: 'refundable', type: 'yn' }, + { id: 165, name: 'repaircost', type: 'num' }, + { id: 64, name: 'sellprice', type: 'num', noweights: 1 }, + { id: 157, name: 'smartloot', type: 'yn' }, + { id: 6, name: 'startsquest', type: 'side' }, + { id: 91, name: 'tool', type: 'totemcategory' }, + { id: 155, name: 'usableinarenas', type: 'yn' }, + { id: 156, name: 'usablewhenshapeshifted', type: 'yn' }, + + { id: 112, name: 'sepcommunity' }, + { id: 130, name: 'hascomments', type: 'yn' }, + { id: 113, name: 'hasscreenshots', type: 'yn' }, + { id: 167, name: 'hasvideos', type: 'yn' }, + + { id: 1, name: 'sepstaffonly', staffonly: true }, + { id: 176, name: 'flags', type: 'flags', staffonly: true }, + { id: 177, name: 'flags2', type: 'flags', staffonly: true } + ], + + itemsets: [ + { id: 9999,name: 'sepgeneral' }, + { id: 12, name: 'availabletoplayers', type: 'yn' }, + { id: 3, name: 'pieces', type: 'num' }, + { id: 4, name: 'bonustext', type: 'str' }, + { id: 5, name: 'heroic', type: 'yn' }, + { id: 6, name: 'relatedevent', type: 'event-any+none' }, + { id: 2, name: 'id', type: 'num' }, + + { id: 9999,name: 'sepcommunity' }, + { id: 8, name: 'hascomments', type: 'yn' }, + { id: 9, name: 'hasscreenshots', type: 'yn' }, + { id: 10, name: 'hasvideos', type: 'yn' } + ], + + npcs: [ + { id: 4, name: 'sepgeneral' }, + { id: 5, name: 'canrepair', type: 'yn' }, + { id: 3, name: 'faction', type: 'faction' }, + { id: 6, name: 'foundin', type: 'zone' }, + { id: 1, name: 'health', type: 'num' }, + { id: 2, name: 'mana', type: 'num' }, + { id: 32, name: 'instanceboss', type: 'yn' }, + { id: 38, name: 'relatedevent', type: 'event-any+none' }, + { id: 7, name: 'startsquest', type: 'side' }, + { id: 8, name: 'endsquest', type: 'side' }, + { id: 34, name: 'usemodel', type: 'str-small' }, + { id: 35, name: 'useskin', type: 'str' }, + { id: 37, name: 'id', type: 'num' }, + + { id: 14, name: 'seploot' }, + { id: 12, name: 'averagemoneydropped', type: 'num' }, + { id: 43, name: 'decreasesrepwith', type: 'faction' }, + { id: 42, name: 'increasesrepwith', type: 'faction' }, + { id: 15, name: 'gatherable', type: 'yn' }, + { id: 44, name: 'salvageable', type: 'yn' }, + { id: 9, name: 'lootable', type: 'yn' }, + { id: 16, name: 'minable', type: 'yn' }, + { id: 11, name: 'pickpocketable', type: 'yn' }, + { id: 10, name: 'skinnable', type: 'yn' }, + + { id: 17, name: 'sepgossipoptions' }, + { id: 18, name: 'auctioneer', type: 'yn' }, + { id: 19, name: 'banker', type: 'yn' }, + { id: 20, name: 'battlemaster', type: 'yn' }, + { id: 21, name: 'flightmaster', type: 'yn' }, + { id: 22, name: 'guildmaster', type: 'yn' }, + { id: 23, name: 'innkeeper', type: 'yn' }, + { id: 24, name: 'talentunlearner', type: 'yn' }, + { id: 25, name: 'tabardvendor', type: 'yn' }, + { id: 27, name: 'stablemaster', type: 'yn' }, + { id: 28, name: 'trainer', type: 'yn' }, + { id: 29, name: 'vendor', type: 'yn' }, + + { id: 30, name: 'sepcommunity' }, + { id: 33, name: 'hascomments', type: 'yn' }, + { id: 31, name: 'hasscreenshots', type: 'yn' }, + { id: 40, name: 'hasvideos', type: 'yn' }, + + { id: 1, name: 'sepstaffonly', staffonly: true }, + { id: 41, name: 'haslocation', type: 'yn', staffonly: true } + ], + + objects: [ + { id: 8, name: 'sepgeneral' }, + { id: 1, name: 'foundin', type: 'zone' }, + { id: 15, name: 'id', type: 'num' }, + { id: 16, name: 'relatedevent', type: 'event-any+none' }, + { id: 7, name: 'requiredskilllevel', type: 'num' }, + { id: 2, name: 'startsquest', type: 'side' }, + { id: 3, name: 'endsquest', type: 'side' }, + + { id: 9, name: 'seploot' }, + { id: 5, name: 'averagemoneycontained', type: 'num' }, + { id: 4, name: 'openable', type: 'yn' }, + + { id: 10, name: 'sepcommunity' }, + { id: 13, name: 'hascomments', type: 'yn' }, + { id: 11, name: 'hasscreenshots', type: 'yn' }, + { id: 18, name: 'hasvideos', type: 'yn' } + ], + + quests: [ + { id: 12, name: 'sepgeneral' }, + { id: 34, name: 'availabletoplayers', type: 'yn' }, + { id: 37, name: 'classspecific', type: 'classs' }, + { id: 38, name: 'racespecific', type: 'race' }, + { id: 27, name: 'daily', type: 'yn' }, + { id: 28, name: 'weekly', type: 'yn' }, + { id: 29, name: 'repeatable', type: 'yn' }, + { id: 30, name: 'id', type: 'num' }, + { id: 44, name: 'countsforloremaster_stc', type: 'yn' }, + { id: 9, name: 'objectiveearnrepwith', type: 'faction-any+none' }, + { id: 33, name: 'relatedevent', type: 'event-any+none' }, + { id: 5, name: 'sharable', type: 'yn' }, + { id: 19, name: 'startsfrom', type: 'queststart' }, + { id: 21, name: 'endsat', type: 'questend' }, + { id: 11, name: 'suggestedplayers', type: 'num' }, + { id: 6, name: 'timer', type: 'num' }, + + { id: 1, name: 'sepstaffonly', staffonly: true }, + { id: 42, name: 'flags', type: 'flags', staffonly: true }, + + { id: 13, name: 'sepgainsrewards' }, + { id: 2, name: 'experiencegained', type: 'num' }, + { id: 43, name: 'currencyrewarded', type: 'currency' }, + { id: 45, name: 'titlerewarded', type: 'yn' }, + { id: 23, name: 'itemchoices', type: 'num' }, + { id: 22, name: 'itemrewards', type: 'num' }, + { id: 3, name: 'moneyrewarded', type: 'num' }, + { id: 4, name: 'spellrewarded', type: 'yn' }, + { id: 1, name: 'increasesrepwith', type: 'faction' }, + { id: 10, name: 'decreasesrepwith', type: 'faction' }, + + { id: 14, name: 'sepseries' }, + { id: 7, name: 'firstquestseries', type: 'yn' }, + { id: 15, name: 'lastquestseries', type: 'yn' }, + { id: 16, name: 'partseries', type: 'yn' }, + + { id: 17, name: 'sepcommunity' }, + { id: 25, name: 'hascomments', type: 'yn' }, + { id: 18, name: 'hasscreenshots', type: 'yn' }, + { id: 36, name: 'hasvideos', type: 'yn' }, + + { id: 1, name: 'sepmisc' }, + { id: 24, name: 'lacksstartend', type: 'yn'} + ], + + spells: [ + { id: 6, name: 'sepgeneral' }, + { id: 1, name: 'manaenergyragecost', type: 'num' }, + { id: 2, name: 'prcntbasemanarequired', type: 'num' }, + { id: 14, name: 'id', type: 'num' }, + { id: 15, name: 'icon', type: 'str' }, + { id: 10, name: 'firstrank', type: 'yn' }, + { id: 20, name: 'hasreagents', type: 'yn' }, + { id: 12, name: 'lastrank', type: 'yn' }, + { id: 13, name: 'rankno', type: 'num' }, + { id: 22, name: 'proficiencytype', type: 'proficiencytype' }, + { id: 19, name: 'scaling', type: 'yn' }, + { id: 25, name: 'rewardsskillups', type: 'yn' }, + { id: 3, name: 'requiresnearbyobject', type: 'yn' }, + { id: 5, name: 'requiresprofspec', type: 'yn' }, + { id: 9, name: 'source', type: 'spellsource' }, + { id: 4, name: 'trainingcost', type: 'num' }, + + { id: 7, name: 'sepcommunity' }, + { id: 11, name: 'hascomments', type: 'yn' }, + { id: 8, name: 'hasscreenshots', type: 'yn' }, + { id: 17, name: 'hasvideos', type: 'yn' } + ], + + achievements: [ + { id: 1, name: 'sepgeneral' }, + { id: 2, name: 'givesreward', type: 'yn' }, + { id: 3, name: 'rewardtext', type: 'str' }, + { id: 4, name: 'location', type: 'zone' }, + { id: 10, name: 'icon', type: 'str' }, + { id: 9, name: 'id', type: 'num' }, + { id: 11, name: 'relatedevent', type: 'event-any+none' }, + + { id: 8, name: 'sepseries' }, + { id: 5, name: 'firstseries', type: 'yn' }, + { id: 6, name: 'lastseries', type: 'yn' }, + { id: 7, name: 'partseries', type: 'yn' }, + + { id: 9999,name: 'sepcommunity' }, + { id: 14, name: 'hascomments', type: 'yn' }, + { id: 15, name: 'hasscreenshots', type: 'yn' }, + { id: 16, name: 'hasvideos', type: 'yn' }, + + { id: 9999,name: 'sepstaffonly', staffonly: true }, + { id: 18, name: 'flags', type: 'flags', staffonly: true } + ], + + profiles: [ + { id: 1, name: 'sepgeneral' }, + { id: 2, name: 'gearscore', type: 'num' }, + { id: 3, name: 'achievementpoints', type: 'num' }, + { id: 21, name: 'wearingitem', type: 'str-small' }, + { id: 23, name: 'completedachievement', type: 'str-small' }, + + { id: 24, name: 'sepprofession' }, + { id: 25, name: 'alchemy', type: 'str-small' }, + { id: 26, name: 'blacksmithing', type: 'str-small' }, + { id: 27, name: 'enchanting', type: 'str-small' }, + { id: 28, name: 'engineering', type: 'str-small' }, + { id: 29, name: 'herbalism', type: 'str-small' }, + { id: 30, name: 'inscription', type: 'str-small' }, + { id: 31, name: 'jewelcrafting', type: 'str-small' }, + { id: 32, name: 'leatherworking', type: 'str-small' }, + { id: 33, name: 'mining', type: 'str-small' }, + { id: 34, name: 'skinning', type: 'str-small' }, + { id: 35, name: 'tailoring', type: 'str-small' }, + + { id: 4, name: 'septalent' }, + { id: 5, name: 'talenttree1', type: 'num' }, + { id: 6, name: 'talenttree2', type: 'num' }, + { id: 7, name: 'talenttree3', type: 'num' }, + + { id: 8, name: 'sepguild' }, + { id: 36, name: 'hasguild', type: 'yn' }, + { id: 9, name: 'guildname', type: 'str' }, + { id: 10, name: 'guildrank', type: 'num' }, + + { id: 11, name: 'separenateam' }, + { id: 12, name: 'teamname2v2', type: 'str' }, + { id: 13, name: 'teamrtng2v2', type: 'num' }, + { id: 14, name: 'teamcontrib2v2', type: 'num' }, + { id: 15, name: 'teamname3v3', type: 'str' }, + { id: 16, name: 'teamrtng3v3', type: 'num' }, + { id: 17, name: 'teamcontrib3v3', type: 'num' }, + { id: 18, name: 'teamname5v5', type: 'str' }, + { id: 19, name: 'teamrtng5v5', type: 'num' }, + { id: 20, name: 'teamcontrib5v5', type: 'num' } + ] + }; + function fi_toggle() { - var c = ge("fi"); - var b = g_toggleDisplay(c), - e; - var d = ge("fi_toggle"); - if (b) { + var c = ge('fi'); + var b = g_toggleDisplay(c); + var d = ge('fi_toggle'); + + if (b) { + // Set focus on first textbox d.firstChild.nodeValue = LANG.fihide; - c = (c.parentNode.tagName == "FORM" ? c.parentNode: gE(c, "form")[0]); - c = c.elements.na ? c.elements.na: c.elements.ti; - c.focus(); - c.select() - } + c = (c.parentNode.tagName == 'FORM' ? c.parentNode: gE(c, 'form')[0]); + c = c.elements.na ? c.elements.na: c.elements.ti; + c.focus(); + c.select(); + } else { - d.firstChild.nodeValue = LANG.fishow - } - d.className = "disclosure-" + (b ? "on": "off"); - return false + d.firstChild.nodeValue = LANG.fishow; + } + d.className = 'disclosure-' + (b ? 'on': 'off'); + + return false; } -function fi_submit(d) { - var c = 0; - var a = d.elements; - for (var b = 0; b < a.length; ++b) {switch (a[b].nodeName) { - case "INPUT": - switch (a[b].type) { - case "text": - if (trim(a[b].value).length > 0) { - ++c - } + +function fi_submit(_this) { + var sum = 0; + + var _ = _this.elements; + for (var i = 0; i < _.length; ++i) { + switch (_[i].nodeName) { + case 'INPUT': + switch (_[i].type) { + case 'text': + if (trim(_[i].value).length > 0) { + ++sum; + } + break; + case 'checkbox': + if ((_[i].value == 'ja' || _[i].name == 'gb') && _[i].checked) { + ++sum; + } + case 'radio': + if(_[i].name != 'ma' && _[i].checked && _[i].value) + ++sum; + break; - case "checkbox": - if ((a[b].value == "ja" || a[b].name == "gb") && a[b].checked) { - ++c - } - break - } - break; - case "SELECT": - if (a[b].name != "cr[]" && a[b].name != "gm" && a[b].selectedIndex != -1 && a[b].options[a[b].selectedIndex].value) { - ++c - } - break - } - } - if (c == 0) { + } + break; + + case 'SELECT': + if (_[i].name != 'cr[]' && _[i].name != 'gm' && _[i].selectedIndex != -1 && _[i].options[_[i].selectedIndex].value) { + ++sum; + } + + break; + } + } + + var g = g_getGets(); + if (sum == 0 && !g.filter) { alert(LANG.message_fillsomecriteria); - return false - } - return true + return false; + } + + return true; } + function fi_initWeightedListview() { - this._scoreMode = 0; - if (this.sort[0] == -this.columns.length) { - this.applySort() - } - if (this._minScore) {setTimeout(Listview.headerFilter.bind(this, this.columns[this.columns.length - 1], ">=" + this._minScore), 1); - this._maxScore = this._minScore - } + this._scoreMode = (this._upgradeIds ? 2 : 0); // Normalized or percent for upgrades + + if (this.sort[0] == -this.columns.length) { + this.applySort(); + } + + if (this._upgradeIds && this._minScore) { + //todo: what did this do..? setTimeout(Listview.headerFilter.bind(this, this.columns[this.columns.length - 1], '>=' + this._minScore), 1); + this._maxScore = this._minScore; // Makes percentages relative to upgraded item + } } -function fi_reset(c) { - fi_resetCriterion(ge("fi_criteria")); - fi_resetCriterion(ge("fi_weight")); - var a = ge("sdkgnsdkn436"); - if (a) { - a.parentNode.style.display = "none"; - while (a.firstChild) { - de(a.firstChild) - } - ae(a, ce("option")) - } - a = c.elements; - for (var b = 0; b < a.length; ++b) { - switch (a[b].nodeName) { - case "INPUT": - if (a[b].type == "text") { - a[b].value = "" + +function fi_filterUpgradeListview(item, i) { + var nResults = 25; + + if(!this._upgradeIds) { + return i < nResults; + } + + if(this._upgradeRow == null) { + this._upgradeRow = nResults - 1; + } + + if(in_array(this._upgradeIds, item.id) != -1) { + if(i < nResults) { + this._upgradeRow++; + } + + return true; + } + + return i < this._upgradeRow; +} + +function fi_addUpgradeIndicator() { + if(this._upgradeIds) { + var upgradeUrl = fi_filterParamToJson(g_parseQueryString(location.href.replace(/^.*?filter=/, 'filter=')).filter).upg; + for(var i = 0; i < this.data.length; ++i) { + var + item = this.data[i], + newUpgrade = upgradeUrl.replace(item.id, '').replace(/(^:*|:*$)/g, '').replace('::', ':'); + + if(in_array(this._upgradeIds, item.id) != -1) { + this.createIndicator(sprintf(LANG.lvnote_upgradesfor, item.id, (7 - parseInt(item.name.charAt(0))), item.name.substr(1)), location.href.replace(';upg=' + upgradeUrl, (newUpgrade ? ';upg=' + newUpgrade : ''))); + } + } + } +} + +function fi_reset(_this) { + fi_resetCriterion(ge('fi_criteria')); + fi_resetCriterion(ge('fi_weight')); + + var _ = ge('sdkgnsdkn436'); + if (_) { + _.parentNode.style.display = 'none'; + while (_.firstChild) { + de(_.firstChild); + } + + ae(_, ce('option')); + } + + _ = _this.elements; + for (var i = 0; i < _.length; ++i) { + switch (_[i].nodeName) { + case 'INPUT': + if (_[i].type == 'text') { + _[i].value = ''; + } + else if (_[i].type == 'checkbox') { + _[i].checked = false; + } + else if (_[i].type == 'radio' && _[i].value.length == 0) { + _[i].checked = true; + } + break; + + case 'SELECT': + _[i].selectedIndex = _[i].multiple ? -1 : 0; + if (_[i].i) { + _[i].i = _[i].selectedIndex; + } + break; + } + } + + return false; +} + +function fi_resetCriterion(_this) { + if (_this != null) { + var d; + while (_this.childNodes.length > 1) { + d = _this.childNodes[1]; + + while (d.childNodes.length > 1) { + d.removeChild(d.childNodes[1]); + } + + _this.removeChild(d); + } + + d = _this.childNodes[0]; + + while (d.childNodes.length > 1) { + d.removeChild(d.childNodes[1]); + } + + d.firstChild.i = null; + d.firstChild.selectedIndex = 0; + + if (_this.nextSibling.firstChild) { + _this.nextSibling.firstChild.style.display = _this.style.display; + } + } +} + +function fi_addCriterion(_this, cr) { + var _ = ge(_this.id.replace('add', '')); + + if (_.childNodes.length >= 19 || (_this.id.indexOf('criteria') > 0 && _.childNodes.length >= 4)) { + _this.style.display = 'none'; + } + + var a = _.childNodes[0].lastChild; + if (a.nodeName != 'A') { + fi_appendRemoveLink(_.childNodes[0]); + } + else { + a.firstChild.nodeValue = LANG.firemove; + a.onmouseup = fi_removeCriterion; + } + + var + d = ce('div'), + c = _.childNodes[0].childNodes[0].cloneNode(true); + + c.onchange = c.onkeyup = fi_criterionChange.bind(0, c); + c.i = null; + + if (cr != null) { + var opts = c.getElementsByTagName('option'); + for (var i = 0; i < opts.length; ++i) { + if (opts[i].value == cr) { + opts[i].selected = true; + break; + } + } + } + else { + c.firstChild.selected = true; + } + + d.appendChild(c); + fi_appendRemoveLink(d); + _.appendChild(d); + + return c; +} + +function fi_removeCriterion() { + var + _, + d = this.parentNode, + c = d.parentNode, + n = (d.firstChild.name == 'wt[]'); + + c.removeChild(d); + + if (c.childNodes.length == 1) { + _ = c.firstChild; + if (_.firstChild.selectedIndex > 0) { + var a = _.lastChild; + a.firstChild.nodeValue = LANG.ficlear; + a.onmouseup = fi_clearCriterion; + } + else { + _.removeChild(_.lastChild); + _.removeChild(_.lastChild); + } + } + + if (c.nextSibling.firstChild) { + c.nextSibling.firstChild.style.display = ''; + } + + if (n) { + _ = ge('sdkgnsdkn436'); + _.selectedIndex = 0; + _.i = 0; + fi_presetMatch(); + } +} + +function fi_clearCriterion() { + var d = this.parentNode; + d.firstChild.selectedIndex = 0; + fi_criterionChange(d.firstChild); +} + +function fi_appendRemoveLink(d) { + d.appendChild(ct(String.fromCharCode(160, 160))); + var a = ce('a'); + a.href = 'javascript:;'; + a.appendChild(ct(LANG.firemove)); + a.onmouseup = fi_removeCriterion; + a.onmousedown = a.onclick = rf; + d.appendChild(a); +} + +function fi_appendClearLink(d) { + d.appendChild(ct(String.fromCharCode(160, 160))); + var a = ce('a'); + a.href = 'javascript:;'; + a.appendChild(ct(LANG.ficlear)); + a.onmouseup = fi_clearCriterion; + a.onmousedown = a.onclick = rf; + d.appendChild(a); +} + +function fi_Lookup(value, type) { + var c; + + if (type == null) { + type = fi_type; + } + + if (fi_Lookup.cache == null) { + fi_Lookup.cache = {}; + } + + if (fi_Lookup.cache[type] == null) { + c = {}; + + for (var i = 0, len = fi_filters[type].length; i < len; ++i) { + if(!(g_user.roles & U_GROUP_EMPLOYEE) && fi_filters[type][i].staffonly) + continue; + + var f = fi_filters[type][i]; + + c[f.id] = f; + c[f.name] = f; + } + + fi_Lookup.cache[type] = c; + } + else { + c = fi_Lookup.cache[type]; + } + + if (value && typeof value == 'string') { + var firstChar = value.charCodeAt(0); + if (firstChar >= '0'.charCodeAt(0) && firstChar <= '9'.charCodeAt(0)) { + value = parseInt(value); + } + } + + return c[value]; +} + +function fi_criterionChange(_this, crs, crv) { + var _; + + if (_this.selectedIndex != _this.i) { + var + o = _this.options[_this.selectedIndex], + d = _this.parentNode; + + if (d.childNodes.length > 1) { + if (_this.selectedIndex > 0 && _this.i > 0) { + var a = fi_Lookup(o.value); + var b = fi_Lookup(_this.options[_this.i].value); + + if (a.type == b.type) { + return; + } + } + + while (d.childNodes.length > 1) { + d.removeChild(d.childNodes[1]); + } + } + + if (_this.selectedIndex > 0) { + var p = fi_Lookup(o.value); + var parts = p.type.split('-'); + var criteriaName = parts[0]; + var criteriaParams = parts[1] || ''; + + if (LANG.fidropdowns[criteriaName] != null) { + if (_this.name == 'cr[]') { + var _c = LANG.fidropdowns[criteriaName]; + _ = ce('select'); + _.name = 'crs[]'; + + var group = _; + + if (criteriaParams.indexOf('any') != -1) { + var o2 = ce('option'); + o2.value = '-2323'; + o2.appendChild(ct(LANG.fiany)); + ae(group, o2); + if (crs != null && crs == '-2323') { + o2.selected = true; + } + } + + for (var i = 0; i < _c.length; ++i) { + if (_c[i][0] !== null) { + var o2 = ce('option'); + o2.value = _c[i][0]; + o2.appendChild(ct(_c[i][1])); + ae(group, o2); + if (crs != null && crs == _c[i][0]) { + o2.selected = true; + } + } + else { + var group = ce('optgroup'); + group.label = _c[i][1]; + ae(_, group); + } + } + + if (criteriaParams.indexOf('none') != -1) { + var o2 = ce('option'); + o2.value = '-2324'; + o2.appendChild(ct(LANG.finone)); + ae(group, o2); + if (crs != null && crs == '-2324') { + o2.selected = true; + } + } + + d.appendChild(ct(' ')); + d.appendChild(_); + } + + var n = (criteriaName == 'num'); + + if (n) { + d.appendChild(ct(' ')); + } + + _ = ce('input'); + _.type = 'text'; + + if (crv != null) { + _.value = crv.toString(); } else { - if (a[b].type == "checkbox") { - a[b].checked = false + _.value = '0'; + } + + if (_this.name == 'cr[]') { + _.name = 'crv[]'; + } + else { + _.name = 'wtv[]'; + _.onchange = fi_changeWeight.bind(0, _); + } + + if (n) { + _.maxLength = 7; + _.style.textAlign = 'center'; + _.style.width = '4.5em'; + } + else { + _.type = 'hidden'; + } + + _.setAttribute('autocomplete', 'off'); + + d.appendChild(_); + if (_this.name == 'wt[]') { + fi_sortWeight(_); + } + } + else if (criteriaName == 'str') { + _ = ce('input'); + _.name = 'crs[]'; + _.type = 'hidden'; + _.value = '0'; + d.appendChild(_); + + _ = ce('input'); + _.type = 'text'; + if (criteriaParams.indexOf('small') != -1) { + _.maxLength = 7; + _.style.textAlign = 'center'; + _.style.width = '4.5em'; + } + else { + _.maxLength = 50; + _.style.width = '9em'; + } + _.name = 'crv[]'; + + if (crv != null) { + _.value = crv; + } + + d.appendChild(ct(' ')); + d.appendChild(_); + } + } + + if (d.parentNode.childNodes.length == 1) { + if (_this.selectedIndex > 0) { + fi_appendClearLink(d); + } + } + else if (d.parentNode.childNodes.length > 1) { + fi_appendRemoveLink(d); + } + + _this.i = _this.selectedIndex; + } +} + +function fi_setCriteria(cr, crs, crv) { + var _ = ge('fi_criteria'); + + var + i, + c = _.childNodes[0].childNodes[0]; + + _ = c.getElementsByTagName('option'); + for (i = 0; i < _.length; ++i) { + if (_[i].value == cr[0]) { + _[i].selected = true; + break; + } + } + fi_criterionChange(c, crs[0], crv[0]); + + var a = ge('fi_addcriteria'); + for (i = 1; i < cr.length && i < 5; ++i) { + fi_criterionChange(fi_addCriterion(a, cr[i]), crs[i], crv[i]); + } +} + +function fi_setWeights(weights, nt, ids, stealth) { + if (ids) { + var + wt = weights[0], + wtv = weights[1], + weights = {}; + + for (var i = 0; i < wt.length; ++i) { + var a = fi_Lookup(wt[i]); + if (a && a.type == 'num' && !a.noweights && LANG.traits[a.name]) { + weights[a.name] = wtv[i]; + } + } + } + + var _ = ge('fi_weight'); + + if (fi_weights == null) { + fi_weights = {}; + cO(fi_weights, weights); + } + + var + a = ge('fi_addweight'), + c = _.childNodes[0].childNodes[0]; + + var i = 0; + for (var w in weights) { + if (!LANG.traits[w]) { + continue; + } + + if (i++>0) { + c = fi_addCriterion(a, w); + } + + var opts = c.getElementsByTagName('option'); + + for (var j = 0; j < opts.length; ++j) { + if (opts[j].value && w == fi_Lookup(opts[j].value).name) { + opts[j].selected = true; + break; + } + } + + fi_criterionChange(c, 0, weights[w]); + } + + fi_weightsFactor = fi_convertWeights(weights, true); + + ge('fi_weight_toggle').className = 'disclosure-on'; + ge('fi_weight').parentNode.style.display = ''; + + if (!nt) { + if (!fi_presetMatch(weights, stealth)) { + fi_presetDetails(); + } + } +} + +function fi_changeWeight(_this) { + var _ = ge('sdkgnsdkn436'); + _.selectedIndex = 0; + _.i = 0; + fi_sortWeight(_this); + fi_presetMatch(); +} + +function fi_sortWeight(_this) { + var + i, + _ = ge('fi_weight'), + v = Number(_this.value); + + _this = _this.parentNode; + + n = 0; + for (i = 0; i < _.childNodes.length; ++i) { + var m = _.childNodes[i]; + if (m.childNodes.length == 5) { + n++; + if (m.childNodes[2].nodeName == "INPUT" && v > Number(m.childNodes[2].value)) { + _.insertBefore(_this, m); + return; + } + } + } + _.insertBefore(_this, _.childNodes[n]); +} + +function fi_convertWeights(weights, getf) { + var + f = 0, + m = 0; + + for (var w in weights) { + if (!LANG.traits[w]) { + continue; + } + f += Math.abs(weights[w]); + if (Number(weights[w]) > m) { + m = Number(weights[w]); + } + } + + if (getf) { + return f; + } + + var result = {}; + for (var w in weights) { + result[w] = (LANG.traits[w] ? Math.round(1000 * weights[w] / f) / 1000 : weights[w]); + } + + return result; +} + +function fi_convertScore(score, mode, maxScore) { + if (mode == 1) { // Raw + return parseInt(score * fi_weightsFactor); + } + else if (mode == 2) { // Percent + return ((score / maxScore) * 100).toFixed(1) + '%'; + } + else { // Normalized + return score.toFixed(2); + } +} + +function fi_updateScores() { + if (++this._scoreMode > 2) { + this._scoreMode = 0; + } + + for (var i = 0; i < this.data.length; ++i) { + if (this.data[i].__tr) { + var cell = this.data[i].__tr.lastChild; + cell.firstChild.firstChild.nodeValue = fi_convertScore(this.data[i].score, this._scoreMode, this._maxScore); + } + } +} + +function fi_presetClass(_this, stealth) { + if (_this.selectedIndex != _this.i) { + var + i, + _group, + c = _this.options[_this.selectedIndex], + d = _this.parentNode, + langref = LANG.presets; + + fi_resetCriterion(_); + + var _ = ge('sdkgnsdkn436'); + _.parentNode.style.display = 'none'; + +// todo: replace this + if (!stealth && (_this.form.ub.selectedIndex == 0 || _this.form.ub.selectedIndex == _this.i)) { + _this.form.ub.selectedIndex = _this.selectedIndex; + } +/* with this + var oldValue = 1000; + if (_this.i) { + oldValue = $($('#fi_presets select option')[_this.i]).attr('value'); + } + + if(!stealth && (_this.form.ub.selectedIndex == 0 || _this.form.ub.value == oldValue)) { + $('select[name=ub] option[value=' + _this.value + ']').attr('selected', 'selected'); + } +*/ + + while (_.firstChild) { + de(_.firstChild); + } + ae(_, ce('option')); + + if (_this.selectedIndex > 0) { + for (_group in c._presets) { + var weights = c._presets[_group]; + + if(langref[_group] != null) { + var group = ce('optgroup'); + group.label = langref[_group]; + } + else + group = _; + + for (var p in weights) { + var o = ce('option'); + o.value = p; + o._weights = weights[p]; + ae(o, ct(weights[p].name ? weights[p].name : langref[p])); + ae(group, o); + } + + if (langref[_group] != null && group && group.childNodes.length > 0) { + ae(_, group); + } + } + + if (_.childNodes.length > 1) { + _.parentNode.style.display = ''; + } + } + + fi_presetChange(_); + _this.i = _this.selectedIndex; + } +} + +function fi_presetChange(_this) { + if (_this.selectedIndex != _this.i) { + fi_resetCriterion(ge('fi_weight')); + + var o = _this.options[_this.selectedIndex]; + if (_this.selectedIndex > 0) { + // Default gem color + if (_this.form.elements.gm.selectedIndex == 0) { + _this.form.elements.gm.selectedIndex = 2; // Rare + } + + fi_resetCriterion(ge('fi_weight')); + fi_setWeights(o._weights, 1, 0); + } + + _this.i = _this.selectedIndex; + + if (g_user.id > 0) { + var a = ge('fi_remscale'); + a.style.display = (o._weights && o._weights.name ? '' : 'none'); + } + } +} + +function fi_presetDetails() { + var + _ = ge('fi_weight'), + _this = ge('fi_detail'), + n = ge('fi_addweight'); + + var a = g_toggleDisplay(_); + + n.style.display = 'none'; + if (a) { + _this.firstChild.nodeValue = LANG.fihidedetails; + if (_.childNodes.length < 19) { + n.style.display = ''; + } + } + else { + _this.firstChild.nodeValue = LANG.fishowdetails; + } + + return false; +} + +function fi_presetMatch(weights, stealth) { + if (!weights) { + weights = {}; + var _ = ge('fi_weight'); + + for (var i = 0; i < _.childNodes.length; ++i) { + if (_.childNodes[i].childNodes.length == 5) { + if (_.childNodes[i].childNodes[0].nodeName == "SELECT" && _.childNodes[i].childNodes[2].nodeName == "INPUT") { + var node = _.childNodes[i].childNodes[0].options[_.childNodes[i].childNodes[0].selectedIndex]; + + if (node.value) { + weights[fi_Lookup(node.value)] = Number(_.childNodes[i].childNodes[2].value); } - else { - if (a[b].type == "radio" && a[b].value.length == 0) { - a[b].checked = true + } + } + } + } + + var _ = ge('fi_presets'); + var s = _.getElementsByTagName('select'); + if (s.length != 2) { + return false; + } + + var n = fi_convertWeights(weights); + for (var l in wt_presets) { + for (var k in wt_presets[l]) { + for (var v in wt_presets[l][k]) { + p = fi_convertWeights(wt_presets[l][k][v]); + + var match = true; + for (var w in p) { + if (!LANG.traits[w]) { + continue; + } + if (!n[w] || p[w] != n[w]) { + match = false; + break; + } + } + + if (match) { + for (var i = 0; i < s[0].options.length; ++i) { + if (l == s[0].options[i].value) { + s[0].options[i].selected = true; + fi_presetClass(s[0], stealth); + break; + } + } + + for (var j = 0; j < s[1].options.length; ++j) { + if (v == s[1].options[j].value) { + s[1].options[j].selected = true; + fi_presetChange(s[1]); + break; + } + } + return true; + } + } + } + } + + return false; +} + + +function fi_presetSave() { + if (!g_user.id) { + return; + } + + // todo: find out what the jquery stuff is supposed to do and use standards instead + alert('NYI, sorry!'); + return; + + var + o = $('#sdkgnsdkn436 option:selected').get(0), + name = '', + id = ((o._weights ? o._weights.id : 0) | 0), + scale = { id: id, name: name }, + _ = ge('fi_weight'), + n = 0; + + for(i = 0; i < _.childNodes.length; ++i) { + var + w = fi_Lookup($('[name=wt[]]', _.childNodes[i]).val()), + v = $('[name=wtv[]]', _.childNodes[i]).val(); + + if(w && v != 0) { + scale[w.name] = v; + ++n; + } + } + + if(n < 1 || (!(o._weights && o._weights.id) && g_user.weightscales && g_user.weightscales.length >= 5)) { + return alert(LANG.message_weightscalesaveerror); + } + + if(name = prompt(LANG.prompt_nameweightscale, $(o).text())) { + var data = { save: 1, name: urlencode(name), scale: '' }; + + if(id) { + data.id = id; + } + + scale.name = name; + n = 0; + + for(var w in scale) { + if(!LANG.traits[w]) { + continue; + } + if(n++ > 0) { + data.scale += ','; + } + data.scale += w + ':' + scale[w]; + } + + $.post('?account=weightscales', data, function(response) { + if(response > 0) { + if(g_user.weightscales == null) { + g_user.weightscales = []; + } + + if(scale.id) { + g_user.weightscales = array_filter(g_user.weightscales, function(x) { return x.id != scale.id }); + } + + scale.id = response; + g_user.weightscales.push(scale); + + var + s = $('#fi_presets select').get(0), + c = $('option[value=-1]', s).get(0); + + if(!c) { + c = ce('option'); + c.value = -1; + ae(c, ct(LANG.ficustom)); + aef(s, c); + aef(s, $('option', s).get(1)); + } + + c._presets = { custom: {} }; + for(var i = 0, len = g_user.weightscales.length; i < len; ++i) { + c._presets.custom[g_user.weightscales[i].id] = g_user.weightscales[i]; + } + + c.selected = true; + c.parentNode.onchange(); + + var o = $('#sdkgnsdkn436 option[value=' + scale.id + ']').get(0); + if(o) { + o.text = scale.name; + o.selected = true; + o.parentNode.onchange(); + } + + alert(LANG.message_saveok); + } + else { + alert(LANG.message_weightscalesaveerror); + } + }); + } +} + +function fi_presetDelete() { + if(!g_user.id) { + return; + } + + // todo: find out what the jquery stuff is supposed to do and use standards instead + alert('NYI, sorry!'); + return; + + // sarjuuk: .get(0) - returns first element matched by X + var s = $('#fi_presets select').get(0), + c = $('option:selected', s).get(0); + + if(c.value == -1) { + var o = $('#sdkgnsdkn436 option:selected').get(0); + if(o.value && confirm(LANG.confirm_deleteweightscale)) { + // sarjuuk send an ajax-POST to X with Y as param + $.post('?account=weightscales', { 'delete': 1, id: o.value }); + + g_user.weightscales = array_filter(g_user.weightscales, function(x) { + return x.id != o.value; + }); + + if(g_user.weightscales.length) { + c._presets = { custom: {} }; + for(var i = 0, len = g_user.weightscales.length; i < len; ++i) { + c._presets.custom[g_user.weightscales[i].id] = g_user.weightscales[i]; + } + } + else { + de(c); + } + + de(o); + + // sarjuuk: change() - manually triggers an onChange event on X + $('#fi_presets select').change(); + } + } +} + +function fi_scoreSockets(item) { + if (fi_gemScores != null) { + var match = 0, best = 0, sock = 0; + var mGems = [], bGems = []; + var mUniq = [], bUniq = []; + var mSock = {}, bSock = {}; + var noMatch = false; + + for (var i = 1; i <= 3; ++i) { + var + n = item['socket' + i], + s = (n == 1 ? 1 : 0); + + if (n) { + if (fi_gemScores[n]) { + for (var j = 0; j < fi_gemScores[n].length; ++j) { + var t = fi_gemScores[n][j]; + if (t.socketLevel <= item.level && (t.uniqEquip == 0 || in_array(mUniq, t.id) < 0)) { + match += t.score; + mGems.push(t.id); + + mSock[i - 1] = 1; + + if (t.uniqEquip == 1) { + mUniq.push(t.id); + } + + break; } } } - break; - case "SELECT": - a[b].selectedIndex = a[b].multiple ? -1 : 0; - if (a[b].i) { - a[b].i = a[b].selectedIndex - } - break - } - } - return false -} -function fi_resetCriterion(b) { - if (b != null) {var a; - while (b.childNodes.length > 1) { - a = b.childNodes[1]; - while (a.childNodes.length > 1) { - a.removeChild(a.childNodes[1]) - } - b.removeChild(a) - } - a = b.childNodes[0]; - while (a.childNodes.length > 1) { - a.removeChild(a.childNodes[1]) - } - a.firstChild.i = null; - a.firstChild.selectedIndex = 0; - if (b.nextSibling.firstChild) { - b.nextSibling.firstChild.style.display = b.style.display - } - } -} -function fi_addCriterion(l, h) { - var e = ge(l.id.replace("add", "")); - if (e.childNodes.length >= 19 || (l.id.indexOf("criteria") > 0 && e.childNodes.length >= 4)) { - l.style.display = "none" - } - var b = e.childNodes[0].lastChild; - if (b.nodeName != "A") { - fi_appendRemoveLink(e.childNodes[0]) - } else { - b.firstChild.nodeValue = LANG.firemove; - b.onmouseup = fi_removeCriterion - } - var j = ce("div"), - k = e.childNodes[0].childNodes[0].cloneNode(true); - k.onchange = k.onkeyup = fi_criterionChange.bind(0, k); - k.i = null; - if (h != null) { - var g = k.getElementsByTagName("option"); - for (var f = 0; f < g.length; ++f) { - if (g[f].value == h) { - g[f].selected = true; - break - } - } - } else { - k.firstChild.selected = true - } - j.appendChild(k); - fi_appendRemoveLink(j); - e.appendChild(j); - return k -} -function fi_removeCriterion() { - var e, f = this.parentNode, - h = f.parentNode, - g = (f.firstChild.name == "wt[]"); - h.removeChild(f); - if (h.childNodes.length == 1) { - e = h.firstChild; - if (e.firstChild.selectedIndex > 0) { - var b = e.lastChild; - b.firstChild.nodeValue = LANG.ficlear; - b.onmouseup = fi_clearCriterion - } - else { - e.removeChild(e.lastChild); - e.removeChild(e.lastChild) - } - } - if (h.nextSibling.firstChild) { - h.nextSibling.firstChild.style.display = "" - } - if (g) { - e = ge("sdkgnsdkn436"); - e.selectedIndex = 0; - e.i = 0; - fi_presetMatch() - } -} -function fi_clearCriterion() { - var a = this.parentNode; - a.firstChild.selectedIndex = 0; - fi_criterionChange(a.firstChild) -} -function fi_appendRemoveLink(c) { - c.appendChild(ct(String.fromCharCode(160, 160))); - var b = ce("a"); - b.href = "javascript:;"; - b.appendChild(ct(LANG.firemove)); - b.onmouseup = fi_removeCriterion; - b.onmousedown = b.onclick = rf; - c.appendChild(b) -} -function fi_appendClearLink(c) { - c.appendChild(ct(String.fromCharCode(160, 160))); - var b = ce("a"); - b.href = "javascript:;"; - b.appendChild(ct(LANG.ficlear)); - b.onmouseup = fi_clearCriterion; - b.onmousedown = b.onclick = rf; - c.appendChild(b) -} -function fi_Lookup(h, d) { - var j; - if (d == null) { - d = fi_type - } - if (fi_Lookup.cache == null) { - fi_Lookup.cache = {} - } - if (fi_Lookup.cache[d] == null) {j = {}; - for (var b = 0, a = fi_filters[d].length; b < a; ++b) { - var g = fi_filters[d][b]; - j[g.id] = g; - j[g.name] = g - } - fi_Lookup.cache[d] = j - } - else { - j = fi_Lookup.cache[d] - } - if (h && typeof h == "string") { - var e = h.charCodeAt(0); - if (e >= "0".charCodeAt(0) && e <= "9".charCodeAt(0)) { - h = parseInt(h) - } - } - return j[h] -} -function fi_criterionChange(l, w, s) { - var x; - if (l.selectedIndex != l.i) { - var e = l.options[l.selectedIndex], - q = l.parentNode; - if (q.childNodes.length > 1) { - if (l.selectedIndex > 0 && l.i > 0) { - var u = fi_Lookup(e.value); - var r = fi_Lookup(l.options[l.i].value); - if (u.type == r.type) { - return - } - } - while (q.childNodes.length > 1) { - q.removeChild(q.childNodes[1]) - } - } - if (l.selectedIndex > 0) { - var c = fi_Lookup(e.value); - var j = c.type.split("-"); - var t = j[0]; - var h = j[1] || ""; - if (LANG.fidropdowns[t] != null) { - if (l.name == "cr[]") { - var m = LANG.fidropdowns[t]; - x = ce("select"); - x.name = "crs[]"; - var v = x; - if (h.indexOf("any") != -1) { - var g = ce("option"); - g.value = "-2323"; - g.appendChild(ct(LANG.fiany)); - ae(v, g); - if (w != null && w == "-2323") { - g.selected = true - } - } - for (var k = 0; k < m.length; ++k) { - if (m[k][0]) { - var g = ce("option"); - g.value = m[k][0]; - g.appendChild(ct(m[k][1])); - ae(v, g); - if (w != null && w == m[k][0]) { - g.selected = true - } - } - else { - var v = ce("optgroup"); - v.label = m[k][1]; - ae(x, v) - } - } - if (h.indexOf("none") != -1) { - var g = ce("option"); - g.value = "-2324"; - g.appendChild(ct(LANG.finone)); - ae(v, g); - if (w != null && w == "-2324") { - g.selected = true - } - } - q.appendChild(ct(" ")); - q.appendChild(x) - } - var f = (t == "num"); - if (f) { - q.appendChild(ct(" ")) - } - x = ce("input"); - x.type = "text"; - if (s != null) { - x.value = s.toString() - } else { - x.value = "0" - } - if (l.name == "cr[]") { - x.name = "crv[]" - } - else { - x.name = "wtv[]"; - x.onchange = fi_changeWeight.bind(0, x) - } - if (f) { - x.maxLength = 7; - x.style.textAlign = "center"; - x.style.width = "4.5em" - } - else { - x.type = "hidden" - } - x.setAttribute("autocomplete", "off"); - q.appendChild(x); - if (l.name == "wt[]") { - fi_sortWeight(x) - } - } - else { - if (t == "str") { - x = ce("input"); - x.name = "crs[]"; - x.type = "hidden"; - x.value = "0"; - q.appendChild(x); - x = ce("input"); - x.type = "text"; - if (h.indexOf("small") != -1) { - x.maxLength = 7; - x.style.textAlign = "center"; - x.style.width = "4.5em" - } - else { - x.maxLength = 50; - x.style.width = "9em" - } - x.name = "crv[]"; - if (s != null) { - x.value = s - } - q.appendChild(ct(" ")); - q.appendChild(x) - } - } - } - if (q.parentNode.childNodes.length == 1) { - if (l.selectedIndex > 0) { - fi_appendClearLink(q) - } - } - else { - if (q.parentNode.childNodes.length > 1) { - fi_appendRemoveLink(q) - } - } - l.i = l.selectedIndex - } -} -function fi_setCriteria(g, d, j) { - var e = ge("fi_criteria"); - var f, h = e.childNodes[0].childNodes[0]; - e = h.getElementsByTagName("option"); - for (f = 0; f < e.length; ++f) { - if (e[f].value == g[0]) { - e[f].selected = true; - break - } - } - fi_criterionChange(h, d[0], j[0]); - var b = ge("fi_addcriteria"); - for (f = 1; f < g.length && f < 5; ++f) { - fi_criterionChange(fi_addCriterion(b, g[f]), d[f], j[f]) - } -} -function fi_setWeights(q, m, d, e) { - if (d) {var k = q[0], - g = q[1], - q = {}; - for (var h = 0; h < k.length; ++h) { - var o = fi_Lookup(k[h]); - if (o.type == "num" && LANG.traits[o.name]) { - q[o.name] = g[h] - } - } - } - var s = ge("fi_weight"); - if (fi_weights == null) {fi_weights = {}; - cO(fi_weights, q) - } - var o = ge("fi_addweight"), - l = s.childNodes[0].childNodes[0]; - var h = 0; - for (var r in q) { - if (!LANG.traits[r]) { - continue - } - if (h++>0) { - l = fi_addCriterion(o, r) - } - var b = l.getElementsByTagName("option"); - for (var f = 0; f < b.length; ++f) { - if (b[f].value && r == fi_Lookup(b[f].value).name) { - b[f].selected = true; - break - } - } - fi_criterionChange(l, 0, q[r]) - } - fi_weightsFactor = fi_convertWeights(q, true); - ge("fi_weight_toggle").className = "disclosure-on"; - ge("fi_weight").parentNode.style.display = ""; - if (!m) { - if (!fi_presetMatch(q, e)) { - fi_presetDetails() - } - } -} -function fi_changeWeight(b) { - var a = ge("sdkgnsdkn436"); - a.selectedIndex = 0; - a.i = 0; - fi_sortWeight(b); - fi_presetMatch() -} -function fi_sortWeight(e) { - var d, c = ge("fi_weight"), - b = Number(e.value); - e = e.parentNode; - n = 0; - for (d = 0; d < c.childNodes.length; ++d) {var a = c.childNodes[d]; - if (a.childNodes.length == 5) { n++; - if (a.childNodes[2].nodeName == "INPUT" && b > Number(a.childNodes[2].value)) { - c.insertBefore(e, a); - return - } - } - } - c.insertBefore(e, c.childNodes[n]) -} -function fi_convertWeights(c, g) { - var e = 0, - a = 0; - for (var b in c) { - if (!LANG.traits[b]) { - continue - } - e += Math.abs(c[b]); - if (Number(c[b]) > a) { - a = Number(c[b]) - } - } - if (g) { - return e - } - var d = {}; - for (var b in c) { - d[b] = (LANG.traits[b] ? Math.round(1000 * c[b] / e) / 1000 : c[b]) - } - return d -} -function fi_convertScore(b, a, c) { - if (a == 1) { - return parseInt(b * fi_weightsFactor) - } - else { - if (a == 2) { - return ((b / c) * 100).toFixed(1) + "%" - } - else { - return b.toFixed(2) - } - } -} -function fi_updateScores() { - if (++this._scoreMode > 2) { - this._scoreMode = 0 - } - for (var b = 0; b < this.data.length; ++b) { - if (this.data[b].__tr) { - var a = this.data[b].__tr.lastChild; - a.firstChild.firstChild.nodeValue = fi_convertScore(this.data[b].score, this._scoreMode, this._maxScore) - } - } -} -function fi_presetClass(g, b) { - if (g.selectedIndex != g.i) { - var f, j, k = g.options[g.selectedIndex], - h = g.parentNode, - l = LANG.presets; - fi_resetCriterion(r); - var r = ge("sdkgnsdkn436"); - r.parentNode.style.display = "none"; - if (!b && (g.form.ub.selectedIndex == 0 || g.form.ub.selectedIndex == g.i)) { - g.form.ub.selectedIndex = g.selectedIndex - } - while (r.firstChild) { - de(r.firstChild) - } - ae(r, ce("option")); - if (g.selectedIndex > 0) { - for (j in k._presets) { - var m = k._presets[j]; - var q = ce("optgroup"); - q.label = l[j]; - for (var a in m) { - var e = ce("option"); - e.value = a; - e._weights = m[a]; - ae(e, ct(l[a])); - ae(q, e) - } - if (q && q.childNodes.length > 0) { - ae(r, q) - } - } - if (r.childNodes.length > 1) { - r.parentNode.style.display = "" - } - } - fi_presetChange(r); - g.i = g.selectedIndex - } -} -function fi_presetChange(b) { - if (b.selectedIndex != b.i) {fi_resetCriterion(ge("fi_weight")); - var a = b.options[b.selectedIndex]; - if (b.selectedIndex > 0) { - if (b.form.elements.gm.selectedIndex == 0) { - b.form.elements.gm.selectedIndex = 2 - } - fi_resetCriterion(ge("fi_weight")); - fi_setWeights(a._weights, 1, 0) - } - b.i = b.selectedIndex - } -} -function fi_presetDetails() { - var c = ge("fi_weight"), - e = ge("fi_detail"), - d = ge("fi_addweight"); - var b = g_toggleDisplay(c); - d.style.display = "none"; - if (b) { - e.firstChild.nodeValue = LANG.fihidedetails; - if (c.childNodes.length < 19) { - d.style.display = "" - } - } - else { - e.firstChild.nodeValue = LANG.fishowdetails - } - return false -} -function fi_presetMatch(m, a) { - if (!m) {m = {}; - var r = ge("fi_weight"); - for (var f = 0; f < r.childNodes.length; ++f) { - if (r.childNodes[f].childNodes.length == 5) { - if (r.childNodes[f].childNodes[0].nodeName == "SELECT" && r.childNodes[f].childNodes[2].nodeName == "INPUT") { - var d = r.childNodes[f].childNodes[0].options[r.childNodes[f].childNodes[0].selectedIndex]; - if (d.value) { - m[fi_Lookup(d.value)] = Number(r.childNodes[f].childNodes[2].value) - } - } - } - } - } - var r = ge("fi_presets"); - var t = r.getElementsByTagName("select"); - if (t.length != 2) { - return false - } - var b = fi_convertWeights(m); - for (var l in wt_presets) { - for (var k in wt_presets[l]) { - for (var q in wt_presets[l][k]) { - p = fi_convertWeights(wt_presets[l][k][q]); - var h = true; - for (var o in p) { - if (!LANG.traits[o]) { - continue - } - if (!b[o] || p[o] != b[o]) { - h = false; - break - } - } - if (h) { - for (var e = 0; e < t[0].options.length; ++e) { - if (l == t[0].options[e].value) { - t[0].options[e].selected = true; - fi_presetClass(t[0], a); - break - } - } - for (e = 0; e < t[1].options.length; ++e) { - if (q == t[1].options[e].value) { - t[1].options[e].selected = true; - fi_presetChange(t[1]); - break - } - } - return true - } - } - } - } - return false -} -function fi_scoreSockets(r) { - if (fi_gemScores != null) { - var g = 0, - d = 0, - a = 0; - var b = [], - v = []; - var k = [], - h = []; - var o = {}, - m = {}; - var l = false; - for (var f = 1; f <= 3; ++f) { - var c = r["socket" + f], - u = (c == 1 ? 1 : 0); - if (c && fi_gemScores[c]) { - for (var e = 0; e < fi_gemScores[c].length; ++e) { - var q = fi_gemScores[c][e]; - if (q.uniqEquip == 0 || in_array(k, q.id) < 0) { - g += q.score; - b.push(q.id); - o[f - 1] = 1; - if (q.uniqEquip == 1) { - k.push(q.id) - } - break - } - } - for (var e = 0; e < fi_gemScores[u].length; ++e) { - var q = fi_gemScores[u][e]; - if (q.uniqEquip == 0 || in_array(h, q.id) < 0) { - d += q.score; - v.push(q.id); - m[f - 1] = (q.colors & c); - if (q.uniqEquip == 1) { - h.push(q.id) - } - break - } - } - } - else { - if (c) { - l = true - } - } - } - if (r.socketbonusstat && fi_weights && fi_weightsFactor != 0) { - for (var f in fi_weights) { - if (r.socketbonusstat[f]) { - a += r.socketbonusstat[f] * fi_weights[f] / fi_weightsFactor - } - } - } - r.scoreBest = d; - r.scoreMatch = g + a; - r.scoreSocket = a; - if (r.scoreMatch >= r.scoreBest && !l) { - r.matchSockets = o; - r.gemGain = r.scoreMatch; - r.gems = b - } - else { - r.matchSockets = m; - r.gemGain = r.scoreBest; - r.gems = v - } - r.score += r.gemGain - } - if (r.score > this._maxScore || !this._maxScore) { - this._maxScore = r.score - } - if (fi_upgradeId && r.id == fi_upgradeId) { - this._minScore = r.score - } -} -function fi_dropdownSync(a) { - if (a.selectedIndex >= 0) { - a.className = a.options[a.selectedIndex].className - } -} -function fi_init(b) { - fi_type = b; - var a = ge("fi_subcat"); - if (g_initPath.lastIt && g_initPath.lastIt[3]) { - if (a) { - a.menu = g_initPath.lastIt[3]; - a.menuappend = "&filter"; - a.onmouseover = Menu.show; - a.onmouseout = Menu.hide - } - } - else if (a) { - de(a.parentNode); - } + noMatch = true; + } - fi_initCriterion(ge("fi_criteria"), "cr[]", b); - if (b == "items") { - var d = ge("fi_presets"); - if (d) { - fi_initPresets(ge("fi_presets")); - fi_initCriterion(ge("fi_weight"), "wt[]", b) - } - } - var c = ge("ma-0"); - if (c.getAttribute("checked")) { - c.checked = true - } -} -function fi_initCriterion(h, a, j) { - var b = h.firstChild; - var m = ce("select"); - m.name = a; - m.onchange = m.onkeyup = fi_criterionChange.bind(0, m); - ae(m, ce("option")); - var l = null; - var k = LANG["fi" + j]; - for (var f = 0, g = fi_filters[j].length; f < g; ++f) { - var c = fi_filters[j][f]; - if (!c.type) { - if (l && l.childNodes.length > 0) { - ae(m, l) - } - l = ce("optgroup"); - l.label = (LANG.traits[c.name] ? LANG.traits[c.name] : k[c.name]) - } + if (fi_gemScores[s]) { + for (var j = 0; j < fi_gemScores[s].length; ++j) { + var t = fi_gemScores[s][j]; + if (t.socketLevel <= item.level && (t.uniqEquip == 0 || in_array(bUniq, t.id) < 0)) { + best += t.score; + bGems.push(t.id); + + bSock[i - 1] = (t.colors & n); + + if (t.uniqEquip == 1) { + bUniq.push(t.id); + } + + break; + } + } + } + } + } + + if (item.socketbonusstat && fi_weights && fi_weightsFactor != 0) { + for (var i in fi_weights) { + if (item.socketbonusstat[i]) { + sock += item.socketbonusstat[i] * fi_weights[i] / fi_weightsFactor; + } + } + } + + item.scoreBest = best; + item.scoreMatch = match + sock; + item.scoreSocket = sock; + + if (item.scoreMatch >= item.scoreBest && !noMatch) { + item.matchSockets = mSock; + item.gemGain = item.scoreMatch; + item.gems = mGems; + } else { - if (a != "wt[]" || c.type == "num") { - var d = ce("option"); - d.value = c.id; - var e = LANG.traits[c.name] ? LANG.traits[c.name][0] : k[c.name]; - if (c.indent) { - e = "- " + e - } - ae(d, ct(e)); - ae(l, d) - } - } - } - if (l && l.childNodes.length > 0) { - ae(m, l) - } - ae(b, m) + item.matchSockets = bSock; + item.gemGain = item.scoreBest; + item.gems = bGems; + } + + item.score += item.gemGain; + } + + if (item.score > this._maxScore || !this._maxScore) { + this._maxScore = item.score; + } + + if(this._upgradeIds && in_array(this._upgradeIds, item.id) != -1) { + this._minScore = item.score; + item.upgraded = 1; + } } -function fi_initPresets(g) { - var d, m = ce("select"); - m.onchange = m.onkeyup = fi_presetClass.bind(0, m, 0); - ae(m, ce("option")); - var l = []; - for (var h in wt_presets) { - l.push(h) - } - l.sort(function (i, c) { - return strcmp(g_chr_classes[i], g_chr_classes[c]) - }); - for (var e = 0, f = l.length; e < f; ++e) { - var h = l[e], - b = ce("option"); - b.value = h; - b._presets = wt_presets[h]; - ae(b, ct(g_chr_classes[h])); - ae(m, b) - } - ae(g, m); - var k = ce("span"); - k.style.display = "none"; - var m = ce("select"); - m.id = "sdkgnsdkn436"; - m.onchange = m.onkeyup = fi_presetChange.bind(0, m); - ae(m, ce("option")); - ae(k, ct(" ")); - ae(k, m); - ae(g, k); - ae(g, ct(String.fromCharCode(160, 160))); - var j = ce("a"); - j.href = "javascript:;"; - j.id = "fi_detail"; - j.appendChild(ct(LANG.fishowdetails)); - j.onclick = fi_presetDetails; - j.onmousedown = rf; - ae(g, j) + +function fi_dropdownSync(_this) { + if (_this.selectedIndex >= 0) { + _this.className = _this.options[_this.selectedIndex].className; + } } -function fi_getExtraCols(f, e, l) { - if (!f.length) { - return - } - var g = [], - j = LANG.fiitems; - var c = (fi_weightsFactor ? (e ? 8 : 9) : 10) - (l ? 1 : 0); - for (var d = 0; d < f.length && d < c; ++d) { - var k = fi_Lookup(f[d]); - if (k && k.name && k.type == "num") { - var h = { - id: k.name, - value: k.name, - name: (LANG.traits[k.name] ? LANG.traits[k.name][2] : j[k.name]), - tooltip: (LANG.traits[k.name] ? LANG.traits[k.name][0] : j[k.name]), - before: (k.before ? k.before: "source") - }; - if (k.name.indexOf("dps") != -1 || k.name.indexOf("speed") != -1) { - h.compute = function (a, b) { - return (a[k.name] || 0).toFixed(2) - } - } - g.push(h) - } - } - if (fi_weightsFactor) { - if (e) { - g.push({ - id: "gems", - name: LANG.gems, - getValue: function (a) { - return a.gems.length - }, - compute: function (q, r) { - if (!q.nsockets || !q.gems) { - return - } - var b = []; - for (var m = 0; m < q.nsockets; m++) { - b.push(q["socket" + (m + 1)]) - } - var a = "", - m = 0; - for (var o in q.socketbonusstat) { - if (LANG.traits[o]) { - if (m++>0) { - a += ", " - } - a += "+" + q.socketbonusstat[o] + " " + LANG.traits[o][2] - } - } - Listview.funcBox.createSocketedIcons(b, r, q.gems, q.matchSockets, a) - }, - sortFunc: function (m, i, o) { - return strcmp((m.gems ? m.gems.length: 0), (i.gems ? i.gems.length: 0)) - } - }) - } - g.push({ - id: "score", - name: LANG.score, - width: "7%", - value: "score", - compute: function (i, m) { - var b = ce("a"); - b.href = "javascript:;"; - b.onclick = fi_updateScores.bind(this); - b.className = (i.gemGain > 0 ? "q2": "q1"); - ae(b, ct(fi_convertScore(i.score, this._scoreMode, this._maxScore))); - ae(m, b) - } - }) - } - if (l) { - g.push(Listview.extraCols.cost) - } - fi_nExtraCols = g.length; - return g + +function fi_init(type) { + fi_type = type; + + var s = ge('fi_subcat'); + if (g_initPath.lastIt && g_initPath.lastIt[3]) { + if (s) { + s.menu = g_initPath.lastIt[3]; + s.menuappend = '&filter'; + s.onmouseover = Menu.show; + s.onmouseout = Menu.hide; + } + } + else if (s) { + de(s.parentNode); + } + + fi_initCriterion(ge('fi_criteria'), 'cr[]', type); + if (type == 'items') { + var foo = ge('fi_presets'); + if (foo) { + fi_initPresets(ge('fi_presets')); + fi_initCriterion(ge('fi_weight'), 'wt[]', type); + } + } + + var ma = ge('ma-0'); + if (ma.getAttribute('checked')) { + ma.checked = true; + } } -function fi_GetReputationCols(factions) { - var res = []; - for (var i = 0, len = factions.length; i < len; ++i) { + +function fi_initCriterion(_this, sname, type) { + var div = _this.firstChild; + + var s = ce('select'); + s.name = sname; + s.onchange = s.onkeyup = fi_criterionChange.bind(0, s); + ae(s, ce('option')); + + var group = null; + var langref = LANG['fi' + type]; + + for (var i = 0, len = fi_filters[type].length; i < len; ++i) { + if (!(g_user.roles & U_GROUP_EMPLOYEE) && fi_filters[type][i].staffonly) { + continue; + } + + var p = fi_filters[type][i]; + + if (!p.type) { + if (group && group.childNodes.length > 0) { + ae(s, group); + } + group = ce('optgroup'); + group.label = (LANG.traits[p.name] ? LANG.traits[p.name] : langref[p.name]); + } + else if (sname != 'wt[]' || (p.type == 'num' && !p.noweights)) { + var o = ce('option'); + o.value = p.id; + + var txt = LANG.traits[p.name] ? LANG.traits[p.name][0] : langref[p.name]; + if (p.indent) { + txt = '- ' + txt; + } + + ae(o, ct(txt)); + ae(group, o); + } + } + if (group && group.childNodes.length > 0) { + ae(s, group); + } + + ae(div, s); +} + +function fi_initPresets(_this) { + var + _class, + s = ce('select'); + + s.onchange = s.onkeyup = fi_presetClass.bind(0, s, 0); + + ae(s, ce('option')); + + if (g_user.weightscales != null && g_user.weightscales.length) { + var o = ce('option'); + o.value = -1; + o._presets = { custom: {} }; + ae(o, ct(LANG.ficustom)); + ae(s, o); + + for (var i = 0, len = g_user.weightscales.length; i < len; ++i) { + o._presets.custom[g_user.weightscales[i].id] = g_user.weightscales[i]; + } + } + + var temp = []; + for (var c in wt_presets) { + temp.push(c); + } + + temp.sort(function (a, b) { + return strcmp(g_chr_classes[a], g_chr_classes[b]); + }); + + for (var i = 0, len = temp.length; i < len; ++i) { + var + c = temp[i], + o = ce('option'); + + o.value = c; + o._presets = wt_presets[c]; + ae(o, ct(g_chr_classes[c])); + ae(s, o); + } + + ae(_this, s); + + var _ = ce('span'); + _.style.display = 'none'; + + var s = ce('select'); + s.id = 'sdkgnsdkn436'; + s.onchange = s.onkeyup = fi_presetChange.bind(0, s); + ae(s, ce('option')); + + ae(_, ct(' ')); + ae(_, s); + ae(_this, _); + ae(_this, ct(String.fromCharCode(160, 160))); + + var a = ce('a'); + a.href = 'javascript:;'; + a.id = 'fi_detail'; + a.appendChild(ct(LANG.fishowdetails)); + a.onclick = fi_presetDetails; + a.onmousedown = rf; + ae(_this, a); + + if(g_user.id > 0) { + ae(_this, ct(String.fromCharCode(160, 160))); + + a = ce('a'); + a.href = 'javascript:;'; + a.className = 'save-icon'; + a.appendChild(ct(LANG.fisavescale)); + a.onclick = fi_presetSave; + a.onmousedown = rf; + ae(_this, a); + + ae(_this, ct(String.fromCharCode(160, 160))); + + a = ce('a'); + a.href = 'javascript:;'; + a.id = 'fi_remscale'; + a.className = 'clear-icon'; + a.style.display = 'none'; + a.appendChild(ct(LANG.fideletescale)); + a.onclick = fi_presetDelete; + a.onmousedown = rf; + ae(_this, a); + } + + var helpLink = ge('statweight-help'); + if (helpLink) { + g_addTooltip(helpLink, LANG.tooltip_statweighting, 'q'); + } +} + +function fi_getExtraCols(wt, gm, pu) { + if (!wt.length) { + return; + } + + var + res = [], + langref = LANG.fiitems; + + var nColsMax = 10; + if (fi_weightsFactor) { + nColsMax--; + } + if (gm) { + nColsMax--; + } + if (pu) { + nColsMax--; + } + + for (var i = 0; i < wt.length && i < nColsMax; ++i) { + var a = fi_Lookup(wt[i]); + if (a && a.name && a.type == 'num') { + var b = { + id: a.name, + value: a.name, + name: (LANG.traits[a.name] ? LANG.traits[a.name][2] : langref[a.name]), + tooltip: (LANG.traits[a.name] ? LANG.traits[a.name][0] : langref[a.name]), + before: (a.before ? a.before: 'source') + }; + + // Fix display of decimal columns + if (a.name.indexOf('dps') != -1 || a.name.indexOf('speed') != -1) { + b.compute = function (item, td) { + return (item[a.name] || 0).toFixed(2); + } + } + + res.push(b); + } + } + + if (fi_weightsFactor) { + if (gm) { + res.push({ + id: 'gems', + name: LANG.gems, + getValue: function (item) { + return item.gems.length; + }, + compute: function (item, td) { + if (!item.nsockets || !item.gems) { + return; + } + + var sockets = []; + for (var i = 0; i < item.nsockets; i++) { + sockets.push(item['socket' + (i + 1)]); + } + + var + bonusText = '', + i = 0; + + for (var s in item.socketbonusstat) { + if (LANG.traits[s]) { + if (i++ > 0) { + bonusText += ', '; + } + bonusText += '+' + item.socketbonusstat[s] + ' ' + LANG.traits[s][2]; + } + } + + Listview.funcBox.createSocketedIcons(sockets, td, item.gems, item.matchSockets, bonusText); + }, + sortFunc: function (a, b, col) { + return strcmp((a.gems ? a.gems.length: 0), (b.gems ? b.gems.length: 0)); + } + }); + } + + res.push({ + id: 'score', + name: LANG.score, + width: '7%', + value: 'score', + compute: function (item, td) { + var a = ce('a'); + a.href = 'javascript:;'; + a.onclick = fi_updateScores.bind(this); + a.className = (item.gemGain > 0 ? 'q2': 'q1'); + + ae(a, ct(fi_convertScore(item.score, this._scoreMode, this._maxScore))); + + ae(td, a); + } + }); + } + + if (pu) { + res.push(Listview.extraCols.cost); + } + + fi_nExtraCols = res.length; + + return res; +} + +function fi_getReputationCols(factions) { + var res = []; + + for (var i = 0, len = factions.length; i < len; ++i) { var name = factions[i][1]; - if (name.length > 15) { - var words = factions[i][1].split(" "); - for (var j = 0, len2 = words.length; j < len2; ++j) { + + if (name.length > 15) { + var words = factions[i][1].split(' '); + for (var j = 0, len2 = words.length; j < len2; ++j) { if (words[j].length > 3) { - name = (words[j].length > 15 ? words[j].substring(0, 12) + "...": words[j]); - break - } - } - } - var col = { id: "faction-" + factions[i][0], - name: name, - tooltip: factions[i][1], - type: "num", - before: "category" - }; - eval("col.getValue = function(quest) { return Listview.funcBox.getQuestReputation(" + factions[i][0] + ", quest) }"); - eval("col.compute = function(quest, td) { return Listview.funcBox.getQuestReputation(" + factions[i][0] + ", quest) }"); - eval("col.sortFunc = function(a, b, col) { var _ = Listview.funcBox.getQuestReputation; return strcmp(_(" + factions[i][0] + ", a), _(" + factions[i][0] + ", b)) }"); - res.push(col) - } - return res + name = (words[j].length > 15 ? words[j].substring(0, 12) + '...': words[j]); + break; + } + } + } + + var col = { + id: 'faction-' + factions[i][0], + name: name, + tooltip: factions[i][1], + type: 'num', + before: 'category' + }; + + eval("col.getValue = function(quest) { return Listview.funcBox.getQuestReputation(" + factions[i][0] + ", quest) }"); + eval("col.compute = function(quest, td) { return Listview.funcBox.getQuestReputation(" + factions[i][0] + ", quest) }"); + eval("col.sortFunc = function(a, b, col) { var _ = Listview.funcBox.getQuestReputation; return strcmp(_(" + factions[i][0] + ", a), _(" + factions[i][0] + ", b)) }"); + + res.push(col); + } + + return res; +} + +function fi_setFilterParams(newParam, menuUrl) { + return fi_mergeFilterParams(null, newParam, menuUrl); +} + +// This is used when propagating the active filter throughout the menu/breadcrumb. +// If the item already had filter params, they will be combined. +function fi_mergeFilterParams(oldParam, newParam, menuUrl) { + var oldJson = fi_filterParamToJson(oldParam); + var newJson = fi_filterParamToJson(newParam); + + if(menuUrl && menuUrl.match('filter=')) { // Don't propegate child menu criteria + menuJson = fi_filterParamToJson(g_parseQueryString(menuUrl.replace(/^.*?filter=/, 'filter=')).filter); + newJson = fi_removeMenuCriteria(newJson, menuJson); + } + + // original code for reference + // var jsonParam = $.extend(newJson, oldJson); + + for (i in oldJson) { // Existing filter params have priority over new ones + newJson[i] = oldJson[i]; + } + + return fi_filterJsonToParam(newJson); +} + +function fi_removeMenuCriteria(json, menu) { + if(menu.cr && json.cr && json.crs && json.crv) { + var + parts = menu.cr.split(':'), + filters = { + cr: json.cr.split(':'), + crs: json.crs.split(':'), + crv: json.crv.split(':') + }; + +/* original code for reference + $.each(parts, function(idx, part) + { + var pos = $.inArray(part, filters.cr); + if(pos != -1) { + filters.cr.splice(pos, 1); + filters.crs.splice(pos, 1); + filters.crv.splice(pos, 1); + } + }); +*/ + + array_walk(parts, function(part) { + var pos = in_array(filters.cr, part); + if (pos != -1) { + filters.cr.splice(pos, 1); + filters.crs.splice(pos, 1); + filters.crv.splice(pos, 1); + } + }); + + json.cr = filters.cr.join(':'); + json.crs = filters.crs.join(':'); + json.crv = filters.crv.join(':'); + } + else if (menu.fa && json.fa) { + delete json.fa; + } + + return json; +} + +function fi_filterParamToJson(filters) { + var result = {}; + + if(filters) { + var parts = filters.split(';'); + +/* original code for reference + $.each(parts, function(idx, part) + { + g_splitQueryParam(part, result); + }); +*/ + array_walk(parts, function(part){ + g_splitQueryParam(part, result); + }); + } + + return result; +} + +function fi_filterJsonToParam(json) { + var result = ''; + + var i = 0; + +/* original code for reference + $.each(json, function(name, value) + { + if(value !== '') { + if(i++ > 0) { + result += ';'; + } + result += name + '=' + value; + } + }); +*/ + array_walk(json, function(value, _, __, name) { + if(value !== '') { + if(i++ > 0) { + result += ';'; + } + result += name + '=' + value; + } + }); + + return result; } diff --git a/template/js/global.js b/template/js/global.js index 6c78e311..68e7a07f 100644 --- a/template/js/global.js +++ b/template/js/global.js @@ -4461,6 +4461,24 @@ Listview.prototype = { ae(m, b); ae(m, ct(")")) } + + if (this._errors) { + var + sp = ce('small'), + b = ce('b'); + + b.className = 'q10 report-icon'; + if (m.innerHTML) { + b.style.marginLeft = '10px'; + } + + g_addTooltip(sp, LANG.lvnote_witherrors, 'q') + + st(b, LANG.error); + ae(sp, b); + ae(m, sp); + } + if (!m.firstChild && this.mode != Listview.MODE_CHECKBOX) { ae(m, ct(String.fromCharCode(160))) } diff --git a/template/js/locale_dede.js b/template/js/locale_dede.js index a943797b..26c9d4bc 100644 --- a/template/js/locale_dede.js +++ b/template/js/locale_dede.js @@ -1125,52 +1125,55 @@ var g_item_subsubclasses = { } } }; + var g_itemset_types = { - 1:"Stoff", - 2:"Leder", - 3:"Schwere R\u00fcstung", - 4:"Platte", - 5:"Dolch", - 6:"Ring", - 7:"Faustwaffe", - 8:"Einhandaxt", - 9:"Einhandstreitkolben", - 10:"Einhandschwert", - 11:"Schmuck", - 12:"Amulett" + 1: "Stoff", + 2: "Leder", + 3: "Schwere R\u00fcstung", + 4: "Platte", + 5: "Dolch", + 6: "Ring", + 7: "Faustwaffe", + 8: "Einhandaxt", + 9: "Einhandstreitkolben", + 10: "Einhandschwert", + 11: "Schmuck", + 12: "Amulett" }; + var g_itemset_notes = { - 1:"Dungeon-Set 1", - 2:"Dungeon-Set 2", - 14:"Dungeon-Set 3", - 3:"Tier 1 Raid-Set", - 4:"Tier 2 Raid-Set", - 5:"Tier 3 Raid-Set", - 12:"Tier 4 Raid-Set", - 13:"Tier 5 Raid-Set", - 18:"Tier 6 Raid-Set", - 23:"Tier 7 Raid-Set", - 25:"Tier 8 Raid-Set", - 27:"Tier 9 Raid-Set", - 29:"Tier 10 Raid-Set", - 6:"Level 60 PvP-Set (Rar)", - 7:"Level 60 PvP-Set (Rar, alt)", - 8:"Level 60 PvP-Set (Episch)", - 16:"Level 70 PvP-Set (Rar)", - 21:"Level 70 PvP-Set 2 (Rar)", - 17:"Arena-Set Saison 1", - 19:"Arena-Set Saison 2", - 20:"Arena-Set Saison 3", - 22:"Arena-Set Saison 4", - 24:"Arena-Set Saison 5", - 26:"Arena-Set Saison 6", - 28:"Arena-Set Saison 7", - 30:"Arena-Set Saison 8", - 15:"Set des Arathibeckens", - 9:"Set der Ruinen von Ahn'Qiraj", - 10:"Set des Tempels von Ahn'Qiraj", - 11:"Set von Zul'Gurub" + 1: "Dungeon-Set 1", + 2: "Dungeon-Set 2", + 14: "Dungeon-Set 3", + 3: "Tier 1 Raid-Set", + 4: "Tier 2 Raid-Set", + 5: "Tier 3 Raid-Set", + 12: "Tier 4 Raid-Set", + 13: "Tier 5 Raid-Set", + 18: "Tier 6 Raid-Set", + 23: "Tier 7 Raid-Set", + 25: "Tier 8 Raid-Set", + 27: "Tier 9 Raid-Set", + 29: "Tier 10 Raid-Set", + 6: "Level 60 PvP-Set (Rar)", + 7: "Level 60 PvP-Set (Rar, alt)", + 8: "Level 60 PvP-Set (Episch)", + 16: "Level 70 PvP-Set (Rar)", + 21: "Level 70 PvP-Set 2 (Rar)", + 17: "Arena-Set Saison 1", + 19: "Arena-Set Saison 2", + 20: "Arena-Set Saison 3", + 22: "Arena-Set Saison 4", + 24: "Arena-Set Saison 5", + 26: "Arena-Set Saison 6", + 28: "Arena-Set Saison 7", + 30: "Arena-Set Saison 8", + 15: "Set des Arathibeckens", + 9: "Set der Ruinen von Ahn'Qiraj", + 10: "Set des Tempels von Ahn'Qiraj", + 11: "Set von Zul'Gurub" }; + var g_npc_classifications = { 0:"Normal", 1:"Elite", @@ -2096,6 +2099,7 @@ var LANG = { hyphen: " - ", colon: ": ", qty: " ($1)", + error: "Fehler", date: "Datum", date_colon: "Datum: ", @@ -2294,6 +2298,7 @@ var LANG = { lvnote_tryfiltering: "Versucht es mit gefilterten Suchergebnissen.", lvnote_trynarrowing: "Versucht, Eure Suche weiter einzugrenzen", lvnote_upgradesfor: 'Sucht nach Verbesserungen f\u00fcr $3.', + lvnote_witherrors: "Einige Filter in Eurer Suche waren nicht gültig und wurden ignoriert.", lvnote_itemsfound: "$1 Gegenst\u00e4nde gefunden ($2 angezeigt)", lvnote_itemsetsfound: "$1 Sets gefunden ($2 angezeigt)", @@ -2730,37 +2735,51 @@ var LANG = { myaccount_purged: "Gel\u00f6scht", myaccount_purgefailed: "L\u00f6schen fehlgeschlagen :(", myaccount_purgesuccess: "Bekanntmachungsdaten wurden erfolgreich gel\u00f6scht!", - types: { - 1: ["NPC", "NPC", "NPCs", "NPCs"], - 2: ["Objekt", "Objekt", "Objekte", "Objekte"], - 3: ["Gegenstand", "Gegenstand", "Gegenst\u00e4nde", "Gegenst\u00e4nde"], - 4: ["Set", "Set", "Sets", "Sets"], - 5: ["Quest", "Quest", "Quests", "Quests"], - 6: ["Zauber", "Zauber", "Zauber", "Zauber"], - 7: ["Zone", "Zone", "Gebiete", "Gebiete"], - 8: ["Fraktion", "fraktion", "Fraktionen", "Fraktionen"], - 9: ["Begleiter", "Begleiter", "Begleiter", "Begleiter"], - 10: ["Erfolg", "Erfolg", "Erfolge", "Erfolge"], - 11: ["Titel", "Titel", "Titel", "Titel"], - 12: ["Weltereignis", "Weltereignis", "Weltereignisse", "Weltereignisse"], - 13: ["Klasse", "Klasse", "Klassen", "Klassen"], - 14: ["Volk", "Volk", "V\u00f6lker", "V\u00f6lker"], - 15: ["Fertigkeit", "Fertigkeit", "Fertigkeiten", "Fertigkeiten"], - 16: ["Statistik", "Statistik", "Statistiken", "Statistiken"] - }, - timeunitssg: ["Jahr", "Monat", "Woche", "Tag", "Stunde", "Minute", "Sekunde"], - timeunitspl: ["Jahre", "Monate", "Wochen", "Tagen", "Stunden", "Minuten", "Sekunden"], + + types: { + 1: ["NPC", "NPC" , "NPCs", "NPCs"], + 2: ["Objekt", "Objekt", "Objekte", "Objekte"], + 3: ["Gegenstand", "Gegenstand", "Gegenstände", "Gegenstände"], + 4: ["Ausrüstungsset", "Ausrüstungsset", "Ausrüstungssets", "Ausrüstungssets"], + 5: ["Quest", "Quest", "Quests", "Quests"], + 6: ["Zauber", "Zauber", "Zauber", "Zauber"], + 7: ["Zone", "Zone", "Gebiete", "Gebiete"], + 8: ["Fraktion", "Fraktion", "Fraktionen", "Fraktionen"], + 9: ["Begleiter", "Begleiter", "Begleiter", "Begleiter"], + 10: ["Erfolg", "Erfolg", "Erfolge", "Erfolge"], + 11: ["Titel", "Titel", "Titel", "Titel"], + 12: ["Weltereignis", "Weltereignis", "Weltereignisse", "Weltereignisse"], + 13: ["Klasse", "Klasse", "Klassen", "Klassen"], + 14: ["Volk", "Volk", "Völker", "Völker"], + 15: ["Fertigkeit", "Fertigkeit", "Fertigkeiten", "Fertigkeiten"], + 16: ["Statistik", "Statistik", "Statistiken", "Statistiken"], + 17: ["Währung", "Währung", "Währungen", "Währungen"] + }, + + timeunitssg: ["Jahr", "Monat", "Woche", "Tag", "Stunde", "Minute", "Sekunde"], + timeunitspl: ["Jahre", "Monate", "Wochen", "Tagen", "Stunden", "Minuten", "Sekunden"], timeunitsab: ["J.", "M.", "W.", "Tag", "Std.", "Min", "Sek."], - fishow: "Filter erstellen", - fihide: "Filteroptionen ausblenden", - fiany: "Beliebig", - finone: "Nichts", - firemove: "entfernen", - ficlear: "leeren", - fishowdetails: "Details anzeigen", - fihidedetails: "Details ausblenden", - message_fillsomecriteria: "Bitte gebt einige Kriterien ein.", - tooltip_jconlygems: "Wenn aktiviert, werden auch spezielle
\nJuwelenschleifer-Edelsteine für die
\nGewichtung von Werten in Betracht gezogen.", + + fishow: "Filter erstellen", + fihide: "Filteroptionen ausblenden", + + fiany: "Beliebig", + finone: "Nichts", + + firemove: "entfernen", + ficlear: "leeren", + ficustom: "Individuell", + + fishowdetails: "Details anzeigen", + fihidedetails: "Details ausblenden", + fisavescale: "Speichern", + fideletescale: "Löschen", + + message_fillsomecriteria: "Bitte gebt einige Kriterien ein.", + + tooltip_jconlygems: "Wenn aktiviert, werden auch spezielle
\nJuwelenschleifer-Edelsteine für die
\nGewichtung von Werten in Betracht gezogen.", + tooltip_genericrating: "Anlegen: Erhöht Eure $1 um $3 (0 @ L0).
", + fidropdowns: { yn: [[1, "Ja"], [2, "Nein"]], num: [[1, ">"], [2, ">="], [3, "="], [4, "<="], [5, "<"]], diff --git a/template/js/locale_enus.js b/template/js/locale_enus.js index 4ac262f2..855261ba 100644 --- a/template/js/locale_enus.js +++ b/template/js/locale_enus.js @@ -1171,52 +1171,55 @@ var g_item_subsubclasses = { } } }; + var g_itemset_types = { - 1:"Cloth", - 2:"Leather", - 3:"Mail", - 4:"Plate", - 5:"Dagger", - 6:"Ring", - 7:"Fist Weapon", - 8:"One-Handed Axe", - 9:"One-Handed Mace", - 10:"One-Handed Sword", - 11:"Trinket", - 12:"Amulet" + 1: "Cloth", + 2: "Leather", + 3: "Mail", + 4: "Plate", + 5: "Dagger", + 6: "Ring", + 7: "Fist Weapon", + 8: "One-Handed Axe", + 9: "One-Handed Mace", + 10: "One-Handed Sword", + 11: "Trinket", + 12: "Amulet" }; + var g_itemset_notes = { - 1:"Dungeon Set 1", - 2:"Dungeon Set 2", - 14:"Dungeon Set 3", - 3:"Tier 1 Raid Set", - 4:"Tier 2 Raid Set", - 5:"Tier 3 Raid Set", - 12:"Tier 4 Raid Set", - 13:"Tier 5 Raid Set", - 18:"Tier 6 Raid Set", - 23:"Tier 7 Raid Set", - 25:"Tier 8 Raid Set", - 27:"Tier 9 Raid Set", - 29:"Tier 10 Raid Set", - 6:"Level 60 PvP Rare Set", - 7:"Level 60 PvP Rare Set (Old)", - 8:"Level 60 PvP Epic Set", - 16:"Level 70 PvP Rare Set", - 21:"Level 70 PvP Rare Set 2", - 17:"Arena Season 1 Set", - 19:"Arena Season 2 Set", - 20:"Arena Season 3 Set", - 22:"Arena Season 4 Set", - 24:"Arena Season 5 Set", - 26:"Arena Season 6 Set", - 28:"Arena Season 7 Set", - 30:"Arena Season 8 Set", - 15:"Arathi Basin Set", - 9:"Ruins of Ahn'Qiraj Set", - 10:"Temple of Ahn'Qiraj Set", - 11:"Zul'Gurub Set" + 1: "Dungeon Set 1", + 2: "Dungeon Set 2", + 14: "Dungeon Set 3", + 3: "Tier 1 Raid Set", + 4: "Tier 2 Raid Set", + 5: "Tier 3 Raid Set", + 12: "Tier 4 Raid Set", + 13: "Tier 5 Raid Set", + 18: "Tier 6 Raid Set", + 23: "Tier 7 Raid Set", + 25: "Tier 8 Raid Set", + 27: "Tier 9 Raid Set", + 29: "Tier 10 Raid Set", + 6: "Level 60 PvP Rare Set", + 7: "Level 60 PvP Rare Set (Old)", + 8: "Level 60 PvP Epic Set", + 16: "Level 70 PvP Rare Set", + 21: "Level 70 PvP Rare Set 2", + 17: "Arena Season 1 Set", + 19: "Arena Season 2 Set", + 20: "Arena Season 3 Set", + 22: "Arena Season 4 Set", + 24: "Arena Season 5 Set", + 26: "Arena Season 6 Set", + 28: "Arena Season 7 Set", + 30: "Arena Season 8 Set", + 15: "Arathi Basin Set", + 9: "Ruins of Ahn'Qiraj Set", + 10: "Temple of Ahn'Qiraj Set", + 11: "Zul'Gurub Set" }; + var g_npc_classifications = { 0:"Normal", 1:"Elite", @@ -2134,13 +2137,14 @@ var g_socket_names = { 14:"Prismatic Socket" }; var LANG = { - and: " and ", - comma: ", ", + and: " and ", + comma: ", ", ellipsis: "…", - dash: " – ", - hyphen: " - ", - colon: ": ", - qty: " ($1)", + dash: " – ", + hyphen: " - ", + colon: ": ", + qty: " ($1)", + error: "Error", date: "Date", date_colon: "Date: ", @@ -2339,6 +2343,7 @@ var LANG = { lvnote_tryfiltering: "Try filtering your results", lvnote_trynarrowing: "Try narrowing your search", lvnote_upgradesfor: 'Finding upgrades for $3.', + lvnote_witherrors: "Some filters in your search were invalid and have been ignored.", lvnote_itemsfound: "$1 items found ($2 displayed)", lvnote_itemsetsfound: "$1 item sets found ($2 displayed)", @@ -2775,338 +2780,438 @@ var LANG = { myaccount_purged: "Purged", myaccount_purgefailed: "Purge failed : (", myaccount_purgesuccess: "Announcement data has been successfully purged!", + types: { - 1: ["NPC", "NPC", "NPCs", "NPCs"], - 2: ["Object", "object", "Objects", "objects"], - 3: ["Item", "item", "Items", "items"], - 4: ["Item Set", "item set", "Item Sets", "item sets"], - 5: ["Quest", "quest", "Quests", "quests"], - 6: ["Spell", "spell", "Spells", "spells"], - 7: ["Zone", "zone", "Zones", "zones"], - 8: ["Faction", "faction", "Factions", "factions"], - 9: ["Pet", "pet", "Pets", "pets"], - 10: ["Achievement", "achievement", "Achievements", "achievements"], - 11: ["Title", "title", "Titles", "titles"], - 12: ["World Event", "world event", "World Events", "world events"], - 13: ["Class", "class", "Classes", "classes"], - 14: ["Race", "race", "Races", "races"], - 15: ["Skill", "skill", "Skills", "skills"], - 16: ["Statistic", "statistic", "Statistics", "statistics"] + 1: ["NPC", "NPC" , "NPCs", "NPCs"], + 2: ["Object", "object", "Objects", "objects"], + 3: ["Item", "item", "Items", "items"], + 4: ["Item Set", "item set", "Item Sets", "item sets"], + 5: ["Quest", "quest", "Quests", "quests"], + 6: ["Spell", "spell", "Spells", "spells"], + 7: ["Zone", "zone", "Zones", "zones"], + 8: ["Faction", "faction", "Factions", "factions"], + 9: ["Pet", "pet", "Pets", "pets"], + 10: ["Achievement", "achievement", "Achievements", "achievements"], + 11: ["Title", "title", "Titles", "titles"], + 12: ["World Event", "world event", "World Events", "world events"], + 13: ["Class", "class", "Classes", "classes"], + 14: ["Race", "race", "Races", "races"], + 15: ["Skill", "skill", "Skills", "skills"], + 16: ["Statistic", "statistic", "Statistics", "statistics"], + 17: ["Currency", "currency", "Currencies", "currencies"] }, + timeunitssg: ["year", "month", "week", "day", "hour", "minute", "second"], timeunitspl: ["years", "months", "weeks", "days", "hours", "minutes", "seconds"], timeunitsab: ["yr", "mo", "wk", "day", "hr", "min", "sec"], - fishow: "Create a filter", - fihide: "Hide filter options", - fiany: "Any", - finone: "None", - firemove: "remove", - ficlear: "clear", - fishowdetails: "show details", - fihidedetails: "hide details", - message_fillsomecriteria: "Please fill in some criteria.", - tooltip_jconlygems: "If checked, jewelcrafter-only gems
\nwill also be used to determine the best
\npossible gems for an item's weighted score.", + + fishow: "Create a filter", + fihide: "Hide filter options", + + fiany: "Any", + finone: "None", + + firemove: "remove", + ficlear: "clear", + ficustom: "Custom", + + fishowdetails: "show details", + fihidedetails: "hide details", + fisavescale: "Save", + fideletescale: "Delete", + + message_fillsomecriteria: "Please fill in some criteria.", + + tooltip_jconlygems: "If checked, jewelcrafter-only gems
\nwill also be used to determine the best
\npossible gems for an item's weighted score.", + tooltip_genericrating: "Equip: Increases your $1 by $3 (0 @ L0).
", + fidropdowns: { - yn: [[1, "Yes"], [2, "No"]], - num: [[1, ">"], [2, ">="], [3, "="], [4, "<="], [5, "<"]], - side: [[1, "Yes"], [2, "Alliance"], [3, "Horde"], [4, "Both"], [5, "No"]], - faction: [[1037, "Alliance Vanguard"], [1106, "Argent Crusade"], [529, "Argent Dawn"], [1012, "Ashtongue Deathsworn"], [87, "Bloodsail Buccaneers"], [21, "Booty Bay"], [910, "Brood of Nozdormu"], [609, "Cenarion Circle"], [942, "Cenarion Expedition"], [909, "Darkmoon Faire"], [530, "Darkspear Trolls"], [69, "Darnassus"], [577, "Everlook"], [930, "Exodar"], [1068, "Explorers' League"], [1104, "Frenzyheart Tribe"], [729, "Frostwolf Clan"], [369, "Gadgetzan"], [92, "Gelkis Clan Centaur"], [54, "Gnomeregan Exiles"], [946, "Honor Hold"], [1052, "Horde Expedition"], [749, "Hydraxian Waterlords"], [47, "Ironforge"], [989, "Keepers of Time"], [1090, "Kirin Tor"], [1098, "Knights of the Ebon Blade"], [978, "Kurenai"], [1011, "Lower City"], [93, "Magram Clan Centaur"], [1015, "Netherwing"], [1038, "Ogri'la"], [76, "Orgrimmar"], [470, "Ratchet"], [349, "Ravenholdt"], [1031, "Sha'tari Skyguard"], [1077, "Shattered Sun Offensive"], [809, "Shen'dralar"], [911, "Silvermoon City"], [890, "Silverwing Sentinels"], [970, "Sporeggar"], [730, "Stormpike Guard"], [72, "Stormwind"], [70, "Syndicate"], [932, "The Aldor"], [1156, "The Ashen Verdict"], [933, "The Consortium"], [510, "The Defilers"], [1126, "The Frostborn"], [1067, "The Hand of Vengeance"], [1073, "The Kalu'ak"], [509, "The League of Arathor"], [941, "The Mag'har"], [1105, "The Oracles"], [990, "The Scale of the Sands"], [934, "The Scryers"], [935, "The Sha'tar"], [1094, "The Silver Covenant"], [1119, "The Sons of Hodir"], [1124, "The Sunreavers"], [1064, "The Taunka"], [967, "The Violet Eye"], [1091, "The Wyrmrest Accord"], [59, "Thorium Brotherhood"], [947, "Thrallmar"], [81, "Thunder Bluff"], [576, "Timbermaw Hold"], [922, "Tranquillien"], [68, "Undercity"], [1050, "Valiance Expedition"], [1085, "Warsong Offensive"], [889, "Warsong Outriders"], [589, "Wintersaber Trainers"], [270, "Zandalar Tribe"]], - // alt faction: [[469, "Alliance"], [1037, "Alliance Vanguard"], [1106, "Argent Crusade"], [529, "Argent Dawn"], [1012, "Ashtongue Deathsworn"], [87, "Bloodsail Buccaneers"], [21, "Booty Bay"], [910, "Brood of Nozdormu"], [609, "Cenarion Circle"], [942, "Cenarion Expedition"], [909, "Darkmoon Faire"], [530, "Darkspear Trolls"], [69, "Darnassus"], [577, "Everlook"], [930, "Exodar"], [1068, "Explorers' League"], [1104, "Frenzyheart Tribe"], [729, "Frostwolf Clan"], [369, "Gadgetzan"], [92, "Gelkis Clan Centaur"], [54, "Gnomeregan Exiles"], [946, "Honor Hold"], [67, "Horde"], [1052, "Horde Expedition"], [749, "Hydraxian Waterlords"], [47, "Ironforge"], [989, "Keepers of Time"], [1090, "Kirin Tor"], [1098, "Knights of the Ebon Blade"], [978, "Kurenai"], [1011, "Lower City"], [93, "Magram Clan Centaur"], [1015, "Netherwing"], [1038, "Ogri'la"], [76, "Orgrimmar"], [470, "Ratchet"], [349, "Ravenholdt"], [1031, "Sha'tari Skyguard"], [1077, "Shattered Sun Offensive"], [809, "Shen'dralar"], [911, "Silvermoon City"], [890, "Silverwing Sentinels"], [970, "Sporeggar"], [169, "Steamwheedle Cartel"], [730, "Stormpike Guard"], [72, "Stormwind"], [70, "Syndicate"], [932, "The Aldor"], [1156, "The Ashen Verdict"], [933, "The Consortium"], [510, "The Defilers"], [1126, "The Frostborn"], [1067, "The Hand of Vengeance"], [1073, "The Kalu'ak"], [509, "The League of Arathor"], [941, "The Mag'har"], [1105, "The Oracles"], [990, "The Scale of the Sands"], [934, "The Scryers"], [935, "The Sha'tar"], [1094, "The Silver Covenant"], [1119, "The Sons of Hodir"], [1124, "The Sunreavers"], [1064, "The Taunka"], [967, "The Violet Eye"], [1091, "The Wyrmrest Accord"], [59, "Thorium Brotherhood"], [947, "Thrallmar"], [81, "Thunder Bluff"], [576, "Timbermaw Hold"], [922, "Tranquillien"], [68, "Undercity"], [1050, "Valiance Expedition"], [1085, "Warsong Offensive"], [889, "Warsong Outriders"], [589, "Wintersaber Trainers"], [270, "Zandalar Tribe"]], - zone: [[4494, "Ahn'kahet: The Old Kingdom"], [36, "Alterac Mountains"], [2597, "Alterac Valley"], [3358, "Arathi Basin"], [45, "Arathi Highlands"], [331, "Ashenvale"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [16, "Azshara"], [3524, "Azuremyst Isle"], [3, "Badlands"], [3959, "Black Temple"], [719, "Blackfathom Deeps"], [1584, "Blackrock Depths"], [25, "Blackrock Mountain"], [1583, "Blackrock Spire"], [2677, "Blackwing Lair"], [3522, "Blade's Edge Mountains"], [4, "Blasted Lands"], [3525, "Bloodmyst Isle"], [3537, "Borean Tundra"], [46, "Burning Steppes"], [2918, "Champions' Hall"], [2817, "Crystalsong Forest"], [4395, "Dalaran"], [4378, "Dalaran Sewers"], [148, "Darkshore"], [1657, "Darnassus"], [41, "Deadwind Pass"], [2257, "Deeprun Tram"], [405, "Desolace"], [2557, "Dire Maul"], [65, "Dragonblight"], [4196, "Drak'Tharon Keep"], [1, "Dun Morogh"], [14, "Durotar"], [10, "Duskwood"], [15, "Dustwallow Marsh"], [139, "Eastern Plaguelands"], [12, "Elwynn Forest"], [3430, "Eversong Woods"], [3820, "Eye of the Storm"], [361, "Felwood"], [357, "Feralas"], [3433, "Ghostlands"], [133, "Gnomeregan"], [394, "Grizzly Hills"], [3618, "Gruul's Lair"], [4416, "Gundrak"], [2917, "Hall of Legends"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3483, "Hellfire Peninsula"], [3562, "Hellfire Ramparts"], [267, "Hillsbrad Foothills"], [495, "Howling Fjord"], [4742, "Hrothgar's Landing"], [3606, "Hyjal Summit"], [210, "Icecrown"], [4812, "Icecrown Citadel"], [1537, "Ironforge"], [4710, "Isle of Conquest"], [4080, "Isle of Quel'Danas"], [2562, "Karazhan"], [38, "Loch Modan"], [4095, "Magisters' Terrace"], [3836, "Magtheridon's Lair"], [3792, "Mana-Tombs"], [2100, "Maraudon"], [2717, "Molten Core"], [493, "Moonglade"], [215, "Mulgore"], [3518, "Nagrand"], [3456, "Naxxramas"], [3523, "Netherstorm"], [2367, "Old Hillsbrad Foothills"], [2159, "Onyxia's Lair"], [1637, "Orgrimmar"], [4813, "Pit of Saron"], [2437, "Ragefire Chasm"], [722, "Razorfen Downs"], [491, "Razorfen Kraul"], [44, "Redridge Mountains"], [3429, "Ruins of Ahn'Qiraj"], [3968, "Ruins of Lordaeron"], [796, "Scarlet Monastery"], [2057, "Scholomance"], [51, "Searing Gorge"], [3607, "Serpentshrine Cavern"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [209, "Shadowfang Keep"], [3520, "Shadowmoon Valley"], [3703, "Shattrath City"], [3711, "Sholazar Basin"], [1377, "Silithus"], [3487, "Silvermoon City"], [130, "Silverpine Forest"], [406, "Stonetalon Mountains"], [1519, "Stormwind City"], [4384, "Strand of the Ancients"], [33, "Stranglethorn Vale"], [2017, "Stratholme"], [1477, "Sunken Temple"], [4075, "Sunwell Plateau"], [8, "Swamp of Sorrows"], [440, "Tanaris"], [141, "Teldrassil"], [3428, "Temple of Ahn'Qiraj"], [3519, "Terokkar Forest"], [3848, "The Arcatraz"], [17, "The Barrens"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [3702, "The Circle of Blood"], [4100, "The Culling of Stratholme"], [1581, "The Deadmines"], [3557, "The Exodar"], [3842, "The Eye"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [47, "The Hinterlands"], [3849, "The Mechanar"], [4120, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [3698, "The Ring of Trials"], [4406, "The Ring of Valor"], [4298, "The Scarlet Enclave"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [717, "The Stockade"], [67, "The Storm Peaks"], [3716, "The Underbog"], [457, "The Veiled Sea"], [4415, "The Violet Hold"], [400, "Thousand Needles"], [1638, "Thunder Bluff"], [85, "Tirisfal Glades"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [1337, "Uldaman"], [4273, "Ulduar"], [490, "Un'Goro Crater"], [1497, "Undercity"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"], [718, "Wailing Caverns"], [3277, "Warsong Gulch"], [28, "Western Plaguelands"], [40, "Westfall"], [11, "Wetlands"], [4197, "Wintergrasp"], [618, "Winterspring"], [3521, "Zangarmarsh"], [3805, "Zul'Aman"], [66, "Zul'Drak"], [978, "Zul'Farrak"], [19, "Zul'Gurub"]], - // alt zone: [[4494, "Ahn'kahet: The Old Kingdom"], [36, "Alterac Mountains"], [2597, "Alterac Valley"], [3358, "Arathi Basin"], [45, "Arathi Highlands"], [331, "Ashenvale"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [16, "Azshara"], [3524, "Azuremyst Isle"], [3, "Badlands"], [3959, "Black Temple"], [719, "Blackfathom Deeps"], [1584, "Blackrock Depths"], [25, "Blackrock Mountain"], [1583, "Blackrock Spire"], [2677, "Blackwing Lair"], [3702, "Blade's Edge Arena"], [3522, "Blade's Edge Mountains"], [4, "Blasted Lands"], [3525, "Bloodmyst Isle"], [3537, "Borean Tundra"], [46, "Burning Steppes"], [1941, "Caverns of Time"], [3905, "Coilfang Reservoir"], [4024, "Coldarra"], [2817, "Crystalsong Forest"], [4395, "Dalaran"], [4378, "Dalaran Arena"], [279, "Dalaran Crater"], [148, "Darkshore"], [393, "Darkspear Strand"], [1657, "Darnassus"], [41, "Deadwind Pass"], [2257, "Deeprun Tram"], [405, "Desolace"], [2557, "Dire Maul"], [65, "Dragonblight"], [4196, "Drak'Tharon Keep"], [1, "Dun Morogh"], [14, "Durotar"], [10, "Duskwood"], [15, "Dustwallow Marsh"], [139, "Eastern Plaguelands"], [12, "Elwynn Forest"], [3430, "Eversong Woods"], [3820, "Eye of the Storm"], [361, "Felwood"], [357, "Feralas"], [3433, "Ghostlands"], [721, "Gnomeregan"], [394, "Grizzly Hills"], [3923, "Gruul's Lair"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3483, "Hellfire Peninsula"], [3562, "Hellfire Ramparts"], [267, "Hillsbrad Foothills"], [495, "Howling Fjord"], [4742, "Hrothgar's Landing"], [3606, "Hyjal Summit"], [210, "Icecrown"], [4812, "Icecrown Citadel"], [1537, "Ironforge"], [4710, "Isle of Conquest"], [4080, "Isle of Quel'Danas"], [3457, "Karazhan"], [38, "Loch Modan"], [4131, "Magisters' Terrace"], [3836, "Magtheridon's Lair"], [3792, "Mana-Tombs"], [2100, "Maraudon"], [2717, "Molten Core"], [493, "Moonglade"], [215, "Mulgore"], [3518, "Nagrand"], [3698, "Nagrand Arena"], [3456, "Naxxramas"], [3523, "Netherstorm"], [2367, "Old Hillsbrad Foothills"], [2159, "Onyxia's Lair"], [1637, "Orgrimmar"], [4813, "Pit of Saron"], [4298, "Plaguelands: The Scarlet Enclave"], [2437, "Ragefire Chasm"], [722, "Razorfen Downs"], [491, "Razorfen Kraul"], [44, "Redridge Mountains"], [3429, "Ruins of Ahn'Qiraj"], [3968, "Ruins of Lordaeron"], [796, "Scarlet Monastery"], [2057, "Scholomance"], [51, "Searing Gorge"], [3607, "Serpentshrine Cavern"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [209, "Shadowfang Keep"], [3520, "Shadowmoon Valley"], [3703, "Shattrath City"], [3711, "Sholazar Basin"], [1377, "Silithus"], [3487, "Silvermoon City"], [130, "Silverpine Forest"], [3679, "Skettis"], [406, "Stonetalon Mountains"], [1519, "Stormwind City"], [4384, "Strand of the Ancients"], [33, "Stranglethorn Vale"], [2017, "Stratholme"], [1477, "Sunken Temple"], [4075, "Sunwell Plateau"], [8, "Swamp of Sorrows"], [440, "Tanaris"], [141, "Teldrassil"], [3428, "Temple of Ahn'Qiraj"], [3519, "Terokkar Forest"], [3848, "The Arcatraz"], [17, "The Barrens"], [2366, "The Black Morass"], [3840, "The Black Temple"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [1581, "The Deadmines"], [3557, "The Exodar"], [3845, "The Eye"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [47, "The Hinterlands"], [3849, "The Mechanar"], [4265, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [4406, "The Ring of Valor"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [717, "The Stockade"], [67, "The Storm Peaks"], [3716, "The Underbog"], [457, "The Veiled Sea"], [4415, "The Violet Hold"], [400, "Thousand Needles"], [1638, "Thunder Bluff"], [1216, "Timbermaw Hold"], [85, "Tirisfal Glades"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [1337, "Uldaman"], [4273, "Ulduar"], [490, "Un'Goro Crater"], [1497, "Undercity"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"], [718, "Wailing Caverns"], [3277, "Warsong Gulch"], [28, "Western Plaguelands"], [40, "Westfall"], [11, "Wetlands"], [4197, "Wintergrasp"], [618, "Winterspring"], [3521, "Zangarmarsh"], [3805, "Zul'Aman"], [66, "Zul'Drak"], [1176, "Zul'Farrak"], [1977, "Zul'Gurub"]], - resistance: [[6, "Arcane"], [2, "Fire"], [3, "Nature"], [4, "Frost"], [5, "Shadow"], [1, "Holy"], [0, "Physical"]], - gem: [[5, "Yes"], [1, "Meta"], [2, "Red"], [3, "Yellow"], [4, "Blue"], [6, "No"]], - profession: [[11, "Yes"], [1, "Alchemy"], [2, "Blacksmithing"], [3, "Cooking"], [4, "Enchanting"], [5, "Engineering"], [6, "First Aid"], [13, "Fishing"], [14, "Herbalism"], [15, "Inscription"], [7, "Jewelcrafting"], [8, "Leatherworking"], [9, "Mining"], [10, "Tailoring"], [12, "No"]], - expansion: [[3, "Wrath of the Lich King"], [2, "The Burning Crusade"], [1, "None"]], - totemcategory: [[3, "Air Totem"], [14, "Arclight Spanner"], [162, "Blacksmith Hammer"], [168, "Bladed Pickaxe"], [141, "Drums"], [2, "Earth Totem"], [4, "Fire Totem"], [169, "Flint and Tinder"], [161, "Gnomish Army Knife"], [15, "Gyromatic Micro-Adjustor"], [167, "Hammer Pick"], [81, "Hollow Quill"], [21, "Master Totem"], [165, "Mining Pick"], [12, "Philosopher's Stone"], [62, "Runed Adamantite Rod"], [10, "Runed Arcanite Rod"], [101, "Runed Azurite Rod"], [189, "Runed Cobalt Rod"], [6, "Runed Copper Rod"], [63, "Runed Eternium Rod"], [41, "Runed Fel Iron Rod"], [8, "Runed Golden Rod"], [7, "Runed Silver Rod"], [190, "Runed Titanium Rod"], [9, "Runed Truesilver Rod"], [166, "Skinning Knife"], [121, "Virtuoso Inking Set"], [5, "Water Totem"]], - heroiczone: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4812, "Icecrown Citadel"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [3456, "Naxxramas"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [4273, "Ulduar"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"]], - // alt heroiczone: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4812, "Icecrown Citadel"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [3456, "Naxxramas"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [4273, "Ulduar"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"]], - heroicdungeon: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"]], - // alt heroicdungeon: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"]], - heroicraid: [[4812, "Icecrown Citadel"], [4722, "Trial of the Crusader"]], - multimoderaid: [[4812, "Icecrown Citadel"], [3456, "Naxxramas"], [2159, "Onyxia's Lair"], [4500, "The Eye of Eternity"], [4493, "The Obsidian Sanctum"], [4722, "Trial of the Crusader"], [4273, "Ulduar"], [4603, "Vault of Archavon"]], - event: [[372, "Brewfest"], [283, "Call to Arms: Alterac Valley"], [285, "Call to Arms: Arathi Basin"], [353, "Call to Arms: Eye of the Storm"], [420, "Call to Arms: Isle of Conquest"], [400, "Call to Arms: Strand of the Ancients"], [284, "Call to Arms: Warsong Gulch"], [201, "Children's Week"], [374, "Darkmoon Faire"], [409, "Day of the Dead"], [141, "Feast of Winter Veil"], [324, "Hallow's End"], [321, "Harvest Festival"], [424, "Kalu'ak Fishing Derby"], [335, "Love is in the Air"], [327, "Lunar Festival"], [341, "Midsummer Fire Festival"], [181, "Noblegarden"], [404, "Pilgrim's Bounty"], [398, "Pirates' Day"], [301, "Stranglethorn Fishing Extravaganza"]], - pvp: [[1, "Yes"], [3, "Arena"], [4, "Battleground"], [5, "World"], [2, "No"]], - currency: [[20560, "Alterac Valley Mark of Honor"], [32572, "Apexis Crystal"], [32569, "Apexis Shard"], [20559, "Arathi Basin Mark of Honor"], [29736, "Arcane Rune"], [44128, "Arctic Fur"], [29434, "Badge of Justice"], [34853, "Belt of the Forgotten Conqueror"], [34854, "Belt of the Forgotten Protector"], [34855, "Belt of the Forgotten Vanquisher"], [34856, "Boots of the Forgotten Conqueror"], [34857, "Boots of the Forgotten Protector"], [34858, "Boots of the Forgotten Vanquisher"], [34848, "Bracers of the Forgotten Conqueror"], [34851, "Bracers of the Forgotten Protector"], [34852, "Bracers of the Forgotten Vanquisher"], [40625, "Breastplate of the Lost Conqueror"], [40626, "Breastplate of the Lost Protector"], [40627, "Breastplate of the Lost Vanquisher"], [45632, "Breastplate of the Wayward Conqueror"], [45633, "Breastplate of the Wayward Protector"], [45634, "Breastplate of the Wayward Vanquisher"], [34169, "Breeches of Natural Aggression"], [37829, "Brewfest Prize Token"], [23247, "Burning Blossom"], [34186, "Chain Links of the Tumultuous Storm"], [44990, "Champion's Seal"], [29754, "Chestguard of the Fallen Champion"], [29753, "Chestguard of the Fallen Defender"], [29755, "Chestguard of the Fallen Hero"], [31089, "Chestguard of the Forgotten Conqueror"], [31091, "Chestguard of the Forgotten Protector"], [31090, "Chestguard of the Forgotten Vanquisher"], [40610, "Chestguard of the Lost Conqueror"], [40611, "Chestguard of the Lost Protector"], [40612, "Chestguard of the Lost Vanquisher"], [30236, "Chestguard of the Vanquished Champion"], [30237, "Chestguard of the Vanquished Defender"], [30238, "Chestguard of the Vanquished Hero"], [45635, "Chestguard of the Wayward Conqueror"], [45636, "Chestguard of the Wayward Protector"], [45637, "Chestguard of the Wayward Vanquisher"], [24368, "Coilfang Armaments"], [52027, "Conqueror's Mark of Sanctification"], [52030, "Conqueror's Mark of Sanctification (Heroic)"], [34245, "Cover of Ursol the Wise"], [34332, "Cowl of Gul'dan"], [34339, "Cowl of Light's Purity"], [34345, "Crown of Anasterian"], [40631, "Crown of the Lost Conqueror"], [40632, "Crown of the Lost Protector"], [40633, "Crown of the Lost Vanquisher"], [45638, "Crown of the Wayward Conqueror"], [45639, "Crown of the Wayward Protector"], [45640, "Crown of the Wayward Vanquisher"], [43016, "Dalaran Cooking Award"], [41596, "Dalaran Jewelcrafter's Token"], [34052, "Dream Shard"], [34244, "Duplicitous Guise"], [45624, "Emblem of Conquest"], [49426, "Emblem of Frost"], [40752, "Emblem of Heroism"], [47241, "Emblem of Triumph"], [40753, "Emblem of Valor"], [34208, "Equilibrium Epaulets"], [29024, "Eye of the Storm Mark of Honor"], [34180, "Felfury Legplates"], [34229, "Garments of Serene Shores"], [34350, "Gauntlets of the Ancient Shadowmoon"], [40628, "Gauntlets of the Lost Conqueror"], [40629, "Gauntlets of the Lost Protector"], [40630, "Gauntlets of the Lost Vanquisher"], [45641, "Gauntlets of the Wayward Conqueror"], [45642, "Gauntlets of the Wayward Protector"], [45643, "Gauntlets of the Wayward Vanquisher"], [29757, "Gloves of the Fallen Champion"], [29758, "Gloves of the Fallen Defender"], [29756, "Gloves of the Fallen Hero"], [31092, "Gloves of the Forgotten Conqueror"], [31094, "Gloves of the Forgotten Protector"], [31093, "Gloves of the Forgotten Vanquisher"], [40613, "Gloves of the Lost Conqueror"], [40614, "Gloves of the Lost Protector"], [40615, "Gloves of the Lost Vanquisher"], [30239, "Gloves of the Vanquished Champion"], [30240, "Gloves of the Vanquished Defender"], [30241, "Gloves of the Vanquished Hero"], [45644, "Gloves of the Wayward Conqueror"], [45645, "Gloves of the Wayward Protector"], [45646, "Gloves of the Wayward Vanquisher"], [24245, "Glowcap"], [26045, "Halaa Battle Token"], [26044, "Halaa Research Token"], [34342, "Handguards of the Dawn"], [34211, "Harness of Carnal Instinct"], [38425, "Heavy Borean Leather"], [34243, "Helm of Burning Righteousness"], [29760, "Helm of the Fallen Champion"], [29761, "Helm of the Fallen Defender"], [29759, "Helm of the Fallen Hero"], [31097, "Helm of the Forgotten Conqueror"], [31095, "Helm of the Forgotten Protector"], [31096, "Helm of the Forgotten Vanquisher"], [40616, "Helm of the Lost Conqueror"], [40617, "Helm of the Lost Protector"], [40618, "Helm of the Lost Vanquisher"], [30242, "Helm of the Vanquished Champion"], [30243, "Helm of the Vanquished Defender"], [30244, "Helm of the Vanquished Hero"], [45647, "Helm of the Wayward Conqueror"], [45648, "Helm of the Wayward Protector"], [45649, "Helm of the Wayward Vanquisher"], [34216, "Heroic Judicator's Chestguard"], [29735, "Holy Dust"], [29766, "Leggings of the Fallen Champion"], [29767, "Leggings of the Fallen Defender"], [29765, "Leggings of the Fallen Hero"], [31098, "Leggings of the Forgotten Conqueror"], [31100, "Leggings of the Forgotten Protector"], [31099, "Leggings of the Forgotten Vanquisher"], [34188, "Leggings of the Immortal Night"], [40619, "Leggings of the Lost Conqueror"], [40620, "Leggings of the Lost Protector"], [40621, "Leggings of the Lost Vanquisher"], [30245, "Leggings of the Vanquished Champion"], [30246, "Leggings of the Vanquished Defender"], [30247, "Leggings of the Vanquished Hero"], [45650, "Leggings of the Wayward Conqueror"], [45651, "Leggings of the Wayward Protector"], [45652, "Leggings of the Wayward Vanquisher"], [34167, "Legplates of the Holy Juggernaut"], [40634, "Legplates of the Lost Conqueror"], [40635, "Legplates of the Lost Protector"], [40636, "Legplates of the Lost Vanquisher"], [45653, "Legplates of the Wayward Conqueror"], [45654, "Legplates of the Wayward Protector"], [45655, "Legplates of the Wayward Vanquisher"], [40637, "Mantle of the Lost Conqueror"], [40638, "Mantle of the Lost Protector"], [40639, "Mantle of the Lost Vanquisher"], [45656, "Mantle of the Wayward Conqueror"], [45657, "Mantle of the Wayward Protector"], [45658, "Mantle of the Wayward Vanquisher"], [24579, "Mark of Honor Hold"], [24581, "Mark of Thrallmar"], [32897, "Mark of the Illidari"], [22484, "Necrotic Rune"], [34170, "Pantaloons of Calming Strife"], [34192, "Pauldrons of Perseverance"], [29763, "Pauldrons of the Fallen Champion"], [29764, "Pauldrons of the Fallen Defender"], [29762, "Pauldrons of the Fallen Hero"], [31101, "Pauldrons of the Forgotten Conqueror"], [31103, "Pauldrons of the Forgotten Protector"], [31102, "Pauldrons of the Forgotten Vanquisher"], [30248, "Pauldrons of the Vanquished Champion"], [30249, "Pauldrons of the Vanquished Defender"], [30250, "Pauldrons of the Vanquished Hero"], [52026, "Protector's Mark of Sanctification"], [52029, "Protector's Mark of Sanctification (Heroic)"], [34233, "Robes of Faltered Light"], [34234, "Shadowed Gauntlets of Paroxysm"], [34202, "Shawl of Wonderment"], [34195, "Shoulderpads of Vehemence"], [4291, "Silken Thread"], [34209, "Spaulders of Reclamation"], [40622, "Spaulders of the Lost Conqueror"], [40623, "Spaulders of the Lost Protector"], [40624, "Spaulders of the Lost Vanquisher"], [34193, "Spaulders of the Thalassian Savior"], [45659, "Spaulders of the Wayward Conqueror"], [45660, "Spaulders of the Wayward Protector"], [45661, "Spaulders of the Wayward Vanquisher"], [28558, "Spirit Shard"], [43228, "Stone Keeper's Shard"], [34212, "Sunglow Vest"], [34664, "Sunmote"], [34351, "Tranquil Majesty Wraps"], [47242, "Trophy of the Crusade"], [52025, "Vanquisher's Mark of Sanctification"], [52028, "Vanquisher's Mark of Sanctification (Heroic)"], [37836, "Venture Coin"], [34215, "Warharness of Reckless Fury"], [20558, "Warsong Gulch Mark of Honor"], [34597, "Winterfin Clam"], [43589, "Wintergrasp Mark of Honor"]], - queststart: [[3, "Item"], [1, "NPC"], [2, "Object"]], - questend: [[1, "NPC"], [2, "Object"]], - spellsource: [[1, "Any"], [3, "Crafted"], [9, "Discovery"], [4, "Drop"], [6, "Quest"], [10, "Talent"], [8, "Trainer"], [7, "Vendor"], [2, "None"]], - itemsource: [[1, "Any"], [3, "Crafted"], [4, "Drop"], [5, "PvP"], [6, "Quest"], [8, "Redemption"], [7, "Vendor"], [2, "None"]], - glyphtype: [[1, "Major"], [2, "Minor"]], - classs: [[12, "Any"], [6, "Death Knight"], [11, "Druid"], [3, "Hunter"], [8, "Mage"], [2, "Paladin"], [5, "Priest"], [4, "Rogue"], [7, "Shaman"], [9, "Warlock"], [1, "Warrior"], [13, "None"]], - race: [[12, "Any"], [10, "Blood Elf"], [11, "Draenei"], [3, "Dwarf"], [7, "Gnome"], [1, "Human"], [4, "Night Elf"], [2, "Orc"], [6, "Tauren"], [8, "Troll"], [5, "Undead"], [13, "None"]], - disenchanting: [[34057, "Abyss Crystal"], [22445, "Arcane Dust"], [11176, "Dream Dust"], [34052, "Dream Shard"], [11082, "Greater Astral Essence"], [34055, "Greater Cosmic Essence"], [16203, "Greater Eternal Essence"], [10939, "Greater Magic Essence"], [11135, "Greater Mystic Essence"], [11175, "Greater Nether Essence"], [22446, "Greater Planar Essence"], [16204, "Illusion Dust"], [34054, "Infinite Dust"], [14344, "Large Brilliant Shard"], [11084, "Large Glimmering Shard"], [11139, "Large Glowing Shard"], [22449, "Large Prismatic Shard"], [11178, "Large Radiant Shard"], [10998, "Lesser Astral Essence"], [34056, "Lesser Cosmic Essence"], [16202, "Lesser Eternal Essence"], [10938, "Lesser Magic Essence"], [11134, "Lesser Mystic Essence"], [11174, "Lesser Nether Essence"], [22447, "Lesser Planar Essence"], [20725, "Nexus Crystal"], [14343, "Small Brilliant Shard"], [34053, "Small Dream Shard"], [10978, "Small Glimmering Shard"], [11138, "Small Glowing Shard"], [22448, "Small Prismatic Shard"], [11177, "Small Radiant Shard"], [11083, "Soul Dust"], [10940, "Strange Dust"], [11137, "Vision Dust"], [22450, "Void Crystal"]], + yn: [[1, "Yes"], [2, "No"]], + num: [[1, ">"], [2, ">="], [3, "="], [4, "<="], [5, "<"]], + side: [[1, "Yes"], [2, "Alliance"], [3, "Horde"], [4, "Both"], [5, "No"]], + faction: [[1037, "Alliance Vanguard"], [1106, "Argent Crusade"], [529, "Argent Dawn"], [1012, "Ashtongue Deathsworn"], [87, "Bloodsail Buccaneers"], [21, "Booty Bay"], [910, "Brood of Nozdormu"], [609, "Cenarion Circle"], [942, "Cenarion Expedition"], [909, "Darkmoon Faire"], [530, "Darkspear Trolls"], [69, "Darnassus"], [577, "Everlook"], [930, "Exodar"], [1068, "Explorers' League"], [1104, "Frenzyheart Tribe"], [729, "Frostwolf Clan"], [369, "Gadgetzan"], [92, "Gelkis Clan Centaur"], [54, "Gnomeregan Exiles"], [946, "Honor Hold"], [1052, "Horde Expedition"], [749, "Hydraxian Waterlords"], [47, "Ironforge"], [989, "Keepers of Time"], [1090, "Kirin Tor"], [1098, "Knights of the Ebon Blade"], [978, "Kurenai"], [1011, "Lower City"], [93, "Magram Clan Centaur"], [1015, "Netherwing"], [1038, "Ogri'la"], [76, "Orgrimmar"], [470, "Ratchet"], [349, "Ravenholdt"], [1031, "Sha'tari Skyguard"], [1077, "Shattered Sun Offensive"], [809, "Shen'dralar"], [911, "Silvermoon City"], [890, "Silverwing Sentinels"], [970, "Sporeggar"], [730, "Stormpike Guard"], [72, "Stormwind"], [70, "Syndicate"], [932, "The Aldor"], [1156, "The Ashen Verdict"], [933, "The Consortium"], [510, "The Defilers"], [1126, "The Frostborn"], [1067, "The Hand of Vengeance"], [1073, "The Kalu'ak"], [509, "The League of Arathor"], [941, "The Mag'har"], [1105, "The Oracles"], [990, "The Scale of the Sands"], [934, "The Scryers"], [935, "The Sha'tar"], [1094, "The Silver Covenant"], [1119, "The Sons of Hodir"], [1124, "The Sunreavers"], [1064, "The Taunka"], [967, "The Violet Eye"], [1091, "The Wyrmrest Accord"], [59, "Thorium Brotherhood"], [947, "Thrallmar"], [81, "Thunder Bluff"], [576, "Timbermaw Hold"], [922, "Tranquillien"], [68, "Undercity"], [1050, "Valiance Expedition"], [1085, "Warsong Offensive"], [889, "Warsong Outriders"], [589, "Wintersaber Trainers"], [270, "Zandalar Tribe"]], +// alt faction: [[469, "Alliance"], [1037, "Alliance Vanguard"], [1106, "Argent Crusade"], [529, "Argent Dawn"], [1012, "Ashtongue Deathsworn"], [87, "Bloodsail Buccaneers"], [21, "Booty Bay"], [910, "Brood of Nozdormu"], [609, "Cenarion Circle"], [942, "Cenarion Expedition"], [909, "Darkmoon Faire"], [530, "Darkspear Trolls"], [69, "Darnassus"], [577, "Everlook"], [930, "Exodar"], [1068, "Explorers' League"], [1104, "Frenzyheart Tribe"], [729, "Frostwolf Clan"], [369, "Gadgetzan"], [92, "Gelkis Clan Centaur"], [54, "Gnomeregan Exiles"], [946, "Honor Hold"], [67, "Horde"], [1052, "Horde Expedition"], [749, "Hydraxian Waterlords"], [47, "Ironforge"], [989, "Keepers of Time"], [1090, "Kirin Tor"], [1098, "Knights of the Ebon Blade"], [978, "Kurenai"], [1011, "Lower City"], [93, "Magram Clan Centaur"], [1015, "Netherwing"], [1038, "Ogri'la"], [76, "Orgrimmar"], [470, "Ratchet"], [349, "Ravenholdt"], [1031, "Sha'tari Skyguard"], [1077, "Shattered Sun Offensive"], [809, "Shen'dralar"], [911, "Silvermoon City"], [890, "Silverwing Sentinels"], [970, "Sporeggar"], [169, "Steamwheedle Cartel"], [730, "Stormpike Guard"], [72, "Stormwind"], [70, "Syndicate"], [932, "The Aldor"], [1156, "The Ashen Verdict"], [933, "The Consortium"], [510, "The Defilers"], [1126, "The Frostborn"], [1067, "The Hand of Vengeance"], [1073, "The Kalu'ak"], [509, "The League of Arathor"], [941, "The Mag'har"], [1105, "The Oracles"], [990, "The Scale of the Sands"], [934, "The Scryers"], [935, "The Sha'tar"], [1094, "The Silver Covenant"], [1119, "The Sons of Hodir"], [1124, "The Sunreavers"], [1064, "The Taunka"], [967, "The Violet Eye"], [1091, "The Wyrmrest Accord"], [59, "Thorium Brotherhood"], [947, "Thrallmar"], [81, "Thunder Bluff"], [576, "Timbermaw Hold"], [922, "Tranquillien"], [68, "Undercity"], [1050, "Valiance Expedition"], [1085, "Warsong Offensive"], [889, "Warsong Outriders"], [589, "Wintersaber Trainers"], [270, "Zandalar Tribe"]], + zone: [[4494, "Ahn'kahet: The Old Kingdom"], [36, "Alterac Mountains"], [2597, "Alterac Valley"], [3358, "Arathi Basin"], [45, "Arathi Highlands"], [331, "Ashenvale"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [16, "Azshara"], [3524, "Azuremyst Isle"], [3, "Badlands"], [3959, "Black Temple"], [719, "Blackfathom Deeps"], [1584, "Blackrock Depths"], [25, "Blackrock Mountain"], [1583, "Blackrock Spire"], [2677, "Blackwing Lair"], [3522, "Blade's Edge Mountains"], [4, "Blasted Lands"], [3525, "Bloodmyst Isle"], [3537, "Borean Tundra"], [46, "Burning Steppes"], [2918, "Champions' Hall"], [2817, "Crystalsong Forest"], [4395, "Dalaran"], [4378, "Dalaran Sewers"], [148, "Darkshore"], [1657, "Darnassus"], [41, "Deadwind Pass"], [2257, "Deeprun Tram"], [405, "Desolace"], [2557, "Dire Maul"], [65, "Dragonblight"], [4196, "Drak'Tharon Keep"], [1, "Dun Morogh"], [14, "Durotar"], [10, "Duskwood"], [15, "Dustwallow Marsh"], [139, "Eastern Plaguelands"], [12, "Elwynn Forest"], [3430, "Eversong Woods"], [3820, "Eye of the Storm"], [361, "Felwood"], [357, "Feralas"], [3433, "Ghostlands"], [133, "Gnomeregan"], [394, "Grizzly Hills"], [3618, "Gruul's Lair"], [4416, "Gundrak"], [2917, "Hall of Legends"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3483, "Hellfire Peninsula"], [3562, "Hellfire Ramparts"], [267, "Hillsbrad Foothills"], [495, "Howling Fjord"], [4742, "Hrothgar's Landing"], [3606, "Hyjal Summit"], [210, "Icecrown"], [4812, "Icecrown Citadel"], [1537, "Ironforge"], [4710, "Isle of Conquest"], [4080, "Isle of Quel'Danas"], [2562, "Karazhan"], [38, "Loch Modan"], [4095, "Magisters' Terrace"], [3836, "Magtheridon's Lair"], [3792, "Mana-Tombs"], [2100, "Maraudon"], [2717, "Molten Core"], [493, "Moonglade"], [215, "Mulgore"], [3518, "Nagrand"], [3456, "Naxxramas"], [3523, "Netherstorm"], [2367, "Old Hillsbrad Foothills"], [2159, "Onyxia's Lair"], [1637, "Orgrimmar"], [4813, "Pit of Saron"], [2437, "Ragefire Chasm"], [722, "Razorfen Downs"], [491, "Razorfen Kraul"], [44, "Redridge Mountains"], [3429, "Ruins of Ahn'Qiraj"], [3968, "Ruins of Lordaeron"], [796, "Scarlet Monastery"], [2057, "Scholomance"], [51, "Searing Gorge"], [3607, "Serpentshrine Cavern"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [209, "Shadowfang Keep"], [3520, "Shadowmoon Valley"], [3703, "Shattrath City"], [3711, "Sholazar Basin"], [1377, "Silithus"], [3487, "Silvermoon City"], [130, "Silverpine Forest"], [406, "Stonetalon Mountains"], [1519, "Stormwind City"], [4384, "Strand of the Ancients"], [33, "Stranglethorn Vale"], [2017, "Stratholme"], [1477, "Sunken Temple"], [4075, "Sunwell Plateau"], [8, "Swamp of Sorrows"], [440, "Tanaris"], [141, "Teldrassil"], [3428, "Temple of Ahn'Qiraj"], [3519, "Terokkar Forest"], [3848, "The Arcatraz"], [17, "The Barrens"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [3702, "The Circle of Blood"], [4100, "The Culling of Stratholme"], [1581, "The Deadmines"], [3557, "The Exodar"], [3842, "The Eye"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [47, "The Hinterlands"], [3849, "The Mechanar"], [4120, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [3698, "The Ring of Trials"], [4406, "The Ring of Valor"], [4298, "The Scarlet Enclave"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [717, "The Stockade"], [67, "The Storm Peaks"], [3716, "The Underbog"], [457, "The Veiled Sea"], [4415, "The Violet Hold"], [400, "Thousand Needles"], [1638, "Thunder Bluff"], [85, "Tirisfal Glades"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [1337, "Uldaman"], [4273, "Ulduar"], [490, "Un'Goro Crater"], [1497, "Undercity"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"], [718, "Wailing Caverns"], [3277, "Warsong Gulch"], [28, "Western Plaguelands"], [40, "Westfall"], [11, "Wetlands"], [4197, "Wintergrasp"], [618, "Winterspring"], [3521, "Zangarmarsh"], [3805, "Zul'Aman"], [66, "Zul'Drak"], [978, "Zul'Farrak"], [19, "Zul'Gurub"]], +// alt zone: [[4494, "Ahn'kahet: The Old Kingdom"], [36, "Alterac Mountains"], [2597, "Alterac Valley"], [3358, "Arathi Basin"], [45, "Arathi Highlands"], [331, "Ashenvale"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [16, "Azshara"], [3524, "Azuremyst Isle"], [3, "Badlands"], [3959, "Black Temple"], [719, "Blackfathom Deeps"], [1584, "Blackrock Depths"], [25, "Blackrock Mountain"], [1583, "Blackrock Spire"], [2677, "Blackwing Lair"], [3702, "Blade's Edge Arena"], [3522, "Blade's Edge Mountains"], [4, "Blasted Lands"], [3525, "Bloodmyst Isle"], [3537, "Borean Tundra"], [46, "Burning Steppes"], [1941, "Caverns of Time"], [3905, "Coilfang Reservoir"], [4024, "Coldarra"], [2817, "Crystalsong Forest"], [4395, "Dalaran"], [4378, "Dalaran Arena"], [279, "Dalaran Crater"], [148, "Darkshore"], [393, "Darkspear Strand"], [1657, "Darnassus"], [41, "Deadwind Pass"], [2257, "Deeprun Tram"], [405, "Desolace"], [2557, "Dire Maul"], [65, "Dragonblight"], [4196, "Drak'Tharon Keep"], [1, "Dun Morogh"], [14, "Durotar"], [10, "Duskwood"], [15, "Dustwallow Marsh"], [139, "Eastern Plaguelands"], [12, "Elwynn Forest"], [3430, "Eversong Woods"], [3820, "Eye of the Storm"], [361, "Felwood"], [357, "Feralas"], [3433, "Ghostlands"], [721, "Gnomeregan"], [394, "Grizzly Hills"], [3923, "Gruul's Lair"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3483, "Hellfire Peninsula"], [3562, "Hellfire Ramparts"], [267, "Hillsbrad Foothills"], [495, "Howling Fjord"], [4742, "Hrothgar's Landing"], [3606, "Hyjal Summit"], [210, "Icecrown"], [4812, "Icecrown Citadel"], [1537, "Ironforge"], [4710, "Isle of Conquest"], [4080, "Isle of Quel'Danas"], [3457, "Karazhan"], [38, "Loch Modan"], [4131, "Magisters' Terrace"], [3836, "Magtheridon's Lair"], [3792, "Mana-Tombs"], [2100, "Maraudon"], [2717, "Molten Core"], [493, "Moonglade"], [215, "Mulgore"], [3518, "Nagrand"], [3698, "Nagrand Arena"], [3456, "Naxxramas"], [3523, "Netherstorm"], [2367, "Old Hillsbrad Foothills"], [2159, "Onyxia's Lair"], [1637, "Orgrimmar"], [4813, "Pit of Saron"], [4298, "Plaguelands: The Scarlet Enclave"], [2437, "Ragefire Chasm"], [722, "Razorfen Downs"], [491, "Razorfen Kraul"], [44, "Redridge Mountains"], [3429, "Ruins of Ahn'Qiraj"], [3968, "Ruins of Lordaeron"], [796, "Scarlet Monastery"], [2057, "Scholomance"], [51, "Searing Gorge"], [3607, "Serpentshrine Cavern"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [209, "Shadowfang Keep"], [3520, "Shadowmoon Valley"], [3703, "Shattrath City"], [3711, "Sholazar Basin"], [1377, "Silithus"], [3487, "Silvermoon City"], [130, "Silverpine Forest"], [3679, "Skettis"], [406, "Stonetalon Mountains"], [1519, "Stormwind City"], [4384, "Strand of the Ancients"], [33, "Stranglethorn Vale"], [2017, "Stratholme"], [1477, "Sunken Temple"], [4075, "Sunwell Plateau"], [8, "Swamp of Sorrows"], [440, "Tanaris"], [141, "Teldrassil"], [3428, "Temple of Ahn'Qiraj"], [3519, "Terokkar Forest"], [3848, "The Arcatraz"], [17, "The Barrens"], [2366, "The Black Morass"], [3840, "The Black Temple"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [1581, "The Deadmines"], [3557, "The Exodar"], [3845, "The Eye"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [47, "The Hinterlands"], [3849, "The Mechanar"], [4265, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [4406, "The Ring of Valor"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [717, "The Stockade"], [67, "The Storm Peaks"], [3716, "The Underbog"], [457, "The Veiled Sea"], [4415, "The Violet Hold"], [400, "Thousand Needles"], [1638, "Thunder Bluff"], [1216, "Timbermaw Hold"], [85, "Tirisfal Glades"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [1337, "Uldaman"], [4273, "Ulduar"], [490, "Un'Goro Crater"], [1497, "Undercity"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"], [718, "Wailing Caverns"], [3277, "Warsong Gulch"], [28, "Western Plaguelands"], [40, "Westfall"], [11, "Wetlands"], [4197, "Wintergrasp"], [618, "Winterspring"], [3521, "Zangarmarsh"], [3805, "Zul'Aman"], [66, "Zul'Drak"], [1176, "Zul'Farrak"], [1977, "Zul'Gurub"]], + resistance: [[6, "Arcane"], [2, "Fire"], [3, "Nature"], [4, "Frost"], [5, "Shadow"], [1, "Holy"], [0, "Physical"]], + gem: [[5, "Yes"], [1, "Meta"], [2, "Red"], [3, "Yellow"], [4, "Blue"], [6, "No"]], + profession: [[11, "Yes"], [1, "Alchemy"], [2, "Blacksmithing"], [3, "Cooking"], [4, "Enchanting"], [5, "Engineering"], [6, "First Aid"], [13, "Fishing"], [14, "Herbalism"], [15, "Inscription"], [7, "Jewelcrafting"], [8, "Leatherworking"], [9, "Mining"], [10, "Tailoring"], [12, "No"]], + expansion: [[3, "Wrath of the Lich King"], [2, "The Burning Crusade"], [1, "None"]], + totemcategory: [[3, "Air Totem"], [14, "Arclight Spanner"], [162, "Blacksmith Hammer"], [168, "Bladed Pickaxe"], [141, "Drums"], [2, "Earth Totem"], [4, "Fire Totem"], [169, "Flint and Tinder"], [161, "Gnomish Army Knife"], [15, "Gyromatic Micro-Adjustor"], [167, "Hammer Pick"], [81, "Hollow Quill"], [21, "Master Totem"], [165, "Mining Pick"], [12, "Philosopher's Stone"], [62, "Runed Adamantite Rod"], [10, "Runed Arcanite Rod"], [101, "Runed Azurite Rod"], [189, "Runed Cobalt Rod"], [6, "Runed Copper Rod"], [63, "Runed Eternium Rod"], [41, "Runed Fel Iron Rod"], [8, "Runed Golden Rod"], [7, "Runed Silver Rod"], [190, "Runed Titanium Rod"], [9, "Runed Truesilver Rod"], [166, "Skinning Knife"], [121, "Virtuoso Inking Set"], [5, "Water Totem"]], + heroiczone: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4812, "Icecrown Citadel"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [3456, "Naxxramas"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [4273, "Ulduar"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"]], +// alt heroiczone: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4812, "Icecrown Citadel"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [3456, "Naxxramas"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4500, "The Eye of Eternity"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4493, "The Obsidian Sanctum"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [4722, "Trial of the Crusader"], [4273, "Ulduar"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"], [4603, "Vault of Archavon"]], + heroicdungeon: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"]], +// alt heroicdungeon: [[4494, "Ahn'kahet: The Old Kingdom"], [3790, "Auchenai Crypts"], [4277, "Azjol-Nerub"], [4196, "Drak'Tharon Keep"], [4416, "Gundrak"], [4272, "Halls of Lightning"], [4820, "Halls of Reflection"], [4264, "Halls of Stone"], [3562, "Hellfire Ramparts"], [4131, "Magisters' Terrace"], [3792, "Mana-Tombs"], [2367, "Old Hillsbrad Foothills"], [4813, "Pit of Saron"], [3791, "Sethekk Halls"], [3789, "Shadow Labyrinth"], [3848, "The Arcatraz"], [2366, "The Black Morass"], [3713, "The Blood Furnace"], [3847, "The Botanica"], [4100, "The Culling of Stratholme"], [4809, "The Forge of Souls"], [3849, "The Mechanar"], [4265, "The Nexus"], [4228, "The Oculus"], [3714, "The Shattered Halls"], [3717, "The Slave Pens"], [3715, "The Steamvault"], [3716, "The Underbog"], [4415, "The Violet Hold"], [4723, "Trial of the Champion"], [206, "Utgarde Keep"], [1196, "Utgarde Pinnacle"]], + heroicraid: [[4812, "Icecrown Citadel"], [4722, "Trial of the Crusader"]], + multimoderaid: [[4812, "Icecrown Citadel"], [3456, "Naxxramas"], [2159, "Onyxia's Lair"], [4500, "The Eye of Eternity"], [4493, "The Obsidian Sanctum"], [4722, "Trial of the Crusader"], [4273, "Ulduar"], [4603, "Vault of Archavon"]], + event: [[372, "Brewfest"], [283, "Call to Arms: Alterac Valley"], [285, "Call to Arms: Arathi Basin"], [353, "Call to Arms: Eye of the Storm"], [420, "Call to Arms: Isle of Conquest"], [400, "Call to Arms: Strand of the Ancients"], [284, "Call to Arms: Warsong Gulch"], [201, "Children's Week"], [374, "Darkmoon Faire"], [409, "Day of the Dead"], [141, "Feast of Winter Veil"], [324, "Hallow's End"], [321, "Harvest Festival"], [424, "Kalu'ak Fishing Derby"], [335, "Love is in the Air"], [327, "Lunar Festival"], [341, "Midsummer Fire Festival"], [181, "Noblegarden"], [404, "Pilgrim's Bounty"], [398, "Pirates' Day"], [301, "Stranglethorn Fishing Extravaganza"]], + pvp: [[1, "Yes"], [3, "Arena"], [4, "Battleground"], [5, "World"], [2, "No"]], + currency: [[20560, "Alterac Valley Mark of Honor"], [32572, "Apexis Crystal"], [32569, "Apexis Shard"], [20559, "Arathi Basin Mark of Honor"], [29736, "Arcane Rune"], [44128, "Arctic Fur"], [29434, "Badge of Justice"], [34853, "Belt of the Forgotten Conqueror"], [34854, "Belt of the Forgotten Protector"], [34855, "Belt of the Forgotten Vanquisher"], [34856, "Boots of the Forgotten Conqueror"], [34857, "Boots of the Forgotten Protector"], [34858, "Boots of the Forgotten Vanquisher"], [34848, "Bracers of the Forgotten Conqueror"], [34851, "Bracers of the Forgotten Protector"], [34852, "Bracers of the Forgotten Vanquisher"], [40625, "Breastplate of the Lost Conqueror"], [40626, "Breastplate of the Lost Protector"], [40627, "Breastplate of the Lost Vanquisher"], [45632, "Breastplate of the Wayward Conqueror"], [45633, "Breastplate of the Wayward Protector"], [45634, "Breastplate of the Wayward Vanquisher"], [34169, "Breeches of Natural Aggression"], [37829, "Brewfest Prize Token"], [23247, "Burning Blossom"], [34186, "Chain Links of the Tumultuous Storm"], [44990, "Champion's Seal"], [29754, "Chestguard of the Fallen Champion"], [29753, "Chestguard of the Fallen Defender"], [29755, "Chestguard of the Fallen Hero"], [31089, "Chestguard of the Forgotten Conqueror"], [31091, "Chestguard of the Forgotten Protector"], [31090, "Chestguard of the Forgotten Vanquisher"], [40610, "Chestguard of the Lost Conqueror"], [40611, "Chestguard of the Lost Protector"], [40612, "Chestguard of the Lost Vanquisher"], [30236, "Chestguard of the Vanquished Champion"], [30237, "Chestguard of the Vanquished Defender"], [30238, "Chestguard of the Vanquished Hero"], [45635, "Chestguard of the Wayward Conqueror"], [45636, "Chestguard of the Wayward Protector"], [45637, "Chestguard of the Wayward Vanquisher"], [24368, "Coilfang Armaments"], [52027, "Conqueror's Mark of Sanctification"], [52030, "Conqueror's Mark of Sanctification (Heroic)"], [34245, "Cover of Ursol the Wise"], [34332, "Cowl of Gul'dan"], [34339, "Cowl of Light's Purity"], [34345, "Crown of Anasterian"], [40631, "Crown of the Lost Conqueror"], [40632, "Crown of the Lost Protector"], [40633, "Crown of the Lost Vanquisher"], [45638, "Crown of the Wayward Conqueror"], [45639, "Crown of the Wayward Protector"], [45640, "Crown of the Wayward Vanquisher"], [43016, "Dalaran Cooking Award"], [41596, "Dalaran Jewelcrafter's Token"], [34052, "Dream Shard"], [34244, "Duplicitous Guise"], [45624, "Emblem of Conquest"], [49426, "Emblem of Frost"], [40752, "Emblem of Heroism"], [47241, "Emblem of Triumph"], [40753, "Emblem of Valor"], [34208, "Equilibrium Epaulets"], [29024, "Eye of the Storm Mark of Honor"], [34180, "Felfury Legplates"], [34229, "Garments of Serene Shores"], [34350, "Gauntlets of the Ancient Shadowmoon"], [40628, "Gauntlets of the Lost Conqueror"], [40629, "Gauntlets of the Lost Protector"], [40630, "Gauntlets of the Lost Vanquisher"], [45641, "Gauntlets of the Wayward Conqueror"], [45642, "Gauntlets of the Wayward Protector"], [45643, "Gauntlets of the Wayward Vanquisher"], [29757, "Gloves of the Fallen Champion"], [29758, "Gloves of the Fallen Defender"], [29756, "Gloves of the Fallen Hero"], [31092, "Gloves of the Forgotten Conqueror"], [31094, "Gloves of the Forgotten Protector"], [31093, "Gloves of the Forgotten Vanquisher"], [40613, "Gloves of the Lost Conqueror"], [40614, "Gloves of the Lost Protector"], [40615, "Gloves of the Lost Vanquisher"], [30239, "Gloves of the Vanquished Champion"], [30240, "Gloves of the Vanquished Defender"], [30241, "Gloves of the Vanquished Hero"], [45644, "Gloves of the Wayward Conqueror"], [45645, "Gloves of the Wayward Protector"], [45646, "Gloves of the Wayward Vanquisher"], [24245, "Glowcap"], [26045, "Halaa Battle Token"], [26044, "Halaa Research Token"], [34342, "Handguards of the Dawn"], [34211, "Harness of Carnal Instinct"], [38425, "Heavy Borean Leather"], [34243, "Helm of Burning Righteousness"], [29760, "Helm of the Fallen Champion"], [29761, "Helm of the Fallen Defender"], [29759, "Helm of the Fallen Hero"], [31097, "Helm of the Forgotten Conqueror"], [31095, "Helm of the Forgotten Protector"], [31096, "Helm of the Forgotten Vanquisher"], [40616, "Helm of the Lost Conqueror"], [40617, "Helm of the Lost Protector"], [40618, "Helm of the Lost Vanquisher"], [30242, "Helm of the Vanquished Champion"], [30243, "Helm of the Vanquished Defender"], [30244, "Helm of the Vanquished Hero"], [45647, "Helm of the Wayward Conqueror"], [45648, "Helm of the Wayward Protector"], [45649, "Helm of the Wayward Vanquisher"], [34216, "Heroic Judicator's Chestguard"], [29735, "Holy Dust"], [29766, "Leggings of the Fallen Champion"], [29767, "Leggings of the Fallen Defender"], [29765, "Leggings of the Fallen Hero"], [31098, "Leggings of the Forgotten Conqueror"], [31100, "Leggings of the Forgotten Protector"], [31099, "Leggings of the Forgotten Vanquisher"], [34188, "Leggings of the Immortal Night"], [40619, "Leggings of the Lost Conqueror"], [40620, "Leggings of the Lost Protector"], [40621, "Leggings of the Lost Vanquisher"], [30245, "Leggings of the Vanquished Champion"], [30246, "Leggings of the Vanquished Defender"], [30247, "Leggings of the Vanquished Hero"], [45650, "Leggings of the Wayward Conqueror"], [45651, "Leggings of the Wayward Protector"], [45652, "Leggings of the Wayward Vanquisher"], [34167, "Legplates of the Holy Juggernaut"], [40634, "Legplates of the Lost Conqueror"], [40635, "Legplates of the Lost Protector"], [40636, "Legplates of the Lost Vanquisher"], [45653, "Legplates of the Wayward Conqueror"], [45654, "Legplates of the Wayward Protector"], [45655, "Legplates of the Wayward Vanquisher"], [40637, "Mantle of the Lost Conqueror"], [40638, "Mantle of the Lost Protector"], [40639, "Mantle of the Lost Vanquisher"], [45656, "Mantle of the Wayward Conqueror"], [45657, "Mantle of the Wayward Protector"], [45658, "Mantle of the Wayward Vanquisher"], [24579, "Mark of Honor Hold"], [24581, "Mark of Thrallmar"], [32897, "Mark of the Illidari"], [22484, "Necrotic Rune"], [34170, "Pantaloons of Calming Strife"], [34192, "Pauldrons of Perseverance"], [29763, "Pauldrons of the Fallen Champion"], [29764, "Pauldrons of the Fallen Defender"], [29762, "Pauldrons of the Fallen Hero"], [31101, "Pauldrons of the Forgotten Conqueror"], [31103, "Pauldrons of the Forgotten Protector"], [31102, "Pauldrons of the Forgotten Vanquisher"], [30248, "Pauldrons of the Vanquished Champion"], [30249, "Pauldrons of the Vanquished Defender"], [30250, "Pauldrons of the Vanquished Hero"], [52026, "Protector's Mark of Sanctification"], [52029, "Protector's Mark of Sanctification (Heroic)"], [34233, "Robes of Faltered Light"], [34234, "Shadowed Gauntlets of Paroxysm"], [34202, "Shawl of Wonderment"], [34195, "Shoulderpads of Vehemence"], [4291, "Silken Thread"], [34209, "Spaulders of Reclamation"], [40622, "Spaulders of the Lost Conqueror"], [40623, "Spaulders of the Lost Protector"], [40624, "Spaulders of the Lost Vanquisher"], [34193, "Spaulders of the Thalassian Savior"], [45659, "Spaulders of the Wayward Conqueror"], [45660, "Spaulders of the Wayward Protector"], [45661, "Spaulders of the Wayward Vanquisher"], [28558, "Spirit Shard"], [43228, "Stone Keeper's Shard"], [34212, "Sunglow Vest"], [34664, "Sunmote"], [34351, "Tranquil Majesty Wraps"], [47242, "Trophy of the Crusade"], [52025, "Vanquisher's Mark of Sanctification"], [52028, "Vanquisher's Mark of Sanctification (Heroic)"], [37836, "Venture Coin"], [34215, "Warharness of Reckless Fury"], [20558, "Warsong Gulch Mark of Honor"], [34597, "Winterfin Clam"], [43589, "Wintergrasp Mark of Honor"]], +/*check*/itemcurrency: [[34853,"Belt of the Forgotten Conqueror"],[34854,"Belt of the Forgotten Protector"],[34855,"Belt of the Forgotten Vanquisher"],[34856,"Boots of the Forgotten Conqueror"],[34857,"Boots of the Forgotten Protector"],[34858,"Boots of the Forgotten Vanquisher"],[34848,"Bracers of the Forgotten Conqueror"],[34851,"Bracers of the Forgotten Protector"],[34852,"Bracers of the Forgotten Vanquisher"],[40625,"Breastplate of the Lost Conqueror"],[40626,"Breastplate of the Lost Protector"],[40627,"Breastplate of the Lost Vanquisher"],[45632,"Breastplate of the Wayward Conqueror"],[45633,"Breastplate of the Wayward Protector"],[45634,"Breastplate of the Wayward Vanquisher"],[29754,"Chestguard of the Fallen Champion"],[29753,"Chestguard of the Fallen Defender"],[29755,"Chestguard of the Fallen Hero"],[31089,"Chestguard of the Forgotten Conqueror"],[31091,"Chestguard of the Forgotten Protector"],[31090,"Chestguard of the Forgotten Vanquisher"],[40610,"Chestguard of the Lost Conqueror"],[40611,"Chestguard of the Lost Protector"],[40612,"Chestguard of the Lost Vanquisher"],[30236,"Chestguard of the Vanquished Champion"],[30237,"Chestguard of the Vanquished Defender"],[30238,"Chestguard of the Vanquished Hero"],[45635,"Chestguard of the Wayward Conqueror"],[45636,"Chestguard of the Wayward Protector"],[45637,"Chestguard of the Wayward Vanquisher"],[52027,"Conqueror's Mark of Sanctification"],[52030,"Conqueror's Mark of Sanctification (Heroic)"],[40631,"Crown of the Lost Conqueror"],[40632,"Crown of the Lost Protector"],[40633,"Crown of the Lost Vanquisher"],[45638,"Crown of the Wayward Conqueror"],[45639,"Crown of the Wayward Protector"],[45640,"Crown of the Wayward Vanquisher"],[40628,"Gauntlets of the Lost Conqueror"],[40629,"Gauntlets of the Lost Protector"],[40630,"Gauntlets of the Lost Vanquisher"],[45641,"Gauntlets of the Wayward Conqueror"],[45642,"Gauntlets of the Wayward Protector"],[45643,"Gauntlets of the Wayward Vanquisher"],[29757,"Gloves of the Fallen Champion"],[29758,"Gloves of the Fallen Defender"],[29756,"Gloves of the Fallen Hero"],[31092,"Gloves of the Forgotten Conqueror"],[31094,"Gloves of the Forgotten Protector"],[31093,"Gloves of the Forgotten Vanquisher"],[40613,"Gloves of the Lost Conqueror"],[40614,"Gloves of the Lost Protector"],[40615,"Gloves of the Lost Vanquisher"],[30239,"Gloves of the Vanquished Champion"],[30240,"Gloves of the Vanquished Defender"],[30241,"Gloves of the Vanquished Hero"],[45644,"Gloves of the Wayward Conqueror"],[45645,"Gloves of the Wayward Protector"],[45646,"Gloves of the Wayward Vanquisher"],[29760,"Helm of the Fallen Champion"],[29761,"Helm of the Fallen Defender"],[29759,"Helm of the Fallen Hero"],[31097,"Helm of the Forgotten Conqueror"],[31095,"Helm of the Forgotten Protector"],[31096,"Helm of the Forgotten Vanquisher"],[63683,"Helm of the Forlorn Conqueror"],[63684,"Helm of the Forlorn Protector"],[63682,"Helm of the Forlorn Vanquisher"],[40616,"Helm of the Lost Conqueror"],[40617,"Helm of the Lost Protector"],[40618,"Helm of the Lost Vanquisher"],[30242,"Helm of the Vanquished Champion"],[30243,"Helm of the Vanquished Defender"],[30244,"Helm of the Vanquished Hero"],[45647,"Helm of the Wayward Conqueror"],[45648,"Helm of the Wayward Protector"],[45649,"Helm of the Wayward Vanquisher"],[78181,"Leggings of the Corrupted Conqueror"],[78872,"Leggings of the Corrupted Conqueror"],[78856,"Leggings of the Corrupted Conqueror (Heroic)"],[78176,"Leggings of the Corrupted Protector"],[78873,"Leggings of the Corrupted Protector"],[78857,"Leggings of the Corrupted Protector (Heroic)"],[78171,"Leggings of the Corrupted Vanquisher"],[78871,"Leggings of the Corrupted Vanquisher"],[78858,"Leggings of the Corrupted Vanquisher (Heroic)"],[29766,"Leggings of the Fallen Champion"],[29767,"Leggings of the Fallen Defender"],[29765,"Leggings of the Fallen Hero"],[31098,"Leggings of the Forgotten Conqueror"],[31100,"Leggings of the Forgotten Protector"],[31099,"Leggings of the Forgotten Vanquisher"],[67428,"Leggings of the Forlorn Conqueror"],[67427,"Leggings of the Forlorn Protector"],[67426,"Leggings of the Forlorn Vanquisher"],[40619,"Leggings of the Lost Conqueror"],[40620,"Leggings of the Lost Protector"],[40621,"Leggings of the Lost Vanquisher"],[30245,"Leggings of the Vanquished Champion"],[30246,"Leggings of the Vanquished Defender"],[30247,"Leggings of the Vanquished Hero"],[45650,"Leggings of the Wayward Conqueror"],[45651,"Leggings of the Wayward Protector"],[45652,"Leggings of the Wayward Vanquisher"],[40634,"Legplates of the Lost Conqueror"],[40635,"Legplates of the Lost Protector"],[40636,"Legplates of the Lost Vanquisher"],[45653,"Legplates of the Wayward Conqueror"],[45654,"Legplates of the Wayward Protector"],[45655,"Legplates of the Wayward Vanquisher"],[64315,"Mantle of the Forlorn Conqueror"],[64316,"Mantle of the Forlorn Protector"],[64314,"Mantle of the Forlorn Vanquisher"],[40637,"Mantle of the Lost Conqueror"],[40638,"Mantle of the Lost Protector"],[40639,"Mantle of the Lost Vanquisher"],[45656,"Mantle of the Wayward Conqueror"],[45657,"Mantle of the Wayward Protector"],[45658,"Mantle of the Wayward Vanquisher"],[29763,"Pauldrons of the Fallen Champion"],[29764,"Pauldrons of the Fallen Defender"],[29762,"Pauldrons of the Fallen Hero"],[31101,"Pauldrons of the Forgotten Conqueror"],[31103,"Pauldrons of the Forgotten Protector"],[31102,"Pauldrons of the Forgotten Vanquisher"],[30248,"Pauldrons of the Vanquished Champion"],[30249,"Pauldrons of the Vanquished Defender"],[30250,"Pauldrons of the Vanquished Hero"],[52026,"Protector's Mark of Sanctification"],[52029,"Protector's Mark of Sanctification (Heroic)"],[47557,"Regalia of the Grand Conqueror"],[47558,"Regalia of the Grand Protector"],[47559,"Regalia of the Grand Vanquisher"],[78180,"Shoulders of the Corrupted Conqueror"],[78875,"Shoulders of the Corrupted Conqueror"],[78859,"Shoulders of the Corrupted Conqueror (Heroic)"],[78175,"Shoulders of the Corrupted Protector"],[78876,"Shoulders of the Corrupted Protector"],[78860,"Shoulders of the Corrupted Protector (Heroic)"],[78170,"Shoulders of the Corrupted Vanquisher"],[78874,"Shoulders of the Corrupted Vanquisher"],[78861,"Shoulders of the Corrupted Vanquisher (Heroic)"],[65088,"Shoulders of the Forlorn Conqueror"],[65087,"Shoulders of the Forlorn Protector"],[65089,"Shoulders of the Forlorn Vanquisher"],[40622,"Spaulders of the Lost Conqueror"],[40623,"Spaulders of the Lost Protector"],[40624,"Spaulders of the Lost Vanquisher"],[45659,"Spaulders of the Wayward Conqueror"],[45660,"Spaulders of the Wayward Protector"],[45661,"Spaulders of the Wayward Vanquisher"],[47242,"Trophy of the Crusade"],[52025,"Vanquisher's Mark of Sanctification"],[52028,"Vanquisher's Mark of Sanctification (Heroic)"]], + queststart: [[3, "Item"], [1, "NPC"], [2, "Object"]], + questend: [[1, "NPC"], [2, "Object"]], + spellsource: [[1, "Any"], [3, "Crafted"], [9, "Discovery"], [4, "Drop"], [6, "Quest"], [10, "Talent"], [8, "Trainer"], [7, "Vendor"], [2, "None"]], + itemsource: [[1, "Any"], [3, "Crafted"], [4, "Drop"], [5, "PvP"], [6, "Quest"], [8, "Redemption"], [7, "Vendor"], [2, "None"]], + glyphtype: [[1, "Major"], [2, "Minor"]], + classs: [[12, "Any"], [6, "Death Knight"], [11, "Druid"], [3, "Hunter"], [8, "Mage"], [2, "Paladin"], [5, "Priest"], [4, "Rogue"], [7, "Shaman"], [9, "Warlock"], [1, "Warrior"], [13, "None"]], + race: [[12, "Any"], [10, "Blood Elf"], [11, "Draenei"], [3, "Dwarf"], [7, "Gnome"], [1, "Human"], [4, "Night Elf"], [2, "Orc"], [6, "Tauren"], [8, "Troll"], [5, "Undead"], [13, "None"]], + disenchanting: [[34057, "Abyss Crystal"], [22445, "Arcane Dust"], [11176, "Dream Dust"], [34052, "Dream Shard"], [11082, "Greater Astral Essence"], [34055, "Greater Cosmic Essence"], [16203, "Greater Eternal Essence"], [10939, "Greater Magic Essence"], [11135, "Greater Mystic Essence"], [11175, "Greater Nether Essence"], [22446, "Greater Planar Essence"], [16204, "Illusion Dust"], [34054, "Infinite Dust"], [14344, "Large Brilliant Shard"], [11084, "Large Glimmering Shard"], [11139, "Large Glowing Shard"], [22449, "Large Prismatic Shard"], [11178, "Large Radiant Shard"], [10998, "Lesser Astral Essence"], [34056, "Lesser Cosmic Essence"], [16202, "Lesser Eternal Essence"], [10938, "Lesser Magic Essence"], [11134, "Lesser Mystic Essence"], [11174, "Lesser Nether Essence"], [22447, "Lesser Planar Essence"], [20725, "Nexus Crystal"], [14343, "Small Brilliant Shard"], [34053, "Small Dream Shard"], [10978, "Small Glimmering Shard"], [11138, "Small Glowing Shard"], [22448, "Small Prismatic Shard"], [11177, "Small Radiant Shard"], [11083, "Soul Dust"], [10940, "Strange Dust"], [11137, "Vision Dust"], [22450, "Void Crystal"]], proficiencytype: [[2, "Armor"], [3, "Armor Proficiencies"], [4, "Armor Specializations"], [5, "Languages"], [1, "Weapons"]], + flags: [ + [1, '0x00000001'], + [2, '0x00000002'], + [3, '0x00000004'], + [4, '0x00000008'], + [5, '0x00000010'], + [6, '0x00000020'], + [7, '0x00000040'], + [8, '0x00000080'], + [9, '0x00000100'], + [10,'0x00000200'], + [11,'0x00000400'], + [12,'0x00000800'], + [13,'0x00001000'], + [14,'0x00002000'], + [15,'0x00004000'], + [16,'0x00008000'], + [17,'0x00010000'], + [18,'0x00020000'], + [19,'0x00040000'], + [20,'0x00080000'], + [21,'0x00100000'], + [22,'0x00200000'], + [23,'0x00400000'], + [24,'0x00800000'], + [25,'0x01000000'], + [26,'0x02000000'], + [27,'0x04000000'], + [28,'0x08000000'], + [29,'0x10000000'], + [30,'0x20000000'], + [31,'0x40000000'], + [32,'0x80000000'] + ] }, + fiitems: { - addedinexpansion: "Added in expansion", - bindonequip: "Binds when equipped", - bindonpickup: "Binds when picked up", - bindonuse: "Binds when used", - bindtoaccount: "Binds to account", - heroicitem: "Heroic item", - changedinwotlk: "Changed in Wrath of the Lich King", - conjureditem: "Conjured item", - craftedprof: "Crafted by a profession", - damagetype: "Damage type", - disenchantable: "Disenchantable", - disenchantsinto: "Disenchants into...", - dropsin: "Drops in...", - dropsinheroic: "Drops in Heroic mode... (Dungeon)", - dropsinnormal: "Drops in Normal mode... (Dungeon)", - dropsinnormal10: "Drops in Normal 10 mode... (Raid)", - dropsinnormal25: "Drops in Normal 25 mode... (Raid)", - dropsinheroic10: "Drops in Heroic 10 mode... (Raid)", - dropsinheroic25: "Drops in Heroic 25 mode... (Raid)", - effecttext: "Effect text", - fitsgemslot: "Fits a gem slot", - flavortext: "Flavor text", - glyphtype: "Glyph type", - hascomments: "Has comments", - hasflavortext: "Has a flavor text", - hasscreenshots: "Has screenshots", - hasvideos: "Has videos", - hassockets: "Has sockets", - icon: "Icon", - locked: "Locked", - notavailable: "Not available to players", - objectivequest: "Objective of a quest", - openable: "Openable", - otdisenchanting: "Obtained through disenchanting", - otfishing: "Obtained through fishing", - otherbgathering: "Obtained through herb gathering", - otitemopening: "Obtained through item opening", - otlooting: "Obtained through looting", - otmilling: "Obtained through milling", - otmining: "Obtained through mining", - otobjectopening: "Obtained through object opening", - otpickpocketing: "Obtained through pick pocketing", - otprospecting: "Obtained through prospecting", - otpvp: "Obtained through PvP", - otskinning: "Obtained through skinning", - partofset: "Part of an item set", - partyloot: "Party loot", - prospectable: "Prospectable", - millable: "Millable", - purchasablewithcurrency: "Purchasable with a currency", - purchasablewith: "Purchasable with a currency...", - purchasablewithhonor: "Purchasable with honor points", - purchasablewitharena: "Purchasable with arena points", - questitem: "Quest item", - randomenchants: "Random enchantments (of the...)", - repaircost: "Repair cost (coppers)", - randomlyenchanted: "Randomly enchanted", - readable: "Readable", - reagentforability: "Reagent for ability/profession", - refundable: "Refundable", - requiresprof: "Requires a profession", - requiresprofspec: "Requires a profession specialization", - requiresrepwith: "Requires reputation with...", - rewardedbyfactionquest: "Rewarded by a quest", - rewardedbyquestin: "Rewarded by a quest in...", - sepcommunity: "Community", - sepsource: "Source", - smartloot: "Smart loot", - soldbynpc: "Sold by NPC #...", - soldbyvendor: "Sold by a vendor", - startsquest: "Starts a quest", - teachesspell: "Teaches a spell", - tool: "Tool", - id: "ID", - usableinarenas: "Usable in arenas", - usablewhenshapeshifted: "Usable when shapeshifted", - unique: "Unique", - uniqueequipped: "Unique-Equipped", - classspecific: "Class-specific", - racespecific: "Race-specific", - relatedevent: "Related world event", - requiresevent: "Requires a world event" + addedinexpansion: "Added in expansion", + availabletoplayers: "Available to players", + avgbuyout: "Average buyout price", + avgmoney: "Average money contained", + bindonequip: "Binds when equipped", + bindonpickup: "Binds when picked up", + bindonuse: "Binds when used", + bindtoaccount: "Binds to account", + changedinwotlk: "Changed in Wrath of the Lich King", + classspecific: "Class-specific", + conjureditem: "Conjured item", + cooldown: "Cooldown (seconds)", + craftedprof: "Crafted by a profession", + damagetype: "Damage type", + deprecated: "Deprecated", + disenchantable: "Disenchantable", + disenchantsinto: "Disenchants into...", + dropsin: "Drops in...", + dropsinheroic: "Drops in Heroic mode... (Dungeon)", + dropsinheroic10: "Drops in Heroic 10 mode... (Raid)", + dropsinheroic25: "Drops in Heroic 25 mode... (Raid)", + dropsinnormal: "Drops in Normal mode... (Dungeon)", + dropsinnormal10: "Drops in Normal 10 mode... (Raid)", + dropsinnormal25: "Drops in Normal 25 mode... (Raid)", + dura: "Durability", + effecttext: "Effect text", + fitsgemslot: "Fits a gem slot", + flavortext: "Flavor text", + glyphtype: "Glyph type", + hascomments: "Has comments", + hasflavortext: "Has a flavor text", + hasscreenshots: "Has screenshots", + hassockets: "Has sockets", + hasvideos: "Has videos", + heroicitem: "Heroic item", + icon: "Icon", + id: "ID", + locked: "Locked", + millable: "Millable", + notavailable: "Not available to players", + objectivequest: "Objective of a quest", + openable: "Openable", + otdisenchanting: "Obtained through disenchanting", + otfishing: "Obtained through fishing", + otherbgathering: "Obtained through herb gathering", + otitemopening: "Obtained through item opening", + otlooting: "Obtained through looting", + otmilling: "Obtained through milling", + otmining: "Obtained through mining", + otobjectopening: "Obtained through object opening", + otpickpocketing: "Obtained through pick pocketing", + otprospecting: "Obtained through prospecting", + otpvp: "Obtained through PvP", + otredemption: "Obtained through redemption", + otskinning: "Obtained through skinning", + partofset: "Part of an item set", + partyloot: "Party loot", + prospectable: "Prospectable", + purchasablewithitem: "Purchasable with an item...", + purchasablewithhonor: "Purchasable with honor points", + purchasablewitharena: "Purchasable with arena points", + purchasablewithcurrency: "Purchasable with a currency...", + questitem: "Quest item", + racespecific: "Race-specific", + randomenchants: "Random enchantments (of the...)", + randomlyenchanted: "Randomly enchanted", + readable: "Readable", + reagentforability: "Reagent for ability/profession", + refundable: "Refundable", + relatedevent: "Related world event", + repaircost: "Repair cost (coppers)", + reqskillrank: "Required skill level", + requiresevent: "Requires a world event", + requiresprof: "Requires a profession", + requiresprofspec: "Requires a profession specialization", + requiresrepwith: "Requires reputation with...", + rewardedbyachievement: "Rewarded by an achievement", + rewardedbyfactionquest: "Rewarded by a quest", + rewardedbyquestin: "Rewarded by a quest in...", + sellprice: "Sale price (coppers)", + sepcommunity: "Community", + sepgeneral: "General", + sepsource: "Source", + smartloot: "Smart loot", + soldbynpc: "Sold by NPC #...", + soldbyvendor: "Sold by a vendor", + startsquest: "Starts a quest", + teachesspell: "Teaches a spell", + tool: "Tool", + unique: "Unique", + uniqueequipped: "Unique-Equipped", + usableinarenas: "Usable in arenas", + usablewhenshapeshifted: "Usable when shapeshifted", + + sepstaffonly: 'Staff Only', + flags: 'Flags', + flags2: 'Flags (2)' }, + fiitemsets: { - sepgeneral: "General", - id: "ID", - pieces: "Number of pieces", - bonustext: "Bonus effect text", - heroic: "Heroic", - relatedevent: "Related world event", - sepcommunity: "Community", - hascomments: "Has comments", - hasscreenshots: "Has screenshots", - hasvideos: "Has videos" + sepgeneral: "General", + availabletoplayers: "Available to players", + id: "ID", + pieces: "Number of pieces", + bonustext: "Bonus effect text", + heroic: "Heroic", + relatedevent: "Related world event", + + sepcommunity: "Community", + hascomments: "Has comments", + hasscreenshots: "Has screenshots", + hasvideos: "Has videos" }, + finpcs: { - sepgeneral: "General", - addedinexpansion: "Added in expansion", - canrepair: "Can repair", - faction: "Faction", - relatedevent: "Related world event", - foundin: "Found in...", - health: "Health", - mana: "Mana", - instanceboss: "Instance boss", - startsquest: "Starts a quest", - endsquest: "Ends a quest", - usemodel: "Uses model #...", - useskin: "Uses skin...", - id: "ID", - seploot: "Loot", + sepgeneral: "General", + canrepair: "Can repair", + faction: "Faction", + relatedevent: "Related world event", + foundin: "Found in...", + health: "Health", + mana: "Mana", + instanceboss: "Instance boss", + startsquest: "Starts a quest", + endsquest: "Ends a quest", + usemodel: "Uses model #...", + useskin: "Uses skin...", + id: "ID", + + seploot: "Loot", averagemoneydropped: "Average money dropped", - gatherable: "Gatherable (herbalism)", - salvageable: "Salvageable (engineering)", - lootable: "Lootable", - minable: "Minable (mining)", - pickpocketable: "Pick pocketable", - skinnable: "Skinnable", - sepgossipoptions: "Gossip options", - auctioneer: "Auctioneer", - banker: "Banker", - battlemaster: "Battlemaster", - flightmaster: "Flight master", - guildmaster: "Guild master", - innkeeper: "Innkeeper", - talentunlearner: "Talent unlearner", - tabardvendor: "Tabard vendor", - stablemaster: "Stable master", - trainer: "Trainer", - vendor: "Vendor", - increasesrepwith: "Increases Reputation with...", - decreasesrepwith: "Decreases Reputation with...", - sepcommunity: "Community", - hascomments: "Has comments", - hasscreenshots: "Has screenshots", - hasvideos: "Has videos", - haslocation: "Has location" + gatherable: "Gatherable (herbalism)", + salvageable: "Salvageable (engineering)", + lootable: "Lootable", + minable: "Minable (mining)", + pickpocketable: "Pick pocketable", + skinnable: "Skinnable", + increasesrepwith: "Increases reputation with...", + decreasesrepwith: "Decreases reputation with...", + + sepgossipoptions: "Gossip options", + auctioneer: "Auctioneer", + banker: "Banker", + battlemaster: "Battlemaster", + flightmaster: "Flight master", + guildmaster: "Guild master", + innkeeper: "Innkeeper", + talentunlearner: "Talent unlearner", + tabardvendor: "Tabard vendor", + stablemaster: "Stable master", + trainer: "Trainer", + vendor: "Vendor", + + sepcommunity: "Community", + hascomments: "Has comments", + hasscreenshots: "Has screenshots", + hasvideos: "Has videos", + + sepstaffonly: "Staff only", + haslocation: "Has location" }, + fiobjects: { - sepgeneral: "General", - addedinexpansion: "Added in expansion", - foundin: "Found in...", - requiredskilllevel: "Required skill level (herbs/veins/footlockers)", - relatedevent: "Related world event", - startsquest: "Starts a quest", - endsquest: "Ends a quest", - id: "ID", - seploot: "Loot", + sepgeneral: "General", + foundin: "Found in...", + requiredskilllevel: "Required skill level (herbs/veins/footlockers)", + relatedevent: "Related world event", + startsquest: "Starts a quest", + endsquest: "Ends a quest", + id: "ID", + + seploot: "Loot", averagemoneycontained: "Average money contained", - openable: "Openable", - sepcommunity: "Community", - hascomments: "Has comments", - hasscreenshots: "Has screenshots", - hasvideos: "Has videos" + openable: "Openable", + + sepcommunity: "Community", + hascomments: "Has comments", + hasscreenshots: "Has screenshots", + hasvideos: "Has videos" }, + fiquests: { - sepgeneral: "General", - addedinexpansion: "Added in expansion", - relatedevent: "Related world event", - daily: "Daily", - weekly: "Weekly", - repeatable: "Repeatable", - objectiveearnrepwith: "Objective: Earn reputation with...", - sharable: "Sharable", - startsfrom: "Starts from...", - endsat: "Ends at...", - suggestedplayers: "Suggested players", - timer: "Timer (seconds)", - id: "ID", - classspecific: "Class-specific", - racespecific: "Race-specific", - sepgainsrewards: "Gains/rewards", - experiencegained: "Experience gained", - arenagained: "Arena points gained", - honorgained: "Honor gained", - itemchoices: "Item choices", - itemrewards: "Item rewards", - moneyrewarded: "Money rewarded", - spellrewarded: "Spell rewarded", - titlerewarded: "Title rewarded", - currencyrewarded: "Currency rewarded...", - increasesrepwith: "Increases reputation with...", - decreasesrepwith: "Decreases reputation with...", - sepseries: "Series", - firstquestseries: "First quest of a series", - lastquestseries: "Last quest of a series", - partseries: "Part of a series", - sepcommunity: "Community", - hascomments: "Has comments", - hasscreenshots: "Has screenshots", - hasvideos: "Has videos", - lacksstartend: "Lacks start or end" + sepgeneral: "General", + relatedevent: "Related world event", + daily: "Daily", + weekly: "Weekly", + repeatable: "Repeatable", + objectiveearnrepwith: "Objective: Earn reputation with...", + countsforloremaster_stc: "Loremaster quest", + sharable: "Sharable", + startsfrom: "Starts from...", + endsat: "Ends at...", + suggestedplayers: "Suggested players", + timer: "Timer (seconds)", + availabletoplayers: "Available to players", + id: "ID", + classspecific: "Class-specific", + racespecific: "Race-specific", + + sepgainsrewards: "Gains/rewards", + experiencegained: "Experience gained", + arenagained: "Arena points gained", + honorgained: "Honor gained", + itemchoices: "Item choices", + itemrewards: "Item rewards", + moneyrewarded: "Money rewarded", + spellrewarded: "Spell rewarded", + titlerewarded: "Title rewarded", + increasesrepwith: "Increases reputation with...", + decreasesrepwith: "Decreases reputation with...", + currencyrewarded: "Currency rewarded...", + + sepseries: "Series", + firstquestseries: "First quest of a series", + lastquestseries: "Last quest of a series", + partseries: "Part of a series", + + sepcommunity: "Community", + hascomments: "Has comments", + hasscreenshots: "Has screenshots", + hasvideos: "Has videos", + lacksstartend: "Lacks start or end", + + sepstaffonly: "Staff only", + flags: "Flags" }, + fispells: { - sepgeneral: "General", + sepgeneral: "General", prcntbasemanarequired: "% of base mana required", - firstrank: "First rank", - lastrank: "Last rank", - rankno: "Rank #...", - proficiencytype: "Proficiency type", - manaenergyragecost: "Mana/energy/rage cost", - requiresnearbyobject: "Requires a nearby object", - hasreagents: "Has reagents", - requiresprofspec: "Requires a profession specialization", - source: "Source", - trainingcost: "Training cost", - id: "ID", - icon: "Icon", - sepcommunity: "Community", - hascomments: "Has comments", - hasscreenshots: "Has screenshots", - hasvideos: "Has videos" + firstrank: "First rank", + lastrank: "Last rank", + rankno: "Rank #...", + proficiencytype: "Proficiency type", + specializationtype: "Specialization type", + rewardsskillups: "Rewards skill points", + manaenergyragecost: "Mana/energy/rage cost", + requiresnearbyobject: "Requires a nearby object", + hasreagents: "Has reagents", + scaling: "Scales with level", + requiresprofspec: "Requires a profession specialization", + source: "Source", + trainingcost: "Training cost", + id: "ID", + icon: "Icon", + + sepcommunity: "Community", + hascomments: "Has comments", + hasscreenshots: "Has screenshots", + hasvideos: "Has videos" }, + fiachievements: { - sepgeneral: "General", - givesreward: "Gives a reward", - rewardtext: "Reward text", - location: "Location...", - relatedevent: "Related world event", - id: "ID", - icon: "Icon", - sepseries: "Series", - firstseries: "First of a series", - lastseries: "Last of a series", - partseries: "Part of a series", - sepcommunity: "Community", - hascomments: "Has comments", + sepgeneral: "General", + givesreward: "Gives a reward", + rewardtext: "Reward text", + location: "Location...", + relatedevent: "Related world event", + id: "ID", + icon: "Icon", + + sepseries: "Series", + firstseries: "First of a series", + lastseries: "Last of a series", + partseries: "Part of a series", + + sepcommunity: "Community", + hascomments: "Has comments", hasscreenshots: "Has screenshots", - hasvideos: "Has videos" + hasvideos: "Has videos", + + sepstaffonly: 'Staff Only', + flags: 'Flags' }, + fiprofiles: { - sepgeneral: "General", - gearscore: "Gear score", - achievementpoints: "Achievement points", - wearingitem: "Wearing item #...", - wearingpermenchant: "Wearing enchantment #...", + sepgeneral: "General", + gearscore: "Gear score", + achievementpoints: "Achievement points", + wearingitem: "Wearing item #...", + wearingpermenchant: "Wearing enchantment #...", completedachievement: "Completed achievement #...", - sepprofession: "Professions", - alchemy: "Alchemy skill", - blacksmithing: "Blacksmithing skill", - enchanting: "Enchanting skill", - engineering: "Engineering skill", - herbalism: "Herbalism skill", - inscription: "Inscription skill", - jewelcrafting: "Jewelcrafting skill", - leatherworking: "Leatherworking skill", - mining: "Mining skill", - skinning: "Skinning skill", - tailoring: "Tailoring skill", - septalent: "Talents", - talenttree1: "Points spent in first talent tree", - talenttree2: "Points spent in second talent tree", - talenttree3: "Points spent in third talent tree", - sepguild: "Guilds", - hasguild: "Has a guild", - guildname: "Guild name", - guildrank: "Guild member rank", - separenateam: "Arena teams", - teamname2v2: "2v2 arena team name", - teamrtng2v2: "2v2 arena team rating", - teamcontrib2v2: "2v2 arena team contribution", - teamname3v3: "3v3 arena team name", - teamrtng3v3: "3v3 arena team rating", - teamcontrib3v3: "3v3 arena team contribution", - teamname5v5: "5v5 arena team name", - teamrtng5v5: "5v5 arena team rating", - teamcontrib5v5: "5v5 arena team contribution" + + sepprofession: "Professions", + alchemy: "Alchemy skill", + blacksmithing: "Blacksmithing skill", + enchanting: "Enchanting skill", + engineering: "Engineering skill", + herbalism: "Herbalism skill", + inscription: "Inscription skill", + jewelcrafting: "Jewelcrafting skill", + leatherworking: "Leatherworking skill", + mining: "Mining skill", + skinning: "Skinning skill", + tailoring: "Tailoring skill", + + septalent: "Talents", + talenttree1: "Points spent in first talent tree", + talenttree2: "Points spent in second talent tree", + talenttree3: "Points spent in third talent tree", + + sepguild: "Guilds", + hasguild: "Has a guild", + guildname: "Guild name", + guildrank: "Guild member rank", + + separenateam: "Arena teams", + teamname2v2: "2v2 arena team name", + teamrtng2v2: "2v2 arena team rating", + teamcontrib2v2: "2v2 arena team contribution", + teamname3v3: "3v3 arena team name", + teamrtng3v3: "3v3 arena team rating", + teamcontrib3v3: "3v3 arena team contribution", + teamname5v5: "5v5 arena team name", + teamrtng5v5: "5v5 arena team rating", + teamcontrib5v5: "5v5 arena team contribution" }, + presets: { pve: "PvE", pvp: "PvP", diff --git a/template/js/locale_eses.js b/template/js/locale_eses.js index 392f2eb6..8aca0583 100644 --- a/template/js/locale_eses.js +++ b/template/js/locale_eses.js @@ -1125,52 +1125,55 @@ var g_item_subsubclasses = { } } }; + var g_itemset_types = { - 1:"Tela", - 2:"Cuero", - 3:"Malla", - 4:"Placas", - 5:"Daga", - 6:"Anillo", - 7:"Arma de puño", - 8:"Hacha de uno mano", - 9:"Maza de uno mano", - 10:"Espada de uno mano", - 11:"Abalorio", - 12:"Amuleto" + 1: "Tela", + 2: "Cuero", + 3: "Malla", + 4: "Placas", + 5: "Daga", + 6: "Anillo", + 7: "Arma de puño", + 8: "Hacha de uno mano", + 9: "Maza de uno mano", + 10: "Espada de uno mano", + 11: "Abalorio", + 12: "Amuleto" }; + var g_itemset_notes = { - 1:"Set de mazmorra 1", - 2:"Set de mazmorra 2", - 14:"Set de mazmorra 3", - 3:"Set de banda tier 1", - 4:"Set de banda tier 2", - 5:"Set de banda tier 3", - 12:"Set de banda tier 4", - 13:"Set de banda tier 5", - 18:"Set de banda tier 6", - 23:"Set de banda tier 7", - 25:"Set de banda tier 8", - 27:"Set de banda tier 9", - 29:"Set de banda tier 10", - 6:"Set JcJ nivel 60 superior", - 7:"Set JcJ nivel 60 superior (obsoleto)", - 8:"Set JcJ nivel 60 épico", - 16:"Set JcJ nivel 70 superior", - 21:"Set JcJ nivel 70 superior 2", - 17:"Set de la Temporada de Arenas 1", - 19:"Set de la Temporada de Arenas 2", - 20:"Set de la Temporada de Arenas 3", - 22:"Set de la Temporada de Arenas 4", - 24:"Set de la Temporada de Arenas 5", - 26:"Set de la Temporada de Arenas 6", - 28:"Set de la Temporada de Arenas 7", - 30:"Set de la Temporada de Arenas 8", - 15:"Set de la Cuenca de Arathi", - 9:"Set de las Ruinas de Ahn'Qiraj", - 10:"Set del Templo de Ahn'Qiraj", - 11:"Set de Zul'Gurub" + 1: "Set de mazmorra 1", + 2: "Set de mazmorra 2", + 14: "Set de mazmorra 3", + 3: "Set de banda tier 1", + 4: "Set de banda tier 2", + 5: "Set de banda tier 3", + 12: "Set de banda tier 4", + 13: "Set de banda tier 5", + 18: "Set de banda tier 6", + 23: "Set de banda tier 7", + 25: "Set de banda tier 8", + 27: "Set de banda tier 9", + 29: "Set de banda tier 10", + 6: "Set JcJ nivel 60 superior", + 7: "Set JcJ nivel 60 superior (obsoleto)", + 8: "Set JcJ nivel 60 épico", + 16: "Set JcJ nivel 70 superior", + 21: "Set JcJ nivel 70 superior 2", + 17: "Set de la Temporada de Arenas 1", + 19: "Set de la Temporada de Arenas 2", + 20: "Set de la Temporada de Arenas 3", + 22: "Set de la Temporada de Arenas 4", + 24: "Set de la Temporada de Arenas 5", + 26: "Set de la Temporada de Arenas 6", + 28: "Set de la Temporada de Arenas 7", + 30: "Set de la Temporada de Arenas 8", + 15: "Set de la Cuenca de Arathi", + 9: "Set de las Ruinas de Ahn'Qiraj", + 10: "Set del Templo de Ahn'Qiraj", + 11: "Set de Zul'Gurub" }; + var g_npc_classifications = { 0:"Normal", 1:"Élite", @@ -2088,13 +2091,15 @@ var g_socket_names = { 8:"Ranura azul", 14:"Ranura prismática" }; -var LANG = {and:" y ", - comma:", ", - ellipsis:"…", - dash:" – ", - hyphen:" - ", - colon:": ", - qty:" ($1)", +var LANG = { + and: " y ", + comma: ", ", + ellipsis: "…", + dash: " – ", + hyphen: " - ", + colon: ": ", + qty: " ($1)", + error: "Error", date: "Fecha", date_colon: "Fecha: ", @@ -2294,9 +2299,10 @@ var LANG = {and:" y ", lvnodata_vi2:"¡Sé el primero en sugerir un vídeo para esta página!", lvnodata_vi3:"Por favor inicia sesión para sugerir un vídeo, o crea tu cuenta si aun no tienes una.", - lvnote_tryfiltering: "Trata de filtrar tus resultados", + lvnote_tryfiltering: "Trata de filtrar tus resultados", lvnote_trynarrowing: "Trata de ser más específica(o) en tu búsqueda", lvnote_upgradesfor: 'Buscando mejoras para $3.', + lvnote_witherrors: "Algunos filtros en tus búsquedas eran inválidos y han sido ignorados.", lvnote_itemsfound: "$1 objetos encontrados (mostrando $2)", lvnote_itemsetsfound: "$1 conjuntos de objetos encontrados (mostrando $2)", @@ -2802,23 +2808,27 @@ var LANG = {and:" y ", myaccount_purged:"Purgado", myaccount_purgefailed:"La purga ha fallado :(", myaccount_purgesuccess:"¡Se han purgado los datos de los anuncios correctamente!", - types:{ - 1:["PNJ","PNJ","PNJs","PNJs"], - 2:["Entidad","entidad","Entidades","entidades"], - 3:["Objeto","objeto","Objetos","objetos"], - 4:["Conjunto de objetos","conjunto de objetos","Conjuntos de objetos","conjuntos de objetos"], - 5:["Misión","misión","Misiones","misiones"], - 6:["Hechizo","hechizo","Hechizos","hechizos"], - 7:["Zona","zona","Zonas","zonas"], - 8:["Facción","facción","Facciones","facciones"], - 9:["Mascota","mascota","Mascotas","mascotas"], - 10:["Logro","logro","Logros","logros"], - 11:["Título","título","Títulos","títulos"], - 12:["Suceso mundial","evento del mundo","Eventos del mundo","eventos del mundo"], - 13:["Clase","Clase","Clases","Clases"], - 14:["Raza","raza","Razas","razas"], - 15:["Habilidad","habilidad","Habilidades","habilidades"] + + types:{ + 1: ["PNJ", "PNJ" , "PNJs", "PNJs"], + 2: ["Entidad", "entidad", "Entidades", "entidades"], + 3: ["Objeto", "objeto", "Objetos", "objetos"], + 4: ["Conjunto de objetos", "conjunto de objetos", "Conjuntos de objetos", "conjuntos de objetos"], + 5: ["Misión", "misión", "Misiones", "misiones"], + 6: ["Hechizo", "hechizo", "Hechizos", "hechizos"], + 7: ["Zona", "zona", "Zonas", "zonas"], + 8: ["Facción", "facción", "Facciones", "facciones"], + 9: ["Mascota", "mascota", "Mascotas", "mascotas"], + 10: ["Logro", "logro", "Logros", "logros"], + 11: ["Título", "título", "Títulos", "títulos"], + 12: ["Suceso mundial", "evento del mundo", "Eventos del mundo", "eventos del mundo"], + 13: ["Clase", "Clase", "Clases", "Clases"], + 14: ["Raza", "raza", "Razas", "razas"], + 15: ["Habilidad", "habilidad", "Habilidades", "habilidades"], + 16: ["Atributo", "atributo", "Atributos", "atributos"], + 17: ["Monedas", "monedas", "Monedas", "monedas"] }, + timeunitssg:["año","mes","semana","día","hora","minuto","segundo"], timeunitspl:["años","meses","semanas","dias","horas","minutos","segundos"], timeunitsab:["año","mes","sem","","h","min","seg"], @@ -2942,16 +2952,27 @@ var LANG = {and:" y ", sta:["Aguante","Agu","Agu"], str:["Fuerza","Fue","Fue"] }, - fishow:"Crear un filtro", - fihide:"Esconder opciones de filtros", - fiany:"Cualquiera", - finone:"Ninguno", - firemove:"remover", - ficlear:"borrar", - fishowdetails:"mostrar detalles", - fihidedetails:"ocultar detalles", - message_fillsomecriteria:"Por favor ingrese algún criterio.", - tooltip_jconlygems:"Si está marcado, las gemas exclusivas de
\njoyero, se usarán para determinar las posibles
\nmejores gemas para una puntuación de objeto.", + + fishow: "Crear un filtro", + fihide: "Esconder opciones de filtros", + + fiany: "Cualquiera", + finone: "Ninguno", + + firemove: "remover", + ficlear: "borrar", + ficustom: "Personalizado", + + fishowdetails: "Mostrar detalles", + fihidedetails: "Ocultar detalles", + fisavescale: "Guardar", + fideletescale: "Borrar", + + message_fillsomecriteria: "Por favor ingrese algún criterio.", + + tooltip_jconlygems: "Si está marcado, las gemas exclusivas de
\njoyero, se usarán para determinar las posibles
\nmejores gemas para una puntuación de objeto.", + tooltip_genericrating: "Equipar: Aumenta tu $1 en $3 (0 @ L0).
", + fidropdowns:{ yn:[[1,"Sí"],[2,"No"]], num:[[1,">"],[2,">="],[3,"="],[4,"<="],[5,"<"]], diff --git a/template/js/locale_frfr.js b/template/js/locale_frfr.js index 50cfbda3..2980de61 100644 --- a/template/js/locale_frfr.js +++ b/template/js/locale_frfr.js @@ -1125,52 +1125,55 @@ var g_item_subsubclasses = { } } }; + var g_itemset_types = { - 1:"Tissu", - 2:"Cuir", - 3:"Mailles", - 4:"Plaques", - 5:"Dague", - 6:"Anneau", - 7:"Arme de pugilat", - 8:"Hache à une main", - 9:"Masse à une main", - 10:"Épée à une main", - 11:"Bijou", - 12:"Amulette" + 1: "Tissu", + 2: "Cuir", + 3: "Mailles", + 4: "Plaques", + 5: "Dague", + 6: "Anneau", + 7: "Arme de pugilat", + 8: "Hache à une main", + 9: "Masse à une main", + 10: "Épée à une main", + 11: "Bijou", + 12: "Amulette" }; + var g_itemset_notes = { - 1:"Ensemble de donjon 1", - 2:"Ensemble de donjon 2", - 14:"Ensemble de donjon 3", - 3:"Ensemble de raid palier 1", - 4:"Ensemble de raid palier 2", - 5:"Ensemble de raid palier 3", - 12:"Ensemble de raid palier 4", - 13:"Ensemble de raid palier 5", - 18:"Ensemble de raid palier 6", - 23:"Ensemble de raid palier 7", - 25:"Ensemble de raid palier 8", - 27:"Ensemble de raid palier 9", - 29:"Ensemble de raid palier 10", - 6:"Ensemble JcJ niveau 60 supérieur", - 7:"Ensemble JcJ niveau 60 supérieur (désuet)", - 8:"Ensemble JcJ niveau 60 épique", - 16:"Ensemble JcJ niveau 70 supérieur", - 21:"Ensemble JcJ niveau 70 supérieur 2", - 17:"Ensemble d'arène saison 1", - 19:"Ensemble d'arène saison 2", - 20:"Ensemble d'arène saison 3", - 22:"Ensemble d'arène saison 4", - 24:"Ensemble d'arène saison 5", - 26:"Ensemble d'arène saison 6", - 28:"Ensemble d'arène saison 7", - 30:"Set d'Arena de la Saison 8", - 15:"Ensemble du bassin d'Arathi", - 9:"Ensemble des ruines d'Ahn'Qiraj", - 10:"Ensemble d'Ahn'Qiraj", - 11:"Ensemble de Zul'Gurub" + 1: "Ensemble de donjon 1", + 2: "Ensemble de donjon 2", + 14: "Ensemble de donjon 3", + 3: "Ensemble de raid palier 1", + 4: "Ensemble de raid palier 2", + 5: "Ensemble de raid palier 3", + 12: "Ensemble de raid palier 4", + 13: "Ensemble de raid palier 5", + 18: "Ensemble de raid palier 6", + 23: "Ensemble de raid palier 7", + 25: "Ensemble de raid palier 8", + 27: "Ensemble de raid palier 9", + 29: "Ensemble de raid palier 10", + 6: "Ensemble JcJ niveau 60 supérieur", + 7: "Ensemble JcJ niveau 60 supérieur (désuet)", + 8: "Ensemble JcJ niveau 60 épique", + 16: "Ensemble JcJ niveau 70 supérieur", + 21: "Ensemble JcJ niveau 70 supérieur 2", + 17: "Ensemble d'arène saison 1", + 19: "Ensemble d'arène saison 2", + 20: "Ensemble d'arène saison 3", + 22: "Ensemble d'arène saison 4", + 24: "Ensemble d'arène saison 5", + 26: "Ensemble d'arène saison 6", + 28: "Ensemble d'arène saison 7", + 30: "Set d'Arena de la Saison 8", + 15: "Ensemble du bassin d'Arathi", + 9: "Ensemble des ruines d'Ahn'Qiraj", + 10: "Ensemble d'Ahn'Qiraj", + 11: "Ensemble de Zul'Gurub" }; + var g_npc_classifications = { 0:"Standard", 1:"Élite", @@ -2076,7 +2079,14 @@ var g_socket_names = { 14:"Châsse prismatique" }; var LANG = { - and:" et ",comma:", ",ellipsis:"…",dash:" – ",hyphen:" - ",colon:" : ",qty:" ($1)", + and: " et ", + comma: ", ", + ellipsis: "…", + dash: " – ", + hyphen: " - ", + colon: " : ", + qty: " ($1)", + error: "Erreur", date: "Date", date_colon: "Date : ", @@ -2119,9 +2129,10 @@ var LANG = { lvcomment_add:"Ajouter votre commentaire",lvcomment_sort:"Trier par : ",lvcomment_sortdate:"Date",lvcomment_sortrating:"Le plus haut noté",lvcomment_patchfilter:"Filtrer par mise-à-jour : ",lvcomment_by:"Par ",lvcomment_patch:" (Mise à jour $1)",lvcomment_show:"Afficher le commentaire",lvcomment_hide:"Cacher le commentaire",lvcomment_rating:"Note : ",lvcomment_lastedit:"Dernière modification par ",lvcomment_nedits:"modifié $1 fois",lvcomment_edit:"Édition",lvcomment_delete:"Supprimer",lvcomment_detach:"Détacher",lvcomment_reply:"Répondre",lvcomment_report:"Rapporter",lvcomment_reported:"Rapporté !",lvcomment_deleted:" (Supprimé)",lvcomment_purged:" (Effacé)",lvdrop_outof:"sur $1",lvitem_dd:" ($1$2)",lvitem_normal:"N",lvitem_heroic:"H",lvitem_raid10:"10",lvitem_raid25:"25",lvitem_heroicitem:"Héroïque",lvitem_vendorin:"Marchand dans ",lvitem_reqlevel:"Req. ",lvnpc_alliance:"A",lvnpc_horde:"H",premium_title:"Partisan Wowhead",lvquest_daily:"$1 journalière",lvquest_weekly:"$1 hebdomadaire",lvquest_pickone:"Choisir une : ",lvquest_alsoget:"Obtenez aussi : ",lvquest_xp:"$1 PX",lvquest_removed:"Supprimé",lvzone_xman:"$1-joueur",lvzone_xvx:"$1c$2",lvpet_exotic:"Exotique",lvpage_of:" de ",lvpage_first:" Première",lvpage_previous:" Préc.",lvpage_next:"Suiv. ",lvpage_last:"Dernière ",lvscreenshot_submit:"Envoyer une capture d'écran",lvscreenshot_from:"Par ",lvscreenshot_hires:"Voir",lvscreenshot_hires2:" une version plus détaillée ($1x$2)",lvvideo_suggest:"Suggérez un vidéo",lvvideo_from:"Par ",lvnodata:"Il n'y a aucune donnée à afficher.",lvnodata2:"Aucun résultat.",lvnodata_co1:"Aucun commentaire n'a été posté jusqu'à maintenant.",lvnodata_co2:"Soyez le premier à en ajouter un sur cette page !",lvnodata_co3:"Veuillez vous connecter pour ajouter votre commentaire, ou enregistrez-vous si vous n'avez pas encore de compte.",lvnodata_ss1:"Aucune capture d'écran n'a été envoyée jusqu'à maintenant.",lvnodata_ss2:"Soyez le premier à en envoyer une pour cette page !",lvnodata_ss3:"Veuillez vous connecter pour envoyer une capture, ou enregistrez-vous si vous n'avez pas encore de compte.",lvnodata_vi1:"Aucun vidéos n'a encore été soumis.",lvnodata_vi2:"Soyez le premier suggérer un vidéo pour cette page!",lvnodata_vi3:"Veuillez vous connecter pour suggérer un vidéo ou enregistrez vous si vous n'avez pas de compte.", - lvnote_tryfiltering: "Essayez de filtrer vos résultats", + lvnote_tryfiltering: "Essayez de filtrer vos résultats", lvnote_trynarrowing: "Essayez de restreindre votre recherche", lvnote_upgradesfor: 'En train de trouver des améliorations pour $3.', + lvnote_witherrors: "Certains filtres dans votre recherche étaient invalides et on été ignorés.", lvnote_itemsfound: "$1 objets trouvés ($2 affichés)", lvnote_itemsetsfound: "$1 ensembles d'objets trouvés ($2 affichés)", @@ -2357,22 +2368,50 @@ var LANG = { tab_world: "Monde", tab_zones: "Zones", - menu_browse:"Consulter",mapper_tipzoom:"Astuce : Cliquer pour agrandir la carte",mapper_tippin:"Astuce : Cliquer sur la carte pour ajouter/enlever des marqueurs",mapper_hidepins:"Cacher les marqueurs",mapper_showpins:"Montrer les marqueurs",mapper_floor:"Changer de niveau...",mapper_relevantlocs:"Emplacements pertinents",mapper_entiretyinzone:"L'entièreté de cette quête se déroule dans $$",mapper_happensin:"Une partie de cette quête se déroule dans $$.",mapper_objectives:{ox:"Cette quête a des objectifs dans $$.",sx:"Cette quête débute dans $$.",ex:"Cette quête finie dans $$.",sex:"Cette quête débute et finie dans $$.",osx:"Cette quête a des objectifs et débute dans $$.",oex:"Cette quête a des objectifs et fini dans $$.",osx_ey:"Cette quête a des objectifs et débute dans $$ fini dans $$.",oex_sy:"Cette quête a des objectifs et fini dans $$ et débute dans $$.",sx_ey:"Cette quête débute dans $$ et finie dans $$.",ox_sy:"Cette quête débute dans $$, a des objectifs dans $$.",ox_ey:"Cette quête a des objectifs dans $$ et fini dans $$.",ox_sey:"Cette quête débute et fini dans $$ et a des objectifs dans $$.",ox_sy_ez:"Cette quête débute dans $$, a des objectifs dans $$ et fini dans $$."},mapper_startsquest:"Débute la quête",mapper_endsquest:"Termine la quête",mapper_requiredquest:"Objectif de la quête",mapper_sourcestart:"Source du début de la quête: ",mapper_sourceend:"Source de la fin de la quête: ",mapper_sourcereq:"Source de l'objectif d'une quête: ",mapper_clicktoview:"Cliquez pour voir ce $1",showonmap:"Afficher sur la carte...",som_nothing:"Rien",som_questgivers:"Donneurs de quêtes",som_viewnpc:"Cliquez pour voir ce PNJ",som_viewobj:"Cliquez pour voir cette entité",som_view:"Cliquez pour voir...",som_startsquest:"Débute la quête suivante :",som_startsquestpl:"Débute les quêtes suivantes :",som_legend:"Légende: ",som_legend_alliance:"Alliance",som_legend_horde:"Horde",som_legend_neutral:"Neutre",som:{all:"Tous",alliance:"Alliance",horde:"Horde",quest:"Donneur de quêtes",alliancequests:"Donneur de quêtes",hordequests:"Donneur de quêtes",repair:"Réparateurs",rare:"PNJs rares",auctioneer:"Actionnaires",banker:"Banquiers",battlemaster:"Maitre de bataille",innkeeper:"Aubergiste",guildmaster:"Maitre de guilde",stablemaster:"Maitre d'écurie",flightmaster:"Maitres de vol",trainer:"Entraineurs",vendor:"Marchands",book:"Livres",herb:"Herbes",vein:"Filons de minerai",spirithealer:"Esprits soigneurs"},markup_b:"Gras",markup_i:"Italique",markup_u:"Souligné",markup_s:"Barré",markup_small:"Petits caractères",markup_url:"Lien",markup_quote:"Citation",markup_code:"Bout de code",markup_ul:"Liste à puces",markup_ol:"Liste numérotée",markup_li:"Élément de liste",markup_img:"Image",markup_said:"a dit : ",markup_toc:"Table des matières",ct_dialog_captcha:"Veuillez entrer le code ci-dessus : ",ct_dialog_contactwowhead:"Contactez Wowhead",ct_dialog_description:"Description",ct_dialog_desc_caption:"Soyez aussi spécifique que possible.",ct_dialog_email:"Courriel : ",ct_dialog_email_caption:"Seulement si vous voulez être contacté.",ct_dialog_optional:"Optionnel",ct_dialog_reason:"Raison: ",ct_dialog_relatedurl:"URL relié: ",ct_dialog_currenturl:"URL actuel:",ct_dialog_report:"Rapporter",ct_dialog_reportchar:"Signalez le personnage",ct_dialog_reportcomment:"Signalez le commentaire de $1",ct_dialog_reportpost:"Signalez le message de $1",ct_dialog_reportscreen:"Signalez la capture d'écran de $1",ct_dialog_reportvideo:"Rapportez le vidéo de $1",ct_dialog_reporttopic:"Signalez le sujet de $1",ct_dialog_thanks:"Votre message à été reçu. Merci de nous avoir contacté!",ct_dialog_thanks_user:"Votre message à été reçu, $1. Merci de nous avoir contacté!",ct_dialog_error_captcha:"Le CAPTCHA que vous avez écrit n'est pas valide. Veuillez réessayer.",ct_dialog_error_desc:"Veuillez fournir une description complète, mais pas trop longue.",ct_dialog_error_email:"Veuillez entrer une adresse e-mail valide.",ct_dialog_error_emaillen:"Veuillez entrer une adresse e-mail avec moins de 100 caractères.",ct_dialog_error_reason:"Veuillez choisir une raison pour nous contacter.",ct_dialog_error_relatedurl:"Veuillez fournir un URL avec moins de 250 caractères.",ct_dialog_error_invalidurl:"Veuillez entrer un URL valide.",cn_fieldrequired:"$1 est requis.",cn_fieldinvalid:"$1 doit être valide.",cn_confirm:"Vérifiez que vous avez entré les bonnes informations, ensuite cliquez sur OK.",cn_entrylogin:'Veuillez vous connecter pour participer au concours ou inscrivez-vous si vous n\'en avez pas.',cn_entryerror:"Une erreur est survenue. Veuillez réessayer.",cn_entrywhen:"Vous vous êtes inscrit au concours le $1.",cn_entrywhen2:"Vous tees déjà inscrit à ce concours.",cn_entrysuccess:"Vous venez de vous inscrire au concours. Bonne chance!",cn_entryended:"Ce concours est terminé.",cn_entryupcoming:"Ce concours n'a pas encore débuté. Restez à l'affut!",cn_entryregion:"Vous ne pouvez participer à ce concours dans votre région.",cn_mustbe18:"Vouz devez être agé de 18 ans ou plus pour participer au concours.",cn_winnerslist:"Liste des gagnants",cn_updated:"Actualisé",ct_resp_error1:"Le CAPTCHA que vous avez écrit n'est pas valide. Veuillez réessayer.",ct_resp_error2:"Veuillez fournir une description complète, mais pas trop longue.",ct_resp_error3:"Veuillez choisir une raison pour nous contacter.",ct_resp_error7:"Vous avez déjà rapporté ceci.",compose_mode:"Mode : ",compose_edit:"Édition",compose_preview:"Aperçu",compose_livepreview:"Aperçu rapide",compose_save:"Sauver",compose_cancel:"Annuler",compose_limit:"Jusqu'à $1 caractères",compose_limit2:"Jusqu'à $1 caractères et/ou $2 lignes",compose_remaining:"$1 caractères restants.",user_nodescription:"Cet utilisateur n'a pas encore composé une description publique.",user_nodescription2:"Vous n'en avez pas composée une encore.",user_composeone:"En composer une !",user_editdescription:"Édition",myaccount_passmatch:"Correspondent",myaccount_passdontmatch:"Ne correspondent pas",myaccount_purged:"Purgé",myaccount_purgefailed:"La purge a échouée :(",myaccount_purgesuccess:"Les données d'annonce ont été purgées correctement!",types:{1:["PNJ","PNJ","PNJs","PNJs"], - 2:["Entité","entité","Entités","entités"], - 3:["Objet","objet","Objets","objets"], - 4:["Ensemble d'objets","ensemble d'objets","Ensembles d'objets","ensembles d'objets"], - 5:["Quête","quête","Quêtes","quêtes"], - 6:["Sort","sort","Sorts","sorts"], - 7:["Zone","zone","Zones","zones"], - 8:["Faction","faction","Factions","factions"], - 9:["Familier","familier","Familiers","familiers"], - 10:["Haut fait","haut fait","Hauts faits","hauts faits"], - 11:["Titre","titre","Titres","titres"], - 12:["Événement mondial","évènement mondial","Évènements mondiaux","évènements mondiaux"], - 13:["Classe","classe","Classes","classes"], - 14:["Race","race","Races","races"], - 15:["Compétence","compétence","Compétences","compétences"], - 16:["Statistique","statistique","Statistiques","statistiques"]},timeunitssg:["année","mois","semaine","jour","heure","minute","seconde"],timeunitspl:["années","mois","semaines","jours","heures","minutes","secondes"],timeunitsab:["an","mo","sem","jour","h","min","s"],presets:{pve:"JcE",pvp:"JcJ",afflic:"Affliction",arcane:"Arcanes",arms:"Armes (DPS)",assas:"Assassinat",balance:"Equilibre (DPS)",beast:"Maîtrise des bêtes",blooddps:"Sang (DPS)",bloodtank:"Sang (Tank)",combat:"Combat",demo:"Démonologie",destro:"Destruction",disc:"Discipline (Soins)",elem:"Combat élémentaire (DPS)",enhance:"Amélioration (DPS)",feraldps:"Combat farouche (DPS)",feraltank:"Combat farouche (Tank)",fire:"Feu",frost:"Givre",frostdps:"Givre (DPS)",frosttank:"Givre (Tank)",fury:"Fureur (DPS)",generic:"Générique",holy:"Sacré (Soins)",marks:"Précision",prot:"Protection (Tank)",resto:"Restauration (Soins)",retrib:"Vindicte (DPS)",shadow:"Magie de l'ombre (DPS)",subtle:"Finesse",surv:"Survie",unholydps:"Impie (DPS)"},traits:{agi:["Agilité","Agi","Agi"],arcres:["Résistance aux Arcanes","Rés. arcanes","RArc"],arcsplpwr:["Puissance des sorts des arcanes","Puiss. arcanes","PArc"],armor:["Armure","Armure","Armure"],armorbonus:["Armure supplémentaire","Armure suppl.","ArmSup"],armorpenrtng:["Score de pénétration d'armure","Pén. d'armure","Pén"],atkpwr:["Puissance d'attaque","PA","PA"],avgbuyout:["Prix d'achat immédiat moyen","Achat immédiat","HV"],avgmoney:["Argent contenu en moyenne","Argent","Argent"],block:["Valeur de blocage","Valeur de Blocage","VaBlc"],blockrtng:["Score de blocage","Bloc","Bloc"],buyprice:["Prix d'achat","Achat","Achat"],cooldown:["Temps de recharge (secondes)","Recharge","Rech"],critstrkrtng:["Score de coup critique","Crit","Crit"],defrtng:["Score de défense","Défense","Déf"],dmg:["Dégâts d'arme","Dégâts","Dégâts"],dmgmax1:["Dégâts maximaux","Dégâts max","Max"],dmgmin1:["Dégâts minimaux","Dégâts min","Min"],dodgertng:["Score d'esquive","Esqui","Esqui"],dps:["Dégâts par seconde","DPS","DPS"],dura:["Durabilité","Durabilité","Dura"],exprtng:["Score d'expertise","Expertise","Exp"],feratkpwr:["Puissance d'attaque en combat farouche","PA farouche","PAF"],firres:["Résistance au Feu","Rés. feu","RFeu"],firsplpwr:["Puissance des sorts de feu","Puiss. feu","PFeu"],frores:["Résistance au Givre","Rés. givre","RGiv"],frosplpwr:["Puissance des sorts de givre","Puiss. givre","PGiv"],hastertng:["Score de hâte","Hâte","Hâte"],health:["Vie","Vie","Vie"],healthrgn:["Régénération de vie","VP5","VP5"],hitrtng:["Score de toucher","Touch","Touch"],holres:["Résistance au Sacré","Rés. sacré","RSac"],holsplpwr:["Puissance des sorts sacrés","Puiss. sacrés","PSac"],"int":["Intelligence","Int","Int"],level:["Niveau","Niveau","Niv"],mana:["Mana","Mana","Mana"],manargn:["Régénération de mana","MP5","MP5"],masteryrtng:["Score de Maitrise","Maitrise","Maitrise"],mleatkpwr:["Puissance d'attaque en mêlée","PA en mêlée","PA"],mlecritstrkrtng:["Score de coup critique en mêlée","Crit en mêlée","Crit"],mledmgmax:["Dégâts maximaux en mêlée","Dégâts max mêlée","Max"],mledmgmin:["Dégâts minimaux en mêlée","Dégâts min mêlée","Min"],mledps:["DPS mêlée","DPS mêlée","DPS"],mlehastertng:["Score de hâte en mêlée","Hâte en mêlée","Hâte"],mlehitrtng:["Score de toucher en mêlée","Toucher en mêlée","Touch"],mlespeed:["Vitesse mêlée","Vitesse de corps à corps","Vitesse"],natres:["Résistance à la Nature","Rés. nature","RNat"],natsplpwr:["Puissance des sorts de la nature","Puiss. nature","PNat"],nsockets:["Nombre de châsses","Châsses","Châsse"],parryrtng:["Score de parade","Parade","Parade"],reqarenartng:["Requiert une cote d'arène personnelle et en équipe","Score requis","Score"],reqlevel:["Niveau requis","Niveau requis","Niveau"],reqskillrank:["Niveau de compétence requis","Compétence requise","Compétence"],resirtng:["Score de résilience","Résilience","Résil"],rgdatkpwr:["Puissance d'attaque à distance","PA à distance","PAD"],rgdcritstrkrtng:["Score de coup critique à distance","Crit à distance","Crit"],rgddmgmax:["Dégâts maximaux à distance","Dégâts max distance","Max"],rgddmgmin:["Dégâts minimaux à distance","Dégâts min distance","Min"],rgddps:["DPS à distance","DPS à distance","DPS"],rgdhastertng:["Score de hâte à distance","Hâte à distance","Hâte"],rgdhitrtng:["Score de toucher à distance","Toucher à distance","Touch"],rgdspeed:["Vitesse distance","Vitesse d'attaque à distance","Vitesse"],sellprice:["Prix de vente","Vente","Vente"],sepbasestats:"Caractéristiques",sepdefensivestats:"Caractéristiques défensives",sepgeneral:"Général",sepindividualstats:"Caractéristiques individuelles",sepmisc:"Divers",sepoffensivestats:"Caractéristiques offensives",sepresistances:"Résistances",sepweaponstats:"Caractéristiques d'armes",shares:["Résistance à l'Ombre","Rés. ombre","ROmb"],shasplpwr:["Puissance des sorts de l'ombre","Puiss. ombre","POmb"],speed:["Vitesse","Vitesse","Vitesse"],spi:["Esprit","Esp","Esp"],splcritstrkrtng:["Score de coup critique des sorts","Crit des sorts","Crit"],spldmg:["Dégâts infligés par les sorts","Dégâts sorts","Dégâts"],splheal:["Soins prodigués par les sorts","Soins","Soins"],splpwr:["Puiss. sorts","Puissance des sorts","PS"],splhastertng:["Score de hâte des sorts","Hâte des sorts","Hâte"],splhitrtng:["Score de toucher des sorts","Toucher des sorts","Touch"],splpen:["Pénétration des sorts","Pén. des sorts","Pén"],sta:["Endurance","End","End"],str:["Force","For","For"]},fishow:"Créer un filtre",fihide:"Masquer les options de filtrage",fiany:"N'importe quelle",finone:"Aucun",firemove:"enlever",ficlear:"effacer",fishowdetails:"montrer les détails",fihidedetails:"cacher les détails",message_fillsomecriteria:"Vous devez utiliser au moins un critère.",tooltip_jconlygems:"Si coché, les gemmes pour joailler,
\nvont aussi être utilisé pour déterminer les meilleurs
\ngemmes possible pour le score pondéré d'un objet.",fidropdowns:{yn:[[1,"Oui"], + menu_browse:"Consulter",mapper_tipzoom:"Astuce : Cliquer pour agrandir la carte",mapper_tippin:"Astuce : Cliquer sur la carte pour ajouter/enlever des marqueurs",mapper_hidepins:"Cacher les marqueurs",mapper_showpins:"Montrer les marqueurs",mapper_floor:"Changer de niveau...",mapper_relevantlocs:"Emplacements pertinents",mapper_entiretyinzone:"L'entièreté de cette quête se déroule dans $$",mapper_happensin:"Une partie de cette quête se déroule dans $$.",mapper_objectives:{ox:"Cette quête a des objectifs dans $$.",sx:"Cette quête débute dans $$.",ex:"Cette quête finie dans $$.",sex:"Cette quête débute et finie dans $$.",osx:"Cette quête a des objectifs et débute dans $$.",oex:"Cette quête a des objectifs et fini dans $$.",osx_ey:"Cette quête a des objectifs et débute dans $$ fini dans $$.",oex_sy:"Cette quête a des objectifs et fini dans $$ et débute dans $$.",sx_ey:"Cette quête débute dans $$ et finie dans $$.",ox_sy:"Cette quête débute dans $$, a des objectifs dans $$.",ox_ey:"Cette quête a des objectifs dans $$ et fini dans $$.",ox_sey:"Cette quête débute et fini dans $$ et a des objectifs dans $$.",ox_sy_ez:"Cette quête débute dans $$, a des objectifs dans $$ et fini dans $$."},mapper_startsquest:"Débute la quête",mapper_endsquest:"Termine la quête",mapper_requiredquest:"Objectif de la quête",mapper_sourcestart:"Source du début de la quête: ",mapper_sourceend:"Source de la fin de la quête: ",mapper_sourcereq:"Source de l'objectif d'une quête: ",mapper_clicktoview:"Cliquez pour voir ce $1",showonmap:"Afficher sur la carte...",som_nothing:"Rien",som_questgivers:"Donneurs de quêtes",som_viewnpc:"Cliquez pour voir ce PNJ",som_viewobj:"Cliquez pour voir cette entité",som_view:"Cliquez pour voir...",som_startsquest:"Débute la quête suivante :",som_startsquestpl:"Débute les quêtes suivantes :",som_legend:"Légende: ",som_legend_alliance:"Alliance",som_legend_horde:"Horde",som_legend_neutral:"Neutre",som:{all:"Tous",alliance:"Alliance",horde:"Horde",quest:"Donneur de quêtes",alliancequests:"Donneur de quêtes",hordequests:"Donneur de quêtes",repair:"Réparateurs",rare:"PNJs rares",auctioneer:"Actionnaires",banker:"Banquiers",battlemaster:"Maitre de bataille",innkeeper:"Aubergiste",guildmaster:"Maitre de guilde",stablemaster:"Maitre d'écurie",flightmaster:"Maitres de vol",trainer:"Entraineurs",vendor:"Marchands",book:"Livres",herb:"Herbes",vein:"Filons de minerai",spirithealer:"Esprits soigneurs"},markup_b:"Gras",markup_i:"Italique",markup_u:"Souligné",markup_s:"Barré",markup_small:"Petits caractères",markup_url:"Lien",markup_quote:"Citation",markup_code:"Bout de code",markup_ul:"Liste à puces",markup_ol:"Liste numérotée",markup_li:"Élément de liste",markup_img:"Image",markup_said:"a dit : ",markup_toc:"Table des matières",ct_dialog_captcha:"Veuillez entrer le code ci-dessus : ",ct_dialog_contactwowhead:"Contactez Wowhead",ct_dialog_description:"Description",ct_dialog_desc_caption:"Soyez aussi spécifique que possible.",ct_dialog_email:"Courriel : ",ct_dialog_email_caption:"Seulement si vous voulez être contacté.",ct_dialog_optional:"Optionnel",ct_dialog_reason:"Raison: ",ct_dialog_relatedurl:"URL relié: ",ct_dialog_currenturl:"URL actuel:",ct_dialog_report:"Rapporter",ct_dialog_reportchar:"Signalez le personnage",ct_dialog_reportcomment:"Signalez le commentaire de $1",ct_dialog_reportpost:"Signalez le message de $1",ct_dialog_reportscreen:"Signalez la capture d'écran de $1",ct_dialog_reportvideo:"Rapportez le vidéo de $1",ct_dialog_reporttopic:"Signalez le sujet de $1",ct_dialog_thanks:"Votre message à été reçu. Merci de nous avoir contacté!",ct_dialog_thanks_user:"Votre message à été reçu, $1. Merci de nous avoir contacté!",ct_dialog_error_captcha:"Le CAPTCHA que vous avez écrit n'est pas valide. Veuillez réessayer.",ct_dialog_error_desc:"Veuillez fournir une description complète, mais pas trop longue.",ct_dialog_error_email:"Veuillez entrer une adresse e-mail valide.",ct_dialog_error_emaillen:"Veuillez entrer une adresse e-mail avec moins de 100 caractères.",ct_dialog_error_reason:"Veuillez choisir une raison pour nous contacter.",ct_dialog_error_relatedurl:"Veuillez fournir un URL avec moins de 250 caractères.",ct_dialog_error_invalidurl:"Veuillez entrer un URL valide.",cn_fieldrequired:"$1 est requis.",cn_fieldinvalid:"$1 doit être valide.",cn_confirm:"Vérifiez que vous avez entré les bonnes informations, ensuite cliquez sur OK.",cn_entrylogin:'Veuillez vous connecter pour participer au concours ou inscrivez-vous si vous n\'en avez pas.',cn_entryerror:"Une erreur est survenue. Veuillez réessayer.",cn_entrywhen:"Vous vous êtes inscrit au concours le $1.",cn_entrywhen2:"Vous tees déjà inscrit à ce concours.",cn_entrysuccess:"Vous venez de vous inscrire au concours. Bonne chance!",cn_entryended:"Ce concours est terminé.",cn_entryupcoming:"Ce concours n'a pas encore débuté. Restez à l'affut!",cn_entryregion:"Vous ne pouvez participer à ce concours dans votre région.",cn_mustbe18:"Vouz devez être agé de 18 ans ou plus pour participer au concours.",cn_winnerslist:"Liste des gagnants",cn_updated:"Actualisé",ct_resp_error1:"Le CAPTCHA que vous avez écrit n'est pas valide. Veuillez réessayer.",ct_resp_error2:"Veuillez fournir une description complète, mais pas trop longue.",ct_resp_error3:"Veuillez choisir une raison pour nous contacter.",ct_resp_error7:"Vous avez déjà rapporté ceci.",compose_mode:"Mode : ",compose_edit:"Édition",compose_preview:"Aperçu",compose_livepreview:"Aperçu rapide",compose_save:"Sauver",compose_cancel:"Annuler",compose_limit:"Jusqu'à $1 caractères",compose_limit2:"Jusqu'à $1 caractères et/ou $2 lignes",compose_remaining:"$1 caractères restants.",user_nodescription:"Cet utilisateur n'a pas encore composé une description publique.",user_nodescription2:"Vous n'en avez pas composée une encore.",user_composeone:"En composer une !",user_editdescription:"Édition",myaccount_passmatch:"Correspondent",myaccount_passdontmatch:"Ne correspondent pas",myaccount_purged:"Purgé",myaccount_purgefailed:"La purge a échouée :(",myaccount_purgesuccess:"Les données d'annonce ont été purgées correctement!", + + types: { + 1: ["PNJ", "PNJ" , "PNJs", "PNJs"], + 2: ["Entité", "entité", "Entités", "entités"], + 3: ["Objet", "objet", "Objets", "objets"], + 4: ["Ensemble d'objets", "ensemble d'objets", "Ensembles d'objets", "ensembles d'objets"], + 5: ["Quête", "quête", "Quêtes", "quêtes"], + 6: ["Sort", "sort", "Sorts", "sorts"], + 7: ["Zone", "zone", "Zones", "zones"], + 8: ["Faction", "faction", "Factions", "factions"], + 9: ["Familier", "familier", "Familiers", "familiers"], + 10: ["Haut fait", "haut fait", "Hauts faits", "hauts faits"], + 11: ["Titre", "titre", "Titres", "titres"], + 12: ["Événement mondial", "évènement mondial", "Évènements mondiaux", "évènements mondiaux"], + 13: ["Classe", "classe", "Classes", "classes"], + 14: ["Race", "race", "Races", "races"], + 15: ["Compétence", "compétence", "Compétences", "compétences"], + 16: ["Statistique", "statistique", "Statistiques", "statistiques"], + 17: ["Monnaies", "monnaie", "Monnaies", "monnaies"] + }, + + timeunitssg:["année","mois","semaine","jour","heure","minute","seconde"],timeunitspl:["années","mois","semaines","jours","heures","minutes","secondes"],timeunitsab:["an","mo","sem","jour","h","min","s"],presets:{pve:"JcE",pvp:"JcJ",afflic:"Affliction",arcane:"Arcanes",arms:"Armes (DPS)",assas:"Assassinat",balance:"Equilibre (DPS)",beast:"Maîtrise des bêtes",blooddps:"Sang (DPS)",bloodtank:"Sang (Tank)",combat:"Combat",demo:"Démonologie",destro:"Destruction",disc:"Discipline (Soins)",elem:"Combat élémentaire (DPS)",enhance:"Amélioration (DPS)",feraldps:"Combat farouche (DPS)",feraltank:"Combat farouche (Tank)",fire:"Feu",frost:"Givre",frostdps:"Givre (DPS)",frosttank:"Givre (Tank)",fury:"Fureur (DPS)",generic:"Générique",holy:"Sacré (Soins)",marks:"Précision",prot:"Protection (Tank)",resto:"Restauration (Soins)",retrib:"Vindicte (DPS)",shadow:"Magie de l'ombre (DPS)",subtle:"Finesse",surv:"Survie",unholydps:"Impie (DPS)"},traits:{agi:["Agilité","Agi","Agi"],arcres:["Résistance aux Arcanes","Rés. arcanes","RArc"],arcsplpwr:["Puissance des sorts des arcanes","Puiss. arcanes","PArc"],armor:["Armure","Armure","Armure"],armorbonus:["Armure supplémentaire","Armure suppl.","ArmSup"],armorpenrtng:["Score de pénétration d'armure","Pén. d'armure","Pén"],atkpwr:["Puissance d'attaque","PA","PA"],avgbuyout:["Prix d'achat immédiat moyen","Achat immédiat","HV"],avgmoney:["Argent contenu en moyenne","Argent","Argent"],block:["Valeur de blocage","Valeur de Blocage","VaBlc"],blockrtng:["Score de blocage","Bloc","Bloc"],buyprice:["Prix d'achat","Achat","Achat"],cooldown:["Temps de recharge (secondes)","Recharge","Rech"],critstrkrtng:["Score de coup critique","Crit","Crit"],defrtng:["Score de défense","Défense","Déf"],dmg:["Dégâts d'arme","Dégâts","Dégâts"],dmgmax1:["Dégâts maximaux","Dégâts max","Max"],dmgmin1:["Dégâts minimaux","Dégâts min","Min"],dodgertng:["Score d'esquive","Esqui","Esqui"],dps:["Dégâts par seconde","DPS","DPS"],dura:["Durabilité","Durabilité","Dura"],exprtng:["Score d'expertise","Expertise","Exp"],feratkpwr:["Puissance d'attaque en combat farouche","PA farouche","PAF"],firres:["Résistance au Feu","Rés. feu","RFeu"],firsplpwr:["Puissance des sorts de feu","Puiss. feu","PFeu"],frores:["Résistance au Givre","Rés. givre","RGiv"],frosplpwr:["Puissance des sorts de givre","Puiss. givre","PGiv"],hastertng:["Score de hâte","Hâte","Hâte"],health:["Vie","Vie","Vie"],healthrgn:["Régénération de vie","VP5","VP5"],hitrtng:["Score de toucher","Touch","Touch"],holres:["Résistance au Sacré","Rés. sacré","RSac"],holsplpwr:["Puissance des sorts sacrés","Puiss. sacrés","PSac"],"int":["Intelligence","Int","Int"],level:["Niveau","Niveau","Niv"],mana:["Mana","Mana","Mana"],manargn:["Régénération de mana","MP5","MP5"],masteryrtng:["Score de Maitrise","Maitrise","Maitrise"],mleatkpwr:["Puissance d'attaque en mêlée","PA en mêlée","PA"],mlecritstrkrtng:["Score de coup critique en mêlée","Crit en mêlée","Crit"],mledmgmax:["Dégâts maximaux en mêlée","Dégâts max mêlée","Max"],mledmgmin:["Dégâts minimaux en mêlée","Dégâts min mêlée","Min"],mledps:["DPS mêlée","DPS mêlée","DPS"],mlehastertng:["Score de hâte en mêlée","Hâte en mêlée","Hâte"],mlehitrtng:["Score de toucher en mêlée","Toucher en mêlée","Touch"],mlespeed:["Vitesse mêlée","Vitesse de corps à corps","Vitesse"],natres:["Résistance à la Nature","Rés. nature","RNat"],natsplpwr:["Puissance des sorts de la nature","Puiss. nature","PNat"],nsockets:["Nombre de châsses","Châsses","Châsse"],parryrtng:["Score de parade","Parade","Parade"],reqarenartng:["Requiert une cote d'arène personnelle et en équipe","Score requis","Score"],reqlevel:["Niveau requis","Niveau requis","Niveau"],reqskillrank:["Niveau de compétence requis","Compétence requise","Compétence"],resirtng:["Score de résilience","Résilience","Résil"],rgdatkpwr:["Puissance d'attaque à distance","PA à distance","PAD"],rgdcritstrkrtng:["Score de coup critique à distance","Crit à distance","Crit"],rgddmgmax:["Dégâts maximaux à distance","Dégâts max distance","Max"],rgddmgmin:["Dégâts minimaux à distance","Dégâts min distance","Min"],rgddps:["DPS à distance","DPS à distance","DPS"],rgdhastertng:["Score de hâte à distance","Hâte à distance","Hâte"],rgdhitrtng:["Score de toucher à distance","Toucher à distance","Touch"],rgdspeed:["Vitesse distance","Vitesse d'attaque à distance","Vitesse"],sellprice:["Prix de vente","Vente","Vente"],sepbasestats:"Caractéristiques",sepdefensivestats:"Caractéristiques défensives",sepgeneral:"Général",sepindividualstats:"Caractéristiques individuelles",sepmisc:"Divers",sepoffensivestats:"Caractéristiques offensives",sepresistances:"Résistances",sepweaponstats:"Caractéristiques d'armes",shares:["Résistance à l'Ombre","Rés. ombre","ROmb"],shasplpwr:["Puissance des sorts de l'ombre","Puiss. ombre","POmb"],speed:["Vitesse","Vitesse","Vitesse"],spi:["Esprit","Esp","Esp"],splcritstrkrtng:["Score de coup critique des sorts","Crit des sorts","Crit"],spldmg:["Dégâts infligés par les sorts","Dégâts sorts","Dégâts"],splheal:["Soins prodigués par les sorts","Soins","Soins"],splpwr:["Puiss. sorts","Puissance des sorts","PS"],splhastertng:["Score de hâte des sorts","Hâte des sorts","Hâte"],splhitrtng:["Score de toucher des sorts","Toucher des sorts","Touch"],splpen:["Pénétration des sorts","Pén. des sorts","Pén"],sta:["Endurance","End","End"],str:["Force","For","For"]}, + + fishow: "Créer un filtre", + fihide: "Masquer les options de filtrage", + + fiany: "N'importe quelle", + finone: "Aucun", + + firemove: "enlever", + ficlear: "effacer", + ficustom: "Personnalisé", + + fishowdetails: "Afficher les détails", + fihidedetails: "Cacher les détails", + fisavescale: "Sauver", + fideletescale: "Supprimer", + + message_fillsomecriteria: "Vous devez utiliser au moins un critère.", + + tooltip_jconlygems: "Si coché, les gemmes pour joailler,
\nvont aussi être utilisé pour déterminer les meilleurs
\ngemmes possible pour le score pondéré d'un objet.",fidropdowns:{yn:[[1,"Oui"], + tooltip_genericrating: "Equipé: Augmente votre $1 de $3 (0 @ L0).
", + [2,"Non"]],num:[[1,">"], [2,">="], [3,"="], diff --git a/template/js/locale_ruru.js b/template/js/locale_ruru.js index 2847d122..695930f9 100644 --- a/template/js/locale_ruru.js +++ b/template/js/locale_ruru.js @@ -1125,52 +1125,55 @@ var g_item_subsubclasses = { } } }; + var g_itemset_types = { - 1:"Ткань", - 2:"Кожа", - 3:"Кольчуга", - 4:"Латы", - 5:"Кинжал", - 6:"Кольцо", - 7:"Кистевое оружие", - 8:"Одноручный топор", - 9:"Одноручное дробящее", - 10:"Одноручный меч", - 11:"Аксессуар", - 12:"Амулет" + 1: "Ткань", + 2: "Кожа", + 3: "Кольчуга", + 4: "Латы", + 5: "Кинжал", + 6: "Кольцо", + 7: "Кистевое оружие", + 8: "Одноручный топор", + 9: "Одноручное дробящее", + 10: "Одноручный меч", + 11: "Аксессуар", + 12: "Амулет" }; + var g_itemset_notes = { - 1:"Комплект подземелий 1", - 2:"Комплект подземелий 2", - 14:"Комплект подземелий 3", - 3:"Рейдовый комплект Tier 1", - 4:"Рейдовый комплект Tier 2", - 5:"Рейдовый комплект Tier 3", - 12:"Рейдовый комплект Tier 4", - 13:"Рейдовый комплект Tier 5", - 18:"Рейдовый комплект Tier 6", - 23:"Рейдовый комплект Tier 7", - 25:"Рейдовый комплект Tier 8", - 27:"Рейдовый комплект Tier 9", - 29:"Рейдовый комплект Tier 10", - 6:"PvP Комплект для 60 уровня", - 7:"PvP Комплект для 60 уровня (старая версия)", - 8:"Эпический PvP Комплект для 60 уровня", - 16:"Редкий PvP Комплект для 70 уровня", - 21:"PvP Комплект для 70 уровня 2", - 17:"Комплект Арены 1 сезона", - 19:"Комплект Арены 2 сезона", - 20:"Комплект Арены 3 сезона", - 22:"Комплект Арены 4 сезона", - 24:"Комплект Арены 5 сезона", - 26:"Комплект Арены 6 сезона", - 28:"Комплект Арены 7 сезона", - 30:"Комплект Арены 8 сезона", - 15:"Комплект Низин Арати", - 9:"Комплект из Руин Ан'Киража", - 10:"Комплект из Храма Ан'Киража", - 11:"Комплект Зул'Гуруба" + 1: "Комплект подземелий 1", + 2: "Комплект подземелий 2", + 14: "Комплект подземелий 3", + 3: "Рейдовый комплект Tier 1", + 4: "Рейдовый комплект Tier 2", + 5: "Рейдовый комплект Tier 3", + 12: "Рейдовый комплект Tier 4", + 13: "Рейдовый комплект Tier 5", + 18: "Рейдовый комплект Tier 6", + 23: "Рейдовый комплект Tier 7", + 25: "Рейдовый комплект Tier 8", + 27: "Рейдовый комплект Tier 9", + 29: "Рейдовый комплект Tier 10", + 6: "PvP Комплект для 60 уровня", + 7: "PvP Комплект для 60 уровня (старая версия)", + 8: "Эпический PvP Комплект для 60 уровня", + 16: "Редкий PvP Комплект для 70 уровня", + 21: "PvP Комплект для 70 уровня 2", + 17: "Комплект Арены 1 сезона", + 19: "Комплект Арены 2 сезона", + 20: "Комплект Арены 3 сезона", + 22: "Комплект Арены 4 сезона", + 24: "Комплект Арены 5 сезона", + 26: "Комплект Арены 6 сезона", + 28: "Комплект Арены 7 сезона", + 30: "Комплект Арены 8 сезона", + 15: "Комплект Низин Арати", + 9: "Комплект из Руин Ан'Киража", + 10: "Комплект из Храма Ан'Киража", + 11: "Комплект Зул'Гуруба" }; + var g_npc_classifications = { 0:"Обычный", 1:"Элитный", @@ -2076,7 +2079,14 @@ var g_socket_names = { 14:"Бесцветное гнездо" }; var LANG = { - and:" и ",comma:", ",ellipsis:"…",dash:" – ",hyphen:" - ",colon:": ",qty:" ($1)", + and: " и ", + comma: ", ", + ellipsis: "…", + dash: " – ", + hyphen: " - ", + colon: ": ", + qty: " ($1)", + error: "Ошибка", date: "По дате", date_colon: "Дата: ", @@ -2119,9 +2129,10 @@ var LANG = { lvcomment_add:"Разместить комментарий",lvcomment_sort:"Сортировать: ",lvcomment_sortdate:"По дате",lvcomment_sortrating:"По рейтингу",lvcomment_patchfilter:"Обновление: ",lvcomment_by:"От ",lvcomment_patch:" (Обновление $1)",lvcomment_show:"Показать",lvcomment_hide:"Скрыть",lvcomment_rating:"Рейтинг: ",lvcomment_lastedit:"Последний раз редактировалось ",lvcomment_nedits:"всего редактировалось $1 раз(а)",lvcomment_edit:"Редактировать",lvcomment_delete:"Удалить",lvcomment_detach:"Открепить",lvcomment_reply:"Ответить",lvcomment_report:"Жалоба",lvcomment_reported:"Получена жалоба!",lvcomment_deleted:" (Удалено)",lvcomment_purged:" (Удалено)",lvdrop_outof:"из $1",lvitem_dd:" ($1$2)",lvitem_normal:" Норм.",lvitem_heroic:"О",lvitem_raid10:"10",lvitem_raid25:"25",lvitem_heroicitem:"Героический",lvitem_vendorin:"Торговец в ",lvitem_reqlevel:"Треб. ",lvnpc_alliance:"A",lvnpc_horde:"О",premium_title:"Спонсор Wowhead",lvquest_daily:"Ежедневный $1",lvquest_weekly:"Еженедельный $1",lvquest_pickone:"Возьмите: ",lvquest_alsoget:"Вы получите: ",lvquest_xp:"$1 очков опыта",lvquest_removed:"Удалено",lvzone_xman:"$1 игроков",lvzone_xvx:"$1x$2",lvpet_exotic:"Экзотический",lvpage_of:" из ",lvpage_first:" Начало",lvpage_previous:" Назад",lvpage_next:"Далее ",lvpage_last:"Конец ",lvscreenshot_submit:"Отправить изображение",lvscreenshot_from:"От ",lvscreenshot_hires:"Просмотр",lvscreenshot_hires2:" в высоком разрешении ($1x$2)",lvvideo_suggest:"Предложить видео",lvvideo_from:"От ",lvnodata:"Нет данных для отображения.",lvnodata2:"Не найдено ни одного совпадения, соответствующего запросу.",lvnodata_co1:"На этой странице нет комментариев.",lvnodata_co2:"Будьте первым, кто оставит комментарий на этой странице!",lvnodata_co3:"Войдите, чтобы оставить комментарий, или зарегистрируйтесь, если у вас еще нет учетной записи.",lvnodata_ss1:"К этой странице не добавлено изображений.",lvnodata_ss2:"Будьте первым, кто добавит изображение к этой странице!",lvnodata_ss3:"Войдите, чтобы разместить изображение, или зарегистрируйтесь, если у вас еще нет учетной записи.",lvnodata_vi1:"К этой странице не добавлено видео.",lvnodata_vi2:"Будьте первым, кто предложит видео к этой странице!",lvnodata_vi3:"Войдите, чтобы предложить видео, или зарегистрируйтесь, если у вас еще нет учетной записи.", - lvnote_tryfiltering: "Попробуйте отфильтровать результаты", + lvnote_tryfiltering: "Попробуйте отфильтровать результаты", lvnote_trynarrowing: "Попытайтесь сузить поиск", lvnote_upgradesfor: 'Предметы лучше, чем $3.', + lvnote_witherrors: "Некоторые фильтры в вашем поиске некорректны и были проигнорированы.", lvnote_itemsfound: "Найдено предметов: $1 (показано: $2)", lvnote_itemsetsfound: "Найдено комплектов: $1 (показано: $2)", @@ -2358,22 +2369,29 @@ var LANG = { tab_world: "Игровой мир", tab_zones: "Местности", - menu_browse:"Просмотр",mapper_tipzoom:"Щелкните по карте для увеличения",mapper_tippin:"Щелкните по карте для добавления или удаления маркеров",mapper_hidepins:"Скрыть маркеры",mapper_showpins:"Показать маркеры",mapper_floor:"Уровень...",mapper_relevantlocs:"Связанные местности",mapper_entiretyinzone:"Действия этого задания происходят в $$",mapper_happensin:"Часть этого задания происходит в $$.",mapper_objectives:{ox:"Цели этого задания находятся в $$.",sx:"Начало этого задания находится в $$.",ex:"Конец этого задания находится в $$.",sex:"Начало и конец задания находятся в $$.",osx:"Начало и цели этого задания находятся в $$.",oex:"Цели и конец этого задания находятся в $$.",osx_ey:"Начало и цели этого задания находятся в $$, а конец - в $$.",oex_sy:"Цели и конец этого задания находятся в $$, а начало - в $$.",sx_ey:"Начало этого задания находится в $$, а конец - в $$.",ox_sy:"Начало этого задания находится в $$, а цели - в $$.",ox_ey:"Цели этого задания находятся в $$, а конец - в $$.",ox_sey:"Начало и конец этого задания находятся в $$, а цели - в $$.",ox_sy_ez:"Начало этого задания находится в $$, цели в $$, а конец - в $$."},mapper_startsquest:"Начинает задание",mapper_endsquest:"Завершает задание",mapper_requiredquest:"Цель задания",mapper_sourcestart:"Начало задания:",mapper_sourceend:"Конец задания:",mapper_sourcereq:"Цель задания: ",mapper_clicktoview:"Нажмите для просмотра этого $1",showonmap:"Показать на карте...",som_nothing:"Ничего",som_questgivers:"НИП, дающие задания",som_viewnpc:"Нажмите для просмотра этого НИП",som_viewobj:"Нажмите для просмотра этого объекта",som_view:"Нажмите для просмотра...",som_startsquest:"Начинает следующие задания:",som_startsquestpl:"Начинает следующие задания:",som_legend:"Легенда: ",som_legend_alliance:"Альянс",som_legend_horde:"Орда",som_legend_neutral:"Равнодушие",som:{all:"Все",alliance:"Альянс",horde:"Орда",quest:"Квестодатели",alliancequests:"Квестодатели",hordequests:"Квестодатели",repair:"Ремонтники",rare:"Редкие НИПы",auctioneer:"Аукционеры",banker:"Банкиры",battlemaster:"Военачальники",innkeeper:"Смотрители таверн",guildmaster:"Регистраторы гильдий",stablemaster:"Смотрители стойл",flightmaster:"Распорядители полетов",trainer:"Учителя",vendor:"Торговцы",book:"Книги",herb:"Травы",vein:"Полезные ископаемые",spirithealer:"Целители душ"},markup_b:"Жирный",markup_i:"Наклонный",markup_u:"Подчеркнутый",markup_s:"Зачеркнутый",markup_small:"Мелкий",markup_url:"Ссылка",markup_quote:"Цитата",markup_code:"Код",markup_ul:"Список",markup_ol:"Маркированный список",markup_li:"Элемент списка",markup_img:"Изображение",markup_said:"сказал: ",markup_toc:"Содержание",ct_dialog_captcha:"Пожалуйста, введите код: ",ct_dialog_contactwowhead:"Связь с Wowhead",ct_dialog_description:"Описание",ct_dialog_desc_caption:"Пожалуйста, будьте как можно более точны.",ct_dialog_email:"Email: ",ct_dialog_email_caption:"Только если вы хотите получить ответ.",ct_dialog_optional:"Не обязательно",ct_dialog_reason:"Причина: ",ct_dialog_relatedurl:"Дополнительная ссылка: ",ct_dialog_currenturl:"Эта страница: ",ct_dialog_report:"Жалоба",ct_dialog_reportchar:"Жалоба на персонажа",ct_dialog_reportcomment:"Жалоба на комментарий от $1",ct_dialog_reportpost:"Жалоба на сообщение от $1",ct_dialog_reportscreen:"Жалоба на изображение от $1",ct_dialog_reportvideo:"Жалоба на видео от $1",ct_dialog_reporttopic:"Жалоба на тему от $1",ct_dialog_thanks:"Ваше сообщение было получено. Спасибо!",ct_dialog_thanks_user:"Ваше сообщение было получено, $1. Спасибо!",ct_dialog_error_captcha:"Введенный вами CAPTCHA код неверен. Пожалуйста, повторите попытку.",ct_dialog_error_desc:"Пожалуйста, оставьте исчерпывающее описание, но не слишком длинное.",ct_dialog_error_email:"Пожалуйста, введите корректный email адрес.",ct_dialog_error_emaillen:"Пожалуйста, введите адрес электронной почты не длиннее 100 символов.",ct_dialog_error_reason:"Пожалуйста, выберите причину связи с нами.",ct_dialog_error_relatedurl:"Пожалуйста, введите ссылку размером менее 250 символов.",ct_dialog_error_invalidurl:"Пожалуйста, введите корректную ссылку.",cn_fieldrequired:"Требуется $1.",cn_fieldinvalid:"Некорректно: $1",cn_confirm:"Проверьте всю введенную вами информацию и нажмите ОК.",cn_entrylogin:'Пожалуйста, авторизуйтесь чтобы принять участие в конкурсе, или создайте аккаунт если у вас его еще нет.',cn_entryerror:"Произошла ошибка. Пожалуйста, попробуйте еще раз.",cn_entrywhen:"Вы приняли участие в конкурсе $1.",cn_entrywhen2:"Вы уже приняли участие в конкурсе.",cn_entrysuccess:"Вы приняли участие в конкурсе. Удачи!",cn_entryended:"Это конкурс закончен.",cn_entryupcoming:"Этот конкурс еще не начался. Ожидайте объявления!",cn_entryregion:"Вы не можете принять участие в конкурсе в вашем регионе.",cn_mustbe18:"Вы должны быть не младше 18-ти лет чтобы принять участие в конкурсе.",cn_winnerslist:"Победители",cn_updated:"Обновлено ",ct_resp_error1:"Введенный вами CAPTCHA код неверен. Пожалуйста, повторите попытку.",ct_resp_error2:"Пожалуйста, оставьте исчерпывающее описание, но не слишком длинное.",ct_resp_error3:"Пожалуйста, выберите причину связи с нами.",ct_resp_error7:"Вы уже подали на это жалобу.",compose_mode:"Режим: ",compose_edit:"Редактировать",compose_preview:"Предварительный просмотр",compose_livepreview:"Предпросмотр",compose_save:"Сохранить",compose_cancel:"Отмена",compose_limit:"Не более $1 знаков",compose_limit2:"Не более $1 знаков или $2 строк",compose_remaining:"Осталось символов: $1",user_nodescription:"Пользователь еще не составил публичное описание.",user_nodescription2:"Вы еще не разместили описания.",user_composeone:"Разместите сейчас!",user_editdescription:"Редактировать",myaccount_passmatch:"Пароли совпадают",myaccount_passdontmatch:"Пароли не совпадают",myaccount_purged:"Сброшено",myaccount_purgefailed:"Ошибка сброса :(",myaccount_purgesuccess:"Закрытые объявления успешно сброшены!",types:{1:["НИП","НИП","НИП","НИП"], - 2:["Объект","объект","Объекты","объекты"], - 3:["Предмет","предмет","Предметы","предметы"], - 4:["Комплект","комплект","Комплекты","комплекты"], - 5:["Задание","задание","Задания","задание"], - 6:["Заклинание","заклинание","Заклинания","заклинания"], - 7:["Игровая зона","Игровая зона","Местности","местности"], - 8:["Фракция","фракция","Фракции","фракции"], - 9:["Питомец","питомец","Питомцы","питомцы"], - 10:["Достижение","достижение","Достижения","достижения"], - 11:["Звание","звание","Звания","звания"], - 12:["Событие","игровое событие","Игровые события","игровые события"], - 13:["Класс","класс","Классы","классы"], - 14:["Раса","раса","Расы","расы"], - 15:["Уровень навыка","навык","Умения","навыки"], - 16:["Статистика","характеристика","Характеристики","характеристики"]},timeunitssg:["год","месяц","неделя","день","час","минута","секунда"],timeunitspl:["годы","месяцы","недели","дн.","часы","мин","секунды"],timeunitsab:["г.","мес.","нед.","дн","ч.","мин","сек."],presets:{pve:"PvE",pvp:"PvP",afflic:"Колдовство",arcane:"Тайная магия",arms:"Оружие (УВС)",assas:"Ликвидация",balance:"Баланс (УВС)",beast:"Повелитель зверей",blooddps:"Кровь (УВС)",bloodtank:"Кровь (Танк)",combat:"Бой",demo:"Демонология",destro:"Разрушение",disc:"Послушание (Исцеление)",elem:"Стихии (УВС)",enhance:"Совершенствование (УВС)",feraldps:"Сила зверя (УВС)",feraltank:"Сила зверя (Танк)",fire:"Огонь",frost:"Лед",frostdps:"Лед (УВС)",frosttank:"Лед (Танк)",fury:"Неистовство (УВС)",generic:"Общий",holy:"Свет (Исцеление)",marks:"Стрельба",prot:"Защита (Танк)",resto:"Исцеление (Исцеление)",retrib:"Воздаяние (УВС)",shadow:"Темная магия (УВС)",subtle:"Скрытность",surv:"Выживание",unholydps:"Нечестивость (УВС)"}, + menu_browse:"Просмотр",mapper_tipzoom:"Щелкните по карте для увеличения",mapper_tippin:"Щелкните по карте для добавления или удаления маркеров",mapper_hidepins:"Скрыть маркеры",mapper_showpins:"Показать маркеры",mapper_floor:"Уровень...",mapper_relevantlocs:"Связанные местности",mapper_entiretyinzone:"Действия этого задания происходят в $$",mapper_happensin:"Часть этого задания происходит в $$.",mapper_objectives:{ox:"Цели этого задания находятся в $$.",sx:"Начало этого задания находится в $$.",ex:"Конец этого задания находится в $$.",sex:"Начало и конец задания находятся в $$.",osx:"Начало и цели этого задания находятся в $$.",oex:"Цели и конец этого задания находятся в $$.",osx_ey:"Начало и цели этого задания находятся в $$, а конец - в $$.",oex_sy:"Цели и конец этого задания находятся в $$, а начало - в $$.",sx_ey:"Начало этого задания находится в $$, а конец - в $$.",ox_sy:"Начало этого задания находится в $$, а цели - в $$.",ox_ey:"Цели этого задания находятся в $$, а конец - в $$.",ox_sey:"Начало и конец этого задания находятся в $$, а цели - в $$.",ox_sy_ez:"Начало этого задания находится в $$, цели в $$, а конец - в $$."},mapper_startsquest:"Начинает задание",mapper_endsquest:"Завершает задание",mapper_requiredquest:"Цель задания",mapper_sourcestart:"Начало задания:",mapper_sourceend:"Конец задания:",mapper_sourcereq:"Цель задания: ",mapper_clicktoview:"Нажмите для просмотра этого $1",showonmap:"Показать на карте...",som_nothing:"Ничего",som_questgivers:"НИП, дающие задания",som_viewnpc:"Нажмите для просмотра этого НИП",som_viewobj:"Нажмите для просмотра этого объекта",som_view:"Нажмите для просмотра...",som_startsquest:"Начинает следующие задания:",som_startsquestpl:"Начинает следующие задания:",som_legend:"Легенда: ",som_legend_alliance:"Альянс",som_legend_horde:"Орда",som_legend_neutral:"Равнодушие",som:{all:"Все",alliance:"Альянс",horde:"Орда",quest:"Квестодатели",alliancequests:"Квестодатели",hordequests:"Квестодатели",repair:"Ремонтники",rare:"Редкие НИПы",auctioneer:"Аукционеры",banker:"Банкиры",battlemaster:"Военачальники",innkeeper:"Смотрители таверн",guildmaster:"Регистраторы гильдий",stablemaster:"Смотрители стойл",flightmaster:"Распорядители полетов",trainer:"Учителя",vendor:"Торговцы",book:"Книги",herb:"Травы",vein:"Полезные ископаемые",spirithealer:"Целители душ"},markup_b:"Жирный",markup_i:"Наклонный",markup_u:"Подчеркнутый",markup_s:"Зачеркнутый",markup_small:"Мелкий",markup_url:"Ссылка",markup_quote:"Цитата",markup_code:"Код",markup_ul:"Список",markup_ol:"Маркированный список",markup_li:"Элемент списка",markup_img:"Изображение",markup_said:"сказал: ",markup_toc:"Содержание",ct_dialog_captcha:"Пожалуйста, введите код: ",ct_dialog_contactwowhead:"Связь с Wowhead",ct_dialog_description:"Описание",ct_dialog_desc_caption:"Пожалуйста, будьте как можно более точны.",ct_dialog_email:"Email: ",ct_dialog_email_caption:"Только если вы хотите получить ответ.",ct_dialog_optional:"Не обязательно",ct_dialog_reason:"Причина: ",ct_dialog_relatedurl:"Дополнительная ссылка: ",ct_dialog_currenturl:"Эта страница: ",ct_dialog_report:"Жалоба",ct_dialog_reportchar:"Жалоба на персонажа",ct_dialog_reportcomment:"Жалоба на комментарий от $1",ct_dialog_reportpost:"Жалоба на сообщение от $1",ct_dialog_reportscreen:"Жалоба на изображение от $1",ct_dialog_reportvideo:"Жалоба на видео от $1",ct_dialog_reporttopic:"Жалоба на тему от $1",ct_dialog_thanks:"Ваше сообщение было получено. Спасибо!",ct_dialog_thanks_user:"Ваше сообщение было получено, $1. Спасибо!",ct_dialog_error_captcha:"Введенный вами CAPTCHA код неверен. Пожалуйста, повторите попытку.",ct_dialog_error_desc:"Пожалуйста, оставьте исчерпывающее описание, но не слишком длинное.",ct_dialog_error_email:"Пожалуйста, введите корректный email адрес.",ct_dialog_error_emaillen:"Пожалуйста, введите адрес электронной почты не длиннее 100 символов.",ct_dialog_error_reason:"Пожалуйста, выберите причину связи с нами.",ct_dialog_error_relatedurl:"Пожалуйста, введите ссылку размером менее 250 символов.",ct_dialog_error_invalidurl:"Пожалуйста, введите корректную ссылку.",cn_fieldrequired:"Требуется $1.",cn_fieldinvalid:"Некорректно: $1",cn_confirm:"Проверьте всю введенную вами информацию и нажмите ОК.",cn_entrylogin:'Пожалуйста, авторизуйтесь чтобы принять участие в конкурсе, или создайте аккаунт если у вас его еще нет.',cn_entryerror:"Произошла ошибка. Пожалуйста, попробуйте еще раз.",cn_entrywhen:"Вы приняли участие в конкурсе $1.",cn_entrywhen2:"Вы уже приняли участие в конкурсе.",cn_entrysuccess:"Вы приняли участие в конкурсе. Удачи!",cn_entryended:"Это конкурс закончен.",cn_entryupcoming:"Этот конкурс еще не начался. Ожидайте объявления!",cn_entryregion:"Вы не можете принять участие в конкурсе в вашем регионе.",cn_mustbe18:"Вы должны быть не младше 18-ти лет чтобы принять участие в конкурсе.",cn_winnerslist:"Победители",cn_updated:"Обновлено ",ct_resp_error1:"Введенный вами CAPTCHA код неверен. Пожалуйста, повторите попытку.",ct_resp_error2:"Пожалуйста, оставьте исчерпывающее описание, но не слишком длинное.",ct_resp_error3:"Пожалуйста, выберите причину связи с нами.",ct_resp_error7:"Вы уже подали на это жалобу.",compose_mode:"Режим: ",compose_edit:"Редактировать",compose_preview:"Предварительный просмотр",compose_livepreview:"Предпросмотр",compose_save:"Сохранить",compose_cancel:"Отмена",compose_limit:"Не более $1 знаков",compose_limit2:"Не более $1 знаков или $2 строк",compose_remaining:"Осталось символов: $1",user_nodescription:"Пользователь еще не составил публичное описание.",user_nodescription2:"Вы еще не разместили описания.",user_composeone:"Разместите сейчас!",user_editdescription:"Редактировать",myaccount_passmatch:"Пароли совпадают",myaccount_passdontmatch:"Пароли не совпадают",myaccount_purged:"Сброшено",myaccount_purgefailed:"Ошибка сброса :(",myaccount_purgesuccess:"Закрытые объявления успешно сброшены!", + + types: { + 1: ["НИП", "НИП" , "НИП", "НИП"], + 2: ["Объект", "объект", "Объекты", "объекты"], + 3: ["Предмет", "предмет", "Предметы", "предметы"], + 4: ["Комплект", "комплект", "Комплекты", "комплекты"], + 5: ["Задание", "задание", "Задания", "задание"], + 6: ["Заклинание", "заклинание", "Заклинания", "заклинания"], + 7: ["Игровая зона", "Игровая зона", "Местности", "местности"], + 8: ["Фракция", "фракция", "Фракции", "фракции"], + 9: ["Питомец", "питомец", "Питомцы", "питомцы"], + 10: ["Достижение", "достижение", "Достижения", "достижения"], + 11: ["Звание", "звание", "Звания", "звания"], + 12: ["Событие", "игровое событие", "Игровые события", "игровые события"], + 13: ["Класс", "класс", "Классы", "классы"], + 14: ["Раса", "раса", "Расы", "расы"], + 15: ["Уровень навыка", "навык", "Умения", "навыки"], + 16: ["Статистика", "характеристика", "Характеристики", "характеристики"], + 17: ["Валюта", "валюта", "Валюта", "валюта"] + }, + + timeunitssg:["год","месяц","неделя","день","час","минута","секунда"],timeunitspl:["годы","месяцы","недели","дн.","часы","мин","секунды"],timeunitsab:["г.","мес.","нед.","дн","ч.","мин","сек."],presets:{pve:"PvE",pvp:"PvP",afflic:"Колдовство",arcane:"Тайная магия",arms:"Оружие (УВС)",assas:"Ликвидация",balance:"Баланс (УВС)",beast:"Повелитель зверей",blooddps:"Кровь (УВС)",bloodtank:"Кровь (Танк)",combat:"Бой",demo:"Демонология",destro:"Разрушение",disc:"Послушание (Исцеление)",elem:"Стихии (УВС)",enhance:"Совершенствование (УВС)",feraldps:"Сила зверя (УВС)",feraltank:"Сила зверя (Танк)",fire:"Огонь",frost:"Лед",frostdps:"Лед (УВС)",frosttank:"Лед (Танк)",fury:"Неистовство (УВС)",generic:"Общий",holy:"Свет (Исцеление)",marks:"Стрельба",prot:"Защита (Танк)",resto:"Исцеление (Исцеление)",retrib:"Воздаяние (УВС)",shadow:"Темная магия (УВС)",subtle:"Скрытность",surv:"Выживание",unholydps:"Нечестивость (УВС)"}, traits:{ agi:["Ловкость","Ловк","Ловк"], arcres:["Сопротивление тайной магии","к сопр. тайной магии","Сопр"], @@ -2458,7 +2476,29 @@ var LANG = { splhitrtng:["Рейтинг меткости заклинаний","Метк. заклинаний","Метк"], splpen:["Проникающая способность заклинания","к проник. способн.","ПБ"], sta:["Выносливость","Выно","Выно"], - str:["Сила","Сила","Сила"]},fishow:"Применить фильтр",fihide:"Убрать фильтр",fiany:"Все",finone:"Нет",firemove:"Удалить",ficlear:"Очистить",fishowdetails:"показать детали",fihidedetails:"скрыть детали",message_fillsomecriteria:"Укажите критерии поиска",tooltip_jconlygems:"Использовать особые драгоценные камни ювелиров
\nдля определения лучших возможных самоцветов.", + str:["Сила","Сила","Сила"] + }, + + fishow: "Применить фильтр", + fihide: "Убрать фильтр", + + fiany: "Все", + finone: "Нет", + + firemove: "Удалить", + ficlear: "Очистить", + ficustom: "Свой", + + fishowdetails: "Показать подробности", + fihidedetails: "Скрыть подробности", + fisavescale: "Сохранить", + fideletescale: "Удалить", + + message_fillsomecriteria: "Укажите критерии поиска", + + tooltip_jconlygems:"Использовать особые драгоценные камни ювелиров
\nдля определения лучших возможных самоцветов.", + tooltip_genericrating: "На персонаже: Увеличивает $1 на $3 (0 @ L0).
", + fidropdowns:{yn:[[1,"Да"], [2,"Нет"]],num:[[1,">"], [2,">="],