turtle-wow-source-kinda/Dumps/Source Code/18 - Development_Turtlehead Current/main/spell.php
Brian Oost a1d5bb70b2 Init
2024-08-06 18:06:40 +02:00

528 lines
24 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
global $smarty;
global $conf_file;
global $podrazdel;
global $item_cols;
global $quest_cols;
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 ' . AOWOW . '.aowow_spell s, ' . AOWOW . '.aowow_spellicons i
WHERE
s.spellID=?
AND i.id = s.spellicon
', $id
);
if ($row) {
$spell = array();
// Номер спелла
$spell['entry'] = $row['spellID'];
// Имя спелла
$spell['name'] = $row['spellname_loc' . $_SESSION['locale']];
// Иконка спелла
//$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_loc' . $_SESSION['locale'] . ' from ' . AOWOW . '.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_loc' . $_SESSION['locale']];
// Время каста
$casttime = $DB->selectCell('SELECT base from ' . AOWOW . '.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;
if ($row['categoryCooldown'] > 0)
$spell['categoryCooldown'] = $row['categoryCooldown'] / 1000;
// Время действия спелла
$duration = $DB->selectCell('SELECT durationBase FROM ' . AOWOW . '.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_loc' . $_SESSION['locale'] . ' FROM ' . AOWOW . '.aowow_resistances WHERE id=?d LIMIT 1', $row['resistancesID']);
// Тип диспела
if ($row['dispeltypeID'])
$spell['dispel'] = $DB->selectCell('SELECT name_loc' . $_SESSION['locale'] . ' FROM ' . AOWOW . '.aowow_spelldispeltype WHERE id=?d LIMIT 1', $row['dispeltypeID']);
// Механика спелла
if ($row['mechanicID'])
$spell['mechanic'] = $DB->selectCell('SELECT name_loc' . $_SESSION['locale'] . ' FROM ' . AOWOW . '.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 ' . WORLD . '.item_template, ' . AOWOW . '.aowow_icons
WHERE entry=?d AND id=display_id 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 ' . AOWOW . '.aowow_icons, ' . WORLD . '.item_template c
{ LEFT JOIN (' . WORLD . '.locales_item l) ON l.entry=c.entry AND ? }
WHERE
c.entry=?d
AND id=display_id
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']];
$spell['effect'][$i]['id'] = $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 " . WORLD . ".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_loc0 FROM ' . AOWOW . '.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 " . AOWOW . ".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'] .= ' #' . $row['effect'.$j.'Aura'] . ': ' . $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 ' . AOWOW . '.aowow_icons, ' . WORLD . '.item_template c
{ LEFT JOIN (' . WORLD . '.locales_item l) ON l.entry=c.entry AND ? }
WHERE
c.entry=?d
AND id=display_id
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_loc' . $_SESSION['locale'] . ' FROM ' . AOWOW . '.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 ' . AOWOW . '.aowow_spell s, ' . AOWOW . '.aowow_spellicons i
WHERE
s.spellname_loc' . $_SESSION['locale'] . ' = ?
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 ' . AOWOW . '.aowow_factiontemplate, ' . WORLD . '.creature_template c
{ LEFT JOIN (' . WORLD . '.locales_creature l) ON c.entry = l.entry AND ? }
WHERE
c.entry IN (SELECT entry FROM ' . WORLD . '.npc_trainer WHERE spell=?d)
GROUP BY c.entry
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry']
);
//AND factiontemplateID=FactionAlliance
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 ' . AOWOW . '.aowow_icons, ' . WORLD . '.item_template c
{ LEFT JOIN (' . WORLD . '.locales_item l) ON c.entry = l.entry AND ? }
WHERE
((spellid_2=?d)
AND (spelltrigger_2=6))
AND id=display_id
GROUP BY c.entry
', $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 ' . AOWOW . '.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 ' . AOWOW . '.aowow_factiontemplate, ' . WORLD . '.creature_template c
{ LEFT JOIN (' . WORLD . '.locales_creature l) ON c.entry = l.entry AND ? }
WHERE
c.entry IN (SELECT entry FROM ' . WORLD . '.petcreateinfo_spell WHERE (Spell1 IN (?a)) OR (Spell2 IN (?a)) OR (Spell3 IN (?a)) OR (Spell4 IN (?a)))
GROUP BY c.entry
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $taughtbyspells, $taughtbyspells, $taughtbyspells, $taughtbyspells
);
//AND factiontemplateID=FactionAlliance
// Перебираем этих петов
if ($taughtbypets) {
foreach ($taughtbypets as $i => $petrow)
$spell['taughtbynpc'][] = creatureinfo2($petrow);
unset($taughtbypets);
}
$taughtbyquest = $DB->select('
SELECT c.?#
{ , Title_loc?d AS Title_loc }
, entry as id
FROM ' . WORLD . '.quest_template c
{ LEFT JOIN (' . WORLD . '.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 ' . AOWOW . '.aowow_factiontemplate, ' . WORLD . '.creature_template c
{ LEFT JOIN (' . WORLD . '.locales_creature l) ON c.entry = l.entry AND ? }
WHERE
c.entry IN (SELECT entry FROM ' . WORLD . '.npc_trainer WHERE spell in (?a))
GROUP BY c.entry
', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $taughtbyspells
);
//AND factiontemplateID=FactionAlliance
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 ' . AOWOW . '.aowow_icons, ' . WORLD . '.item_template c
{ LEFT JOIN (' . WORLD . '.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=display_id
', $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 = false;
// $usedbynpc = $DB->select('
// SELECT ?#, c.entry
// { , name_loc?d AS name_loc, subname_loc' . $_SESSION['locale'] . ' AS subname_loc }
// FROM ' . AOWOW . '.aowow_factiontemplate, ' . WORLD . '.creature_template c
// { LEFT JOIN (' . WORLD . '.locales_creature l) ON c.entry = l.entry AND ? }
//
// ', $npc_cols[0], ($_SESSION['locale'] > 0) ? $_SESSION['locale'] : DBSIMPLE_SKIP, ($_SESSION['locale'] > 0) ? 1 : DBSIMPLE_SKIP, $spell['entry'], $spell['entry'], $spell['entry'], $spell['entry']
// );
//WHERE
// factiontemplateID=FactionAlliance
if ($usedbynpc) {
$spell['usedbynpc'] = array();
foreach ($usedbynpc as $i => $row)
$spell['usedbynpc'][] = creatureinfo2($row);
unset($usedbynpc);
}
// used by item
$usedbyitem = $DB->select('
SELECT ?#, c.entry
{ , name_loc?d AS name_loc }
FROM ' . AOWOW . '.aowow_icons, ' . WORLD . '.item_template c
{ LEFT JOIN (' . WORLD . '.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=display_id
', $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);
}
// item sets
$usedbyitemset = $DB->select('
SELECT *
FROM ' . AOWOW . '.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);
}
// spell reward
$questreward = $DB->select('
SELECT c.?#
{ , Title_loc?d AS Title_loc }
,entry as id
FROM ' . WORLD . '.quest_template c
{ LEFT JOIN (' . WORLD . '.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);
}
// empty checks
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 (isset($allitems) && count($allitems) >= 0)
$smarty->assign('allitems', $allitems);
$smarty->display('spell.tpl');