db.mojotrollz.eu/spell.php

508 lines
25 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
* UDWBase: WOWDB Web Interface
*
* © UDW 2009-2011
*
* Released under the terms and conditions of the
* GNU General Public License (http://gnu.org).
*
*/
require_once('includes/allspells.php');
require_once('includes/allnpcs.php');
require_once('includes/allquests.php');
require_once('includes/allcomments.php');
$smarty->config_load($conf_file, 'spell');
// номер спелла;
$id = $podrazdel;
if (!$spell = load_cache(13, intval($id))) {
unset($spell);
// БД
global $DB;
// Таблица спеллов
global $allspells;
// Таблица вещей
global $allitems;
global $npc_cols;
// Данные об спелле:
$row = $DB->selectRow('
SELECT s.*, i.iconname
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spell s, '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellicons i
WHERE
s.spellID=?
AND i.id = s.spellicon
', $id
);
if ($row) {
$spell = array();
// Номер спелла
$spell['entry'] = $row['spellID'];
// Имя спелла
$spell['name'] = $row['spellname'];
// Иконка спелла
//$spell['icon'] = $row['iconname'];
// Затраты маны на сспелл
if ($row['manacost'])
$spell['manacost'] = $row['manacost'];
elseif ($row['manacostpercent'])
$spell['manacost'] = $row['manacostpercent'] . '% ' . $smarty->get_config_vars('of_base');
// Уровень спелла
$spell['level'] = $row['levelspell'];
// Дальность
$RangeRow = $DB->selectRow('SELECT rangeMin, rangeMax, name' . ' from '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellrange where rangeID=? limit 1', $row['rangeID']);
$spell['range'] = '';
if (($RangeRow['rangeMin'] != $RangeRow['rangeMax']) and ($RangeRow['rangeMin'] != 0))
$spell['range'] = $RangeRow['rangeMin'] . '-';
$spell['range'] .= $RangeRow['rangeMax'];
$spell['rangename'] = $RangeRow['name'];
// Время каста
$casttime = $DB->selectCell('SELECT base from '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellcasttimes where id=? limit 1', $row['spellcasttimesID']);
if ($casttime > 0)
$spell['casttime'] = ($casttime / 1000) . ' ' . $smarty->get_config_vars('seconds');
else if ($row['ChannelInterruptFlags'])
$spell['casttime'] = 'Channeled';
else
$spell['casttime'] = 'Instant';
// Cooldown
if ($row['cooldown'] > 0)
$spell['cooldown'] = $row['cooldown'] / 1000;
// Время действия спелла
$duration = $DB->selectCell('SELECT durationBase FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellduration WHERE durationID=?d LIMIT 1', $row['durationID']);
if ($duration > 0)
$spell['duration'] = ($duration / 1000) . ' ' . $smarty->get_config_vars('seconds');
else
$spell['duration'] = '<span class="q0">n/a</span>';
// Школа спелла
$spell['school'] = $DB->selectCell('SELECT name' . ' FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_resistances WHERE id=?d LIMIT 1', $row['resistancesID']);
// Тип диспела
if ($row['dispeltypeID'])
$spell['dispel'] = $DB->selectCell('SELECT name' . ' FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spelldispeltype WHERE id=?d LIMIT 1', $row['dispeltypeID']);
// Механика спелла
if ($row['mechanicID'])
$spell['mechanic'] = $DB->selectCell('SELECT name' . ' FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellmechanic WHERE id=?d LIMIT 1', $row['mechanicID']);
// Информация о спелле
$spell['info'] = allspellsinfo2($row, 2);
// Инструменты
$spell['tools'] = array();
$i = 0;
for ($j = 1; $j <= 2; $j++) {
if ($row['tool' . $j]) {
$spell['tools'][$i] = array();
// Имя инструмента
$tool_row = $DB->selectRow('SELECT ?#, `quality` FROM ?_item_template, '.$UDWBaseconf['aowow']['db'].'.?_aowow_icons WHERE entry=?d AND id=displayid LIMIT 1', $item_cols[0], $row['tool' . $j]);
$spell['tools'][$i]['name'] = $tool_row['name'];
$spell['tools'][$i]['quality'] = $tool_row['quality'];
// ID инструмента
$spell['tools'][$i]['entry'] = $row['tool' . $j];
// Добавляем инструмент в таблицу вещей
allitemsinfo2($tool_row, 0);
$i++;
}
}
// Реагенты
$spell['reagents'] = array();
$i = 0;
for ($j = 1; $j <= 8; $j++) {
if ($row['reagent' . $j]) {
$spell['reagents'][$i] = array();
// Имя реагента
$reagentrow = $DB->selectRow('
SELECT c.?#, name
{ ,l.name_loc?d as `name_loc` }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_icons, ?_item_template c
{ LEFT JOIN (?_locales_item l) ON l.entry=c.entry AND ? }
WHERE
c.entry=?d
AND id=displayid
LIMIT 1
', $item_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $row['reagent' . $j]
);
$spell['reagents'][$i]['name'] = !empty($reagentrow['name_loc']) ? $reagentrow['name_loc'] : $reagentrow['name'];
$spell['reagents'][$i]['quality'] = $reagentrow['quality'];
// ID реагента
$spell['reagents'][$i]['entry'] = $row['reagent' . $j];
// Количество реагентов
$spell['reagents'][$i]['count'] = $row['reagentcount' . $j];
// Добавляем реагент в таблицу вещей
allitemsinfo2($reagentrow, 0);
$i++;
}
}
// Перебираем все эффекты:
$i = 0;
$spell['effect'] = array();
// Btt - Buff TollTip
if ($row['buff'])
$spell['btt'] = spell_buff_render($row);
for ($j = 1; $j <= 3; $j++) {
if ($row['effect' . $j . 'id'] > 0) {
// Название эффекта
$spell['effect'][$i]['name'] = $spell_effect_names[$row['effect' . $j . 'id']];
// Доп информация в имени
if ($row['effect' . $j . 'MiscValue']) {
switch ($row['effect' . $j . 'id']) {
// effect object creation, create information about him
case 50: // "Summon Object" // 103 spells, OK
case 76: // "Summon Object (Wild)" // 173 spells, OK
//case 86: // "Activate Object" // 175 spells; wrong GOs, tiny ID; skipping
case 104: { // "Summon Object (slot 1)" // 24 spells - traps, OK
//case 105: // "Summon Object (slot 2)" // 2 spells: 22996, 23005; wrong GOs; skipping
//case 106: // "Summon Object (slot 3)" // 0 spells; skipping
//case 107: // "Summon Object (slot 4)" // 0 spells; skipping
$spell['effect'][$i]['object'] = array();
$spell['effect'][$i]['object']['entry'] = $row['effect' . $j . 'MiscValue'];
$spell['effect'][$i]['object']['name'] = $DB->selectCell("SELECT name FROM ?_gameobject_template WHERE entry=? LIMIT 1", $spell['effect'][$i]['object']['entry']) . ' (' . $spell['effect'][$i]['object']['entry'] . ')';
break;
}
// скиллы
case 118: {// "Require Skill"
$spell['effect'][$i]['name'] .= ' (' . $DB->selectCell('SELECT name FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_skill WHERE skillID=? LIMIT 1', $row['effect' . $j . 'MiscValue']) . ')';
break;
}
// ауры
case 6: {
break;
}
// тотемы
case 75: // "Summon Totem"
case 87: // "Summon Totem (slot 1)"
case 88: // "Summon Totem (slot 2)"
case 89: // "Summon Totem (slot 3)"
case 90: { // "Summon Totem (slot 4)"
$spell['effect'][$i]['name'] .= ' (<a href="?npc=' . $row['effect' . $j . 'MiscValue'] . '">' . $row['effect' . $j . 'MiscValue'] . '</a>)';
break;
}
default: {
$spell['effect'][$i]['name'] .= ' (' . $row['effect' . $j . 'MiscValue'] . ')';
}
}
}
// Если просто урон школой - добавляем подпись школы
if ($row['effect' . $j . 'id'] == 2 && $spell['school'])
$spell['effect'][$i]['name'] .= ' (' . $spell['school'] . ')';
// Радиус действия эффекта
if ($row['effect' . $j . 'radius'])
$spell['effect'][$i]['radius'] = $DB->selectCell('SELECT radiusbase from '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellradius where radiusID=? limit 1', $row['effect' . $j . 'radius']);
// Значение спелла (урон)
if ($row['effect' . $j . 'BasePoints'] && !$row['effect' . $j . 'itemtype'])
$spell['effect'][$i]['value'] = $row['effect' . $j . 'BasePoints'] + 1;
// Интервал действия спелла
if ($row['effect' . $j . 'Amplitude'] > 0)
$spell['effect'][$i]['interval'] = $row['effect' . $j . 'Amplitude'] / 1000;
// Название ауры:
if ($row['effect' . $j . 'Aura'] > 0 && IsSet($spell_aura_names[$row['effect' . $j . 'Aura']]))
switch ($row['effect' . $j . 'Aura']) {
case 78: // "Mounted" - приписываем ссылку на нпс
case 56: { // "Transform"
$spell['effect'][$i]['name'] .= ': ' . $spell_aura_names[$row['effect' . $j . 'Aura']] . ' (<a href="?npc=' . $row['effect' . $j . 'MiscValue'] . '">' . $row['effect' . $j . 'MiscValue'] . '</a>)';
break;
}
default: {
$spell['effect'][$i]['name'] .= ': ' . $spell_aura_names[$row['effect' . $j . 'Aura']];
if ($row['effect' . $j . 'MiscValue'] > 0)
$spell['effect'][$i]['name'] .= ' (' . $row['effect' . $j . 'MiscValue'] . ')';
}
}
elseif ($row['effect' . $j . 'Aura'] > 0)
$spell['effect'][$i]['name'] .= ': Unknown_Aura(' . $row['effect' . $j . 'Aura'] . ')';
// Создает вещь:
if (($row['effect' . $j . 'id'] == 24)) {
$spell['effect'][$i]['item'] = array();
$spell['effect'][$i]['item']['entry'] = $row['effect' . $j . 'itemtype'];
$tmpRow = $DB->selectRow('
SELECT c.?#, name
{ ,l.name_loc?d as `name_loc` }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_icons, ?_item_template c
{ LEFT JOIN (?_locales_item l) ON l.entry=c.entry AND ? }
WHERE
c.entry=?d
AND id=displayid
LIMIT 1
', $item_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['effect'][$i]['item']['entry']
);
$spell['effect'][$i]['item']['name'] = $tmpRow['name'];
$spell['effect'][$i]['item']['quality'] = $tmpRow['quality'];
$spell['effect'][$i]['item']['count'] = $row['effect' . $j . 'BasePoints'] + 1;
// Иконка итема, если спелл создает этот итем
if (!IsSet($spell['icon']))
$spell['icon'] = trim($tmpRow['iconname'], "\r");
allitemsinfo2($tmpRow, 0);
}
// Создает спелл
if ($row['effect' . $j . 'triggerspell'] > 0) {
$spell['effect'][$i]['spell'] = array();
$spell['effect'][$i]['spell']['entry'] = $row['effect' . $j . 'triggerspell'];
$spell['effect'][$i]['spell']['name'] = $DB->selectCell('SELECT spellname' . ' FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spell WHERE spellID=?d LIMIT 1', $spell['effect'][$i]['spell']['entry']);
allspellsinfo($spell['effect'][$i]['spell']['entry']);
}
$i++;
}
}
if (!IsSet($spell['icon']))
$spell['icon'] = trim($row['iconname'], "\r");
// Спеллы с таким же названием
$seealso = $DB->select('
SELECT s.*, i.iconname
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spell s, '.$UDWBaseconf['aowow']['db'].'.?_aowow_spellicons i
WHERE
s.spellname' . ' = ?
AND s.spellID <> ?d
AND (
(s.effect1id=?d AND s.effect1id!=0)
OR (s.effect2id=?d AND s.effect2id!=0)
OR (s.effect3id=?d AND s.effect3id!=0)
)
AND i.id=s.spellicon
', $spell['name'], $spell['entry'], $row['effect1id'], $row['effect2id'], $row['effect3id']
);
if ($seealso) {
$spell['seealso'] = array();
foreach ($seealso as $i => $row)
$spell['seealso'][] = spellinfo2($row);
unset($seealso);
}
// Кто обучает этому спеллу
$spell['taughtbynpc'] = array();
// Список тренеров, обучающих нужному спеллу
$taughtbytrainers = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc, subname_loc' . $_SESSION['locale'] . ' AS subname_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_factiontemplate, ?_creature_template c
{ LEFT JOIN (?_locales_creature l) ON c.entry = l.entry AND ? }
WHERE
(c.entry IN (SELECT entry FROM ?_npc_trainer WHERE spell=?d) OR
c.entry IN (SELECT ct.entry FROM npc_trainer_template ntt LEFT JOIN creature_template ct ON ntt.entry = ct.TrainerTemplateId WHERE spell=?d))
AND factiontemplateID=FactionAlliance
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry'], $spell['entry']
);
if ($taughtbytrainers) {
foreach ($taughtbytrainers as $i => $npcrow)
$spell['taughtbynpc'][] = creatureinfo2($npcrow);
unset($taughtbytrainers);
}
// Список книг/рецептов, просто обучающих спеллу
$spell['taughtbyitem'] = array();
$taughtbyitem = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_icons, ?_item_template c
{ LEFT JOIN (?_locales_item l) ON c.entry = l.entry AND ? }
WHERE
((spellid_2=?d)
AND (spelltrigger_2=6))
AND id=displayid
', $item_cols[2], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry']//, $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry']
);
if ($taughtbyitem) {
foreach ($taughtbyitem as $i => $itemrow)
$spell['taughtbyitem'][] = iteminfo2($itemrow, 0);
unset($taughtbyitem);
}
// Список спеллов, обучающих этому спеллу:
$taughtbyspells = $DB->selectCol('
SELECT spellID
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_spell
WHERE
(effect1triggerspell=?d AND (effect1id=57 OR effect1id=36))
OR (effect2triggerspell=?d AND (effect2id=57 OR effect2id=36))
OR (effect3triggerspell=?d AND (effect3id=57 OR effect3id=36))
', $spell['entry'], $spell['entry'], $spell['entry']
);
if ($taughtbyspells) {
// Список петов, кастующих спелл, обучающий нужному спеллу
$taughtbypets = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc, subname_loc' . $_SESSION['locale'] . ' AS subname_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_factiontemplate, ?_creature_template c
{ LEFT JOIN (?_locales_creature l) ON c.entry = l.entry AND ? }
WHERE
c.entry IN (SELECT entry FROM ?_petcreateinfo_spell WHERE (Spell1 IN (?a)) OR (Spell2 IN (?a)) OR (Spell3 IN (?a)) OR (Spell4 IN (?a)))
AND factiontemplateID=FactionAlliance
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $taughtbyspells, $taughtbyspells, $taughtbyspells, $taughtbyspells
);
// Перебираем этих петов
if ($taughtbypets) {
foreach ($taughtbypets as $i => $petrow)
$spell['taughtbynpc'][] = creatureinfo2($petrow);
unset($taughtbypets);
}
// Список квестов, наградой за которые является спелл, обучающий нужному спеллу
$taughtbyquest = $DB->select('
SELECT c.?#
{ , Title_loc?d AS Title_loc }
FROM ?_quest_template c
{ LEFT JOIN (?_locales_quest l) ON c.entry = l.entry AND ? }
WHERE
RewSpell IN (?a) OR RewSpellCast IN (?a)
', $quest_cols[2], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $taughtbyspells, $taughtbyspells
);
if ($taughtbyquest) {
$spell['taughtbyquest'] = array();
foreach ($taughtbyquest as $i => $questrow)
$spell['taughtbyquest'][] = GetQuestInfo($questrow, 0xFFFFFF);
unset($taughtbyquest);
}
// Список НПЦ, кастующих нужный спелл, бла-бла-бла
$taughtbytrainers = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc, subname_loc' . $_SESSION['locale'] . ' AS subname_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_factiontemplate, ?_creature_template c
{ LEFT JOIN (?_locales_creature l) ON c.entry = l.entry AND ? }
WHERE
c.entry IN (SELECT entry FROM ?_npc_trainer WHERE spell in (?a))
AND factiontemplateID=FactionAlliance
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $taughtbyspells
);
if ($taughtbytrainers) {
foreach ($taughtbytrainers as $i => $npcrow)
$spell['taughtbynpc'][] = creatureinfo2($npcrow);
unset($taughtbytrainers);
}
// Список книг, кастующих спелл, обучающий нужному спеллу
$taughtbyitem = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_icons, ?_item_template c
{ LEFT JOIN (?_locales_item l) ON c.entry = l.entry AND ? }
WHERE
((spellid_1 IN (?a))
OR (spellid_2 IN (?a))
OR (spellid_3 IN (?a))
OR (spellid_4 IN (?a))
OR (spellid_5 IN (?a)))
AND id=displayid
', $item_cols[2], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $taughtbyspells, $taughtbyspells, $taughtbyspells, $taughtbyspells, $taughtbyspells
);
if ($taughtbyitem) {
foreach ($taughtbyitem as $i => $itemrow)
$spell['taughtbyitem'][] = iteminfo2($itemrow, 0);
unset($taughtbyitem);
}
}
// Используется NPC:
$usedbynpc = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc, subname_loc' . $_SESSION['locale'] . ' AS subname_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_factiontemplate, ?_creature_template c
{ LEFT JOIN (?_locales_creature l) ON c.entry = l.entry AND ? }
LEFT JOIN creature_ai_scripts cas ON c.entry = cas.creature_id
WHERE
factiontemplateID=FactionAlliance
AND ( (cas.action1_type = 11 AND cas.action1_param1 = ?) OR
(cas.action2_type = 11 AND cas.action2_param1 = ?) OR
(cas.action3_type = 11 AND cas.action3_param1 = ?) )
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry'],$spell['entry'],$spell['entry'],$spell['entry']
);
if ($usedbynpc) {
$spell['usedbynpc'] = array();
foreach ($usedbynpc as $i => $row)
$spell['usedbynpc'][] = creatureinfo2($row);
unset($usedbynpc);
}
// Используется вещями:
$usedbyitem = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc }
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_icons, ?_item_template c
{ LEFT JOIN (?_locales_item l) ON c.entry = l.entry AND ? }
WHERE
(spellid_1=?d OR (spellid_2=?d AND spelltrigger_2!=6) OR spellid_3=?d OR spellid_4=?d OR spellid_5=?d)
AND id=displayID
', $item_cols[2], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry']
);
if ($usedbyitem) {
$spell['usedbyitem'] = array();
foreach ($usedbyitem as $i => $row)
$spell['usedbyitem'][] = iteminfo2($row, 0);
unset($usedbyitem);
}
// Используется наборами вещей:
$usedbyitemset = $DB->select('
SELECT *
FROM '.$UDWBaseconf['aowow']['db'].'.?_aowow_itemset
WHERE spell1=?d or spell2=?d or spell3=?d or spell4=?d or spell5=?d or spell6=?d or spell7=?d or spell8=?d
', $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry']
);
if ($usedbyitemset) {
$spell['usedbyitemset'] = array();
foreach ($usedbyitemset as $i => $row)
$spell['usedbyitemset'][] = itemsetinfo2($row);
unset($usedbyitemset);
}
// Спелл - награда за квест
$questreward = $DB->select('
SELECT c.?#
{ , Title_loc?d AS Title_loc }
FROM ?_quest_template c
{ LEFT JOIN (?_locales_quest l) ON c.entry = l.entry AND ? }
WHERE
RewSpell=?d
OR RewSpellCast=?d
', $quest_cols[2], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry'], $spell['entry']
);
if ($questreward) {
$spell['questreward'] = array();
foreach ($questreward as $i => $row)
$spell['questreward'][] = GetQuestInfo($row, 0xFFFFFF);
unset($questreward);
}
// Проверяем на пустые массивы
if (!($spell['taughtbyitem']))
unset($spell['taughtbyitem']);
if (!($spell['taughtbynpc']))
unset($spell['taughtbynpc']);
$smarty->assign('spell', $spell);
save_cache(13, $spell['spellID'], $spell);
}
}
global $page;
$page = array(
'Mapper' => false,
'Book' => false,
'Title' => $spell['name'] . ' - ' . $smarty->get_config_vars('Spells'),
'tab' => 0,
'type' => 6,
'typeid' => $spell['entry'],
'path' => '[0,1]'
);
$smarty->assign('page', $page);
// Комментарии
$smarty->assign('comments', getcomments($page['type'], $page['typeid']));
// Количество MySQL запросов
$smarty->assign('mysql', $DB->getStatistics());
if (count($allspells) >= 0)
$smarty->assign('allspells', $allspells);
if (count($allitems) >= 0)
$smarty->assign('allitems', $allitems);
$smarty->display('spell.tpl');