mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
omgishouldntbedoingthis
This commit is contained in:
@@ -162,7 +162,7 @@ define('LOOT_PROSPECTING', 'prospecting_loot_template');
|
|||||||
define('LOOT_MILLING', 'milling_loot_template');
|
define('LOOT_MILLING', 'milling_loot_template');
|
||||||
define('LOOT_PICKPOCKET', 'pickpocketing_loot_template');
|
define('LOOT_PICKPOCKET', 'pickpocketing_loot_template');
|
||||||
define('LOOT_SKINNING', 'skinning_loot_template');
|
define('LOOT_SKINNING', 'skinning_loot_template');
|
||||||
define('LOOT_QUEST', 'quest_mail_loot_template');
|
define('LOOT_QUEST', 'mail_loot_template'); // changed to quest_mail_loot_template..?
|
||||||
define('LOOT_SPELL', 'spell_loot_template');
|
define('LOOT_SPELL', 'spell_loot_template');
|
||||||
define('LOOT_REFERENCE', 'reference_loot_template');
|
define('LOOT_REFERENCE', 'reference_loot_template');
|
||||||
|
|
||||||
@@ -310,6 +310,11 @@ define('LOCK_PROPERTY_FOOTLOCKER', 1);
|
|||||||
define('LOCK_PROPERTY_HERBALISM', 2);
|
define('LOCK_PROPERTY_HERBALISM', 2);
|
||||||
define('LOCK_PROPERTY_MINING', 3);
|
define('LOCK_PROPERTY_MINING', 3);
|
||||||
|
|
||||||
|
// Creature
|
||||||
|
define('NPC_TYPEFLAG_HERBLOOT', 0x0100);
|
||||||
|
define('NPC_TYPEFLAG_MININGLOOT', 0x0200);
|
||||||
|
define('NPC_TYPEFLAG_ENGINEERLOOT', 0x8000);
|
||||||
|
|
||||||
// GameObject
|
// GameObject
|
||||||
define('OBJECT_DOOR', 0);
|
define('OBJECT_DOOR', 0);
|
||||||
define('OBJECT_BUTTON', 1);
|
define('OBJECT_BUTTON', 1);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class AchievementList extends BaseType
|
class AchievementList extends BaseType
|
||||||
{
|
{
|
||||||
use listviewHelper;
|
use listviewHelper;
|
||||||
|
|||||||
@@ -227,37 +227,32 @@ abstract class BaseType
|
|||||||
// append joins
|
// append joins
|
||||||
if ($j = array_column($this->queryOpts, 'j'))
|
if ($j = array_column($this->queryOpts, 'j'))
|
||||||
foreach ($j as $_)
|
foreach ($j as $_)
|
||||||
$this->queryBase .= is_array($_) ? (empty($_[1]) ? ' JOIN ' : ' LEFT JOIN ') . $_[0] : ' JOIN ' . $_;
|
$this->queryBase .= is_array($_) ? (empty($_[1]) ? ' JOIN ' : ' LEFT JOIN ').$_[0] : ' JOIN '.$_;
|
||||||
|
|
||||||
// append conditions
|
// append conditions
|
||||||
if ($where)
|
if ($where)
|
||||||
$this->queryBase .= ' WHERE (' . implode($linking, $where).')';
|
$this->queryBase .= ' WHERE ('.implode($linking, $where).')';
|
||||||
|
|
||||||
// append grouping
|
// append grouping
|
||||||
if ($g = array_column($this->queryOpts, 'g'))
|
if ($g = array_column($this->queryOpts, 'g'))
|
||||||
$this->queryBase .= ' GROUP BY ' . implode(', ', $g);
|
$this->queryBase .= ' GROUP BY '.implode(', ', $g);
|
||||||
|
|
||||||
// append post filtering
|
// append post filtering
|
||||||
if ($h = array_column($this->queryOpts, 'h'))
|
if ($h = array_column($this->queryOpts, 'h'))
|
||||||
$this->queryBase .= ' HAVING ' . implode(' AND ', $h);
|
$this->queryBase .= ' HAVING '.implode(' AND ', $h);
|
||||||
|
|
||||||
// append ordering
|
// append ordering
|
||||||
if ($o = array_column($this->queryOpts, 'o'))
|
if ($o = array_column($this->queryOpts, 'o'))
|
||||||
$this->queryBase .= ' ORDER BY ' . implode(', ', $o);
|
$this->queryBase .= ' ORDER BY '.implode(', ', $o);
|
||||||
|
|
||||||
// apply limit
|
// apply limit
|
||||||
if ($limit)
|
if ($limit)
|
||||||
$this->queryBase .= ' LIMIT '.$limit;
|
$this->queryBase .= ' LIMIT '.$limit;
|
||||||
|
|
||||||
// Util::execTime(true);
|
|
||||||
// var_dump($this->queryBase);
|
|
||||||
// echo "<br><br>\n\n";
|
|
||||||
// execure query (finally)
|
// execure query (finally)
|
||||||
$rows = DB::Aowow()->SelectPage($this->matches, $this->queryBase);
|
$rows = DB::Aowow()->SelectPage($this->matches, $this->queryBase);
|
||||||
if (!$rows)
|
if (!$rows)
|
||||||
return;
|
return;
|
||||||
// var_dump(Util::execTime());
|
|
||||||
// echo "<br><br><br>\n\n";
|
|
||||||
|
|
||||||
// assign query results to template
|
// assign query results to template
|
||||||
foreach ($rows as $k => $tpl)
|
foreach ($rows as $k => $tpl)
|
||||||
@@ -789,7 +784,7 @@ abstract class Filter
|
|||||||
|
|
||||||
private function genericString($field, $value, $localized)
|
private function genericString($field, $value, $localized)
|
||||||
{
|
{
|
||||||
$field .= $localized ? '_loc' . User::$localeId : null;
|
$field .= $localized ? '_loc'.User::$localeId : null;
|
||||||
|
|
||||||
return [$field, (string)$value];
|
return [$field, (string)$value];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class CharClassList extends BaseType
|
class CharClassList extends BaseType
|
||||||
{
|
{
|
||||||
public static $type = TYPE_CLASS;
|
public static $type = TYPE_CLASS;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class CharRaceList extends BaseType
|
class CharRaceList extends BaseType
|
||||||
{
|
{
|
||||||
public static $type = TYPE_RACE;
|
public static $type = TYPE_RACE;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class CurrencyList extends BaseType
|
class CurrencyList extends BaseType
|
||||||
{
|
{
|
||||||
public static $type = TYPE_CURRENCY;
|
public static $type = TYPE_CURRENCY;
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ class GameObjectList extends BaseType
|
|||||||
{
|
{
|
||||||
public static $type = TYPE_OBJECT;
|
public static $type = TYPE_OBJECT;
|
||||||
|
|
||||||
|
protected $queryBase = 'SELECT *, go.entry AS ARRAY_KEY FROM gameobject_template go';
|
||||||
|
protected $queryOpts = array(
|
||||||
|
'go' => [['lg']],
|
||||||
|
'lg' => ['j' => ['locales_gameobject lq ON go.entry = lq.entry', true]]
|
||||||
|
);
|
||||||
|
|
||||||
public static function getName($id)
|
public static function getName($id)
|
||||||
{
|
{
|
||||||
$n = DB::Aowow()->SelectRow('
|
$n = DB::Aowow()->SelectRow('
|
||||||
|
|||||||
@@ -3,15 +3,6 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
/*
|
|
||||||
! DONT FORGET !
|
|
||||||
|
|
||||||
REMOVE TEMP-HACK FROM Lang::load
|
|
||||||
|
|
||||||
fix locale files in gereral >.<
|
|
||||||
|
|
||||||
! DONT FORGET !
|
|
||||||
*/
|
|
||||||
|
|
||||||
class ItemList extends BaseType
|
class ItemList extends BaseType
|
||||||
{
|
{
|
||||||
@@ -40,7 +31,7 @@ class ItemList extends BaseType
|
|||||||
{
|
{
|
||||||
// search by statweight
|
// search by statweight
|
||||||
if ($miscData && isset($miscData['wt']) && isset($miscData['wtv']))
|
if ($miscData && isset($miscData['wt']) && isset($miscData['wtv']))
|
||||||
$conditions[] = $this->createConditionsForWeights($miscData, $this->queryOpts);
|
$conditions[] = $this->createConditionsForWeights($miscData);
|
||||||
|
|
||||||
parent::__construct($conditions, $applyFilter);
|
parent::__construct($conditions, $applyFilter);
|
||||||
|
|
||||||
@@ -85,7 +76,7 @@ class ItemList extends BaseType
|
|||||||
public function getExtendedCost()
|
public function getExtendedCost()
|
||||||
{
|
{
|
||||||
// placeholder
|
// placeholder
|
||||||
return [];
|
return []; // [id => qty]
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getListviewData($addInfoMask = 0x0)
|
public function getListviewData($addInfoMask = 0x0)
|
||||||
@@ -126,7 +117,7 @@ class ItemList extends BaseType
|
|||||||
$data[$this->id]['repaircost'] = $_;
|
$data[$this->id]['repaircost'] = $_;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($addInfoMask & (ITEMINFO_JSON |ITEMINFO_GEM))
|
if ($addInfoMask & (ITEMINFO_JSON | ITEMINFO_GEM))
|
||||||
if (isset($this->curTpl['score']))
|
if (isset($this->curTpl['score']))
|
||||||
$data[$this->id]['score'] = $this->curTpl['score'];
|
$data[$this->id]['score'] = $this->curTpl['score'];
|
||||||
|
|
||||||
@@ -300,8 +291,8 @@ class ItemList extends BaseType
|
|||||||
// requires map (todo: reparse ?_zones for non-conflicting data; generate Link to zone)
|
// requires map (todo: reparse ?_zones for non-conflicting data; generate Link to zone)
|
||||||
if ($_ = $this->curTpl['map'])
|
if ($_ = $this->curTpl['map'])
|
||||||
{
|
{
|
||||||
$map = DB::Aowow()->selectRow('SELECT * FROM ?_zones WHERE mapId=?d LIMIT 1', $_);
|
$map = DB::Aowow()->selectRow('SELECT * FROM ?_zones WHERE mapId = ?d LIMIT 1', $_);
|
||||||
$x .= '<br /><a href="?map='.$_.'" class="q1">'.Util::localizedString($map, 'name').'</a>';
|
$x .= '<br /><a href="?zone='.$_.'" class="q1">'.Util::localizedString($map, 'name').'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// requires area
|
// requires area
|
||||||
@@ -316,7 +307,7 @@ class ItemList extends BaseType
|
|||||||
$x .= '<br />'.Lang::$item['conjured'];
|
$x .= '<br />'.Lang::$item['conjured'];
|
||||||
|
|
||||||
// bonding
|
// bonding
|
||||||
if (($_flags & ITEM_FLAG_ACCOUNTBOUND))
|
if ($_flags & ITEM_FLAG_ACCOUNTBOUND)
|
||||||
$x .= '<br /><!--bo-->'.Lang::$item['bonding'][0];
|
$x .= '<br /><!--bo-->'.Lang::$item['bonding'][0];
|
||||||
else if ($this->curTpl['bonding'])
|
else if ($this->curTpl['bonding'])
|
||||||
$x .= '<br /><!--bo-->'.Lang::$item['bonding'][$this->curTpl['bonding']];
|
$x .= '<br /><!--bo-->'.Lang::$item['bonding'][$this->curTpl['bonding']];
|
||||||
@@ -339,7 +330,7 @@ class ItemList extends BaseType
|
|||||||
|
|
||||||
// max duration
|
// max duration
|
||||||
if ($dur = $this->curTpl['duration'])
|
if ($dur = $this->curTpl['duration'])
|
||||||
$x .= "<br />".Lang::$game['duration'] . ' '. Util::formatTime(abs($dur) * 1000) . ($dur < 0 ? ' ('.Lang::$game['realTime'].')' : null);
|
$x .= "<br />".Lang::$game['duration'].Lang::$colon.Util::formatTime(abs($dur) * 1000).($this->curTpl['flagsCustom'] & 0x1 ? ' ('.Lang::$item['realTime'].')' : null);
|
||||||
|
|
||||||
// required holiday
|
// required holiday
|
||||||
if ($hId = $this->curTpl['holidayId'])
|
if ($hId = $this->curTpl['holidayId'])
|
||||||
@@ -353,7 +344,7 @@ class ItemList extends BaseType
|
|||||||
$x .= '<br /><a class="q1" href="?quest='.$this->curTpl['startQuest'].'">'.Lang::$item['startQuest'].'</a>';
|
$x .= '<br /><a class="q1" href="?quest='.$this->curTpl['startQuest'].'">'.Lang::$item['startQuest'].'</a>';
|
||||||
|
|
||||||
// containerType (slotCount)
|
// containerType (slotCount)
|
||||||
if ($this->curTpl['slots'] > 1)
|
if ($this->curTpl['slots'] > 0)
|
||||||
{
|
{
|
||||||
$fam = log($this->curTpl['bagFamily'], 2) + 1;
|
$fam = log($this->curTpl['bagFamily'], 2) + 1;
|
||||||
// word order differs <_<
|
// word order differs <_<
|
||||||
@@ -380,7 +371,7 @@ class ItemList extends BaseType
|
|||||||
|
|
||||||
$x .= '</tr></table>';
|
$x .= '</tr></table>';
|
||||||
}
|
}
|
||||||
else if ($_ = $this->curTpl['slot']) // yes, slot can occur on random items and is than also displayed <_<
|
else if (($_ = $this->curTpl['slot']) && $_class != ITEM_CLASS_CONTAINER) // yes, slot can occur on random items and is then also displayed <_< .. excluding Bags >_>
|
||||||
$x .= '<br />'.Lang::$item['inventoryType'][$this->curTpl['slot']].'<br />';
|
$x .= '<br />'.Lang::$item['inventoryType'][$this->curTpl['slot']].'<br />';
|
||||||
else
|
else
|
||||||
$x .= '<br />';
|
$x .= '<br />';
|
||||||
@@ -571,12 +562,13 @@ class ItemList extends BaseType
|
|||||||
|
|
||||||
// required level
|
// required level
|
||||||
if (($_flags & ITEM_FLAG_ACCOUNTBOUND) && $_quality == ITEM_QUALITY_HEIRLOOM)
|
if (($_flags & ITEM_FLAG_ACCOUNTBOUND) && $_quality == ITEM_QUALITY_HEIRLOOM)
|
||||||
$x .= sprintf(Lang::$game['reqLevelHlm'], ' 1'.Lang::$game['valueDelim'].MAX_LEVEL.' ('.($interactive ? printf(Util::$changeLevelString, MAX_LEVEL) : '<!--lvl-->'.MAX_LEVEL).')').'<br />';
|
$x .= sprintf(Lang::$game['reqLevelHlm'], ' 1'.Lang::$game['valueDelim'].MAX_LEVEL.' ('.($interactive ? sprintf(Util::$changeLevelString, MAX_LEVEL) : '<!--lvl-->'.MAX_LEVEL).')').'<br />';
|
||||||
else if ($_reqLvl > 1)
|
else if ($_reqLvl > 1)
|
||||||
$x .= sprintf(Lang::$game['reqLevel'], $_reqLvl).'<br />';
|
$x .= sprintf(Lang::$game['reqLevel'], $_reqLvl).'<br />';
|
||||||
|
|
||||||
// item level
|
// item level
|
||||||
$x .= Lang::$item['itemLevel'].' '.$this->curTpl['itemLevel'];
|
if (in_array($_class, [ITEM_CLASS_ARMOR, ITEM_CLASS_WEAPON]))
|
||||||
|
$x .= Lang::$item['itemLevel'].' '.$this->curTpl['itemLevel'].'<br />';
|
||||||
|
|
||||||
// required skill
|
// required skill
|
||||||
if ($reqSkill = $this->curTpl['requiredSkill'])
|
if ($reqSkill = $this->curTpl['requiredSkill'])
|
||||||
@@ -585,28 +577,26 @@ class ItemList extends BaseType
|
|||||||
if ($this->curTpl['requiredSkillRank'] > 0)
|
if ($this->curTpl['requiredSkillRank'] > 0)
|
||||||
$_ .= ' ('.$this->curTpl['requiredSkillRank'].')';
|
$_ .= ' ('.$this->curTpl['requiredSkillRank'].')';
|
||||||
|
|
||||||
$x .= '<br />'.sprintf(Lang::$game['requires'], $_);
|
$x .= sprintf(Lang::$game['requires'], $_).'<br />';
|
||||||
}
|
}
|
||||||
|
|
||||||
// required spell
|
// required spell
|
||||||
if ($reqSpell = $this->curTpl['requiredSpell'])
|
if ($reqSpell = $this->curTpl['requiredSpell'])
|
||||||
$x .= '<br />'.Lang::$game['requires2'].' <a class="q1" href="?spell='.$reqSpell.'">'.SpellList::getName($reqSpell).'</a>';
|
$x .= Lang::$game['requires2'].' <a class="q1" href="?spell='.$reqSpell.'">'.SpellList::getName($reqSpell).'</a><br />';
|
||||||
|
|
||||||
// required reputation w/ faction
|
// required reputation w/ faction
|
||||||
if ($reqFac = $this->curTpl['requiredFaction'])
|
if ($reqFac = $this->curTpl['requiredFaction'])
|
||||||
$x .= '<br />'.sprintf(Lang::$game['requires'], '<a class="q1" href=?faction="'.$reqFac.'">'.FactionList::getName($reqFac).'</a> - '.Lang::$game['rep'][$this->curTpl['requiredFactionRank']]);
|
$x .= sprintf(Lang::$game['requires'], '<a class="q1" href=?faction="'.$reqFac.'">'.FactionList::getName($reqFac).'</a> - '.Lang::$game['rep'][$this->curTpl['requiredFactionRank']]).'<br />';
|
||||||
|
|
||||||
// locked or openable
|
// locked or openable
|
||||||
if ($locks = Lang::getLocks($this->curTpl['lockId'], true))
|
if ($locks = Lang::getLocks($this->curTpl['lockId'], true))
|
||||||
$x .= '<br /><span class="q0">'.Lang::$item['locked'].'<br />'.implode('<br />', $locks).'</span>';
|
$x .= '<span class="q0">'.Lang::$item['locked'].'<br />'.implode('<br />', $locks).'</span><br />';
|
||||||
else if ($this->curTpl['flags'] & ITEM_FLAG_OPENABLE)
|
else if ($this->curTpl['flags'] & ITEM_FLAG_OPENABLE)
|
||||||
$x .= '<br /><span class="q2">'.Lang::$item['openClick'].'</span>';
|
$x .= '<span class="q2">'.Lang::$item['openClick'].'</span><br />';
|
||||||
|
|
||||||
// upper table: done
|
// upper table: done
|
||||||
if (!$subOf)
|
if (!$subOf)
|
||||||
$x .= '</td></tr></table>';
|
$x .= '</td></tr></table>';
|
||||||
else
|
|
||||||
$x .= '<br>';
|
|
||||||
|
|
||||||
// spells on item
|
// spells on item
|
||||||
if (!$this->canTeachSpell())
|
if (!$this->canTeachSpell())
|
||||||
@@ -648,7 +638,7 @@ class ItemList extends BaseType
|
|||||||
$parsed = sprintF($link, $parsed);
|
$parsed = sprintF($link, $parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
$green[] = Lang::$item['trigger'][$itemSpellsAndTrigger[$itemSpells->id][0]] . $parsed . $itemSpellsAndTrigger[$itemSpells->id][1];
|
$green[] = Lang::$item['trigger'][$itemSpellsAndTrigger[$itemSpells->id][0]].$parsed.$itemSpellsAndTrigger[$itemSpells->id][1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1050,7 +1040,7 @@ class ItemList extends BaseType
|
|||||||
if (!Lang::$item['statType'][$type]) // unknown rating
|
if (!Lang::$item['statType'][$type]) // unknown rating
|
||||||
return sprintf(Lang::$item['statType'][count(Lang::$item['statType']) - 1], $type, $value);
|
return sprintf(Lang::$item['statType'][count(Lang::$item['statType']) - 1], $type, $value);
|
||||||
else if (in_array($type, Util::$lvlIndepRating)) // level independant Bonus
|
else if (in_array($type, Util::$lvlIndepRating)) // level independant Bonus
|
||||||
return Lang::$item['trigger'][1] . str_replace('%d', '<!--rtg'.$type.'-->'.$value, Lang::$item['statType'][$type]);
|
return Lang::$item['trigger'][1].str_replace('%d', '<!--rtg'.$type.'-->'.$value, Lang::$item['statType'][$type]);
|
||||||
else // rating-Bonuses
|
else // rating-Bonuses
|
||||||
{
|
{
|
||||||
$scaling = true;
|
$scaling = true;
|
||||||
@@ -1199,14 +1189,14 @@ class ItemList extends BaseType
|
|||||||
'classs' => $this->curTpl['class'],
|
'classs' => $this->curTpl['class'],
|
||||||
'subclass' => $this->curTpl['subClass'],
|
'subclass' => $this->curTpl['subClass'],
|
||||||
'subsubclass' => $this->curTpl['subSubClass'],
|
'subsubclass' => $this->curTpl['subSubClass'],
|
||||||
'heroic' => (string)($this->curTpl['flags'] & 0x8),
|
'heroic' => ($this->curTpl['flags'] & 0x8) >> 3,
|
||||||
'side' => $this->curTpl['flagsExtra'] & 0x3 ? 3 - ($this->curTpl['flagsExtra'] & 0x3) : Util::sideByRaceMask($this->curTpl['requiredRace']),
|
'side' => $this->curTpl['flagsExtra'] & 0x3 ? 3 - ($this->curTpl['flagsExtra'] & 0x3) : Util::sideByRaceMask($this->curTpl['requiredRace']),
|
||||||
'slot' => $this->curTpl['slot'],
|
'slot' => $this->curTpl['slot'],
|
||||||
'slotbak' => $this->curTpl['slotBak'],
|
'slotbak' => $this->curTpl['slotBak'],
|
||||||
'level' => $this->curTpl['itemLevel'],
|
'level' => $this->curTpl['itemLevel'],
|
||||||
'reqlevel' => $this->curTpl['requiredLevel'],
|
'reqlevel' => $this->curTpl['requiredLevel'],
|
||||||
'displayid' => $this->curTpl['displayId'],
|
'displayid' => $this->curTpl['displayId'],
|
||||||
// 'commondrop' => 'true' / null // set if the item is a loot-filler-item .. checke common ref-templates..?
|
// 'commondrop' => 'true' / null // set if the item is a loot-filler-item .. check common ref-templates..?
|
||||||
'holres' => $this->curTpl['resHoly'],
|
'holres' => $this->curTpl['resHoly'],
|
||||||
'firres' => $this->curTpl['resFire'],
|
'firres' => $this->curTpl['resFire'],
|
||||||
'natres' => $this->curTpl['resNature'],
|
'natres' => $this->curTpl['resNature'],
|
||||||
@@ -1334,8 +1324,6 @@ class ItemListFilter extends Filter
|
|||||||
157 => [FILTER_CR_FLAG, 'flags', ITEM_FLAG_SMARTLOOT ], // smartloot
|
157 => [FILTER_CR_FLAG, 'flags', ITEM_FLAG_SMARTLOOT ], // smartloot
|
||||||
159 => [FILTER_CR_FLAG, 'flags', ITEM_FLAG_MILLABLE ], // millable
|
159 => [FILTER_CR_FLAG, 'flags', ITEM_FLAG_MILLABLE ], // millable
|
||||||
162 => [FILTER_CR_FLAG, 'flags', ITEM_FLAG_DEPRECATED ], // deprecated
|
162 => [FILTER_CR_FLAG, 'flags', ITEM_FLAG_DEPRECATED ], // deprecated
|
||||||
127 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_UNAVAILABLE ], // notavailable
|
|
||||||
// 161 => [FILTER_CR_FLAG, 'cuFlags', ~CUSTOM_UNAVAILABLE ], // availabletoplayers .. wait what?!
|
|
||||||
151 => [FILTER_CR_NUMERIC, 'id', null, true], // id
|
151 => [FILTER_CR_NUMERIC, 'id', null, true], // id
|
||||||
100 => [FILTER_CR_NUMERIC, 'is.nsockets' ], // nsockets
|
100 => [FILTER_CR_NUMERIC, 'is.nsockets' ], // nsockets
|
||||||
111 => [FILTER_CR_NUMERIC, 'requiredSkillRank', null, true], // reqskillrank
|
111 => [FILTER_CR_NUMERIC, 'requiredSkillRank', null, true], // reqskillrank
|
||||||
@@ -1480,6 +1468,10 @@ class ItemListFilter extends Filter
|
|||||||
if ($this->int2Bool($cr[1]))
|
if ($this->int2Bool($cr[1]))
|
||||||
return ['maxCount', 1, $cr[1] ? null : '!'];
|
return ['maxCount', 1, $cr[1] ? null : '!'];
|
||||||
break;
|
break;
|
||||||
|
case 161: // availabletoplayers [yn]
|
||||||
|
if ($this->int2Bool($cr[1]))
|
||||||
|
return [['cuFlags', CUSTOM_UNAVAILABLE, '&'], 0, $cr[1] ? null : '!'];
|
||||||
|
break;
|
||||||
case 80: // has sockets [enum]
|
case 80: // has sockets [enum]
|
||||||
switch ($cr[1])
|
switch ($cr[1])
|
||||||
{
|
{
|
||||||
@@ -1728,10 +1720,20 @@ class ItemListFilter extends Filter
|
|||||||
if (isset($_v['upg']))
|
if (isset($_v['upg']))
|
||||||
{
|
{
|
||||||
// valid item?
|
// valid item?
|
||||||
if (is_int($_v['upg']) && DB::Aowow()->selectCell('SELECT 1 FROM ?_items WHERE class IN (2, 3, 4) AND id = ?d', $_v['upg']))
|
if (!is_int($_v['upg']))
|
||||||
$this->formData['form']['upg'] = $_v['upg'];
|
|
||||||
else
|
|
||||||
unset($_v['upg']);
|
unset($_v['upg']);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$_ = DB::Aowow()->selectCell('SELECT slot FROM ?_items WHERE class IN (2, 3, 4) AND id = ?d', $_v['upg']);
|
||||||
|
if ($_ === null)
|
||||||
|
unset($_v['upg']);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->formData['form']['upg'] = $_v['upg'];
|
||||||
|
if ($_)
|
||||||
|
$parts[] = ['slot', $_];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// group by [form only]
|
// group by [form only]
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class ItemsetList extends BaseType
|
class ItemsetList extends BaseType
|
||||||
{
|
{
|
||||||
use ListviewHelper;
|
use ListviewHelper;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class PetList extends BaseType
|
class PetList extends BaseType
|
||||||
{
|
{
|
||||||
use ListviewHelper;
|
use ListviewHelper;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class QuestList extends BaseType
|
class QuestList extends BaseType
|
||||||
{
|
{
|
||||||
public static $type = TYPE_QUEST;
|
public static $type = TYPE_QUEST;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class SpellList extends BaseType
|
class SpellList extends BaseType
|
||||||
{
|
{
|
||||||
use listviewHelper;
|
use listviewHelper;
|
||||||
@@ -394,11 +395,11 @@ class SpellList extends BaseType
|
|||||||
{ // Blood 2|1 - Unholy 2|1 - Frost 2|1
|
{ // Blood 2|1 - Unholy 2|1 - Frost 2|1
|
||||||
$runes = [];
|
$runes = [];
|
||||||
if ($_ = (($rCost & 0x300) >> 8))
|
if ($_ = (($rCost & 0x300) >> 8))
|
||||||
$runes[] = $_." ".Lang::$spell['powerRunes'][2];
|
$runes[] = $_.' '.Lang::$spell['powerRunes'][2];
|
||||||
if ($_ = (($rCost & 0x030) >> 4))
|
if ($_ = (($rCost & 0x030) >> 4))
|
||||||
$runes[] = $_." ".Lang::$spell['powerRunes'][1];
|
$runes[] = $_.' '.Lang::$spell['powerRunes'][1];
|
||||||
if ($_ = ($rCost & 0x003))
|
if ($_ = ($rCost & 0x003))
|
||||||
$runes[] = $_." ".Lang::$spell['powerRunes'][0];
|
$runes[] = $_.' '.Lang::$spell['powerRunes'][0];
|
||||||
|
|
||||||
$str .= implode(', ', $runes);
|
$str .= implode(', ', $runes);
|
||||||
}
|
}
|
||||||
@@ -421,7 +422,7 @@ class SpellList extends BaseType
|
|||||||
else if ($this->curTpl['castTime'] > 0)
|
else if ($this->curTpl['castTime'] > 0)
|
||||||
return $short ? sprintf(Lang::$spell['castIn'], $this->curTpl['castTime'] / 1000) : Util::formatTime($this->curTpl['castTime']);
|
return $short ? sprintf(Lang::$spell['castIn'], $this->curTpl['castTime'] / 1000) : Util::formatTime($this->curTpl['castTime']);
|
||||||
// show instant only for player/pet/npc abilities (todo (low): unsure when really hidden (like talent-case))
|
// show instant only for player/pet/npc abilities (todo (low): unsure when really hidden (like talent-case))
|
||||||
else if ($noInstant && !in_array($this->curTpl['typeCat'], [11, 7, -3, -8, 0]) && !($this->curTpl['cuFlags'] & SPELL_CU_TALENTSPELL))
|
else if ($noInstant && !in_array($this->curTpl['typeCat'], [11, 7, -3, -6, -8, 0]) && !($this->curTpl['cuFlags'] & SPELL_CU_TALENTSPELL))
|
||||||
return '';
|
return '';
|
||||||
// SPELL_ATTR0_ABILITY instant ability.. yeah, wording thing only (todo (low): rule is imperfect)
|
// SPELL_ATTR0_ABILITY instant ability.. yeah, wording thing only (todo (low): rule is imperfect)
|
||||||
else if ($this->curTpl['damageClass'] != 1 || $this->curTpl['attributes0'] & 0x10)
|
else if ($this->curTpl['damageClass'] != 1 || $this->curTpl['attributes0'] & 0x10)
|
||||||
@@ -487,16 +488,56 @@ class SpellList extends BaseType
|
|||||||
public function canTriggerSpell()
|
public function canTriggerSpell()
|
||||||
{
|
{
|
||||||
$idx = [];
|
$idx = [];
|
||||||
// effect - 3: dummy; 32: trigger missile; 36: learn spell; 57: learn pet spell; 64/151: trigger spell (2); 101: feed pet; 133: unlearn specialization; 140/142: force cast (with value); 148/152/160: unk; 164: remove aura
|
// effect - 3: dummy; 32: trigger missile; 36: learn spell; 57: learn pet spell; 64/151: trigger spell (2); 101: feed pet; 133: unlearn specialization; 140/142: force cast (with value); 148/152/160: unk; 155: dualwield 2H; 164: remove aura
|
||||||
// aura - 4: dummy; 23/227: periodic trigger spell (with value); 42/231: proc trigger spell (with value); 48: unk; 109: add target trigger; 226: periodic dummy; 236: control vehicle; 284: linked
|
// aura - 4: dummy; 23/227: periodic trigger spell (with value); 42/231: proc trigger spell (with value); 48: unk; 109: add target trigger; 226: periodic dummy; 236: control vehicle; 284: linked
|
||||||
for ($i = 1; $i < 4; $i++)
|
for ($i = 1; $i < 4; $i++)
|
||||||
if (in_array($this->curTpl['effect'.$i.'Id'], [3, 32, 36, 57, 64, 101, 133, 142, 148, 151, 152, 160, 164]) || in_array($this->curTpl['effect'.$i.'AuraId'], [4, 23, 42, 48, 109, 226, 227, 231, 236, 284]))
|
if (in_array($this->curTpl['effect'.$i.'Id'], [3, 32, 36, 57, 64, 101, 133, 142, 148, 151, 152, 155, 160, 164]) || in_array($this->curTpl['effect'.$i.'AuraId'], [4, 23, 42, 48, 109, 226, 227, 231, 236, 284]))
|
||||||
if ($this->curTpl['effect'.$i.'TriggerSpell'] > 0)
|
if ($this->curTpl['effect'.$i.'TriggerSpell'] > 0 || $this->curTpl['effect'.$i.'MiscValue'] > 0)
|
||||||
$idx[] = $i;
|
$idx[] = $i;
|
||||||
|
|
||||||
return $idx;
|
return $idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isChanneledSpell()
|
||||||
|
{
|
||||||
|
return $this->curTpl['attributes1'] & 0x44;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isHealingSpell()
|
||||||
|
{
|
||||||
|
$eff = [0, 3, 10, 67, 75, 136]; // <no effect>, Dummy, Heal, Heal Max Health, Heal Mechanical, Heal Percent
|
||||||
|
$aur = [4, 8, 62, 69, 97, 226]; // Dummy, Periodic Heal, Periodic Health Funnel, School Absorb, Mana Shield, Periodic Dummy
|
||||||
|
|
||||||
|
for ($i = 1; $i < 4; $i++)
|
||||||
|
if (!in_array($this->curTpl['effect'.$i.'Id'], $eff) && !in_array($this->curTpl['effect'.$i.'AuraId'], $aur))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isDamagingSpell()
|
||||||
|
{
|
||||||
|
$eff = [0, 2, 3, 9, 62]; // <no effect>, Dummy, School Damage, Health Leech, Power Burn
|
||||||
|
$aur = [3, 4, 15, 53, 89, 162, 226]; // Periodic Damage, Dummy, Damage Shield, Periodic Health Leech, Periodic Damage Percent, Power Burn Mana, Periodic Dummy
|
||||||
|
|
||||||
|
for ($i = 1; $i < 4; $i++)
|
||||||
|
if (!in_array($this->curTpl['effect'.$i.'Id'], $eff) && !in_array($this->curTpl['effect'.$i.'AuraId'], $aur))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function periodicEffectsMask()
|
||||||
|
{
|
||||||
|
$effMask = 0x0;
|
||||||
|
|
||||||
|
for ($i = 1; $i < 4; $i++)
|
||||||
|
if ($this->curTpl['effect'.$i.'Periode'] > 0)
|
||||||
|
$effMask |= 1 << ($i - 1);
|
||||||
|
|
||||||
|
return $effMask;
|
||||||
|
}
|
||||||
|
|
||||||
// description-, buff-parsing component
|
// description-, buff-parsing component
|
||||||
private function resolveEvaluation($formula)
|
private function resolveEvaluation($formula)
|
||||||
{
|
{
|
||||||
@@ -566,6 +607,10 @@ class SpellList extends BaseType
|
|||||||
return eval('return '.$formula.';');
|
return eval('return '.$formula.';');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// since this function may be called recursively, there are cases, where the already evaluated string is tried to be evaled again, throwing parse errors
|
||||||
|
if (strstr($formula, '</dfn>'))
|
||||||
|
return $formula;
|
||||||
|
|
||||||
// hm, minor eval-issue. eval doesnt understand two operators without a space between them (eg. spelll: 18126)
|
// hm, minor eval-issue. eval doesnt understand two operators without a space between them (eg. spelll: 18126)
|
||||||
$formula = preg_replace('/(\+|-|\*|\/)(\+|-|\*|\/)/i', '\1 \2', $formula);
|
$formula = preg_replace('/(\+|-|\*|\/)(\+|-|\*|\/)/i', '\1 \2', $formula);
|
||||||
|
|
||||||
@@ -626,7 +671,7 @@ class SpellList extends BaseType
|
|||||||
else
|
else
|
||||||
$base = $this->getField('duration');
|
$base = $this->getField('duration');
|
||||||
|
|
||||||
if ($base < 0)
|
if ($base <= 0)
|
||||||
return Lang::$spell['untilCanceled'];
|
return Lang::$spell['untilCanceled'];
|
||||||
|
|
||||||
if ($op && is_numeric($oparg) && is_numeric($base))
|
if ($op && is_numeric($oparg) && is_numeric($base))
|
||||||
@@ -1042,13 +1087,16 @@ class SpellList extends BaseType
|
|||||||
return array("", []);
|
return array("", []);
|
||||||
|
|
||||||
// step 1: if the text is supplemented with text-variables, get and replace them
|
// step 1: if the text is supplemented with text-variables, get and replace them
|
||||||
if (empty($this->spellVars[$this->id]) && $this->curTpl['spellDescriptionVariableId'] > 0)
|
if ($this->curTpl['spellDescriptionVariableId'] > 0)
|
||||||
|
{
|
||||||
|
if (empty($this->spellVars[$this->id]))
|
||||||
{
|
{
|
||||||
$spellVars = DB::Aowow()->SelectCell('SELECT vars FROM ?_spellVariables WHERE id = ?d', $this->curTpl['spellDescriptionVariableId']);
|
$spellVars = DB::Aowow()->SelectCell('SELECT vars FROM ?_spellVariables WHERE id = ?d', $this->curTpl['spellDescriptionVariableId']);
|
||||||
$spellVars = explode("\n", $spellVars);
|
$spellVars = explode("\n", $spellVars);
|
||||||
foreach ($spellVars as $sv)
|
foreach ($spellVars as $sv)
|
||||||
if (preg_match('/\$(\w*\d*)=(.*)/i', trim($sv), $matches))
|
if (preg_match('/\$(\w*\d*)=(.*)/i', trim($sv), $matches))
|
||||||
$this->spellVars[$this->id][$matches[1]] = $matches[2];
|
$this->spellVars[$this->id][$matches[1]] = $matches[2];
|
||||||
|
}
|
||||||
|
|
||||||
// replace self-references
|
// replace self-references
|
||||||
$reset = true;
|
$reset = true;
|
||||||
@@ -1345,7 +1393,7 @@ Lasts 5 min. $?$gte($pl,68)[][Cannot be used on items level 138 and higher.]
|
|||||||
|
|
||||||
if ($cId = $this->curTpl['effect'.$i.'CreateItemId'])
|
if ($cId = $this->curTpl['effect'.$i.'CreateItemId'])
|
||||||
{
|
{
|
||||||
$createItem = (new ItemList(array(['i.id', (int)$cId])))->renderTooltip([], true, true);
|
$createItem = (new ItemList(array(['i.id', (int)$cId])))->renderTooltip([], true, $this->id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1520,13 +1568,13 @@ Lasts 5 min. $?$gte($pl,68)[][Cannot be used on items level 138 and higher.]
|
|||||||
'cat' => $this->curTpl['typeCat'],
|
'cat' => $this->curTpl['typeCat'],
|
||||||
'trainingcost' => $this->curTpl['trainingCost'],
|
'trainingcost' => $this->curTpl['trainingCost'],
|
||||||
'skill' => count($this->curTpl['skillLines']) > 4 ? array_merge(array_splice($this->curTpl['skillLines'], 0, 4), [-1]): $this->curTpl['skillLines'], // display max 4 skillLines (fills max three lines in listview)
|
'skill' => count($this->curTpl['skillLines']) > 4 ? array_merge(array_splice($this->curTpl['skillLines'], 0, 4), [-1]): $this->curTpl['skillLines'], // display max 4 skillLines (fills max three lines in listview)
|
||||||
'reagents' => $this->getReagentsForCurrent(),
|
'reagents' => array_values($this->getReagentsForCurrent()),
|
||||||
'source' => []
|
'source' => []
|
||||||
);
|
);
|
||||||
|
|
||||||
// Sources
|
// Sources
|
||||||
if (!empty($this->sources[$this->id]) && $s = $this->sources[$this->id])
|
if (!empty($this->sources[$this->id]) && $s = $this->sources[$this->id])
|
||||||
$data[$this->id]['source'] = json_encode(array_keys($s), JSON_NUMERIC_CHECK);
|
$data[$this->id]['source'] = array_keys($s);
|
||||||
|
|
||||||
// Proficiencies
|
// Proficiencies
|
||||||
if ($this->curTpl['typeCat'] == -11)
|
if ($this->curTpl['typeCat'] == -11)
|
||||||
@@ -1633,6 +1681,81 @@ spells / buffspells = {
|
|||||||
$template->extendGlobalData(self::$type, $data, $extra);
|
$template->extendGlobalData(self::$type, $data, $extra);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mostly similar to TC
|
||||||
|
public function getCastingTimeForBonus($asDOT = false)
|
||||||
|
{
|
||||||
|
$areaTargets = [7, 8, 15, 16, 20, 24, 30, 31, 33, 34, 37, 54, 56, 59, 104, 108];
|
||||||
|
$castingTime = $this->IsChanneledSpell() ? $this->curTpl['duration'] : $this->curTpl['castTime'];
|
||||||
|
|
||||||
|
if (!$castingTime)
|
||||||
|
return 3500;
|
||||||
|
|
||||||
|
if ($castingTime > 7000)
|
||||||
|
$castingTime = 7000;
|
||||||
|
|
||||||
|
if ($castingTime < 1500)
|
||||||
|
$castingTime = 1500;
|
||||||
|
|
||||||
|
if ($asDOT && !$this->isChanneledSpell())
|
||||||
|
$castingTime = 3500;
|
||||||
|
|
||||||
|
$overTime = 0;
|
||||||
|
$nEffects = 0;
|
||||||
|
$isDirect = false;
|
||||||
|
$isArea = false;
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 3; $i++)
|
||||||
|
{
|
||||||
|
if (in_array($this->curTpl['effect'.$i.'Id'], [2, 7, 8, 9, 62, 67]))
|
||||||
|
$isDirect = true;
|
||||||
|
else if (in_array($this->curTpl['effect'.$i.'AuraId'], [3, 8, 53]))
|
||||||
|
if ($_ = $this->curTpl['duration'])
|
||||||
|
$overTime = $_;
|
||||||
|
else if ($this->curTpl['effect'.$i.'AuraId'])
|
||||||
|
$nEffects++;
|
||||||
|
|
||||||
|
if (in_array($this->curTpl['effect'.$i.'ImplicitTargetA'], $areaTargets) || in_array($this->curTpl['effect'.$i.'ImplicitTargetB'], $areaTargets))
|
||||||
|
$isArea = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Combined Spells with Both Over Time and Direct Damage
|
||||||
|
if ($overTime > 0 && $castingTime > 0 && $isDirect)
|
||||||
|
{
|
||||||
|
// mainly for DoTs which are 3500 here otherwise
|
||||||
|
$originalCastTime = $this->curTpl['castTime'];
|
||||||
|
if ($this->curTpl['attributes0'] & 0x2) // requires Ammo
|
||||||
|
$originalCastTime += 500;
|
||||||
|
|
||||||
|
if ($originalCastTime > 7000)
|
||||||
|
$originalCastTime = 7000;
|
||||||
|
|
||||||
|
if ($originalCastTime < 1500)
|
||||||
|
$originalCastTime = 1500;
|
||||||
|
|
||||||
|
// Portion to Over Time
|
||||||
|
$PtOT = ($overTime / 15000) / (($overTime / 15000) + (OriginalCastTime / 3500));
|
||||||
|
|
||||||
|
if ($asDOT)
|
||||||
|
$castingTime = $castingTime * $PtOT;
|
||||||
|
else if ($PtOT < 1)
|
||||||
|
$castingTime = $castingTime * (1 - $PtOT);
|
||||||
|
else
|
||||||
|
$castingTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Area Effect Spells receive only half of bonus
|
||||||
|
if ($isArea)
|
||||||
|
$castingTime /= 2;
|
||||||
|
|
||||||
|
// -5% of total per any additional effect
|
||||||
|
$castingTime -= ($nEffects * 175);
|
||||||
|
if ($castingTime < 0)
|
||||||
|
$castingTime = 0;
|
||||||
|
|
||||||
|
return $castingTime;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class TitleList extends BaseType
|
class TitleList extends BaseType
|
||||||
{
|
{
|
||||||
use listviewHelper;
|
use listviewHelper;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
if (!defined('AOWOW_REVISION'))
|
if (!defined('AOWOW_REVISION'))
|
||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
class WorldEventList extends BaseType
|
class WorldEventList extends BaseType
|
||||||
{
|
{
|
||||||
public static $type = TYPE_WORLDEVENT;
|
public static $type = TYPE_WORLDEVENT;
|
||||||
|
|||||||
@@ -41,13 +41,10 @@ class Lang
|
|||||||
foreach ($lang as $k => $v)
|
foreach ($lang as $k => $v)
|
||||||
self::$$k = $v;
|
self::$$k = $v;
|
||||||
|
|
||||||
// *cough* .. temp-hack
|
// *cough* .. reuse-hack
|
||||||
if (User::$localeId == LOCALE_EN)
|
|
||||||
{
|
|
||||||
self::$item['cat'][2] = [self::$item['cat'][2], self::$spell['weaponSubClass']];
|
self::$item['cat'][2] = [self::$item['cat'][2], self::$spell['weaponSubClass']];
|
||||||
self::$item['cat'][2][1][14] .= ' ('.self::$item['cat'][2][0].')';
|
self::$item['cat'][2][1][14] .= ' ('.self::$item['cat'][2][0].')';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// todo: expand
|
// todo: expand
|
||||||
public static function getInfoBoxForFlags($flags)
|
public static function getInfoBoxForFlags($flags)
|
||||||
@@ -141,16 +138,25 @@ class Lang
|
|||||||
|
|
||||||
public static function getRequiredItems($class, $mask, $short = true)
|
public static function getRequiredItems($class, $mask, $short = true)
|
||||||
{
|
{
|
||||||
|
if (!in_array($class, [ITEM_CLASS_MISC, ITEM_CLASS_ARMOR, ITEM_CLASS_WEAPON]))
|
||||||
|
return '';
|
||||||
|
|
||||||
// not checking weapon / armor here. It's highly unlikely that they overlap
|
// not checking weapon / armor here. It's highly unlikely that they overlap
|
||||||
if ($short)
|
if ($short)
|
||||||
{
|
{
|
||||||
if ($class == ITEM_CLASS_MISC) // misc - Mounts
|
// misc - Mounts
|
||||||
|
if ($class == ITEM_CLASS_MISC)
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
if ($class == ITEM_CLASS_ARMOR && $mask == 0x1E) // all basic armor classes
|
// all basic armor classes
|
||||||
|
if ($class == ITEM_CLASS_ARMOR && ($mask & 0x1E) == 0x1E)
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
foreach(Lang::$spell['subClassMasks'] as $m => $str)
|
// all weapon classes
|
||||||
|
if ($class == ITEM_CLASS_WEAPON && ($mask & 0x1DE5FF) == 0x1DE5FF)
|
||||||
|
return '';
|
||||||
|
|
||||||
|
foreach (Lang::$spell['subClassMasks'] as $m => $str)
|
||||||
if ($mask == $m)
|
if ($mask == $m)
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
@@ -380,8 +386,10 @@ class SmartyAoWoW extends Smarty
|
|||||||
$this->jsGlobals[$type] = [];
|
$this->jsGlobals[$type] = [];
|
||||||
|
|
||||||
if (is_array($data))
|
if (is_array($data))
|
||||||
|
{
|
||||||
foreach ($data as $id)
|
foreach ($data as $id)
|
||||||
$this->jsGlobals[$type][] = (int)$id;
|
$this->jsGlobals[$type][] = (int)$id;
|
||||||
|
}
|
||||||
else if (is_numeric($data))
|
else if (is_numeric($data))
|
||||||
$this->jsGlobals[$type][] = (int)$data;
|
$this->jsGlobals[$type][] = (int)$data;
|
||||||
else
|
else
|
||||||
@@ -441,6 +449,7 @@ class SmartyAoWoW extends Smarty
|
|||||||
|
|
||||||
if (!$ids)
|
if (!$ids)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
$this->initJSGlobal($type);
|
$this->initJSGlobal($type);
|
||||||
$ids = array_unique($ids, SORT_NUMERIC);
|
$ids = array_unique($ids, SORT_NUMERIC);
|
||||||
|
|
||||||
@@ -711,104 +720,22 @@ class Util
|
|||||||
null, 1.0, 0.6, 1.0, 0.8, 1.0, 1.0, 1.2, 1.25, 1.44, 2.5, 1.728, 3.0, 0.0, 0.0, 1.2, 1.25
|
null, 1.0, 0.6, 1.0, 0.8, 1.0, 1.0, 1.2, 1.25, 1.44, 2.5, 1.728, 3.0, 0.0, 0.0, 1.2, 1.25
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static $lootTemplates = array(
|
||||||
|
LOOT_REFERENCE, // internal
|
||||||
|
LOOT_ITEM, // item
|
||||||
|
LOOT_DISENCHANT, // item
|
||||||
|
LOOT_PROSPECTING, // item
|
||||||
|
LOOT_MILLING, // item
|
||||||
|
LOOT_CREATURE, // npc
|
||||||
|
LOOT_PICKPOCKET, // npc
|
||||||
|
LOOT_SKINNING, // npc (see its flags for mining, herbing or actual skinning)
|
||||||
|
LOOT_FISHING, // zone
|
||||||
|
LOOT_GAMEOBJECT, // object
|
||||||
|
LOOT_QUEST, // quest (mail rewards)
|
||||||
|
LOOT_SPELL // spell
|
||||||
|
);
|
||||||
|
|
||||||
// todo: translate and move to Lang
|
// todo: translate and move to Lang
|
||||||
public static $spellModOp = array(
|
|
||||||
0 => 'DAMAGE',
|
|
||||||
1 => 'DURATION',
|
|
||||||
2 => 'THREAT',
|
|
||||||
3 => 'EFFECT1',
|
|
||||||
4 => 'CHARGES',
|
|
||||||
5 => 'RANGE',
|
|
||||||
6 => 'RADIUS',
|
|
||||||
7 => 'CRITICAL_CHANCE',
|
|
||||||
8 => 'ALL_EFFECTS',
|
|
||||||
9 => 'NOT_LOSE_CASTING_TIME',
|
|
||||||
10 => 'CASTING_TIME',
|
|
||||||
11 => 'COOLDOWN',
|
|
||||||
12 => 'EFFECT2',
|
|
||||||
13 => 'IGNORE_ARMOR',
|
|
||||||
14 => 'COST',
|
|
||||||
15 => 'CRIT_DAMAGE_BONUS',
|
|
||||||
16 => 'RESIST_MISS_CHANCE',
|
|
||||||
17 => 'JUMP_TARGETS',
|
|
||||||
18 => 'CHANCE_OF_SUCCESS',
|
|
||||||
19 => 'ACTIVATION_TIME',
|
|
||||||
20 => 'DAMAGE_MULTIPLIER',
|
|
||||||
21 => 'GLOBAL_COOLDOWN',
|
|
||||||
22 => 'DOT',
|
|
||||||
23 => 'EFFECT3',
|
|
||||||
24 => 'BONUS_MULTIPLIER',
|
|
||||||
25 => '25_UNUSED',
|
|
||||||
26 => 'PROC_PER_MINUTE',
|
|
||||||
27 => 'VALUE_MULTIPLIER',
|
|
||||||
28 => 'RESIST_DISPEL_CHANCE',
|
|
||||||
29 => 'CRIT_DAMAGE_BONUS_2', //one not used spell
|
|
||||||
30 => 'SPELL_COST_REFUND_ON_FAIL'
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $combatRating = array(
|
|
||||||
0 => 'WEAPON_SKILL',
|
|
||||||
1 => 'DEFENSE_SKILL',
|
|
||||||
2 => 'DODGE',
|
|
||||||
3 => 'PARRY',
|
|
||||||
4 => 'BLOCK',
|
|
||||||
5 => 'HIT_MELEE',
|
|
||||||
6 => 'HIT_RANGED',
|
|
||||||
7 => 'HIT_SPELL',
|
|
||||||
8 => 'CRIT_MELEE',
|
|
||||||
9 => 'CRIT_RANGED',
|
|
||||||
10 => 'CRIT_SPELL',
|
|
||||||
11 => 'HIT_TAKEN_MELEE',
|
|
||||||
12 => 'HIT_TAKEN_RANGED',
|
|
||||||
13 => 'HIT_TAKEN_SPELL',
|
|
||||||
14 => 'CRIT_TAKEN_MELEE',
|
|
||||||
15 => 'CRIT_TAKEN_RANGED',
|
|
||||||
16 => 'CRIT_TAKEN_SPELL',
|
|
||||||
17 => 'HASTE_MELEE',
|
|
||||||
18 => 'HASTE_RANGED',
|
|
||||||
19 => 'HASTE_SPELL',
|
|
||||||
20 => 'WEAPON_SKILL_MAINHAND',
|
|
||||||
21 => 'WEAPON_SKILL_OFFHAND',
|
|
||||||
22 => 'WEAPON_SKILL_RANGED',
|
|
||||||
23 => 'EXPERTISE',
|
|
||||||
24 => 'ARMOR_PENETRATION'
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $lockType = array(
|
|
||||||
1 => 'PICKLOCK',
|
|
||||||
2 => 'HERBALISM',
|
|
||||||
3 => 'MINING',
|
|
||||||
4 => 'DISARM_TRAP',
|
|
||||||
5 => 'OPEN',
|
|
||||||
6 => 'TREASURE',
|
|
||||||
7 => 'CALCIFIED_ELVEN_GEMS',
|
|
||||||
8 => 'CLOSE',
|
|
||||||
9 => 'ARM_TRAP',
|
|
||||||
10 => 'QUICK_OPEN',
|
|
||||||
11 => 'QUICK_CLOSE',
|
|
||||||
12 => 'OPEN_TINKERING',
|
|
||||||
13 => 'OPEN_KNEELING',
|
|
||||||
14 => 'OPEN_ATTACKING',
|
|
||||||
15 => 'GAHZRIDIAN',
|
|
||||||
16 => 'BLASTING',
|
|
||||||
17 => 'SLOW_OPEN',
|
|
||||||
18 => 'SLOW_CLOSE',
|
|
||||||
19 => 'FISHING',
|
|
||||||
20 => 'INSCRIPTION',
|
|
||||||
21 => 'OPEN_FROM_VEHICLE'
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $stealthType = array(
|
|
||||||
0 => 'GENERAL',
|
|
||||||
1 => 'TRAP'
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $invisibilityType = array(
|
|
||||||
0 => 'GENERAL',
|
|
||||||
3 => 'TRAP',
|
|
||||||
6 => 'DRUNK'
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $spellEffectStrings = array(
|
public static $spellEffectStrings = array(
|
||||||
0 => 'None',
|
0 => 'None',
|
||||||
1 => 'Instakill',
|
1 => 'Instakill',
|
||||||
@@ -1076,7 +1003,7 @@ class Util
|
|||||||
95 => 'Ghost',
|
95 => 'Ghost',
|
||||||
96 => 'Spell Magnet',
|
96 => 'Spell Magnet',
|
||||||
97 => 'Mana Shield',
|
97 => 'Mana Shield',
|
||||||
98 => 'Mod Skill Talent',
|
98 => 'Mod Skill Value',
|
||||||
99 => 'Mod Attack Power',
|
99 => 'Mod Attack Power',
|
||||||
100 => 'Auras Visible',
|
100 => 'Auras Visible',
|
||||||
101 => 'Mod Resistance Percent',
|
101 => 'Mod Resistance Percent',
|
||||||
@@ -1609,13 +1536,14 @@ class Util
|
|||||||
// for item and spells
|
// for item and spells
|
||||||
public static function setRatingLevel($level, $type, $val)
|
public static function setRatingLevel($level, $type, $val)
|
||||||
{
|
{
|
||||||
if (in_array($type, array(ITEM_MOD_DEFENSE_SKILL_RATING, ITEM_MOD_PARRY_RATING, ITEM_MOD_BLOCK_RATING)) && $level < 34)
|
if (in_array($type, [ITEM_MOD_DEFENSE_SKILL_RATING, ITEM_MOD_PARRY_RATING, ITEM_MOD_BLOCK_RATING]) && $level < 34)
|
||||||
$level = 34;
|
$level = 34;
|
||||||
|
|
||||||
if (!isset(Util::$gtCombatRatings[$type]))
|
if (!isset(Util::$gtCombatRatings[$type]))
|
||||||
$result = 0;
|
$result = 0;
|
||||||
|
else
|
||||||
else if ($level > 70)
|
{
|
||||||
|
if ($level > 70)
|
||||||
$c = 82 / 52 * pow(131 / 63, ($level - 70) / 10);
|
$c = 82 / 52 * pow(131 / 63, ($level - 70) / 10);
|
||||||
else if ($level > 60)
|
else if ($level > 60)
|
||||||
$c = 82 / (262 - 3 * $level);
|
$c = 82 / (262 - 3 * $level);
|
||||||
@@ -1625,11 +1553,12 @@ class Util
|
|||||||
$c = 2 / 52;
|
$c = 2 / 52;
|
||||||
|
|
||||||
$result = number_format($val / Util::$gtCombatRatings[$type] / $c, 2);
|
$result = number_format($val / Util::$gtCombatRatings[$type] / $c, 2);
|
||||||
|
}
|
||||||
|
|
||||||
if (!in_array($type, array(ITEM_MOD_DEFENSE_SKILL_RATING, ITEM_MOD_EXPERTISE_RATING)))
|
if (!in_array($type, array(ITEM_MOD_DEFENSE_SKILL_RATING, ITEM_MOD_EXPERTISE_RATING)))
|
||||||
$result .= '%';
|
$result .= '%';
|
||||||
|
|
||||||
return sprintf(Lang::$item['ratingString'], '<!--rtg%'.$type.'-->' . $result, '<!--lvl-->' . $level);
|
return sprintf(Lang::$item['ratingString'], '<!--rtg%'.$type.'-->'.$result, '<!--lvl-->'.$level);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function powerUseLocale($domain = 'www')
|
public static function powerUseLocale($domain = 'www')
|
||||||
@@ -1770,7 +1699,7 @@ class Util
|
|||||||
$first = mb_substr($str, 0, 1, 'UTF-8');
|
$first = mb_substr($str, 0, 1, 'UTF-8');
|
||||||
$rest = mb_substr($str, 1, $len, 'UTF-8');
|
$rest = mb_substr($str, 1, $len, 'UTF-8');
|
||||||
|
|
||||||
return mb_strtoupper($first, 'UTF-8') . $rest;
|
return mb_strtoupper($first, 'UTF-8').$rest;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function ucWords($str)
|
public static function ucWords($str)
|
||||||
@@ -1845,11 +1774,6 @@ class Util
|
|||||||
quest_mail_loot_template entry quest_template RewMailTemplateId
|
quest_mail_loot_template entry quest_template RewMailTemplateId
|
||||||
reference_loot_template entry many <- many _loot_template -mincountOrRef In case of negative mincountOrRef
|
reference_loot_template entry many <- many _loot_template -mincountOrRef In case of negative mincountOrRef
|
||||||
*/
|
*/
|
||||||
private static function getLootByItem($tableName, $itemId)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static function getLootByEntry($tableName, $lootId, $groupId = 0, $baseChance = 1.0)
|
private static function getLootByEntry($tableName, $lootId, $groupId = 0, $baseChance = 1.0)
|
||||||
{
|
{
|
||||||
$loot = [];
|
$loot = [];
|
||||||
@@ -1858,7 +1782,7 @@ class Util
|
|||||||
if (!$tableName || !$lootId)
|
if (!$tableName || !$lootId)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
$rows = DB::Aowow()->select('SELECT * FROM ?# WHERE entry = ?d {AND groupid = ?d}', $tableName, abs($lootId), $groupId ? $groupId : DBSIMPLE_SKIP);
|
$rows = DB::Aowow()->select('SELECT * FROM ?# WHERE entry = ?d{ AND groupid = ?d}', $tableName, abs($lootId), $groupId ? $groupId : DBSIMPLE_SKIP);
|
||||||
if (!$rows)
|
if (!$rows)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@@ -1928,8 +1852,13 @@ class Util
|
|||||||
@$groupChances[$entry['groupid']] += $entry['ChanceOrQuestChance'];
|
@$groupChances[$entry['groupid']] += $entry['ChanceOrQuestChance'];
|
||||||
$set['groupChance'] = abs($entry['ChanceOrQuestChance']);
|
$set['groupChance'] = abs($entry['ChanceOrQuestChance']);
|
||||||
}
|
}
|
||||||
|
else // shouldn't happened
|
||||||
|
{
|
||||||
|
if (User::isInGroup(U_GROUP_DEV))
|
||||||
|
die(var_dump($entry));
|
||||||
else
|
else
|
||||||
continue; // shouldn't happen
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$loot[] = $set;
|
$loot[] = $set;
|
||||||
}
|
}
|
||||||
@@ -1939,7 +1868,7 @@ class Util
|
|||||||
$sum = $groupChances[$k];
|
$sum = $groupChances[$k];
|
||||||
if (!$sum)
|
if (!$sum)
|
||||||
$sum = 0;
|
$sum = 0;
|
||||||
elseif ($sum > 100) // group has > 100% dropchance .. hmm, display some kind of error..?
|
else if ($sum > 100) // group has > 100% dropchance .. hmm, display some kind of error..?
|
||||||
$sum = 100;
|
$sum = 100;
|
||||||
|
|
||||||
$cnt = empty($nGroupEquals[$k]) ? 1 : $nGroupEquals[$k];
|
$cnt = empty($nGroupEquals[$k]) ? 1 : $nGroupEquals[$k];
|
||||||
@@ -1968,11 +1897,7 @@ class Util
|
|||||||
// iterate over the 4 available difficulties and assign modes
|
// iterate over the 4 available difficulties and assign modes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($entry > 0)
|
|
||||||
$struct = self::getLootByEntry($table, $entry);
|
$struct = self::getLootByEntry($table, $entry);
|
||||||
else if ($entry < 0)
|
|
||||||
$struct = self::getLootByItem($table, -$entry);
|
|
||||||
|
|
||||||
if (!$struct)
|
if (!$struct)
|
||||||
return $lv;
|
return $lv;
|
||||||
|
|
||||||
@@ -1995,13 +1920,13 @@ class Util
|
|||||||
if ($_ = $loot['reference'])
|
if ($_ = $loot['reference'])
|
||||||
$base['reference'] = $_;
|
$base['reference'] = $_;
|
||||||
|
|
||||||
$buff = []; // equal distribution between min/max .. not blizzlike, but hey, TC-issue
|
$stack = []; // equal distribution between min/max .. not blizzlike, but hey, TC-issue
|
||||||
if (isset($loot['max']) && isset($loot['min']) && ($loot['max'] > $loot['min']))
|
if (isset($loot['max']) && isset($loot['min']) && ($loot['max'] > $loot['min']))
|
||||||
for ($i = $loot['min']; $i <= $loot['max']; $i++)
|
for ($i = $loot['min']; $i <= $loot['max']; $i++)
|
||||||
$buff[] = $i.':'.(round(100 / (1 + $loot['max'] - $loot['min']), 3));
|
$stack[$i] = round(100 / (1 + $loot['max'] - $loot['min']), 3);
|
||||||
|
|
||||||
if ($buff) // yes, it wants a string .. how weired is that..
|
if ($stack) // yes, it wants a string .. how weired is that..
|
||||||
$base['pctstack'] = '{'.implode(',',$buff).'}';
|
$base['pctstack'] = json_encode($stack, JSON_NUMERIC_CHECK);
|
||||||
|
|
||||||
if ($loot['content'] > 0) // regular drop
|
if ($loot['content'] > 0) // regular drop
|
||||||
{
|
{
|
||||||
@@ -2049,9 +1974,142 @@ class Util
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return $lv;
|
return $lv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getLootSource($itemId)
|
||||||
|
{
|
||||||
|
if (!$itemId)
|
||||||
|
return [];
|
||||||
|
|
||||||
|
$final = [];
|
||||||
|
$refResults = [];
|
||||||
|
$chanceMods = [];
|
||||||
|
$query = 'SELECT
|
||||||
|
-lt1.entry AS ARRAY_KEY,
|
||||||
|
IF (lt1.mincountOrRef > 0, lt1.item, lt1.mincountOrRef) AS item,
|
||||||
|
lt1.ChanceOrQuestChance AS chance,
|
||||||
|
SUM(IF(lt2.ChanceOrQuestChance = 0, 1, 0)) AS nZeroItems,
|
||||||
|
SUM(IF(lt2.ChanceOrQuestChance > 0, lt2.ChanceOrQuestChance, 0)) AS sumChance,
|
||||||
|
IF(lt1.groupid > 0, 1, 0) AS isGrouped,
|
||||||
|
IF (lt1.mincountOrRef > 0, lt1.mincountOrRef, 1) AS min,
|
||||||
|
IF (lt1.mincountOrRef > 0, lt1.maxcount, 1) AS max,
|
||||||
|
IF (lt1.mincountOrRef < 0, lt1.maxcount, 1) AS multiplier
|
||||||
|
FROM
|
||||||
|
?# lt1
|
||||||
|
LEFT JOIN
|
||||||
|
?# lt2 ON lt1.entry = lt2.entry AND lt1.groupid = lt2.groupid
|
||||||
|
WHERE
|
||||||
|
%s
|
||||||
|
GROUP BY lt2.entry';
|
||||||
|
|
||||||
|
$calcChance = function ($refs, $parents = []) use (&$chanceMods)
|
||||||
|
{
|
||||||
|
$return = [];
|
||||||
|
|
||||||
|
foreach ($refs as $rId => $ref)
|
||||||
|
{
|
||||||
|
// errör: item/ref is in group 0 without a chance set
|
||||||
|
if (!$ref['chance'] && !$ref['isGrouped'])
|
||||||
|
continue; // todo (low): create dubug output
|
||||||
|
|
||||||
|
// errör: item/ref is in group with >100% chance across all items contained
|
||||||
|
if ($ref['isGrouped'] && $ref['sumChance'] > 100)
|
||||||
|
continue; // todo (low): create dubug output
|
||||||
|
|
||||||
|
$chance = ($ref['chance'] ? $ref['chance'] : (100 - $ref['sumChance']) / $ref['nZeroItems']) / 100;
|
||||||
|
|
||||||
|
// apply inherited chanceMods
|
||||||
|
if (isset($chanceMods[$ref['item']]))
|
||||||
|
{
|
||||||
|
$chance *= $chanceMods[$ref['item']][0];
|
||||||
|
$chance = 1 - pow(1 - $chance, $chanceMods[$ref['item']][1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// save chance for parent-ref
|
||||||
|
$chanceMods[$rId] = [$chance, $ref['multiplier']];
|
||||||
|
|
||||||
|
// refTemplate doesn't point to a new ref -> we are done
|
||||||
|
if (!in_array($rId, $parents))
|
||||||
|
{
|
||||||
|
$data = array(
|
||||||
|
'percent' => $chance,
|
||||||
|
'stack' => [$ref['multiplier'], $ref['multiplier']],
|
||||||
|
'count' => 1 // ..and one for the sort script
|
||||||
|
);
|
||||||
|
|
||||||
|
$stack = []; // equal distribution between min/max .. not blizzlike, but hey, TC-issue
|
||||||
|
if ($ref['max'] > $ref['min'])
|
||||||
|
for ($i = $ref['min']; $i <= $ref['max']; $i++)
|
||||||
|
$stack[$i] = round(100 / (1 + $ref['max'] - $ref['min']), 3);
|
||||||
|
|
||||||
|
if ($stack) // yes, it wants a string .. how weired is that..
|
||||||
|
$data['pctstack'] = json_encode($stack, JSON_NUMERIC_CHECK);
|
||||||
|
|
||||||
|
$return[$rId] = $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
};
|
||||||
|
|
||||||
|
$newRefs = DB::Aowow()->select(
|
||||||
|
sprintf($query, 'lt1.item = ?d AND lt1.mincountOrRef > 0'),
|
||||||
|
LOOT_REFERENCE, LOOT_REFERENCE,
|
||||||
|
$itemId
|
||||||
|
);
|
||||||
|
|
||||||
|
while ($newRefs)
|
||||||
|
{
|
||||||
|
$curRefs = $newRefs;
|
||||||
|
$newRefs = DB::Aowow()->select(
|
||||||
|
sprintf($query, 'lt1.mincountOrRef IN (?a)'),
|
||||||
|
LOOT_REFERENCE, LOOT_REFERENCE,
|
||||||
|
array_keys($curRefs)
|
||||||
|
);
|
||||||
|
|
||||||
|
$refResults += $calcChance($curRefs, array_column($newRefs, 'item'));
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i = 1; $i < count(self::$lootTemplates); $i++)
|
||||||
|
{
|
||||||
|
$res = DB::Aowow()->select(
|
||||||
|
sprintf($query, '{lt1.mincountOrRef IN (?a) OR }(lt1.mincountOrRef > 0 AND lt1.item = ?d)'),
|
||||||
|
self::$lootTemplates[$i], self::$lootTemplates[$i],
|
||||||
|
$refResults ? array_keys($refResults) : DBSIMPLE_SKIP,
|
||||||
|
$itemId
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($_ = $calcChance($res))
|
||||||
|
{
|
||||||
|
// format for use in item.php
|
||||||
|
$sort = [];
|
||||||
|
foreach ($_ as $k => $v)
|
||||||
|
{
|
||||||
|
unset($_[$k]);
|
||||||
|
$v['percent'] = round($v['percent'] * 100, 3);
|
||||||
|
$v['key'] = abs($k); // array_multisort issue: it does not preserve numeric keys, restore after sort
|
||||||
|
$sort[$k] = $v['percent'];
|
||||||
|
$_[abs($k)] = $v;
|
||||||
|
}
|
||||||
|
|
||||||
|
array_multisort($sort, SORT_DESC, $_);
|
||||||
|
|
||||||
|
foreach ($_ as $k => $v)
|
||||||
|
{
|
||||||
|
$key = $v['key'];
|
||||||
|
unset($_[$k]);
|
||||||
|
unset($v['key']);
|
||||||
|
|
||||||
|
$_[$key] = $v;
|
||||||
|
}
|
||||||
|
|
||||||
|
$final[self::$lootTemplates[$i]] = $_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $final;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ require 'includes/kernel.php';
|
|||||||
if ($AoWoWconf['maintenance'] && !User::isInGroup(U_GROUP_EMPLOYEE))
|
if ($AoWoWconf['maintenance'] && !User::isInGroup(U_GROUP_EMPLOYEE))
|
||||||
$smarty->brb();
|
$smarty->brb();
|
||||||
|
|
||||||
|
|
||||||
switch ($pageCall)
|
switch ($pageCall)
|
||||||
{
|
{
|
||||||
/* called by user */
|
/* called by user */
|
||||||
|
|||||||
@@ -141,6 +141,8 @@ $lang = array(
|
|||||||
'itemsets' => "Ausrüstungssets",
|
'itemsets' => "Ausrüstungssets",
|
||||||
'mechanic' => "Auswirkung",
|
'mechanic' => "Auswirkung",
|
||||||
'mechAbbr' => "Ausw.",
|
'mechAbbr' => "Ausw.",
|
||||||
|
'npc' => "NPC",
|
||||||
|
'npcs' => "NPCs",
|
||||||
'pet' => "Begleiter",
|
'pet' => "Begleiter",
|
||||||
'pets' => "Begleiter",
|
'pets' => "Begleiter",
|
||||||
'requires' => "Benötigt %s",
|
'requires' => "Benötigt %s",
|
||||||
@@ -169,6 +171,7 @@ $lang = array(
|
|||||||
'specs' => "Spezialisierungen",
|
'specs' => "Spezialisierungen",
|
||||||
'_roles' => ['Heiler', 'Nahkampf-DPS', 'Distanz-DPS', 'Tank'],
|
'_roles' => ['Heiler', 'Nahkampf-DPS', 'Distanz-DPS', 'Tank'],
|
||||||
|
|
||||||
|
'modes' => ['Normal / Normal 10', 'Heroisch / Normal 25', 'Heroisch 10', 'Heroisch 25'],
|
||||||
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
||||||
'stats' => array("Stärke", "Beweglichkeit", "Ausdauer", "Intelligenz", "Willenskraft"),
|
'stats' => array("Stärke", "Beweglichkeit", "Ausdauer", "Intelligenz", "Willenskraft"),
|
||||||
'languages' => array(
|
'languages' => array(
|
||||||
@@ -176,7 +179,7 @@ $lang = array(
|
|||||||
11 => "Drachisch", 12 => "Kalimagisch", 13 => "Gnomisch", 14 => "Trollisch", 33 => "Gossensprache", 35 => "Draeneiisch", 36 => "Zombie", 37 => "Gnomenbinär", 38 => "Goblinbinär"
|
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"),
|
'gl' => array(null, "Erhebliche", "Geringe"),
|
||||||
'si' => array(-2 => "Nur für Horde", -1 => "Nur für Allianz", null, "Allianz", "Horde", "Beide"),
|
'si' => array(1 => "Allianz", -1 => "Nur für Allianz", 2 => "Horde", -2 => "Nur für Horde", 3 => "Beide"),
|
||||||
'resistances' => array(null, 'Heiligwiderstand', 'Feuerwiderstand', 'Naturwiderstand', 'Frostwiderstand', 'Schattenwiderstand', 'Arkanwiderstand'),
|
'resistances' => array(null, 'Heiligwiderstand', 'Feuerwiderstand', 'Naturwiderstand', 'Frostwiderstand', 'Schattenwiderstand', 'Arkanwiderstand'),
|
||||||
'sc' => array("Körperlich", "Heilig", "Feuer", "Natur", "Frost", "Schatten", "Arkan"),
|
'sc' => array("Körperlich", "Heilig", "Feuer", "Natur", "Frost", "Schatten", "Arkan"),
|
||||||
'dt' => array(null, "Magie", "Fluch", "Krankheit", "Gift", "Verstohlenheit", "Unsichtbarkeit", null, null, "Wut"),
|
'dt' => array(null, "Magie", "Fluch", "Krankheit", "Gift", "Verstohlenheit", "Unsichtbarkeit", null, null, "Wut"),
|
||||||
@@ -256,19 +259,13 @@ $lang = array(
|
|||||||
'editAccount' => "Benutze die folgenden Formulare um deine Account-Informationen zu aktualisieren",
|
'editAccount' => "Benutze die folgenden Formulare um deine Account-Informationen zu aktualisieren",
|
||||||
'publicDesc' => "Öffentliche Beschreibung",
|
'publicDesc' => "Öffentliche Beschreibung",
|
||||||
'viewPubDesc' => "Die Beschreibung in deinem <a href=\"?user=%s\">öffentlichen Profil</a> ansehen",
|
'viewPubDesc' => "Die Beschreibung in deinem <a href=\"?user=%s\">öffentlichen Profil</a> ansehen",
|
||||||
|
|
||||||
|
|
||||||
// Please_enter_your_confirm_password = Bitte das Passwort bestätigen
|
|
||||||
// Please_enter_your_username = Gib bitte deinen Benutzernamen ein
|
|
||||||
// Please_enter_your_password = Gib bitte dein Kennwort ein
|
|
||||||
// Remember_me_on_this_computer = Auf diesem Computer merken
|
|
||||||
),
|
|
||||||
'event' => array(
|
|
||||||
'category' => array("Nicht kategorisiert", "Feiertage", "Wiederkehrend", "Spieler vs. Spieler")
|
|
||||||
),
|
),
|
||||||
'npc' => array(
|
'npc' => array(
|
||||||
'rank' => ['Normal', 'Elite', 'Rar Elite', 'Boss', 'Rar']
|
'rank' => ['Normal', 'Elite', 'Rar Elite', 'Boss', 'Rar']
|
||||||
),
|
),
|
||||||
|
'event' => array(
|
||||||
|
'category' => array("Nicht kategorisiert", "Feiertage", "Wiederkehrend", "Spieler vs. Spieler")
|
||||||
|
),
|
||||||
'achievement' => array(
|
'achievement' => array(
|
||||||
'criteria' => "Kriterien",
|
'criteria' => "Kriterien",
|
||||||
'points' => "Punkte",
|
'points' => "Punkte",
|
||||||
@@ -376,6 +373,8 @@ $lang = array(
|
|||||||
'_interval' => "Interval",
|
'_interval' => "Interval",
|
||||||
'_inSlot' => "im Platz",
|
'_inSlot' => "im Platz",
|
||||||
|
|
||||||
|
'ppm' => "%s Auslösungen pro Minute",
|
||||||
|
'procChance' => "Procchance",
|
||||||
'starter' => "Basiszauber",
|
'starter' => "Basiszauber",
|
||||||
'trainingCost' => "Trainingskosten",
|
'trainingCost' => "Trainingskosten",
|
||||||
'remaining' => "Noch %s",
|
'remaining' => "Noch %s",
|
||||||
@@ -393,6 +392,11 @@ $lang = array(
|
|||||||
'pctCostOf' => "vom Grund%s",
|
'pctCostOf' => "vom Grund%s",
|
||||||
'costPerSec' => ", plus %s pro Sekunde",
|
'costPerSec' => ", plus %s pro Sekunde",
|
||||||
'costPerLevel' => ", plus %s pro Stufe",
|
'costPerLevel' => ", plus %s pro Stufe",
|
||||||
|
'_scaling' => "Skalierung",
|
||||||
|
'scaling' => array(
|
||||||
|
'directSP' => "+%.2f%% der Zaubermacht zum direkten Effekt", 'directAP' => "+%.2f%% der Angriffskraft zum direkten Effekt",
|
||||||
|
'dotSP' => "+%.2f%% der Zaubermacht pro Tick", 'dotAP' => "+%.2f%% der Angriffskraft pro Tick"
|
||||||
|
),
|
||||||
'powerRunes' => ["Frost", "Unheilig", "Blut", "Tod"],
|
'powerRunes' => ["Frost", "Unheilig", "Blut", "Tod"],
|
||||||
'powerTypes' => array(
|
'powerTypes' => array(
|
||||||
-2 => "Gesundheit", -1 => null, "Mana", "Wut", "Fokus", "Energie", "Zufriedenheit", "Runen", "Runenmacht",
|
-2 => "Gesundheit", -1 => null, "Mana", "Wut", "Fokus", "Energie", "Zufriedenheit", "Runen", "Runenmacht",
|
||||||
@@ -447,27 +451,48 @@ $lang = array(
|
|||||||
"Siegel"
|
"Siegel"
|
||||||
),
|
),
|
||||||
'weaponSubClass' => array(
|
'weaponSubClass' => array(
|
||||||
"Einhandäxte", "Zweihandäxte", "Bögen", "Schusswaffen", "Einhandstreitkolben",
|
15 => "Dolche", 0 => "Einhandäxte", 7 => "Einhandschwerter", 4 => "Einhandstreitkolben", 13 => "Faustwaffen",
|
||||||
"Zweihandstreitkolben", "Stangenwaffen", "Einhandschwerter", "Zweihandschwerter", null,
|
6 => "Stangenwaffen", 10 => "Stäbe", 1 => "Zweihandäxte", 8 => "Zweihandschwerter", 5 => "Zweihandstreitkolben",
|
||||||
"Stäbe", null, null, "Faustwaffen", "Diverse",
|
18 => "Armbrüste", 2 => "Bögen", 3 => "Schusswaffen", 16 => "Wurfwaffen", 19 => "Zauberstäbe",
|
||||||
"Dolche", "Wurfwaffe", null, "Armbrüste", "Zauberstäbe",
|
20 => "Angelruten", 14 => "Diverse"
|
||||||
"Angelruten"
|
|
||||||
),
|
),
|
||||||
'subClassMasks' => array(
|
'subClassMasks' => array(
|
||||||
0x02A5F3 => 'Nahkampfwaffe', 0x0060 => 'Schild', 0x04000C => 'Distanzwaffe', 0xA091 => 'Einhandnahkampfwaffe'
|
0x02A5F3 => 'Nahkampfwaffe', 0x0060 => 'Schild', 0x04000C => 'Distanzwaffe', 0xA091 => 'Einhandnahkampfwaffe'
|
||||||
),
|
),
|
||||||
'traitShort' => array(
|
'traitShort' => array(
|
||||||
'atkpwr' => "Angr", 'rgdatkpwr' => "DAngr", 'splpwr' => "ZMacht",
|
'atkpwr' => "Angr", 'rgdatkpwr' => "DAngr", 'splpwr' => "ZMacht", 'arcsplpwr' => "ArkM", 'firsplpwr' => "FeuM",
|
||||||
'arcsplpwr' => "ArkM", 'firsplpwr' => "FeuM", 'frosplpwr' => "FroM",
|
'frosplpwr' => "FroM", 'holsplpwr' => "HeiM", 'natsplpwr' => "NatM", 'shasplpwr' => "SchM", 'splheal' => "Heil"
|
||||||
'holsplpwr' => "HeiM", 'natsplpwr' => "NatM", 'shasplpwr' => "SchM",
|
),
|
||||||
'splheal' => "Heil"
|
'spellModOp' => array(
|
||||||
)
|
"Schaden", "Dauer", "Bedrohung", "Effekt 1", "Aufladungen",
|
||||||
|
"Reichweite", "Radius", "kritische Trefferchance", "Alle Effekte", "Zauberzeitverlust",
|
||||||
|
"Zauberzeit", "Abklingzeit", "Effekt 2", "Ignoriere Rüstung", "Kosten",
|
||||||
|
"Kritischer Bonusschaden", "Chance auf Fehlschlag", "Sprung-Ziele", "Chance auf Auslösung", "Intervall",
|
||||||
|
"Multiplikator (Schaden)", "Globale Abklingzeit", "Schaden über Zeit", "Effekt 3", "Multiplikator (Bonus)",
|
||||||
|
null, "Auslösungen pro Minute", "Multiplikator (Betrag)", "Widerstand gegen Bannung", "kritischer Bonusschaden2",
|
||||||
|
"Kostenrückerstattung bei Fehlschlag"
|
||||||
|
),
|
||||||
|
'combatRating' => array(
|
||||||
|
"Waffenfertigkeit", "Verteidigungsfertigkeit", "Ausweichen", "Parrieren", "Blocken",
|
||||||
|
"Nahkampftrefferchance", "Fernkampftrefferchance", "Zaubertrefferchance", "kritische Nahkampftrefferchance", "kritische Fernkampftrefferchance",
|
||||||
|
"kritische Zaubertrefferchance", "erhaltene Nahkampftreffer", "erhaltene Fernkampftreffer", "erhaltene Zaubertreffer", "erhaltene kritische Nahkampftreffer",
|
||||||
|
"erhaltene kritische Fernkampftreffer", "erhaltene kritische Zaubertreffer", "Nahkampftempo", "Fernkampftempo", "Zaubertempo",
|
||||||
|
"Waffenfertigkeit Haupthand", "Waffenfertigkeit Nebenhand", "Waffenfertigkeit Fernkampf", "Waffenkunde", "Rüstungsdurchschlag"
|
||||||
|
),
|
||||||
|
'lockType' => array(
|
||||||
|
null, "Schlossknacken", "Kräuterkunde", "Bergbau", "Falle entschärfen",
|
||||||
|
"Öffnen", "Schatz (DND)", "Verkalkte Elfenedelsteine (DND)", "Schließen", "Falle scharf machen",
|
||||||
|
"Schnell öffnen", "Schnell schließen", "Offenes Tüfteln", "Offenes Knien", "Offenes Angreifen",
|
||||||
|
"Gahz'ridian (DND)", "Schlagen", "PvP öffnen", "PvP schließen", "Angeln",
|
||||||
|
"Inschriftenkunde", "Vom Fahrzeug öffnen"
|
||||||
|
),
|
||||||
|
'stealthType' => ["Allgemein", "Falle"],
|
||||||
|
'invisibilityType' => ["Allgemein", 3 => "Falle", 6 => "Trunkenheit"]
|
||||||
),
|
),
|
||||||
'item' => array(
|
'item' => array(
|
||||||
'armor' => "%s Rüstung",
|
'armor' => "%s Rüstung",
|
||||||
'block' => "%s Blocken",
|
'block' => "%s Blocken",
|
||||||
'charges' => "Aufladungen",
|
'charges' => "Aufladungen",
|
||||||
'expend' => "Verbrauchen",
|
|
||||||
'locked' => "Verschlossen",
|
'locked' => "Verschlossen",
|
||||||
'ratingString' => "%s @ L%s",
|
'ratingString' => "%s @ L%s",
|
||||||
'heroic' => "Heroisch",
|
'heroic' => "Heroisch",
|
||||||
@@ -480,7 +505,6 @@ $lang = array(
|
|||||||
'addsDps' => "Adds",
|
'addsDps' => "Adds",
|
||||||
'fap' => "Angriffskraft in Tiergestalt",
|
'fap' => "Angriffskraft in Tiergestalt",
|
||||||
'durability' => "Haltbarkeit",
|
'durability' => "Haltbarkeit",
|
||||||
'duration' => "Dauer",
|
|
||||||
'realTime' => "Realzeit",
|
'realTime' => "Realzeit",
|
||||||
'conjured' => "Herbeigezauberter Gegenstand",
|
'conjured' => "Herbeigezauberter Gegenstand",
|
||||||
'damagePhys' => "%s Schaden",
|
'damagePhys' => "%s Schaden",
|
||||||
@@ -490,13 +514,40 @@ $lang = array(
|
|||||||
'itemLevel' => "Gegenstandsstufe",
|
'itemLevel' => "Gegenstandsstufe",
|
||||||
'randEnchant' => "<Zufällige Verzauberung>",
|
'randEnchant' => "<Zufällige Verzauberung>",
|
||||||
'readClick' => "<Zum Lesen rechtsklicken>",
|
'readClick' => "<Zum Lesen rechtsklicken>",
|
||||||
|
'openClick' => "<Zum Öffnen rechtsklicken>",
|
||||||
'set' => "Set",
|
'set' => "Set",
|
||||||
|
'partyLoot' => "Gruppenloot",
|
||||||
|
'smartLoot' => "Intelligente Beuteverteilung",
|
||||||
|
'indestructible'=> "Kann nicht zerstört werden",
|
||||||
|
'deprecated' => "Nicht benutzt",
|
||||||
|
'useInShape' => "Benutzbar in Gestaltwandlung",
|
||||||
|
'useInArena' => "Benutzbar in Arenen",
|
||||||
|
'refundable' => "Rückzahlbar",
|
||||||
|
'noNeedRoll' => "Kann nicht für Bedarf werfen",
|
||||||
|
'atKeyring' => "Passt in den Schlüsselbund",
|
||||||
|
'worth' => "Wert",
|
||||||
|
'consumable' => "Verbrauchbar",
|
||||||
|
'nonConsumable' => "Nicht verbrauchbar",
|
||||||
|
'accountWide' => "Accountweit",
|
||||||
|
'millable' => "Mahlbar",
|
||||||
|
'noEquipCD' => "Keine Anlegabklingzeit",
|
||||||
|
'prospectable' => "Sondierbar",
|
||||||
|
'disenchantable'=> "Kann entzaubert werden",
|
||||||
|
'cantDisenchant'=> "Kann nicht entzaubert werden",
|
||||||
|
'repairCost' => "Reparaturkosten",
|
||||||
|
'tool' => "Werkzeug",
|
||||||
|
'cost' => "Preis",
|
||||||
|
'content' => "Inhalt",
|
||||||
|
'_transfer' => 'Dieser Gegenstand wird mit <a href="?item=%d" class="q%d icontiny tinyspecial" style="background-image: url(images/icons/tiny/%s.gif)">%s</a> vertauscht, wenn Ihr zur <span class="%s-icon">%s</span> wechselt.',
|
||||||
|
'_unavailable' => "Dieser Gegenstand ist nicht für Spieler verfügbar.",
|
||||||
'_rndEnchants' => "Zufällige Verzauberungen",
|
'_rndEnchants' => "Zufällige Verzauberungen",
|
||||||
'_chance' => "(Chance von %s%%)",
|
'_chance' => "(Chance von %s%%)",
|
||||||
'_reqLevel' => "Mindeststufe",
|
'_reqLevel' => "Mindeststufe",
|
||||||
'slot' => "Platz",
|
'slot' => "Platz",
|
||||||
'_quality' => "Qualität",
|
'_quality' => "Qualität",
|
||||||
'usableBy' => "Benutzbar von",
|
'usableBy' => "Benutzbar von",
|
||||||
|
'buyout' => "Sofortkaufpreis",
|
||||||
|
'each' => "Stück",
|
||||||
'gems' => "Edelsteine",
|
'gems' => "Edelsteine",
|
||||||
'socketBonus' => "Sockelbonus",
|
'socketBonus' => "Sockelbonus",
|
||||||
'socket' => array (
|
'socket' => array (
|
||||||
@@ -516,16 +567,16 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
'bagFamily' => array(
|
'bagFamily' => array(
|
||||||
"Tasche", "Köcher", "Munitionsbeutel", "Seelentasche", "Lederertasche",
|
"Tasche", "Köcher", "Munitionsbeutel", "Seelentasche", "Lederertasche",
|
||||||
"Schreibertasche", "Kräutertasche", "Verzauberertasche", "Ingenieurstasche", "Schlüssel",
|
"Schreibertasche", "Kräutertasche", "Verzauberertasche", "Ingenieurstasche", null, /*Schlüssel*/
|
||||||
"Edelsteintasche", "Bergbautasche"
|
"Edelsteintasche", "Bergbautasche"
|
||||||
),
|
),
|
||||||
'inventoryType' => array(
|
'inventoryType' => array(
|
||||||
null, "Kopf", "Hals", "Schulter", "Hemd",
|
null, "Kopf", "Hals", "Schulter", "Hemd",
|
||||||
"Brust", "Taille", "Beine", "Füße", "Handgelenke",
|
"Brust", "Taille", "Beine", "Füße", "Handgelenke",
|
||||||
"Hände", "Finger", "Schmuck", "Einhändig", "Schildhand",
|
"Hände", "Finger", "Schmuck", "Einhändig", "Schildhand", /*Schild*/
|
||||||
"Distanz", "Rücken", "Zweihändig", "Tasche", "Wappenrock",
|
"Distanz", "Rücken", "Zweihändig", "Tasche", "Wappenrock",
|
||||||
"Brust", "Waffenhand", "Schildhand", "In der Schildhand geführt", "Projektil",
|
null, /*Robe*/ "Waffenhand", "Schildhand", "In der Schildhand geführt", "Projektil",
|
||||||
"Wurfwaffe", "Distanzwaffe", "Köcher", "Relikt"
|
"Wurfwaffe", null, /*Ranged2*/ "Köcher", "Relikt"
|
||||||
),
|
),
|
||||||
'armorSubClass' => array(
|
'armorSubClass' => array(
|
||||||
"Sonstiges", "Stoff", "Leder", "Schwere Rüstung", "Platte",
|
"Sonstiges", "Stoff", "Leder", "Schwere Rüstung", "Platte",
|
||||||
@@ -543,9 +594,50 @@ $lang = array(
|
|||||||
null, null, "Pfeil", "Kugel", null
|
null, null, "Pfeil", "Kugel", null
|
||||||
),
|
),
|
||||||
'elixirType' => [null, "Kampf", "Wächter"],
|
'elixirType' => [null, "Kampf", "Wächter"],
|
||||||
'cat' => array(
|
'cat' => array(
|
||||||
// locale_dede.js zerparsen..
|
2 => "Waffen", // self::$spell['weaponSubClass']
|
||||||
),
|
4 => array("Rüstung", array(
|
||||||
|
1 => "Stoffrüstung", 2 => "Lederrüstung", 3 => "Schwere Rüstung", 4 => "Plattenrüstung", 6 => "Schilde", 7 => "Buchbände",
|
||||||
|
8 => "Götzen", 9 => "Totems", 10 => "Siegel", -6 => "Umhänge", -5 => "Nebenhandgegenstände", -8 => "Hemden",
|
||||||
|
-7 => "Wappenröcke", -3 => "Amulette", -2 => "Ringe", -4 => "Schmuckstücke", 0 => "Verschiedenes (Rüstung)",
|
||||||
|
)),
|
||||||
|
1 => array("Behälter", array(
|
||||||
|
0 => "Taschen", 3 => "Verzauberertaschen", 4 => "Ingenieurstaschen", 5 => "Edelsteintaschen", 2 => "Kräutertaschen", 8 => "Schreibertaschen",
|
||||||
|
7 => "Lederertaschen", 6 => "Bergbautaschen", 1 => "Seelentaschen"
|
||||||
|
)),
|
||||||
|
0 => array("Verbrauchbar", array(
|
||||||
|
-3 => "Gegenstandsverzauberungen (Temporäre)", 6 => "Gegenstandsverzauberungen (Dauerhafte)", 2 => ["Elixire", [1 => "Kampfelixire", 2 => "Wächterelixire"]],
|
||||||
|
1 => "Tränke", 4 => "Schriftrollen", 7 => "Verbände", 0 => "Verbrauchbar", 3 => "Fläschchen", 5 => "Essen & Trinken",
|
||||||
|
8 => "Andere (Verbrauchbar)"
|
||||||
|
)),
|
||||||
|
16 => array("Glyphen", array(
|
||||||
|
1 => "Kriegerglyphen", 2 => "Paladinglyphen", 3 => "Jägerglyphen", 4 => "Schurkenglyphen", 5 => "Priesterglyphen", 6 => "Todesritterglyphen",
|
||||||
|
7 => "Schamanenglyphen", 8 => "Magierglyphen", 9 => "Hexenmeisterglyphen", 11 => "Druidenglyphen"
|
||||||
|
)),
|
||||||
|
7 => array("Handwerkswaren", array(
|
||||||
|
14 => "Rüstungsverzauberungen", 5 => "Stoff", 3 => "Geräte", 10 => "Elementar", 12 => "Verzauberkunst", 2 => "Sprengstoff",
|
||||||
|
9 => "Kräuter", 4 => "Juwelenschleifen", 6 => "Leder", 13 => "Materialien", 8 => "Fleisch", 7 => "Metall & Stein",
|
||||||
|
1 => "Teile", 15 => "Waffenverzauberungen", 11 => "Andere (Handwerkswaren)"
|
||||||
|
)),
|
||||||
|
6 => ["Projektile", [ 2 => "Pfeile", 3 => "Kugeln" ]],
|
||||||
|
11 => ["Köcher", [ 2 => "Köcher", 3 => "Munitionsbeutel" ]],
|
||||||
|
9 => array("Rezepte", array(
|
||||||
|
0 => "Bücher", 6 => "Alchemierezepte", 4 => "Schmiedekunstpläne", 5 => "Kochrezepte", 8 => "Verzauberkunstformeln", 3 => "Ingenieurschemata",
|
||||||
|
7 => "Erste Hilfe-Bücher", 9 => "Angelbücher", 11 => "Inschriftenkundetechniken",10 => "Juwelenschleifen-Vorlagen",1 => "Lederverarbeitungsmuster",12 => "Bergbauleitfäden",
|
||||||
|
2 => "Schneidereimuster"
|
||||||
|
)),
|
||||||
|
3 => array("Edelsteine", array(
|
||||||
|
6 => "Meta-Edelsteine", 0 => "Rote Edelsteine", 1 => "Blaue Edelsteine", 2 => "Gelbe Edelsteine", 3 => "Violette Edelsteine", 4 => "Grüne Edelsteine",
|
||||||
|
5 => "Orange Edelsteine", 8 => "Prismatische Edelsteine", 7 => "Einfache Edelsteine"
|
||||||
|
)),
|
||||||
|
15 => array("Verschiedenes", array(
|
||||||
|
-2 => "Rüstungsmarken", 3 => "Feiertag", 0 => "Plunder", 1 => "Reagenzien", 5 => "Reittiere", -7 => "Flugtiere",
|
||||||
|
2 => "Haustiere", 4 => "Andere (Verschiedenes)"
|
||||||
|
)),
|
||||||
|
10 => "Währung",
|
||||||
|
12 => "Quest",
|
||||||
|
13 => "schlüssel",
|
||||||
|
),
|
||||||
'statType' => array(
|
'statType' => array(
|
||||||
"Erhöht Euer Mana um %d.",
|
"Erhöht Euer Mana um %d.",
|
||||||
"Erhöht Eure Gesundheit um %d.",
|
"Erhöht Eure Gesundheit um %d.",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ $lang = array(
|
|||||||
'ab' => ["yr", "mo", "wk", "day", "hr", "min", "sec", "ms"]
|
'ab' => ["yr", "mo", "wk", "day", "hr", "min", "sec", "ms"]
|
||||||
),
|
),
|
||||||
'main' => array(
|
'main' => array(
|
||||||
'help' => "Help",
|
'help' => "Help",
|
||||||
'name' => "name",
|
'name' => "name",
|
||||||
'link' => "Link",
|
'link' => "Link",
|
||||||
'signIn' => "Sign in",
|
'signIn' => "Sign in",
|
||||||
@@ -41,14 +41,6 @@ $lang = array(
|
|||||||
'forum' => "Forum",
|
'forum' => "Forum",
|
||||||
'n_a' => "n/a",
|
'n_a' => "n/a",
|
||||||
|
|
||||||
// err_title = An error in AoWoW
|
|
||||||
// un_err = Enter your username
|
|
||||||
// pwd_err = Enter your password
|
|
||||||
// signin_msg = Enter your game account
|
|
||||||
// c_pwd = Repeat password
|
|
||||||
// facts = Facts
|
|
||||||
// This_Object_cant_be_found = Object map not available, Object may be spawned via a script
|
|
||||||
|
|
||||||
// filter
|
// filter
|
||||||
'extSearch' => "Extended search",
|
'extSearch' => "Extended search",
|
||||||
'addFilter' => "Add another Filter",
|
'addFilter' => "Add another Filter",
|
||||||
@@ -66,13 +58,13 @@ $lang = array(
|
|||||||
'disabled' => "Disabled",
|
'disabled' => "Disabled",
|
||||||
'disabledHint' => "Cannot be attained or completed",
|
'disabledHint' => "Cannot be attained or completed",
|
||||||
'serverside' => "Serverside",
|
'serverside' => "Serverside",
|
||||||
'serversideHint' => "These informations are not in the Client and have been provided by sniffing and/or guessing.",
|
'serversideHint'=> "These informations are not in the Client and have been provided by sniffing and/or guessing.",
|
||||||
|
|
||||||
// red buttons
|
// red buttons
|
||||||
'links' => "Links",
|
'links' => "Links",
|
||||||
'compare' => "Compare",
|
'compare' => "Compare",
|
||||||
'view3D' => "View in 3D",
|
'view3D' => "View in 3D",
|
||||||
'findUpgrades' => "Find upgrades...",
|
'findUpgrades' => "Find upgrades...",
|
||||||
|
|
||||||
// misc Tools
|
// misc Tools
|
||||||
'subscribe' => "Subscribe",
|
'subscribe' => "Subscribe",
|
||||||
@@ -86,15 +78,15 @@ $lang = array(
|
|||||||
'englishOnly' => "This page is only available in <b>English</b>.",
|
'englishOnly' => "This page is only available in <b>English</b>.",
|
||||||
|
|
||||||
// calculators
|
// calculators
|
||||||
'preset' => "Preset",
|
'preset' => "Preset",
|
||||||
'addWeight' => "Add another weight",
|
'addWeight' => "Add another weight",
|
||||||
'createWS' => "Create a weight scale",
|
'createWS' => "Create a weight scale",
|
||||||
'jcGemsOnly' => "Include <span%s>JC-only</span> gems",
|
'jcGemsOnly' => "Include <span%s>JC-only</span> gems",
|
||||||
'cappedHint' => 'Tip: <a href="javascript:;" onclick="fi_presetDetails();">Remove</a> weights for capped statistics such as Hit rating.',
|
'cappedHint' => 'Tip: <a href="javascript:;" onclick="fi_presetDetails();">Remove</a> weights for capped statistics such as Hit rating.',
|
||||||
'groupBy' => "Group By",
|
'groupBy' => "Group By",
|
||||||
'gb' => array(
|
'gb' => array(
|
||||||
['None', 'none'], ['Slot', 'slot'], ['Level', 'level'], ['Source', 'source']
|
['None', 'none'], ['Slot', 'slot'], ['Level', 'level'], ['Source', 'source']
|
||||||
),
|
),
|
||||||
'compareTool' => "Item Comparison Tool",
|
'compareTool' => "Item Comparison Tool",
|
||||||
'talentCalc' => "Talent Calculator",
|
'talentCalc' => "Talent Calculator",
|
||||||
'petCalc' => "Hunter Pet Calculator",
|
'petCalc' => "Hunter Pet Calculator",
|
||||||
@@ -117,7 +109,7 @@ $lang = array(
|
|||||||
'difficulty' => "Difficulty",
|
'difficulty' => "Difficulty",
|
||||||
'dispelType' => "Dispel type",
|
'dispelType' => "Dispel type",
|
||||||
'duration' => "Duration",
|
'duration' => "Duration",
|
||||||
'gameObject' => "objects",
|
'gameObject' => "object",
|
||||||
'gameObjects' => "Objects",
|
'gameObjects' => "Objects",
|
||||||
'glyphType' => "Glyph type",
|
'glyphType' => "Glyph type",
|
||||||
'race' => "race",
|
'race' => "race",
|
||||||
@@ -130,12 +122,14 @@ $lang = array(
|
|||||||
'faction' => "faction",
|
'faction' => "faction",
|
||||||
'factions' => "Factions",
|
'factions' => "Factions",
|
||||||
'cooldown' => "%s cooldown",
|
'cooldown' => "%s cooldown",
|
||||||
'item' => "item",
|
'item' => "item",
|
||||||
'items' => "Items",
|
'items' => "Items",
|
||||||
'itemset' => "item Set",
|
'itemset' => "item Set",
|
||||||
'itemsets' => "Item Sets",
|
'itemsets' => "Item Sets",
|
||||||
'mechanic' => "Mechanic",
|
'mechanic' => "Mechanic",
|
||||||
'mechAbbr' => "Mech.",
|
'mechAbbr' => "Mech.",
|
||||||
|
'npc' => "NPC",
|
||||||
|
'npcs' => "NPCs",
|
||||||
'pet' => "Pet",
|
'pet' => "Pet",
|
||||||
'pets' => "Hunter Pets",
|
'pets' => "Hunter Pets",
|
||||||
'profile' => "profile",
|
'profile' => "profile",
|
||||||
@@ -164,6 +158,7 @@ $lang = array(
|
|||||||
'specs' => "Specs",
|
'specs' => "Specs",
|
||||||
'_roles' => ['Healer', 'Melee DPS', 'Ranged DPS', 'Tank'],
|
'_roles' => ['Healer', 'Melee DPS', 'Ranged DPS', 'Tank'],
|
||||||
|
|
||||||
|
'modes' => ['Normal / Normal 10', 'Heroic / Normal 25', 'Heroic 10', 'Heroic 25'],
|
||||||
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
||||||
'stats' => array("Strength", "Agility", "Stamina", "Intellect", "Spirit"),
|
'stats' => array("Strength", "Agility", "Stamina", "Intellect", "Spirit"),
|
||||||
'languages' => array(
|
'languages' => array(
|
||||||
@@ -251,12 +246,6 @@ $lang = array(
|
|||||||
'editAccount' => "Simply use the forms below to update your account information",
|
'editAccount' => "Simply use the forms below to update your account information",
|
||||||
'publicDesc' => "Public Description",
|
'publicDesc' => "Public Description",
|
||||||
'viewPubDesc' => "View your Public Description in your <a href=\"?user=%s\">Profile Page</a>",
|
'viewPubDesc' => "View your Public Description in your <a href=\"?user=%s\">Profile Page</a>",
|
||||||
|
|
||||||
|
|
||||||
// Please_enter_your_username = Enter your username (account)
|
|
||||||
// Please_enter_your_password = Enter your password
|
|
||||||
// Sign_in_to_your_Game_Account = Enter your game account:
|
|
||||||
// Please_enter_your_confirm_password = Please enter your confirm password
|
|
||||||
),
|
),
|
||||||
'npc' => array(
|
'npc' => array(
|
||||||
'rank' => ['Normal', 'Elite', 'Rare Elite', 'Boss', 'Rare']
|
'rank' => ['Normal', 'Elite', 'Rare Elite', 'Boss', 'Rare']
|
||||||
@@ -371,6 +360,8 @@ $lang = array(
|
|||||||
'_interval' => "Interval",
|
'_interval' => "Interval",
|
||||||
'_inSlot' => "in slot",
|
'_inSlot' => "in slot",
|
||||||
|
|
||||||
|
'ppm' => "%s procs per minute",
|
||||||
|
'procChance' => "Proc chance",
|
||||||
'starter' => "Starter spell",
|
'starter' => "Starter spell",
|
||||||
'trainingCost' => "Training cost",
|
'trainingCost' => "Training cost",
|
||||||
'remaining' => "%s remaining",
|
'remaining' => "%s remaining",
|
||||||
@@ -388,6 +379,11 @@ $lang = array(
|
|||||||
'pctCostOf' => "of base %s",
|
'pctCostOf' => "of base %s",
|
||||||
'costPerSec' => ", plus %s per sec",
|
'costPerSec' => ", plus %s per sec",
|
||||||
'costPerLevel' => ", plus %s per level",
|
'costPerLevel' => ", plus %s per level",
|
||||||
|
'_scaling' => "Scaling",
|
||||||
|
'scaling' => array(
|
||||||
|
'directSP' => "+%.2f%% of spell power to direct component", 'directAP' => "+%.2f%% of attack power to direct component",
|
||||||
|
'dotSP' => "+%.2f%% of spell power per tick", 'dotAP' => "+%.2f%% of attack power per tick"
|
||||||
|
),
|
||||||
'powerRunes' => ["Frost", "Unholy", "Blood", "Death"],
|
'powerRunes' => ["Frost", "Unholy", "Blood", "Death"],
|
||||||
'powerTypes' => array(
|
'powerTypes' => array(
|
||||||
-2 => "Health", -1 => null, "Mana", "Rage", "Focus", "Energy", "Happiness", "Rune", "Runic Power",
|
-2 => "Health", -1 => null, "Mana", "Rage", "Focus", "Energy", "Happiness", "Rune", "Runic Power",
|
||||||
@@ -441,7 +437,7 @@ $lang = array(
|
|||||||
null, "Shields", "Librams", "Idols", "Totems",
|
null, "Shields", "Librams", "Idols", "Totems",
|
||||||
"Sigils"
|
"Sigils"
|
||||||
),
|
),
|
||||||
'weaponSubClass' => array(
|
'weaponSubClass' => array( // ordered by content firts, then alphabeticaly
|
||||||
15 => "Daggers", 13 => "Fist Weapons", 0 => "One-Handed Axes", 4 => "One-Handed Maces", 7 => "One-Handed Swords",
|
15 => "Daggers", 13 => "Fist Weapons", 0 => "One-Handed Axes", 4 => "One-Handed Maces", 7 => "One-Handed Swords",
|
||||||
6 => "Polearms", 10 => "Staves", 1 => "Two-Handed Axes", 5 => "Two-Handed Maces", 8 => "Two-Handed Swords",
|
6 => "Polearms", 10 => "Staves", 1 => "Two-Handed Axes", 5 => "Two-Handed Maces", 8 => "Two-Handed Swords",
|
||||||
2 => "Bows", 18 => "Crossbows", 3 => "Guns", 16 => "Thrown", 19 => "Wands",
|
2 => "Bows", 18 => "Crossbows", 3 => "Guns", 16 => "Thrown", 19 => "Wands",
|
||||||
@@ -451,17 +447,39 @@ $lang = array(
|
|||||||
0x02A5F3 => 'Melee Weapon', 0x0060 => 'Shield', 0x04000C => 'Ranged Weapon', 0xA091 => 'One-Handed Melee Weapon'
|
0x02A5F3 => 'Melee Weapon', 0x0060 => 'Shield', 0x04000C => 'Ranged Weapon', 0xA091 => 'One-Handed Melee Weapon'
|
||||||
),
|
),
|
||||||
'traitShort' => array(
|
'traitShort' => array(
|
||||||
'atkpwr' => "AP", 'rgdatkpwr' => "RAP", 'splpwr' => "SP",
|
'atkpwr' => "AP", 'rgdatkpwr' => "RAP", 'splpwr' => "SP", 'arcsplpwr' => "ArcP", 'firsplpwr' => "FireP",
|
||||||
'arcsplpwr' => "ArcP", 'firsplpwr' => "FireP", 'frosplpwr' => "FroP",
|
'frosplpwr' => "FroP", 'holsplpwr' => "HolP", 'natsplpwr' => "NatP", 'shasplpwr' => "ShaP", 'splheal' => "Heal"
|
||||||
'holsplpwr' => "HolP", 'natsplpwr' => "NatP", 'shasplpwr' => "ShaP",
|
),
|
||||||
'splheal' => "Heal"
|
'spellModOp' => array(
|
||||||
)
|
"Damage", "Duration", "Thread", "Effect 1", "Charges",
|
||||||
|
"Range", "Radius", "Critical Hit Chance", "All Effects", "Casting Time loss",
|
||||||
|
"Casting Time", "Cooldown", "Effect 2", "Ignore Armor", "Cost",
|
||||||
|
"Critical Damage Bonus", "Chance to Fail", "Jump Targets", "Proc Chance", "Intervall",
|
||||||
|
"Multiplier (Damage)", "Global Cooldown", "Damage over Time", "Effect 3", "Multiplier (Bonus)",
|
||||||
|
null, "Procs per Minute", "Multiplier (Value)", "Chance to Resist Dispel", "Critical Damage Bonus2",
|
||||||
|
"Refund Cost on Fail"
|
||||||
|
),
|
||||||
|
'combatRating' => array(
|
||||||
|
"Weapon Skill", "Defense Skill", "Dodge", "Parry", "Block",
|
||||||
|
"Melee Hit Chance", "Ranged Hit Chance", "Spell Hit Chance", "Casting Melee Hit Chance", "Casting Ranged Hit Chance",
|
||||||
|
"Casting Spell Hit Chance", "Taken Melee Hit Chance", "Taken Ranged Hit Chance", "Taken Spell Hit Chance", "Taken Critical Melee Hit Chance",
|
||||||
|
"Taken Critical Ranged Hit Chance", "Taken Critical Spell Hit Chance", "Melee Haste", "Ranged Haste", "Spell Haste",
|
||||||
|
"Mainhand Weapon Skill", "Offhand Weapon Skill", "Ranged Weapon Skill", "Expertise", "Armor Penetration"
|
||||||
|
),
|
||||||
|
'lockType' => array(
|
||||||
|
null, "Lockpicking", "Herbalism", "Mining", "Disarm Trap",
|
||||||
|
"Open", "Treasure (DND)", "Calcified Elven Gems (DND)", "Close", "Arm Trap",
|
||||||
|
"Quick Open", "Quick Close", "Open Tinkering", "Open Kneeling", "Open Attacking",
|
||||||
|
"Gahz'ridian (DND)", "Blasting", "PvP Open", "PvP Close", "Fishing (DND)",
|
||||||
|
"Inscription", "Open From Vehicle"
|
||||||
|
),
|
||||||
|
'stealthType' => ["General", "Trap"],
|
||||||
|
'invisibilityType' => ["General", 3 => "Trap", 6 => "Drunk"]
|
||||||
),
|
),
|
||||||
'item' => array(
|
'item' => array(
|
||||||
'armor' => "%s Armor",
|
'armor' => "%s Armor",
|
||||||
'block' => "%s Block",
|
'block' => "%s Block",
|
||||||
'charges' => "Charges",
|
'charges' => "Charges",
|
||||||
'expend' => "expendable",
|
|
||||||
'locked' => "Locked",
|
'locked' => "Locked",
|
||||||
'ratingString' => "%s @ L%s",
|
'ratingString' => "%s @ L%s",
|
||||||
'heroic' => "Heroic",
|
'heroic' => "Heroic",
|
||||||
@@ -483,41 +501,41 @@ $lang = array(
|
|||||||
'itemLevel' => "Item Level",
|
'itemLevel' => "Item Level",
|
||||||
'randEnchant' => "<Random enchantment>",
|
'randEnchant' => "<Random enchantment>",
|
||||||
'readClick' => "<Right Click To Read>",
|
'readClick' => "<Right Click To Read>",
|
||||||
'openClick' => "<Right Click To Open>",
|
'openClick' => "<Right Click To Open>",
|
||||||
'set' => "Set",
|
'set' => "Set",
|
||||||
'partyLoot' => "Party loot",
|
'partyLoot' => "Party loot",
|
||||||
'smartLoot' => "Smart loot",
|
'smartLoot' => "Smart loot",
|
||||||
'indestructible' => "Cannot be destroyed",
|
'indestructible'=> "Cannot be destroyed",
|
||||||
'deprecated' => "Deprecated",
|
'deprecated' => "Deprecated",
|
||||||
'useInShape' => "Usable when shapeshifted",
|
'useInShape' => "Usable when shapeshifted",
|
||||||
'useInArena' => "Usable in arenas",
|
'useInArena' => "Usable in arenas",
|
||||||
'refundable' => "Refundable",
|
'refundable' => "Refundable",
|
||||||
'noNeedRoll' => "Cannot roll Need",
|
'noNeedRoll' => "Cannot roll Need",
|
||||||
'atKeyring' => "Can be placed in the keyring",
|
'atKeyring' => "Can be placed in the keyring",
|
||||||
'worth' => "Worth",
|
'worth' => "Worth",
|
||||||
'consumable' => "Consumable",
|
'consumable' => "Consumable",
|
||||||
'nonConsumable' => "Non-consumable",
|
'nonConsumable' => "Non-consumable",
|
||||||
'accountWide' => "Account-wide",
|
'accountWide' => "Account-wide",
|
||||||
'millable' => "Millable",
|
'millable' => "Millable",
|
||||||
'noEquipCD' => "No equip cooldown",
|
'noEquipCD' => "No equip cooldown",
|
||||||
'prospectable' => "Prospectable",
|
'prospectable' => "Prospectable",
|
||||||
'disenchantable' => "Disenchantable",
|
'disenchantable'=> "Disenchantable",
|
||||||
'cantDisenchant' => "Cannot be disenchanted",
|
'cantDisenchant'=> "Cannot be disenchanted",
|
||||||
'repairCost' => "Repair cost",
|
'repairCost' => "Repair cost",
|
||||||
'tool' => "Tool",
|
'tool' => "Tool",
|
||||||
'cost' => "Cost",
|
'cost' => "Cost",
|
||||||
'content' => "Content",
|
'content' => "Content",
|
||||||
'_transfer' => 'This item will be converted to <a href="?item=%d" class="q%d icontiny tinyspecial" style="background-image: url(images/icons/tiny/%s.gif)">%s</a> if you transfer to <span class="%s-icon">%s</span>.',
|
'_transfer' => 'This item will be converted to <a href="?item=%d" class="q%d icontiny tinyspecial" style="background-image: url(images/icons/tiny/%s.gif)">%s</a> if you transfer to <span class="%s-icon">%s</span>.',
|
||||||
'_unavailable' => "This item is not available to players.",
|
'_unavailable' => "This item is not available to players.",
|
||||||
'_rndEnchants' => "Random Enchantments",
|
'_rndEnchants' => "Random Enchantments",
|
||||||
'_chance' => "(%s%% chance)",
|
'_chance' => "(%s%% chance)",
|
||||||
'_reqLevel' => "Required level",
|
'_reqLevel' => "Required level",
|
||||||
'slot' => "Slot",
|
'slot' => "Slot",
|
||||||
'_quality' => "Quality",
|
'_quality' => "Quality",
|
||||||
'usableBy' => "Usable by",
|
'usableBy' => "Usable by",
|
||||||
'buyout' => "Buyout price",
|
'buyout' => "Buyout price",
|
||||||
'each' => "each",
|
'each' => "each",
|
||||||
'gems' => "Gems",
|
'gems' => "Gems",
|
||||||
'socketBonus' => "Socket Bonus",
|
'socketBonus' => "Socket Bonus",
|
||||||
'socket' => array(
|
'socket' => array(
|
||||||
"Meta Socket", "Red Socket", "Yellow Socket", "Blue Socket", -1 => "Prismatic Socket"
|
"Meta Socket", "Red Socket", "Yellow Socket", "Blue Socket", -1 => "Prismatic Socket"
|
||||||
@@ -552,7 +570,7 @@ $lang = array(
|
|||||||
null, "Shield", "Libram", "Idol", "Totem",
|
null, "Shield", "Libram", "Idol", "Totem",
|
||||||
"Sigil"
|
"Sigil"
|
||||||
),
|
),
|
||||||
'weaponSubClass' => array(
|
'weaponSubClass'=> array(
|
||||||
"Axe", "Axe", "Bow", "Gun", "Mace",
|
"Axe", "Axe", "Bow", "Gun", "Mace",
|
||||||
"Mace", "Polearm", "Sword", "Sword", null,
|
"Mace", "Polearm", "Sword", "Sword", null,
|
||||||
"Staff", null, null, "Fist Weapon", "Miscellaneous",
|
"Staff", null, null, "Fist Weapon", "Miscellaneous",
|
||||||
@@ -562,8 +580,8 @@ $lang = array(
|
|||||||
'projectileSubClass' => array(
|
'projectileSubClass' => array(
|
||||||
null, null, "Arrow", "Bullet", null
|
null, null, "Arrow", "Bullet", null
|
||||||
),
|
),
|
||||||
'elixirType' => [null, "Battle", "Guardian"],
|
'elixirType' => [null, "Battle", "Guardian"],
|
||||||
'cat' => array(
|
'cat' => array( // ordered by content firts, then alphabeticaly
|
||||||
2 => "Weapons", // self::$spell['weaponSubClass']
|
2 => "Weapons", // self::$spell['weaponSubClass']
|
||||||
4 => array("Armor", array(
|
4 => array("Armor", array(
|
||||||
1 => "Cloth Armor", 2 => "Leather Armor", 3 => "Mail Armor", 4 => "Plate Armor", 6 => "Shields", 7 => "Librams",
|
1 => "Cloth Armor", 2 => "Leather Armor", 3 => "Mail Armor", 4 => "Plate Armor", 6 => "Shields", 7 => "Librams",
|
||||||
@@ -575,8 +593,9 @@ $lang = array(
|
|||||||
7 => "Leatherworking Bags", 6 => "Mining Bags", 1 => "Soul Bags"
|
7 => "Leatherworking Bags", 6 => "Mining Bags", 1 => "Soul Bags"
|
||||||
)),
|
)),
|
||||||
0 => array("Consumables", array(
|
0 => array("Consumables", array(
|
||||||
7 => "Bandages", 0 => "Consumables", 2 => "Elixirs", 3 => "Flasks", 5 => "Food & Drinks", 6 => "Item Enhancements (Permanent)",
|
-3 => "Item Enhancements (Temporary)", 6 => "Item Enhancements (Permanent)", 2 => ["Elixirs", [1 => "Battle Elixirs", 2 => "Guardian Elixirs"]],
|
||||||
-3 => "Item Enhancements (Temporary)", 1 => "Potions", 4 => "Scrolls", 8 => "Other (Consumables)"
|
1 => "Potions", 4 => "Scrolls", 7 => "Bandages", 0 => "Consumables", 3 => "Flasks", 5 => "Food & Drinks",
|
||||||
|
8 => "Other (Consumables)"
|
||||||
)),
|
)),
|
||||||
16 => array("Glyphs", array(
|
16 => array("Glyphs", array(
|
||||||
1 => "Warrior Glyphs", 2 => "Paladin Glyphs", 3 => "Hunter Glyphs", 4 => "Rogue Glyphs", 5 => "Priest Glyphs", 6 => "Death Knight Glyphs",
|
1 => "Warrior Glyphs", 2 => "Paladin Glyphs", 3 => "Hunter Glyphs", 4 => "Rogue Glyphs", 5 => "Priest Glyphs", 6 => "Death Knight Glyphs",
|
||||||
|
|||||||
@@ -133,6 +133,8 @@ $lang = array(
|
|||||||
'itemsets' => "Conjuntos de objetos",
|
'itemsets' => "Conjuntos de objetos",
|
||||||
'mechanic' => "Mecanica",
|
'mechanic' => "Mecanica",
|
||||||
'mechAbbr' => "Mec.",
|
'mechAbbr' => "Mec.",
|
||||||
|
'npc' => "PNJ",
|
||||||
|
'npcs' => "PNJs",
|
||||||
'pet' => "Mascota",
|
'pet' => "Mascota",
|
||||||
'pets' => "Mascotas de cazador",
|
'pets' => "Mascotas de cazador",
|
||||||
'profile' => "",
|
'profile' => "",
|
||||||
@@ -161,6 +163,7 @@ $lang = array(
|
|||||||
'specs' => "Especializaciones",
|
'specs' => "Especializaciones",
|
||||||
'_roles' => ['Sanador', 'DPS cuerpo', 'DPS a distancia', 'Tanque'],
|
'_roles' => ['Sanador', 'DPS cuerpo', 'DPS a distancia', 'Tanque'],
|
||||||
|
|
||||||
|
'modes' => ['Normal / Normal 10', 'Heroico / Normal 25', 'Heróico 10', 'Heróico 25'],
|
||||||
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
||||||
'stats' => array("Fuerza", "Agilidad", "Aguante", "Intelecto", "Espíritu"),
|
'stats' => array("Fuerza", "Agilidad", "Aguante", "Intelecto", "Espíritu"),
|
||||||
'languages' => array(
|
'languages' => array(
|
||||||
@@ -168,7 +171,7 @@ $lang = array(
|
|||||||
11 => "Dracónico", 12 => "Kalimag", 13 => "Gnomótico", 14 => "Trol", 33 => "Viscerálico", 35 => "Draenei", 36 => "Zombie", 37 => "Binario gnomo", 38 => "Binario goblin"
|
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"),
|
'gl' => array(null, "Sublime", "Menor"),
|
||||||
'si' => array(-2 => "Horda solamente", -1 => "Alianza solamente", null, "Alianza", "Horda", "Ambos"),
|
'si' => array(1 => "Alianza", -1 => "Alianza solamente", 2 => "Horda", -2 => "Horda solamente", 3 => "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'),
|
'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"),
|
'sc' => array("Física", "Sagrado", "Fuego", "Naturaleza", "Escarcha", "Sombras", "Arcano"),
|
||||||
'dt' => 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"),
|
||||||
@@ -195,7 +198,6 @@ $lang = array(
|
|||||||
"Alimaña", "Mecánico", "Sin especificar", "Tótem", "Mascota mansa", "Nube de gas"
|
"Alimaña", "Mecánico", "Sin especificar", "Tótem", "Mascota mansa", "Nube de gas"
|
||||||
),
|
),
|
||||||
'fa' => array(
|
'fa' => array(
|
||||||
|
|
||||||
1 => "Lobo", 2 => "Felino", 3 => "Araña", 4 => "Oso", 5 => "Jabalí", 6 => "Crocolisco", 7 => "Carroñero", 8 => "Cangrejo",
|
1 => "Lobo", 2 => "Felino", 3 => "Araña", 4 => "Oso", 5 => "Jabalí", 6 => "Crocolisco", 7 => "Carroñero", 8 => "Cangrejo",
|
||||||
9 => "Gorila", 11 => "Raptor", 12 => "Zancaalta", 20 => "Escórpido", 21 => "Tortuga", 24 => "Murciélago", 25 => "Hiena", 26 => "Ave rapaz",
|
9 => "Gorila", 11 => "Raptor", 12 => "Zancaalta", 20 => "Escórpido", 21 => "Tortuga", 24 => "Murciélago", 25 => "Hiena", 26 => "Ave rapaz",
|
||||||
27 => "Serpiente alada", 30 => "Dracohalcón", 31 => "Devastador", 32 => "Acechador deformado",33 => "Esporiélago", 34 => "Raya abisal", 35 => "Serpiente", 37 => "Palomilla",
|
27 => "Serpiente alada", 30 => "Dracohalcón", 31 => "Devastador", 32 => "Acechador deformado",33 => "Esporiélago", 34 => "Raya abisal", 35 => "Serpiente", 37 => "Palomilla",
|
||||||
@@ -216,12 +218,12 @@ $lang = array(
|
|||||||
'goForum' => "Feedback <a href=\"?forums&board=1\">forum</a>",
|
'goForum' => "Feedback <a href=\"?forums&board=1\">forum</a>",
|
||||||
),
|
),
|
||||||
'account' => [],
|
'account' => [],
|
||||||
'event' => array(
|
|
||||||
'category' => array("Sin categoría", "Vacacionales", "Periódicos", "Jugador contra Jugador")
|
|
||||||
),
|
|
||||||
'npc' => array(
|
'npc' => array(
|
||||||
'rank' => ['Normal', 'Élite', 'Élite raro', 'Jefe', 'Raro']
|
'rank' => ['Normal', 'Élite', 'Élite raro', 'Jefe', 'Raro']
|
||||||
),
|
),
|
||||||
|
'event' => array(
|
||||||
|
'category' => array("Sin categoría", "Vacacionales", "Periódicos", "Jugador contra Jugador")
|
||||||
|
),
|
||||||
'achievement' => array(
|
'achievement' => array(
|
||||||
'criteria' => "Requisitos",
|
'criteria' => "Requisitos",
|
||||||
'points' => "Puntos",
|
'points' => "Puntos",
|
||||||
@@ -284,7 +286,7 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
'pet' => array(
|
'pet' => array(
|
||||||
'exotic' => "Exótica",
|
'exotic' => "Exótica",
|
||||||
"cat" => ["Ferocidad", "Tenacidad", "Astucia"]
|
'cat' => ["Ferocidad", "Tenacidad", "Astucia"]
|
||||||
),
|
),
|
||||||
'itemset' => array(
|
'itemset' => array(
|
||||||
'_desc' => "<b>%s</b> es el <b>%s</b>. Contiene %s piezas.",
|
'_desc' => "<b>%s</b> es el <b>%s</b>. Contiene %s piezas.",
|
||||||
@@ -329,6 +331,8 @@ $lang = array(
|
|||||||
'_interval' => "Intérvalo",
|
'_interval' => "Intérvalo",
|
||||||
'_inSlot' => "en la casilla",
|
'_inSlot' => "en la casilla",
|
||||||
|
|
||||||
|
'ppm' => "%s procs por minuto",
|
||||||
|
'procChance' => "Probabilidad de que accione",
|
||||||
'starter' => "Hechizo inicial",
|
'starter' => "Hechizo inicial",
|
||||||
'trainingCost' => "Costo de enseñanza",
|
'trainingCost' => "Costo de enseñanza",
|
||||||
'remaining' => "%s restantes",
|
'remaining' => "%s restantes",
|
||||||
@@ -346,6 +350,11 @@ $lang = array(
|
|||||||
'pctCostOf' => "del %s base",
|
'pctCostOf' => "del %s base",
|
||||||
'costPerSec' => ", mas %s por segundo",
|
'costPerSec' => ", mas %s por segundo",
|
||||||
'costPerLevel' => ", mas %s por nivel",
|
'costPerLevel' => ", mas %s por nivel",
|
||||||
|
'_scaling' => "[Scaling]",
|
||||||
|
'scaling' => array(
|
||||||
|
'directSP' => "[+%.2f%% of spell power to direct component]", 'directAP' => "[+%.2f%% of attack power to direct component]",
|
||||||
|
'dotSP' => "[+%.2f%% of spell power per tick]", 'dotAP' => "[+%.2f%% of attack power per tick]"
|
||||||
|
),
|
||||||
'powerRunes' => ["Escarcha", "Profano", "Sangre", "Muerte"],
|
'powerRunes' => ["Escarcha", "Profano", "Sangre", "Muerte"],
|
||||||
'powerTypes' => array( // heat => spell 70174
|
'powerTypes' => array( // heat => spell 70174
|
||||||
-2 => "Salud", -1 => null, "Maná", "Ira", "Enfoque", "Energía", "[Happiness]", "Runa", "Poder rúnico",
|
-2 => "Salud", -1 => null, "Maná", "Ira", "Enfoque", "Energía", "[Happiness]", "Runa", "Poder rúnico",
|
||||||
@@ -395,32 +404,53 @@ $lang = array(
|
|||||||
0 => "Sin categoría"
|
0 => "Sin categoría"
|
||||||
),
|
),
|
||||||
'armorSubClass' => array(
|
'armorSubClass' => array(
|
||||||
"Misceláneo", "Armaduras de tela","Armaduras de cuero", "Armaduras de malla", "Armaduras de placas",
|
"Misceláneo", "Armaduras de tela", "Armaduras de cuero", "Armaduras de malla", "Armaduras de placas",
|
||||||
null, "Escudos", "Tratados", "Ídolos", "Tótems",
|
null, "Escudos", "Tratados", "Ídolos", "Tótems",
|
||||||
"Sigilos"
|
"Sigilos"
|
||||||
),
|
),
|
||||||
'weaponSubClass' => array(
|
'weaponSubClass' => array(
|
||||||
"Hachas de una mano", "Hachas de dos manos","Arcos", "Armas de fuego", "Mazas de una mano",
|
13 => "Armas de puño", 15 => "Dagas", 0 => "Hachas de una mano", 7 => "Espadas de una mano", 4 => "Mazas de una mano",
|
||||||
"Mazas de dos manos", "Armas de asta", "Espadas de una mano", "Espadas de dos manos", null,
|
6 => "Armas de asta", 10 => "Bastones", 1 => "Hachas de dos manos", 8 => "Espadas de dos manos", 5 => "Mazas de dos manos",
|
||||||
"Bastones", null, null, "Armas de puño", "Misceláneo",
|
2 => "Arcos", 3 => "Armas de fuego", 16 => "Arrojadizas", 18 => "Ballestas", 19 => "Varitas",
|
||||||
"Dagas", "Arrojadizas", null, "Ballestas", "Varitas",
|
20 => "Cañas de pescar", 14 => "Misceláneo"
|
||||||
"Cañas de pescar"
|
|
||||||
),
|
),
|
||||||
'subClassMasks' => array(
|
'subClassMasks' => array(
|
||||||
0x02A5F3 => 'Arma cuerpo a cuerpo', 0x0060 => 'Escudo', 0x04000C => 'Arma de ataque a distancia', 0xA091 => 'Arma cuerpo a cuerpo 1M'
|
0x02A5F3 => 'Arma cuerpo a cuerpo', 0x0060 => 'Escudo', 0x04000C => 'Arma de ataque a distancia',0xA091 => 'Arma cuerpo a cuerpo 1M'
|
||||||
),
|
),
|
||||||
'traitShort' => array(
|
'traitShort' => array(
|
||||||
'atkpwr' => "PA", 'rgdatkpwr' => "PA", 'splpwr' => "PH",
|
'atkpwr' => "PA", 'rgdatkpwr' => "PA", 'splpwr' => "PH", 'arcsplpwr' => "PArc", 'firsplpwr' => "PFue",
|
||||||
'arcsplpwr' => "PArc", 'firsplpwr' => "PFue", 'frosplpwr' => "PEsc",
|
'frosplpwr' => "PEsc", 'holsplpwr' => "PSag", 'natsplpwr' => "PNat", 'shasplpwr' => "PSom", 'splheal' => "Sana"
|
||||||
'holsplpwr' => "PSag", 'natsplpwr' => "PNat", 'shasplpwr' => "PSom",
|
),
|
||||||
'splheal' => "Sana"
|
'spellModOp' => array(
|
||||||
)
|
'DAMAGE', 'DURATION', 'THREAT', 'EFFECT1', 'CHARGES',
|
||||||
|
'RANGE', 'RADIUS', 'CRITICAL_CHANCE', 'ALL_EFFECTS', 'NOT_LOSE_CASTING_TIME',
|
||||||
|
'CASTING_TIME', 'COOLDOWN', 'EFFECT2', 'IGNORE_ARMOR', 'COST',
|
||||||
|
'CRIT_DAMAGE_BONUS', 'RESIST_MISS_CHANCE', 'JUMP_TARGETS', 'CHANCE_OF_SUCCESS', 'ACTIVATION_TIME',
|
||||||
|
'DAMAGE_MULTIPLIER', 'GLOBAL_COOLDOWN', 'DOT', 'EFFECT3', 'BONUS_MULTIPLIER',
|
||||||
|
null, 'PROC_PER_MINUTE', 'VALUE_MULTIPLIER', 'RESIST_DISPEL_CHANCE', 'CRIT_DAMAGE_BONUS_2',
|
||||||
|
'SPELL_COST_REFUND_ON_FAIL'
|
||||||
|
),
|
||||||
|
'combatRating' => array(
|
||||||
|
'WEAPON_SKILL', 'DEFENSE_SKILL', 'DODGE', 'PARRY', 'BLOCK',
|
||||||
|
'HIT_MELEE', 'HIT_RANGED', 'HIT_SPELL', 'CRIT_MELEE', 'CRIT_RANGED',
|
||||||
|
'CRIT_SPELL', 'HIT_TAKEN_MELEE', 'HIT_TAKEN_RANGED', 'HIT_TAKEN_SPELL', 'CRIT_TAKEN_MELEE',
|
||||||
|
'CRIT_TAKEN_RANGED', 'CRIT_TAKEN_SPELL', 'HASTE_MELEE', 'HASTE_RANGED', 'HASTE_SPELL',
|
||||||
|
'WEAPON_SKILL_MAINHAND', 'WEAPON_SKILL_OFFHAND', 'WEAPON_SKILL_RANGED', 'EXPERTISE', 'ARMOR_PENETRATION'
|
||||||
|
),
|
||||||
|
'lockType' => array(
|
||||||
|
null, "Forzar cerradura", "Herboristería", "Minería", "Desactivar trampa",
|
||||||
|
"Abrir", "Tesoro (DND)", "Gemas cálcicas elfas (DND)", "Cerrar", "Activar trampa",
|
||||||
|
"Apertura rápida", "Cerrado rápido", "Abrir ajustando", "Abrir de rodillas", "Abrir atacando",
|
||||||
|
"Gahz'ridian (DND)", "Reventar", "Apertura JcJ", "Cierre JcJ", "Pescar",
|
||||||
|
"Inscripción", "Abrir desde vehículo"
|
||||||
|
),
|
||||||
|
'stealthType' => ['GENERAL', 'TRAP'],
|
||||||
|
'invisibilityType' => ['GENERAL', 3 => 'TRAP', 6 => 'DRUNK']
|
||||||
),
|
),
|
||||||
'item' => array(
|
'item' => array(
|
||||||
'armor' => "%s armadura",
|
'armor' => "%s armadura",
|
||||||
'block' => "%s bloqueo",
|
'block' => "%s bloqueo",
|
||||||
'charges' => "cargas",
|
'charges' => "cargas",
|
||||||
'expend' => "[expendable]", // drop this shit
|
|
||||||
'locked' => "Cerrado",
|
'locked' => "Cerrado",
|
||||||
'ratingString' => "%s @ L%s",
|
'ratingString' => "%s @ L%s",
|
||||||
'heroic' => "Heroico",
|
'heroic' => "Heroico",
|
||||||
@@ -433,7 +463,6 @@ $lang = array(
|
|||||||
'addsDps' => "Añade",
|
'addsDps' => "Añade",
|
||||||
'fap' => "poder de ataque feral",
|
'fap' => "poder de ataque feral",
|
||||||
'durability' => "Durabilidad",
|
'durability' => "Durabilidad",
|
||||||
'duration' => "Duración",
|
|
||||||
'realTime' => "tiempo real",
|
'realTime' => "tiempo real",
|
||||||
'conjured' => "Objeto mágico",
|
'conjured' => "Objeto mágico",
|
||||||
'damagePhys' => "%s Daño",
|
'damagePhys' => "%s Daño",
|
||||||
@@ -443,17 +472,44 @@ $lang = array(
|
|||||||
'itemLevel' => "Nivel de objeto",
|
'itemLevel' => "Nivel de objeto",
|
||||||
'randEnchant' => "<Encantamiento aleatorio>",
|
'randEnchant' => "<Encantamiento aleatorio>",
|
||||||
'readClick' => "<Click derecho para leer>",
|
'readClick' => "<Click derecho para leer>",
|
||||||
|
'openClick' => "<Click derecho para abrir>",
|
||||||
'set' => "Conjunto",
|
'set' => "Conjunto",
|
||||||
|
'partyLoot' => "Despojo de grupo",
|
||||||
|
'smartLoot' => "Botín inteligente",
|
||||||
|
'indestructible'=> "No puede ser destruido",
|
||||||
|
'deprecated' => "Depreciado",
|
||||||
|
'useInShape' => "Se puede usar con cambio de forma",
|
||||||
|
'useInArena' => "Se puede usar en arenas",
|
||||||
|
'refundable' => "Se puede devolver",
|
||||||
|
'noNeedRoll' => "No se puede hacer una tirada por Necesidad",
|
||||||
|
'atKeyring' => "Se puede poner en el llavero",
|
||||||
|
'worth' => "Valor",
|
||||||
|
'consumable' => "Consumible",
|
||||||
|
'nonConsumable' => "No consumible",
|
||||||
|
'accountWide' => "Ligado a la cuenta",
|
||||||
|
'millable' => "Se puede moler",
|
||||||
|
'noEquipCD' => "No tiene tiempo de reutilización al equipar",
|
||||||
|
'prospectable' => "Prospectable",
|
||||||
|
'disenchantable'=> "Desencantable",
|
||||||
|
'cantDisenchant'=> "No se puede desencantar",
|
||||||
|
'repairCost' => "Coste de reparación",
|
||||||
|
'tool' => "Herramienta",
|
||||||
|
'cost' => "Coste",
|
||||||
|
'content' => "Contenido",
|
||||||
|
'_transfer' => 'Este objeto será convertido a <a href="?item=%d" class="q%d icontiny tinyspecial" style="background-image: url(images/icons/tiny/%s.gif)">%s</a> si lo transfieres a la <span class="%s-icon">%s</span>.',
|
||||||
|
'_unavailable' => "Este objeto no está disponible para los jugadores.",
|
||||||
'_rndEnchants' => "Encantamientos aleatorios",
|
'_rndEnchants' => "Encantamientos aleatorios",
|
||||||
'_chance' => "(probabilidad %s%%)",
|
'_chance' => "(probabilidad %s%%)",
|
||||||
'_reqLevel' => "Nivel requerido",
|
'_reqLevel' => "Nivel requerido",
|
||||||
'slot' => "Casilla",
|
'slot' => "Casilla",
|
||||||
'_quality' => "Calidad",
|
'_quality' => "Calidad",
|
||||||
'usableBy' => "Usable por",
|
'usableBy' => "Usable por",
|
||||||
|
'buyout' => "Precio de venta en subasta",
|
||||||
|
'each' => "cada uno",
|
||||||
'gems' => "Gemas",
|
'gems' => "Gemas",
|
||||||
'socketBonus' => "Bono de ranura",
|
'socketBonus' => "Bono de ranura",
|
||||||
'socket' => array(
|
'socket' => array(
|
||||||
"Ranura meta", "Ranura roja", "Ranura amarilla", "Ranura azul", -1 => "Ranura prismática "
|
"Ranura meta", "Ranura roja", "Ranura amarilla", "Ranura azul", -1 => "Ranura prismática"
|
||||||
),
|
),
|
||||||
'quality' => array (
|
'quality' => array (
|
||||||
"Pobre", "Común", "Poco Común", "Raro",
|
"Pobre", "Común", "Poco Común", "Raro",
|
||||||
@@ -467,18 +523,18 @@ $lang = array(
|
|||||||
"Se liga a la cuenta", "Se liga al recogerlo", "Se liga al equiparlo",
|
"Se liga a la cuenta", "Se liga al recogerlo", "Se liga al equiparlo",
|
||||||
"Se liga al usarlo", "Objeto de misión", "Objeto de misión"
|
"Se liga al usarlo", "Objeto de misión", "Objeto de misión"
|
||||||
),
|
),
|
||||||
"bagFamily" => array(
|
'bagFamily' => array(
|
||||||
"Bolsa", "Carcaj", "Bolsa de municiones", "Bolsa de almas", "Bolsa de peletería",
|
"Bolsa", "Carcaj", "Bolsa de municiones", "Bolsa de almas", "Bolsa de peletería",
|
||||||
"Bolsa de inscripción", "Bolsa de hierbas", "Bolsa de encantamiento", "Bolsa de ingeniería", "Llave",
|
"Bolsa de inscripción", "Bolsa de hierbas", "Bolsa de encantamiento", "Bolsa de ingeniería", null, /*Llave*/
|
||||||
"Bolsa de gemas", "Bolsa de minería"
|
"Bolsa de gemas", "Bolsa de minería"
|
||||||
),
|
),
|
||||||
'inventoryType' => array(
|
'inventoryType' => array(
|
||||||
null, "Cabeza", "Cuello", "Hombro", "Camisa",
|
null, "Cabeza", "Cuello", "Hombro", "Camisa",
|
||||||
"Pecho", "Cintura", "Piernas", "Pies", "Muñeca",
|
"Pecho", "Cintura", "Piernas", "Pies", "Muñeca",
|
||||||
"Manos", "Dedo", "Abalorio", "Una mano", "Escudo",
|
"Manos", "Dedo", "Abalorio", "Una mano", "Mano izquierda", /*Escudo*/
|
||||||
"A distancia", "Espalda", "Dos manos", "Bolsa", "Tabardo",
|
"A distancia", "Espalda", "Dos manos", "Bolsa", "Tabardo",
|
||||||
"Pecho", "Mano derecha", "Mano izquierda", "Sostener con la mano izquierda", "Proyectiles",
|
null, /*Robe*/ "Mano derecha", "Mano izquierda", "Sostener con la mano izquierda", "Proyectiles",
|
||||||
"Arrojadiza", "A distancia", "Carcaj", "Reliquia"
|
"Arrojadiza", null, /*Ranged2*/ "Carcaj", "Reliquia"
|
||||||
),
|
),
|
||||||
'armorSubClass' => array(
|
'armorSubClass' => array(
|
||||||
"Misceláneo", "Tela", "Cuero", "Malla", "Placas",
|
"Misceláneo", "Tela", "Cuero", "Malla", "Placas",
|
||||||
@@ -496,8 +552,50 @@ $lang = array(
|
|||||||
null, null, "Flecha", "Bala", null
|
null, null, "Flecha", "Bala", null
|
||||||
),
|
),
|
||||||
'elixirType' => [null, "Batalla", "Guardián"],
|
'elixirType' => [null, "Batalla", "Guardián"],
|
||||||
'cat' => array(
|
'cat' => array( // ordered by content firts, then alphabeticaly
|
||||||
),
|
2 => "Weapons", // self::$spell['weaponSubClass']
|
||||||
|
4 => array("Armor", array(
|
||||||
|
1 => "Cloth Armor", 2 => "Leather Armor", 3 => "Mail Armor", 4 => "Plate Armor", 6 => "Shields", 7 => "Librams",
|
||||||
|
8 => "Idols", 9 => "Totems", 10 => "Sigils", -6 => "Cloaks", -5 => "Off-hand Frills", -8 => "Shirts",
|
||||||
|
-7 => "Tabards", -3 => "Amulets", -2 => "Rings", -4 => "Trinkets", 0 => "Miscellaneous (Armor)",
|
||||||
|
)),
|
||||||
|
1 => array("Containers", array(
|
||||||
|
0 => "Bags", 3 => "Enchanting Bags", 4 => "Engineering Bags", 5 => "Gem Bags", 2 => "Herb Bags", 8 => "Inscription Bags",
|
||||||
|
7 => "Leatherworking Bags", 6 => "Mining Bags", 1 => "Soul Bags"
|
||||||
|
)),
|
||||||
|
0 => array("Consumables", array(
|
||||||
|
-3 => "Item Enhancements (Temporary)", 6 => "Item Enhancements (Permanent)", 2 => ["Elixirs", [1 => "Battle Elixirs", 2 => "Guardian Elixirs"]],
|
||||||
|
1 => "Potions", 4 => "Scrolls", 7 => "Bandages", 0 => "Consumables", 3 => "Flasks", 5 => "Food & Drinks",
|
||||||
|
8 => "Other (Consumables)"
|
||||||
|
)),
|
||||||
|
16 => array("Glyphs", array(
|
||||||
|
1 => "Warrior Glyphs", 2 => "Paladin Glyphs", 3 => "Hunter Glyphs", 4 => "Rogue Glyphs", 5 => "Priest Glyphs", 6 => "Death Knight Glyphs",
|
||||||
|
7 => "Shaman Glyphs", 8 => "Mage Glyphs", 9 => "Warlock Glyphs", 11 => "Druid Glyphs"
|
||||||
|
)),
|
||||||
|
7 => array("Trade Goods", array(
|
||||||
|
14 => "Armor Enchantments", 5 => "Cloth", 3 => "Devices", 10 => "Elemental", 12 => "Enchanting", 2 => "Explosives",
|
||||||
|
9 => "Herbs", 4 => "Jewelcrafting", 6 => "Leather", 13 => "Materials", 8 => "Meat", 7 => "Metal & Stone",
|
||||||
|
1 => "Parts", 15 => "Weapon Enchantments", 11 => "Other (Trade Goods)"
|
||||||
|
)),
|
||||||
|
6 => ["Projectiles", [ 2 => "Arrows", 3 => "Bullets" ]],
|
||||||
|
11 => ["Quivers", [ 2 => "Quivers", 3 => "Ammo Pouches"]],
|
||||||
|
9 => array("Recipes", array(
|
||||||
|
0 => "Books", 6 => "Alchemy Recipes", 4 => "Blacksmithing Plans", 5 => "Cooking Recipes", 8 => "Enchanting Formulae", 3 => "Engineering Schematics",
|
||||||
|
7 => "First Aid Books", 9 => "Fishing Books", 11 => "Inscription Techniques", 10 => "Jewelcrafting Designs", 1 => "Leatherworking Patterns",12 => "Mining Guides",
|
||||||
|
2 => "Tailoring Patterns"
|
||||||
|
)),
|
||||||
|
3 => array("Gems", array(
|
||||||
|
6 => "Meta Gems", 0 => "Red Gems", 1 => "Blue Gems", 2 => "Yellow Gems", 3 => "Purple Gems", 4 => "Green Gems",
|
||||||
|
5 => "Orange Gems", 8 => "Prismatic Gems", 7 => "Simple Gems"
|
||||||
|
)),
|
||||||
|
15 => array("Miscellaneous", array(
|
||||||
|
-2 => "Armor Tokens", 3 => "Holiday", 0 => "Junk", 1 => "Reagents", 5 => "Mounts", -7 => "Flying Mounts",
|
||||||
|
2 => "Small Pets", 4 => "Other (Miscellaneous)"
|
||||||
|
)),
|
||||||
|
10 => "Currency",
|
||||||
|
12 => "Quest",
|
||||||
|
13 => "Keys",
|
||||||
|
),
|
||||||
'statType' => array(
|
'statType' => array(
|
||||||
"Aumenta tu maná %d p.",
|
"Aumenta tu maná %d p.",
|
||||||
"Aumenta tu salud %d p.",
|
"Aumenta tu salud %d p.",
|
||||||
|
|||||||
@@ -133,6 +133,8 @@ $lang = array(
|
|||||||
'itemsets' => "Ensembles d'objets",
|
'itemsets' => "Ensembles d'objets",
|
||||||
'mechanic' => "Mécanique",
|
'mechanic' => "Mécanique",
|
||||||
'mechAbbr' => "Mécan.",
|
'mechAbbr' => "Mécan.",
|
||||||
|
'npc' => "PNJ",
|
||||||
|
'npcs' => "PNJs",
|
||||||
'pet' => "Familier",
|
'pet' => "Familier",
|
||||||
'pets' => "Familiers de chasseur",
|
'pets' => "Familiers de chasseur",
|
||||||
'profile' => "",
|
'profile' => "",
|
||||||
@@ -161,6 +163,7 @@ $lang = array(
|
|||||||
'specs' => "Specialisations",
|
'specs' => "Specialisations",
|
||||||
'_roles' => ['Soigneur', 'DPS mêlée', 'DPS à distance', 'Tank'],
|
'_roles' => ['Soigneur', 'DPS mêlée', 'DPS à distance', 'Tank'],
|
||||||
|
|
||||||
|
'modes' => ['Standard / Normal 10', 'Héroïque / Normal 25', '10 héroïque', '25 héroïque'],
|
||||||
'expansions' => array("Classique", "The Burning Crusade", "Wrath of the Lich King"),
|
'expansions' => array("Classique", "The Burning Crusade", "Wrath of the Lich King"),
|
||||||
'stats' => array("Force", "Agilité", "Endurance", "Intelligence", "Esprit"),
|
'stats' => array("Force", "Agilité", "Endurance", "Intelligence", "Esprit"),
|
||||||
'languages' => array(
|
'languages' => array(
|
||||||
@@ -168,7 +171,7 @@ $lang = array(
|
|||||||
11 => "Draconique", 12 => "Kalimag", 13 => "Gnome", 14 => "Troll", 33 => "Bas-parler", 35 => "Draeneï", 36 => "Zombie", 37 => "Binaire gnome", 38 => "Binaire gobelin"
|
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"),
|
'gl' => array(null, "Majeur", "Mineur"),
|
||||||
'si' => array(-2 => "Horde seulement", -1 => "Alliance seulement", null, "Alliance", "Horde", "Les deux"),
|
'si' => array(1 => "Alliance", -1 => "Alliance seulement", 2 => "Horde", -2 => "Horde seulement", 3 => "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'),
|
'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'),
|
||||||
'dt' => 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"),
|
'sc' => array("Physique", "Sacré", "Feu", "Nature", "Givre", "Ombre", "Arcane"),
|
||||||
@@ -215,12 +218,12 @@ $lang = array(
|
|||||||
'goForum' => "Feedback <a href=\"?forums&board=1\">forum</a>",
|
'goForum' => "Feedback <a href=\"?forums&board=1\">forum</a>",
|
||||||
),
|
),
|
||||||
'account' => [],
|
'account' => [],
|
||||||
'event' => array(
|
|
||||||
'category' => array("Non classés", "Vacances", "Récurrent", "Joueur ctr. Joueur")
|
|
||||||
),
|
|
||||||
'npc' => array(
|
'npc' => array(
|
||||||
'rank' => ['Standard', 'Élite', 'Élite rare', 'Boss', 'Rare']
|
'rank' => ['Standard', 'Élite', 'Élite rare', 'Boss', 'Rare']
|
||||||
),
|
),
|
||||||
|
'event' => array(
|
||||||
|
'category' => array("Non classés", "Vacances", "Récurrent", "Joueur ctr. Joueur")
|
||||||
|
),
|
||||||
'achievement' => array(
|
'achievement' => array(
|
||||||
'criteria' => "Critères",
|
'criteria' => "Critères",
|
||||||
'points' => "Points",
|
'points' => "Points",
|
||||||
@@ -283,7 +286,7 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
'pet' => array(
|
'pet' => array(
|
||||||
'exotic' => "Exotique",
|
'exotic' => "Exotique",
|
||||||
"cat" => ["Férocité", "Tenacité", "Ruse"]
|
'cat' => ["Férocité", "Tenacité", "Ruse"]
|
||||||
),
|
),
|
||||||
'itemset' => array(
|
'itemset' => array(
|
||||||
'_desc' => "<b>%s</b> est le <b>%s</b>. Il contient %s pièces.",
|
'_desc' => "<b>%s</b> est le <b>%s</b>. Il contient %s pièces.",
|
||||||
@@ -328,6 +331,8 @@ $lang = array(
|
|||||||
'_interval' => "Intervalle",
|
'_interval' => "Intervalle",
|
||||||
'_inSlot' => "dans l'emplacement",
|
'_inSlot' => "dans l'emplacement",
|
||||||
|
|
||||||
|
'ppm' => "%s déclenchements par minute",
|
||||||
|
'procChance' => "Chance",
|
||||||
'starter' => "Sortilège initiaux",
|
'starter' => "Sortilège initiaux",
|
||||||
'trainingCost' => "Coût d'entraînement",
|
'trainingCost' => "Coût d'entraînement",
|
||||||
'remaining' => "%s restantes",
|
'remaining' => "%s restantes",
|
||||||
@@ -345,6 +350,11 @@ $lang = array(
|
|||||||
'pctCostOf' => "de la %s de base",
|
'pctCostOf' => "de la %s de base",
|
||||||
'costPerSec' => ", plus %s par seconde",
|
'costPerSec' => ", plus %s par seconde",
|
||||||
'costPerLevel' => ", plus %s par niveau",
|
'costPerLevel' => ", plus %s par niveau",
|
||||||
|
'_scaling' => "[Scaling]",
|
||||||
|
'scaling' => array(
|
||||||
|
'directSP' => "[+%.2f%% of spell power to direct component]", 'directAP' => "[+%.2f%% of attack power to direct component]",
|
||||||
|
'dotSP' => "[+%.2f%% of spell power per tick]", 'dotAP' => "[+%.2f%% of attack power per tick]"
|
||||||
|
),
|
||||||
'powerRunes' => ["Givre", "Impie", "Sang", "Mort"],
|
'powerRunes' => ["Givre", "Impie", "Sang", "Mort"],
|
||||||
'powerTypes' => array(
|
'powerTypes' => array(
|
||||||
-2 => "vie", -1 => null, "mana", "rage", "focus", "énergie", "[Happiness]", "[Rune]", "puissance runique",
|
-2 => "vie", -1 => null, "mana", "rage", "focus", "énergie", "[Happiness]", "[Rune]", "puissance runique",
|
||||||
@@ -399,27 +409,48 @@ $lang = array(
|
|||||||
"Cachets"
|
"Cachets"
|
||||||
),
|
),
|
||||||
'weaponSubClass' => array(
|
'weaponSubClass' => array(
|
||||||
"Haches à une main", "Haches à deux mains", "Arcs", "Armes à feu", "Masses à une main",
|
13 => "Armes de pugilat", 15 => "Dagues", 7 => "Epées à une main", 0 => "Haches à une main", 4 => "Masses à une main",
|
||||||
"Masses à deux mains", "Armes d'hast", "Epées à une main", "Epées à deux mains", null,
|
6 => "Armes d'hast", 10 => "Bâtons", 8 => "Epées à deux mains", 1 => "Haches à deux mains", 5 => "Masses à deux mains",
|
||||||
"Bâtons", null, null, "Armes de pugilat", "Divers",
|
18 => "Arbalètes", 2 => "Arcs", 3 => "Armes à feu", 16 => "Armes de jet", 19 => "Baguettes",
|
||||||
"Dagues", "Armes de jet", null, "Arbalètes", "Baguettes",
|
20 => "Cannes à pêche", 14 => "Divers"
|
||||||
"Cannes à pêche"
|
|
||||||
),
|
),
|
||||||
'subClassMasks' => array(
|
'subClassMasks' => array(
|
||||||
0x02A5F3 => 'Arme de mêlée', 0x0060 => 'Bouclier', 0x04000C => 'Arme à distance', 0xA091 => 'Arme de mêlée à une main'
|
0x02A5F3 => 'Arme de mêlée', 0x0060 => 'Bouclier', 0x04000C => 'Arme à distance', 0xA091 => 'Arme de mêlée à une main'
|
||||||
),
|
),
|
||||||
'traitShort' => array(
|
'traitShort' => array(
|
||||||
'atkpwr' => "PA", 'rgdatkpwr' => "PAD", 'splpwr' => "PS",
|
'atkpwr' => "PA", 'rgdatkpwr' => "PAD", 'splpwr' => "PS", 'arcsplpwr' => "PArc", 'firsplpwr' => "PFeu",
|
||||||
'arcsplpwr' => "PArc", 'firsplpwr' => "PFeu", 'frosplpwr' => "PGiv",
|
'frosplpwr' => "PGiv", 'holsplpwr' => "PSac", 'natsplpwr' => "PNat", 'shasplpwr' => "POmb", 'splheal' => "Soins"
|
||||||
'holsplpwr' => "PSac", 'natsplpwr' => "PNat", 'shasplpwr' => "POmb",
|
),
|
||||||
'splheal' => "Soins"
|
'spellModOp' => array(
|
||||||
)
|
'DAMAGE', 'DURATION', 'THREAT', 'EFFECT1', 'CHARGES',
|
||||||
|
'RANGE', 'RADIUS', 'CRITICAL_CHANCE', 'ALL_EFFECTS', 'NOT_LOSE_CASTING_TIME',
|
||||||
|
'CASTING_TIME', 'COOLDOWN', 'EFFECT2', 'IGNORE_ARMOR', 'COST',
|
||||||
|
'CRIT_DAMAGE_BONUS', 'RESIST_MISS_CHANCE', 'JUMP_TARGETS', 'CHANCE_OF_SUCCESS', 'ACTIVATION_TIME',
|
||||||
|
'DAMAGE_MULTIPLIER', 'GLOBAL_COOLDOWN', 'DOT', 'EFFECT3', 'BONUS_MULTIPLIER',
|
||||||
|
null, 'PROC_PER_MINUTE', 'VALUE_MULTIPLIER', 'RESIST_DISPEL_CHANCE', 'CRIT_DAMAGE_BONUS_2',
|
||||||
|
'SPELL_COST_REFUND_ON_FAIL'
|
||||||
|
),
|
||||||
|
'combatRating' => array(
|
||||||
|
'WEAPON_SKILL', 'DEFENSE_SKILL', 'DODGE', 'PARRY', 'BLOCK',
|
||||||
|
'HIT_MELEE', 'HIT_RANGED', 'HIT_SPELL', 'CRIT_MELEE', 'CRIT_RANGED',
|
||||||
|
'CRIT_SPELL', 'HIT_TAKEN_MELEE', 'HIT_TAKEN_RANGED', 'HIT_TAKEN_SPELL', 'CRIT_TAKEN_MELEE',
|
||||||
|
'CRIT_TAKEN_RANGED', 'CRIT_TAKEN_SPELL', 'HASTE_MELEE', 'HASTE_RANGED', 'HASTE_SPELL',
|
||||||
|
'WEAPON_SKILL_MAINHAND', 'WEAPON_SKILL_OFFHAND', 'WEAPON_SKILL_RANGED', 'EXPERTISE', 'ARMOR_PENETRATION'
|
||||||
|
),
|
||||||
|
'lockType' => array(
|
||||||
|
null, "Crochetage", "Herboristerie", "Minage", "Désarmement de piège",
|
||||||
|
"Ouverture", "Trésor (DND)", "Gemmes elfiques calcifiées (DND)", "Fermeture", "Pose de piège",
|
||||||
|
"Ouverture rapide", "Fermeture rapide", "Ouverture (bricolage)", "Ouverture (à genoux)", "Ouverture (en attaquant)",
|
||||||
|
"Gahz'ridienne (DND)", "Explosif", "Ouverture JcJ", "Fermeture JcJ", "Pêche",
|
||||||
|
"Calligraphie", "Ouverture à partir d'un véhicule",
|
||||||
|
),
|
||||||
|
'stealthType' => ['GENERAL', 'TRAP'],
|
||||||
|
'invisibilityType' => ['GENERAL', 3 => 'TRAP', 6 => 'DRUNK']
|
||||||
),
|
),
|
||||||
'item' => array(
|
'item' => array(
|
||||||
'armor' => "Armure : %s",
|
'armor' => "Armure : %s",
|
||||||
'block' => "Bloquer : %s",
|
'block' => "Bloquer : %s",
|
||||||
'charges' => "Charges",
|
'charges' => "Charges",
|
||||||
'expend' => "expendable",
|
|
||||||
'locked' => "Verrouillé",
|
'locked' => "Verrouillé",
|
||||||
'ratingString' => "%s @ L%s",
|
'ratingString' => "%s @ L%s",
|
||||||
'heroic' => "Héroïque",
|
'heroic' => "Héroïque",
|
||||||
@@ -432,7 +463,6 @@ $lang = array(
|
|||||||
'addsDps' => "Ajoute",
|
'addsDps' => "Ajoute",
|
||||||
'fap' => "puissance d'attaque en combat farouche",
|
'fap' => "puissance d'attaque en combat farouche",
|
||||||
'durability' => "Durabilité",
|
'durability' => "Durabilité",
|
||||||
'duration' => "Durée",
|
|
||||||
'realTime' => "temps réel",
|
'realTime' => "temps réel",
|
||||||
'conjured' => "Objet invoqué",
|
'conjured' => "Objet invoqué",
|
||||||
'damagePhys' => "Dégâts : %s",
|
'damagePhys' => "Dégâts : %s",
|
||||||
@@ -442,13 +472,40 @@ $lang = array(
|
|||||||
'itemLevel' => "Niveau d'objet",
|
'itemLevel' => "Niveau d'objet",
|
||||||
'randEnchant' => "<Enchantement aléatoire>",
|
'randEnchant' => "<Enchantement aléatoire>",
|
||||||
'readClick' => "<Clique Droit pour Lire>",
|
'readClick' => "<Clique Droit pour Lire>",
|
||||||
|
'openClick' => "<Clic Droit pour Ouvrir>",
|
||||||
'set' => "Set",
|
'set' => "Set",
|
||||||
|
'partyLoot' => "Butin de groupe",
|
||||||
|
'smartLoot' => "Butin intelligent",
|
||||||
|
'indestructible'=> "Ne peut être détruit",
|
||||||
|
'deprecated' => "Désuet",
|
||||||
|
'useInShape' => "Utilisable lorsque transformé",
|
||||||
|
'useInArena' => "Utilisable en Aréna",
|
||||||
|
'refundable' => "Remboursable",
|
||||||
|
'noNeedRoll' => "Ne peut pas faire un jet de Besoin",
|
||||||
|
'atKeyring' => "Va dans le trousseau de clés",
|
||||||
|
'worth' => "Vaut",
|
||||||
|
'consumable' => "Consommable",
|
||||||
|
'nonConsumable' => "Non-consommable",
|
||||||
|
'accountWide' => "Portant sur le compte",
|
||||||
|
'millable' => "Pilable",
|
||||||
|
'noEquipCD' => "Aucun temps de recharge lorsqu'équipé",
|
||||||
|
'prospectable' => "Prospectable",
|
||||||
|
'disenchantable'=> "Desencantable",
|
||||||
|
'cantDisenchant'=> "Ne peut pas être désenchanté",
|
||||||
|
'repairCost' => "Cout de réparation",
|
||||||
|
'tool' => "Outil",
|
||||||
|
'cost' => "Coût",
|
||||||
|
'content' => "Contenu",
|
||||||
|
'_transfer' => 'Cet objet sera converti en <a href="?item=%d" class="q%d icontiny tinyspecial" style="background-image: url(images/icons/tiny/%s.gif)">%s</a> si vous transférez en <span class="%s-icon">%s</span>.',
|
||||||
|
'_unavailable' => "Este objeto no está disponible para los jugadores.",
|
||||||
'_rndEnchants' => "Enchantements aléatoires",
|
'_rndEnchants' => "Enchantements aléatoires",
|
||||||
'_chance' => "(%s%% de chance)",
|
'_chance' => "(%s%% de chance)",
|
||||||
'_reqLevel' => "Niveau requis",
|
'_reqLevel' => "Niveau requis",
|
||||||
'slot' => "Emplacement",
|
'slot' => "Emplacement",
|
||||||
'_quality' => "Qualité",
|
'_quality' => "Qualité",
|
||||||
'usableBy' => "Utilisable par",
|
'usableBy' => "Utilisable par",
|
||||||
|
'buyout' => "Vente immédiate",
|
||||||
|
'each' => "chacun",
|
||||||
'gems' => "Gemmes",
|
'gems' => "Gemmes",
|
||||||
'socketBonus' => "Bonus de châsse",
|
'socketBonus' => "Bonus de châsse",
|
||||||
'socket' => array(
|
'socket' => array(
|
||||||
@@ -459,7 +516,7 @@ $lang = array(
|
|||||||
"Épique", "Légendaire", "Artefact", "Héritage"
|
"Épique", "Légendaire", "Artefact", "Héritage"
|
||||||
),
|
),
|
||||||
'trigger' => array (
|
'trigger' => array (
|
||||||
"Utilise: ", "Équipé : ", "Chances quand vous touchez : ", null, null,
|
"Utilise : ", "Équipé : ", "Chances quand vous touchez : ", null, null,
|
||||||
null, null
|
null, null
|
||||||
),
|
),
|
||||||
'bonding' => array (
|
'bonding' => array (
|
||||||
@@ -468,16 +525,16 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
"bagFamily" => array(
|
"bagFamily" => array(
|
||||||
"Sac", "Carquois", "Giberne", "Sac d'âmes", "Sac de travailleur du cuir",
|
"Sac", "Carquois", "Giberne", "Sac d'âmes", "Sac de travailleur du cuir",
|
||||||
"Sac de calligraphie", "Sac d'herbes", "Sac d'enchanteur", "Sac d'ingénieur", "Clé",
|
"Sac de calligraphie", "Sac d'herbes", "Sac d'enchanteur", "Sac d'ingénieur", null, /*Clé*/
|
||||||
"Sac de gemmes", "Sac de mineur"
|
"Sac de gemmes", "Sac de mineur"
|
||||||
),
|
),
|
||||||
'inventoryType' => array(
|
'inventoryType' => array(
|
||||||
null, "Tête", "Cou", "Épaules", "Chemise",
|
null, "Tête", "Cou", "Épaules", "Chemise",
|
||||||
"Torse", "Taille", "Jambes", "Pieds", "Poignets",
|
"Torse", "Taille", "Jambes", "Pieds", "Poignets",
|
||||||
"Mains", "Doigt", "Bijou", "À une main", "Main gauche",
|
"Mains", "Doigt", "Bijou", "À une main", "Main gauche", /*Shield*/
|
||||||
"À distance", "Dos", "Deux mains", "Sac", "Tabard",
|
"À distance", "Dos", "Deux mains", "Sac", "Tabard",
|
||||||
"Torse", "Main droite", "Main gauche", "Tenu en main gauche", "Projectile",
|
null, /*Robe*/ "Main droite", "Main gauche", "Tenu en main gauche", "Projectile",
|
||||||
"Armes de jet", "À distance", "Carquois", "Relique"
|
"Armes de jet", null, /*Ranged2*/ "Carquois", "Relique"
|
||||||
),
|
),
|
||||||
'armorSubClass' => array(
|
'armorSubClass' => array(
|
||||||
"Divers", "Armures en tissu", "Armures en cuir", "Armures en mailles", "Armures en plaques",
|
"Divers", "Armures en tissu", "Armures en cuir", "Armures en mailles", "Armures en plaques",
|
||||||
@@ -496,7 +553,49 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
'elixirType' => [null, "De bataille", "De gardien"],
|
'elixirType' => [null, "De bataille", "De gardien"],
|
||||||
'cat' => array(
|
'cat' => array(
|
||||||
),
|
2 => "Weapons", // self::$spell['weaponSubClass']
|
||||||
|
4 => array("Armor", array(
|
||||||
|
1 => "Cloth Armor", 2 => "Leather Armor", 3 => "Mail Armor", 4 => "Plate Armor", 6 => "Shields", 7 => "Librams",
|
||||||
|
8 => "Idols", 9 => "Totems", 10 => "Sigils", -6 => "Cloaks", -5 => "Off-hand Frills", -8 => "Shirts",
|
||||||
|
-7 => "Tabards", -3 => "Amulets", -2 => "Rings", -4 => "Trinkets", 0 => "Miscellaneous (Armor)",
|
||||||
|
)),
|
||||||
|
1 => array("Containers", array(
|
||||||
|
0 => "Bags", 3 => "Enchanting Bags", 4 => "Engineering Bags", 5 => "Gem Bags", 2 => "Herb Bags", 8 => "Inscription Bags",
|
||||||
|
7 => "Leatherworking Bags", 6 => "Mining Bags", 1 => "Soul Bags"
|
||||||
|
)),
|
||||||
|
0 => array("Consumables", array(
|
||||||
|
-3 => "Item Enhancements (Temporary)", 6 => "Item Enhancements (Permanent)", 2 => ["Elixirs", [1 => "Battle Elixirs", 2 => "Guardian Elixirs"]],
|
||||||
|
1 => "Potions", 4 => "Scrolls", 7 => "Bandages", 0 => "Consumables", 3 => "Flasks", 5 => "Food & Drinks",
|
||||||
|
8 => "Other (Consumables)"
|
||||||
|
)),
|
||||||
|
16 => array("Glyphs", array(
|
||||||
|
1 => "Warrior Glyphs", 2 => "Paladin Glyphs", 3 => "Hunter Glyphs", 4 => "Rogue Glyphs", 5 => "Priest Glyphs", 6 => "Death Knight Glyphs",
|
||||||
|
7 => "Shaman Glyphs", 8 => "Mage Glyphs", 9 => "Warlock Glyphs", 11 => "Druid Glyphs"
|
||||||
|
)),
|
||||||
|
7 => array("Trade Goods", array(
|
||||||
|
14 => "Armor Enchantments", 5 => "Cloth", 3 => "Devices", 10 => "Elemental", 12 => "Enchanting", 2 => "Explosives",
|
||||||
|
9 => "Herbs", 4 => "Jewelcrafting", 6 => "Leather", 13 => "Materials", 8 => "Meat", 7 => "Metal & Stone",
|
||||||
|
1 => "Parts", 15 => "Weapon Enchantments", 11 => "Other (Trade Goods)"
|
||||||
|
)),
|
||||||
|
6 => ["Projectiles", [ 2 => "Arrows", 3 => "Bullets" ]],
|
||||||
|
11 => ["Quivers", [ 2 => "Quivers", 3 => "Ammo Pouches"]],
|
||||||
|
9 => array("Recipes", array(
|
||||||
|
0 => "Books", 6 => "Alchemy Recipes", 4 => "Blacksmithing Plans", 5 => "Cooking Recipes", 8 => "Enchanting Formulae", 3 => "Engineering Schematics",
|
||||||
|
7 => "First Aid Books", 9 => "Fishing Books", 11 => "Inscription Techniques", 10 => "Jewelcrafting Designs", 1 => "Leatherworking Patterns",12 => "Mining Guides",
|
||||||
|
2 => "Tailoring Patterns"
|
||||||
|
)),
|
||||||
|
3 => array("Gems", array(
|
||||||
|
6 => "Meta Gems", 0 => "Red Gems", 1 => "Blue Gems", 2 => "Yellow Gems", 3 => "Purple Gems", 4 => "Green Gems",
|
||||||
|
5 => "Orange Gems", 8 => "Prismatic Gems", 7 => "Simple Gems"
|
||||||
|
)),
|
||||||
|
15 => array("Miscellaneous", array(
|
||||||
|
-2 => "Armor Tokens", 3 => "Holiday", 0 => "Junk", 1 => "Reagents", 5 => "Mounts", -7 => "Flying Mounts",
|
||||||
|
2 => "Small Pets", 4 => "Other (Miscellaneous)"
|
||||||
|
)),
|
||||||
|
10 => "Currency",
|
||||||
|
12 => "Quest",
|
||||||
|
13 => "Keys",
|
||||||
|
),
|
||||||
'statType' => array(
|
'statType' => array(
|
||||||
"Augmente vos points de mana de %d.",
|
"Augmente vos points de mana de %d.",
|
||||||
"Augmente vos points de vie de %d.",
|
"Augmente vos points de vie de %d.",
|
||||||
|
|||||||
@@ -133,6 +133,8 @@ $lang = array(
|
|||||||
'itemsets' => "Комплекты",
|
'itemsets' => "Комплекты",
|
||||||
'mechanic' => "Механика",
|
'mechanic' => "Механика",
|
||||||
'mechAbbr' => "Механика",
|
'mechAbbr' => "Механика",
|
||||||
|
'npc' => "НИП",
|
||||||
|
'npcs' => "НИП",
|
||||||
'pet' => "Питомец",
|
'pet' => "Питомец",
|
||||||
'pets' => "Питомцы охотников",
|
'pets' => "Питомцы охотников",
|
||||||
'profile' => "",
|
'profile' => "",
|
||||||
@@ -161,6 +163,7 @@ $lang = array(
|
|||||||
'specs' => "Ветки талантов",
|
'specs' => "Ветки талантов",
|
||||||
'_roles' => ['Лекарь', 'Боец ближнего боя', 'Боец дальнего боя', 'Танк'],
|
'_roles' => ['Лекарь', 'Боец ближнего боя', 'Боец дальнего боя', 'Танк'],
|
||||||
|
|
||||||
|
'modes' => ['Обычный / 10-норм.', 'Героический / 25-норм.', '10-героич', '25-героич'],
|
||||||
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
||||||
'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"),
|
'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"),
|
||||||
'languages' => array(
|
'languages' => array(
|
||||||
@@ -215,12 +218,12 @@ $lang = array(
|
|||||||
'goForum' => "Feedback <a href=\"?forums&board=1\">forum</a>",
|
'goForum' => "Feedback <a href=\"?forums&board=1\">forum</a>",
|
||||||
),
|
),
|
||||||
'account' => [],
|
'account' => [],
|
||||||
'event' => array(
|
|
||||||
'category' => array("Разное", "Праздники", "Периодические", "PvP")
|
|
||||||
),
|
|
||||||
'npc' => array(
|
'npc' => array(
|
||||||
'rank' => ['Обычный', 'Элитный', 'Редкий элитный', 'Босс', 'Редкий']
|
'rank' => ['Обычный', 'Элитный', 'Редкий элитный', 'Босс', 'Редкий']
|
||||||
),
|
),
|
||||||
|
'event' => array(
|
||||||
|
'category' => array("Разное", "Праздники", "Периодические", "PvP")
|
||||||
|
),
|
||||||
'achievement' => array(
|
'achievement' => array(
|
||||||
'criteria' => "Критерий",
|
'criteria' => "Критерий",
|
||||||
'points' => "Очки",
|
'points' => "Очки",
|
||||||
@@ -262,7 +265,7 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
'quest' => array(
|
'quest' => array(
|
||||||
'level' => '%s-го уровня',
|
'level' => '%s-го уровня',
|
||||||
'daily' => '', // empty on purpose .. wtf guys?!
|
'daily' => 'Ежедневно',
|
||||||
'requirements' => 'Требования'
|
'requirements' => 'Требования'
|
||||||
),
|
),
|
||||||
'title' => array(
|
'title' => array(
|
||||||
@@ -283,7 +286,7 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
'pet' => array(
|
'pet' => array(
|
||||||
'exotic' => "Экзотический",
|
'exotic' => "Экзотический",
|
||||||
"cat" => ["Свирепость", "Упорство", "Хитрость"]
|
'cat' => ["Свирепость", "Упорство", "Хитрость"]
|
||||||
),
|
),
|
||||||
'itemset' => array(
|
'itemset' => array(
|
||||||
'_desc' => "<b>%s</b> — <b>%s</b>. Он состоит из %s предметов.",
|
'_desc' => "<b>%s</b> — <b>%s</b>. Он состоит из %s предметов.",
|
||||||
@@ -328,6 +331,8 @@ $lang = array(
|
|||||||
'_interval' => "Интервал",
|
'_interval' => "Интервал",
|
||||||
'_inSlot' => "в слот",
|
'_inSlot' => "в слот",
|
||||||
|
|
||||||
|
'ppm' => "Срабатывает %s раз в минуту",
|
||||||
|
'procChance' => "Шанс срабатывания",
|
||||||
'starter' => "Начальное заклинание",
|
'starter' => "Начальное заклинание",
|
||||||
'trainingCost' => "Цена обучения",
|
'trainingCost' => "Цена обучения",
|
||||||
'remaining' => "Осталось: %s",
|
'remaining' => "Осталось: %s",
|
||||||
@@ -340,11 +345,16 @@ $lang = array(
|
|||||||
'meleeRange' => "Дистанция ближнего боя",
|
'meleeRange' => "Дистанция ближнего боя",
|
||||||
'unlimRange' => "Неограниченное расстояние",
|
'unlimRange' => "Неограниченное расстояние",
|
||||||
'reagents' => "Реагент",
|
'reagents' => "Реагент",
|
||||||
'home' => "%lt;Гостиница>",
|
|
||||||
'tools' => "Инструменты",
|
'tools' => "Инструменты",
|
||||||
|
'home' => "%lt;Гостиница>",
|
||||||
'pctCostOf' => "от базовой %s",
|
'pctCostOf' => "от базовой %s",
|
||||||
'costPerSec' => ", плюс %s в секунду",
|
'costPerSec' => ", плюс %s в секунду",
|
||||||
'costPerLevel' => ", плюс %s за уровень",
|
'costPerLevel' => ", плюс %s за уровень",
|
||||||
|
'_scaling' => "[Scaling]",
|
||||||
|
'scaling' => array(
|
||||||
|
'directSP' => "[+%.2f%% of spell power to direct component]", 'directAP' => "[+%.2f%% of attack power to direct component]",
|
||||||
|
'dotSP' => "[+%.2f%% of spell power per tick]", 'dotAP' => "[+%.2f%% of attack power per tick]"
|
||||||
|
),
|
||||||
'powerRunes' => ["Лед", "Руна льда", "Руна крови", "Смерти"],
|
'powerRunes' => ["Лед", "Руна льда", "Руна крови", "Смерти"],
|
||||||
'powerTypes' => array(
|
'powerTypes' => array(
|
||||||
-2 => "Здоровье", -1 => null, "Мана", "Ярость", "Тонус", "Энергия", "[Happiness]", "[Rune]", "Руническая сила",
|
-2 => "Здоровье", -1 => null, "Мана", "Ярость", "Тонус", "Энергия", "[Happiness]", "[Rune]", "Руническая сила",
|
||||||
@@ -399,27 +409,48 @@ $lang = array(
|
|||||||
"Печати"
|
"Печати"
|
||||||
),
|
),
|
||||||
'weaponSubClass' => array(
|
'weaponSubClass' => array(
|
||||||
"Одноручные топоры", "Двуручные топоры", "Луки", "Огнестрельное", "Одноручное дробящее",
|
15 => "Кинжалы", 13 => "Кистевое", 0 => "Одноручные топоры", 4 => "Одноручное дробящее", 7 => "Одноручные мечи",
|
||||||
"Двуручное дробящее", "Древковое", "Одноручные мечи", "Двуручные мечи", null,
|
6 => "Древковое", 10 => "Посохи", 1 => "Двуручные топоры", 5 => "Двуручное дробящее", 8 => "Двуручные мечи",
|
||||||
"Посохи", null, null, "Кистевое", "Разное",
|
2 => "Луки", 18 => "Арбалеты", 3 => "Огнестрельное", 16 => "Метательное", 19 => "Жезлы",
|
||||||
"Кинжалы", "Метательное", null, "Арбалеты", "Жезлы",
|
20 => "Удочки", 14 => "Разное"
|
||||||
"Удочки"
|
|
||||||
),
|
),
|
||||||
'subClassMasks' => array(
|
'subClassMasks' => array(
|
||||||
0x02A5F3 => 'Оружие ближнего боя', 0x0060 => 'Щит', 0x04000C => 'Оружие дальнего боя', 0xA091 => 'Одноручное оружие ближнего боя'
|
0x02A5F3 => 'Оружие ближнего боя', 0x0060 => 'Щит', 0x04000C => 'Оружие дальнего боя', 0xA091 => 'Одноручное оружие ближнего боя'
|
||||||
),
|
),
|
||||||
'traitShort' => array(
|
'traitShort' => array(
|
||||||
'atkpwr' => "СА", 'rgdatkpwr' => "Сил", 'splpwr' => "СЗ",
|
'atkpwr' => "СА", 'rgdatkpwr' => "Сил", 'splpwr' => "СЗ", 'arcsplpwr' => "Урон", 'firsplpwr' => "Урон",
|
||||||
'arcsplpwr' => "Урон", 'firsplpwr' => "Урон", 'frosplpwr' => "Урон",
|
'frosplpwr' => "Урон", 'holsplpwr' => "Урон", 'natsplpwr' => "Урон", 'shasplpwr' => "Урон", 'splheal' => "Исцеление"
|
||||||
'holsplpwr' => "Урон", 'natsplpwr' => "Урон", 'shasplpwr' => "Урон",
|
),
|
||||||
'splheal' => "Исцеление"
|
'spellModOp' => array(
|
||||||
)
|
'DAMAGE', 'DURATION', 'THREAT', 'EFFECT1', 'CHARGES',
|
||||||
|
'RANGE', 'RADIUS', 'CRITICAL_CHANCE', 'ALL_EFFECTS', 'NOT_LOSE_CASTING_TIME',
|
||||||
|
'CASTING_TIME', 'COOLDOWN', 'EFFECT2', 'IGNORE_ARMOR', 'COST',
|
||||||
|
'CRIT_DAMAGE_BONUS', 'RESIST_MISS_CHANCE', 'JUMP_TARGETS', 'CHANCE_OF_SUCCESS', 'ACTIVATION_TIME',
|
||||||
|
'DAMAGE_MULTIPLIER', 'GLOBAL_COOLDOWN', 'DOT', 'EFFECT3', 'BONUS_MULTIPLIER',
|
||||||
|
null, 'PROC_PER_MINUTE', 'VALUE_MULTIPLIER', 'RESIST_DISPEL_CHANCE', 'CRIT_DAMAGE_BONUS_2',
|
||||||
|
'SPELL_COST_REFUND_ON_FAIL'
|
||||||
|
),
|
||||||
|
'combatRating' => array(
|
||||||
|
'WEAPON_SKILL', 'DEFENSE_SKILL', 'DODGE', 'PARRY', 'BLOCK',
|
||||||
|
'HIT_MELEE', 'HIT_RANGED', 'HIT_SPELL', 'CRIT_MELEE', 'CRIT_RANGED',
|
||||||
|
'CRIT_SPELL', 'HIT_TAKEN_MELEE', 'HIT_TAKEN_RANGED', 'HIT_TAKEN_SPELL', 'CRIT_TAKEN_MELEE',
|
||||||
|
'CRIT_TAKEN_RANGED', 'CRIT_TAKEN_SPELL', 'HASTE_MELEE', 'HASTE_RANGED', 'HASTE_SPELL',
|
||||||
|
'WEAPON_SKILL_MAINHAND', 'WEAPON_SKILL_OFFHAND', 'WEAPON_SKILL_RANGED', 'EXPERTISE', 'ARMOR_PENETRATION'
|
||||||
|
),
|
||||||
|
'lockType' => array(
|
||||||
|
null, "Взлом замков", "Травничество", "Горное дело", "Обезвреживание ловушки",
|
||||||
|
"Открытие", "Клад (DND)", "Эльфийские самоцветы (DND)", "Закрытие", "Установка",
|
||||||
|
"Быстрое открытие", "Быстрое закрытие", "Открытие: механика", "Открытие: наклон", "Открытие: атака",
|
||||||
|
"Газ'рилльское украшение", "Взрыв", "Медленное открытие (PvP)", "Медленное закрытие (PvP)", "Рыбная ловля (DND)",
|
||||||
|
"Начертание", "Открыть на ходу"
|
||||||
|
),
|
||||||
|
'stealthType' => ['GENERAL', 'TRAP'],
|
||||||
|
'invisibilityType' => ['GENERAL', 3 => 'TRAP', 6 => 'DRUNK']
|
||||||
),
|
),
|
||||||
'item' => array(
|
'item' => array(
|
||||||
'armor' => "Броня: %s",
|
'armor' => "Броня: %s",
|
||||||
'block' => "Блок: %s",
|
'block' => "Блок: %s",
|
||||||
'charges' => "зарядов",
|
'charges' => "зарядов",
|
||||||
'expend' => "expendable",
|
|
||||||
'locked' => "Заперт",
|
'locked' => "Заперт",
|
||||||
'ratingString' => "%s @ L%s",
|
'ratingString' => "%s @ L%s",
|
||||||
'heroic' => "Героический",
|
'heroic' => "Героический",
|
||||||
@@ -432,7 +463,6 @@ $lang = array(
|
|||||||
'addsDps' => "Добавляет",
|
'addsDps' => "Добавляет",
|
||||||
'fap' => "Сила атаки зверя",
|
'fap' => "Сила атаки зверя",
|
||||||
'durability' => "Прочность:",
|
'durability' => "Прочность:",
|
||||||
'duration' => "Длительность:",
|
|
||||||
'realTime' => "реальное время",
|
'realTime' => "реальное время",
|
||||||
'conjured' => "Сотворенный предмет",
|
'conjured' => "Сотворенный предмет",
|
||||||
'damagePhys' => "Урон: %s",
|
'damagePhys' => "Урон: %s",
|
||||||
@@ -442,13 +472,40 @@ $lang = array(
|
|||||||
'itemLevel' => "Уровень предмета:",
|
'itemLevel' => "Уровень предмета:",
|
||||||
'randEnchant' => "<Случайное зачарование>",
|
'randEnchant' => "<Случайное зачарование>",
|
||||||
'readClick' => "<Щелкните правой кнопкой мыши, чтобы прочитать.>",
|
'readClick' => "<Щелкните правой кнопкой мыши, чтобы прочитать.>",
|
||||||
|
'openClick' => "<Щелкните правой кнопкой мыши, чтобы открыть.>",
|
||||||
'set' => "Набор",
|
'set' => "Набор",
|
||||||
|
'partyLoot' => "Добыча группы",
|
||||||
|
'smartLoot' => "Умное распределение добычи",
|
||||||
|
'indestructible'=> "Невозможно выбросить",
|
||||||
|
'deprecated' => "Устарело",
|
||||||
|
'useInShape' => "Используется в формах",
|
||||||
|
'useInArena' => "Используется на аренах",
|
||||||
|
'refundable' => "Подлежит возврату",
|
||||||
|
'noNeedRoll' => 'Нельзя говорить "Мне это нужно"',
|
||||||
|
'atKeyring' => "Может быть помещён в связку для ключей",
|
||||||
|
'worth' => "Деньги",
|
||||||
|
'consumable' => "Расходуется",
|
||||||
|
'nonConsumable' => "Не расходуется",
|
||||||
|
'accountWide' => "[Account-wide]", // 22.10. hm, check with 'source' later
|
||||||
|
'millable' => "Можно растолочь",
|
||||||
|
'noEquipCD' => "Нет отката при надевании",
|
||||||
|
'prospectable' => "Просеиваемое",
|
||||||
|
'disenchantable'=> "Распыляемый",
|
||||||
|
'cantDisenchant'=> "Нельзя распылить",
|
||||||
|
'repairCost' => "Цена починки",
|
||||||
|
'tool' => "Инструмент",
|
||||||
|
'cost' => "Цена",
|
||||||
|
'content' => "Материал",
|
||||||
|
'_transfer' => 'Этот предмет превратится в <a href="?item=%d" class="q%d icontiny tinyspecial" style="background-image: url(images/icons/tiny/%s.gif)">%s</a>, если вы перейдете за <span class="%s-icon">%s</span>.',
|
||||||
|
'_unavailable' => "Этот предмет не доступен игрокам.",
|
||||||
'_rndEnchants' => "Случайные улучшения",
|
'_rndEnchants' => "Случайные улучшения",
|
||||||
'_chance' => "(шанс %s%%)",
|
'_chance' => "(шанс %s%%)",
|
||||||
'_reqLevel' => "Требуется уровень",
|
'_reqLevel' => "Требуется уровень",
|
||||||
'slot' => "Слот",
|
'slot' => "Слот",
|
||||||
'_quality' => "Качество",
|
'_quality' => "Качество",
|
||||||
'usableBy' => "Используется (кем)",
|
'usableBy' => "Используется (кем)",
|
||||||
|
'buyout' => "Цена выкупа",
|
||||||
|
'each' => "каждый",
|
||||||
'gems' => "Самоцветы",
|
'gems' => "Самоцветы",
|
||||||
'socketBonus' => "При соответствии цвета",
|
'socketBonus' => "При соответствии цвета",
|
||||||
'socket' => array(
|
'socket' => array(
|
||||||
@@ -459,8 +516,8 @@ $lang = array(
|
|||||||
"Эпический", "Легендарный", "Артефакт", "Фамильная черта"
|
"Эпический", "Легендарный", "Артефакт", "Фамильная черта"
|
||||||
),
|
),
|
||||||
'trigger' => array (
|
'trigger' => array (
|
||||||
"Использование: ", "Если на персонаже: ", "Возможный эффект при попадании: ", null,
|
"Использование: ", "Если на персонаже: ", "Возможный эффект при попадании: ",
|
||||||
null, null, null
|
null, null, null, null
|
||||||
),
|
),
|
||||||
'bonding' => array (
|
'bonding' => array (
|
||||||
"Привязано к учетной записи", "Персональный при поднятии", "Становится персональным при надевании",
|
"Привязано к учетной записи", "Персональный при поднятии", "Становится персональным при надевании",
|
||||||
@@ -468,16 +525,16 @@ $lang = array(
|
|||||||
),
|
),
|
||||||
"bagFamily" => array(
|
"bagFamily" => array(
|
||||||
"Сумка", "Колчан", "Подсумок", "Сумка душ", "Сумка кожевника",
|
"Сумка", "Колчан", "Подсумок", "Сумка душ", "Сумка кожевника",
|
||||||
"Сумка начертателя", "Сумка травника", "Сумка зачаровывателя", "Сумка инженера", "Ключ",
|
"Сумка начертателя", "Сумка травника", "Сумка зачаровывателя", "Сумка инженера", null, /*Ключ*/
|
||||||
"Сумка ювелира", "Сумка шахтера"
|
"Сумка ювелира", "Сумка шахтера"
|
||||||
),
|
),
|
||||||
'inventoryType' => array(
|
'inventoryType' => array(
|
||||||
null, "Голова", "Шея", "Плечи", "Рубашка",
|
null, "Голова", "Шея", "Плечи", "Рубашка",
|
||||||
"Грудь", "Пояс", "Ноги", "Ступни", "Запястья",
|
"Грудь", "Пояс", "Ноги", "Ступни", "Запястья",
|
||||||
"Кисти рук", "Палец", "Аксессуар", "Одноручное", "Левая рука",
|
"Кисти рук", "Палец", "Аксессуар", "Одноручное", "Левая рука", /*Shield*/
|
||||||
"Дальний бой", "Спина", "Двуручное", "Сумка", "Гербовая накидка",
|
"Дальний бой", "Спина", "Двуручное", "Сумка", "Гербовая накидка",
|
||||||
"Грудь", "Правая рука", "Левая рука", "Левая рука", "Боеприпасы",
|
null, /*Грудь*/ "Правая рука", "Левая рука", "Левая рука", "Боеприпасы",
|
||||||
"Метательное", "Спина", "Колчан", "Реликвия"
|
"Метательное", null, /*Спина*/ "Колчан", "Реликвия"
|
||||||
),
|
),
|
||||||
'armorSubClass' => array(
|
'armorSubClass' => array(
|
||||||
"Разное", "Ткань", "Кожа", "Кольчуга", "Латы",
|
"Разное", "Ткань", "Кожа", "Кольчуга", "Латы",
|
||||||
@@ -495,8 +552,50 @@ $lang = array(
|
|||||||
null, null, "Стрелы", "Пули", null
|
null, null, "Стрелы", "Пули", null
|
||||||
),
|
),
|
||||||
'elixirType' => [null, "Бой", "Охранный"],
|
'elixirType' => [null, "Бой", "Охранный"],
|
||||||
'cat' => array(
|
'cat' => array( // should be ordered by content firts, then alphabeticaly
|
||||||
),
|
2 => "Оружие", // self::$spell['weaponSubClass']
|
||||||
|
4 => array("Броня", array(
|
||||||
|
1 => "Тканевые", 2 => "Кожаные", 3 => "Кольчужные", 4 => "Латные", 7 => "Манускрипты", 8 => "Идолы",
|
||||||
|
9 => "Тотемы", 10 => "Печати", -6 => "Плащи", -5 => "Левая рука", 6 => "Щиты", -8 => "Рубашки",
|
||||||
|
-7 => "Гербовые накидки", -3 => "Ожерелья", -2 => "Кольца", -4 => "Аксессуары", 0 => "Разное (доспехи)",
|
||||||
|
)),
|
||||||
|
1 => array("Контейнеры", array(
|
||||||
|
0 => "Сумки", 1 => "Сумки душ", 3 => "Сумки зачаровывателя", 4 => "Сумки инженера", 7 => "Сумки кожевника", 8 => "Сумки начертателя",
|
||||||
|
2 => "Сумки травника", 6 => "Сумки шахтера", 5 => "Сумки ювелира",
|
||||||
|
|
||||||
|
)),
|
||||||
|
0 => array("Расходуемые", array(
|
||||||
|
7 => "Бинты", 5 => "Еда и напитки", 1 => "Зелья", 0 => "Расходуемые", 4 => "Свитки", -3 => "Улучшения (временные)",
|
||||||
|
6 => "Улучшения (постоянные)", 3 => "Фляги", 2 => ["Эликсиры", [1 => "Боевые", 2 => "Охранные"]], 8 => "Разное (расходуемые)"
|
||||||
|
)),
|
||||||
|
16 => array("Символы", array(
|
||||||
|
1 => "Символ воина", 2 => "Символ паладина", 3 => "Символ охотника", 4 => "Символ разбойника", 5 => "Символ жреца", 6 => "Символ рыцаря смерти",
|
||||||
|
7 => "Символ шамана", 8 => "Символ мага", 9 => "Символ чернокнижника", 11 => "Символ друида"
|
||||||
|
)),
|
||||||
|
7 => array("Хозяйственные товары", array(
|
||||||
|
14 => "Улучшения брони", 5 => "Ткань", 3 => "Устройства", 10 => "Элементаль", 12 => "Наложение чар", 2 => "Взрывчатка",
|
||||||
|
9 => "Травы", 4 => "Ювелирное дело", 6 => "Кожа", 13 => "Материалы", 8 => "Мясо", 7 => "Металл и камни",
|
||||||
|
1 => "Детали", 15 => "Улучшения оружия", 11 => "Разное (хозяйственные товары)"
|
||||||
|
)),
|
||||||
|
6 => ["Боеприпасы", [ 2 => "Стрелы", 3 => "Пули" ]],
|
||||||
|
11 => ["Колчаны", [ 3 => "Подсумки", 2 => "Колчаны" ]],
|
||||||
|
9 => array("Рецепты", array(
|
||||||
|
0 => "Книги", 6 => "Рецепты алхимии", 4 => "Кузнечное дело", 5 => "Рецепты кулинарии", 8 => "Зачаровывание", 3 => "Инженерное дело",
|
||||||
|
7 => "Первая помощь", 9 => "Рыбная ловля", 11 => "Технологии Начертания", 10 => "Ювелирное дело", 1 => "Кожевничество", 12 => "Руководства по Шахтерскому делу",
|
||||||
|
2 => "Портняжное дело"
|
||||||
|
)),
|
||||||
|
3 => array("Самоцветы", array(
|
||||||
|
6 => "Особые", 0 => "Красные", 1 => "Синие", 2 => "Желтые", 3 => "Фиолетовые", 4 => "Зелёные",
|
||||||
|
5 => "Оранжевые", 8 => "Радужные", 7 => "Простые"
|
||||||
|
)),
|
||||||
|
15 => array("Разное", array(
|
||||||
|
-2 => "Фрагмент доспехов", 3 => "Праздник", 0 => "Хлам", 1 => "Реагент", 5 => "Транспорт", -7 => "Летающий транспорт",
|
||||||
|
2 => "Спутники", 4 => "Разное"
|
||||||
|
)),
|
||||||
|
10 => "Валюта",
|
||||||
|
12 => "Задание",
|
||||||
|
13 => "Ключи",
|
||||||
|
),
|
||||||
'statType' => array(
|
'statType' => array(
|
||||||
"Увеличение запаса маны на %d ед.",
|
"Увеличение запаса маны на %d ед.",
|
||||||
"Увеличение максимального запаса здоровья на %d ед.",
|
"Увеличение максимального запаса здоровья на %d ед.",
|
||||||
|
|||||||
@@ -26,16 +26,16 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||||||
switch ($cat)
|
switch ($cat)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
$condition[] = ['e.holidayId', 0];
|
$condition[] = ['holidayId', 0];
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
$condition[] = ['h.scheduleType', -1];
|
$condition[] = ['scheduleType', -1];
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
$condition[] = ['h.scheduleType', [0, 1]];
|
$condition[] = ['scheduleType', [0, 1]];
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
$condition[] = ['h.scheduleType', 2];
|
$condition[] = ['scheduleType', 2];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
277
pages/item.php
277
pages/item.php
@@ -86,10 +86,10 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
|
|
||||||
$quickInfo = Lang::getInfoBoxForFlags($item->getField('cuFlags'));
|
$quickInfo = Lang::getInfoBoxForFlags($item->getField('cuFlags'));
|
||||||
|
|
||||||
if ($_slot) // itemlevel
|
if (in_array($_class, [ITEM_CLASS_ARMOR, ITEM_CLASS_WEAPON, ITEM_CLASS_AMMUNITION]) || $item->getField('gemEnchantmentId')) // itemlevel
|
||||||
$quickInfo[] = Lang::$game['level'].Lang::$colon.$item->getField('itemLevel');
|
$quickInfo[] = Lang::$game['level'].Lang::$colon.$item->getField('itemLevel');
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_ACCOUNTBOUND ) // account-wide
|
if ($_flags & ITEM_FLAG_ACCOUNTBOUND) // account-wide
|
||||||
$quickInfo[] = Lang::$item['accountWide'];
|
$quickInfo[] = Lang::$item['accountWide'];
|
||||||
|
|
||||||
if ($si = $item->json[$_id]['side']) // side
|
if ($si = $item->json[$_id]['side']) // side
|
||||||
@@ -110,7 +110,7 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
if ($item->getField('spellCharges'.$i) >= 0)
|
if ($item->getField('spellCharges'.$i) >= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
$tt = '[tooltip=tooltip_consumedonuse]'.Lang::$item['consumable'].'[/tooltip]'; // 2:Consommable 3:Verbrauchbar 6:Consumible 8:Расходуется
|
$tt = '[tooltip=tooltip_consumedonuse]'.Lang::$item['consumable'].'[/tooltip]';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,14 +118,15 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
$quickInfo[] = isset($tt) ? $tt : '[tooltip=tooltip_notconsumedonuse]'.Lang::$item['nonConsumable'].'[/tooltip]';
|
$quickInfo[] = isset($tt) ? $tt : '[tooltip=tooltip_notconsumedonuse]'.Lang::$item['nonConsumable'].'[/tooltip]';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($hId = $item->getField('holidayId')) // 3:Werkzeug 6:Herramienta 8:Инструмент 2:Outil
|
if ($hId = $item->getField('holidayId'))
|
||||||
if ($hName = DB::Aowow()->selectRow('SELECT * FROM ?_holidays WHERE id = ?d', $hId))
|
if ($hName = DB::Aowow()->selectRow('SELECT * FROM ?_holidays WHERE id = ?d', $hId))
|
||||||
$quickInfo[] = Lang::$game['eventShort'].Lang::$colon.'[url=?event='.$hId.']'.Util::localizedString($hName, 'name').'[/url]';
|
$quickInfo[] = Lang::$game['eventShort'].Lang::$colon.'[url=?event='.$hId.']'.Util::localizedString($hName, 'name').'[/url]';
|
||||||
|
|
||||||
if ($tId = $item->getField('totemCategory')) // 3:Werkzeug 6:Herramienta 8:Инструмент 2:Outil
|
if ($tId = $item->getField('totemCategory'))
|
||||||
if ($tName = DB::Aowow()->selectRow('SELECT * FROM ?_totemCategory WHERE id = ?d', $tId))
|
if ($tName = DB::Aowow()->selectRow('SELECT * FROM ?_totemCategory WHERE id = ?d', $tId))
|
||||||
$quickInfo[] = Lang::$item['tool'].Lang::$colon.'[url=?items&filter=cr=91;crs='.$tId.';crv=0]'.Util::localizedString($tName, 'name').'[/url]';
|
$quickInfo[] = Lang::$item['tool'].Lang::$colon.'[url=?items&filter=cr=91;crs='.$tId.';crv=0]'.Util::localizedString($tName, 'name').'[/url]';
|
||||||
|
|
||||||
|
$each = $item->getField('stackable') > 1 ? '[color=q0] ('.Lang::$item['each'].')[/color]' : null;
|
||||||
$cost = '';
|
$cost = '';
|
||||||
if ($_ = $item->getField('buyPrice'))
|
if ($_ = $item->getField('buyPrice'))
|
||||||
$cost .= '[money='.$_.']';
|
$cost .= '[money='.$_.']';
|
||||||
@@ -135,20 +136,20 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
$cost .= '[currency='.$c.' amount='.$qty.']';
|
$cost .= '[currency='.$c.' amount='.$qty.']';
|
||||||
|
|
||||||
if ($cost)
|
if ($cost)
|
||||||
$quickInfo[] = Lang::$item['cost'].Lang::$colon.$cost.'[color=q0] ('.Lang::$item['each'].')[/color]'; // 2:Coût 3:Preis 6:Coste 8:Цена
|
$quickInfo[] = Lang::$item['cost'].Lang::$colon.$cost.$each;
|
||||||
|
|
||||||
if ($_ = $item->getField('repairPrice')) // 3:Reparaturkosten 8:Цена починки 2:Cout de réparation 6:Coste de reparación
|
if ($_ = $item->getField('repairPrice'))
|
||||||
$quickInfo[] = Lang::$item['repairCost'].Lang::$colon.'[money='.$_.']';
|
$quickInfo[] = Lang::$item['repairCost'].Lang::$colon.'[money='.$_.']';
|
||||||
|
|
||||||
if (in_array($item->getField('bonding'), [0, 2, 3])) // avg auction buyout
|
if (in_array($item->getField('bonding'), [0, 2, 3])) // avg auction buyout
|
||||||
if ($_ = Util::getBuyoutForItem($_id))
|
if ($_ = Util::getBuyoutForItem($_id))
|
||||||
$quickInfo[] = '[tooltip=tooltip_buyoutprice]'.Lang::$item['buyout.'].'[/tooltip]'.Lang::$colon.'[money='.$_.'][color=q0] ('.Lang::$item['each'].')[/color]';
|
$quickInfo[] = '[tooltip=tooltip_buyoutprice]'.Lang::$item['buyout.'].'[/tooltip]'.Lang::$colon.'[money='.$_.']'.$each;
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_OPENABLE) // avg money contained // 2:Vaut 8:Деньги 6:Valor 3:Wert
|
if ($_flags & ITEM_FLAG_OPENABLE) // avg money contained
|
||||||
if ($_ = intVal(($item->getField('minMoneyLoot') + $item->getField('maxMoneyLoot')) / 2))
|
if ($_ = intVal(($item->getField('minMoneyLoot') + $item->getField('maxMoneyLoot')) / 2))
|
||||||
$quickInfo[] = Lang::$item['worth'].Lang::$colon.'[tooltip=tooltip_avgmoneycontained][money='.$_.'][/tooltip]';
|
$quickInfo[] = Lang::$item['worth'].Lang::$colon.'[tooltip=tooltip_avgmoneycontained][money='.$_.'][/tooltip]';
|
||||||
|
|
||||||
if ($_slot) // if it goes into a slot it may be disenchanted
|
if ($_slot && $_class != ITEM_CLASS_CONTAINER) // if it goes into a slot it may be disenchanted
|
||||||
{
|
{
|
||||||
if ($item->getField('disenchantId'))
|
if ($item->getField('disenchantId'))
|
||||||
{
|
{
|
||||||
@@ -156,47 +157,47 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
if ($_ < 1) // these are some items, that never went live .. extremely rough emulation here
|
if ($_ < 1) // these are some items, that never went live .. extremely rough emulation here
|
||||||
$_ = intVal($item->getField('itemLevel') / 7.5) * 25;
|
$_ = intVal($item->getField('itemLevel') / 7.5) * 25;
|
||||||
|
|
||||||
$quickInfo[] = Lang::$item['disenchantable'].' ([tooltip=tooltip_reqenchanting]'.$_.'[/tooltip])'; // 35002
|
$quickInfo[] = Lang::$item['disenchantable'].' ([tooltip=tooltip_reqenchanting]'.$_.'[/tooltip])';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$quickInfo[] = Lang::$item['cantDisenchant']; // 27978
|
$quickInfo[] = Lang::$item['cantDisenchant'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($_flags & ITEM_FLAG_MILLABLE) && $item->getField('requiredSkill') == 773)
|
if (($_flags & ITEM_FLAG_MILLABLE) && $item->getField('requiredSkill') == 773)
|
||||||
$quickInfo[] = Lang::$item['millable'].' ([tooltip=tooltip_reqinscription]'.$item->getField('requiredSkillRank').'[/tooltip])'; // 8:Можно растолочь 2:Pilable 6:Se puede moler 3:Mahlbar
|
$quickInfo[] = Lang::$item['millable'].' ([tooltip=tooltip_reqinscription]'.$item->getField('requiredSkillRank').'[/tooltip])';
|
||||||
|
|
||||||
if (($_flags & ITEM_FLAG_PROSPECTABLE) && $item->getField('requiredSkill') == 755)
|
if (($_flags & ITEM_FLAG_PROSPECTABLE) && $item->getField('requiredSkill') == 755)
|
||||||
$quickInfo[] = Lang::$item['prospectable'].' ([tooltip=tooltip_reqjewelcrafting]'.$item->getField('requiredSkillRank').'[/tooltip])'; // 3:Sondierbar 8:Просеиваемое 2:Prospectable 6:Prospectable
|
$quickInfo[] = Lang::$item['prospectable'].' ([tooltip=tooltip_reqjewelcrafting]'.$item->getField('requiredSkillRank').'[/tooltip])';
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_DEPRECATED)
|
if ($_flags & ITEM_FLAG_DEPRECATED)
|
||||||
$quickInfo[] = '[tooltip=tooltip_deprecated]'.Lang::$item['deprecated'].'[/tooltip]'; // 3:Nicht benutzt 6:Depreciado 8:Устарело 2:Désuet
|
$quickInfo[] = '[tooltip=tooltip_deprecated]'.Lang::$item['deprecated'].'[/tooltip]';
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_NO_EQUIPCD)
|
if ($_flags & ITEM_FLAG_NO_EQUIPCD)
|
||||||
$quickInfo[] = '[tooltip=tooltip_noequipcooldown]'.Lang::$item['noEquipCD'].'[/tooltip]'; // 3:Keine Anlegabklingzeit 6:No tiene tiempo de reutilización al equipar 8:Нет отката при надевании 2:Aucun temps de recharge lorsqu'équipé
|
$quickInfo[] = '[tooltip=tooltip_noequipcooldown]'.Lang::$item['noEquipCD'].'[/tooltip]';
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_PARTYLOOT)
|
if ($_flags & ITEM_FLAG_PARTYLOOT)
|
||||||
$quickInfo[] = '[tooltip=tooltip_partyloot]'.Lang::$item['partyLoot'].'[/tooltip]'; // 3:Gruppenloot 6:Despojo de grupo 8:Добыча группы 2:Butin de groupe
|
$quickInfo[] = '[tooltip=tooltip_partyloot]'.Lang::$item['partyLoot'].'[/tooltip]';
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_REFUNDABLE)
|
if ($_flags & ITEM_FLAG_REFUNDABLE)
|
||||||
$quickInfo[] = '[tooltip=tooltip_refundable]'.Lang::$item['refundable'].'[/tooltip]'; // 3:Rückzahlbar 6:Se puede devolver 8:Подлежит возврату 2:Remboursable
|
$quickInfo[] = '[tooltip=tooltip_refundable]'.Lang::$item['refundable'].'[/tooltip]';
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_SMARTLOOT)
|
if ($_flags & ITEM_FLAG_SMARTLOOT)
|
||||||
$quickInfo[] = '[tooltip=tooltip_smartloot]'.Lang::$item['smartLoot'].'[/tooltip]'; // 3:Intelligente Beuteverteilung 6:Botín inteligente 8:Умное распределение добычи 2:Butin intelligent
|
$quickInfo[] = '[tooltip=tooltip_smartloot]'.Lang::$item['smartLoot'].'[/tooltip]';
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_INDESTRUCTIBLE)
|
if ($_flags & ITEM_FLAG_INDESTRUCTIBLE)
|
||||||
$quickInfo[] = Lang::$item['indestructible']; // 3:Kann nicht zerstört werden 6:No puede ser destruido 8:Невозможно выбросить 2:Ne peut être détruit
|
$quickInfo[] = Lang::$item['indestructible'];
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_USABLE_ARENA)
|
if ($_flags & ITEM_FLAG_USABLE_ARENA)
|
||||||
$quickInfo[] = Lang::$item['useInArena']; // 3: Benutzbar in Arenen 2:Utilisable en Aréna 6:Se puede usar en arenas 8:Используется на аренах
|
$quickInfo[] = Lang::$item['useInArena'];
|
||||||
|
|
||||||
if ($_flags & ITEM_FLAG_USABLE_SHAPED)
|
if ($_flags & ITEM_FLAG_USABLE_SHAPED)
|
||||||
$quickInfo[] = Lang::$item['useInShape']; // 2:Utilisable lorsque transformé 3:Benutzbar in Gestaltwandlung 6:Se puede usar con cambio de forma 8:Используется в формах
|
$quickInfo[] = Lang::$item['useInShape'];
|
||||||
|
|
||||||
if ($item->getField('flagsExtra') & 0x0100) // cant roll need
|
if ($item->getField('flagsExtra') & 0x0100) // cant roll need
|
||||||
$quickInfo[] = '[tooltip=tooltip_cannotrollneed]'.Lang::$item['noNeedRoll'].'[/tooltip]'; // 3:Kann nicht für Bedarf werfen 6:No se puede hacer una tirada por Necesidad 2:Ne peut pas faire un jet de Besoin 8:Нельзя говорить "Мне это нужно"
|
$quickInfo[] = '[tooltip=tooltip_cannotrollneed]'.Lang::$item['noNeedRoll'].'[/tooltip]';
|
||||||
|
|
||||||
if ($item->getField('bagFamily') & 0x0100) // fits into keyring
|
if ($item->getField('bagFamily') & 0x0100) // fits into keyring
|
||||||
$quickInfo[] = Lang::$item['atKeyring']; // 2:(Va dans le trousseau de clés) 8:(Может быть помещён в связку для ключей) 6:(Se puede poner en el llavero) 3:(Passt in den Schlüsselbund)
|
$quickInfo[] = Lang::$item['atKeyring'];
|
||||||
|
|
||||||
|
|
||||||
/****************/
|
/****************/
|
||||||
@@ -210,13 +211,13 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
'path' => [0, 0],
|
'path' => [0, 0],
|
||||||
'title' => [$item->getField('name', true), Util::ucFirst(Lang::$game['item'])],
|
'title' => [$item->getField('name', true), Util::ucFirst(Lang::$game['item'])],
|
||||||
'pageText' => [],
|
'pageText' => [],
|
||||||
'buttons' => in_array($_class, [ITEM_CLASS_WEAPON, ITEM_CLASS_GEM, ITEM_CLASS_ARMOR]),
|
'buttons' => in_array($_class, [ITEM_CLASS_WEAPON, ITEM_CLASS_ARMOR]) || $item->getField('gemEnchantmentId'),
|
||||||
'page' => array(
|
'page' => array(
|
||||||
'color' => Util::$rarityColorStings[$item->getField('quality')],
|
'color' => Util::$rarityColorStings[$item->getField('quality')],
|
||||||
'quality' => $item->getField('quality'),
|
'quality' => $item->getField('quality'),
|
||||||
'icon' => $item->getField('iconString'),
|
'icon' => $item->getField('iconString'),
|
||||||
'name' => $item->getField('name', true),
|
'name' => $item->getField('name', true),
|
||||||
'displayId' => $item->getField('displayId'),
|
'displayId' => in_array($_class, [ITEM_CLASS_WEAPON, ITEM_CLASS_ARMOR]) && $item->getField('displayId') ? $item->getField('displayId') : null,
|
||||||
'slot' => $_slot,
|
'slot' => $_slot,
|
||||||
'stack' => $item->getField('stackable'),
|
'stack' => $item->getField('stackable'),
|
||||||
'class' => $_class
|
'class' => $_class
|
||||||
@@ -266,6 +267,22 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
{
|
{
|
||||||
uaSort($item->subItems[$_id], function($a, $b) { return strcmp($a['name'], $b['name']); });
|
uaSort($item->subItems[$_id], function($a, $b) { return strcmp($a['name'], $b['name']); });
|
||||||
$pageData['page']['subItems'] = array_values($item->subItems[$_id]);
|
$pageData['page']['subItems'] = array_values($item->subItems[$_id]);
|
||||||
|
|
||||||
|
// merge identical stats and names for normal users (e.g. spellPower of a specific school became generel spellPower with 3.0)
|
||||||
|
if (!User::isInGroup(U_GROUP_STAFF))
|
||||||
|
{
|
||||||
|
for ($i = 1; $i < count($pageData['page']['subItems']); $i++)
|
||||||
|
{
|
||||||
|
$prev = &$pageData['page']['subItems'][$i-1];
|
||||||
|
$cur = &$pageData['page']['subItems'][$i];
|
||||||
|
if ($prev['jsonequip'] == $cur['jsonequip'] && $prev['name'] == $cur['name'])
|
||||||
|
{
|
||||||
|
$prev['chance'] += $cur['chance'];
|
||||||
|
array_splice($pageData['page']['subItems'], $i , 1);
|
||||||
|
$i = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// factionchange-equivalent
|
// factionchange-equivalent
|
||||||
@@ -291,10 +308,103 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
/* Extra Tabs */
|
/* Extra Tabs */
|
||||||
/**************/
|
/**************/
|
||||||
|
|
||||||
// dropped by creature
|
$sourceTabs = array(
|
||||||
|
// 0 => refLoot
|
||||||
|
1 => ['item', '$LANG.tab_containedin', 'contained-in-item', [], []],
|
||||||
|
2 => ['item', '$LANG.tab_disenchantedfrom', 'disenchanted-from', [], []],
|
||||||
|
3 => ['item', '$LANG.tab_prospectedfrom', 'prospected-from', [], []],
|
||||||
|
4 => ['item', '$LANG.tab_milledfrom', 'milled-from', [], []],
|
||||||
|
5 => ['creature', '$LANG.tab_droppedby', 'dropped-by', [], []],
|
||||||
|
6 => ['creature', '$LANG.tab_pickpocketedfrom', 'pickpocketed-from', [], []],
|
||||||
|
7 => ['creature', '$LANG.tab_skinnedfrom', 'skinned-from', [], []],
|
||||||
|
8 => ['creature', '$LANG.tab_minedfromnpc', 'mined-from-npc', [], []],
|
||||||
|
9 => ['creature', '$LANG.tab_salvagedfrom', 'salvaged-from', [], []],
|
||||||
|
10 => ['creature', '$LANG.tab_gatheredfromnpc', 'gathered-from-npc', [], []],
|
||||||
|
11 => ['quest', '$LANG.tab_rewardfrom', 'reward-from-quest', [], []],
|
||||||
|
12 => ['zone', '$LANG.tab_fishedin', 'fished-in', [], []],
|
||||||
|
13 => ['object', '$LANG.tab_containedin', 'contained-in-go', [], []],
|
||||||
|
14 => ['object', '$LANG.tab_minedfrom', 'mined-from-go', [], []],
|
||||||
|
15 => ['object', '$LANG.tab_gatheredfrom', 'gathered-from-go', [], []],
|
||||||
|
16 => ['spell', '$LANG.tab_createdby', 'created-by', [], []]
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$xCols = '';
|
||||||
|
$sources = Util::getLootSource($_id);
|
||||||
|
foreach ($sources as $lootTpl => $lootData)
|
||||||
|
{
|
||||||
|
// cap fetched entries to the sql-limit to guarantee, that the highest chance items get selected first
|
||||||
|
$ids = array_slice(array_keys($lootData), 0, $AoWoWconf['sqlLimit']);
|
||||||
|
|
||||||
|
switch ($lootTpl)
|
||||||
|
{
|
||||||
|
case LOOT_CREATURE:
|
||||||
|
$srcType = new CreatureList(array(['ct.lootId', $ids]));
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
$srcData = $srcType->getListviewData();
|
||||||
|
|
||||||
|
foreach ($srcType->iterate() as $_)
|
||||||
|
$data[5][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('lootId')]);
|
||||||
|
|
||||||
|
$sourceTabs[5][3][] = 'Listview.extraCols.percent';
|
||||||
|
break;
|
||||||
|
case LOOT_PICKPOCKET:
|
||||||
|
$srcType = new CreatureList(array(['ct.pickpocketLootId', $ids]));
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
$srcData = $srcType->getListviewData();
|
||||||
|
|
||||||
|
foreach ($srcType->iterate() as $_)
|
||||||
|
$data[6][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('pickpocketLootId')]);
|
||||||
|
|
||||||
|
$sourceTabs[6][3][] = 'Listview.extraCols.percent';
|
||||||
|
break;
|
||||||
|
case LOOT_SKINNING:
|
||||||
|
$srcType = new CreatureList(array(['ct.skinLootId', $ids]));
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
$srcData = $srcType->getListviewData();
|
||||||
|
|
||||||
|
foreach ($srcType->iterate() as $curTpl)
|
||||||
|
{
|
||||||
|
if ($curTpl['type_flags'] & NPC_TYPEFLAG_HERBLOOT)
|
||||||
|
{
|
||||||
|
$data[10][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('skinLootId')]);
|
||||||
|
$sourceTabs[10][3][] = 'Listview.extraCols.percent';
|
||||||
|
}
|
||||||
|
else if ($curTpl['type_flags'] & NPC_TYPEFLAG_ENGINEERLOOT)
|
||||||
|
{
|
||||||
|
$data[9][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('skinLootId')]);
|
||||||
|
$sourceTabs[9][3][] = 'Listview.extraCols.percent';
|
||||||
|
}
|
||||||
|
else if ($curTpl['type_flags'] & NPC_TYPEFLAG_MININGLOOT)
|
||||||
|
{
|
||||||
|
$data[8][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('skinLootId')]);
|
||||||
|
$sourceTabs[8][3][] = 'Listview.extraCols.percent';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$data[7][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('skinLootId')]);
|
||||||
|
$sourceTabs[7][3][] = 'Listview.extraCols.percent';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case LOOT_FISHING:
|
||||||
|
// subAreas are currently ignored
|
||||||
|
$srcType = new ZoneList(array(['id', $ids]));
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
$srcData = $srcType->getListviewData();
|
||||||
|
|
||||||
|
foreach ($srcType->iterate() as $_)
|
||||||
|
$data[12][] = array_merge($srcData[$srcType->id], $lootData[$srcType->id]);
|
||||||
|
|
||||||
|
$sourceTabs[12][3][] = 'Listview.extraCols.percent';
|
||||||
|
break;
|
||||||
|
case LOOT_GAMEOBJECT:
|
||||||
// GO-loot
|
// GO-loot
|
||||||
// diff between gathered from / mined from / contained in
|
// contained in GO (chest)
|
||||||
|
// mined-from (vine)
|
||||||
|
// gathered-from (herb)
|
||||||
|
// like skinning with lock-properties instead of type_flags
|
||||||
// foreach($rows as $row)
|
// foreach($rows as $row)
|
||||||
// {
|
// {
|
||||||
// // Залежи руды
|
// // Залежи руды
|
||||||
@@ -307,30 +417,91 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
// else
|
// else
|
||||||
// $item['containedinobject'][] = array_merge(objectinfo2($row), $drop);
|
// $item['containedinobject'][] = array_merge(objectinfo2($row), $drop);
|
||||||
// }
|
// }
|
||||||
|
break;
|
||||||
|
case LOOT_PROSPECTING:
|
||||||
|
$sourceTab = 3;
|
||||||
|
case LOOT_MILLING:
|
||||||
|
if (!isset($sourceTab))
|
||||||
|
$sourceTab = 4;
|
||||||
|
case LOOT_ITEM:
|
||||||
|
if (!isset($sourceTab))
|
||||||
|
$sourceTab = 1;
|
||||||
|
|
||||||
// sold by [consult itemExtendedCost]
|
$srcType = new ItemList(array(['i.id', $ids]));
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
$srcData = $srcType->getListviewData();
|
||||||
|
|
||||||
// Objective of (quest)
|
foreach ($srcType->iterate() as $_)
|
||||||
|
$data[$sourceTab][] = array_merge($srcData[$srcType->id], $lootData[$srcType->id]);
|
||||||
|
|
||||||
// provided for (quest)
|
$sourceTabs[$sourceTab][3][] = 'Listview.extraCols.percent';
|
||||||
|
break;
|
||||||
|
case LOOT_DISENCHANT:
|
||||||
|
$srcType = new ItemList(array(['i.disenchantId', $ids]));
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
$srcData = $srcType->getListviewData();
|
||||||
|
|
||||||
// reward of (quest)
|
foreach ($srcType->iterate() as $_)
|
||||||
|
$data[2][] = array_merge($srcData[$srcType->id], $lootData[$srcType->getField('disenchantId')]);
|
||||||
|
|
||||||
// reward of (quest) [from mail-loot]
|
$sourceTabs[2][3][] = 'Listview.extraCols.percent';
|
||||||
|
break;
|
||||||
|
case LOOT_QUEST:
|
||||||
|
// merge regular quest rewards into quest_mail_loot_template results
|
||||||
|
$conditions = array(
|
||||||
|
'OR', ['qt.RewardMailTemplateId', $ids],
|
||||||
|
['RewardChoiceItemId1', $_id], ['RewardChoiceItemId2', $_id], ['RewardChoiceItemId3', $_id], ['RewardChoiceItemId4', $_id], ['RewardChoiceItemId5', $_id],
|
||||||
|
['RewardChoiceItemId6', $_id], ['RewardItemId1', $_id], ['RewardItemId2', $_id], ['RewardItemId3', $_id], ['RewardItemId4', $_id],
|
||||||
|
);
|
||||||
|
$srcType = new QuestList($conditions);
|
||||||
|
$srcType->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_REWARDS);
|
||||||
|
$data[11] = $srcType->getListviewData(); // dont merge chances; most are 100% anyway and regular reward loot has none
|
||||||
|
|
||||||
// contained in (item) [item_loot]
|
break;
|
||||||
|
case LOOT_SPELL:
|
||||||
|
// merge with: created by [spell]
|
||||||
|
|
||||||
// contains [item_loot]
|
break;
|
||||||
$itemLoot = Util::handleLoot(LOOT_ITEM, $item->id, $smarty, User::isInGroup(U_GROUP_STAFF));
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($sourceTabs as $k => $tab)
|
||||||
|
{
|
||||||
|
if (empty($data[$k]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$pageData['relTabs'][] = array(
|
||||||
|
'file' => $tab[0],
|
||||||
|
'data' => $data[$k],
|
||||||
|
'params' => [
|
||||||
|
'tabs' => '$tabsRelated',
|
||||||
|
'name' => $tab[1],
|
||||||
|
'id' => $tab[2],
|
||||||
|
'extraCols' => $tab[3] ? '$['.implode(', ', array_unique($tab[3])).']' : null,
|
||||||
|
'hiddenCols' => $tab[4] ? '$['.implode(', ', array_unique($tab[4])).']' : null
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this item contains.. */
|
||||||
|
|
||||||
|
$sourceFor = array(
|
||||||
|
[LOOT_ITEM, $item->id, '$LANG.tab_contains', 'contains', ['Listview.extraCols.percent'], [] ],
|
||||||
|
[LOOT_PROSPECTING, $item->id, '$LANG.tab_prospecting', 'prospecting', ['Listview.extraCols.percent'], ['side', 'slot', 'reqlevel']],
|
||||||
|
[LOOT_MILLING, $item->id, '$LANG.tab_milling', 'milling', ['Listview.extraCols.percent'], ['side', 'slot', 'reqlevel']],
|
||||||
|
[LOOT_DISENCHANT, $item->getField('disenchantId'), '$LANG.tab_disenchanting', 'disenchanting', ['Listview.extraCols.percent'], ['side', 'slot', 'reqlevel']]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($sourceFor as $sf)
|
||||||
|
{
|
||||||
|
$itemLoot = Util::handleLoot($sf[0], $sf[1], $smarty, User::isInGroup(U_GROUP_STAFF));
|
||||||
if ($itemLoot)
|
if ($itemLoot)
|
||||||
{
|
{
|
||||||
$extraCols = ['Listview.extraCols.percent'];
|
|
||||||
|
|
||||||
if (User::isInGroup(U_GROUP_STAFF))
|
if (User::isInGroup(U_GROUP_STAFF))
|
||||||
{
|
{
|
||||||
$extraCols[] = "Listview.funcBox.createSimpleCol('group', 'group', '10%', 'group')";
|
$sf[4][] = "Listview.funcBox.createSimpleCol('group', 'Group', '10%', 'group')";
|
||||||
$extraCols[] = "Listview.funcBox.createSimpleCol('mode', LANG.compose_mode, '10%', 'mode')";
|
$sf[4][] = "Listview.funcBox.createSimpleCol('mode', 'Mode', '10%', 'mode')";
|
||||||
$extraCols[] = "Listview.funcBox.createSimpleCol('reference', LANG.finpcs.seploot + ' ' + LANG.button_link, '10%', 'reference')";
|
$sf[4][] = "Listview.funcBox.createSimpleCol('reference', 'Reference', '10%', 'reference')";
|
||||||
}
|
}
|
||||||
|
|
||||||
$pageData['relTabs'][] = array(
|
$pageData['relTabs'][] = array(
|
||||||
@@ -338,22 +509,20 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
'data' => $itemLoot,
|
'data' => $itemLoot,
|
||||||
'params' => [
|
'params' => [
|
||||||
'tabs' => '$tabsRelated',
|
'tabs' => '$tabsRelated',
|
||||||
'name' => '$LANG.tab_contains',
|
'name' => $sf[2],
|
||||||
'id' => 'contains',
|
'id' => $sf[3],
|
||||||
'hiddenCols' => "$['side', 'slot', 'source', 'reqlevel']",
|
'extraCols' => $sf[4] ? "$[".implode(', ', $sf[4])."]" : null,
|
||||||
'extraCols' => "$[".implode(', ', $extraCols)."]",
|
'hiddenCols' => $sf[5] ? "$".json_encode($sf[5]) : null
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// pickpocketed from
|
// sold by [consult itemExtendedCost]
|
||||||
|
|
||||||
// skinning_loot skinned from & salvaged from
|
// Objective of (quest)
|
||||||
|
|
||||||
// prospecting & prospected from
|
// provided for (quest)
|
||||||
// milling & milled from
|
|
||||||
|
|
||||||
// disentchanting from & to
|
|
||||||
|
|
||||||
// can be placed in
|
// can be placed in
|
||||||
// if($item['BagFamily'] == 256)
|
// if($item['BagFamily'] == 256)
|
||||||
@@ -364,14 +533,8 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||||||
|
|
||||||
// reagent for
|
// reagent for
|
||||||
|
|
||||||
// created by [spell]
|
|
||||||
|
|
||||||
// fished in
|
|
||||||
|
|
||||||
// currency for
|
// currency for
|
||||||
|
|
||||||
// [spell_loot_template] ehh...
|
|
||||||
|
|
||||||
// criteria of
|
// criteria of
|
||||||
// array(ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM, ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM, ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM, ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM),
|
// array(ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM, ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM, ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM, ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM),
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,6 @@ if (!defined('AOWOW_REVISION'))
|
|||||||
die('illegal access');
|
die('illegal access');
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
item upgrade search: !
|
|
||||||
<a href="javascript:;" class="button-red" onclick="this.blur(); pr_showClassPresetMenu(this, 45498, 2, 17, event);">
|
|
||||||
<em><b><i>Find upgrades...</i></b><span>Find upgrades...</span></em>
|
|
||||||
</a>
|
|
||||||
*/
|
|
||||||
|
|
||||||
$cats = Util::extractURLParams($pageParam);
|
$cats = Util::extractURLParams($pageParam);
|
||||||
$path = [0, 0];
|
$path = [0, 0];
|
||||||
$title = [Lang::$game['items']];
|
$title = [Lang::$game['items']];
|
||||||
@@ -86,11 +79,7 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
if ($cats[0] !== null)
|
if ($cats[0] !== null)
|
||||||
$path = array_merge($path, $cats);
|
$path = array_merge($path, $cats);
|
||||||
|
|
||||||
/*
|
// display available submenu and slot, if applicable
|
||||||
display available submenu and slot, if applicable
|
|
||||||
todo: 'type' gets ignored if cats[1] is set
|
|
||||||
[$strArr, $keyMask]
|
|
||||||
*/
|
|
||||||
$type = $slot = [[], null];
|
$type = $slot = [[], null];
|
||||||
if ($cats[0] === null)
|
if ($cats[0] === null)
|
||||||
{
|
{
|
||||||
@@ -99,7 +88,9 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (isset($cats[1]))
|
if (isset($cats[2]))
|
||||||
|
$catList = Lang::$item['cat'][$cats[0]][1][$cats[1]][1][$cats[2]];
|
||||||
|
else if (isset($cats[1]))
|
||||||
$catList = Lang::$item['cat'][$cats[0]][1][$cats[1]];
|
$catList = Lang::$item['cat'][$cats[0]][1][$cats[1]];
|
||||||
else
|
else
|
||||||
$catList = Lang::$item['cat'][$cats[0]];
|
$catList = Lang::$item['cat'][$cats[0]];
|
||||||
@@ -120,7 +111,7 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!isset($cats[1]))
|
if (!isset($cats[1]))
|
||||||
$type = [Lang::$item['cat'][2][1], null];
|
$type = [Lang::$spell['weaponSubClass'], null];
|
||||||
|
|
||||||
$slot = [Lang::$item['inventoryType'], 0x262A000];
|
$slot = [Lang::$item['inventoryType'], 0x262A000];
|
||||||
asort($slot[0]);
|
asort($slot[0]);
|
||||||
@@ -139,10 +130,12 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
case 16:
|
case 16:
|
||||||
if (!isset($cats[2]))
|
if (!isset($cats[2]))
|
||||||
$visibleCols[] = 'glyph';
|
$visibleCols[] = 'glyph';
|
||||||
|
case 1:
|
||||||
|
if ($cats[0] == 1)
|
||||||
|
$visibleCols[] = 'slots';
|
||||||
case 3:
|
case 3:
|
||||||
if (!isset($cats[1]))
|
if (!isset($cats[1]))
|
||||||
asort($catList[1]);
|
asort($catList[1]);
|
||||||
case 1:
|
|
||||||
case 7:
|
case 7:
|
||||||
case 9:
|
case 9:
|
||||||
$hiddenCols[] = 'slot';
|
$hiddenCols[] = 'slot';
|
||||||
@@ -169,6 +162,16 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
/*
|
/*
|
||||||
set conditions
|
set conditions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* todo (low): this is a long term issue.
|
||||||
|
* Filter is used as a subSystem to each TypeList
|
||||||
|
* but here we would need to preemptive check for $filter['gb']
|
||||||
|
* .. bummer .. this is to be removed when the issue is _really_ solved
|
||||||
|
*/
|
||||||
|
if (preg_match('/gb\=(1|2|3)/i', $_SERVER['QUERY_STRING'], $match))
|
||||||
|
$filter['gb'] = $match[1];
|
||||||
|
|
||||||
$conditions[] = ['i.class', $cats[0]];
|
$conditions[] = ['i.class', $cats[0]];
|
||||||
if (isset($cats[1]))
|
if (isset($cats[1]))
|
||||||
$conditions[] = ['i.subClass', $cats[1]];
|
$conditions[] = ['i.subClass', $cats[1]];
|
||||||
@@ -207,11 +210,13 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
|
|
||||||
if (!empty($filter['upg']))
|
if (!empty($filter['upg']))
|
||||||
{
|
{
|
||||||
// uogarde-item got deleted by filter
|
// upgrade-item got deleted by filter
|
||||||
if (empty($pageData['data'][$filter['upg']]))
|
if (empty($pageData['data'][$filter['upg']]))
|
||||||
{
|
{
|
||||||
$w = $items->filterGetForm('setWeights', true);
|
$w = $items->filterGetForm('setWeights', true);
|
||||||
$upgItem = new ItemList(array(['id', $filter['upg']]), false, ['wt' => $w[0], 'wtv' => $w[1]]);
|
$upgItem = new ItemList(array(['id', $filter['upg']]), false, ['wt' => $w[0], 'wtv' => $w[1]]);
|
||||||
|
|
||||||
|
// still it may not be found if you apply really weired filters (e.g. search for a melee item with caster-weights) .. not my fault :[
|
||||||
if (!$upgItem->error)
|
if (!$upgItem->error)
|
||||||
{
|
{
|
||||||
$upgItem->addGlobalsToJScript($smarty);
|
$upgItem->addGlobalsToJScript($smarty);
|
||||||
@@ -224,7 +229,45 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
|
|
||||||
$pageData['params']['_upgradeIds'] = "$[".$filter['upg']."]";
|
$pageData['params']['_upgradeIds'] = "$[".$filter['upg']."]";
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
by level: max 10 itemlevel steps (Level X) +1x Other|Autre|Anderes|Otros|Другое levels
|
||||||
|
by slot: all slots available
|
||||||
|
by source: .. well .. no
|
||||||
|
|
||||||
|
template: 'item',
|
||||||
|
id: 'one-hand',
|
||||||
|
name: 'One-Hand',
|
||||||
|
tabs: tabsGroups,
|
||||||
|
parent: 'lkljbjkb574',
|
||||||
|
hideCount: 1,
|
||||||
|
note: $WH.sprintf(LANG.lvnote_viewmoreslot, '=2', 'sl=13;ub=10;cr=161;crs=1;crv=0;gm=3;rf=1;wt=23:123:24:103:96:170;wtv=100:85:75:60:50:40;upg=104585'),
|
||||||
|
customFilter: fi_filterUpgradeListview,
|
||||||
|
_upgradeIds: [104585],
|
||||||
|
extraCols: fi_getExtraCols(fi_extraCols, 3, 1, 0),
|
||||||
|
sort: ['-score', 'name'],
|
||||||
|
computeDataFunc: fi_scoreSockets,
|
||||||
|
onBeforeCreate: fi_initWeightedListview,
|
||||||
|
onAfterCreate: fi_addUpgradeIndicator,
|
||||||
|
hiddenCols: ['type', 'source'],
|
||||||
|
data: []
|
||||||
|
|
||||||
|
template: 'item',
|
||||||
|
id: 'two-hand',
|
||||||
|
name: 'Two-Hand',
|
||||||
|
tabs: tabsGroups,
|
||||||
|
parent: 'lkljbjkb574',
|
||||||
|
hideCount: 1,
|
||||||
|
note: $WH.sprintf(LANG.lvnote_viewmoreslot, '=2', 'sl=17;ub=10;cr=161;crs=1;crv=0;gm=3;rf=1;wt=23:123:24:103:96:170;wtv=100:85:75:60:50:40;upg=104585'),
|
||||||
|
customFilter: fi_filterUpgradeListview,
|
||||||
|
_upgradeIds: [104585],
|
||||||
|
extraCols: fi_getExtraCols(fi_extraCols, 3, 1, 0),
|
||||||
|
sort: ['-score', 'name'],
|
||||||
|
computeDataFunc: fi_scoreSockets,
|
||||||
|
onBeforeCreate: fi_initWeightedListview,
|
||||||
|
onAfterCreate: fi_addUpgradeIndicator,
|
||||||
|
hiddenCols: ['type', 'source'],
|
||||||
|
data: []
|
||||||
|
*/
|
||||||
if (!empty($filter['fi']['extraCols']))
|
if (!empty($filter['fi']['extraCols']))
|
||||||
{
|
{
|
||||||
$gem = empty($filter['gm']) ? 0 : $filter['gm'];
|
$gem = empty($filter['gm']) ? 0 : $filter['gm'];
|
||||||
@@ -278,7 +321,7 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create note if search limit was exceeded; overwriting 'note' is intentional
|
// create note if search limit was exceeded; overwriting 'note' is intentional
|
||||||
if ($items->getMatches() > $AoWoWconf['sqlLimit'])
|
if ($items->getMatches() > $AoWoWconf['sqlLimit'] && empty($filter['upg']))
|
||||||
{
|
{
|
||||||
$pageData['params']['note'] = sprintf(Util::$tryFilteringString, 'LANG.lvnote_itemsfound', $items->getMatches(), $AoWoWconf['sqlLimit']);
|
$pageData['params']['note'] = sprintf(Util::$tryFilteringString, 'LANG.lvnote_itemsfound', $items->getMatches(), $AoWoWconf['sqlLimit']);
|
||||||
$pageData['params']['_truncated'] = 1;
|
$pageData['params']['_truncated'] = 1;
|
||||||
|
|||||||
@@ -17,24 +17,23 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
if ($iSet->error)
|
if ($iSet->error)
|
||||||
$smarty->notFound(Lang::$game['itemset']);
|
$smarty->notFound(Lang::$game['itemset']);
|
||||||
|
|
||||||
$ta = $iSet->getField('contentGroup');
|
$_ta = $iSet->getField('contentGroup');
|
||||||
$ty = $iSet->getField('type');
|
$_ty = $iSet->getField('type');
|
||||||
$ev = $iSet->getField('holidayId');
|
$_ev = $iSet->getField('holidayId');
|
||||||
$sk = $iSet->getField('skillId');
|
$_sk = $iSet->getField('skillId');
|
||||||
$mask = $iSet->getField('classMask');
|
$_cl = $iSet->getField('classMask');
|
||||||
$rLvl = $iSet->getField('reqLevel');
|
$_lvl = $iSet->getField('reqLevel');
|
||||||
$name = $iSet->getField('name', true);
|
$_na = $iSet->getField('name', true);
|
||||||
$cnt = count($iSet->getField('pieces'));
|
$_cnt = count($iSet->getField('pieces'));
|
||||||
$unav = $iSet->getField('cuFlags') & CUSTOM_UNAVAILABLE;
|
|
||||||
|
|
||||||
$infobox = [];
|
$infobox = [];
|
||||||
// unavailable (todo (low): set data)
|
// unavailable (todo (low): set data)
|
||||||
if ($unav)
|
if ($iSet->getField('cuFlags') & CUSTOM_UNAVAILABLE)
|
||||||
$infobox[] = Lang::$main['unavailable'];
|
$infobox[] = Lang::$main['unavailable'];
|
||||||
|
|
||||||
// holiday
|
// holiday
|
||||||
if ($ev)
|
if ($_ev)
|
||||||
$infobox[] = Lang::$game['eventShort'].Lang::$colon.'[url=?event='.$ev.']'.WorldEventList::getName($ev).'[/url]';
|
$infobox[] = Lang::$game['eventShort'].Lang::$colon.'[url=?event='.$_ev.']'.WorldEventList::getName($_ev).'[/url]';
|
||||||
|
|
||||||
// itemLevel
|
// itemLevel
|
||||||
if ($min = $iSet->getField('minLevel'))
|
if ($min = $iSet->getField('minLevel'))
|
||||||
@@ -49,11 +48,11 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// class
|
// class
|
||||||
if ($mask)
|
if ($_cl)
|
||||||
{
|
{
|
||||||
$foo = [];
|
$foo = [];
|
||||||
for ($i = 0; $i < 11; $i++)
|
for ($i = 0; $i < 11; $i++)
|
||||||
if ($mask & (1 << $i))
|
if ($_cl & (1 << $i))
|
||||||
$foo[] = (!fMod(count($foo) + 1, 3) ? '\n' : null) . '[class='.($i + 1).']';
|
$foo[] = (!fMod(count($foo) + 1, 3) ? '\n' : null) . '[class='.($i + 1).']';
|
||||||
|
|
||||||
$t = count($foo) == 1 ? Lang::$game['class'] : Lang::$game['classes'];
|
$t = count($foo) == 1 ? Lang::$game['class'] : Lang::$game['classes'];
|
||||||
@@ -61,16 +60,16 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// required level
|
// required level
|
||||||
if ($rLvl)
|
if ($_lvl)
|
||||||
$infobox[] = sprintf(Lang::$game['reqLevel'], $rLvl);
|
$infobox[] = sprintf(Lang::$game['reqLevel'], $_lvl);
|
||||||
|
|
||||||
// type
|
// type
|
||||||
if ($ty)
|
if ($_ty)
|
||||||
$infobox[] = Lang::$game['type'].lang::$colon.Lang::$itemset['types'][$ty];
|
$infobox[] = Lang::$game['type'].lang::$colon.Lang::$itemset['types'][$_ty];
|
||||||
|
|
||||||
// tag
|
// tag
|
||||||
if ($ta)
|
if ($_ta)
|
||||||
$infobox[] = Lang::$itemset['_tag'].Lang::$colon.'[url=?itemsets&filter=ta='.$ta.']'.Lang::$itemset['notes'][$ta].'[/url]';
|
$infobox[] = Lang::$itemset['_tag'].Lang::$colon.'[url=?itemsets&filter=ta='.$_ta.']'.Lang::$itemset['notes'][$_ta].'[/url]';
|
||||||
|
|
||||||
// pieces + Summary
|
// pieces + Summary
|
||||||
$pieces = [];
|
$pieces = [];
|
||||||
@@ -145,13 +144,13 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// path
|
// path
|
||||||
if ($mask)
|
if ($_cl)
|
||||||
{
|
{
|
||||||
for ($i = 0; $i < 11; $i++)
|
for ($i = 0; $i < 11; $i++)
|
||||||
{
|
{
|
||||||
if ($mask & (1 << $i))
|
if ($_cl & (1 << $i))
|
||||||
{
|
{
|
||||||
if ($mask == (1 << $i)) // only bit set, add path
|
if ($_cl == (1 << $i)) // only bit set, add path
|
||||||
$path[] = $i + 1;
|
$path[] = $i + 1;
|
||||||
|
|
||||||
break; // break anyway (cant set multiple classes)
|
break; // break anyway (cant set multiple classes)
|
||||||
@@ -160,15 +159,15 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
}
|
}
|
||||||
|
|
||||||
$skill = '';
|
$skill = '';
|
||||||
if ($sk)
|
if ($_sk)
|
||||||
{
|
{
|
||||||
// todo (med): kill this Lang::monstrosity with Skills
|
// todo (med): kill this Lang::monstrosity with Skills
|
||||||
$spellLink = sprintf('<a href="?spells=11.%s">%s</a> (%s)', $sk, Lang::$spell['cat'][11][$sk][0], $iSet->getField('skillLevel'));
|
$spellLink = sprintf('<a href="?spells=11.%s">%s</a> (%s)', $_sk, Lang::$spell['cat'][11][$_sk][0], $iSet->getField('skillLevel'));
|
||||||
$skill = ' – <small><b>'.sprintf(Lang::$game['requires'], $spellLink).'</b></small>';
|
$skill = ' – <small><b>'.sprintf(Lang::$game['requires'], $spellLink).'</b></small>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$pageData = array(
|
$pageData = array(
|
||||||
'title' => $name, // for header
|
'title' => $_na, // for header
|
||||||
'path' => $path,
|
'path' => $path,
|
||||||
'infobox' => $infobox ? '[ul][li]'.implode('[/li][li]', $infobox).'[/li][/ul]' : null,
|
'infobox' => $infobox ? '[ul][li]'.implode('[/li][li]', $infobox).'[/li][/ul]' : null,
|
||||||
'relTabs' => [],
|
'relTabs' => [],
|
||||||
@@ -176,47 +175,47 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
'spells' => $spells,
|
'spells' => $spells,
|
||||||
'view3D' => json_encode($eqList, JSON_NUMERIC_CHECK),
|
'view3D' => json_encode($eqList, JSON_NUMERIC_CHECK),
|
||||||
'compare' => array(
|
'compare' => array(
|
||||||
'qty' => $cnt,
|
'qty' => $_cnt,
|
||||||
'items' => $compare,
|
'items' => $compare,
|
||||||
'level' => $rLvl
|
'level' => $_lvl
|
||||||
),
|
),
|
||||||
'page' => array(
|
'page' => array(
|
||||||
'name' => $name, // for page content
|
'name' => $_na, // for page content
|
||||||
'id' => $_id,
|
'id' => $_id,
|
||||||
'bonusExt' => $skill,
|
'bonusExt' => $skill,
|
||||||
'description' => $ta ? sprintf(Lang::$itemset['_desc'], $name, Lang::$itemset['notes'][$ta], $cnt) : sprintf(Lang::$itemset['_descTagless'], $name, $cnt),
|
'description' => $_ta ? sprintf(Lang::$itemset['_desc'], $_na, Lang::$itemset['notes'][$_ta], $_cnt) : sprintf(Lang::$itemset['_descTagless'], $_na, $_cnt),
|
||||||
'unavailable' => $unav
|
'unavailable' => (bool)($iSet->getField('cuFlags') & CUSTOM_UNAVAILABLE)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$iSet->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
$iSet->addGlobalsToJscript($smarty);
|
||||||
|
|
||||||
// related sets (priority: 1: similar tag + class; 2: has event; 3: no tag + similar type, 4: similar type + profession)
|
// related sets (priority: 1: similar tag + class; 2: has event; 3: no tag + similar type, 4: similar type + profession)
|
||||||
$rel = [];
|
$rel = [];
|
||||||
|
|
||||||
if ($ta && count($path) == 3)
|
if ($_ta && count($path) == 3)
|
||||||
{
|
{
|
||||||
$rel[] = ['id', $_id, '!'];
|
$rel[] = ['id', $_id, '!'];
|
||||||
$rel[] = ['classMask', 1 << (end($path) - 1), '&'];
|
$rel[] = ['classMask', 1 << (end($path) - 1), '&'];
|
||||||
$rel[] = ['contentGroup', (int)$ta];
|
$rel[] = ['contentGroup', (int)$_ta];
|
||||||
}
|
}
|
||||||
else if ($ev)
|
else if ($_ev)
|
||||||
{
|
{
|
||||||
$rel[] = ['id', $_id, '!'];
|
$rel[] = ['id', $_id, '!'];
|
||||||
$rel[] = ['holidayId', 0, '!'];
|
$rel[] = ['holidayId', 0, '!'];
|
||||||
}
|
}
|
||||||
else if ($sk)
|
else if ($_sk)
|
||||||
{
|
{
|
||||||
$rel[] = ['id', $_id, '!'];
|
$rel[] = ['id', $_id, '!'];
|
||||||
$rel[] = ['contentGroup', 0];
|
$rel[] = ['contentGroup', 0];
|
||||||
$rel[] = ['skillId', 0, '!'];
|
$rel[] = ['skillId', 0, '!'];
|
||||||
$rel[] = ['type', $ty];
|
$rel[] = ['type', $_ty];
|
||||||
}
|
}
|
||||||
else if (!$ta && $ty)
|
else if (!$_ta && $_ty)
|
||||||
{
|
{
|
||||||
$rel[] = ['id', $_id, '!'];
|
$rel[] = ['id', $_id, '!'];
|
||||||
$rel[] = ['contentGroup', 0];
|
$rel[] = ['contentGroup', 0];
|
||||||
$rel[] = ['type', $ty];
|
$rel[] = ['type', $_ty];
|
||||||
$rel[] = ['skillId', 0];
|
$rel[] = ['skillId', 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
if (!$recipes->error)
|
if (!$recipes->error)
|
||||||
{
|
{
|
||||||
// 1 recipes [spells] (crafted)
|
// 1 recipes [spells] (crafted)
|
||||||
$recipes->addGlobalsToJscript($smarty);
|
$recipes->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
|
||||||
$pageData['relTabs'][] = array(
|
$pageData['relTabs'][] = array(
|
||||||
'file' => 'spell',
|
'file' => 'spell',
|
||||||
@@ -85,7 +85,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
|||||||
// 3 crafted items [items]
|
// 3 crafted items [items]
|
||||||
$created = [];
|
$created = [];
|
||||||
foreach ($recipes->iterate() as $__)
|
foreach ($recipes->iterate() as $__)
|
||||||
if ($idx = $this->canCreateItem())
|
if ($idx = $recipes->canCreateItem())
|
||||||
foreach ($idx as $i)
|
foreach ($idx as $i)
|
||||||
$created[] = $recipes->getField('effect'.$i.'CreateItemId');
|
$created[] = $recipes->getField('effect'.$i.'CreateItemId');
|
||||||
|
|
||||||
|
|||||||
745
pages/spell.php
745
pages/spell.php
File diff suppressed because it is too large
Load Diff
@@ -103,6 +103,14 @@ if (!$smarty->loadCache($cacheKey, $pageData, $filter))
|
|||||||
$visibleCols = [];
|
$visibleCols = [];
|
||||||
$hiddenCols = [];
|
$hiddenCols = [];
|
||||||
|
|
||||||
|
$pageData = array(
|
||||||
|
'page' => [],
|
||||||
|
'data' => [],
|
||||||
|
'title' => '',
|
||||||
|
'path' => '',
|
||||||
|
'params' => []
|
||||||
|
);
|
||||||
|
|
||||||
switch($cats[0])
|
switch($cats[0])
|
||||||
{
|
{
|
||||||
case -2: // Character Talents
|
case -2: // Character Talents
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ if ($searchMask & 0x80)
|
|||||||
|
|
||||||
if ($data = $abilities->getListviewData())
|
if ($data = $abilities->getListviewData())
|
||||||
{
|
{
|
||||||
$abilities->addGlobalsToJscript($smarty);
|
$abilities->addGlobalsToJscript($smarty, GLOBALINFO_SELF | GLOBALINFO_RELATED);
|
||||||
|
|
||||||
$vis = ['level', 'singleclass', 'schools'];
|
$vis = ['level', 'singleclass', 'schools'];
|
||||||
if ($abilities->hasSetFields(['reagent1']))
|
if ($abilities->hasSetFields(['reagent1']))
|
||||||
@@ -1096,7 +1096,7 @@ else /* if ($searchMask & SEARCH_TYPE_REGULAR) */
|
|||||||
{
|
{
|
||||||
$_ = array_pop($found);
|
$_ = array_pop($found);
|
||||||
$type = Util::$typeStrings[$_['type']];
|
$type = Util::$typeStrings[$_['type']];
|
||||||
$typeId = key(array_pop($_));
|
$typeId = key($_['data']);
|
||||||
|
|
||||||
header("Location: ?".$type.'='.$typeId);
|
header("Location: ?".$type.'='.$typeId);
|
||||||
die();
|
die();
|
||||||
|
|||||||
@@ -33,6 +33,9 @@
|
|||||||
{if isset($curr.percent)}
|
{if isset($curr.percent)}
|
||||||
percent:{$curr.percent},
|
percent:{$curr.percent},
|
||||||
{/if}
|
{/if}
|
||||||
|
{if isset($curr.count)}
|
||||||
|
count:{$curr.count},
|
||||||
|
{/if}
|
||||||
{if isset($curr.cost)}
|
{if isset($curr.cost)}
|
||||||
stock:{$curr.stock},
|
stock:{$curr.stock},
|
||||||
{if isset($curr.stack)}
|
{if isset($curr.stack)}
|
||||||
|
|||||||
@@ -15,14 +15,11 @@
|
|||||||
{foreach name=i from=$data item=curr}
|
{foreach name=i from=$data item=curr}
|
||||||
{ldelim}
|
{ldelim}
|
||||||
{foreach from=$curr key='name' item=val}
|
{foreach from=$curr key='name' item=val}
|
||||||
{if $name != 'id' && $name != 'name' && $name != 'heroic'}
|
{if $name != 'id' && $name != 'name'}
|
||||||
{$name}:{$val|@json_encode:$smarty.const.JSON_NUMERIC_CHECK},
|
{$name}:{$val|@json_encode:$smarty.const.JSON_NUMERIC_CHECK},
|
||||||
{/if}
|
{/if}
|
||||||
{/foreach}
|
{/foreach}
|
||||||
name:'{$curr.name|escape:"quotes"}',
|
name:'{$curr.name|escape:"quotes"}',
|
||||||
{if isset($curr.heroic)}
|
|
||||||
heroic:1,
|
|
||||||
{/if}
|
|
||||||
id:{$curr.id}
|
id:{$curr.id}
|
||||||
{rdelim}
|
{rdelim}
|
||||||
{if $smarty.foreach.i.last}{else},{/if}
|
{if $smarty.foreach.i.last}{else},{/if}
|
||||||
|
|||||||
@@ -14,75 +14,12 @@
|
|||||||
data:[
|
data:[
|
||||||
{foreach name=i from=$data item=curr}
|
{foreach name=i from=$data item=curr}
|
||||||
{ldelim}
|
{ldelim}
|
||||||
name:'{$curr.quality}{$curr.name|escape:"javascript"}',
|
{foreach from=$curr key='name' item=val}
|
||||||
{if isset($curr.level)}level:{$curr.level},{/if}
|
{if $name != 'id' && $name != 'name' && $name != 'quality'}
|
||||||
school:{$curr.school},
|
{$name}:{$val|@json_encode:$smarty.const.JSON_NUMERIC_CHECK},
|
||||||
cat:{$curr.cat},
|
|
||||||
{if isset($curr.rank)}
|
|
||||||
rank:'{$curr.rank|escape:"javascript"}',
|
|
||||||
{/if}
|
{/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:[
|
|
||||||
{foreach name=j from=$curr.reagents item=r}
|
|
||||||
[{$r[0]},{$r[1]}]
|
|
||||||
{if $smarty.foreach.j.last}{else},{/if}
|
|
||||||
{/foreach}
|
{/foreach}
|
||||||
],
|
name:'{$curr.quality}{$curr.name|escape:"javascript"}',
|
||||||
{/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}
|
|
||||||
{if isset($curr.stackRule)}
|
|
||||||
stackRule:{$curr.stackRule},
|
|
||||||
{/if}
|
|
||||||
{if isset($curr.linked)}
|
|
||||||
linked:{$curr.linked},
|
|
||||||
{/if}
|
|
||||||
id:{$curr.id}
|
id:{$curr.id}
|
||||||
{rdelim}
|
{rdelim}
|
||||||
{if $smarty.foreach.i.last}{else},{/if}
|
{if $smarty.foreach.i.last}{else},{/if}
|
||||||
|
|||||||
@@ -26,7 +26,8 @@
|
|||||||
{if isset($curr.reqlevel)},reqlevel:{$curr.reqlevel}{/if}
|
{if isset($curr.reqlevel)},reqlevel:{$curr.reqlevel}{/if}
|
||||||
{if isset($curr.lfgReqLevel)},lfgReqLevel:{$curr.lfgReqLevel}{/if}
|
{if isset($curr.lfgReqLevel)},lfgReqLevel:{$curr.lfgReqLevel}{/if}
|
||||||
{if isset($curr.heroicLevel)},heroicLevel:{$curr.heroicLevel}{/if}
|
{if isset($curr.heroicLevel)},heroicLevel:{$curr.heroicLevel}{/if}
|
||||||
{* {if isset($curr.percent)},percent:{$curr.percent}{/if} what was that originaly for..? *}
|
{if isset($curr.percent)},percent:{$curr.percent}{/if}
|
||||||
|
{if isset($curr.count)},count:{$curr.count}{/if}
|
||||||
{rdelim}
|
{rdelim}
|
||||||
{if $smarty.foreach.i.last}{else},{/if}
|
{if $smarty.foreach.i.last}{else},{/if}
|
||||||
{/foreach}
|
{/foreach}
|
||||||
|
|||||||
@@ -70,6 +70,7 @@
|
|||||||
{if !empty($lvData.pageText)}
|
{if !empty($lvData.pageText)}
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
<h3>{$lang.content}</h3>
|
<h3>{$lang.content}</h3>
|
||||||
|
|
||||||
<div id="book-generic"></div>
|
<div id="book-generic"></div>
|
||||||
<script>//<![CDATA[
|
<script>//<![CDATA[
|
||||||
{strip}new Book({ldelim} parent: 'book-generic', pages: [
|
{strip}new Book({ldelim} parent: 'book-generic', pages: [
|
||||||
|
|||||||
@@ -171,10 +171,24 @@
|
|||||||
{/foreach}
|
{/foreach}
|
||||||
//]]></script>
|
//]]></script>
|
||||||
|
|
||||||
|
{if isset($lvData.data[0].params)}
|
||||||
|
<div id="tabs-generic"></div>
|
||||||
|
{/if}
|
||||||
<div id="lv-generic" class="listview"></div>
|
<div id="lv-generic" class="listview"></div>
|
||||||
<script type="text/javascript">//<![CDATA[
|
<script type="text/javascript">//<![CDATA[
|
||||||
{if !empty($lvData.page.gemScores)}var fi_gemScores = {$lvData.page.gemScores};{/if}
|
{if !empty($lvData.page.gemScores)}var fi_gemScores = {$lvData.page.gemScores};{/if}
|
||||||
{include file='bricks/listviews/item.tpl' data=$lvData.data params=$lvData.params}
|
|
||||||
|
{if isset($lvData.data[0].params)}
|
||||||
|
var tabsRelated = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});
|
||||||
|
{foreach from=$tabs item="tab"}
|
||||||
|
{if !empty($tab.data)}
|
||||||
|
{include file="bricks/listviews/item.tpl" data=$tab.data params=$tab.params}
|
||||||
|
{/if}
|
||||||
|
{/foreach}
|
||||||
|
tabsRelated.flush();
|
||||||
|
{else}
|
||||||
|
{include file='bricks/listviews/item.tpl' data=$lvData.data params=$lvData.params}
|
||||||
|
{/if}
|
||||||
//]]></script>
|
//]]></script>
|
||||||
|
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
|||||||
@@ -1018,11 +1018,9 @@ $WH.g_convertRatingToPercent = function(level, rating, value, classs) {
|
|||||||
if (level < 0) {
|
if (level < 0) {
|
||||||
level = 1;
|
level = 1;
|
||||||
}
|
}
|
||||||
else {
|
else if (level > 80) {
|
||||||
if (level > 80) {
|
|
||||||
level = 80;
|
level = 80;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Patch 2.4.3: Defense Skill, Dodge Rating, Parry Rating, Block Rating
|
// Patch 2.4.3: Defense Skill, Dodge Rating, Parry Rating, Block Rating
|
||||||
if ((rating == 14 || rating == 12 || rating == 15) && level < 34) {
|
if ((rating == 14 || rating == 12 || rating == 15) && level < 34) {
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ var fi_filters = {
|
|||||||
{ id: 142, name: 'icon', type: 'str' },
|
{ id: 142, name: 'icon', type: 'str' },
|
||||||
{ id: 10, name: 'locked', type: 'yn' },
|
{ id: 10, name: 'locked', type: 'yn' },
|
||||||
{ id: 159, name: 'millable', type: 'yn' },
|
{ id: 159, name: 'millable', type: 'yn' },
|
||||||
{ id: 127, name: 'notavailable', type: 'yn' },
|
// { id: 127, name: 'notavailable', type: 'yn' }, redundant with 161
|
||||||
{ id: 85, name: 'objectivequest', type: 'side' },
|
{ id: 85, name: 'objectivequest', type: 'side' },
|
||||||
{ id: 11, name: 'openable', type: 'yn' },
|
{ id: 11, name: 'openable', type: 'yn' },
|
||||||
{ id: 12, name: 'partofset', type: 'yn' },
|
{ id: 12, name: 'partofset', type: 'yn' },
|
||||||
|
|||||||
@@ -991,9 +991,9 @@ var g_item_slots = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var g_item_classes = {
|
var g_item_classes = {
|
||||||
0: 'Consommable',
|
0: 'Verbrauchbar',
|
||||||
1: 'Behälter',
|
1: 'Behälter',
|
||||||
2: 'Arme',
|
2: 'Waffe',
|
||||||
3: 'Edelstein',
|
3: 'Edelstein',
|
||||||
4: 'Rüstung',
|
4: 'Rüstung',
|
||||||
5: 'Reagenz',
|
5: 'Reagenz',
|
||||||
|
|||||||
@@ -117,6 +117,12 @@
|
|||||||
<th><dfn title="{$lang._globCD}">{$lang._gcd}</dfn></th>
|
<th><dfn title="{$lang._globCD}">{$lang._gcd}</dfn></th>
|
||||||
<td>{$lvData.page.gcd}</td>
|
<td>{$lvData.page.gcd}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{if !empty($lvData.page.scaling)}
|
||||||
|
<tr>
|
||||||
|
<th>{$lang._scaling}</th>
|
||||||
|
<td colspan="3">{$lvData.page.scaling}</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
{if !empty($lvData.page.stances)}
|
{if !empty($lvData.page.stances)}
|
||||||
<tr>
|
<tr>
|
||||||
<th>{$lang._forms}</th>
|
<th>{$lang._forms}</th>
|
||||||
@@ -140,6 +146,7 @@
|
|||||||
{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].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}{/if}
|
{if isset($lvData.page.effect[i].interval)}<br>{$lang._interval}{$lang.colon}{$lvData.page.effect[i].interval}{/if}
|
||||||
{if isset($lvData.page.effect[i].mechanic)}<br>{$lang.mechanic}{$lang.colon}{$lvData.page.effect[i].mechanic}{/if}
|
{if isset($lvData.page.effect[i].mechanic)}<br>{$lang.mechanic}{$lang.colon}{$lvData.page.effect[i].mechanic}{/if}
|
||||||
|
{if isset($lvData.page.effect[i].procData)}<br>{if $lvData.page.effect[i].procData[0] < 0}{$lang.ppm|sprintf:$lvData.page.effect[i].procData[0]*-1}{else}{$lang.procChance}{$lang.colon}{$lvData.page.effect[i].procData[0]}%{/if}{if $lvData.page.effect[i].procData[1]} ({$lang.cooldown|sprintf:$lvData.page.effect[i].procData[1]}){/if}{/if}
|
||||||
</small>
|
</small>
|
||||||
{if isset($lvData.page.effect[i].icon)}
|
{if isset($lvData.page.effect[i].icon)}
|
||||||
<table class="icontab">
|
<table class="icontab">
|
||||||
@@ -148,7 +155,7 @@
|
|||||||
{if isset($lvData.page.effect[i].icon.quality)}
|
{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>
|
<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}
|
{else}
|
||||||
<td><a href="?spell={$lvData.page.effect[i].icon.id}">{$lvData.page.effect[i].icon.name}</a></td>
|
<td>{if !$lvData.page.effect[i].icon.name|strpos:"#"}<a href="?spell={$lvData.page.effect[i].icon.id}">{/if}{$lvData.page.effect[i].icon.name}{if !$lvData.page.effect[i].icon.name|strpos:"#"}</a>{/if}</td>
|
||||||
{/if}
|
{/if}
|
||||||
<th></th><td></td>
|
<th></th><td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user