mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
zones-listview: working draft
This commit is contained in:
164
includes/class.zone.php
Normal file
164
includes/class.zone.php
Normal file
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
/*
|
||||
areatable: discarded Ids
|
||||
unused: 276, 296, 1579, 2280, 3459, 3817, 208, 4076
|
||||
*/
|
||||
|
||||
class ZoneList extends BaseType
|
||||
{
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_zones z WHERE [cond] ORDER BY Id ASC';
|
||||
protected $matchQuery = 'SELECT COUNT(1) FROM ?_zones WHERE [cond]';
|
||||
|
||||
// public function __construct($data)
|
||||
// {
|
||||
// parent::__construct($data);
|
||||
|
||||
// // post processing
|
||||
// while ($this->iterate())
|
||||
// {
|
||||
// // preparse sources
|
||||
// if (!empty($this->curTpl['source']))
|
||||
// {
|
||||
// $sources = explode(' ', $this->curTpl['source']);
|
||||
// foreach ($sources as $src)
|
||||
// {
|
||||
// $src = explode(':', $src);
|
||||
// $this->sources[$this->id][$src[0]][] = $src[1];
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// $this->reset(); // push first element back for instant use
|
||||
// }
|
||||
|
||||
public function getListviewData()
|
||||
{
|
||||
$data = [];
|
||||
/*
|
||||
LFG_TYPE_NONE = 0, // Internal use only
|
||||
LFG_TYPE_DUNGEON = 1,
|
||||
LFG_TYPE_RAID = 2,
|
||||
LFG_TYPE_QUEST = 3,
|
||||
LFG_TYPE_ZONE = 4,
|
||||
LFG_TYPE_HEROIC = 5,
|
||||
LFG_TYPE_RANDOM = 6
|
||||
|
||||
CREATE TABLE `aowow_zones` (
|
||||
`id` mediumint(8) UNSIGNED NOT NULL COMMENT 'Zone Id' ,
|
||||
`mapId` mediumint(8) UNSIGNED NOT NULL COMMENT 'Map Identifier' ,
|
||||
`category` smallint(6) NOT NULL ,
|
||||
`flags` int(11) NOT NULL ,
|
||||
`faction` tinyint(2) NOT NULL ,
|
||||
`expansion` tinyint(2) NOT NULL ,
|
||||
`type` tinyint(2) UNSIGNED NOT NULL ,
|
||||
`maxPlayer` smallint(6) NOT NULL ,
|
||||
`levelReq` smallint(6) NOT NULL ,
|
||||
`levelReqLFG` smallint(6) NOT NULL ,
|
||||
`levelHeroic` smallint(6) NOT NULL ,
|
||||
`levelMax` smallint(6) NOT NULL ,
|
||||
`levelMin` smallint(6) NOT NULL ,
|
||||
`name_loc0` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
|
||||
`name_loc2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
|
||||
`name_loc3` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
|
||||
`name_loc6` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
|
||||
`name_loc8` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
|
||||
|
||||
var g_zone_categories = {
|
||||
0: "Eastern Kingdoms", // areaTable.map == 0 AND
|
||||
1: "Kalimdor", // areaTable.map == 1 AND
|
||||
2: "Dungeons", // map.areaType == 1
|
||||
3: "Raids", // map.areaType == 2
|
||||
6: "Battlegrounds", // map.areaType == 3
|
||||
8: "Outland", // areaTable.map == 530 AND
|
||||
9: "Arenas" // map.areaType == 4
|
||||
10: "Northrend", // areaTable.map == 571 AND
|
||||
};
|
||||
|
||||
var g_zone_instancetypes = {
|
||||
1: "Transit", // [manual]
|
||||
2: "Dungeon",
|
||||
3: "Raid", // Classic
|
||||
4: "Battleground", // map.isBattleground
|
||||
5: "Dungeon", // Heroic
|
||||
6: "Arena", // map.areaType == 4
|
||||
7: "Raid", // 10-25
|
||||
8: "Raid" // 10-25 Heroic
|
||||
};
|
||||
|
||||
var g_zone_territories = {
|
||||
0: "Alliance", // areaTable.factionGroupMask == 2
|
||||
1: "Horde", // areaTable.factionGroupMask == 4
|
||||
2: "Contested", // areaTable.factionGroupMask == 6
|
||||
3: "Sanctuary", // areaTable.flags & AREA_FLAG_SANCTUARY
|
||||
4: "PvP", // map.areaType IN [3, 4]
|
||||
5: "World PvP" // areaTable.flags & AREA_FLAG_WINTERGRASP
|
||||
};
|
||||
|
||||
visibleCols: ['heroiclevel', 'players']
|
||||
|
||||
"id":5004, // areaTable.Id
|
||||
"category":2, // s.o
|
||||
"expansion":3, // lfgDungeons.expansion || map.expansion
|
||||
"territory":2, // s.o.
|
||||
"instance":5, // s.o.
|
||||
"nplayers":5, // map.maxPlayers
|
||||
"reqlevel":77, // access_requirement.level_min
|
||||
"heroicLevel":85, // access_requirement.level_min
|
||||
"lfgReqLevel":80, // lfgDungeons.targetLevel
|
||||
"maxlevel":82, // lfgDungeons.levelMin
|
||||
"minlevel":80, // lfgDungeons.levelMax
|
||||
"name":"Abyssal Maw: Throne of the Tides", // areaTable.name_X
|
||||
*/
|
||||
while ($this->iterate())
|
||||
{
|
||||
$data[$this->id] = array(
|
||||
'id' => $this->id,
|
||||
'category' => $this->curTpl['category'],
|
||||
'territory' => $this->curTpl['faction'],
|
||||
'minlevel' => $this->curTpl['levelMin'],
|
||||
'maxlevel' => $this->curTpl['levelMax'],
|
||||
'name' => $this->getField('name', true)
|
||||
);
|
||||
|
||||
if ($_ = $this->curTpl['expansion'])
|
||||
$data[$this->id]['expansion'] = $_;
|
||||
|
||||
if ($_ = $this->curTpl['type'])
|
||||
$data[$this->id]['instance'] = $_;
|
||||
|
||||
if ($_ = $this->curTpl['maxPlayer'])
|
||||
$data[$this->id]['nplayers'] = $_;
|
||||
|
||||
if ($_ = $this->curTpl['levelReq'])
|
||||
$data[$this->id]['reqlevel'] = $_;
|
||||
|
||||
if ($_ = $this->curTpl['levelReqLFG'])
|
||||
$data[$this->id]['lfgReqLevel'] = $_;
|
||||
|
||||
if ($_ = $this->curTpl['levelHeroic'])
|
||||
$data[$this->id]['heroicLevel'] = $_;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function addGlobalsToJscript(&$refs)
|
||||
{
|
||||
if (!isset($refs['gZones']))
|
||||
$refs['gZones'] = [];
|
||||
|
||||
while ($this->iterate())
|
||||
$refs['gZones'][$this->id]['name'] = Util::jsEscape($this->getField('name', true));
|
||||
}
|
||||
|
||||
public function addRewardsToJScript(&$ref) { }
|
||||
public function renderTooltip() { }
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -115,6 +115,9 @@ $lang = array(
|
||||
'spell' => "Zauber",
|
||||
'spells' => "Zauber",
|
||||
'valueDelim' => " - ", // " bis "
|
||||
'zone' => "Zone",
|
||||
'zones' => "Gebiete",
|
||||
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Stärke", "Beweglichkeit", "Ausdauer", "Intelligenz", "Willenskraft"),
|
||||
'languages' => array(
|
||||
1 => "Orcisch", 2 => "Darnassisch", 3 => "Taurisch", 6 => "Zwergisch", 7 => "Gemeinsprache", 8 => "Dämonisch", 9 => "Titanisch", 10 => "Thalassisch",
|
||||
@@ -249,8 +252,12 @@ $lang = array(
|
||||
'CosmicMap' => "Kosmische Karte",
|
||||
),
|
||||
'zone' => array(
|
||||
'zone' => "Zone",
|
||||
'zonePartOf' => "Diese Zone ist Teil der Zone",
|
||||
// 'zone' => "Zone",
|
||||
// 'zonePartOf' => "Diese Zone ist Teil der Zone",
|
||||
'cat' => array(
|
||||
"Östliche Königreiche", "Kalimdor", "Dungeons", "Schlachtzüge", "Unbenutzt", null,
|
||||
"Schlachtfelder", null, "Scherbenwelt", "Arenen", "Nordend"
|
||||
)
|
||||
),
|
||||
'title' => array(
|
||||
'cat' => array(
|
||||
|
||||
@@ -110,6 +110,9 @@ $lang = array(
|
||||
'spell' => "spell",
|
||||
'spells' => "Spells",
|
||||
'valueDelim' => " to ",
|
||||
'zone' => "zone",
|
||||
'zones' => "Zones",
|
||||
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Strength", "Agility", "Stamina", "Intellect", "Spirit"),
|
||||
'languages' => array(
|
||||
1 => "Orcish", 2 => "Darnassian", 3 => "Taurahe", 6 => "Dwarvish", 7 => "Common", 8 => "Demonic", 9 => "Titan", 10 => "Thalassian",
|
||||
@@ -240,8 +243,12 @@ $lang = array(
|
||||
'CosmicMap' => "Cosmic Map",
|
||||
),
|
||||
'zone' => array(
|
||||
'zone' => "Zone",
|
||||
'zonePartOf' => "This zone is part of",
|
||||
// 'zone' => "Zone",
|
||||
// 'zonePartOf' => "This zone is part of",
|
||||
'cat' => array(
|
||||
"Eastern Kingdoms", "Kalimdor", "Dungeons", "Raids", "Unused", null,
|
||||
"Battlegrounds", null, "Outland", "Arenas", "Northrend"
|
||||
)
|
||||
),
|
||||
'title' => array(
|
||||
'cat' => array(
|
||||
|
||||
@@ -107,6 +107,9 @@ $lang = array(
|
||||
'spell' => "hechizo",
|
||||
'spells' => "Hechizos",
|
||||
'valueDelim' => " - ",
|
||||
'zone' => "zona",
|
||||
'zones' => "Zonas",
|
||||
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Fuerza", "Agilidad", "Aguante", "Intelecto", "Espíritu"),
|
||||
'languages' => array(
|
||||
1 => "Orco", 2 => "Darnassiano", 3 => "Taurahe", 6 => "Enánico", 7 => "Lengua común", 8 => "Demoníaco", 9 => "Titánico", 10 => "Thalassiano",
|
||||
@@ -201,8 +204,12 @@ $lang = array(
|
||||
'CosmicMap' => "Mapa cósmico",
|
||||
),
|
||||
'zone' => array(
|
||||
'zone' => "Zone",
|
||||
'zonePartOf' => "Cette zone fait partie de la zone",
|
||||
// 'zone' => "Zone",
|
||||
// 'zonePartOf' => "Cette zone fait partie de la zone",
|
||||
'cat' => array(
|
||||
"Reinos del Este", "Kalimdor", "Mazmorras", "Bandas", "No las uso", null,
|
||||
"Campos de batalla", null, "Terrallende", "Arenas", "Rasganorte"
|
||||
)
|
||||
),
|
||||
'title' => array(
|
||||
'cat' => array(
|
||||
|
||||
@@ -107,6 +107,9 @@ $lang = array(
|
||||
'spell' => "sort",
|
||||
'spells' => "Sorts",
|
||||
'valueDelim' => " - ",
|
||||
'zone' => "zone",
|
||||
'zones' => "Zones",
|
||||
'expansions' => array("Classique", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Force", "Agilité", "Endurance", "Intelligence", "Esprit"),
|
||||
'languages' => array(
|
||||
1 => "Orc", 2 => "Darnassien", 3 => "Taurahe", 6 => "Nain", 7 => "Commun", 8 => "Démoniaque", 9 => "Titan", 10 => "Thalassien",
|
||||
@@ -201,8 +204,12 @@ $lang = array(
|
||||
'CosmicMap' => "Carte cosmique",
|
||||
),
|
||||
'zone' => array(
|
||||
'zone' => "Zone",
|
||||
'zonePartOf' => "Cette zone fait partie de la zone",
|
||||
// 'zone' => "Zone",
|
||||
// 'zonePartOf' => "Cette zone fait partie de la zone",
|
||||
'cat' => array(
|
||||
"Royaumes de l'est", "Kalimdor", "Donjons", "Raids", "Inutilisées", null,
|
||||
"Champs de bataille", null, "Outreterre", "Arènes", "Norfendre"
|
||||
)
|
||||
),
|
||||
'title' => array(
|
||||
'cat' => array(
|
||||
|
||||
@@ -107,6 +107,9 @@ $lang = array(
|
||||
'spell' => "заклинание",
|
||||
'spells' => "Заклинания",
|
||||
'valueDelim' => " - ",
|
||||
'zone' => "игровая зона",
|
||||
'zones' => "Местности",
|
||||
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"),
|
||||
'languages' => array(
|
||||
1 => "орочий", 2 => "дарнасский", 3 => "таурахэ", 6 => "дворфийский", 7 => "всеобщий", 8 => "язык демонов", 9 => "язык титанов", 10 => "талассийский",
|
||||
@@ -201,8 +204,12 @@ $lang = array(
|
||||
'CosmicMap' => "Звёздная карта",
|
||||
),
|
||||
'zone' => array(
|
||||
'zone' => "Игровая зона",
|
||||
'zonePartOf' => "Эта игровая локация является частью локации",
|
||||
// 'zone' => "Игровая зона",
|
||||
// 'zonePartOf' => "Эта игровая локация является частью локации",
|
||||
'cat' => array(
|
||||
"Восточные королевства", "Калимдор", "Подземелья", "Рейды", "Неактивно", null,
|
||||
"Поля боя", null, "Запределье", "Арены", "Нордскол"
|
||||
)
|
||||
),
|
||||
'title' => array(
|
||||
'cat' => array(
|
||||
|
||||
96
pages/zones.php
Normal file
96
pages/zones.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
$cats = Util::extractURLParams($pageParam);
|
||||
$path = [0, 6];
|
||||
$title = [Util::ucFirst(Lang::$game['zones'])];
|
||||
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_ZONE, -1, $cats[0] ? implode('.', $cats) : -1, User::$localeId]);
|
||||
$validCats = array(
|
||||
0 => true,
|
||||
1 => true,
|
||||
2 => [0, 1, 2],
|
||||
3 => [0, 1, 2],
|
||||
6 => true,
|
||||
8 => true,
|
||||
9 => true,
|
||||
10 => true
|
||||
);
|
||||
|
||||
if (!Util::isValidPage($validCats, $cats))
|
||||
$smarty->error();
|
||||
|
||||
if (isset($cats[0]))
|
||||
{
|
||||
if (isset($cats[1]))
|
||||
array_unshift($title, Lang::$game['expansions'][$cats[1]]);
|
||||
|
||||
$path = array_merge($path, $cats);
|
||||
array_unshift($title, Lang::$zone['cat'][$cats[0]]);
|
||||
}
|
||||
|
||||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$conditions = [];
|
||||
$visibleCols = [];
|
||||
$hiddenCols = [];
|
||||
|
||||
if (isset($cats[0]))
|
||||
$conditions[] = ['z.category', $cats[0]];
|
||||
|
||||
if (isset($cats[1]) && in_array($cats[0], [2, 3]))
|
||||
$conditions[] = ['z.expansion', $cats[1]];
|
||||
|
||||
$zones = new ZoneList($conditions);
|
||||
|
||||
$somData = "{flightmaster: [{ coords: [[59.3,48.0]], level: 0, name: 'Thrallmar, Hellfire Peninsula', type: 1, id: 16587, reacthorde: 1, reactalliance: -1, paths: [[50.9,55.0],[49.1,72.1],[68.5,51.5],[60.9,61.3],[44.1,65.8]] },{ coords: [[58.9,55.8]], level: 0, name: 'Honor Hold, Hellfire Peninsula', type: 1, id: 16822, reacthorde: -1, reactalliance: 1, paths: [[50.1,48.3],[52.2,75.7],[68.6,52.8],[65.9,47.6],[44.1,65.8]] },{ coords: [[50.1,48.3]], level: 0, name: 'Temple of Telhamat, Hellfire Peninsula', type: 1, id: 18785, reacthorde: -1, reactalliance: 1, paths: [[39.7,48.2],[68.6,52.8]] },{ coords: [[50.9,55.0]], level: 0, name: 'Falcon Watch, Hellfire Peninsula', type: 1, id: 18942, reacthorde: 1, reactalliance: -1, paths: [[29.7,48.1],[33.6,60.8],[44.1,65.8],[68.5,51.5],[44.6,49.2]] },{ coords: [[39.7,48.2]], level: 0, name: 'Telredor, Zangarmarsh', type: 1, id: 18788, reacthorde: -1, reactalliance: 1, paths: [[32.6,73.4],[44.1,65.8],[35.5,31.2],[32.0,41.7],[42.7,34.0]] },{ coords: [[29.7,48.1]], level: 0, name: 'Zabra\'jin, Zangarmarsh', type: 1, id: 18791, reacthorde: 1, reactalliance: -1, paths: [[33.6,60.8],[44.1,65.8],[39.9,29.0],[44.6,49.2]] },{ coords: [[32.6,73.4]], level: 0, name: 'Telaar, Nagrand', type: 1, id: 18789, reacthorde: -1, reactalliance: 1, paths: [[52.2,75.7],[44.1,65.8]] },{ coords: [[33.6,60.8]], level: 0, name: 'Garadar, Nagrand', type: 1, id: 18808, reacthorde: 1, reactalliance: -1, paths: [[44.1,65.8]] },{ coords: [[52.2,75.7]], level: 0, name: 'Allerian Stronghold, Terokkar Forest', type: 1, id: 18809, reacthorde: -1, reactalliance: 1, paths: [[62.1,84.2],[44.1,65.8]] },{ coords: [[53.8,23.5]], level: 0, name: 'Area 52, Netherstorm', type: 1, id: 18938, reacthorde: 1, reactalliance: 1, paths: [[63.8,24.4],[57.5,14.3],[42.9,24.4]] },{ coords: [[59.8,75.9]], level: 0, name: 'Shadowmoon Village, Shadowmoon Valley', type: 1, id: 19317, reacthorde: 1, reactalliance: -1, paths: [[49.1,72.1],[70.1,76.3],[68.0,85.0]] },{ coords: [[62.1,84.2]], level: 0, name: 'Wildhammer Stronghold, Shadowmoon Valley', type: 1, id: 18939, reacthorde: -1, reactalliance: 1, paths: [[70.1,76.3],[68.0,85.0]] },{ coords: [[35.5,31.2]], level: 0, name: 'Sylvanaar, Blade\'s Edge Mountains', type: 1, id: 18937, reacthorde: -1, reactalliance: 1, paths: [[53.8,23.5],[57.5,14.3],[42.7,34.0],[42.9,24.4],[32.0,41.7]] },{ coords: [[39.9,29.0]], level: 0, name: 'Thunderlord Stronghold, Blade\'s Edge Mountains', type: 1, id: 18953, reacthorde: 1, reactalliance: -1, paths: [[53.8,23.5],[57.5,14.3],[44.6,49.2],[42.9,24.4],[47.5,32.6]] },{ coords: [[49.1,72.1]], level: 0, name: 'Stonebreaker Hold, Terokkar Forest', type: 1, id: 18807, reacthorde: 1, reactalliance: -1, paths: [[44.1,65.8]] },{ coords: [[44.1,65.8]], level: 0, name: 'Shattrath, Terokkar Forest', type: 1, id: 18940, reacthorde: 1, reactalliance: 1 },{ coords: [[68.6,52.8]], level: 0, name: 'Hellfire Peninsula, The Dark Portal', type: 1, id: 18931, reacthorde: -1, reactalliance: 1, paths: [[65.9,47.6]] },{ coords: [[68.5,51.5]], level: 0, name: 'Hellfire Peninsula, The Dark Portal', type: 1, id: 18930, reacthorde: 1, reactalliance: -1 },{ coords: [[57.5,14.3]], level: 0, name: 'The Stormspire, Netherstorm', type: 1, id: 19583, reacthorde: 1, reactalliance: 1, paths: [[63.8,24.4]] },{ coords: [[70.1,76.3]], level: 0, name: 'Altar of Sha\'tar, Shadowmoon Valley', type: 1, id: 19581, reacthorde: 1, reactalliance: 1 },{ coords: [[60.9,61.3]], level: 0, name: 'Spinebreaker Ridge, Hellfire Peninsula', type: 1, id: 19558, reacthorde: 1, reactalliance: -1 },{ coords: [[65.9,47.6]], level: 0, name: 'Shatter Point, Hellfire Peninsula', type: 1, id: 20234, reacthorde: -1, reactalliance: 1 },{ coords: [[63.8,24.4]], level: 0, name: 'Cosmowrench, Netherstorm', type: 1, id: 20515, reacthorde: 1, reactalliance: 1 },{ coords: [[44.6,49.2]], level: 0, name: 'Swamprat Post, Zangarmarsh', type: 1, id: 20762, reacthorde: 1, reactalliance: -1, paths: [[44.1,65.8],[47.5,32.6]] },{ coords: [[42.7,34.0]], level: 0, name: 'Toshley\'s Station, Blade\'s Edge Mountains', type: 1, id: 21107, reacthorde: -1, reactalliance: 1, paths: [[53.8,23.5],[42.9,24.4]] },{ coords: [[68.0,85.0]], level: 0, name: 'Sanctum of the Stars, Shadowmoon Valley', type: 1, id: 21766, reacthorde: 1, reactalliance: 1 },{ coords: [[42.9,24.4]], level: 0, name: 'Evergrove, Blade\'s Edge Mountains', type: 1, id: 22216, reacthorde: 1, reactalliance: 1 },{ coords: [[47.5,32.6]], level: 0, name: 'Mok\'Nathal Village, Blade\'s Edge Mountains', type: 1, id: 22455, reacthorde: 1, reactalliance: -1, paths: [[53.8,23.5]] },{ coords: [[32.0,41.7]], level: 0, name: 'Orebor Harborage, Zangarmarsh', type: 1, id: 22485, reacthorde: -1, reactalliance: 1 }]}";
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'zone',
|
||||
'data' => $zones->getListviewData(),
|
||||
'som' => $somData,
|
||||
'map' => array(
|
||||
'zone' => -2,
|
||||
'zoom' => 1,
|
||||
'overlay' => 'true',
|
||||
'zoomable' => 'false',
|
||||
),
|
||||
'params' => []
|
||||
);
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
||||
/*
|
||||
filters.js
|
||||
Mapper.js
|
||||
ShowOnMap.js
|
||||
|
||||
new ShowOnMap();
|
||||
|
||||
*/
|
||||
|
||||
$page = array(
|
||||
'tab' => 0, // for g_initHeader($tab)
|
||||
'title' => implode(' - ', $title),
|
||||
'path' => json_encode($path, JSON_NUMERIC_CHECK),
|
||||
'reqJS' => array(
|
||||
array('path' => 'template/js/Mapper.js', 'conditional' => false),
|
||||
array('path' => 'template/js/ShowOnMap.js', 'conditional' => false),
|
||||
),
|
||||
'reqCSS' => array(
|
||||
array('path' => 'template/css/Mapper.css', 'condition' => false),
|
||||
array('path' => 'template/css/Mapper_ie6.css', 'condition' => 'lte IE 6'),
|
||||
),
|
||||
);
|
||||
|
||||
$smarty->updatePageVars($page);
|
||||
$smarty->assign('lang', Lang::$main);
|
||||
$smarty->assign('mysql', DB::Aowow()->getStatistics());
|
||||
$smarty->assign('lvData', $pageData);
|
||||
$smarty->display('generic-no-filter.tpl');
|
||||
|
||||
?>
|
||||
67
setup/aowow_zones.sql
Normal file
67
setup/aowow_zones.sql
Normal file
File diff suppressed because one or more lines are too long
36
template/bricks/listviews/zone.tpl
Normal file
36
template/bricks/listviews/zone.tpl
Normal file
@@ -0,0 +1,36 @@
|
||||
{strip}
|
||||
new Listview({ldelim}
|
||||
template:'zone',
|
||||
{if !isset($params.id)}id:'zones',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_zones,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
{else if $v}
|
||||
{$k}:'{$v}',
|
||||
{/if}
|
||||
{/foreach}
|
||||
data:[
|
||||
{foreach name=i from=$data item=curr}
|
||||
{ldelim}
|
||||
id:{$curr.id},
|
||||
category:{$curr.category},
|
||||
territory:{$curr.territory},
|
||||
minlevel:{$curr.minlevel},
|
||||
maxlevel:{$curr.maxlevel},
|
||||
name:'{$curr.name|escape:"quotes"}'
|
||||
{if isset($curr.expansion)},expansion:{$curr.expansion}{/if}
|
||||
{if isset($curr.instance)},instance:{$curr.instance}{/if}
|
||||
{if isset($curr.nplayers)},nplayers:{$curr.nplayers}{/if}
|
||||
{if isset($curr.reqlevel)},reqlevel:{$curr.reqlevel}{/if}
|
||||
{if isset($curr.lfgReqLevel)},lfgReqLevel:{$curr.lfgReqLevel}{/if}
|
||||
{if isset($curr.heroicLevel)},heroicLevel:{$curr.heroicLevel}{/if}
|
||||
{* {if isset($curr.percent)},percent:{$curr.percent}{/if} what was that originaly for..? *}
|
||||
{rdelim}
|
||||
{if $smarty.foreach.i.last}{else},{/if}
|
||||
{/foreach}
|
||||
]
|
||||
{rdelim});
|
||||
{/strip}
|
||||
|
||||
11
template/bricks/mapper.tpl
Normal file
11
template/bricks/mapper.tpl
Normal file
@@ -0,0 +1,11 @@
|
||||
<div id="mapper" style="width: 778px; margin: 0 auto">
|
||||
{if isset($som)}<div id="som-generic"></div>{/if}
|
||||
<div id="mapper-generic"></div>
|
||||
<div class="pad clear"></div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
var g_pageInfo = {ldelim}id:-2{rdelim}; {* what on gods green earth..? *}
|
||||
var myMapper = new Mapper({ldelim}{foreach from=$map key=k item=v}{$k}: {$v}, {/foreach}parent: 'mapper-generic'{rdelim});
|
||||
{if isset($som)}new ShowOnMap({$som});{/if}
|
||||
//]]></script>
|
||||
@@ -1,59 +1,193 @@
|
||||
/*
|
||||
Mapper.css version 294
|
||||
*/
|
||||
.mapper {
|
||||
position:relative;
|
||||
margin-top:10px;
|
||||
border:3px solid #404040;
|
||||
background-color:black;
|
||||
position: relative;
|
||||
margin-top: 10px;
|
||||
border: 3px solid #404040;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
.mapper .pin {
|
||||
position:absolute;
|
||||
width:1px;
|
||||
height:1px;
|
||||
font-size:1px;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
font-size: 1px;
|
||||
z-index: 5; /* Put pins on top of lines */
|
||||
}
|
||||
|
||||
.mapper .pin a {
|
||||
position:relative;
|
||||
width:11px;
|
||||
height:11px;
|
||||
left:-5px;
|
||||
top:-5px;
|
||||
background:url(../images/map-pin-yellow.png) no-repeat;
|
||||
display:block;
|
||||
position: relative;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
left: -5px;
|
||||
top: -5px;
|
||||
background: url(../images/Mapper/pin-yellow.png) no-repeat;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.mapper .pin-1 a {
|
||||
background-image:url(../images/map-pin-green.png);
|
||||
.mapper .pin-start a {
|
||||
background-image: url(../images/Mapper/quest-start.png);
|
||||
width: 9px;
|
||||
height: 17px;
|
||||
left: -4px;
|
||||
top: -8px;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.mapper .pin-2 a {
|
||||
background-image:url(../images/map-pin-red.png);
|
||||
.mapper .pin-end a {
|
||||
background-image: url(../images/Mapper/quest-end.png);
|
||||
width: 12px;
|
||||
height: 18px;
|
||||
left: -6px;
|
||||
top: -9px;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.mapper .pin-3 a {
|
||||
background-image:url(../images/map-pin-blue.png);
|
||||
.mapper .pin-startend a {
|
||||
background-image: url(../images/Mapper/quest-startend.png);
|
||||
width: 19px;
|
||||
height: 18px;
|
||||
left: -9px;
|
||||
top: -9px;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.mapper .pin-4 a {
|
||||
background-image:url(../images/map-pin-purple.png);
|
||||
.mapper-pin, .mapper-pin-1, .mapper-pin-2, .mapper-pin-3, .mapper-pin-4 {
|
||||
padding-left: 13px;
|
||||
background-image: url(../images/Mapper/pin-yellow.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 50%;
|
||||
}
|
||||
|
||||
.mapper-pin-1, .mapper .pin-1 a {
|
||||
background-image: url(../images/Mapper/pin-green.png);
|
||||
}
|
||||
|
||||
.mapper-pin-2, .mapper .pin-2 a {
|
||||
background-image: url(../images/Mapper/pin-red.png);
|
||||
}
|
||||
|
||||
.mapper-pin-3, .mapper .pin-3 a {
|
||||
background-image: url(../images/Mapper/pin-blue.png);
|
||||
}
|
||||
|
||||
.mapper-pin-4, .mapper .pin-4 a {
|
||||
background-image: url(../images/Mapper/pin-purple.png);
|
||||
}
|
||||
|
||||
.mapper .glow {
|
||||
margin:0 2px;
|
||||
font-size:12px;
|
||||
font-weight:bold;
|
||||
color:white;
|
||||
cursor:default;
|
||||
white-space:nowrap;
|
||||
margin: 0 2px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
cursor: default;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.mapper .glow a {
|
||||
text-decoration:none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.mapper .glow a:hover {
|
||||
text-decoration:underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.mapper-som-button {
|
||||
margin: 0 !important;
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.mapper-legend {
|
||||
float: left;
|
||||
display: block;
|
||||
background-color: #141414;
|
||||
border: 1px solid #101010;
|
||||
font-size: 11px;
|
||||
margin: -4px 0 0 15px;
|
||||
white-space: nowrap;
|
||||
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.mapper-legend-container {
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.mapper-legend-pin {
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.mapper .line var {
|
||||
background: #C8B94C;
|
||||
}
|
||||
|
||||
.mapper .line-1 var {
|
||||
background: #73B85B;
|
||||
}
|
||||
|
||||
.mapper .line-2 var {
|
||||
background: #D7563C;
|
||||
}
|
||||
|
||||
.mapper .line-3 var {
|
||||
background: #47ACCD;
|
||||
}
|
||||
|
||||
.mapper .line-4 var {
|
||||
background: #C844D0;
|
||||
}
|
||||
|
||||
html.ie678 .line var {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.line {
|
||||
position: absolute;
|
||||
display: block;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.line var {
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
margin: -2px 0 0 2px;
|
||||
display: block;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #181818;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
-o-transform-origin: 0 0;
|
||||
-moz-transform-origin: 0 0;
|
||||
-webkit-transform-origin: 0 0;
|
||||
-o-box-shadow: 0px 0px 3px black;
|
||||
/*-moz-box-shadow: 0px 0px 3px black;*/
|
||||
-webkit-box-shadow: 0px 0px 3px black;
|
||||
}
|
||||
|
||||
.line.flipped {
|
||||
-o-transform: scaleY(-1);
|
||||
-moz-transform: scaleY(-1);
|
||||
-webkit-transform: scaleY(-1);
|
||||
-ms-filter: "FlipV";
|
||||
filter: FlipV;
|
||||
}
|
||||
|
||||
.mapper .line var {
|
||||
background: #C8B94C;
|
||||
}
|
||||
|
||||
.mapper .line-1 var {
|
||||
background: #73B85B;
|
||||
}
|
||||
|
||||
.mapper .line-2 var {
|
||||
background: #D7563C;
|
||||
}
|
||||
|
||||
.mapper .line-3 var {
|
||||
background: #47ACCD;
|
||||
}
|
||||
|
||||
.mapper .line-4 var {
|
||||
background: #C844D0;
|
||||
}
|
||||
@@ -10,6 +10,9 @@
|
||||
{include file='bricks/announcement.tpl' an=$item}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{if isset($lvData.map)}
|
||||
{include file='bricks/mapper.tpl' map=$lvData.map som=$lvData.som}
|
||||
{/if}
|
||||
|
||||
<script type="text/javascript">
|
||||
g_initPath({$page.path});
|
||||
@@ -18,10 +21,12 @@
|
||||
<div id="tabs-generic"></div>
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
var myTabs = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});
|
||||
{if !empty($lvData.calendar)}var myTabs = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});{/if}
|
||||
{include file="bricks/listviews/$file.tpl" data=$lvData.data params=$lvData.params}
|
||||
{if !empty($lvData.calendar)}{include file='bricks/listviews/calendar.tpl' data=$lvData.data params=$lvData.params}{/if}
|
||||
{if !empty($lvData.calendar)}
|
||||
{include file='bricks/listviews/calendar.tpl' data=$lvData.data params=$lvData.params}
|
||||
myTabs.flush();
|
||||
{/if}
|
||||
</script>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
@@ -431,7 +431,7 @@ Mapper.prototype = {
|
||||
var maxIdx = [false, -1];
|
||||
for(var i = 0; i < zoneList.length; ++i)
|
||||
{
|
||||
if(i > 0) span.append((i == zoneList.length-1 ? LANG.and : LANG.comma));
|
||||
if(i > 0) ae(span, (i == zoneList.length-1 ? LANG.and : LANG.comma));
|
||||
var entry = null;
|
||||
if(self.objectives[zoneList[i][0]].mappable > 0)
|
||||
{
|
||||
@@ -458,19 +458,19 @@ Mapper.prototype = {
|
||||
if(types.start && types.end)
|
||||
{
|
||||
entry.className += ' icontiny';
|
||||
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/tiny/quest_startend.gif)';
|
||||
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/quest_startend.gif)';
|
||||
entry.style += ' padding-left', '20px';
|
||||
}
|
||||
else if(types.start)
|
||||
{
|
||||
entry.className += ' icontiny';
|
||||
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/tiny/quest_start.gif)';
|
||||
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/quest_start.gif)';
|
||||
entry.style += ' padding-left', '14px';
|
||||
}
|
||||
else if(types.end)
|
||||
{
|
||||
entry.className += ' icontiny';
|
||||
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/tiny/quest_end.gif)';
|
||||
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/quest_end.gif)';
|
||||
entry.style += ' padding-left', '16px';
|
||||
}
|
||||
}
|
||||
@@ -979,12 +979,18 @@ Mapper.prototype = {
|
||||
// $('.line.' + Mapper.sizes[this.zoom][2], this.floorPins[level]).show();
|
||||
if (this.floorPins[level]) {
|
||||
var lines = this.floorPins[level].getElementsByClassName('line');
|
||||
for (i in lines)
|
||||
lines[i].display = 'none';
|
||||
for (i in lines) {
|
||||
if (i < lines.length) {
|
||||
lines[i].style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
lines = this.floorPins[level].getElementsByClassName('line ' + Mapper.sizes[this.zoom][2]);
|
||||
for (i in lines)
|
||||
lines[i].display = 'block';
|
||||
for (i in lines) {
|
||||
if (i < lines.length) {
|
||||
lines[i].style.display = 'block';
|
||||
}
|
||||
}
|
||||
}
|
||||
// end of replacement
|
||||
|
||||
|
||||
827
template/js/ShowOnMap.js
Normal file
827
template/js/ShowOnMap.js
Normal file
@@ -0,0 +1,827 @@
|
||||
|
||||
var ShowOnMap = function(data, mapper) {
|
||||
var self = this;
|
||||
self.data = data;
|
||||
|
||||
if (mapper == null) {
|
||||
mapper = myMapper;
|
||||
}
|
||||
|
||||
self.mapper = mapper;
|
||||
|
||||
self._legend = null;
|
||||
self._legendLabel = null;
|
||||
self._legendContents = null;
|
||||
self._legendHorde = null;
|
||||
self._legendAlliance = null;
|
||||
self._menu = [];
|
||||
|
||||
self.construct();
|
||||
};
|
||||
|
||||
ShowOnMap.prototype.onExpand = function() {
|
||||
this.expanded = true;
|
||||
location.replace(this.pound + '.map');
|
||||
};
|
||||
|
||||
ShowOnMap.prototype.onCollapse = function() {
|
||||
this.expanded = false;
|
||||
var hash = g_getHash();
|
||||
if (hash.indexOf('#show') == 0 && hash.indexOf('.map') > 0) {
|
||||
this.pound = hash.substr(0, hash.indexOf('.map'));
|
||||
location.replace(this.pound);
|
||||
}
|
||||
}
|
||||
|
||||
ShowOnMap.prototype.construct = function() {
|
||||
if (!this.data) {
|
||||
return;
|
||||
}
|
||||
|
||||
var d = ge('som-generic');
|
||||
|
||||
var cmpFunc = function(a, b) {
|
||||
return strcmp(a[1], b[1]);
|
||||
};
|
||||
|
||||
var allianceMenu = [];
|
||||
var hordeMenu = [];
|
||||
for (var i in this.data) {
|
||||
if (this.data[i].length === undefined) {
|
||||
var submenu = [];
|
||||
var allCoords = [];
|
||||
var allLegend = {};
|
||||
var group = this.data[i];
|
||||
for (var p in group) {
|
||||
var hasPaths = false;
|
||||
for (var n = 0, len = group[p].length; n < len; ++n) {
|
||||
if (group[p][n].paths) {
|
||||
hasPaths = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var i2 = g_urlize(p);
|
||||
if (group[p][0].name_enus !== undefined) {
|
||||
i2 = g_urlize(group[p][0].name_enus);
|
||||
}
|
||||
|
||||
var coords = {};
|
||||
var legend = {};
|
||||
var entry = [i2];
|
||||
//pin.list.key = i;
|
||||
var combined = ShowOnMap.combinePins(group[p], false, hasPaths);
|
||||
var pins = combined[0];
|
||||
var nPins = combined[1];
|
||||
var nCoords = 0;
|
||||
for (var n = 0; n < pins.length; ++n) {
|
||||
var pin = pins[n];
|
||||
var tooltip = ShowOnMap.buildTooltip(pin.list);
|
||||
var url = tooltip[2];
|
||||
var m = null;
|
||||
if (url == 'javascript:;') {
|
||||
m = tooltip[3];
|
||||
}
|
||||
|
||||
if (pin.list.length == 1) {
|
||||
url = (g_types[pin.list[0].type] && pin.list[0].id ? '?' + g_types[pin.list[0].type] + '=' + pin.list[0].id : '');
|
||||
}
|
||||
if (i == 'rare' || i == 'herb' || i == 'vein') {
|
||||
tooltip[1] = submenu.length + 1;
|
||||
}
|
||||
if (coords[pin.level] == undefined) {
|
||||
coords[pin.level] = [];
|
||||
}
|
||||
coords[pin.level].push([
|
||||
pin.coord[0],
|
||||
pin.coord[1],
|
||||
{
|
||||
url: url,
|
||||
label: tooltip[0],
|
||||
menu: m,
|
||||
type: tooltip[1],
|
||||
lines: pin.list[0].paths
|
||||
}
|
||||
]);
|
||||
nCoords++;
|
||||
}
|
||||
if (nCoords > 0) {
|
||||
var url = (g_types[group[p][0].type] && group[p][0].id ? '?' + g_types[group[p][0].type] + '=' + group[p][0].id : '');
|
||||
legend[submenu.length+1] = [p, url];
|
||||
entry.push(p + sprintf(LANG.qty, nPins));
|
||||
entry.push(this.showStuff.bind(this, coords, [i, i2], legend));
|
||||
submenu.push(entry);
|
||||
for (var l in coords) {
|
||||
if (allCoords[l]) {
|
||||
allCoords[l] = allCoords[l].concat(coords[l]);
|
||||
}
|
||||
else {
|
||||
allCoords[l] = coords[l];
|
||||
}
|
||||
}
|
||||
allLegend[submenu.length] = [p, url];
|
||||
}
|
||||
}
|
||||
if (submenu.length > 0) {
|
||||
submenu.sort(cmpFunc);
|
||||
var entry = [i, LANG.som[i], this.showStuff.bind(this, allCoords, [i], allLegend), submenu];
|
||||
this._menu.push(entry);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.data[i].length == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var hasPaths = false;
|
||||
for (var n = 0, len = this.data[i].length; n < len; ++n) {
|
||||
if (this.data[i][n].paths) {
|
||||
hasPaths = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var entry = [i];
|
||||
var coords = {};
|
||||
var hordeCoords = {}, hordeDailyCoords = {};
|
||||
var allianceCoords = {}, allianceDailyCoords = {};
|
||||
var legend = {};
|
||||
var hordeLegend = {};
|
||||
var allianceLegend = {};
|
||||
var combined = ShowOnMap.combinePins(this.data[i], false, hasPaths);
|
||||
var nPins = combined[1];
|
||||
var nCoords = 0, nHordeCoords = 0, nHordeDailyCoords = 0, nAllianceCoords = 0, nAllianceDailyCoords = 0;
|
||||
|
||||
var processPins = function(id, pins) {
|
||||
for (var n = 0; n < pins.length; ++n) {
|
||||
var pin = pins[n];
|
||||
var idx = id;
|
||||
pin.list.key = i;
|
||||
var tooltip = ShowOnMap.buildTooltip(pin.list, (id == 'hordedailyquests' || id == 'alliancedailyquests') ? true : false);
|
||||
var url = tooltip[2];
|
||||
var m = null;
|
||||
if (url == 'javascript:;') {
|
||||
m = tooltip[3];
|
||||
}
|
||||
|
||||
if (pin.list.length == 1) {
|
||||
url = (g_types[pin.list[0].type] && pin.list[0].id ? '?' + g_types[pin.list[0].type] + '=' + pin.list[0].id : '');
|
||||
}
|
||||
var coord = [
|
||||
pin.coord[0],
|
||||
pin.coord[1],
|
||||
{
|
||||
url: url,
|
||||
label: tooltip[0],
|
||||
menu: m,
|
||||
type: tooltip[1],
|
||||
lines: pin.list[0].paths
|
||||
}
|
||||
];
|
||||
if (coords[pin.level] == undefined) {
|
||||
coords[pin.level] = [];
|
||||
hordeCoords[pin.level] = [];
|
||||
hordeDailyCoords[pin.level] = [];
|
||||
allianceCoords[pin.level] = [];
|
||||
allianceDailyCoords[pin.level] = [];
|
||||
}
|
||||
|
||||
if (idx != 'rare' && idx != 'spirithealer' && idx != 'book' && idx != 'forge' && idx != 'anvil' && idx != 'hordequests' && idx != 'alliancequests' && idx != 'hordedailyquests' && idx != 'alliancedailyquests' && idx != 'boss') {
|
||||
if (tooltip[1] == 2 || tooltip[1] == 0) {
|
||||
if (tooltip[1] == 2) {
|
||||
hordeLegend[2] = [LANG.som_legend_horde, null];
|
||||
}
|
||||
else {
|
||||
hordeLegend[0] = [LANG.som_legend_neutral, null];
|
||||
}
|
||||
hordeCoords[pin.level].push(coord);
|
||||
nHordeCoords++;
|
||||
}
|
||||
if (tooltip[1] == 3 || tooltip[1] == 0) {
|
||||
if (tooltip[1] == 3) {
|
||||
allianceLegend[3] = [LANG.som_legend_alliance, null];
|
||||
}
|
||||
else {
|
||||
allianceLegend[0] = [LANG.som_legend_neutral, null];
|
||||
}
|
||||
allianceCoords[pin.level].push(coord);
|
||||
nAllianceCoords++;
|
||||
}
|
||||
}
|
||||
else if (idx == 'hordequests') {
|
||||
idx = 'quest';
|
||||
if (tooltip[1] == 2) {
|
||||
hordeLegend[2] = [LANG.som_legend_horde, null];
|
||||
}
|
||||
else {
|
||||
hordeLegend[0] = [LANG.som_legend_neutral, null];
|
||||
}
|
||||
hordeCoords[pin.level].push(coord);
|
||||
nHordeCoords++;
|
||||
}
|
||||
else if (idx == 'hordedailyquests') {
|
||||
idx = 'daily';
|
||||
if (tooltip[1] == 2) {
|
||||
hordeLegend[2] = [LANG.som_legend_horde, null];
|
||||
}
|
||||
else {
|
||||
hordeLegend[0] = [LANG.som_legend_neutral, null];
|
||||
}
|
||||
hordeDailyCoords[pin.level].push(coord);
|
||||
nHordeDailyCoords++;
|
||||
}
|
||||
else if (idx == 'alliancequests') {
|
||||
idx = 'quest';
|
||||
if (tooltip[1] == 3) {
|
||||
allianceLegend[3] = [LANG.som_legend_alliance, null];
|
||||
}
|
||||
else {
|
||||
allianceLegend[0] = [LANG.som_legend_neutral, null];
|
||||
}
|
||||
allianceCoords[pin.level].push(coord);
|
||||
nAllianceCoords++;
|
||||
}
|
||||
else if (idx == 'alliancedailyquests') {
|
||||
idx = 'daily';
|
||||
if (tooltip[1] == 3) {
|
||||
allianceLegend[3] = [LANG.som_legend_alliance, null];
|
||||
}
|
||||
else {
|
||||
allianceLegend[0] = [LANG.som_legend_neutral, null];
|
||||
}
|
||||
allianceDailyCoords[pin.level].push(coord);
|
||||
nAllianceDailyCoords++;
|
||||
}
|
||||
else {
|
||||
coords[pin.level].push(coord);
|
||||
nCoords++;
|
||||
}
|
||||
}
|
||||
return idx;
|
||||
};
|
||||
var idx = processPins(i, combined[0]);
|
||||
if (i == 'alliancequests') {
|
||||
var allianceDailyPins = ShowOnMap.combinePins(this.data[i], true);
|
||||
if (allianceDailyPins[1] > 0) {
|
||||
processPins('alliancedailyquests', allianceDailyPins[0]);
|
||||
}
|
||||
}
|
||||
else if (i == 'hordequests') {
|
||||
var hordeDailyPins = ShowOnMap.combinePins(this.data[i], true);
|
||||
if (hordeDailyPins[1] > 0) {
|
||||
processPins('hordedailyquests', hordeDailyPins[0]);
|
||||
}
|
||||
}
|
||||
|
||||
if (idx == 'rare') {
|
||||
nPins = this.data[idx].length;
|
||||
}
|
||||
else if (idx == 'forge' || idx == 'anvil') {
|
||||
nPins = combined[0].length;
|
||||
}
|
||||
|
||||
if (nCoords > 0) {
|
||||
var entry = [idx, LANG.som[idx] + sprintf(LANG.qty, nPins), this.showStuff.bind(this, coords, [idx], legend)];
|
||||
this._menu.push(entry);
|
||||
}
|
||||
if (nHordeCoords > 0) {
|
||||
var entry = [idx, LANG.som[idx] + sprintf(LANG.qty, nHordeCoords), this.showStuff.bind(this, hordeCoords, ['horde', idx], hordeLegend), null];
|
||||
if (idx == 'quest') {
|
||||
entry.push({ tinyIcon: 'quest_start' });
|
||||
|
||||
if (nHordeDailyCoords > 0) {
|
||||
hordeMenu.push(entry);
|
||||
entry = ['daily', LANG.som.daily + sprintf(LANG.qty, nHordeDailyCoords), this.showStuff.bind(this, hordeDailyCoords, ['horde', 'daily'], hordeLegend), null, { tinyIcon: 'quest_start_daily' }];
|
||||
}
|
||||
}
|
||||
hordeMenu.push(entry);
|
||||
}
|
||||
if (nAllianceCoords > 0) {
|
||||
var entry = [idx, LANG.som[idx] + sprintf(LANG.qty, nAllianceCoords), this.showStuff.bind(this, allianceCoords, ['alliance', idx], allianceLegend), null];
|
||||
if (idx == 'quest') {
|
||||
entry.push({ tinyIcon: 'quest_start' });
|
||||
|
||||
if (nAllianceDailyCoords > 0) {
|
||||
allianceMenu.push(entry);
|
||||
entry = ['daily', LANG.som.daily + sprintf(LANG.qty, nAllianceDailyCoords), this.showStuff.bind(this, allianceDailyCoords, ['alliance', 'daily'], allianceLegend), null, { tinyIcon: 'quest_start_daily' }];
|
||||
}
|
||||
}
|
||||
allianceMenu.push(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
allianceMenu.sort(cmpFunc);
|
||||
hordeMenu.sort(cmpFunc);
|
||||
this._menu.sort(cmpFunc);
|
||||
|
||||
if (hordeMenu.length > 0) {
|
||||
this._menu.unshift(['horde', LANG.som.horde, '', hordeMenu, { tinyIcon: 'side_horde' }]);
|
||||
}
|
||||
if (allianceMenu.length > 0) {
|
||||
this._menu.unshift(['alliance', LANG.som.alliance, '', allianceMenu, { tinyIcon: 'side_alliance' }]);
|
||||
}
|
||||
|
||||
var nothing = [-1, LANG.som_nothing, this.showStuff.bind(this, [], [-1], {})];
|
||||
nothing.checked = true;
|
||||
this._menu.push(nothing);
|
||||
|
||||
var redButton = RedButton.create(LANG.showonmap, true);
|
||||
redButton.className += ' mapper-som-button';
|
||||
// Menu.add(redButton, this._menu, { showAtCursor: true });
|
||||
redButton.menu = this._menu;
|
||||
redButton.onclick = function() {
|
||||
(Menu.show.bind(this))();
|
||||
Tooltip.hide();
|
||||
this.onmouseout = function() {
|
||||
Menu.hide();
|
||||
this.onmouseout = Tooltip.hide();
|
||||
}.bind(this);
|
||||
sp();
|
||||
return false;
|
||||
}.bind(redButton);
|
||||
// replace end
|
||||
ae(d, redButton);
|
||||
|
||||
var clear;
|
||||
if (!this._legend) {
|
||||
this._legend = ce('div');
|
||||
this._legend.className = 'mapper-legend';
|
||||
this._legend.style.display = 'none';
|
||||
|
||||
var d2 = ce('div');
|
||||
d2.className = 'mapper-legend-container';
|
||||
|
||||
this._legendLabel = ce('b')
|
||||
ae(this._legendLabel, ct(LANG.som_legend));
|
||||
ae(d2, this._legendLabel);
|
||||
|
||||
this._legendContents = ce('div');
|
||||
this._legendContents.style.cssFloat = 'right';
|
||||
ae(d2, this._legendContents);
|
||||
|
||||
var clear = ce('div');
|
||||
clear.style.clear = 'right';
|
||||
ae(d2, clear);
|
||||
|
||||
ae(this._legend, d2);
|
||||
}
|
||||
ae(d, this._legend);
|
||||
|
||||
var clear = ce('div');
|
||||
clear.style.clear = 'left';
|
||||
ae(d, clear);
|
||||
|
||||
var components = [];
|
||||
var hash = g_getHash();
|
||||
if (hash.indexOf('#show:') != -1) {
|
||||
components = hash.split('.');
|
||||
}
|
||||
else if (this.data.instance) {
|
||||
components.push('#show:boss');
|
||||
}
|
||||
|
||||
if (components.length > 0) {
|
||||
if (components.length == 2 && components[1] == 'map') {
|
||||
this.expanded = true;
|
||||
this.mapper.toggleZoom();
|
||||
}
|
||||
|
||||
var path = components[0].split(':');
|
||||
if (path.length < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
var menu = this._menu;
|
||||
for (var n = 1; n < path.length; ++n) {
|
||||
var maxToRecurse = path.length - 1;
|
||||
for (var p = 0; p < menu.length; ++p) {
|
||||
if (menu[p][0] == path[n]) {
|
||||
if (menu[p][3] && n < maxToRecurse) {
|
||||
menu = menu[p][3];
|
||||
}
|
||||
else {
|
||||
menu = menu[p];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (menu && menu[2] && menu[2].constructor && menu[2].call && menu[2].apply) { // sarjuuk: check if menu[2] is function
|
||||
menu[2]();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ShowOnMap.prototype.setLegend = function(info) {
|
||||
ee(this._legendContents);
|
||||
|
||||
var div = ce('div');
|
||||
var count = 0;
|
||||
for (var i in info) {
|
||||
var sp = ce('span');
|
||||
sp.className = 'mapper-pin mapper-pin-' + i + ' mapper-legend-pin';
|
||||
|
||||
if (info[i][1]) {
|
||||
var a = ce('a');
|
||||
a.href = info[i][1];
|
||||
ae(a, ct(info[i][0]));
|
||||
ae(sp, a);
|
||||
}
|
||||
else {
|
||||
sp.innerText = info[i][0];
|
||||
}
|
||||
|
||||
ae(div, sp);
|
||||
if ((++count) % 4 == 0) {
|
||||
ae(div, ce('br'));
|
||||
}
|
||||
}
|
||||
|
||||
ae(this._legendContents, div);
|
||||
};
|
||||
|
||||
ShowOnMap.prototype.showStuff = function(coords, path, legendInfo) {
|
||||
this.mapper.update({zone: g_pageInfo.id, coords: coords, preservelevel: true});
|
||||
this.setLegend(legendInfo);
|
||||
this.checkMenu(path);
|
||||
|
||||
if (path.length == 1 && path[0] == -1) {
|
||||
this.pound = '';
|
||||
location.replace('#.');
|
||||
return;
|
||||
}
|
||||
|
||||
this.pound = '#show:' + path.join(':');
|
||||
if (this.pound != '#show:boss') {
|
||||
location.replace(this.pound + (this.expanded ? '.map' : ''));
|
||||
}
|
||||
};
|
||||
|
||||
ShowOnMap.prototype.clearChecks = function(menu) {
|
||||
for (var i = 0; i < menu.length; ++i) {
|
||||
menu[i].checked = false;
|
||||
if (menu[i][3] && menu[i][3].length > 0) {
|
||||
this.clearChecks(menu[i][3]);
|
||||
}
|
||||
}
|
||||
this._legend.style.display = 'none';
|
||||
};
|
||||
|
||||
ShowOnMap.prototype.checkMenu = function(path) {
|
||||
this.clearChecks(this._menu);
|
||||
if (path[0] != -1) {
|
||||
this._legend.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this._legend.style.display = 'none';
|
||||
}
|
||||
|
||||
var menu = this._menu;
|
||||
var label = [];
|
||||
for (var i = 0; i < path.length; ++i) {
|
||||
for (var j = 0; j < menu.length; ++j) {
|
||||
if (menu[j][0] == path[i]) {
|
||||
menu[j].checked = true;
|
||||
label.push([menu[j][0], menu[j][1]]);
|
||||
menu = menu[j][3];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var maxLabel = label.length - 1;
|
||||
var str = '';
|
||||
var singlePinOptions = { 'rare': true, 'herb': true, 'vein': true };
|
||||
for (var i = 0; i < label.length; ++i) {
|
||||
if (i > 0 && singlePinOptions[label[0][0]]) {
|
||||
/* unsure, kept for reference, replacement below
|
||||
var span = $('span', this._legendContents);
|
||||
span.removeClass('mapper-legend-pin');
|
||||
span.append($('<b/>', { text: ' ' + label[i][1].substr(label[i][1].lastIndexOf('(')) }));
|
||||
*/
|
||||
var span = gE(this._legendContents[0], 'span')[0];
|
||||
span.className.replace(/\mapper-legend-pin\b/,'');
|
||||
var b = ce('b');
|
||||
b.innerText = ' ' + label[i][1].substr(label[i][1].lastIndexOf('('));
|
||||
ae(span, b);
|
||||
// replace end
|
||||
}
|
||||
else {
|
||||
if (i == maxLabel) {
|
||||
str += '<span>';
|
||||
}
|
||||
else {
|
||||
str += '<span class="breadcrumb-arrow">';
|
||||
}
|
||||
str += label[i][1] + '</span>';
|
||||
}
|
||||
}
|
||||
this._legendLabel.innerHtml = str;
|
||||
};
|
||||
|
||||
ShowOnMap.combinePins = function(pins, dailyOnly, hasPaths) {
|
||||
var combined = {};
|
||||
var coord = null, tmpCoord = null;
|
||||
var x, y;
|
||||
var nPins = 0;
|
||||
|
||||
var getCoord = function(coord, tight) {
|
||||
var x = Math.floor(coord[0]);
|
||||
var y = Math.floor(coord[1]);
|
||||
if (!tight) {
|
||||
if (x % 2 == 1) {
|
||||
x += 1;
|
||||
}
|
||||
if (y % 2 == 1) {
|
||||
y += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (combined[x] === undefined) {
|
||||
combined[x] = {};
|
||||
}
|
||||
if (combined[x][y] === undefined) {
|
||||
combined[x][y] = [];
|
||||
}
|
||||
|
||||
return [x, y];
|
||||
}
|
||||
|
||||
for (var p = 0; p < pins.length; ++p) {
|
||||
var pin = pins[p];
|
||||
if (dailyOnly) {
|
||||
if (!pin.quests) {
|
||||
continue;
|
||||
}
|
||||
var noDaily = true;
|
||||
for (var n = 0; n < pin.quests.length; ++n) {
|
||||
if (pin.quests[n].daily) {
|
||||
noDaily = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (noDaily) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (hasPaths) {
|
||||
// Don't combine pins that have paths
|
||||
coord = getCoord([pin.id, 0], true);
|
||||
x = coord[0]; y = coord[1];
|
||||
var newPin = dO(pin);
|
||||
newPin.coord = pin.coords[0];
|
||||
|
||||
combined[x][y].push(newPin);
|
||||
nPins++;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (pin.point == 'start' || pin.point == 'end') {
|
||||
coord = getCoord(pin.coord);
|
||||
x = coord[0]; y = coord[1];
|
||||
if (combined[x][y].length > 3) {
|
||||
var temp = combined[x][y];
|
||||
combined[x][y] = [];
|
||||
for (var i = 0; i < temp.length; ++i) {
|
||||
tmpCoord = getCoord(temp[i].coord, true);
|
||||
combined[tmpCoord[0]][tmpCoord[1]].push(temp[i]);
|
||||
}
|
||||
}
|
||||
|
||||
combined[x][y].push(pin);
|
||||
nPins++;
|
||||
}
|
||||
else {
|
||||
for (var c = 0; c < pin.coords.length; ++c) {
|
||||
coord = getCoord(pin.coords[c]);
|
||||
x = coord[0]; y = coord[1];
|
||||
var newPin = dO(pin);
|
||||
newPin.coord = pin.coords[c];
|
||||
|
||||
if (combined[x][y].length > 3) {
|
||||
var temp = combined[x][y];
|
||||
combined[x][y] = [];
|
||||
for (var i = 0; i < temp.length; ++i) {
|
||||
tmpCoord = getCoord(temp[i].coord, true);
|
||||
combined[tmpCoord[0]][tmpCoord[1]].push(temp[i]);
|
||||
}
|
||||
}
|
||||
|
||||
combined[x][y].push(newPin);
|
||||
nPins++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var complete = [];
|
||||
for (x in combined) {
|
||||
for (y in combined[x]) {
|
||||
complete.push({
|
||||
coord: [combined[x][y][0].coord[0], combined[x][y][0].coord[1]],
|
||||
level: combined[x][y][0].level,
|
||||
list: combined[x][y]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return [complete, nPins];
|
||||
};
|
||||
|
||||
ShowOnMap.buildTooltip = function(list, dailyOnly) {
|
||||
var str = '';
|
||||
var url = '';
|
||||
var menu = [];
|
||||
var pinType = -1;
|
||||
var uniques = {};
|
||||
var nUniques = 0;
|
||||
var pointTypes = {};
|
||||
var objType = 1;
|
||||
|
||||
for (var n = 0; n < list.length; ++n) {
|
||||
var obj = list[n];
|
||||
url = (g_types[obj.type] && obj.id ? '?' + g_types[obj.type] + '=' + obj.id : '');
|
||||
var key = url + obj.item;
|
||||
var pointKey = url + obj.point;
|
||||
if (!uniques[key]) {
|
||||
uniques[key] = {
|
||||
url: url,
|
||||
obj: obj,
|
||||
coords: [obj.coord],
|
||||
all: [obj]
|
||||
};
|
||||
nUniques++;
|
||||
}
|
||||
else {
|
||||
if (!pointTypes[pointKey]) {
|
||||
uniques[key].all.push(obj);
|
||||
}
|
||||
uniques[key].coords.push(obj.coord);
|
||||
}
|
||||
pointTypes[pointKey] = 1;
|
||||
}
|
||||
|
||||
var n = 0;
|
||||
for (var key in uniques) {
|
||||
var url = uniques[key].url;
|
||||
var all = uniques[key].all;
|
||||
var obj = uniques[key].obj;
|
||||
var coords = uniques[key].coords;
|
||||
if (n > 0) {
|
||||
str += '<br />';
|
||||
}
|
||||
menu.push([n++, obj.name, url]);
|
||||
objType = obj.type;
|
||||
|
||||
if (!obj.point) {
|
||||
if ((obj.reacthorde == 1 && obj.reactalliance < 1) || obj.side == 2) {
|
||||
if (pinType == 2 || pinType == -1) {
|
||||
pinType = 2;
|
||||
}
|
||||
else {
|
||||
pinType = 0;
|
||||
}
|
||||
}
|
||||
else if ((obj.reactalliance == 1 && obj.reacthorde < 1) || obj.side == 1) {
|
||||
if (pinType == 3 || pinType == -1) {
|
||||
pinType = 3;
|
||||
}
|
||||
else {
|
||||
pinType = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
pinType = 0;
|
||||
}
|
||||
}
|
||||
|
||||
str += '<b class="q' + (pinType == 2 ? ' icon-horde' : '') + (pinType == 3 ? ' icon-alliance' : '') + '">' + obj.name + '</b>';
|
||||
if (coords.length > 0) {
|
||||
str += ' (' + coords[0][0] + ', ' + coords[0][1] + ')<br />';
|
||||
}
|
||||
|
||||
if (obj.quests) {
|
||||
if (obj.quests.length > 1) {
|
||||
str += LANG.som_startsquestpl;
|
||||
}
|
||||
else {
|
||||
str += LANG.som_startsquest;
|
||||
}
|
||||
str += '<div class="indent">';
|
||||
for (var q = 0; q < obj.quests.length; ++q) {
|
||||
var quest = obj.quests[q];
|
||||
if (dailyOnly && !quest.daily) {
|
||||
continue;
|
||||
}
|
||||
str += '<span class="q0">[' + quest.level + ']</span> ' + quest.name + ((quest.series && !quest.first) ? '<sup style="font-size: 8px">(*)</sup>' : '') + ((quest.category < 0 && g_quest_sorts[quest.category]) ? ' <i class="q0">' + g_quest_sorts[quest.category] + '</i>' : '') + '<br />';
|
||||
}
|
||||
str += '</div>';
|
||||
}
|
||||
else if (obj.description) {
|
||||
str += obj.description + '<br />';
|
||||
}
|
||||
else if (obj.point) {
|
||||
for (var n = 0; n < all.length; ++n) {
|
||||
var o = all[n];
|
||||
switch (o.point) {
|
||||
case 'start':
|
||||
str += LANG.mapper_startsquest + '<br />';
|
||||
if (pinType == 'end') {
|
||||
pinType = 'startend';
|
||||
}
|
||||
else if (pinType != 'startend') {
|
||||
pinType = 'start';
|
||||
}
|
||||
break;
|
||||
case 'end':
|
||||
str += LANG.mapper_endsquest + '<br />';
|
||||
if (pinType == 'start') {
|
||||
pinType = 'startend';
|
||||
}
|
||||
else if (pinType != 'startend') {
|
||||
pinType = 'end';
|
||||
}
|
||||
break;
|
||||
case 'sourcestart':
|
||||
str += LANG.mapper_sourcestart + '<br />';
|
||||
str += '<div class="indent">' + o.item + '</div>';
|
||||
if (pinType == 'end') {
|
||||
pinType = 'startend';
|
||||
}
|
||||
else if (pinType != 'startend') {
|
||||
pinType = 'start';
|
||||
}
|
||||
break;
|
||||
case 'sourceend':
|
||||
str += LANG.mapper_sourceend + '<br />';
|
||||
str += '<div class="indent">' + o.item + '</div>';
|
||||
if (pinType == 'start') {
|
||||
pinType = 'startend';
|
||||
}
|
||||
else if (pinType != 'startend') {
|
||||
pinType = 'end';
|
||||
}
|
||||
break;
|
||||
case 'requirement':
|
||||
str += LANG.mapper_requiredquest + '<br />';
|
||||
if (pinType == -1) {
|
||||
pinType = o.objective;
|
||||
}
|
||||
break;
|
||||
case 'sourcerequirement':
|
||||
str += LANG.mapper_sourcereq + '<br />';
|
||||
str += '<div class="indent">' + o.item + '</div>';
|
||||
if (pinType == -1) {
|
||||
pinType = o.objective;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
str += '<div class="q2">';
|
||||
if (list.length == 1) {
|
||||
str += (list[0].type == 1 ? LANG.som_viewnpc : (list[0].type == 2 ? LANG.som_viewobj : ''));
|
||||
}
|
||||
else if (nUniques == 1) {
|
||||
str += (objType == 1 ? LANG.som_viewnpc : (objType == 2 ? LANG.som_viewobj : ''));
|
||||
}
|
||||
else {
|
||||
str += '<br />' + LANG.som_view;
|
||||
}
|
||||
str += '</div>';
|
||||
|
||||
var ret = [];
|
||||
ret.push(str);
|
||||
ret.push(pinType);
|
||||
if (list.length == 1 || nUniques == 1) {
|
||||
ret.push(url);
|
||||
ret.push(null);
|
||||
}
|
||||
else {
|
||||
ret.push('javascript:;');
|
||||
ret.push(menu);
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
// !sarjuuk: tempfix!
|
||||
Markup._fixUrl = function(url)
|
||||
{
|
||||
if(!url) return '';
|
||||
|
||||
// Make local URLs absolute
|
||||
var firstChar = url.charAt(0);
|
||||
if(firstChar == '/' || firstChar == '?')
|
||||
{
|
||||
url = url.replace(/^[\/\?]+/, '');
|
||||
|
||||
url = '?' + url;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
@@ -2329,16 +2329,26 @@ function g_isLeftClick(a) {
|
||||
a = $E(a);
|
||||
return (a && a._button == 1)
|
||||
}
|
||||
function g_createOrRegex(c) {
|
||||
var e = c.split(" "),
|
||||
d = "";
|
||||
for (var b = 0, a = e.length; b < a; ++b) {
|
||||
if (b > 0) {
|
||||
d += "|"
|
||||
|
||||
function g_createOrRegex(search, negativeGroup) {
|
||||
search = search.replace(/(\(|\)|\|\+|\*|\?|\$|\^)/g, '\\$1');
|
||||
var
|
||||
parts = search.split(' '),
|
||||
strRegex= '';
|
||||
|
||||
for (var j = 0, len = parts.length; j < len; ++j) {
|
||||
if (j > 0) {
|
||||
strRegex += '|';
|
||||
}
|
||||
d += e[b]
|
||||
strRegex += parts[j];
|
||||
}
|
||||
return new RegExp("(" + d + ")", "gi")
|
||||
|
||||
// The additional group is necessary so we dont replace %s
|
||||
return new RegExp((negativeGroup != null ? '(' + negativeGroup + ')?' : '') + '(' + strRegex + ')', 'gi');
|
||||
}
|
||||
|
||||
function g_getHash() {
|
||||
return '#' + decodeURIComponent(location.href.split('#')[1] || '');
|
||||
}
|
||||
|
||||
DomContentLoaded.addEvent(function () {
|
||||
@@ -7175,9 +7185,9 @@ Listview.funcBox = {
|
||||
p.value = b.response;
|
||||
p.rows = 3;
|
||||
p.style.height = "6em";
|
||||
h.append(B);
|
||||
h.append(w);
|
||||
h.append(p)
|
||||
ae(h, B);
|
||||
ae(h, w);
|
||||
ae(h, p)
|
||||
}
|
||||
ae(m, h);
|
||||
ae(m, ce('div'));
|
||||
@@ -10138,205 +10148,217 @@ Listview.templates = {
|
||||
nItemsPerPage: -1,
|
||||
searchable: 1,
|
||||
filtrable: 1,
|
||||
columns: [{
|
||||
id: "name",
|
||||
|
||||
columns: [
|
||||
{
|
||||
id: 'name',
|
||||
name: LANG.name,
|
||||
type: "text",
|
||||
align: "left",
|
||||
value: "name",
|
||||
compute: function(c, e) {
|
||||
var b = ce("a");
|
||||
b.style.fontFamily = "Verdana, sans-serif";
|
||||
b.href = this.template.getItemLink(c);
|
||||
ae(b, ct(c.name));
|
||||
if (c.expansion) {
|
||||
var d = ce("span");
|
||||
d.className = (c.expansion == 1 ? "bc-icon": "wotlk-icon");
|
||||
ae(d, b);
|
||||
ae(e, d)
|
||||
} else {
|
||||
ae(e, b)
|
||||
type: 'text',
|
||||
align: 'left',
|
||||
value: 'name',
|
||||
compute: function(zone, td) {
|
||||
var a = ce('a');
|
||||
a.style.fontFamily = 'Verdana, sans-serif';
|
||||
a.href = this.template.getItemLink(zone);
|
||||
ae(a, ct(zone.name));
|
||||
if (zone.expansion) {
|
||||
var sp = ce('span');
|
||||
sp.className = g_GetExpansionClassName(zone.expansion);
|
||||
ae(sp, a);
|
||||
ae(td, sp);
|
||||
}
|
||||
else {
|
||||
ae(td, a);
|
||||
}
|
||||
},
|
||||
getVisibleText: function(a) {
|
||||
var b = a.name;
|
||||
if (a.expansion == 1) {
|
||||
b += " bc"
|
||||
} else {
|
||||
if (a.expansion == 2) {
|
||||
b += "wotlk wrath"
|
||||
getVisibleText: function(zone) {
|
||||
var buff = zone.name + Listview.funcBox.getExpansionText(zone);
|
||||
|
||||
if (zone.instance == 5 || zone.instance == 8) {
|
||||
buff += ' heroic';
|
||||
}
|
||||
if (a.instance == 5 || a.instance == 8) {
|
||||
b += " heroic"
|
||||
}
|
||||
}
|
||||
return b
|
||||
|
||||
return buff;
|
||||
}
|
||||
},
|
||||
{
|
||||
id: "level",
|
||||
id: 'level',
|
||||
name: LANG.level,
|
||||
type: "range",
|
||||
width: "10%",
|
||||
getMinValue: function(a) {
|
||||
return a.minlevel
|
||||
type: 'range',
|
||||
width: '10%',
|
||||
getMinValue: function(zone) {
|
||||
return zone.minlevel;
|
||||
},
|
||||
getMaxValue: function(a) {
|
||||
return a.maxlevel
|
||||
getMaxValue: function(zone) {
|
||||
return zone.maxlevel;
|
||||
},
|
||||
compute: function(a, b) {
|
||||
if (a.minlevel > 0 && a.maxlevel > 0) {
|
||||
if (a.minlevel != a.maxlevel) {
|
||||
return a.minlevel + LANG.hyphen + a.maxlevel
|
||||
} else {
|
||||
return a.minlevel
|
||||
compute: function(zone, td) {
|
||||
if (zone.minlevel > 0 && zone.maxlevel > 0) {
|
||||
if (zone.minlevel != zone.maxlevel) {
|
||||
return zone.minlevel + LANG.hyphen + zone.maxlevel;
|
||||
}
|
||||
else {
|
||||
return zone.minlevel;
|
||||
}
|
||||
}
|
||||
},
|
||||
sortFunc: function(d, c, e) {
|
||||
if (e > 0) {
|
||||
return strcmp(d.minlevel, c.minlevel) || strcmp(d.maxlevel, c.maxlevel)
|
||||
} else {
|
||||
return strcmp(d.maxlevel, c.maxlevel) || strcmp(d.minlevel, c.minlevel)
|
||||
sortFunc: function(a, b, col) {
|
||||
if (col > 0) {
|
||||
return strcmp(a.minlevel, b.minlevel) || strcmp(a.maxlevel, b.maxlevel);
|
||||
}
|
||||
else {
|
||||
return strcmp(a.maxlevel, b.maxlevel) || strcmp(a.minlevel, b.minlevel);
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
id: "players",
|
||||
id: 'players',
|
||||
name: LANG.players,
|
||||
type: "text",
|
||||
type: 'text',
|
||||
hidden: true,
|
||||
compute: function(a, d) {
|
||||
if (a.instance > 0) {
|
||||
var b = ce("span");
|
||||
if (a.nplayers == -2) {
|
||||
a.nplayers = "10/25"
|
||||
compute: function(zone, td) {
|
||||
if (zone.instance > 0) {
|
||||
var sp = ce('span');
|
||||
|
||||
if (zone.nplayers == -2) {
|
||||
zone.nplayers = '10/25';
|
||||
}
|
||||
var c = "";
|
||||
if (a.nplayers) {
|
||||
if (a.instance == 4) {
|
||||
c += sprintf(LANG.lvzone_xvx, a.nplayers, a.nplayers)
|
||||
} else {
|
||||
c += sprintf(LANG.lvzone_xman, a.nplayers)
|
||||
|
||||
var buff = '';
|
||||
if (zone.nplayers) {
|
||||
if (zone.instance == 4) {
|
||||
buff += sprintf(LANG.lvzone_xvx, zone.nplayers, zone.nplayers);
|
||||
}
|
||||
else {
|
||||
buff += sprintf(LANG.lvzone_xman, zone.nplayers);
|
||||
}
|
||||
}
|
||||
ae(b, ct(c));
|
||||
ae(d, b)
|
||||
|
||||
ae(sp, ct(buff));
|
||||
ae(td, sp);
|
||||
}
|
||||
},
|
||||
getVisibleText: function(a) {
|
||||
if (a.instance > 0) {
|
||||
if (a.nplayers == -2) {
|
||||
a.nplayers = "10/25"
|
||||
getVisibleText: function(zone) {
|
||||
if (zone.instance > 0) {
|
||||
if (zone.nplayers == -2) {
|
||||
zone.nplayers = '10/25';
|
||||
}
|
||||
var b = "";
|
||||
if (a.nplayers && ((a.instance != 2 && a.instance != 5) || a.nplayers > 5)) {
|
||||
if (a.instance == 4) {
|
||||
b += sprintf(LANG.lvzone_xvx, a.nplayers, a.nplayers)
|
||||
} else {
|
||||
b += sprintf(LANG.lvzone_xman, a.nplayers)
|
||||
|
||||
var buff = '';
|
||||
if (zone.nplayers && ((zone.instance != 2 && zone.instance != 5) || zone.nplayers > 5)) {
|
||||
if (zone.instance == 4) {
|
||||
buff += sprintf(LANG.lvzone_xvx, zone.nplayers, zone.nplayers);
|
||||
}
|
||||
else {
|
||||
buff += sprintf(LANG.lvzone_xman, zone.nplayers);
|
||||
}
|
||||
}
|
||||
return b
|
||||
return buff;
|
||||
}
|
||||
},
|
||||
sortFunc: function(d, c, e) {
|
||||
return strcmp(d.nplayers, c.nplayers)
|
||||
sortFunc: function(a, b, col) {
|
||||
return strcmp(a.nplayers, b.nplayers);
|
||||
}
|
||||
},
|
||||
{
|
||||
id: "territory",
|
||||
id: 'territory',
|
||||
name: LANG.territory,
|
||||
type: "text",
|
||||
width: "13%",
|
||||
compute: function(a, c) {
|
||||
var b = ce("span");
|
||||
switch (a.territory) {
|
||||
type: 'text',
|
||||
width: '13%',
|
||||
compute: function(zone, td) {
|
||||
var sp = ce('span');
|
||||
switch (zone.territory) {
|
||||
case 0:
|
||||
b.className = "alliance-icon";
|
||||
sp.className = 'alliance-icon';
|
||||
break;
|
||||
case 1:
|
||||
b.className = "horde-icon";
|
||||
sp.className = 'horde-icon';
|
||||
break;
|
||||
case 4:
|
||||
b.className = "ffapvp-icon";
|
||||
break
|
||||
sp.className = 'ffapvp-icon';
|
||||
break;
|
||||
}
|
||||
ae(b, ct(g_zone_territories[a.territory]));
|
||||
ae(c, b)
|
||||
|
||||
ae(sp, ct(g_zone_territories[zone.territory]));
|
||||
ae(td, sp);
|
||||
},
|
||||
getVisibleText: function(a) {
|
||||
return g_zone_territories[a.territory]
|
||||
getVisibleText: function(zone) {
|
||||
return g_zone_territories[zone.territory];
|
||||
},
|
||||
sortFunc: function(d, c, e) {
|
||||
return strcmp(g_zone_territories[d.territory], g_zone_territories[c.territory])
|
||||
sortFunc: function(a, b, col) {
|
||||
return strcmp(g_zone_territories[a.territory], g_zone_territories[b.territory]);
|
||||
}
|
||||
},
|
||||
{
|
||||
id: "instancetype",
|
||||
id: 'instancetype',
|
||||
name: LANG.instancetype,
|
||||
type: "text",
|
||||
compute: function(a, d) {
|
||||
if (a.instance > 0) {
|
||||
var b = ce("span");
|
||||
if ((a.instance >= 1 && a.instance <= 5) || a.instance == 7 || a.instance == 8) {
|
||||
b.className = "instance-icon" + a.instance
|
||||
type: 'text',
|
||||
compute: function(zone, td) {
|
||||
if (zone.instance > 0) {
|
||||
var sp = ce('span');
|
||||
if ((zone.instance >= 1 && zone.instance <= 5) || zone.instance == 7 || zone.instance == 8) {
|
||||
sp.className = 'instance-icon' + zone.instance;
|
||||
}
|
||||
if (a.nplayers == -2) {
|
||||
a.nplayers = "10/25"
|
||||
|
||||
var buff = g_zone_instancetypes[zone.instance];
|
||||
|
||||
if (zone.heroicLevel) {
|
||||
var skull = ce('span');
|
||||
skull.className = 'heroic-icon';
|
||||
g_addTooltip(skull, LANG.tooltip_heroicmodeavailable + LANG.qty.replace('$1', zone.heroicLevel));
|
||||
ae(td, skull);
|
||||
}
|
||||
var c = g_zone_instancetypes[a.instance];
|
||||
if (a.heroicLevel) {
|
||||
var f = ce("span");
|
||||
f.className = "heroic-icon";
|
||||
g_addTooltip(f, LANG.tooltip_heroicmodeavailable + LANG.qty.replace("$1", a.heroicLevel));
|
||||
ae(e, f);
|
||||
}
|
||||
ae(b, ct(c));
|
||||
ae(d, b)
|
||||
|
||||
ae(sp, ct(buff));
|
||||
ae(td, sp);
|
||||
}
|
||||
},
|
||||
getVisibleText: function(a) {
|
||||
if (a.instance > 0) {
|
||||
var b = g_zone_instancetypes[a.instance];
|
||||
if (a.nplayers && ((a.instance != 2 && a.instance != 5) || a.nplayers > 5)) {
|
||||
if (a.instance == 4) {
|
||||
b += " " + sprintf(LANG.lvzone_xvx, a.nplayers, a.nplayers)
|
||||
} else {
|
||||
b += " " + sprintf(LANG.lvzone_xman, a.nplayers)
|
||||
getVisibleText: function(zone) {
|
||||
if (zone.instance > 0) {
|
||||
var buff = g_zone_instancetypes[zone.instance];
|
||||
|
||||
if (zone.nplayers && ((zone.instance != 2 && zone.instance != 5) || zone.nplayers > 5)) {
|
||||
if (zone.instance == 4) {
|
||||
buff += ' ' + sprintf(LANG.lvzone_xvx, zone.nplayers, zone.nplayers);
|
||||
}
|
||||
else {
|
||||
buff += ' ' + sprintf(LANG.lvzone_xman, zone.nplayers);
|
||||
}
|
||||
}
|
||||
if (a.instance == 5 || a.instance == 8) {
|
||||
b += " heroic"
|
||||
if (zone.instance == 5 || zone.instance == 8) {
|
||||
buff += ' heroic';
|
||||
}
|
||||
return b
|
||||
|
||||
return buff;
|
||||
}
|
||||
},
|
||||
sortFunc: function(d, c, e) {
|
||||
return strcmp(g_zone_instancetypes[d.instance], g_zone_instancetypes[c.instance]) || strcmp(d.instance, c.instance) || strcmp(d.nplayers, c.nplayers)
|
||||
sortFunc: function(a, b, col) {
|
||||
return strcmp(g_zone_instancetypes[a.instance], g_zone_instancetypes[b.instance]) || strcmp(a.instance, b.instance) || strcmp(a.nplayers, b.nplayers);
|
||||
}
|
||||
},
|
||||
{
|
||||
id: "category",
|
||||
id: 'category',
|
||||
name: LANG.category,
|
||||
type: "text",
|
||||
width: "15%",
|
||||
compute: function(c, d) {
|
||||
d.className = "small q1";
|
||||
var b = ce("a");
|
||||
b.href = "?zones=" + c.category;
|
||||
ae(b, ct(g_zone_categories[c.category]));
|
||||
ae(d, b)
|
||||
type: 'text',
|
||||
width: '15%',
|
||||
compute: function(zone, td) {
|
||||
td.className = 'small q1';
|
||||
var a = ce('a');
|
||||
a.href = '?zones=' + zone.category;
|
||||
ae(a, ct(g_zone_categories[zone.category]));
|
||||
ae(td, a);
|
||||
},
|
||||
getVisibleText: function(a) {
|
||||
return g_zone_categories[a.category]
|
||||
getVisibleText: function(zone) {
|
||||
return g_zone_categories[zone.category];
|
||||
},
|
||||
sortFunc: function(d, c, e) {
|
||||
return strcmp(g_zone_categories[d.category], g_zone_categories[c.category])
|
||||
sortFunc: function(a, b, col) {
|
||||
return strcmp(g_zone_categories[a.category], g_zone_categories[b.category]);
|
||||
}
|
||||
}],
|
||||
getItemLink: function(a) {
|
||||
return "?zone=" + a.id
|
||||
}
|
||||
],
|
||||
|
||||
getItemLink: function(zone) {
|
||||
return '?zone=' + zone.id;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -16655,6 +16677,46 @@ var ContactTool = new function() {
|
||||
DomContentLoaded.addEvent(this.checkPound);
|
||||
};
|
||||
|
||||
function Line(x1, y1, x2, y2, type) {
|
||||
var left = Math.min(x1, x2),
|
||||
right = Math.max(x1, x2),
|
||||
top = Math.min(y1, y2),
|
||||
bottom = Math.max(y1, y2),
|
||||
|
||||
width = (right - left),
|
||||
height = (bottom - top),
|
||||
length = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)),
|
||||
|
||||
radian = Math.atan2(height, width),
|
||||
sinTheta = Math.sin(radian),
|
||||
cosTheta = Math.cos(radian);
|
||||
|
||||
var $line = ce('span');
|
||||
$line.className = 'line';
|
||||
$line.style.top = top.toFixed(2) + 'px';
|
||||
$line.style.left = left.toFixed(2) + 'px';
|
||||
$line.style.width = width.toFixed(2) + 'px';
|
||||
$line.style.height = height.toFixed(2) + 'px';
|
||||
|
||||
var v = ce('var');
|
||||
v.style.width = length.toFixed(2) + 'px';
|
||||
v.style.OTransform = 'rotate(' + radian + 'rad)';
|
||||
v.style.MozTransform = 'rotate(' + radian + 'rad)';
|
||||
v.style.webkitTransform = 'rotate(' + radian + 'rad)';
|
||||
v.style.filter = "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=" + cosTheta + ', M12=' + (-1 * sinTheta) + ', M21=' + sinTheta + ', M22=' + cosTheta + ')';
|
||||
ae($line, v);
|
||||
|
||||
if (!(x1 == left && y1 == top) && !(x2 == left && y2 == top)) {
|
||||
$line.className += ' flipped';
|
||||
}
|
||||
|
||||
if (type != null) {
|
||||
$line.className += ' line-' + type;
|
||||
}
|
||||
|
||||
return $line;
|
||||
}
|
||||
|
||||
var Links = new function() {
|
||||
var dialog = null;
|
||||
var oldHash = null;
|
||||
|
||||
@@ -1916,33 +1916,39 @@ var g_zone_areas = {
|
||||
4723: ['Kolosseum der Kreuzfahrer','Die eisigen Tiefen'],
|
||||
4812: ['Die untere Zitadelle','Das Schädelbollwerk','Dom des Todbringers','Hort der Frostkönigin','Der obere Bereich','Königliche Quartiere','Der Frostthron','Frostgram']
|
||||
};
|
||||
|
||||
var g_zone_categories = {
|
||||
0:"Östliche Königreiche",
|
||||
1:"Kalimdor",
|
||||
8:"Scherbenwelt",
|
||||
10:"Nordend",
|
||||
2:"Dungeons",
|
||||
3:"Schlachtzüge",
|
||||
6:"Schlachtfelder",
|
||||
9:"Arenen"
|
||||
0: "Östliche Königreiche",
|
||||
1: "Kalimdor",
|
||||
2: "Dungeons",
|
||||
3: "Schlachtzüge",
|
||||
4: "Unbenutzt",
|
||||
6: "Schlachtfelder",
|
||||
8: "Scherbenwelt",
|
||||
9: "Arenen",
|
||||
10: "Nordend"
|
||||
};
|
||||
|
||||
var g_zone_instancetypes = {
|
||||
1:"Durchgang",
|
||||
2:"Dungeon",
|
||||
3:"Schlachtzug",
|
||||
4:"Schlachtfeld",
|
||||
5:"Dungeon",
|
||||
6:"Arena",
|
||||
7:"Schlachtzug",
|
||||
8:"Schlachtzug"
|
||||
1: "Durchgang",
|
||||
2: "Dungeon",
|
||||
3: "Schlachtzug", // Classic
|
||||
4: "Schlachtfeld",
|
||||
5: "Dungeon", // Heroic
|
||||
6: "Arena",
|
||||
7: "Schlachtzug", // 10-25
|
||||
8: "Schlachtzug" // 10-25 Heroic
|
||||
};
|
||||
|
||||
var g_zone_territories = {
|
||||
0:"Allianz",
|
||||
1:"Horde",
|
||||
2:"Umkämpft",
|
||||
3:"Sicheres Gebiet",
|
||||
4:"PvP"
|
||||
0: "Allianz",
|
||||
1: "Horde",
|
||||
2: "Umkämpft",
|
||||
3: "Sicheres Gebiet",
|
||||
4: "PvP",
|
||||
5: "Welt-PvP"
|
||||
};
|
||||
|
||||
var g_faction_categories = {
|
||||
"0":"Anderes",
|
||||
"469":"Allianz",
|
||||
|
||||
@@ -1963,33 +1963,39 @@ var g_zone_areas = {
|
||||
4723: ['Crusaders\' Coliseum','The Icy Depths'],
|
||||
4812: ['The Lower Citadel','The Rampart of Skulls','Deathbringer\'s Rise','The Frost Queen\'s Lair','The Upper Reaches','Royal Quarters','The Frozen Throne','Frostmourne']
|
||||
};
|
||||
|
||||
var g_zone_categories = {
|
||||
0:"Eastern Kingdoms",
|
||||
1:"Kalimdor",
|
||||
8:"Outland",
|
||||
10:"Northrend",
|
||||
2:"Dungeons",
|
||||
3:"Raids",
|
||||
6:"Battlegrounds",
|
||||
9:"Arenas"
|
||||
0: "Eastern Kingdoms",
|
||||
1: "Kalimdor",
|
||||
2: "Dungeons",
|
||||
3: "Raids",
|
||||
4: "Unused",
|
||||
6: "Battlegrounds",
|
||||
8: "Outland",
|
||||
9: "Arenas",
|
||||
10: "Northrend"
|
||||
};
|
||||
|
||||
var g_zone_instancetypes = {
|
||||
1:"Transit",
|
||||
2:"Dungeon",
|
||||
3:"Raid",
|
||||
4:"Battleground",
|
||||
5:"Dungeon",
|
||||
6:"Arena",
|
||||
7:"Raid",
|
||||
8:"Raid"
|
||||
1: "Transit",
|
||||
2: "Dungeon",
|
||||
3: "Raid", // Classic
|
||||
4: "Battleground",
|
||||
5: "Dungeon", // Heroic
|
||||
6: "Arena",
|
||||
7: "Raid", // 10-25
|
||||
8: "Raid" // 10-25 Heroic
|
||||
};
|
||||
|
||||
var g_zone_territories = {
|
||||
0:"Alliance",
|
||||
1:"Horde",
|
||||
2:"Contested",
|
||||
3:"Sanctuary",
|
||||
4:"PvP"
|
||||
0: "Alliance",
|
||||
1: "Horde",
|
||||
2: "Contested",
|
||||
3: "Sanctuary",
|
||||
4: "PvP",
|
||||
5: "World PvP"
|
||||
};
|
||||
|
||||
var g_faction_categories = {
|
||||
"0":"Other",
|
||||
"469":"Alliance",
|
||||
|
||||
@@ -1916,33 +1916,39 @@ var g_zone_areas = {
|
||||
4723: ['El Coliseo Argenta','Las profundidades heladas'],
|
||||
4812: ['La ciudadela inferior','La Muralla de las Calaveras','Ascenso del Libramorte','La guarida de la Reina de Escarcha','Los Confines superiores','Cuarteles Reales','El Trono Helado','Agonía de Escarcha']
|
||||
};
|
||||
|
||||
var g_zone_categories = {
|
||||
0:"Reinos del Este",
|
||||
1:"Kalimdor",
|
||||
8:"Terrallende",
|
||||
10:"Rasganorte",
|
||||
2:"Mazmorras",
|
||||
3:"Bandas",
|
||||
6:"Campos de batalla",
|
||||
9:"Arenas"
|
||||
0: "Reinos del Este",
|
||||
1: "Kalimdor",
|
||||
2: "Mazmorras",
|
||||
3: "Bandas",
|
||||
4: "No las uso",
|
||||
6: "Campos de batalla",
|
||||
8: "Terrallende",
|
||||
9: "Arenas",
|
||||
10: "Rasganorte"
|
||||
};
|
||||
|
||||
var g_zone_instancetypes = {
|
||||
1:"Tránsito",
|
||||
2:"Mazmorra",
|
||||
3:"Banda",
|
||||
4:"Campo de batalla",
|
||||
5:"Mazmorra",
|
||||
6:"Arena",
|
||||
7:"Banda",
|
||||
8:"Banda"
|
||||
1: "Tránsito",
|
||||
2: "Mazmorra",
|
||||
3: "Banda", // Classic
|
||||
4: "Campo de batalla",
|
||||
5: "Mazmorra", // Heroic
|
||||
6: "Arena",
|
||||
7: "Banda", // 10-25
|
||||
8: "Banda" // 10-25 Heroic
|
||||
};
|
||||
|
||||
var g_zone_territories = {
|
||||
0:"Alianza",
|
||||
1:"Horda",
|
||||
2:"En disputa",
|
||||
3:"Santuario",
|
||||
4:"JcJ"
|
||||
0: "Alianza",
|
||||
1: "Horda",
|
||||
2: "En disputa",
|
||||
3: "Santuario",
|
||||
4: "JcJ",
|
||||
5: "JcJ abierto"
|
||||
};
|
||||
|
||||
var g_faction_categories = {
|
||||
"0":"Otros",
|
||||
"469":"Alianza",
|
||||
|
||||
@@ -1903,33 +1903,39 @@ var g_zone_areas = {
|
||||
4723: ['L\'colisée d\'Argent','Les Profondeurs Glacées'],
|
||||
4812: ['La Citadelle Inférieure','Le Rempart des Cranes','Ascension de Porte-mort','Le repaire de la reine du Givre','Les étages supérieurs','Quartiers Royaux','Le Trône Gelé','Deuillegivre']
|
||||
};
|
||||
|
||||
var g_zone_categories = {
|
||||
0:"Royaumes de l'est",
|
||||
1:"Kalimdor",
|
||||
8:"Outreterre",
|
||||
10:"Norfendre",
|
||||
2:"Donjons",
|
||||
3:"Raids",
|
||||
6:"Champs de bataille",
|
||||
9:"Arènes"
|
||||
0: "Royaumes de l'est",
|
||||
1: "Kalimdor",
|
||||
2: "Donjons",
|
||||
3: "Raids",
|
||||
4: "Inutilisées",
|
||||
6: "Champs de bataille",
|
||||
8: "Outreterre",
|
||||
9: "Arènes",
|
||||
10: "Norfendre"
|
||||
};
|
||||
|
||||
var g_zone_instancetypes = {
|
||||
1:"Transit",
|
||||
2:"Donjon",
|
||||
3:"Raid",
|
||||
4:"Champ de bataille",
|
||||
5:"Donjon",
|
||||
6:"Arène",
|
||||
7:"Raid",
|
||||
8:"Raid"
|
||||
1: "Transit",
|
||||
2: "Donjon",
|
||||
3: "Raid", // Classic
|
||||
4: "Champ de bataille",
|
||||
5: "Donjon", // Heroic
|
||||
6: "Arène",
|
||||
7: "Raid", // 10-25
|
||||
8: "Raid" // 10-25 Heroic
|
||||
};
|
||||
|
||||
var g_zone_territories = {
|
||||
0:"Alliance",
|
||||
1:"Horde",
|
||||
2:"Contesté",
|
||||
3:"Sanctuaire",
|
||||
4:"JcJ"
|
||||
0: "Alliance",
|
||||
1: "Horde",
|
||||
2: "Contesté",
|
||||
3: "Sanctuaire",
|
||||
4: "JcJ",
|
||||
5: "JcJ Global"
|
||||
};
|
||||
|
||||
var g_faction_categories = {
|
||||
"0":"Autre",
|
||||
"469":"Alliance",
|
||||
|
||||
@@ -1903,33 +1903,39 @@ var g_zone_areas = {
|
||||
4723: ['Колизей Серебряного Авангарда','Ледяные глубины'],
|
||||
4812: ['Нижний ярус','Черепной вал','Подъем Смертоносного','Логово Королевы Льда','Верхний ярус','Королевские палаты','Ледяной Трон','Ледяная Скорбь']
|
||||
};
|
||||
|
||||
var g_zone_categories = {
|
||||
0:"Восточные королевства",
|
||||
1:"Калимдор",
|
||||
8:"Запределье",
|
||||
10:"Нордскол",
|
||||
2:"Подземелья",
|
||||
3:"Рейды",
|
||||
6:"Поля боя",
|
||||
9:"Арены"
|
||||
0: "Восточные королевства",
|
||||
1: "Калимдор",
|
||||
2: "Подземелья",
|
||||
3: "Рейды",
|
||||
4: "Неактивно",
|
||||
6: "Поля боя",
|
||||
8: "Запределье",
|
||||
9: "Арены",
|
||||
10: "Нордскол"
|
||||
};
|
||||
|
||||
var g_zone_instancetypes = {
|
||||
1:"Транзит",
|
||||
2:"Подземелье",
|
||||
3:"Рейд",
|
||||
4:"Поле боя",
|
||||
5:"Подземелье",
|
||||
6:"Арена",
|
||||
7:"Рейд",
|
||||
8:"Рейд"
|
||||
1: "Транзит",
|
||||
2: "Подземелье",
|
||||
3: "Рейд", // Classic
|
||||
4: "Поле боя",
|
||||
5: "Подземелье", // Heroic
|
||||
6: "Арена",
|
||||
7: "Рейд", // 10-25
|
||||
8: "Рейд" // 10-25 Heroic
|
||||
};
|
||||
|
||||
var g_zone_territories = {
|
||||
0:"Альянс",
|
||||
1:"Орда",
|
||||
2:"Оспариваемая",
|
||||
3:"Святилище",
|
||||
4:"PvP"
|
||||
0: "Альянс",
|
||||
1: "Орда",
|
||||
2: "Оспариваемая",
|
||||
3: "Святилище",
|
||||
4: "PvP",
|
||||
5: "Мировое PvP"
|
||||
};
|
||||
|
||||
var g_faction_categories = {
|
||||
"0":"Другое",
|
||||
"980":"The Burning Crusade",
|
||||
|
||||
Reference in New Issue
Block a user