Shaleych (обсуждение | вклад) мНет описания правки |
Shaleych (обсуждение | вклад) мНет описания правки |
||
(не показаны 152 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | local itemIcon = require('Модуль:Item_icon') |
||
+ | local attributes = mw.loadData('Модуль:Item/Attributes') -- База данных параметров предметов |
||
local p = {} |
local p = {} |
||
+ | |||
⚫ | |||
+ | -- Функция для разделения чисел запятой |
||
⚫ | |||
+ | function commaValue(amount) |
||
− | ['Взрывной уравнитель'] = 'Наносит урон ближайшим врагам.<br><span class="green">Значение:</span> 260', |
||
+ | local formatted = amount |
||
− | ['Выброс кристаллов'] = 'Мощный выброс кристаллов, которые наносят урон вашей цели и ближайшим врагам.<br><span class="green">Значение:</span> 650', |
||
+ | while true do |
||
− | ['Золотое прикосновение'] = 'Призывает золотого боевого коня, который атакует вашу цель.<br><span class="green">Значение:</span> 1,950', |
||
+ | formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') |
||
− | ['Живительная милость'] = 'Лечение от вашего истового скакуна<br><span class="green">Применяемый эффект:</span> отложенное лечение<br><span class="green">Значение:</span> 5.2<br><span class="green">Длительность:</span> 10 сек.', |
||
+ | if (k==0) then |
||
− | ['Туннельное зрение'] = 'Сильная атака по одной цели<br><span class="green">Значение:</span> 780', |
||
+ | break |
||
− | ['Огонь шагателя'] = 'Призывает бронированного громадного шагателя, который атакует вашу цель и ближайшим врагам.<br><span class="green">Значение:</span> 650', |
||
⚫ | |||
− | ['Улитка-цеповка'] = 'Призывает улитку-цеповку, которая разбрасывает врагов.<br><span class="green">Значение:</span> 650', |
||
+ | end |
||
− | ['Вулканическая улитка-цеповка'] = 'Призывает улитку-цеповку, которая разбрасывает врагов.<br><span class="green">Значение:</span> 650', |
||
+ | return formatted |
||
− | ['Круговой удар топором'] = 'Призывает бронированного топороклюва, который атакует ближайших врагов круговым ударом.<br><span class="green">Значение:</span> 650', |
||
+ | end |
||
− | ['Властный топот'] = 'Призывает личного императорского жука, который обрушивается на землю.<br><span class="green">Значение:</span> 520<br><span class="green">Применяемый эффект:</span> оглушение<br><span class="green">Длительность:</span> 2 сек.', |
||
− | ['Пронзительный визг'] = 'Призывает грифона в доспехах, который испускает оглушительный визг.<br><span class="green">Применяемый эффект:</span> снижает наносимый целью урона 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Дополнительный эффект:</span> оглушение<br><span class="green">Длительность:</span> 1 сек.<br><span class="green">Дополнительный эффект:</span> повышает ваши интеллект, мудрость и обаяние 1<br><span class="green">Длительность:</span> 10 сек.', |
||
− | ['Удар языком гигантской жабы'] = 'Призывает гигантскую жабу, которая бьет по цели языком.<br><span class="green">Значение:</span> 1,950<br><span class="green">Дополнительный эффект:</span> Пожирание прислужников', |
||
− | ['Осадный волшебный залп'] = 'Призывает осадного медведя, который стреляет залпом из пушки по выбранному месту раз в секунду в течение следующих 10 секунд<br><span class="green">Значение:</span> 75 за каждый залп', |
||
− | ['Тропа огня'] = 'Вы призываете имперского яростного дракона, который устремляется вперед, нанося урон огнем.<br><span class="green">Значение:</span> 650', |
||
− | ['Тензерово преобразование'] = 'Вы превращаетесь в истинную боевую машину, становясь сильнее, крепче, быстрее и искуснее в бою.<br><span class="green">Применяемый эффект:</span> повышает ваш урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> повышает вашу скорость на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> повышает ваши силу, ловкость и выносливость на 1<br><span class="green">Длительность:</span> 10 сек.', |
||
− | ['Дезинтеграционный луч'] = 'Призывает личного бехолдера-танка, который поражает врагов дезинтеграционными лучами на линии.<br><span class="green">Значение:</span> 650', |
||
− | ['Аурэльское снаряжение'] = 'Призывает небесного льва, который отбрасывает ближайших врагов.<br><span class="green">Применяемый эффект:</span> щит составляет 20% от максимума хитов участников группы<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> спустя 10 секунд участники группы получают умение Лучистое оружие, которое суммируется до 3 раз в зависимости от оставшегося щита.<br>Лучистое оружие 12 секунд наносит дополнительные 2% урона излучением. Умение не может складываться более 8 раз (независимо от источника).', |
||
− | ['Магический водоворот'] = 'Призывает Магический смерч, который несется вперед, нанося урон ближайшим врагам и отбрасывая в сторону врагов, с которыми сталкивается.<br><span class="green">Значение:</span> 217<br><span class="green">Применяемый эффект:</span> столкновение<br><span class="green">Значение:</span> 433', |
||
− | ['Зов звезд'] = 'Вы призываете небесного оленя, который обрушивает на врагов звездопад.<br><span class="green">Применяемый эффект:</span> отложенный урон<br><span class="green">Значение:</span> 65<br><span class="green">Длительность:</span> 8 сек.<br><span class="green">Применяемый эффект:</span> замедляет цель на 39%<br><span class="green">Длительность:</span> 8 сек.', |
||
− | ['Ад на Фаэруне'] = 'Призывает машину адского пламени, которая обрушивает из своей пасти всепоглощающее пламя.<br><span class="green">Значение:</span> 325<br><span class="green">Применяемый эффект:</span> отложенный урон<br><span class="green">Значение:</span> 72<br><span class="green">Длительность:</span> 5 сек.', |
||
− | ['Божественное вмешательство'] = 'Вы призываете небесное существо, которое отбрасывает назад всех врагов поблизости.<br><span class="green">Значение:</span> 650<br><span class="green">Применяемый эффект:</span> дополнительный урон всем дьяволам и демонам<br><span class="green">Значение:</span> 65', |
||
− | ['Подкашивание'] = 'Призывает адскую боевую машину, которая несется к ближайшим врагам.<br><span class="green">Значение:</span> 217<br><span class="green">Применяемый эффект:</span> столкновение<br><span class="green">Значение:</span> 433', |
||
− | ['Мучительный рывок'] = 'Ваш конь адского пламени оставляет огненный след, поджигая врагов перед вами.<br><span class="green">Применяемый эффект:</span> отложенный урон<br><span class="green">Значение:</span> 173<br><span class="green">Длительность:</span> 6 сек.<br><span class="green">Применяемый эффект:</span> замедляет цели на 39%<br><span class="green">Длительность:</span> 6 сек.', |
||
− | ['Свирепый рев'] = 'Призывает личную бронированную панцирницу, которая ревет на врагов впереди.<br><span class="green">Значение:</span> 520<br><span class="green">Применяемый эффект:</span> уменьшает наносимый целью урон на 9.8%<br><span class="green">Значение:</span> 10 сек.', |
||
− | ['Рывок отчаяния'] = 'Ваш костяной скакун оставляет шлейф чернейшего дыма, иссушая врагов перед вами.<br><span class="green">Применяемый эффект:</span> отложенный урон<br><span class="green">Значение:</span> 173<br><span class="green">Длительность:</span> 6 сек.<br><span class="green">Применяемый эффект:</span> замедляет цели на 39%<br><span class="green">Длительность:</span> 6 сек.', |
||
− | ['Дождь шипов'] = 'Вы призываете рунную мантикору, которая обрушивает на врагов целый поток шипов из своего хвоста.<br><span class="green">Значение:</span> 520<br><span class="green">Применяемый эффект:</span> сбивание с ног<br><span class="green">Длительность:</span> 2 сек.', |
||
− | ['Стая летучих мышей'] = 'Призывает стаю летучих мышей, которые освобождают вас от большинства эффектов контроля.<br><span class="green">Применяемый эффект:</span> повышает ваш урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> замедляет вашу цель на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> повышает получаемый целью урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br>Применяемый эффект уменьшает наносимый целью урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> снижает вероятность критического удара цели на 9.8%<br><span class="green">Длительность:</span> 10 сек.', |
||
− | ['Крик глубинной вороны'] = 'Вы используете силу глубинной вороны, испуская крик и становясь сильнее в бою.<br><span class="green">Применяемый эффект:</span> повышает ваш урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Применяемый эффект:</span> обездвиживает врагов вокруг вас, давая боевое преимущество против них.<br><span class="green">Длительность:</span> 3.9 сек.', |
||
− | ['Удар метеора'] = 'Призывает из глубин Авернуса балгуру, который бьет кулаками по земле с невероятной мощью.<br><span class="green">Значение:</span> 520<br><span class="green">Применяемый эффект:</span> оглушение<br><span class="green">Длительность:</span> 2 сек.', |
||
− | ['Затаптывание'] = 'Призывает боевого трицератопса, который рвется в бой, отбрасывая врагов.<br><span class="green">Значение:</span> 650', |
||
− | ['Вихрь'] = 'Летающий ковер начинает летать вокруг цели, создавая вихрь, который притягивает к его центру ближайших врагов. <br><span class="green">Значение:</span> 650', |
||
− | ['Командующий тираннозавр Рекс'] = 'Призывает тираннозавра, который повергает врагов в ужас.<br><span class="green">Применяемый эффект:</span> обездвиживание<br><span class="green">Длительность:</span> 3.9 сек.<br><span class="green">Применяемый эффект:</span> повышает получаемый целью урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Дополнительный эффект:</span> пожирание прислужников', |
||
− | ['Мифический тираннозавр рекс'] = 'Призывает тираннозавра, который повергает врагов в ужас.<br><span class="green">Применяемый эффект:</span> обездвиживание<br><span class="green">Длительность:</span> 3.9 сек.<br><span class="green">Применяемый эффект:</span> повышает получаемый целью урон на 9.8%<br><span class="green">Длительность:</span> 10 сек.<br><span class="green">Дополнительный эффект:</span> пожирание прислужников', |
||
⚫ | |||
− | ['Быстрая походка'] = '+2% <span class="slate">Скорость движения</span>.<br>+731 <span class="slate">Общий рейтинг</span>', |
||
− | ['Быстрая точность'] = '+3,900 <span class="slate">Точность</span><br>+1,462 <span class="slate">Общий рейтинг</span>', |
||
− | ['Быстрое действие'] = 'Использование ежедневного умения дает вам 3.9% от общего количества очков действия в течение 10 секунд. Период восстановления: 20 сек. +1,462 <span class="slate">к общему рейтингу</span>', |
||
− | ['Господствующая сила'] = '+3,900 <span class="slate">Могущество</span><br>+1,462 <span class="slate">Общий рейтинг</span>', |
||
− | ['Интенсивное сопротивление'] = '1,950 <span class="slate">Критическое уклонение</span><br>+731 <span class="slate">Общий рейтинг</span>', |
||
− | ['Неприкосновенный'] = '+1,950 <span class="slate">Уклонение</span><br>+731 <span class="slate">Общий рейтинг</span>', |
||
− | ['Восстановление'] = 'Использование ежедневного умения дает вам 7.8% от общего количества хитов в течение 10 секунд. Период восстановления: 20 сек.<br>+1,462 <span class="slate">к общему рейтингу</span>.', |
||
− | ['Рывок жизни'] = '+1,300 Максимум хитов<br>+0.33 <span class="slate">Скорость движения</span><br>+244 <span class="slate">Общий рейтинг</span>', |
||
− | ['Стойкость'] = '+39,000 Максимум хитов<br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Неразрушимый'] = '+3,900 <span class="slate">Оборона</span><br>+1,462 <span class="slate">Общий рейтинг</span>', |
||
− | ['Смертельное разложение'] = '+19,500 Максимум хитов<br>+4,875 <span class="slate">Критическое уклонение</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Свирепость'] = 'Когда вы или участник вашей группы получаете удар от противника, вы можете получить эффект Свирепость, на 10 секунд дающий вам дополнительный урон в 0.52%. Эффект может суммироваться до 3 раз. +731 <span class="slate">к общему рейтингу</span>', |
||
− | ['Разбиватель доспехов'] = '+3,900 <span class="slate">Проникающий урон</span><br>+1,462 <span class="slate">Общий рейтинг</span>', |
||
− | ['Извлечение выгоды'] = 'При использовании артефактного умения период восстановления всех ваших умений уменьшается на 20%. Период восстановления: 20 сек. +3,656 <span class="slate">к общему рейтингу</span>', |
||
− | ['Предприимчивость'] = '+650 <span class="slate">Боевое преимущество</span><br>+244 <span class="slate">Общий рейтинг</span>', |
||
− | ['Несломленный'] = '+1,950 <span class="slate">Оборона</span><br>+1,950 <span class="slate">Уклонение</span><br>+1,462 <span class="slate">Общий рейтинг</span>', |
||
− | ['Руническая аура'] = '+1,950 к <span class="green">могуществу</span> и <span class="green">обороны</span> у вас и игроков вашей группы в радиусе 80 футов. Несколько единиц одной и той же ауры не суммируются.<br>+1,462 <span class="slate">к общему рейтингу</span>', |
||
− | ['Плавная езда'] = '+4.9% <span class="slate">Скорость движения</span><br>+4,875 <span class="slate">Оборона</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Освежающий бриз'] = '+9.8% <span class="slate">к восстановлению бодрости</span><br>+3,656 <span class="slate">к общему рейтингу</span>', |
||
− | ['Беспощадная эффективность'] = '+3,900 <span class="slate">Вероятность критического удара</span><br>+1,462 <span class="slate">Общий рейтинг</span>', |
||
− | ['Всемогущество'] = '+9,750 <span class="slate">Осведомленность</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Провидение'] = 'Когда вы или участник вашей группы получаете удар от противника, есть возможность излечения на 10% от максимума хитов. Тогда же вы получаете умение Лучистое оружие. Эффект возможен раз в 10 секунд.<br>Лучистое оружие, получаемое таким образом, может суммироваться не более 3 раз. Лучистое оружие 12 секунд наносит дополнительные 2% урона излучением. Умение не может суммироваться более 8 раз (независимо от источника).', |
||
− | ['Свирепый хищник'] = '+4,875 <span class="slate">Могущество</span><br>+4,875 <span class="slate">Проникающий урон</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Небесное спокойствие'] = '+4,875 <span class="slate">Осведомленность</span><br>+4,875 <span class="slate">Точность</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Божественное постановление'] = '+4.9% <span class="slate">Скорость движения</span><br>+4,875 <span class="slate">Могущество</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Точность'] = '+4,875 <span class="slate">Вероятность критического удара</span><br>+4,875 <span class="slate">Проникающий урон</span><br>+3,656 <span class="slate">Общий рейтинг</span>', |
||
− | ['Крепкая точность'] = '+325 <span class="slate">Оборона</span><br>+325 <span class="slate">Точность</span><br>+244 <span class="slate">Общий рейтинг</span>', |
||
− | } |
||
function p.Main( frame ) |
function p.Main( frame ) |
||
+ | local powersData = mw.loadData( 'Module:Mount/Powers' ) |
||
− | text = |
+ | text = powersData[frame.args[1]] |
return text |
return text |
||
end |
end |
||
− | function p. |
+ | function p.mountBonuses(frame) |
local cargo = mw.ext.cargo |
local cargo = mw.ext.cargo |
||
+ | local tablesI = 'Items' |
||
− | tables = 'Insignia_bonuses' |
||
+ | local fieldsI = 'Items.name, Items.quality, Items.categories, Items.slot1, Items.slot2, Items.slot3, Items.slot4, Items.insignia_bonuses, Items.combat_power_name, Items.equip_power_name,' |
||
− | fields = '_pageName, name, slot1, slot2, slot3, description, mounts' |
||
− | local |
+ | local argsI = { |
+ | where = 'Items.categories HOLDS "Скакун" AND Items.name = "' .. frame.args[1] .. '"', |
||
⚫ | |||
− | + | orderBy = 'Items._pageName', |
|
} |
} |
||
− | local result = cargo.query( |
+ | local result = cargo.query( tablesI, fieldsI, argsI ) |
local r = result[1] |
local r = result[1] |
||
+ | |||
⚫ | |||
+ | local function queryPower(power_type, power_name) |
||
⚫ | |||
+ | local tables = 'Powers' |
||
− | if frame.args[1] == v.slot1 and frame.args[2] == v.slot2 and frame.args[3] == v.slot3 then |
||
+ | local fields = 'name, type, power_use, item_ui_equip_power, hit_points, power, accuracy, combat_advantage, critical_strike, critical_severity, critical_avoidance, forte, stamina_regen, deflect, awareness, movement_speed, defense, stat_universal' |
||
− | text[k] = v._pageName .. ', ' |
||
+ | local args_power = { |
||
− | elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot2 and frame.args[3] == 'Универсальная ячейка' then |
||
+ | where = 'type = "' .. power_type .. '" AND name = "' .. power_name .. '"' |
||
− | text[k] = v._pageName .. ', ' |
||
⚫ | |||
− | elseif frame.args[1] == v.slot1 and frame.args[2] == v.slot3 and frame.args[3] == 'Универсальная ячейка' then |
||
+ | return cargo.query(tables, fields, args_power)[1] |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[1] == v.slot2 and frame.args[2] == v.slot3 and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[3] == v.slot3 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[3] == v.slot2 and frame.args[2] == v.slot1 and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[1] == v.slot1 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[1] == v.slot2 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[1] == v.slot3 and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
− | elseif frame.args[1] == 'Универсальная ячейка' and frame.args[2] == 'Универсальная ячейка' and frame.args[3] == 'Универсальная ячейка' then |
||
− | text[k] = v._pageName .. ', ' |
||
⚫ | |||
− | text[k] = '' |
||
⚫ | |||
end |
end |
||
+ | |||
− | return table.concat(text) |
||
⚫ | |||
+ | local r_combat_power_name = queryPower("боевое умение", r['Items.combat_power_name']) |
||
+ | |||
⚫ | |||
+ | local r_equip_power = queryPower("умение экипировки", r['Items.equip_power_name']) |
||
+ | |||
+ | local formatted_wikitext = {} |
||
+ | for _, attrib in ipairs(attributes) do |
||
+ | if r_equip_power[attrib.fields_cargo] ~= nil then |
||
+ | table.insert(formatted_wikitext, '+' .. commaValue(r_equip_power[attrib.fields_cargo]) .. ' [[' .. attrib.name[1] .. '|<span class="slate">'.. attrib.name[1] .. '</span>]]') |
||
+ | end |
||
+ | end |
||
+ | |||
+ | local text = '<b>Умение экипировки:</b> [[' .. r['Items.equip_power_name'] .. ']]<dl><dd>'.. (#formatted_wikitext == 0 and (r_equip_power['power_use'] ~= '' and r_equip_power['power_use'] or r_equip_power['item_ui_equip_power']) or table.concat(formatted_wikitext, '<br>')) .. '</dd></dl><b>Боевое умение:</b> [[' .. r['Items.combat_power_name'] .. ']]<dl><dd>'.. r_combat_power_name["power_use"] .. '</dd></dl>' |
||
+ | |||
+ | return text .. '<b>Список бонусов знака:</b>' .. frame:expandTemplate{title = 'Список бонусов знака', args = args} |
||
+ | |||
end |
end |
||
+ | |||
+ | function p.mountPowerTable(frame) |
||
+ | local cargo = mw.ext.cargo |
||
+ | local tables = 'Powers' |
||
+ | local fields = 'Powers._pageName, Powers.name, Powers.icon, Powers.item_level, Powers.type, Powers.power_use, item_ui_equip_power, hit_points, power, accuracy, combat_advantage, critical_strike, critical_severity, critical_avoidance, forte, stamina_regen, deflect, awareness, movement_speed, defense, stat_universal' |
||
⚫ | |||
+ | where = 'Powers.type = "' .. frame.args[1] .. '"', |
||
+ | orderBy = 'Powers.item_level, Powers._pageName', |
||
+ | } |
||
+ | local result = cargo.query( tables, fields, args ) |
||
+ | |||
+ | local tbl = mw.html.create('table') |
||
+ | tbl:addClass('wikitable sortable jquery-tablesorter') |
||
+ | tbl:tag("th"):wikitext("Умение"):done() |
||
+ | tbl:tag("th"):wikitext("Уровень предмета"):done() |
||
+ | tbl:tag("th"):wikitext("Эффект"):done() |
||
+ | tbl:tag("th"):wikitext("Доступно на<br>следующих скакунах"):done() |
||
+ | tbl:done() |
||
+ | |||
⚫ | |||
+ | local item_stats = {} |
||
+ | local item_ui_equip_power_value = { |
||
+ | { name = 'На себе', value = power.item_ui_equip_power }, |
||
+ | } |
||
+ | for _, attrib in ipairs(attributes) do |
||
+ | if power[attrib.fields_cargo] ~= nil then |
||
+ | table.insert(item_stats, attrib.name[1]) |
||
+ | end |
||
+ | end |
||
+ | tr = tbl:tag("tr"):attr("data-stats", table.concat(item_stats, ", ")) |
||
+ | tr:tag("td"):wikitext('[[File:' .. power["Powers.icon"] .. '|32px|link=' .. power["Powers._pageName"] ..']] [[' .. power["Powers._pageName"] .. ']]'):done() |
||
+ | tr:tag("td"):wikitext(power["Powers.item_level"]):done() |
||
+ | |||
+ | if mw.ustring.lower(frame.args[1]) == 'боевое умение' then |
||
+ | tr:tag("td"):wikitext(power["Powers.power_use"]):done() |
||
+ | elseif mw.ustring.lower(frame.args[1]) == 'умение экипировки' then |
||
+ | local formatted_wikitext = {} |
||
+ | for _, attrib in ipairs(attributes) do |
||
+ | if power[attrib.fields_cargo] ~= nil then |
||
+ | table.insert(formatted_wikitext, '+' .. commaValue(power[attrib.fields_cargo]) .. ' [[' .. attrib.name[1] .. '|<span class="slate">'.. attrib.name[1] .. '</span>]]') |
||
+ | end |
||
+ | end |
||
+ | for _, stat in ipairs(item_ui_equip_power_value) do |
||
+ | if stat.value then |
||
+ | table.insert(formatted_wikitext, '<span class="green">'.. stat.name .. ': </span>' .. commaValue(stat.value)) |
||
+ | end |
||
+ | end |
||
+ | tr:tag("td"):wikitext(table.concat(formatted_wikitext, '<br>')):done() |
||
+ | end |
||
+ | |||
+ | local tables_items = 'Items' |
||
+ | local fields_items = 'Items._pageName, Items.quality, Items.combat_power_name, Items.equip_power_name' |
||
+ | local args_items = { |
||
+ | where = 'Items.equip_power_name = "' .. power["Powers.name"] .. '" OR Items.combat_power_name = "' .. power["Powers.name"] .. '"', |
||
+ | orderBy = 'Items.name, Items.quality', |
||
+ | } |
||
+ | local result_items = cargo.query( tables_items, fields_items, args_items ) |
||
+ | |||
⚫ | |||
+ | for _, item in ipairs(result_items) do |
||
+ | table.insert(mounts, itemIcon.Main({args={item["Items._pageName"],""}})) |
||
+ | end |
||
+ | if #result_items > 4 then |
||
+ | tr:tag("td"):tag("div"):attr('style', 'height: 150px; overflow-y: scroll;'):wikitext(table.concat(mounts, "<br>")):done() |
||
⚫ | |||
+ | tr:tag("td"):wikitext(table.concat(mounts, "<br>")):done() |
||
+ | end |
||
+ | end |
||
+ | return tbl |
||
+ | end |
||
return p |
return p |
Текущая версия от 13:09, 20 января 2024
Для документации этого модуля может быть создана страница Модуль:Mount/doc
local itemIcon = require('Модуль:Item_icon')
local attributes = mw.loadData('Модуль:Item/Attributes') -- База данных параметров предметов
local p = {}
-- Функция для разделения чисел запятой
function commaValue(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k==0) then
break
end
end
return formatted
end
function p.Main( frame )
local powersData = mw.loadData( 'Module:Mount/Powers' )
text = powersData[frame.args[1]]
return text
end
function p.mountBonuses(frame)
local cargo = mw.ext.cargo
local tablesI = 'Items'
local fieldsI = 'Items.name, Items.quality, Items.categories, Items.slot1, Items.slot2, Items.slot3, Items.slot4, Items.insignia_bonuses, Items.combat_power_name, Items.equip_power_name,'
local argsI = {
where = 'Items.categories HOLDS "Скакун" AND Items.name = "' .. frame.args[1] .. '"',
orderBy = 'Items._pageName',
}
local result = cargo.query( tablesI, fieldsI, argsI )
local r = result[1]
local function queryPower(power_type, power_name)
local tables = 'Powers'
local fields = 'name, type, power_use, item_ui_equip_power, hit_points, power, accuracy, combat_advantage, critical_strike, critical_severity, critical_avoidance, forte, stamina_regen, deflect, awareness, movement_speed, defense, stat_universal'
local args_power = {
where = 'type = "' .. power_type .. '" AND name = "' .. power_name .. '"'
}
return cargo.query(tables, fields, args_power)[1]
end
-- Боевое умение
local r_combat_power_name = queryPower("боевое умение", r['Items.combat_power_name'])
-- Умение экипировки
local r_equip_power = queryPower("умение экипировки", r['Items.equip_power_name'])
local formatted_wikitext = {}
for _, attrib in ipairs(attributes) do
if r_equip_power[attrib.fields_cargo] ~= nil then
table.insert(formatted_wikitext, '+' .. commaValue(r_equip_power[attrib.fields_cargo]) .. ' [[' .. attrib.name[1] .. '|<span class="slate">'.. attrib.name[1] .. '</span>]]')
end
end
local text = '<b>Умение экипировки:</b> [[' .. r['Items.equip_power_name'] .. ']]<dl><dd>'.. (#formatted_wikitext == 0 and (r_equip_power['power_use'] ~= '' and r_equip_power['power_use'] or r_equip_power['item_ui_equip_power']) or table.concat(formatted_wikitext, '<br>')) .. '</dd></dl><b>Боевое умение:</b> [[' .. r['Items.combat_power_name'] .. ']]<dl><dd>'.. r_combat_power_name["power_use"] .. '</dd></dl>'
return text .. '<b>Список бонусов знака:</b>' .. frame:expandTemplate{title = 'Список бонусов знака', args = args}
end
function p.mountPowerTable(frame)
local cargo = mw.ext.cargo
local tables = 'Powers'
local fields = 'Powers._pageName, Powers.name, Powers.icon, Powers.item_level, Powers.type, Powers.power_use, item_ui_equip_power, hit_points, power, accuracy, combat_advantage, critical_strike, critical_severity, critical_avoidance, forte, stamina_regen, deflect, awareness, movement_speed, defense, stat_universal'
local args = {
where = 'Powers.type = "' .. frame.args[1] .. '"',
orderBy = 'Powers.item_level, Powers._pageName',
}
local result = cargo.query( tables, fields, args )
local tbl = mw.html.create('table')
tbl:addClass('wikitable sortable jquery-tablesorter')
tbl:tag("th"):wikitext("Умение"):done()
tbl:tag("th"):wikitext("Уровень предмета"):done()
tbl:tag("th"):wikitext("Эффект"):done()
tbl:tag("th"):wikitext("Доступно на<br>следующих скакунах"):done()
tbl:done()
for _, power in ipairs(result) do
local item_stats = {}
local item_ui_equip_power_value = {
{ name = 'На себе', value = power.item_ui_equip_power },
}
for _, attrib in ipairs(attributes) do
if power[attrib.fields_cargo] ~= nil then
table.insert(item_stats, attrib.name[1])
end
end
tr = tbl:tag("tr"):attr("data-stats", table.concat(item_stats, ", "))
tr:tag("td"):wikitext('[[File:' .. power["Powers.icon"] .. '|32px|link=' .. power["Powers._pageName"] ..']] [[' .. power["Powers._pageName"] .. ']]'):done()
tr:tag("td"):wikitext(power["Powers.item_level"]):done()
if mw.ustring.lower(frame.args[1]) == 'боевое умение' then
tr:tag("td"):wikitext(power["Powers.power_use"]):done()
elseif mw.ustring.lower(frame.args[1]) == 'умение экипировки' then
local formatted_wikitext = {}
for _, attrib in ipairs(attributes) do
if power[attrib.fields_cargo] ~= nil then
table.insert(formatted_wikitext, '+' .. commaValue(power[attrib.fields_cargo]) .. ' [[' .. attrib.name[1] .. '|<span class="slate">'.. attrib.name[1] .. '</span>]]')
end
end
for _, stat in ipairs(item_ui_equip_power_value) do
if stat.value then
table.insert(formatted_wikitext, '<span class="green">'.. stat.name .. ': </span>' .. commaValue(stat.value))
end
end
tr:tag("td"):wikitext(table.concat(formatted_wikitext, '<br>')):done()
end
local tables_items = 'Items'
local fields_items = 'Items._pageName, Items.quality, Items.combat_power_name, Items.equip_power_name'
local args_items = {
where = 'Items.equip_power_name = "' .. power["Powers.name"] .. '" OR Items.combat_power_name = "' .. power["Powers.name"] .. '"',
orderBy = 'Items.name, Items.quality',
}
local result_items = cargo.query( tables_items, fields_items, args_items )
local mounts = {}
for _, item in ipairs(result_items) do
table.insert(mounts, itemIcon.Main({args={item["Items._pageName"],""}}))
end
if #result_items > 4 then
tr:tag("td"):tag("div"):attr('style', 'height: 150px; overflow-y: scroll;'):wikitext(table.concat(mounts, "<br>")):done()
else
tr:tag("td"):wikitext(table.concat(mounts, "<br>")):done()
end
end
return tbl
end
return p