Spells: initial implementation of DetailPage, ListPage, Filter, Search

Spells:
 - improved tooltips to use a less table-dependant layout
 - defined the missing fulltext-variables
 - buff or tooltip are only reandered for the current spell
 - reduced redundancy in buff / tooltip-code

some ToDos:
 - no tabs on the detail-page implemented yet (used-by, affected-by, ect)
 - localization for frFR, esES and ruRu is .. lacking and will probably be commited with the point above)
 - a full search runs for almost 2sec and i haven't implemented every type yet >.< .. spells are too greedy
 - in some cases $d must supply a time unit, in most cases it does not .. why..?
 - sources can be improved .. anything related to items is still missing
This commit is contained in:
Sarjuuk
2013-05-13 00:34:36 +02:00
parent cbd27c67b3
commit 86387f7707
23 changed files with 7126 additions and 3737 deletions

View File

@@ -1,10 +1,11 @@
<?php
if(!defined('AOWOW_REVISION'))
die("illegal access");
abstract class Filter
{
private static $pattern = "/[^\p{L}0-9\s_\-\'\?\*]/ui";// delete any char not in unicode, number, hyphen, single quote or common wildcard
private static $pattern = "/[^\p{L}0-9\s_\-\'\?\*]/ui";// delete any char not in unicode, number, space, underscore, hyphen, single quote or common wildcard
private static $wildcards = ['*' => '%', '?' => '_'];
private static $criteria = ['cr', 'crs', 'crv']; // [cr]iterium, [cr].[s]ign, [cr].[v]alue
@@ -230,7 +231,6 @@ abstract class Filter
header('Location: http://'.$_SERVER['SERVER_NAME'].str_replace('index.php', '', $_SERVER['PHP_SELF']).'?'.$_SERVER['QUERY_STRING'].'='.$get);
}
// TODO: wrong wrong wrong!!
// 1) filter-Ids are different for each type; 2) (NOT) IN - subqueries will eat the mysql-server alive!
protected function createSQLForCommunity($cr)
@@ -325,6 +325,129 @@ class AchievementListFilter extends Filter
}
class SpellListFilter extends Filter
{
// sources in filter and general use different indizes
private static $fiSource = array(
1 => -2, // Any
2 => -1, // None
3 => 1, // Crafted
4 => 2, // Drop
6 => 4, // Quest
7 => 5, // Vendor
8 => 6, // Trainer
9 => 7, // Discovery
10 => 9 // Talent
);
protected function createSQLForCriterium($cr)
{
if ($r = $this->createSQLForCommunity($cr))
return $r;
switch ($cr[0])
{
case 1: // costAbs [op] [int]
return 's.powerCost '.$this->int2Op($cr[1]).' IF(s.powerType IN (1, 6), 10 * '.intVal($cr[2]).', '.intVal($cr[2]).')';
case 2: // costPct [op] [int]
return 's.powerCostPercent '.$this->int2Op($cr[1]).' '.intVal($cr[2]);
case 3: // requires FocusGO [y|n]
return $this->int2Bool($cr[1]) ? 's.spellFocusObject > 0' : 's.spellfocus = 0';
case 4: // trainingcost [op] [int]
return 's.trainingcost '.$this->int2Op($cr[1]).' '.intVal($cr[2]);
case 5: // Profession Specialitation [y|n]
return 's.reqSpellId '.($this->int2Bool($cr[1]) ? ' > ' : ' = ').' 0';
case 9: // Source [int]
if ($foo = self::$fiSource[$cr[1]])
{
if ($foo > 0) // specific
return 's.source LIKE "%'.$foo.':%"';
else if ($foo == -2) // any
return 's.source <> ""';
else if ($foo == -1) // none
return 's.source = ""';
}
return '1';
case 10: // First Rank [y|n]
return $this->int2Bool($cr[1]) ? 's.cuFlags & '.SPELL_CU_FIRST_RANK : '(s.cuFlags & '.SPELL_CU_FIRST_RANK.') = 0' ;
case 12: // Last Rank [y|n]
return $this->int2Bool($cr[1]) ? 's.cuFlags & '.SPELL_CU_LAST_RANK : '(s.cuFlags & '.SPELL_CU_LAST_RANK.') = 0' ;
case 13: // Rank# [op] [int]
return 's.rankId '.$this->int2Op($cr[1]).' '.intVal($cr[2]);
case 14: // spellId [op] [int]
return 's.id '.$this->int2Op($cr[1]).' '.intVal($cr[2]);
case 15: // iconString [string]
return 's.iconString LIKE "%'.Util::sqlEscape($cr[2]).'%"';
case 19: // scales /W level [y|n] 0x80000 = SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION
return $this->int2Bool($cr[1]) ? 's.attributes0 & 0x80000' : '(s.attributes0 & 0x80000) = 0';
case 20: // has Reagents [y|n]
return $this->int2Bool($cr[1]) ? 's.reagent1 > 0 OR s.reagent2 > 0 OR s.reagent3 > 0 OR s.reagent4 > 0 OR s.reagent5 > 0 OR s.reagent6 > 0 OR s.reagent7 > 0 OR s.reagent8 > 0' : 's.reagents1 = 0 AND s.reagents2 = 0 AND s.reagents3 = 0 AND s.reagents4 = 0 AND s.reagents5 = 0 AND s.reagents6 = 0 AND s.reagents7 = 0 AND s.reagents8 = 0';
case 25: // rewards skill points [y|n]
return $this->int2Bool($cr[1]) ? 's.skillLevelYellow > 1' : 's.skillLevelYellow <= 1';
default:
return '1';
}
}
protected function createSQLForValues($vl)
{
$parts = [];
//string (extended)
if (isset($vl['na']))
{
if (isset($vl['ex']) && $vl['ex'] == 'on')
$parts[] = '(s.name_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%" OR buff_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%" OR description_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%")';
else
$parts[] = 's.name_loc'.User::$localeId.' LIKE "%'.Util::sqlEscape($vl['na']).'%"';
}
// spellLevel min
if (isset($vl['minle']))
$parts[] = 's.spellLevel >= '.intVal($vl['minle']);
// spellLevel max
if (isset($vl['maxle']))
$parts[] = 's.spellLevel <= '.intVal($vl['maxle']);
// skillLevel min
if (isset($vl['minrs']))
$parts[] = 's.learnedAt >= '.intVal($vl['minrs']);
// skillLevel max
if (isset($vl['maxrs']))
$parts[] = 's.learnedAt <= '.intVal($vl['maxrs']);
// race
if (isset($vl['ra']))
$parts[] = 's.reqRaceMask & '.$this->list2Mask($vl['ra']);
// class [list]
if (isset($vl['cl']))
$parts[] = 's.reqClassMask & '.$this->list2Mask($vl['cl']);
// school [list]
if (isset($vl['sc']))
$parts[] = 's.schoolMask & '.$this->list2Mask($vl['sc'], true);
// glyph type [list] wonky, admittedly, but consult SPELL_CU_* in defines and it makes sense
if (isset($vl['gl']))
$parts[] = 's.cuFlags & '.($this->list2Mask($vl['gl']) << 6);
// dispel type
if (isset($vl['dt']))
$parts[] = 's.dispelType = '.intVal($vl['dt']);
// mechanic
if (isset($vl['me']))
$parts[] = 's.mechanic = '.intVal($vl['me']).' OR s.effect1Mechanic = '.intVal($vl['me']).' OR s.effect2Mechanic = '.intVal($vl['me']).' OR s.effect3Mechanic = '.intVal($vl['me']);
return $parts;
}
}
// missing filter: "Available to Players"
class ItemsetListFilter extends Filter
{
@@ -394,7 +517,7 @@ class ItemsetListFilter extends Filter
// class
if (isset($vl['cl']))
$parts[] = 'classMask & '.$this->list2Mask($vl['cl'] - 1);
$parts[] = 'classMask & '.$this->list2Mask($vl['cl']);
// tag
if (isset($vl['ta']))

File diff suppressed because it is too large Load Diff

View File

@@ -156,6 +156,20 @@ define('SPELLFAMILY_POTION', 13);
define('SPELLFAMILY_DEATHKNIGHT', 15);
define('SPELLFAMILY_PET', 17);
// Spell Custom
define('SPELL_CU_TALENT', 0x0001); // passive talent
define('SPELL_CU_TALENTSPELL', 0x0002); // ability taught by talent
define('SPELL_CU_TRIGGERED', 0x0004); // triggered by another spell
define('SPELL_CU_PET_TALENT_TYPE0', 0x0008); // Ferocity
define('SPELL_CU_PET_TALENT_TYPE1', 0x0010); // Tenacity
define('SPELL_CU_PET_TALENT_TYPE2', 0x0020); // Cunning
define('SPELL_CU_GLYPH_MAJOR', 0x0040);
define('SPELL_CU_GLYPH_MINOR', 0x0080);
define('SPELL_CU_QUALITY_MASK', 0x0F00); // set if spell creates an item: (7 - Quality) << 8
define('SPELL_CU_EXCLUDE_CATEGORY_SEARCH', 0x1000); // only display, when searching for spells in general (!cat || cat = 0)
define('SPELL_CU_FIRST_RANK', 0x2000); // used by filter
define('SPELL_CU_LAST_RANK', 0x4000);
// Gender
define('GENDER_MALE', 0);
define('GENDER_FEMALE', 1);

View File

@@ -328,6 +328,8 @@ class Lang
public static $title;
public static $zone;
public static $colon;
public static function load($loc)
{
if (@(require 'localization/locale_'.$loc.'.php') !== 1)
@@ -416,7 +418,6 @@ class Lang
public static function getMagicSchools($schoolMask)
{
$schoolMask &= SPELL_ALL_SCHOOLS; // clamp to available schools..
$tmp = [];
$i = 0;
@@ -675,6 +676,27 @@ class Util
10 => [ 65, 66, 67, 210, 394, 495, 3537, 3711, 4024, 4197, 4395]
);
/* why:
Because petSkills (and ranged weapon skills) are the only ones with more than two skillLines attached. Because Left Joining ?_spell with ?_skillLineAbility causes more trouble than it has uses.
Because this is more or less the only reaonable way to fit all that information into one database field, so..
.. the indizes of this array are bits of skillLine2OrMask in ?_spell if skillLineId1 is negative
*/
public static $skillLineMask = array( // idx => [familyId, skillLineId]
-1 => array( // Pets (Hunter)
[ 1, 208], [ 2, 209], [ 3, 203], [ 4, 210], [ 5, 211], [ 6, 212], [ 7, 213], // Wolf, Cat, Spider, Bear, Boar, Crocolisk, Carrion Bird
[ 8, 214], [ 9, 215], [11, 217], [12, 218], [20, 236], [21, 251], [24, 653], // Crab, Gorilla, Raptor, Tallstrider, Scorpid, Turtle, Bat
[25, 654], [26, 655], [27, 656], [30, 763], [31, 767], [32, 766], [33, 765], // Hyena, Bird of Prey, Wind Serpent, Dragonhawk, Ravager, Warp Stalker, Sporebat
[34, 764], [35, 768], [37, 775], [38, 780], [39, 781], [41, 783], [42, 784], // Nether Ray, Serpent, Moth, Chimaera, Devilsaur, Silithid, Worm
[43, 786], [44, 785], [45, 787], [46, 788] // Rhino, Wasp, Core Hound, Spirit Beast
),
-2 => array( // Pets (Warlock)
[15, 189], [16, 204], [17, 205], [19, 207], [23, 188], [29, 761] // Felhunter, Voidwalker, Succubus, Doomguard, Imp, Felguard
),
-3 => array( // Ranged Weapons
[null, 45], [null, 46], [null, 226] // Bow, Gun, Crossbow
)
);
public static $sockets = array( // jsStyle Strings
'meta', 'red', 'yellow', 'blue'
);

View File

@@ -3,6 +3,11 @@
if (!defined('AOWOW_REVISION'))
die('illegal access');
/*
some translations have yet to be taken from or improved by the use of:
<path>\World of Warcraft\Data\deDE\patch-deDE-3.MPQ\Interface\FrameXML\GlobalStrings.lua
like: ITEM_MOD_*, POWER_TYPE_*, ITEM_BIND_*, PVP_RANK_*
*/
$lang = array(
// page variables
@@ -43,7 +48,9 @@ $lang = array(
'minutesAbbr' => "Min.",
'secondsAbbr' => "Sek.",
'millisecsAbbr' => "Ms",
'name' => "Name",
'n_a' => "n. v.",
// err_title = Fehler in AoWoW
// un_err = Gib bitte deinen Benutzernamen ein
// pwd_err = Gib bitte dein Passwort ein
@@ -63,6 +70,7 @@ $lang = array(
'refineSearch' => "Tipp: Präzisiere deine Suche mit Durchsuchen einer <a href=\"javascript:;\" id=\"fi_subcat\">Unterkategorie</a>.",
// infobox
'name' => "Name",
'disabled' => "Deaktiviert",
'disabledHint' => "Kann nicht erhalten oder abgeschlossen werden.",
'serverside' => "Serverseitig",
@@ -79,6 +87,11 @@ $lang = array(
'classes' => "Klassen",
'currency' => "Währung",
'currencies' => "Währungen",
'difficulty' => "Modus",
'dispelType' => "Bannart",
'duration' => "Dauer",
'glyphType' => "Glyphenart",
'race' => "Volk",
'races' => "Völker",
'title' => "Titel",
'titles' => "Titel",
@@ -88,27 +101,56 @@ $lang = array(
'cooldown' => "%s Abklingzeit",
'itemset' => "Ausrüstungsset",
'itemsets' => "Ausrüstungssets",
'mechanic' => "Auswirkung",
'mechAbbr' => "Ausw.",
'pet' => "Begleiter",
'pets' => "Begleiter",
'requires' => "Benötigt",
'requires' => "Benötigt %s",
'requires2' => "Benötigt",
'reqLevel' => "Benötigt Stufe %s",
'reqLevelHlm' => "Benötigt Stufe %s",
'reqSkillLevel' => "Benötigte Fertigkeitsstufe",
'level' => "Stufe",
'school' => "Magieart",
'spell' => "Zauber",
'spells' => "Zauber",
'valueDelim' => " - ", // " bis "
'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",
11 => "Drachisch", 12 => "Kalimagisch", 13 => "Gnomisch", 14 => "Trollisch", 33 => "Gossensprache", 35 => "Draeneiisch", 36 => "Zombie", 37 => "Gnomenbinär", 38 => "Goblinbinär"
),
'gl' => array(null, "Erhebliche", "Geringe"),
'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"),
'dt' => array(null, "Magie", "Fluch", "Krankheit", "Gift", "Verstohlenheit", "Unsichtbarkeit", null, null, "Wut"),
'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",
"Bärengestalt", null, null, "Terrorbärengestalt", null,
null, null, null, "Schattentanz", null,
null, "Geisterwolf", "Kampfhaltung", "Verteidigungshaltung", "Berserkerhaltung",
null, null, "Metamorphosis", null, null,
null, null, "Schnelle Fluggestalt", "Schattengestalt", "Fluggestalt",
"Verstohlenheit", "Mondkingestalt", "Geist der Erlösung"
null, "Katzengestalt", "Baum des Lebens", "Reisegestalt", "Wassergestalt",
"Bärengestalt", null, null, "Terrorbärengestalt", null,
null, null, null, "Schattentanz", null,
null, "Geisterwolf", "Kampfhaltung", "Verteidigungshaltung", "Berserkerhaltung",
null, null, "Metamorphosis", null, null,
null, null, "Schnelle Fluggestalt", "Schattengestalt", "Fluggestalt",
"Verstohlenheit", "Mondkingestalt", "Geist der Erlösung"
),
'me' => array(
null, "Bezaubert", "Desorientiert", "Entwaffnet", "Abgelenkt", "Flüchtend", "Ergriffen", "Unbeweglich",
"Befriedet", "Schweigend", "Schlafend", "Verlangsamt", "Betäubt", "Eingefroren", "Handlungsunfähig", "Blutend",
"Heilung", "Verwandelt", "Verbannt", "Abgeschirmt", "Gefesselt", "Reitend", "Verführt", "Vertrieben",
"Entsetzt", "Unverwundbar", "Unterbrochen", "Benommen", "Entdeckung", "Unverwundbar", "Kopfnuss", "Wütend"
),
'ct' => array(
null, "Wildtier", "Drachkin", "Dämon", "Elementar",
"Riese", "Untoter", "Humanoid", "Tier", "Mechanisch",
"Nicht kategorisiert", "Totem", "Haustier", "Gas Wolke"
),
'professions' => array(
171 => "Alchemie", 164 => "Schmiedekunst", 333 => "Verzauberkunst", 202 => "Ingenieurskunst", 773 => "Inschriftenkunde", 755 => "Juwelenschleifen",
165 => "Lederverarbeitung", 186 => "Bergbau", 197 => "Schneiderei", 185 => "Kochkunst", 129 => "Erste Hilfe", 356 => "Angeln"
),
'pvpRank' => array(
null, "Gefreiter / Späher", "Fußknecht / Grunzer",
@@ -242,6 +284,26 @@ $lang = array(
)
),
'spell' => array(
'_spellDetails' => "Zauberdetails",
'_cost' => "Kosten",
'_range' => "Reichweite",
'_castTime' => "Zauberzeit",
'_cooldown' => "Abklingzeit",
'_distUnit' => "Meter",
'_forms' => "Gestalten",
'_aura' => "Aura",
'_effect' => "Effekt",
'_none' => "Nichts",
'_gcd' => "GCD",
'_globCD' => "Globale Abklingzeit",
'_gcdCategory' => "GCD-Kategorie",
'_value' => "Wert",
'_radius' => "Radius",
'_interval' => "Interval",
'_inSlot' => "im Platz",
'starter' => "Basiszauber",
'trainingCost' => "Trainingskosten",
'remaining' => "Noch %s",
'untilCanceled' => "bis Abbruch",
'castIn' => "Wirken in %s Sek.",
@@ -250,16 +312,81 @@ $lang = array(
'channeled' => "Kanalisiert",
'range' => "%s Meter Reichweite",
'meleeRange' => "Nahkampfreichweite",
'unlimRange' => "Unbegrenzte Reichweite",
'reagents' => "Reagenzien",
'tools' => "Extras",
'home' => "%lt;Gasthaus&gt;",
'pctCostOf' => "vom Grund%s",
'costPerSec' => ", plus %s pro Sekunde",
'costPerLevel' => ", plus %s pro Stufe",
'powerRunes' => ["Frost", "Unheilig", "Blut", "Tod"],
'powerTypes' => array(
-2 => "Gesundheit", -1 => null, "Mana", "Wut", "Fokus", "Energie", "Zufriedenheit", "Runen", "Runenmacht",
'AMMOSLOT' => "Munnition", 'STEAM' => "Dampfdruck", 'WRATH' => "Zorn", 'PYRITE' => "Pyrit",
'AMMOSLOT' => "Munition", 'STEAM' => "Dampfdruck", 'WRATH' => "Zorn", 'PYRITE' => "Pyrit",
'HEAT' => "Hitze", 'OOZE' => "Schlamm", 'BLOOD_POWER' => "Blutmacht"
),
'relItems' => array (
'base' => "<small>%s im Zusammenhang mit <b>%s</b> anzeigen</small>",
'link' => " oder ",
'recipes' => "<a href=\"?items=9.%s\">Rezeptgegenstände</a>",
'crafted' => "<a href=\"?items&filter=cr=86;crs=%s\">Hergestellte Gegenstände</a>"
),
'cat' => array(
7 => "Klassenfertigkeiten",
-13 => "Glyphen",
-11 => array("Sachverstand", 8 => "Rüstung", 6 => "Waffen", 10 => "Sprachen"),
-4 => "Völkerfertigkeiten",
-2 => "Talente",
-6 => "Haustiere",
-5 => "Reittiere",
-3 => array(
"Begleiterfertigkeiten", 782 => "Ghul", 270 => "Allgemein", 213 => "Aasvogel", 210 => "Bär", 763 => "Drachenfalke", 211 => "Eber",
767 => "Felshetzer", 653 => "Fledermaus", 788 => "Geisterbestie", 215 => "Gorilla", 654 => "Hyäne", 209 => "Katze", 787 => "Kernhund",
214 => "Krebs", 212 => "Krokilisk", 775 => "Motte", 764 => "Netherrochen", 217 => "Raptor", 655 => "Raubvogel", 786 => "Rhinozeros",
251 => "Schildkröte", 780 => "Schimäre", 768 => "Schlange", 783 => "Silithid", 236 => "Skorpid", 766 => "Sphärenjäger", 203 => "Spinne",
765 => "Sporensegler", 781 => "Teufelssaurier", 218 => "Weitschreiter", 785 => "Wespe", 656 => "Windnatter", 208 => "Wolf", 784 => "Wurm",
204 => "Leerwandler", 205 => "Sukkubus", 189 => "Teufelsjäger", 761 => "Teufelswache", 188 => "Wichtel",
),
-7 => array("Begleitertalente", 410 => "Gerissenheit", 411 => "Wildheit", 409 => "Hartnäckigkeit"),
11 => array(
"Berufe",
171 => "Alchemie",
164 => array("Schmiedekunst", 9788 => "Rüstungsschmied", 9787 => "Waffenschmied", 17041 => "Axtschmiedemeister", 17040 => "Hammerschmiedemeister", 17039 => "Schwertschmiedemeister"),
333 => "Verzauberkunst",
202 => array("Ingenieurskunst", 20219 => "Gnomeningenieurskunst", 20222 => "Gobliningenieurskunst"),
182 => "Kräuterkunde",
773 => "Inschriftenkunde",
755 => "Juwelenschleifen",
165 => array("Lederverarbeitung", 10656 => "Drachenschuppenlederverarbeitung", 10658 => "Elementarlederverarbeitung", 10660 => "Stammeslederverarbeitung"),
186 => "Bergbau",
393 => "Kürschnerei",
197 => array("Schneiderei", 26798 => "Mondstoffschneiderei", 26801 => "Schattenstoffschneiderei", 26797 => "Zauberfeuerschneiderei"),
),
9 => array("Nebenberufe", 185 => "Kochkunst", 129 => "Erste Hilfe", 356 => "Angeln", 762 => "Reiten"),
-8 => "NPC-Fähigkeiten",
-9 => "GM-Fähigkeiten",
0 => "Nicht kategorisiert"
),
'armorSubClass' => array(
"Sonstiges", "Stoffrüstung", "Lederrüstung", "Schwere Rüstung", "Plattenrüstung",
null, "Schilde", "Buchbände", "Götzen", "Totems",
"Siegel"
),
'weaponSubClass' => array(
"Einhandäxte", "Zweihandäxte", "Bögen", "Schusswaffen", "Einhandstreitkolben",
"Zweihandstreitkolben", "Stangenwaffen", "Einhandschwerter", "Zweihandschwerter", null,
"Stäbe", null, null, "Faustwaffen", "Diverse",
"Dolche", "Wurfwaffe", null, "Armbrüste", "Zauberstäbe",
"Angelruten"
),
'subClassMasks' => array(
0x02A5F3 => 'Nahkampfwaffe', 0x0060 => 'Schild', 0x04000C => 'Distanzwaffe', 0xA091 => 'Einhandnahkampfwaffe'
),
'traitShort' => array(
'atkpwr' => "Angr", 'rgdatkpwr' => "DAngr", 'splpwr' => "ZMacht",
'arcsplpwr' => "ArkM", 'firsplpwr' => "FeuM", 'frosplpwr' => "FroM",
'holsplpwr' => "HeiM", 'natsplpwr' => "NatM", 'shasplpwr' => "SchM",
'splheal' => "Heil"
)
),
'item' => array(
@@ -319,7 +446,7 @@ $lang = array(
"Brust", "Waffenhand", "Schildhand", "In der Schildhand geführt", "Projektil",
"Wurfwaffe", "Distanzwaffe", "Köcher", "Relikt"
),
'armorSubclass' => array(
'armorSubClass' => array(
"Sonstiges", "Stoff", "Leder", "Schwere Rüstung", "Platte",
null, "Schild", "Buchband", "Götze", "Totem",
"Sigel"
@@ -372,7 +499,7 @@ $lang = array(
"Erhöht Waffenkundewertung um %d.",
"Erhöht Angriffskraft um %d.",
"Erhöht Distanzangriffskraft um %d.",
"Erhöht die Angriffskraft in Katzen-, Bären- oder Mondkingestalt um %d.",
"Erhöht die Angriffskraft in Katzen-, Bären-, Terrorbären- und Mondkingestalt um %d.",
"Erhöht den von Zaubern und Effekten verursachten Schaden um bis zu %d.",
"Erhöht die von Zaubern und Effekten verursachte Heilung um bis zu %d.",
"Stellt alle 5 Sek. %d Mana wieder her.",
@@ -383,7 +510,8 @@ $lang = array(
"Erhöht Blockwert um %d.",
"Unbekannter Bonus #%d (%d)",
)
)
),
'colon' => ': '
);
?>

View File

@@ -43,6 +43,9 @@ $lang = array(
'minutesAbbr' => "min",
'secondsAbbr' => "sec",
'millisecsAbbr' => "ms",
'n_a' => "n/a",
// err_title = An error in AoWoW
// un_err = Enter your username
// pwd_err = Enter your password
@@ -79,6 +82,11 @@ $lang = array(
'classes' => "Classes",
'currency' => "currency",
'currencies' => "Currencies",
'difficulty' => "Difficulty",
'dispelType' => "Dispel type",
'duration' => "Duration",
'glyphType' => "Glyph type",
'race' => "race",
'races' => "Races",
'title' => "title",
'titles' => "Titles",
@@ -88,15 +96,29 @@ $lang = array(
'cooldown' => "%s cooldown",
'itemset' => "item Set",
'itemsets' => "Item Sets",
'mechanic' => "Mechanic",
'mechAbbr' => "Mech.",
'pet' => "Pet",
'pets' => "Hunter Pets",
'requires' => "Requires",
'requires' => "Requires %s",
'requires2' => "Requires",
'reqLevel' => "Requires Level %s",
'reqLevelHlm' => "Requires Level %s",
'reqSkillLevel' => "Required skill level",
'level' => "Level",
'school' => "School",
'spell' => "spell",
'spells' => "Spells",
'valueDelim' => " to ",
'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",
11 => "Draconic", 12 => "Kalimag", 13 => "Gnomish", 14 => "Troll", 33 => "Gutterspeak", 35 => "Draenei", 36 => "Zombie", 37 => "Gnomish Binary", 38 => "Goblin Binary"
),
'gl' => array(null, "Major", "Minor"),
'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"),
'dt' => array(null, "Magic", "Curse", "Disease", "Poison", "Stealth", "Invisibility", null, null, "Enrage"),
'sc' => array("Physical", "Holy", "Fire", "Nature", "Frost", "Shadow", "Arcane"),
'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"),
@@ -110,6 +132,17 @@ $lang = array(
null, null, "Swift Flight Form", "Shadow Form", "Flight Form",
"Stealth", "Moonkin Form", "Spirit of Redemption"
),
'me' => array(
null, "Charmed", "Disoriented", "Disarmed", "Distracted", "Fleeing", "Gripped", "Rooted",
"Pacified", "Silenced", "Asleep", "Ensnared", "Stunned", "Frozen", "Incapacitated", "Bleeding",
"Healing", "Polymorphed", "Banished", "Shielded", "Shackled", "Mounted", "Seduced", "Turned",
"Horrified", "Invulnerable", "Interrupted", "Dazed", "Discovery", "Invulnerable", "Sapped", "Enraged"
),
'ct' => array(
null, "Beast", "Dragonkin", "Demon", "Elemental",
"Giant", "Undead", "Humanoid", "Critter", "Mechanical",
"Uncategorized", "Totem", "Non-combat Pet", "Gas Cloud"
),
'pvpRank' => array(
null, "Private / Scout", "Corporal / Grunt",
"Sergeant / Sergeant", "Master Sergeant / Senior Sergeant", "Sergeant Major / First Sergeant",
@@ -242,6 +275,26 @@ $lang = array(
)
),
'spell' => array(
'_spellDetails' => "Spell Details",
'_cost' => "Cost",
'_range' => "Range",
'_castTime' => "Cast Time",
'_cooldown' => "Cooldown",
'_distUnit' => "yards",
'_forms' => "Forms",
'_aura' => "Aura",
'_effect' => "Effect",
'_none' => "None",
'_gcd' => "GCD",
'_globCD' => "Global Cooldown",
'_gcdCategory' => "GCD category",
'_value' => "Value",
'_radius' => "Radius",
'_interval' => "Interval",
'_inSlot' => "in slot",
'starter' => "Starter spell",
'trainingCost' => "Training cost",
'remaining' => "%s remaining",
'untilCanceled' => "until canceled",
'castIn' => "%s sec cast",
@@ -250,16 +303,81 @@ $lang = array(
'channeled' => "Channeled",
'range' => "%s yd range",
'meleeRange' => "Melee Range",
'unlimRange' => "Unlimited Range",
'reagents' => "Reagents",
'tools' => "Tools",
'home' => "&lt;Inn&gt;",
'pctCostOf' => "of base %s",
'costPerSec' => ", plus %s per second",
'costPerSec' => ", plus %s per sec",
'costPerLevel' => ", plus %s per level",
'powerRunes' => ["Frost", "Unholy", "Blood", "Death"],
'powerTypes' => array(
-2 => "Health", -1 => null, "Mana", "Rage", "Focus", "Energy", "Happiness", "Rune", "Runic Power",
'AMMOSLOT' => "Ammo", 'STEAM' => "Steam Pressure", 'WRATH' => "Wrath", 'PYRITE' => "Pyrite",
'HEAT' => "Heat", 'OOZE' => "Ooze", 'BLOOD_POWER' => "Blood Power"
),
'relItems' => array (
'base' => "<small>Show %s related to <b>%s</b></small>",
'link' => " or ",
'recipes' => "<a href=\"?items=9.%s\">recipe items</a>",
'crafted' => "<a href=\"?items&filter=cr=86;crs=%s\">crafted items</a>"
),
'cat' => array(
7 => "Class Skills", // classList
-13 => "Glyphs", // classList
-11 => array("Proficiencies", 8 => "Armor", 6 => "Weapon", 10 => "Languages"),
-4 => "Racial Traits",
-2 => "Talents", // classList
-6 => "Companions",
-5 => "Mounts",
-3 => array(
"Pet Skills", 782 => "Ghoul", 270 => "Generic", 653 => "Bat", 210 => "Bear", 655 => "Bird of Prey", 211 => "Boar",
213 => "Carrion Bird", 209 => "Cat", 780 => "Chimaera", 787 => "Core Hound", 214 => "Crab", 212 => "Crocolisk", 781 => "Devilsaur",
763 => "Dragonhawk", 215 => "Gorilla", 654 => "Hyena", 775 => "Moth", 764 => "Nether Ray", 217 => "Raptor", 767 => "Ravager",
786 => "Rhino", 236 => "Scorpid", 768 => "Serpent", 783 => "Silithid", 203 => "Spider", 788 => "Spirit Beast", 765 => "Sporebat",
218 => "Tallstrider", 251 => "Turtle", 766 => "Warp Stalker", 785 => "Wasp", 656 => "Wind Serpent", 208 => "Wolf", 784 => "Worm",
761 => "Felguard", 189 => "Felhunter", 188 => "Imp", 205 => "Succubus", 204 => "Voidwalker"
),
-7 => array("Pet Talents", 410 => "Cunning", 411 => "Ferocity", 409 => "Tenacity"),
11 => array(
"Professions",
171 => "Alchemy",
164 => array("Blacksmithing", 9788 => "Armorsmithing", 9787 => "Weaponsmithing", 17041 => "Master Axesmithing", 17040 => "Master Hammersmithing", 17039 => "Master Swordsmithing"),
333 => "Enchanting",
202 => array("Engineering", 20219 => "Gnomish Engineering", 20222 => "Goblin Engineering"),
182 => "Herbalism",
773 => "Inscription",
755 => "Jewelcrafting",
165 => array("Leatherworking", 10656 => "Dragonscale Leatherworking", 10658 => "Elemental Leatherworking", 10660 => "Tribal Leatherworking"),
186 => "Mining",
393 => "Skinning",
197 => array("Tailoring", 26798 => "Mooncloth Tailoring", 26801 => "Shadoweave Tailoring", 26797 => "Spellfire Tailoring"),
),
9 => array ("Secondary Skills", 185 => "Cooking", 129 => "First Aid", 356 => "Fishing", 762 => "Riding"),
-8 => "NPC Abilities",
-9 => "GM Abilities",
0 => "Uncategorized"
),
'armorSubClass' => array(
"Miscellaneous", "Cloth Armor", "Leather Armor", "Mail Armor", "Plate Armor",
null, "Shilds", "Librams", "Idols", "Totems",
"Sigils"
),
'weaponSubClass' => array(
"One-Handed Axes", "Two-Handed Axes", "Bows", "Guns", "One-Handed Maces",
"Two-Handed Maces", "Polearms", "One-Handed Swords", "Two-Handed Swords", null,
"Staves", null, null, "Fist Weapons", "Miscellaneous",
"Daggers", "Thrown", null, "Crossbows", "Wands",
"Fishing Poles"
),
'subClassMasks' => array(
0x02A5F3 => 'Melee Weapon', 0x0060 => 'Shield', 0x04000C => 'Ranged Weapon', 0xA091 => 'One-Handed Melee Weapon'
),
'traitShort' => array(
'atkpwr' => "AP", 'rgdatkpwr' => "RAP", 'splpwr' => "SP",
'arcsplpwr' => "ArcP", 'firsplpwr' => "FireP", 'frosplpwr' => "FroP",
'holsplpwr' => "HolP", 'natsplpwr' => "NatP", 'shasplpwr' => "ShaP",
'splheal' => "Heal"
)
),
'item' => array(
@@ -279,7 +397,6 @@ $lang = array(
'addsDps' => "Adds",
'fap' => "Feral Attack Power",
'durability' => "Durability",
'duration' => "Duration",
'realTime' => "real time",
'conjured' => "Conjured Item",
'damagePhys' => "%s Damage",
@@ -314,12 +431,12 @@ $lang = array(
'inventoryType' => array(
null, "Head", "Neck", "Shoulder", "Shirt",
"Chest", "Waist", "Legs", "Feet", "Wrist",
"Hands", "Finger", "Trinket", "One-hand", "Off Hand",
"Ranged", "Back", "Two-hand", "Bag", "Tabard",
"Hands", "Finger", "Trinket", "One-Hand", "Off Hand",
"Ranged", "Back", "Two-Hand", "Bag", "Tabard",
"Chest", "Main Hand", "Off Hand", "Held In Off-Hand", "Projectile",
"Thrown", "Ranged", "Quiver", "Relic"
),
'armorSubclass' => array(
'armorSubClass' => array(
"Miscellaneous", "Cloth", "Leather", "Mail", "Plate",
null, "Shild", "Libram", "Idol", "Totem",
"Sigil"
@@ -383,7 +500,8 @@ $lang = array(
"Increases the block value of your shield by %d.",
"Unknown Bonus #%d (%d)",
)
)
),
'colon' => ': '
);
?>

View File

@@ -3,6 +3,11 @@
if (!defined('AOWOW_REVISION'))
die('illegal access');
/*
some translations have yet to be taken from or improved by the use of:
<path>\World of Warcraft\Data\esES\patch-esES-3.MPQ\Interface\FrameXML\GlobalStrings.lua
like: ITEM_MOD_*, POWER_TYPE_*, ITEM_BIND_*, PVP_RANK_*
*/
$lang = array(
// page variables
@@ -43,7 +48,8 @@ $lang = array(
'minutesAbbr' => "min",
'secondsAbbr' => "seg",
'millisecsAbbr' => "[ms]",
'name' => "Nombre",
'n_a' => "n/d",
// filter
'extSearch' => "Extender búsqueda",
@@ -56,6 +62,7 @@ $lang = array(
'refineSearch' => "Sugerencia: Refina tu búsqueda llendo a una <a href=\"javascript:;\" id=\"fi_subcat\">subcategoría</a>.",
// infobox
'name' => "Nombre",
'disabled' => "[Disabled]",
'disabledHint' => "[Cannot be attained or completed]",
'serverside' => "[Serverside]",
@@ -72,6 +79,11 @@ $lang = array(
'classes' => "Clases",
'currency' => "monedas",
'currencies' => "Monedas",
'difficulty' => "Dificultad",
'dispelType' => "Tipo de disipación",
'duration' => "Duración",
'glyphType' => "Tipo de glifo",
'race' => "raza",
'races' => "Razas",
'title' => "título",
'titles' => "Títulos",
@@ -81,16 +93,30 @@ $lang = array(
'cooldown' => "%s de reutilización",
'itemset' => "conjunto de objetos",
'itemsets' => "Conjuntos de objetos",
'mechanic' => "Mecanica",
'mechAbbr' => "Mec.",
'pet' => "Mascota",
'pets' => "Mascotas de cazador",
'requires' => "Requiere",
'requires' => "Requiere %s",
'requires2' => "Requiere",
'reqLevel' => "Necesitas ser de nivel %s",
'reqLevelHlm' => "Necesitas ser de nivel %s",
'reqSkillLevel' => "Requiere nivel de habilidad",
'level' => "Nivel",
'school' => "Escuela",
'spell' => "hechizo",
'spells' => "Hechizos",
'valueDelim' => " - ",
'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",
11 => "Dracónico", 12 => "Kalimag", 13 => "Gnomótico", 14 => "Trol", 33 => "Viscerálico", 35 => "Draenei", 36 => "Zombie", 37 => "Binario gnomo", 38 => "Binario goblin"
),
'gl' => array(null, "Sublime", "Menor"),
'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"),
'dt' => array(null, "Magia", "Maldición", "Enfermedad", "Veneno", "Sigilo", "Invisibilidad", null, null, "Enfurecer"),
'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"),
@@ -99,10 +125,25 @@ $lang = array(
"Forma de oso", null, null, "Forma de oso temible", null,
null, null, null, "Danza de las Sombras", null,
null, "Lobo fantasmal", "Actitud de batalla", "Actitud defensiva", "Actitud rabiosa",
null, null, "Metamorfosis", null, null,
null, null, "Forma de vuelo presto", "Forma de las Sombras", "Forma de vuelo",
null, null, "Metamorfosis", null, null,
null, null, "Forma de vuelo presto", "Forma de las Sombras", "Forma de vuelo",
"Sigilo", "Forma de lechúcico lunar", "Espíritu redentor"
),
'me' => array(
null, "Embelesado", "Desorientado", "Desarmado", "Distraído", "Huyendo", "Agarrado", "Enraizado",
"Pacificado", "Silenciado", "Dormido", "Frenado", "Aturdido", "Congelado", "Incapacitado", "Sangrando",
"Sanacíon", "Polimorfado", "Desterrado", "Protegido", "Aprisionado", "Montado", "Seducido", "Girado",
"Horrorizado", "Invulnerable", "Interrumpido", "Atontado", "Descubierto", "Invulnerable", "Aporreado", "Iracundo"
),
'ct' => array(
null, "Bestia", "Dragonante", "Demonio", "Elemental",
"Gigante", "No-muerto", "Humanoide", "Alimaña", "Mecánico",
"Sin categoría", "Tótem", "Mascota mansa", "Nube de gas"
),
'professions' => array(
171 => "Alquimia", 164 => "Herrería", 333 => "Encantamiento", 202 => "Ingeniería", 773 => "Inscripción", 755 => "Joyería",
165 => "Peletería", 186 => "Minería", 197 => "Sastrería", 185 => "Cocina", 129 => "Primeros auxilios", 356 => "Pesca"
),
'pvpRank' => array(
null, "Private / Scout", "Corporal / Grunt",
"Sergeant / Sergeant", "Master Sergeant / Senior Sergeant", "Sergeant Major / First Sergeant",
@@ -195,6 +236,26 @@ $lang = array(
)
),
'spell' => array(
'_spellDetails' => "Detalles de hechizos",
'_cost' => "Costo",
'_range' => "Rango",
'_castTime' => "Tiempo de lanzamiento",
'_cooldown' => "Reutilización",
'_distUnit' => "metros",
'_forms' => "Formas",
'_aura' => "Aura",
'_effect' => "Efecto",
'_none' => "Ninguno",
'_gcd' => "GCD",
'_globCD' => "Tiempo global de reutilización",
'_gcdCategory' => "Categoría GCD",
'_value' => "Valor",
'_radius' => "Radio",
'_interval' => "Intérvalo",
'_inSlot' => "en la casilla",
'starter' => "Hechizo inicial",
'trainingCost' => "Costo de enseñanza",
'remaining' => "%s restantes",
'untilCanceled' => "hasta que se cancela",
'castIn' => "Hechizo de %s seg",
@@ -203,16 +264,81 @@ $lang = array(
'channeled' => "Canalizado",
'range' => "Alcance de %s m",
'meleeRange' => "Alcance de ataques cuerpo a cuerpo",
'unlimRange' => "Rango ilimitado",
'reagents' => "Componentes",
'tools' => "Herramientas",
'home' => "&lt;Posada&gt;",
'pctCostOf' => "del %s base",
'costPerSec' => ", mas %s por segundo",
'costPerLevel' => ", mas %s por nivel",
'powerRunes' => ["Escarcha", "Profano", "Sangre", "Muerte"],
'powerTypes' => array( // heat => spell 70174
-2 => "Salud", -1 => null, "Maná", "Ira", "Enfoque", "Energía", "[Happiness]", "Runa", "Poder rúnico",
'AMMOSLOT' => "[Ammo]", 'STEAM' => "[Steam Pressure]", 'WRATH' => "[Wrath]", 'PYRITE' => "[Pyrite]",
'HEAT' => "[Heat]", 'OOZE' => "[Ooze]", 'BLOOD_POWER' => "[Blood Power]" // spellname of 72370
),
'relItems' => array (
'base' => "<small>Muestra %s relacionados con <b>%s</b></small>",
'link' => " u ",
'recipes' => "<a href=\"?items=9.%s\">objetos de receta</a>",
'crafted' => "<a href=\"?items&filter=cr=86;crs=%s\">objetos fabricados</a>"
),
'cat' => array(
7 => "Habilidades",
-13 => "Glifos",
-11 => array("Habilidades", 6 => "Armas", 8 => "Armadura", 10 => "Lenguas"),
-4 => "Habilidades de raza",
-2 => "Talentos",
-6 => "Compañeros",
-5 => "Monturas",
-3 => array(
"Habilidades de mascota", 782 => "Necrófago", 270 => "Genérico", 766 => "Acechador deformado", 203 => "Araña", 655 => "Ave rapaz", 785 => "Avispa",
788 => "Bestia espíritu", 787 => "Can del Núcleo", 214 => "Cangrejo", 213 => "Carroñero", 212 => "Crocolisco", 781 => "Demosaurio", 767 => "Devastador",
763 => "Dracohalcón", 236 => "Escórpido", 765 => "Esporiélago", 209 => "Felino", 215 => "Gorila", 784 => "Gusano", 654 => "Hiena",
211 => "Jabalí", 208 => "Lobo", 653 => "Murciélago", 210 => "Oso", 775 => "Palomilla", 780 => "Quimera", 217 => "Raptor",
764 => "Raya abisal", 786 => "Rinoceronte", 768 => "Serpiente", 656 => "Serpiente alada", 783 => "Silítido", 251 => "Tortuga", 218 => "Zancaalta",
761 => "Guardia vil", 189 => "Manáfago", 188 => "Diablillo", 205 => "Súcubo", 204 => "Abisario"
),
-7 => array("Talentos de mascotas", 411 => "Astucia", 410 => "Ferocidad", 409 => "Tenacidad"),
11 => array(
"Profesiones",
171 => "Alquimia",
164 => array("Herrería", 9788 => "Forjador de armaduras", 9787 => "Forjador de armas", 17041 => "Maestro forjador de hachas", 17040 => "Maestro forjador de mazas", 17039 => "Maestro forjador de espadas"),
333 => "Encantamiento",
202 => array("Ingeniería", 20219 => "Ingeniero gnómico", 20222 => "Ingeniero goblin"),
182 => "Herboristería",
773 => "Inscripción",
755 => "Joyería",
165 => array("Peletería", 10656 => "Peletería de escamas de dragón", 10658 => "Peletería de elemental", 10660 => "Peletería de tribal"),
186 => "Minería",
393 => "Desollar",
197 => array("Sastrería", 26798 => "Sastería de tela lunar primigenia", 26801 => "Sastrería de tejido de sombras", 26797 => "Sastería de fuego de hechizo"),
),
9 => array("Habilidades secundarias", 185 => "Cocina", 129 => "Primeros auxilios", 356 => "Pesca", 762 => "Equitación"),
-8 => "Habilidades de PNJ",
-9 => "Habilidades de MJ",
0 => "Sin categoría"
),
'armorSubClass' => array(
"Misceláneo", "Armaduras de tela","Armaduras de cuero", "Armaduras de malla", "Armaduras de placas",
null, "Escudos", "Tratados", "Ídolos", "Tótems",
"Sigilos"
),
'weaponSubClass' => array(
"Hachas de una mano", "Hachas de dos manos","Arcos", "Armas de fuego", "Mazas de una mano",
"Mazas de dos manos", "Armas de asta", "Espadas de una mano", "Espadas de dos manos", null,
"Bastones", null, null, "Armas de puño", "Misceláneo",
"Dagas", "Arrojadizas", null, "Ballestas", "Varitas",
"Cañas de pescar"
),
'subClassMasks' => array(
0x02A5F3 => 'Arma cuerpo a cuerpo', 0x0060 => 'Escudo', 0x04000C => 'Arma de ataque a distancia', 0xA091 => 'Arma cuerpo a cuerpo 1M'
),
'traitShort' => array(
'atkpwr' => "PA", 'rgdatkpwr' => "PA", 'splpwr' => "PH",
'arcsplpwr' => "PArc", 'firsplpwr' => "PFue", 'frosplpwr' => "PEsc",
'holsplpwr' => "PSag", 'natsplpwr' => "PNat", 'shasplpwr' => "PSom",
'splheal' => "Sana"
)
),
'item' => array(
@@ -272,7 +398,7 @@ $lang = array(
"Pecho", "Mano derecha", "Mano izquierda", "Sostener con la mano izquierda", "Proyectiles",
"Arrojadiza", "A distancia", "Carcaj", "Reliquia"
),
'armorSubclass' => array(
'armorSubClass' => array(
"Misceláneo", "Tela", "Cuero", "Malla", "Placas",
null, "Escudo", "Tratado", "Ídolo", "Tótem",
"Sigilo"
@@ -336,7 +462,8 @@ $lang = array(
"Aumenta el valor de bloqueo de tu escudo %d p.",
"Estadística no utilizada #%d (%d)",
)
)
),
'colon' => ': '
);
?>

View File

@@ -3,6 +3,11 @@
if (!defined('AOWOW_REVISION'))
die('illegal access');
/*
some translations have yet to be taken from or improved by the use of:
<path>\World of Warcraft\Data\frFR\patch-frFR-3.MPQ\Interface\FrameXML\GlobalStrings.lua
like: ITEM_MOD_*, POWER_TYPE_*, ITEM_BIND_*, PVP_RANK_*
*/
$lang = array(
// page variables
@@ -43,7 +48,8 @@ $lang = array(
'minutesAbbr' => "min",
'secondsAbbr' => "s",
'millisecsAbbr' => "[ms]",
'name' => "Nom",
'n_a' => "n/d",
// filter
'extSearch' => "Recherche avancée",
@@ -56,6 +62,7 @@ $lang = array(
'refineSearch' => "Astuce : Affinez votre recherche en utilisant une <a href=\"javascript:;\" id=\"fi_subcat\">sous-catégorie</a>.",
// infobox
'name' => "Nom",
'disabled' => "[Disabled]",
'disabledHint' => "[Cannot be attained or completed]",
'serverside' => "[Serverside]",
@@ -72,6 +79,11 @@ $lang = array(
'classes' => "Classes",
'currency' => "monnaies",
'currencies' => "Monnaies",
'difficulty' => "Difficulté",
'dispelType' => "Type de dissipation",
'duration' => "Durée",
'glyphType' => "Type de glyphe",
'race' => "race",
'races' => "Races",
'title' => "titre",
'titles' => "Titres",
@@ -81,15 +93,29 @@ $lang = array(
'cooldown' => "%s de recharge",
'itemset' => "ensemble d'objets",
'itemsets' => "Ensembles d'objets",
'mechanic' => "Mécanique",
'mechAbbr' => "Mécan.",
'pet' => "Familier",
'pets' => "Familiers de chasseur",
'requires' => "Requiert",
'requires' => "%s requis",
'requires2' => "Requiert",
'reqLevel' => "Niveau %s requis",
'reqLevelHlm' => "Requiert Niveau %s",
'reqSkillLevel' => "Niveau de compétence requis",
'level' => "Niveau",
'school' => "École",
'spell' => "sort",
'spells' => "Sorts",
'valueDelim' => " - ",
'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",
11 => "Draconique", 12 => "Kalimag", 13 => "Gnome", 14 => "Troll", 33 => "Bas-parler", 35 => "Draeneï", 36 => "Zombie", 37 => "Binaire gnome", 38 => "Binaire gobelin"
),
'gl' => array(null, "Majeur", "Mineur"),
'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"),
'dt' => array(null, "Magie", "Malédiction", "Maladie", "Poison", "Camouflage", "Invisibilité", null, null, "Enrager"),
'sc' => array("Physique", "Sacré", "Feu", "Nature", "Givre", "Ombre", "Arcane"),
'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ï"),
@@ -103,6 +129,21 @@ $lang = array(
null, null, "Forme de vol rapide", "Forme d'Ombre", "Forme de vol",
"Camouflage", "Forme de sélénien", "Esprit de rédemption"
),
'me' => array(
null, "Charmé", "Désorienté", "Désarmé", "Distrait", "En fuite", "Maladroit", "Immobilisé",
"Pacifié", "Réduit au silence", "Endormi", "Pris au piège", "Étourdi", "Gelé", "Stupéfié", "Sanguinolent",
"Soins", "Métamorphosé", "Banni", "Protégé", "Entravé", "Monté", "Séduit", "Repoussé",
"Horrifié", "Invulnérable", "Interrompu", "Hébété", "Découverte", "Invulnérable", "Assommé", "Enragé"
),
'ct' => array(
null, "Bête", "Draconien", "Démon", "Élémentaire",
"Géant", "Mort-vivant", "Humanoïde", "Bestiole", "Mécanique",
"Non classés", "Totem", "Familier pacifique", "Nuage de gaz"
),
'professions' => array(
171 => "Alchimie", 164 => "Forge", 333 => "Enchantement", 202 => "Ingénierie", 773 => "Calligraphie", 755 => "Joaillerie",
165 => "Travail du cuir", 186 => "Minage", 197 => "Couture", 185 => "Cuisine", 129 => "Secourisme", 356 => "Pêche"
),
'pvpRank' => array(
null, "Private / Scout", "Corporal / Grunt",
"Sergeant / Sergeant", "Master Sergeant / Senior Sergeant", "Sergeant Major / First Sergeant",
@@ -129,7 +170,7 @@ $lang = array(
'series' => "Série",
'outOf' => "sur",
'criteriaType' => "Criterium Type-Id:",
'itemReward' => "Vous recevrez:",
'itemReward' => "Vous recevrez :",
'titleReward' => "Vous devriez recevoir le titre \"<a href=\"?title=%d\">%s</a>\"",
'slain' => "tué",
),
@@ -195,6 +236,26 @@ $lang = array(
)
),
'spell' => array(
'_spellDetails' => "Détails sur le sort",
'_cost' => "Coût",
'_range' => "Portée",
'_castTime' => "Incantation",
'_cooldown' => "Recharge",
'_distUnit' => "mètres",
'_forms' => "Formes",
'_aura' => "Aura",
'_effect' => "Effet",
'_none' => "Aucun",
'_gcd' => "GCD",
'_globCD' => "Temps d'attente universel",
'_gcdCategory' => "Catégorie GCD",
'_value' => "Valeur",
'_radius' => "Rayon",
'_interval' => "Intervalle",
'_inSlot' => "dans l'emplacement",
'starter' => "Sortilège initiaux",
'trainingCost' => "Coût d'entraînement",
'remaining' => "%s restantes",
'untilCanceled' => "jusquà annulation",
'castIn' => "%s s d'incantation",
@@ -203,16 +264,81 @@ $lang = array(
'channeled' => "Canalisée",
'range' => "m de portée",
'meleeRange' => "Allonge",
'unlimRange' => "Portée illimitée",
'reagents' => "Composants",
'tools' => "Outils",
'home' => "%lt;Auberge&gt;",
'pctCostOf' => "de la %s de base",
'costPerSec' => ", plus %s par seconde",
'costPerLevel' => ", plus %s par niveau",
'powerRunes' => ["Givre", "Impie", "Sang", "Mort"],
'powerTypes' => array(
-2 => "vie", -1 => null, "mana", "rage", "focus", "énergie", "[Happiness]", "[Rune]", "puissance runique",
'AMMOSLOT' => "[Ammo]", 'STEAM' => "[Steam Pressure]", 'WRATH' => "courroux", 'PYRITE' => "Pyrite",
'HEAT' => "chaleur", 'OOZE' => "limon", 'BLOOD_POWER' => "puissance de sang"
),
'relItems' => array (
'base' => "<small>Montre %s reliés à <b>%s</b></small>",
'link' => " ou ",
'recipes' => "les <a href=\"?items=9.%s\">recettes</a>",
'crafted' => "les <a href=\"?items&filter=cr=86;crs=%s\">objets fabriqués</a>"
),
'cat' => array(
7 => "Techniques",
-13 => "Glyphes",
-11 => array("Compétences", 8 => "Armure", 10 => "Langues", 6 => "Armes"),
-4 => "Traits raciaux",
-2 => "Talents",
-6 => "Compagnons",
-5 => "Montures",
-3 => array(
"Habilité de familier", 782 => "Goule", 270 => "Générique", 203 => "Araignée", 213 => "Charognard", 653 => "Chauve-souris", 787 => "Chien du Magma",
780 => "Chimère", 214 => "Crabe", 212 => "Crocilisque", 781 => "Diablosaure", 788 => "Esprit de bête", 763 => "Faucon-dragon", 209 => "Félin",
215 => "Gorille", 785 => "Guêpe", 218 => "Haut-trotteur", 654 => "Hyène", 208 => "Loup", 655 => "Oiseau de proie", 210 => "Ours",
775 => "Phalène", 764 => "Raie du Néant", 217 => "Raptor", 767 => "Ravageur", 786 => "Rhinocéros", 211 => "Sanglier", 236 => "Scorpide",
768 => "Serpent", 656 => "Serpent des vents", 783 => "Silithide", 765 => "Sporoptère", 251 => "Tortue", 766 => "Traqueur dim.", 784 => "Ver",
761 => "Gangregarde", 189 => "Chasseur corrompu", 188 => "Diablotin", 205 => "Succube", 204 => "Marcheur du Vide"
),
-7 => array("Talents de familiers", 411 => "Ruse", 410 => "Férocité", 409 => "Tenacité"),
11 => array(
"Métiers",
171 => "Alchimie",
164 => array("Forge", 9788 => "Fabricant d'armures", 9787 => "Fabricant d'armes", 17041 => "Maître fabricant de haches", 17040 => "Maître fabricant de marteaux", 17039 => "Maître fabricant d'épées"),
333 => "Enchantement",
202 => array("Ingénierie", 20219 => "Ingénieur gnome", 20222 => "Ingénieur goblin"),
182 => "Herboristerie",
773 => "Calligraphie",
755 => "Joaillerie",
165 => array("Travail du cuir", 10656 => "Travail du cuir d'écailles de dragon", 10658 => "Travail du cuir élémentaire", 10660 => "Travail du cuir tribal"),
186 => "Minage",
393 => "Dépeçage",
197 => array("Couture", 26798 => "Couture d'étoffe lunaire", 26801 => "Couture de tisse-ombre", 26797 => "Couture du feu-sorcier"),
),
9 => array("Compétences secondaires", 185 => "Cuisine", 129 => "Secourisme", 356 => "Pêche", 762 => "Monte"),
-9 => "Habilité de MJ",
-8 => "Habilité de PNJ",
0 => "Non classés"
),
'armorSubClass' => array(
"Divers", "Armures en tissu", "Armures en cuir", "Armures en mailles", "Armures en plaques",
null, "Boucliers", "Librams", "Idoles", "Totems",
"Cachets"
),
'weaponSubClass' => array(
"Haches à une main", "Haches à deux mains", "Arcs", "Armes à feu", "Masses à une main",
"Masses à deux mains", "Armes d'hast", "Epées à une main", "Epées à deux mains", null,
"Bâtons", null, null, "Armes de pugilat", "Divers",
"Dagues", "Armes de jet", null, "Arbalètes", "Baguettes",
"Cannes à pêche"
),
'subClassMasks' => array(
0x02A5F3 => 'Arme de mêlée', 0x0060 => 'Bouclier', 0x04000C => 'Arme à distance', 0xA091 => 'Arme de mêlée à une main'
),
'traitShort' => array(
'atkpwr' => "PA", 'rgdatkpwr' => "PAD", 'splpwr' => "PS",
'arcsplpwr' => "PArc", 'firsplpwr' => "PFeu", 'frosplpwr' => "PGiv",
'holsplpwr' => "PSac", 'natsplpwr' => "PNat", 'shasplpwr' => "POmb",
'splheal' => "Soins"
)
),
'item' => array(
@@ -272,7 +398,7 @@ $lang = array(
"Torse", "Main droite", "Main gauche", "Tenu en main gauche", "Projectile",
"Armes de jet", "À distance", "Carquois", "Relique"
),
'armorSubclass' => array(
'armorSubClass' => array(
"Divers", "Armures en tissu", "Armures en cuir", "Armures en mailles", "Armures en plaques",
null, "Bouclier", "Libram", "Idole", "Totem",
"Cachet"
@@ -336,7 +462,8 @@ $lang = array(
"Augmente la valeur de blocage de votre bouclier de %d.",
"Stat Inutilisée #%d (%d)",
)
)
),
'colon' => ' : '
);
?>

View File

@@ -3,6 +3,11 @@
if (!defined('AOWOW_REVISION'))
die('illegal access');
/*
some translations have yet to be taken from or improved by the use of:
<path>\World of Warcraft\Data\ruRU\patch-ruRu-3.MPQ\Interface\FrameXML\GlobalStrings.lua
like: ITEM_MOD_*, POWER_TYPE_*, ITEM_BIND_*, PVP_RANK_*
*/
$lang = array(
// page variables
@@ -43,7 +48,8 @@ $lang = array(
'minutesAbbr' => "мин",
'secondsAbbr' => "сек.",
'millisecsAbbr' => "[ms]",
'name' => "Название",
'n_a' => "нет",
// filter
'extSearch' => "Расширенный поиск",
@@ -56,6 +62,7 @@ $lang = array(
'refineSearch' => "Совет: Уточните поиск, добавив <a href=\"javascript:;\" id=\"fi_subcat\">подкатегорию</a>.",
// infobox
'name' => "Название",
'disabled' => "[Disabled]",
'disabledHint' => "[Cannot be attained or completed]",
'serverside' => "[Serverside]",
@@ -72,6 +79,11 @@ $lang = array(
'classes' => "Классы",
'currency' => "валюта",
'currencies' => "Валюта",
'difficulty' => "Сложность",
'dispelType' => "Тип рассеивания",
'duration' => "Длительность",
'glyphType' => "Тип символа",
'race' => "раса",
'races' => "Расы",
'title' => "звание",
'titles' => "Звания",
@@ -81,15 +93,29 @@ $lang = array(
'cooldown' => "Восстановление: %s",
'itemset' => "комплект",
'itemsets' => "Комплекты",
'mechanic' => "Механика",
'mechAbbr' => "Механика",
'pet' => "Питомец",
'pets' => "Питомцы охотников",
'requires' => "Требует:",
'requires' => "Требует %s",
'requires2' => "Требуется:",
'reqLevel' => "Требуется уровень: %s",
'reqLevelHlm' => "Требуется уровень: %s",
'reqSkillLevel' => "Требуется уровень навыка",
'level' => "Уровень",
'school' => "Школа",
'spell' => "заклинание",
'spells' => "Заклинания",
'valueDelim' => " - ",
'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"),
'languages' => array(
1 => "орочий", 2 => "дарнасский", 3 => "таурахэ", 6 => "дворфийский", 7 => "всеобщий", 8 => "язык демонов", 9 => "язык титанов", 10 => "талассийский",
11 => "драконий", 12 => "калимаг", 13 => "гномский", 14 => "язык троллей", 33 => "наречие нежити", 35 => "дренейский", 36 => "наречие зомби", 37 => "машинный гномский", 38 => "машинный гоблинский"
),
'gl' => array(null, "Большой", "Малый"),
'si' => array(-2 => "Орда только", -1 => "Альянс только", null, "Альянс", "Орда", "Обе"),
'resistances' => array(null, 'Сопротивление светлой магии', 'Сопротивление огню', 'Сопротивление силам природы', 'Сопротивление магии льда', 'Сопротивление темной магии', 'Сопротивление тайной магии'),
'di' => array(null, "Magic", "Curse", "Disease", "Poison", "Stealth", "Invisibility", null, null, "Enrage"),
'dt' => array(null, 'Магия', 'Проклятие', 'Болезнь', 'Яд', 'Незаметность', 'Невидимость', null, null, 'Исступление'),
'sc' => array("Физический урон", "Свет", "Огонь", "природа", "Лед", "Тьма", "Тайная магия"),
'cl' => array(null, "Воин", "Паладин", "Охотник", "Разбойник", "Жрец", "Рыцарь смерти", "Шаман", "Маг", "Чернокнижник", null, "Друид"),
'ra' => array(-2 => "Орда", -1 => "Альянс", "Обе", "Человек", "Орк", "Дворф", "Ночной эльф", "Нежить", "Таурен", "Гном", "Тролль", null, "Эльф крови", "Дреней"),
@@ -103,6 +129,21 @@ $lang = array(
null, null, "Облик стремительной птицы", "Облик Тьмы", "Облик птицы",
"Незаметность", "Облик лунного совуха", "Дух воздаяния"
),
'me' => array(
null, "Подчинённый", "Дезориентирован", "Разоружённый", "Отвлечён", "Убегающий", "Неуклюжий", "Оплетён",
"Немота", "В покое", "Усыплён", "Пойманный в ловушку", "Оглушен", "Замороженный", "Бездейственный", "Кровоточащий",
"Целительное", "Превращён", "Изгнан", "Ограждён", "Скован", "Оседлавший", "Соблазнён", "Обращение",
"Испуганный", "Неуязвимый", "Прервано", "Замедленный", "Открытие", "Неуязвимый", "Ошеломлён", "Исступление"
),
'ct' => array(
null, "Животное", "Дракон", "Демон", "Элементаль",
"Великан", "Нежить", "Гуманоид", "Существо", "Механизм",
"Разное", "Тотем", "Спутник", "Облако газа"
),
'professions' => array(
171 => "Алхимия", 164 => "Кузнечное дело", 333 => "Наложение чар", 202 => "Инженерное дело", 773 => "Начертание", 755 => "Ювелирное дело",
165 => "Кожевничество", 186 => "Горное дело", 197 => "Портняжное дело", 185 => "Кулинария", 129 => "Первая помощь", 356 => "Рыбная ловля",
),
'pvpRank' => array(
null, "Private / Scout", "Corporal / Grunt",
"Sergeant / Sergeant", "Master Sergeant / Senior Sergeant", "Sergeant Major / First Sergeant",
@@ -195,6 +236,26 @@ $lang = array(
)
),
'spell' => array(
'_spellDetails' => "Описание заклинания",
'_cost' => "Цена",
'_range' => "Радиус действия",
'_castTime' => "Применение",
'_cooldown' => "Восстановление",
'_distUnit' => "метров",
'_forms' => "Форма",
'_aura' => "аура",
'_effect' => "Эффект",
'_none' => "Нет",
'_gcd' => "ГКД",
'_globCD' => "Общее время восстановления (GCD)",
'_gcdCategory' => "Категория ГКД",
'_value' => "Значение",
'_radius' => "Радиус действия",
'_interval' => "Интервал",
'_inSlot' => "в слот",
'starter' => "Начальное заклинание",
'trainingCost' => "Цена обучения",
'remaining' => "Осталось: %s",
'untilCanceled' => "до отмены",
'castIn' => "Применение: %s сек.",
@@ -203,16 +264,81 @@ $lang = array(
'channeled' => "Направляемое",
'range' => "Радиус действия: %s м",
'meleeRange' => "Дистанция ближнего боя",
'unlimRange' => "Неограниченное расстояние",
'reagents' => "Реагент",
'home' => "%lt;Гостиница&gt;",
'tools' => "Инструменты",
'pctCostOf' => "от базовой %s",
'costPerSec' => ", плюс %s в секунду",
'costPerLevel' => ", плюс %s за уровень",
'powerRunes' => ["Лед", "Руна льда", "Руна крови", "Смерти"],
'powerTypes' => array(
-2 => "Здоровье", -1 => null, "Мана", "Ярость", "Тонус", "Энергия", "[Happiness]", "[Rune]", "Руническая сила",
'AMMOSLOT' => "[Ammo]", 'STEAM' => "[Steam Pressure]", 'WRATH' => "Гневу", 'PYRITE' => "Колчедан",
'HEAT' => "Жар", 'OOZE' => "Слизнюка", 'BLOOD_POWER' => "Сила крови"
),
'relItems' => array (
'base' => "<small>Показать %s, относящиеся к профессии <b>%s</b></small>",
'link' => " или ",
'recipes' => "<a href=\"?items=9.%s\">рецепты</a>",
'crafted' => "<a href=\"?items&filter=cr=86;crs=%s\">производимые предметы</a>"
),
'cat' => array(
7 => "Способности",
-13 => "Символы",
-11 => array("Умения", 8 => "Броня", 10 => "Языки", 6 => "Оружие"),
-4 => "Классовые навыки",
-2 => "Таланты",
-6 => "Спутники",
-5 => "Транспорт",
-3 => array(
"Способности питомцев", 782 => "Вурдалак", 270 => "Общий", 211 => "Вепрь", 208 => "Волк", 654 => "Гиена", 787 => "Гончая Недр",
215 => "Горилла", 218 => "Долгоног", 763 => "Дракондор", 788 => "Дух зверя", 781 => "Дьявозавр", 768 => "Змей", 209 => "Кошка",
214 => "Краб", 212 => "Кроколиск", 656 => "Крылатый змей", 653 => "Летучая мышь", 786 => "Люторог", 210 => "Медведь", 775 => "Мотылек",
767 => "Опустошитель", 785 => "Оса", 213 => "Падальщик", 203 => "Паук", 766 => "Прыгуана", 783 => "Силитид", 764 => "Скат Пустоты",
236 => "Скорпид", 655 => "Сова", 765 => "Спороскат", 780 => "Химера", 784 => "Червь", 251 => "Черепаха", 217 => "Ящер",
761 => "Страж Скверны", 189 => "Охотник Скверны", 188 => "Бес", 205 => "Суккуб", 204 => "Демон Бездны"
),
-7 => array("Таланты питомцев", 411 => "Хитрость", 410 => "Свирепость", 409 => "Упорство"),
11 => array(
"Профессии",
171 => "Алхимия",
164 => array("Кузнечное дело", 9788 => "Школа брони", 9787 => "Школа оружейников", 17041 => "Мастер школы топора", 17040 => "Мастер школы молота", 17039 => "Мастер ковки клинков"),
333 => "Наложение чар",
202 => array("Инженерное дело", 20219 => "Гномская механика", 20222 => "Гоблинская механика"),
182 => "Травничество",
773 => "Начертание",
755 => "Ювелирное дело",
165 => array("Кожевничество", 10656 => "Драконья чешуя", 10658 => "Стихия", 10660 => "Племена"),
186 => "Горное дело",
393 => "Снятие шкур",
197 => array("Портняжное дело", 26798 => "Портняжное дело изначальной луноткани", 26801 => "Портняжное дело тенеткани", 26797 => "Портняжное дело чародейского огня")
),
9 => array("Вторичные навыки", 185 => "Кулинария", 129 => "Первая помощь", 356 => "Рыбная ловля", 762 => "Верховая езда"),
-9 => "Способности ГМ",
-8 => "Способности НИП",
0 => "Разное"
),
'armorSubClass' => array(
"Разное", "Тканевые", "Кожаные", "Кольчужные", "Латные",
null, "Щиты", "Манускрипты", "Идолы", "Тотемы",
"Печати"
),
'weaponSubClass' => array(
"Одноручные топоры", "Двуручные топоры", "Луки", "Огнестрельное", "Одноручное дробящее",
"Двуручное дробящее", "Древковое", "Одноручные мечи", "Двуручные мечи", null,
"Посохи", null, null, "Кистевое", "Разное",
"Кинжалы", "Метательное", null, "Арбалеты", "Жезлы",
"Удочки"
),
'subClassMasks' => array(
0x02A5F3 => 'Оружие ближнего боя', 0x0060 => 'Щит', 0x04000C => 'Оружие дальнего боя', 0xA091 => 'Одноручное оружие ближнего боя'
),
'traitShort' => array(
'atkpwr' => "СА", 'rgdatkpwr' => "Сил", 'splpwr' => "СЗ",
'arcsplpwr' => "Урон", 'firsplpwr' => "Урон", 'frosplpwr' => "Урон",
'holsplpwr' => "Урон", 'natsplpwr' => "Урон", 'shasplpwr' => "Урон",
'splheal' => "Исцеление"
)
),
'item' => array(
@@ -272,7 +398,7 @@ $lang = array(
"Грудь", "Правая рука", "Левая рука", "Левая рука", "Боеприпасы",
"Метательное", "Спина", "Колчан", "Реликвия"
),
'armorSubclass' => array(
'armorSubClass' => array(
"Разное", "Ткань", "Кожа", "Кольчуга", "Латы",
null, "Щит", "Манускрипт", "Идол", "Тотем",
"Печать"
@@ -336,7 +462,8 @@ $lang = array(
"Увеличивает показатель блокирования щита на %d.",
"Unknown Bonus #%d (%d)",
)
)
),
'colon' => ': '
);
?>

File diff suppressed because it is too large Load Diff

452
pages/spells.php Normal file
View File

@@ -0,0 +1,452 @@
<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
require 'includes/class.filter.php';
$cats = Util::extractURLParams($pageParam);
$path = [0, 1];
$title = [Lang::$game['spells']]; // display max 2 cats, remove this base if nesecary
$filter = ['classPanel' => false, 'glyphPanel' => false];
$filterHash = !empty($_GET['filter']) ? '#'.sha1(serialize($_GET['filter'])) : null;
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_SPELL, -1, implode('.', $cats).$filterHash, User::$localeId]);
$validCats = array(
-2 => array( // Talents: Class => Skill
1 => [ 26, 256, 257],
2 => [594, 267, 184],
3 => [ 50, 163, 51],
4 => [253, 38, 39],
5 => [613, 56, 78],
6 => [770, 771, 772],
7 => [375, 373, 374],
8 => [237, 8, 6],
9 => [355, 354, 593],
11 => [574, 134, 573]
),
-3 => [782, 270, 653, 210, 655, 211, 213, 209, 780, 787, 214, 212, 781, 763, 215, 654, 775, 764, 217, 767, 786, 236, 768, 783, 203, 788, 765, 218, 251, 766, 785, 656, 208, 784, 761, 189, 188, 205, 204], // Pet Spells => Skill
-4 => true, // Racial Traits
-5 => true, // Mounts
-6 => true, // Companions
-7 => [409, 410, 411], // PetTalents => TalenTtabId
-8 => true, // NPC Abilities
-9 => true, // GM Abilities
-11 => [6, 8, 10], // Proficiencies [Weapon, Armor, Language]
-13 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 11], // Glyphs => Class (GlyphType via filter)
0 => true, // Uncategorized
7 => array( // Abilities: Class => Skill
1 => [ 26, 256, 257],
2 => [594, 267, 184],
3 => [ 50, 163, 51],
4 => [253, 38, 39],
5 => [613, 56, 78],
6 => [770, 771, 772, 776],
7 => [375, 373, 374],
8 => [237, 8, 6],
9 => [355, 354, 593],
11 => [574, 134, 573]
),
9 => [129, 185, 356, 762], // Secondary Skills
11 => array( // Professions: Skill => Spell
171 => true,
164 => [9788, 9787, 17041, 17040, 17039],
333 => true,
202 => [20219, 20222],
182 => true,
773 => true,
755 => true,
165 => [10656, 10658, 10660],
186 => true,
393 => true,
197 => [26798, 26801, 26797],
)
);
$shortFilter = array(
129 => [ 6, 7], // First Aid
164 => [ 2, 4], // Blacksmithing
165 => [ 8, 1], // Leatherworking
171 => [ 1, 6], // Alchemy
185 => [ 3, 5], // Cooking
186 => [ 9, 0], // Mining
197 => [10, 2], // Tailoring
202 => [ 5, 3], // Engineering
333 => [ 4, 8], // Enchanting
356 => [ 0, 9], // Fishing
755 => [ 7, 10], // Jewelcrafting
773 => [15, 0], // Inscription
);
if (!Util::isValidPage($validCats, $cats))
$smarty->error();
$path = array_merge($path, $cats);
if (isset($cats))
{
if (isset($cats[1]))
array_pop($title);
$x = @Lang::$spell['cat'][$cats[0]];
if (is_array($x))
{
if (is_array($x[0]))
array_unshift($title, $x[0][0]);
else
array_unshift($title, $x[0]);
}
else if ($x !== null)
array_unshift($title, $x);
}
if (!$smarty->loadCache($cacheKey, $pageData, $filter))
{
$conditions = [];
$visibleCols = [];
$hiddenCols = [];
switch($cats[0])
{
case -2: // Character Talents
$filter['classPanel'] = true;
array_push($visibleCols, 'singleclass', 'level', 'schools', 'tier');
$conditions[] = ['s.typeCat', -2];
if (isset($cats[1]))
array_unshift($title, Lang::$game['cl'][$cats[1]]);
if (isset($cats[1]) && empty($cats[2])) // i will NOT redefine those class2skillId ... reusing
$conditions[] = ['s.skillLine1', $validCats[-2][$cats[1]]];
else if (isset($cats[1]))
$conditions[] = ['s.skillLine1', $cats[2]];
break;
case -3: // Pet Spells
array_push($visibleCols, 'level', 'schools');
$conditions[] = ['s.typeCat', -3];
if (isset($cats[1]))
{
$xCond = null;
for ($i = -2; $i < 0; $i++)
{
foreach (Util::$skillLineMask[$i] as $idx => $pair)
{
if ($pair[1] == $cats[1])
{
$xCond = ['AND', ['s.skillLine1', $i], ['s.skillLine2OrMask', 1 << $idx, '&']];
break;
}
}
}
$conditions[] = [
'OR',
$xCond,
['s.skillLine1', $cats[1]],
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $cats[1]]]
];
array_unshift($title, Lang::$spell['cat'][-3][$cats[1]]);
}
else
{
$conditions[] = [
'OR',
['s.skillLine1', [-1, -2]],
['s.skillLine1', $validCats[-3]],
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $validCats[-3]]]
];
}
break;
case -4: // Racials
array_push($visibleCols, 'classes');
$conditions[] = ['s.typeCat', -4];
break;
case -8: // NPC-Spells
case -9: // GM Spells
array_push($visibleCols, 'level');
case -5: // Mounts
case -6: // Companions
$conditions[] = ['s.typeCat', $cats[0]];
break;
case -7: // Pet Talents
array_push($visibleCols, 'level', 'tier');
$conditions[] = ['s.typeCat', -7];
if (isset($cats[1]))
{
array_unshift($title, Lang::$spell['cat'][-7][$cats[1]]);
switch($cats[1]) // Spells can be used by multiple specs
{
case 409: // Tenacity
$conditions[] = ['s.cuFlags', SPELL_CU_PET_TALENT_TYPE1, '&'];
$url = '?pets=1';
break;
case 410: // Cunning
$conditions[] = ['s.cuFlags', SPELL_CU_PET_TALENT_TYPE2, '&'];
$url = '?pets=2';
break;
case 411: // Ferocity
$conditions[] = ['s.cuFlags', SPELL_CU_PET_TALENT_TYPE0, '&'];
$url = '?pets=0';
break;
}
$pageData['params']['note'] = '$sprintf(LANG.lvnote_pettalents, "'.$url.'")';
}
$pageData['params']['_petTalents'] = 1; // not conviced, this is correct, but .. it works
break;
case -11: // Proficiencies ... the subIds are actually SkillLineCategories
if (!isset($cats[1]) || $cats[1] != 10)
array_push($visibleCols, 'classes');
$conditions[] = ['s.typeCat', -11];
if (isset($cats[1]))
{
if ($cats[1] == 6) // todo (med): we know Weapon(6) includes spell Shoot(3018), that has a mask; but really, ANY proficiency or petSkill should be in that mask so there is no need to differenciate
$conditions[] = ['OR', ['s.skillLine1', SpellList::$skillLines[$cats[1]]], ['s.skillLine1', -3]];
else
$conditions[] = ['s.skillLine1', SpellList::$skillLines[$cats[1]]];
array_unshift($title, Lang::$spell['cat'][-11][$cats[1]]);
}
break;
case -13: // Glyphs
$filter['classPanel'] = true;
$filter['glyphPanel'] = true;
array_push($visibleCols, 'singleclass', 'glyphtype');
$conditions[] = ['s.typeCat', -13];
if (isset($cats[1]))
{
array_unshift($title, Lang::$game['cl'][$cats[1]]);
$conditions[] = ['s.reqClassMask', 1 << ($cats[1] - 1), '&'];
}
break;
case 7: // Abilities
$filter['classPanel'] = true;
array_push($visibleCols, 'level', 'singleclass', 'schools');
if (isset($cats[1]))
array_unshift($title, Lang::$game['cl'][$cats[1]]);
$conditions[] = ['s.typeCat', [7, -2]];
$conditions[] = [['s.cuFlags', (SPELL_CU_TRIGGERED | SPELL_CU_TALENT | SPELL_CU_EXCLUDE_CATEGORY_SEARCH), '&'], 0];
// Runeforging listed multiple times, exclude from explicit skill-listing
// if (isset($cats[1]) && $cats[1] == 6 && isset($cats[2]) && $cats[2] != 776)
// $conditions[] = [['s.attributes0', 0x80, '&'], 0];
// else
// $conditions[] = [
// [['s.attributes0', 0x80, '&'], 0], // ~SPELL_ATTR0_HIDDEN_CLIENTSIDE
// ['s.attributes0', 0x20, '&'], // SPELL_ATTR0_TRADESPELL (DK: Runeforging)
// 'OR'
// ];
if (isset($cats[2]))
{
$conditions[] = [
'OR',
['s.skillLine1', $cats[2]],
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $cats[2]]]
];
}
else if (isset($cats[1]))
{
$conditions[] = [
'OR',
['s.skillLine1', $validCats[7][$cats[1]]],
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $validCats[7][$cats[1]]]]
];
}
break;
case 9: // Secondary Skills
array_push($visibleCols, 'source');
$conditions[] = ['s.typeCat', 9];
if (isset($cats[1]))
{
array_unshift($title, Lang::$spell['cat'][9][$cats[1]]);
$conditions[] = [
'OR',
['s.skillLine1', $cats[1]],
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $cats[1]]]
];
if ($sf = @$shortFilter[$cats[1]])
{
$txt = '';
if ($sf[0] && $sf[1])
$txt = sprintf(Lang::$spell['relItems']['crafted'], $sf[0]) . Lang::$spell['relItems']['link'] . sprintf(Lang::$spell['relItems']['recipes'], $sf[1]);
else if ($sf[0])
$txt = sprintf(Lang::$spell['relItems']['crafted'], $sf[0]);
else if ($sf[1])
$txt = sprintf(Lang::$spell['relItems']['recipes'], $sf[1]);
$note = Lang::$spell['cat'][$cats[0]][$cats[1]];
if (is_array($note))
$note = $note[0];
$pageData['params']['note'] = sprintf(Lang::$spell['relItems']['base'], $txt, $note);
$pageData['params']['sort'] = "$['skill', 'name']";
}
}
break;
case 11: // Professions
array_push($visibleCols, 'source');
$conditions[] = ['s.typeCat', 11];
if (isset($cats[2]))
{
array_unshift($title, Lang::$spell['cat'][11][$cats[1]][$cats[2]]);
if ($cats[2] == 9787) // general weaponsmithing
$conditions[] = ['s.reqSpellId', [9787, 17039, 17040, 17041]];
else
$conditions[] = ['s.reqSpellId', $cats[2]];
}
else if (isset($cats[1]))
{
$x = Lang::$spell['cat'][11][$cats[1]];
if (is_array($x))
array_unshift($title, $x[0]);
else
array_unshift($title, $x);
$conditions[] = ['s.skillLine1', $cats[1]];
}
if (isset($cats[1]))
{
$conditions[] = ['s.skillLine1', $cats[1]];
if ($sf = @$shortFilter[$cats[1]])
{
$txt = '';
if ($sf[0] && $sf[1])
$txt = sprintf(Lang::$spell['relItems']['crafted'], $sf[0]) . Lang::$spell['relItems']['link'] . sprintf(Lang::$spell['relItems']['recipes'], $sf[1]);
else if ($sf[0])
$txt = sprintf(Lang::$spell['relItems']['crafted'], $sf[0]);
else if ($sf[1])
$txt = sprintf(Lang::$spell['relItems']['recipes'], $sf[1]);
$note = Lang::$spell['cat'][$cats[0]][$cats[1]];
if (is_array($note))
$note = $note[0];
$pageData['params']['note'] = sprintf(Lang::$spell['relItems']['base'], $txt, $note);
$pageData['params']['sort'] = "$['skill', 'name']";
}
}
break;
case 0: // misc. Spells
array_push($visibleCols, 'level');
if ($cats[0] !== null) // !any Spell (php loose comparison: (null == 0) is true)
{
$conditions[] = 'OR';
$conditions[] = ['s.typeCat', 0];
$conditions[] = ['s.cuFlags', SPELL_CU_EXCLUDE_CATEGORY_SEARCH, '&'];
break;
}
}
$spells = new SpellList($conditions, true);
$pageData['data'] = $spells->getListviewData();
$pageData['params']['tabs'] = false;
$spells->addGlobalsToJscript($pageData);
// create note if search limit was exceeded; overwriting 'note' is intentional
if ($spells->getMatches() > $AoWoWconf['sqlLimit'])
{
$pageData['params']['note'] = '$'.sprintf(Util::$filterResultString, 'LANG.lvnote_spellsfound', $spells->getMatches(), $AoWoWconf['sqlLimit']);
$pageData['params']['_truncated'] = 1;
}
if ($spells->filterGetError())
$pageData['params']['_errors'] = '$1';
$mask = $spells->hasDiffFields(['reagent1', 'skillLines', 'trainingCost']);
if ($mask & 0x1)
$visibleCols[] = 'reagents';
if (!($mask & 0x2) && $cats[0] != 9 && $cats[0] != 11)
$hiddenCols[] = 'skill';
if (($mask & 0x4) || $spells->getField('trainingCost'))
$visibleCols[] = 'trainingcost';
if ($visibleCols)
$pageData['params']['visibleCols'] = '$'.json_encode($visibleCols);
if ($hiddenCols)
$pageData['params']['hiddenCols'] = '$'.json_encode($hiddenCols);
// recreate form selection
$filter['query'] = isset($_GET['filter']) ? $_GET['filter'] : NULL;
$filter['setCr'] = $spells->filterGetSetCriteria();
$filter = array_merge($spells->filterGetForm(), $filter);
$smarty->saveCache($cacheKey, $pageData, $filter);
}
if (isset($filter['gl']) && !is_array($filter['gl']))
{
while (count($path) < 4)
$path[] = 0;
$path[] = $filter['gl'];
}
$page = array(
'tab' => 0, // for g_initHeader($tab)
'subCat' => $pageParam !== null ? '='.$pageParam : '',
'title' => implode(" - ", $title),
'path' => "[".implode(", ", $path)."]",
'reqJS' => array(
array('path' => 'template/js/filters.js', 'conditional' => false),
),
);
// sort for dropdown-menus
asort(Lang::$game['ra']);
asort(Lang::$game['cl']);
asort(Lang::$game['sc']);
asort(Lang::$game['me']);
Lang::$game['race'] = Util::ucFirst(Lang::$game['race']);
$smarty->updatePageVars($page);
$smarty->assign('filter', $filter);
$smarty->assign('lang', array_merge(Lang::$main, Lang::$game, Lang::$achievement));
$smarty->assign('mysql', DB::Aowow()->getStatistics());
$smarty->assign('lvData', $pageData);
$smarty->display('spells.tpl');
?>

View File

@@ -3,8 +3,6 @@
if (!defined('AOWOW_REVISION'))
die('invalid access');
Util::execTime(true);
/*
if &json
=> search by compare or profiler
@@ -28,25 +26,25 @@ Util::execTime(true);
5: Listview - template: 'currency', id: 'currencies', name: LANG.tab_currencies,
6: Listview - template: 'itemset', id: 'itemsets', name: LANG.tab_itemsets,
7: Listview - template: 'item', id: 'items', name: LANG.tab_items,
8: Listview - template: 'spell', id: 'abilities', name: LANG.tab_abilities, visibleCols: ['level', 'schools'],
9: Listview - template: 'spell', id: 'talents', name: LANG.tab_talents, visibleCols: ['level', 'schools'], hiddenCols: ['reagents'],
10: Listview - template: 'spell', id: 'glyphs', name: LANG.tab_glyphs, visibleCols: ['singleclass', 'glyphtype'], hiddenCols: ['reagents', 'skill', 'level'],
11: Listview - template: 'spell', id: 'proficiencies', name: LANG.tab_proficiencies, visibleCols: ['classes'], hiddenCols: ['reagents', 'skill'],
12: Listview - template: 'spell', id: 'professions', name: LANG.tab_professions, visibleCols: ['source'],
13: Listview - template: 'spell', id: 'companions', name: LANG.tab_companions, visibleCols: ['reagents'], hiddenCols: ['level', 'skill'],
14: Listview - template: 'spell', id: 'mounts', name: LANG.tab_mounts, visibleCols: ['reagents'], hiddenCols: ['level', 'skill'],
15: Listview - template: 'npc', id: 'npcs', name: LANG.tab_npcs,
16: Listview - template: 'quest', id: 'quests', name: LANG.tab_quests,
17: Listview - template: 'achievement', id: 'achievements', name: LANG.tab_achievements, visibleCols: ['category'],
18: Listview - template: 'achievement', id: 'statistics', name: LANG.tab_statistics, visibleCols: ['category'], hiddenCols: ['side', 'points', 'rewards'],
19: Listview - template: 'zone', id: 'zones', name: LANG.tab_zones,
20: Listview - template: 'object', id: 'objects', name: LANG.tab_objects,
21: Listview - template: 'faction', id: 'factions', name: LANG.tab_factions,
22: Listview - template: 'skill', id: 'skills', name: LANG.tab_skills, hiddenCols: ['reagents', 'skill'],
8: Listview - template: 'spell', id: 'abilities', name: LANG.tab_abilities,
9: Listview - template: 'spell', id: 'talents', name: LANG.tab_talents,
10: Listview - template: 'spell', id: 'glyphs', name: LANG.tab_glyphs,
11: Listview - template: 'spell', id: 'proficiencies', name: LANG.tab_proficiencies,
12: Listview - template: 'spell', id: 'professions', name: LANG.tab_professions,
13: Listview - template: 'spell', id: 'companions', name: LANG.tab_companions,
14: Listview - template: 'spell', id: 'mounts', name: LANG.tab_mounts,
todo 15: Listview - template: 'npc', id: 'npcs', name: LANG.tab_npcs,
todo 16: Listview - template: 'quest', id: 'quests', name: LANG.tab_quests,
17: Listview - template: 'achievement', id: 'achievements', name: LANG.tab_achievements,
18: Listview - template: 'achievement', id: 'statistics', name: LANG.tab_statistics,
todo 19: Listview - template: 'zone', id: 'zones', name: LANG.tab_zones,
todo 20: Listview - template: 'object', id: 'objects', name: LANG.tab_objects,
todo 21: Listview - template: 'faction', id: 'factions', name: LANG.tab_factions,
todo 22: Listview - template: 'skill', id: 'skills', name: LANG.tab_skills, hiddenCols: ['reagents', 'skill'],
23: Listview - template: 'pet', id: 'pets', name: LANG.tab_pets,
24: Listview - template: 'spell', id: 'npc-abilities', name: LANG.tab_npcabilities, visibleCols: ['level'], hiddenCols: ['reagents', 'skill'],
25: Listview - template: 'spell', id: 'spells', name: LANG.tab_uncategorizedspells, visibleCols: ['level'], hiddenCols: ['reagents', 'skill'],
26: Listview - template: 'profile', id: 'characters', name: LANG.tab_characters, visibleCols: ['race','classs','level','talents','gearscore','achievementpoints'],
24: Listview - template: 'spell', id: 'npc-abilities', name: LANG.tab_npcabilities,
25: Listview - template: 'spell', id: 'spells', name: LANG.tab_uncategorizedspells,
todo 26: Listview - template: 'profile', id: 'characters', name: LANG.tab_characters, visibleCols: ['race','classs','level','talents','gearscore','achievementpoints'],
27: Profiles..?
28: Guilds..?
29: Arena Teams..?
@@ -115,7 +113,7 @@ if ($searchMask & 0x1)
weapon: build manually - ItemSubClassMask
roles: build manually - 1:heal; 2:mleDPS; 4:rngDPS; 8:tank
*/
$classes = new CharClassList(array(['name_loc'.User::$localeId, $query]], $maxResults));
$classes = new CharClassList(array(['name_loc'.User::$localeId, $query], $maxResults));
if ($data = $classes->getListviewData())
{
@@ -129,6 +127,12 @@ if ($searchMask & 0x1)
'data' => $data,
'params' => ['tabs' => '$myTabs']
);
if ($classes->getMatches() > $maxResults)
{
// $found['class']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_', $classes->getMatches(), $maxResults);
$found['class']['params']['_truncated'] = 1;
}
}
}
@@ -155,6 +159,12 @@ if ($searchMask & 0x2)
'data' => $data,
'params' => ['tabs' => '$myTabs']
);
if ($races->getMatches() > $maxResults)
{
// $found['race']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_', $races->getMatches(), $maxResults);
$found['race']['params']['_truncated'] = 1;
}
}
}
@@ -193,6 +203,12 @@ if ($searchMask & 0x4)
'data' => $data,
'params' => ['tabs' => '$myTabs']
);
if ($titles->getMatches() > $maxResults)
{
// $found['title']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_', $titles->getMatches(), $maxResults);
$found['title']['params']['_truncated'] = 1;
}
}
}
@@ -226,10 +242,16 @@ if ($searchMask & 0x8)
$found['event'] = array(
'type' => TYPE_WORLDEVENT,
'appendix' => ' (World Event)',
'matches' => $money->getMatches(),
'matches' => $wEvents->getMatches(),
'data' => $data,
'params' => ['tabs' => '$myTabs']
);
if ($wEvents->getMatches() > $maxResults)
{
// $found['event']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_', $wEvents->getMatches(), $maxResults);
$found['event']['params']['_truncated'] = 1;
}
}
}
@@ -335,26 +357,291 @@ if ($searchMask & 0x40)
}
}
// 8 Abilities
// if ($searchMask & 0x80)
// 8 Abilities (Player + Pet)
if ($searchMask & 0x80)
{
$conditions = array( // hmm, inclued classMounts..?
['s.typeCat', [7, -2, -3]],
[['s.cuFlags', (SPELL_CU_TRIGGERED | SPELL_CU_TALENT | SPELL_CU_EXCLUDE_CATEGORY_SEARCH), '&'], 0],
[['s.attributes0', 0x80, '&'], 0],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
// 9 Talents
// if ($searchMask & 0x100)
$abilities = new SpellList($conditions);
if ($data = $abilities->getListviewData())
{
$abilities->addGlobalsToJscript($jsGlobals);
$vis = ['level', 'singleclass', 'schools'];
if ($abilities->hasDiffFields(['reagent1']))
$vis[] = 'reagents';
while ($abilities->iterate())
{
$data[$abilities->id]['param1'] = '"'.strToLower($abilities->getField('iconString')).'"';
$data[$abilities->id]['param2'] = '"'.$abilities->ranks[$abilities->id].'"';
}
$found['ability'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Ability)',
'matches' => $abilities->getMatches(),
'data' => $data,
'params' => [
'id' => 'abilities',
'tabs' => '$myTabs',
'name' => '$LANG.tab_abilities',
'visibleCols' => '$'.json_encode($vis)
]
);
if ($abilities->getMatches() > $maxResults)
{
$found['ability']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_abilitiesfound', $abilities->getMatches(), $maxResults);
$found['ability']['params']['_truncated'] = 1;
}
}
}
// 9 Talents (Player + Pet)
if ($searchMask & 0x100)
{
$conditions = array(
['s.typeCat', [-7, -2]],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
$talents = new SpellList($conditions);
if ($data = $talents->getListviewData())
{
$talents->addGlobalsToJscript($jsGlobals);
while ($talents->iterate())
{
$data[$talents->id]['param1'] = '"'.strToLower($talents->getField('iconString')).'"';
$data[$talents->id]['param2'] = '"'.$talents->ranks[$talents->id].'"';
}
$found['talent'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Talent)',
'matches' => $talents->getMatches(),
'data' => $data,
'params' => [
'id' => 'talents',
'tabs' => '$myTabs',
'name' => '$LANG.tab_talents',
'visibleCols' => "$['level', 'singleclass', 'schools']"
]
);
if ($talents->getMatches() > $maxResults)
{
$found['talent']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_talentsfound', $talents->getMatches(), $maxResults);
$found['talent']['params']['_truncated'] = 1;
}
}
}
// 10 Glyphs
// if ($searchMask & 0x200)
if ($searchMask & 0x200)
{
$conditions = array(
['s.typeCat', -13],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
$glyphs = new SpellList($conditions);
if ($data = $glyphs->getListviewData())
{
$glyphs->addGlobalsToJscript($jsGlobals);
while ($glyphs->iterate())
$data[$glyphs->id]['param1'] = '"'.strToLower($glyphs->getField('iconString')).'"';
$found['glyph'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Glyph)',
'matches' => $glyphs->getMatches(),
'data' => $data,
'params' => [
'id' => 'glyphs',
'tabs' => '$myTabs',
'name' => '$LANG.tab_glyphs',
'visibleCols' => "$['singleclass', 'glyphtype']"
]
);
if ($glyphs->getMatches() > $maxResults)
{
$found['glyph']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_glyphsfound', $glyphs->getMatches(), $maxResults);
$found['glyph']['params']['_truncated'] = 1;
}
}
}
// 11 Proficiencies
// if ($searchMask & 0x400)
if ($searchMask & 0x400)
{
$conditions = array(
['s.typeCat', -11],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
// 12 Professions
// if ($searchMask & 0x800)
$prof = new SpellList($conditions);
if ($data = $prof->getListviewData())
{
$prof->addGlobalsToJscript($jsGlobals);
while ($prof->iterate())
$data[$prof->id]['param1'] = '"'.strToLower($prof->getField('iconString')).'"';
$found['proficiency'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Proficiency)',
'matches' => $prof->getMatches(),
'data' => $data,
'params' => [
'id' => 'proficiencies',
'tabs' => '$myTabs',
'name' => '$LANG.tab_proficiencies',
'visibleCols' => "$['classes']"
]
);
if ($prof->getMatches() > $maxResults)
{
$found['proficiency']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_spellsfound', $prof->getMatches(), $maxResults);
$found['proficiency']['params']['_truncated'] = 1;
}
}
}
// 12 Professions (Primary + Secondary)
if ($searchMask & 0x800)
{
$conditions = array(
['s.typeCat', [9, 11]],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
$prof = new SpellList($conditions);
if ($data = $prof->getListviewData())
{
$prof->addGlobalsToJscript($jsGlobals);
while ($prof->iterate())
$data[$prof->id]['param1'] = '"'.strToLower($prof->getField('iconString')).'"';
$found['profession'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Profession)',
'matches' => $prof->getMatches(),
'data' => $data,
'params' => [
'id' => 'professions',
'tabs' => '$myTabs',
'name' => '$LANG.tab_professions',
'visibleCols' => "$['source', 'reagents']"
]
);
if ($prof->getMatches() > $maxResults)
{
$found['profession']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_professionfound', $prof->getMatches(), $maxResults);
$found['profession']['params']['_truncated'] = 1;
}
}
}
// 13 Companions
// if ($searchMask & 0x1000)
if ($searchMask & 0x1000)
{
$conditions = array(
['s.typeCat', -6],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
$vPets = new SpellList($conditions);
if ($data = $vPets->getListviewData())
{
$vPets->addGlobalsToJscript($jsGlobals);
while ($vPets->iterate())
$data[$vPets->id]['param1'] = '"'.strToLower($vPets->getField('iconString')).'"';
$found['companion'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Companion)',
'matches' => $vPets->getMatches(),
'data' => $data,
'params' => [
'id' => 'companions',
'tabs' => '$myTabs',
'name' => '$LANG.tab_companions',
'visibleCols' => "$['reagents']"
]
);
if ($vPets->getMatches() > $maxResults)
{
$found['companion']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_companionsfound', $vPets->getMatches(), $maxResults);
$found['companion']['params']['_truncated'] = 1;
}
}
}
// 14 Mounts
// if ($searchMask & 0x2000)
if ($searchMask & 0x2000)
{
$conditions = array(
['s.typeCat', -5],
['s.name_loc'.User::$localeId, $query],
$maxResults
);
$mounts = new SpellList($conditions);
if ($data = $mounts->getListviewData())
{
$mounts->addGlobalsToJscript($jsGlobals);
while ($mounts->iterate())
$data[$mounts->id]['param1'] = '"'.strToLower($mounts->getField('iconString')).'"';
$found['mount'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Mount)',
'matches' => $mounts->getMatches(),
'data' => $data,
'params' => [
'id' => 'mounts',
'tabs' => '$myTabs',
'name' => '$LANG.tab_mounts',
]
);
if ($mounts->getMatches() > $maxResults)
{
$found['mount']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_mountsfound', $mounts->getMatches(), $maxResults);
$found['mount']['params']['_truncated'] = 1;
}
}
}
// 15 NPCs
// if ($searchMask & 0x4000)
@@ -453,6 +740,7 @@ if ($searchMask & 0x20000)
if ($searchMask & 0x400000)
{
$pets = new PetList(array($maxResults, ['name_loc'.User::$localeId, $query]));
if ($data = $pets->getListviewData())
{
$pets->addGlobalsToJScript($jsGlobals);
@@ -469,14 +757,106 @@ if ($searchMask & 0x400000)
'tabs' => '$myTabs',
]
);
if ($pets->getMatches() > $maxResults)
{
$found['pet']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_petsfound', $pets->getMatches(), $maxResults);
$found['pet']['params']['_truncated'] = 1;
}
}
}
// 24 NPCAbilities
// if ($searchMask & 0x800000)
if ($searchMask & 0x800000)
{
$conditions = array(
['s.name_loc'.User::$localeId, $query],
['s.typeCat', -8],
$maxResults
);
// 25 Spells (Misc)
// if ($searchMask & 0x1000000)
$npcAbilities = new SpellList($conditions);
if ($data = $npcAbilities->getListviewData())
{
$npcAbilities->addGlobalsToJscript($jsGlobals);
while ($npcAbilities->iterate())
$data[$npcAbilities->id]['param1'] = '"'.strToLower($npcAbilities->getField('iconString')).'"';
$found['npcSpell'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Spell)',
'matches' => $npcAbilities->getMatches(),
'data' => $data,
'params' => [
'id' => 'npc-abilities',
'tabs' => '$myTabs',
'name' => '$LANG.tab_npcabilities',
'visibleCols' => "$['level']",
'hiddenCols' => "$['skill']"
]
);
if ($npcAbilities->getMatches() > $maxResults)
{
$found['npcSpell']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_spellsfound', $npcAbilities->getMatches(), $maxResults);
$found['npcSpell']['params']['_truncated'] = 1;
}
}
}
// 25 Spells (Misc + GM)
if ($searchMask & 0x1000000)
{
$conditions = array(
['s.name_loc'.User::$localeId, $query],
['OR', ['s.typeCat', [0, -9]], ['s.cuFlags', SPELL_CU_EXCLUDE_CATEGORY_SEARCH, '&']],
$maxResults
);
$t = [];
Util::execTime();
$misc = new SpellList($conditions);
$t[] = Util::execTime();
if ($data = $misc->getListviewData())
{
$t[] = Util::execTime();
$misc->addGlobalsToJscript($jsGlobals);
$t[] = Util::execTime();
while ($misc->iterate())
$data[$misc->id]['param1'] = '"'.strToLower($misc->getField('iconString')).'"';
$t[] = Util::execTime();
$found['spell'] = array(
'type' => TYPE_SPELL,
'appendix' => ' (Spell)',
'matches' => $misc->getMatches(),
'data' => $data,
'params' => [
'tabs' => '$myTabs',
'name' => '$LANG.tab_uncategorizedspells',
'visibleCols' => "$['level']",
'hiddenCols' => "$['skill']",
]
);
$t[] = Util::execTime();
if ($misc->getMatches() > $maxResults)
{
$found['spell']['params']['note'] = '$'.sprintf(Util::$narrowResultString, 'LANG.lvnote_spellsfound', $misc->getMatches(), $maxResults);
$found['spell']['params']['_truncated'] = 1;
}
}
}
// 26 Characters
// if ($searchMask & 0x2000000)
@@ -581,17 +961,21 @@ else /* if ($searchMask & SEARCH_TYPE_REGULAR) */
foreach ($found as $tmp)
$foundTotal += count($tmp['data']);
// // only one match -> redirect to find
// if ($foundTotal == 1)
// {
// header("Location: ?".Util::$typeStrings[$found[0]['type']].'='.$found[0]['data'][0]['id']);
// die();
// }
// only one match -> redirect to find
if ($foundTotal == 1)
{
$_ = array_pop($found);
$type = Util::$typeStrings[$_['type']];
$typeId = key(array_pop($_));
header("Location: ?".$type.'='.$typeId);
die();
}
$vars = array(
'title' => $search.' - '.Lang::$search['search'],
'tab' => 0, // tabId 0: Database for g_initHeader($tab)
'reqJS' => [array('path' => 'template/js/swfobject.js', 'conditional' => false)]
'title' => $search.' - '.Lang::$search['search'],
'tab' => 0, // tabId 0: Database for g_initHeader($tab)
'reqJS' => [array('path' => 'template/js/swfobject.js', 'conditional' => false)]
);
$smarty->updatePageVars($vars);

View File

@@ -0,0 +1,87 @@
{strip}
new Listview({ldelim}
template:'spell',
{if !isset($params.id)}id:'spells',{/if}
{if !isset($params.tabs)}tabs:'listview-generic',{/if}
{if !isset($params.name)}name:LANG.tab_spells,{/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}
name:'{$curr.quality}{$curr.name|escape:"javascript"}',
{if isset($curr.level)}level:{$curr.level},{/if}
school:{$curr.school},
cat:{$curr.cat},
{if isset($curr.rank)}
rank:'{$curr.rank|escape:"javascript"}',
{/if}
{if isset($curr.type)}
type:'{$curr.type}',
{/if}
{if isset($curr.skill)}
skill:[
{section name=j loop=$curr.skill}
{$curr.skill[j]}
{if $smarty.section.j.last}{else},{/if}
{/section}
],
{/if}
{if isset($curr.reqclass)}
reqclass:{$curr.reqclass},
{/if}
{if isset($curr.reqrace)}
reqrace:{$curr.reqrace},
{/if}
{if isset($curr.glyphtype)}
glyphtype:{$curr.glyphtype},
{/if}
{if !empty($curr.source)}
source:{$curr.source},
{/if}
{if isset($curr.trainingcost)}
trainingcost:{$curr.trainingcost},
{/if}
{if !empty($curr.reagents)}
reagents:[
{section name=j loop=$curr.reagents}
[{$curr.reagents[j][0]},{$curr.reagents[j][1]}]
{if $smarty.section.j.last}{else},{/if}
{/section}
],
{/if}
{if isset($curr.creates)}
creates:[
{section name=j loop=$curr.creates}
{$curr.creates[j]}
{if $smarty.section.j.last}{else},{/if}
{/section}
],
{/if}
{if isset($curr.learnedat)}
learnedat:{$curr.learnedat},
{/if}
{if isset($curr.colors)}
colors:[
{section name=j loop=$curr.colors}
{$curr.colors[j]}
{if $smarty.section.j.last}{else},{/if}
{/section}
],
{/if}
{if isset($curr.percent)}
percent:{$curr.percent},
{/if}
id:{$curr.id}
{rdelim}
{if $smarty.foreach.i.last}{else},{/if}
{/foreach}
]
{rdelim});
{/strip}

View File

@@ -325,7 +325,6 @@ var fi_filters = {
{ 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' },

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -547,6 +547,18 @@ var mn_spells = [
[9,"Brujo",,[[355,"Aflicción",,,{tinyIcon:"Spell_Shadow_DeathCoil"}],[354,"Demonología",,,{tinyIcon:"Spell_Shadow_Metamorphosis"}],[593,"Destrucción",,,{tinyIcon:"Spell_Shadow_RainOfFire"}]],{className:"c9",tinyIcon:"class_warlock"}],
[1,"Guerrero",,[[26,"Armas",,,{tinyIcon:"Ability_Rogue_Eviscerate"}],[256,"Furia",,,{tinyIcon:"Ability_Warrior_InnerRage"}],[257,"Protección",,,{tinyIcon:"INV_Shield_06"}]],{className:"c1",tinyIcon:"class_warrior"}]
]],
[-13, "Glifos",, [
[6, "Caballero de la muerte",, [[1, "Sublime", '?spells=-13.6&filter=gl=1'],[2, "Menor", '?spells=-13.6&filter=gl=2']], {className:'c6', tinyIcon:'class_deathknight'}],
[11, "Druida",, [[1, "Sublime", '?spells=-13.11&filter=gl=1'],[2, "Menor", '?spells=-13.11&filter=gl=2']], {className:'c11', tinyIcon:'class_druid'}],
[3, "Cazador",, [[1, "Sublime", '?spells=-13.3&filter=gl=1'],[2, "Menor", '?spells=-13.3&filter=gl=2']], {className:'c3', tinyIcon:'class_hunter'}],
[8, "Mago",, [[1, "Sublime", '?spells=-13.8&filter=gl=1'],[2, "Menor", '?spells=-13.8&filter=gl=2']], {className:'c8', tinyIcon:'class_mage'}],
[2, "Paladín",, [[1, "Sublime", '?spells=-13.2&filter=gl=1'],[2, "Menor", '?spells=-13.2&filter=gl=2']], {className:'c2', tinyIcon:'class_paladin'}],
[5, "Sacerdote",, [[1, "Sublime", '?spells=-13.5&filter=gl=1'],[2, "Menor", '?spells=-13.5&filter=gl=2']], {className:'c5', tinyIcon:'class_priest'}],
[4, "Pícaro",, [[1, "Sublime", '?spells=-13.4&filter=gl=1'],[2, "Menor", '?spells=-13.4&filter=gl=2']], {className:'c4', tinyIcon:'class_rogue'}],
[7, "Chamán",, [[1, "Sublime", '?spells=-13.7&filter=gl=1'],[2, "Menor", '?spells=-13.7&filter=gl=2']], {className:'c7', tinyIcon:'class_shaman'}],
[9, "Brujo",, [[1, "Sublime", '?spells=-13.9&filter=gl=1'],[2, "Menor", '?spells=-13.9&filter=gl=2']], {className:'c9', tinyIcon:'class_warlock'}],
[1, "Guerrero",, [[1, "Sublime", '?spells=-13.1&filter=gl=1'],[2, "Menor", '?spells=-13.1&filter=gl=2']], {className:'c1', tinyIcon:'class_warrior'}]
]],
[-11,"Habilidades",,[
[6,"Armas"],
[8,"Armadura"],

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -27,8 +27,12 @@
{if isset($found.quest)} {include file='bricks/listviews/quest.tpl' data=$found.quest.data params=$found.quest.params } {/if}
{if isset($found.ability)} {include file='bricks/listviews/spell.tpl' data=$found.ability.data params=$found.ability.params } {/if}
{if isset($found.talent)} {include file='bricks/listviews/spell.tpl' data=$found.talent.data params=$found.talent.params } {/if}
{if isset($found.glyph)} {include file='bricks/listviews/spell.tpl' data=$found.glyph.data params=$found.glyph.params } {/if}
{if isset($found.proficiency)} {include file='bricks/listviews/spell.tpl' data=$found.proficiency.data params=$found.proficiency.params} {/if}
{if isset($found.profession)} {include file='bricks/listviews/spell.tpl' data=$found.profession.data params=$found.profession.params } {/if}
{if isset($found.companion)} {include file='bricks/listviews/spell.tpl' data=$found.companion.data params=$found.companion.params } {/if}
{if isset($found.mount)} {include file='bricks/listviews/spell.tpl' data=$found.mount.data params=$found.mount.params } {/if}
{if isset($found.npcSpell)} {include file='bricks/listviews/spell.tpl' data=$found.npcSpell.data params=$found.npcSpell.params } {/if}
{if isset($found.petSpell)} {include file='bricks/listviews/spell.tpl' data=$found.petSpell.data params=$found.petSpell.params } {/if}
{if isset($found.spell)} {include file='bricks/listviews/spell.tpl' data=$found.spell.data params=$found.spell.params } {/if}
{if isset($found.unkSpell)} {include file='bricks/listviews/spell.tpl' data=$found.unkSpell.data params=$found.unkSpell.params } {/if}
{if isset($found.zone)} {include file='bricks/listviews/zone.tpl' data=$found.zone.data params=$found.zone.params } {/if}

201
template/spell.tpl Normal file
View File

@@ -0,0 +1,201 @@
{include file='header.tpl'}
{assign var="iconlist1" value="1"}
{assign var="iconlist2" value="1"}
<div id="main">
<div id="main-precontents"></div>
<div id="main-contents" class="main-contents">
<script type="text/javascript">
{include file='bricks/community.tpl'}
var g_pageInfo = {ldelim}type: {$page.type}, typeId: {$page.typeId}, name: '{$lvData.page.name|escape:"javascript"}'{rdelim};
g_initPath({$page.path});
</script>
{include file='bricks/infobox.tpl'}
</table>
<div class="text">
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur();
Links.show({ldelim} type: 6, typeId: {$lvData.page.id}, linkColor: 'ff71d5ff', linkId: 'spell:{$lvData.page.id}', linkName: '{$lvData.page.name}' {rdelim});">
<em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
<a href="http://old.wowhead.com/?{$query[0]}={$query[1]}" class="button-red"><em><b><i>Wowhead</i></b><span>Wowhead</span></em></a>
<h1>{$lvData.page.name}</h1>
<div id="headicon-generic" style="float: left"></div>
<div id="tooltip{$lvData.page.id}-generic" class="tooltip" style="float: left; padding-top: 1px">
<table><tr><td>{$lvData.page.info}</td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></table>
</div>
<div style="clear: left"></div>
<script type="text/javascript">
ge('headicon-generic').appendChild(Icon.create('{$lvData.page.icon}', 2, 0, 0, {$lvData.page.stack}));
Tooltip.fix(ge('tooltip{$lvData.page.id}-generic'), 1, 1);
</script>
{if !empty($lvData.page.buff)}
<h3>{$lang._aura}</h3>
<div id="btt{$lvData.page.id}" class="tooltip">
<table><tr><td>{$lvData.page.buff}</td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></table>
</div>
<script type="text/javascript">
Tooltip.fixSafe(ge('btt{$lvData.page.id}'), 1, 1)
</script>
{/if}
{if $lvData.page.reagents}{if $lvData.page.tools}<div style="float: left; margin-right: 75px">{/if}
<h3>{$lang.reagents}</h3>
<table class="iconlist">
{section name=i loop=$lvData.page.reagents}
<tr><th align="right" id="iconlist-icon{$iconlist1++}"></th><td><span class="q{$lvData.page.reagents[i].quality}"><a href="?item={$lvData.page.reagents[i].entry}">{$lvData.page.reagents[i].name}</a></span>{if $lvData.page.reagents[i].count > 1}&nbsp({$lvData.page.reagents[i].count}){/if}</td></tr>
{/section}
</table>
<script type="text/javascript">
{section name=i loop=$lvData.page.reagents}
ge('iconlist-icon{$iconlist2++}').appendChild(g_items.createIcon({$lvData.page.reagents[i].entry}, 0, {$lvData.page.reagents[i].count}));
{/section}
</script>
{if $lvData.page.tools}</div>{/if}{/if}
{if $lvData.page.tools}{if $lvData.page.reagents}<div style="float: left">{/if}
<h3>{$lang.tools}</h3>
<table class="iconlist">
{section name=i loop=$lvData.page.tools}
<tr><th align="right" id="iconlist-icon{$iconlist1++}"></th><td><span class="q1"><a href="{$lvData.page.tools[i].url}">{$lvData.page.tools[i].name}</a></span></td></tr>
{/section}
</table>
<script type="text/javascript">
{section name=i loop=$lvData.page.tools}{if isset($lvData.page.tools[i].entry)}
ge('iconlist-icon{$iconlist2++}').appendChild(g_items.createIcon({$lvData.page.tools[i].entry}, 0, 1));
{/if}{/section}
</script>
{if $lvData.page.reagents}</div>{/if}{/if}
<div class="clear"></div>
<h3>{$lang._spellDetails}</h3>
<table class="grid" id="spelldetails">
<colgroup>
<col width="8%" />
<col width="42%" />
<col width="50%" />
</colgroup>
<tr>
<td colspan="2" style="padding: 0; border: 0; height: 1px"></td>
<td rowspan="6" style="padding: 0; border-left: 3px solid #404040">
<table class="grid" style="border: 0">
<tr>
<td style="height: 0; padding: 0; border: 0" colspan="2"></td>
</tr>
<tr>
<th style="border-left: 0; border-top: 0">{$lang.duration}</th>
<td width="100%" style="border-top: 0">{$lvData.page.duration}</td>
</tr>
<tr>
<th style="border-left: 0">{$lang.school}</th>
<td>{$lvData.page.school}</td>
</tr>
<tr>
<th style="border-left: 0">{$lang.mechanic}</th>
<td>{$lvData.page.mechanic}</td>
</tr>
<tr>
<th style="border-left: 0">{$lang.dispelType}</th>
<td>{$lvData.page.dispel}</td>
</tr>
<tr>
<th style="border-bottom: 0; border-left: 0">{$lang._gcdCategory}</th>
<td style="border-bottom: 0">{$lvData.page.gcdCat}</td>
</tr>
</table>
</td>
</tr>
<tr>
<th style="border-top: 0">{$lang._cost}</th>
<td style="border-top: 0">{if !empty($lvData.page.powerCost)}{$lvData.page.powerCost}{else}{$lang._none}{/if}</td>
</tr>
<tr>
<th>{$lang._range}</th>
<td>{$lvData.page.range} {$lang._distUnit} <small>({$lvData.page.rangeName})</small></td>
</tr>
<tr>
<th>{$lang._castTime}</th>
<td>{$lvData.page.castTime}</td>
</tr>
<tr>
<th>{$lang._cooldown}</th>
<td>{$lvData.page.cooldown}</td>
</tr>
<tr>
<th><dfn title="{$lang._globCD}">{$lang._gcd}</dfn></th>
<td>{$lvData.page.gcd}</td>
</tr>
{if $lvData.page.stances}
<tr>
<th>{$lang._forms}</th>
<td colspan="3">{$lvData.page.stances}</td>
</tr>
{/if}
{if $lvData.page.items}
<tr>
<th>{$lang.requires2}</th>
<td colspan="3">{$lvData.page.items}</td>
</tr>
{/if}
{section name=i loop=$lvData.page.effect}
<tr>
<th>{$lang._effect} #{$smarty.section.i.index+1}</th>
<td colspan="3" style="line-height: 17px">
{$lvData.page.effect[i].name}
<small>
{if isset($lvData.page.effect[i].value)}<br>{$lang._value}{$lang.colon}{$lvData.page.effect[i].value}{/if}
{if isset($lvData.page.effect[i].radius)}<br>{$lang._radius}{$lang.colon}{$lvData.page.effect[i].radius} {$lang._distUnit}{/if}
{if isset($lvData.page.effect[i].interval)}<br>{$lang._interval}{$lang.colon}{$lvData.page.effect[i].interval} {$lang.seconds}{/if}
</small>
{if isset($lvData.page.effect[i].icon)}
<table class="icontab">
<tr>
<th id="icontab-icon{$smarty.section.i.index}"></th>
{if isset($lvData.page.effect[i].icon.quality)}
<td><span class="q{$lvData.page.effect[i].icon.quality}"><a href="?item={$lvData.page.effect[i].icon.id}">{$lvData.page.effect[i].icon.name}</a></span></td>
{else}
<td><a href="?spell={$lvData.page.effect[i].icon.id}">{$lvData.page.effect[i].icon.name}</a></td>
{/if}
<th></th><td></td>
</tr>
</table>
<script type="text/javascript">
ge('icontab-icon{$smarty.section.i.index}').appendChild({if isset($lvData.page.effect[i].icon.quality)}g_items{else}g_spells{/if}.createIcon({$lvData.page.effect[i].icon.id}, 1, {$lvData.page.effect[i].icon.count}));
</script>
{/if}
</td>
</tr>
{/section}
</table>
<h2>{$lang.related}</h2>
</div>
<div id="tabs-generic"></div>
<div id="listview-generic" class="listview"></div>
<script type="text/javascript">
var tabsRelated = new Tabs({ldelim}parent: ge('tabs-generic'){rdelim});
{if isset($lvData.taughtbynpc)} {include file='bricks/listviews/creature.tpl' data=$lvData.taughtbynpc.data params=$lvData.taughtbynpc.params } {/if}
{if isset($lvData.taughtbyitem)} {include file='bricks/listviews/item.tpl' data=$lvData.taughtbyitem.data params=$lvData.taughtbyitem.params } {/if}
{if isset($lvData.taughtbyquest)} {include file='bricks/listviews/quest.tpl' data=$lvData.taughtbyquest.data params=$lvData.taughtbyquest.params} {/if}
{if isset($lvData.questreward)} {include file='bricks/listviews/quest.tpl' data=$lvData.questreward.data params=$lvData.questreward.params } {/if}
{if isset($lvData.usedbynpc)} {include file='bricks/listviews/creature.tpl' data=$lvData.usedbynpc.data params=$lvData.usedbynpc.params } {/if}
{if isset($lvData.usedbyitem)} {include file='bricks/listviews/item.tpl' data=$lvData.usedbyitem.data params=$lvData.usedbyitem.params } {/if}
{if isset($lvData.usedbyitemset)} {include file='bricks/listviews/itemset.tpl' data=$lvData.usedbyitemset.data params=$lvData.usedbyitemset.params} {/if}
{if isset($lvData.contains)} {include file='bricks/listviews/item.tpl' data=$lvData.contains.data params=$lvData.contains.params } {/if}
{if isset($lvData.seealso)} {include file='bricks/listviews/spell.tpl' data=$lvData.seealso.data params=$lvData.seealso.params } {/if}
{if isset($lvData.criteria_of)} {include file='bricks/listviews/achievement.tpl' data=$lvData.criteria_of.data params=$lvData.criteria_of.params } {/if}
new Listview({ldelim}template: 'comment', id: 'comments', name: LANG.tab_comments, tabs: tabsRelated, parent: 'listview-generic', data: lv_comments{rdelim});
tabsRelated.flush();
</script>
{include file='bricks/contribute.tpl'}
</div>
</div>
{include file='footer.tpl'}

138
template/spells.tpl Normal file
View File

@@ -0,0 +1,138 @@
{include file='header.tpl'}
<div id="main">
<div id="main-precontents"></div>
<div id="main-contents" class="main-contents">
{if !empty($announcements)}
{foreach from=$announcements item=item}
{include file='bricks/announcement.tpl' an=$item}
{/foreach}
{/if}
<script type="text/javascript">
g_initPath({$page.path}, {if empty($filter.query)} 0 {else} 1 {/if});
{if isset($filter.query)}Menu.append(mn_database[1], '&filter={$filter.query|escape:'quotes'}'); // todo: menu order varies per locale{/if}
</script>
<div id="fi" style="display:{if empty($filter.query)}none{else}block{/if};">
<form action="?spells{$page.subCat}&filter" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="rightpanel">
<div style="float: left">{$lang.school}:</div>
<small><a href="javascript:;" onclick="document.forms['fi'].elements['sc[]'].selectedIndex = -1; return false" onmousedown="return false">clear</a></small>
<div class="clear"></div>
<select name="sc[]" size="7" multiple="multiple" class="rightselect" style="width: 8em">
{foreach from=$lang.sc key=i item=str}{if $str}
<option value="{$i}" {if isset($filter.sc) && ($filter.sc == $i || @in_array($i, $filter.sc))}selected{/if}>{$str}</option>
{/if}{/foreach}
</select>
</div>
{if $filter.classPanel}
<div class="rightpanel2">
<div style="float: left">{$lang.class|ucfirst}: </div>
<small><a href="javascript:;" onclick="document.forms['fi'].elements['cl[]'].selectedIndex = -1; return false" onmousedown="return false">clear</a></small>
<div class="clear"></div>
<select name="cl[]" size="8" multiple="multiple" class="rightselect" style="width: 8em">
{foreach from=$lang.cl key=i item=str}{if $str}
<option value="{$i}"{if isset($filter.cl) && ($filter.cl == $i || @in_array($i, $filter.cl))} selected{/if}>{$str}</option>
{/if}{/foreach}
</select>
</div>
{/if}
{if $filter.glyphPanel}
<div class="rightpanel2">
<div style="float: left">{$lang.glyphType|ucfirst}: </div>
<small><a href="javascript:;" onclick="document.forms['fi'].elements['gl[]'].selectedIndex = -1; return false" onmousedown="return false">clear</a></small>
<div class="clear"></div>
<select name="gl[]" size="2" multiple="multiple" class="rightselect" style="width: 8em">
{foreach from=$lang.gl key=i item=str}{if $str}
<option value="{$i}"{if isset($filter.gl) && ($filter.gl == $i || @in_array($i, $filter.gl))} selected{/if}>{$str}</option>
{/if}{/foreach}
</select>
</div>
{/if}
<table>
<tr>
<td>{$lang.name}:</td>
<td colspan="2">
<table><tr>
<td>&nbsp;<input type="text" name="na" size="30" {if isset($filter.na)}value="{$filter.na|escape:'html'}"{/if}/></td>
<td>&nbsp; <input type="checkbox" name="ex" value="on" id="spell-ex" {if isset($filter.ex)}checked="checked"{/if}/></td>
<td><label for="spell-ex"><span class="tip" onmouseover="Tooltip.showAtCursor(event, LANG.tooltip_extendedspellsearch, 0, 0, 'q')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$lang.extSearch}</span></label></td>
</tr></table>
</td>
</tr>
<tr>
<td class="padded">{$lang.level}:</td>
<td class="padded">&nbsp;<input type="text" name="minle" maxlength="2" class="smalltextbox" {if isset($filter.minle)}value="{$filter.minle}"{/if}/> - <input type="text" name="maxle" maxlength="2" class="smalltextbox" {if isset($filter.maxle)}value="{$filter.maxle}"{/if}/></td>
<td class="padded"><table cellpadding="0" cellspacing="0" border="0"><tr>
<td>&nbsp;&nbsp;&nbsp;{$lang.reqSkillLevel}:</td>
<td>&nbsp;<input type="text" name="minrs" maxlength="3" class="smalltextbox2" {if isset($filter.minrs)}value="{$filter.minrs}"{/if}/> - <input type="text" name="maxrs" maxlength="3" class="smalltextbox2" {if isset($filter.maxrs)}value="{$filter.maxrs}"{/if}/></td>
</tr></table></td>
</tr>
<tr>
<td class="padded">{$lang.race}:</td>
<td class="padded">&nbsp;<select name="ra">
<option></option>
{foreach from=$lang.ra key=i item=str}{if $str}{if $i > 0}
<option value="{$i}"{if isset($filter.ra) && $filter.ra == $i} selected{/if}>{$str}</option>
{/if}{/if}{/foreach}
</select></td>
<td class="padded"></td>
</tr>
<tr>
<td class="padded">{$lang.mechAbbr}:</td>
<td class="padded">&nbsp;<select name="me">
<option></option>
{foreach from=$lang.me key=i item=str}{if $str}
<option value="{$i}"{if isset($filter.me) && $filter.me == $i} selected{/if}>{$str}</option>
{/if}{/foreach}
</select></td>
<td>
<table cellpadding="0" cellspacing="0" border="0"><tr>
<td>&nbsp;&nbsp;&nbsp;{$lang.dispelType}:</td>
<td>&nbsp;<select name="dt">
<option></option>
{foreach from=$lang.dt key=i item=str}{if $str}
<option value="{$i}"{if isset($filter.dt) && $filter.dt == $i} selected{/if}>{$str}</option>
{/if}{/foreach}
</select></td>
</tr></table>
</td>
</tr>
</table>
<div id="fi_criteria" class="padded criteria"><div></div></div>
<div><a href="javascript:;" id="fi_addcriteria" onclick="fi_addCriterion(this); return false">{$lang.addFilter}</a></div>
<div class="padded2">
{$lang.match}:<input type="radio" name="ma" value="" id="ma-0" checked="checked" /><label for="ma-0">{$lang.allFilter}</label><input type="radio" name="ma" value="1" id="ma-1" /><label for="ma-1">{$lang.oneFilter}</label>
</div>
<div class="clear"></div>
<div class="padded">
<input type="submit" value="Apply filter" />
<input type="reset" value="{$lang.resetForm}" />
<div style="float: right">{$lang.refineSearch}</div>
</div>
</form>
<div class="pad"></div>
</div>
<script type="text/javascript">//<![CDATA[
fi_init('spells');
{if isset($filter.setCr)}{$filter.setCr}{/if}
//]]></script>
<div id="listview-generic" class="listview"></div>
<script type="text/javascript">
{include file='bricks/listviews/spell.tpl' data=$lvData.data params=$lvData.params}
</script>
<div class="clear"></div>
</div><!-- main-contents -->
</div><!-- main -->
{include file='footer.tpl'}