Module:Sandbox/One Bar: Difference between revisionsGive feedback
disabled items list |
m Mgpt moved page Module:One Bar/Sandbox to Module:Sandbox/One Bar: Deadlock:User pages |
||
| (47 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
local p = {}; | local p = {}; | ||
local | local item_data = mw.loadJsonData("Data:ItemData.json") | ||
local heroes_data = mw.loadJsonData("Data:HeroData.json") | |||
local ability_data = mw.loadJsonData("Data:AbilityCards.json") | |||
local function | local function format_spirit_scale(frame, key, base, scale) | ||
local | local spirit_scale = frame:expandTemplate{ title = "ss", args = {(scale or 0)}} | ||
local | return key ..": ".. (base or 0) .. "+" .. spirit_scale .. "\n" | ||
local | end | ||
for | |||
if ( | local function get_stats_spirit_scaling(frame, hero) | ||
table.insert( | local spirit_scaling = hero["SpiritScaling"] | ||
stats_text = "" | |||
if (spirit_scaling ~= nil) then | |||
for k, v in pairs(spirit_scaling) do | |||
stats_text = stats_text .. format_spirit_scale(frame, k, hero[k], v) | |||
end | |||
else | |||
stats_text = "-" | |||
end | |||
return stats_text | |||
end | |||
local function get_abilities_spirit_scaling(frame, hero_key, hero) | |||
local ret = {} | |||
for i=1,4 do | |||
local ability = ability_data[hero_key][i] | |||
local ability_text = "" | |||
if (ability ~= nil) then | |||
ret[i*2-1] = ability["Name"] | |||
if (ability["Info1"] ~= nil and ability["Info1"]["Main"] ~= nil | |||
and ability["Info1"]["Main"]["Props"] ~= nil) then | |||
for _, prop in ipairs(ability["Info1"]["Main"]["Props"]) do | |||
if (prop["Scale"] ~= nil and prop["Scale"]["Type"] == "spirit" and prop["Scale"]["Value"] ~= 0) then | |||
ability_text = ability_text .. format_spirit_scale(frame, prop["Name"], prop["Value"], prop["Scale"]["Value"]) | |||
end | |||
end | |||
end | |||
else | |||
ret[i*2-1] = "-" | |||
end | |||
if (ability_text == "") then | |||
ability_text = "-" | |||
end | |||
ret[i*2] = ability_text | |||
end | |||
return ret | |||
end | |||
-- Outputs a wikitable of heroes and their stats' and abilities' spirit scaling | |||
-- @function p.write_spirit_scaling_table | |||
-- @param {} | |||
-- @return {string} | |||
p.write_spirit_scaling_table = function(frame) | |||
local filtered_heroes = {} | |||
local hero_keys = {} | |||
for hero_key, hero in pairs(heroes_data) do | |||
if (not hero["IsDisabled"] and not hero["InDevelopment"]) then | |||
local hero_data = {["hero"] = hero; ["hero_key"] = hero_key} | |||
table.insert(filtered_heroes, hero_data) | |||
end | |||
end | |||
table.sort(filtered_heroes, function(a, b) return a.hero.Name:lower() < b.hero.Name:lower() end) | |||
local create_table = mw.html.create("table"):addClass("wikitable sortable"):done() | |||
local header = mw.html.create("tr") | |||
header | |||
:tag("th"):wikitext("Hero"):done() | |||
:tag("th"):attr("colspan", 2):wikitext("First Skill"):done() | |||
:tag("th"):attr("colspan", 2):wikitext("Second Skill"):done() | |||
:tag("th"):attr("colspan", 2):wikitext("Third Skill"):done() | |||
:tag("th"):attr("colspan", 2):wikitext("Ultimate"):done() | |||
create_table:node(header) | |||
for _, hero_data in ipairs(filtered_heroes) do | |||
local hero = hero_data.hero | |||
local hero_key = hero_data.hero_key | |||
local hero_row = mw.html.create("tr") | |||
local hero_icon = frame:expandTemplate{ title = "HeroIcon", args = {hero["Name"]}} | |||
hero_row:tag('td'):wikitext(hero_icon):done() | |||
local abilities = get_abilities_spirit_scaling(frame, hero_key, hero) | |||
for i=1,8 do | |||
hero_row:tag('td'):wikitext(abilities[i]):done() | |||
end | end | ||
create_table:node(hero_row) | |||
end | end | ||
return tostring(create_table) | |||
end | |||
for | |||
if ( | local function get_disabled_items_array() | ||
local disabledItems = {} | |||
for k, v in pairs(item_data) do | |||
if (v["IsDisabled"] == true and v["Name"] ~= nil) then | |||
disabledItems[k] = v | |||
end | end | ||
end | end | ||
return | return disabledItems | ||
end | end | ||
| Line 35: | Line 111: | ||
local createTableHeader = mw.html.create('tr') | local createTableHeader = mw.html.create('tr') | ||
createTableHeader | createTableHeader | ||
:tag('th'):wikitext('Variable'):done() | |||
:tag('th'):wikitext('Name'):done() | :tag('th'):wikitext('Name'):done() | ||
:tag('th'):wikitext('Category'):done() | :tag('th'):wikitext('Category'):done() | ||
| Line 42: | Line 119: | ||
-- query all the filtered items. itemName is the item table. | -- query all the filtered items. itemName is the item table. | ||
for internalName, itemName in | for internalName, itemName in pairs(filteredData) do | ||
local display = | local display = itemName["Name"] | ||
listofItems = listofItems .. itemName["Name"] .. "<br/>" | listofItems = listofItems .. itemName["Name"] .. "<br/>" | ||
local | local categoryDisplay = itemName["Slot"] | ||
local description = itemName["Description"] | |||
local tableData = mw.html.create('tr') | local tableData = mw.html.create('tr') | ||
tableData | tableData | ||
:tag('td'):wikitext(internalName):done() | |||
:tag('td'):wikitext(display):done() | :tag('td'):wikitext(display):done() | ||
:tag('td'):wikitext(categoryDisplay):done() | :tag('td'):wikitext(categoryDisplay):done() | ||