Module:Sandbox/User:Teamtoto/LuaModule: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
(11 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
-- argument in template call has to be named so the equal sign doesn't | -- argument in template call has to be named so the equal sign doesn't | ||
-- break input | -- break input | ||
local code = frame.args["code"] | |||
local title = frame.args["title"] | |||
local author = frame.args["author"] | |||
if frame.args["code"]~= nil and frame.args["code"] ~= '' then | if frame.args["code"]~= nil and frame.args["code"] ~= '' then | ||
return p.a(mw.text.trim(frame:preprocess(frame.args["code"]))) | return p.a(mw.text.trim(frame:preprocess(frame.args["code"])), title, author) | ||
else | else | ||
error "There was no code in your input!" | error "There was no code in your input!" | ||
Line 18: | Line 21: | ||
end | end | ||
function p.a(code) | function p.a(code, title, author) | ||
local frame = mw.getCurrentFrame() | local frame = mw.getCurrentFrame() | ||
local decoded = mw.text.jsonDecode(zlib.gzdecode(zlib.base64_decode(code))) | local decoded = mw.text.jsonDecode(zlib.gzdecode(zlib.base64_decode(code))) | ||
local version = decoded["gameversion"] | local version = decoded["gameversion"] | ||
local genotype = decoded["modules"][1]["data"]["Genotype"] | local genotype = decoded["modules"][1]["data"]["Genotype"] | ||
local classCalled = "Calling | local classCalled = "Calling" | ||
local extCalled = "Mutations | local extCalled = "Mutations" | ||
local subtype = decoded["modules"][2]["data"]["Subtype"] | local subtype = decoded["modules"][2]["data"]["Subtype"] | ||
local baseStat = 10 | local baseStat = 10 | ||
local stats = | local stats = { | ||
["Strength"] = 0, | |||
["Intelligence"] = 0, | |||
["Toughness"] = 0, | |||
["Willpower"] = 0, | |||
["Ego"] = 0, | |||
["Agility"] = 0} | |||
local bonusInt = {} | local bonusInt = {} | ||
local exts = {} | local exts = {} | ||
Line 41: | Line 51: | ||
if genotype == "True Kin" then | if genotype == "True Kin" then | ||
-- if true kin, stats are [3] and cybernetics are [4] | -- if true kin, stats are [3] and cybernetics are [4] | ||
classCalled= "Caste | classCalled= "Caste" | ||
extCalled = "Cybernetics | extCalled = "Cybernetics" | ||
statPos = 3 | |||
extPos = 4 | |||
extNoun = 'Cybernetic' | |||
baseStat = 12 | |||
else | else | ||
-- if mutant, stats are [4] and mutations are [3] :crungled: | -- if mutant, stats are [4] and mutations are [3] :crungled: | ||
statPos=4 | |||
exts[ | extPos=3 | ||
extNoun='Mutation' | |||
end | |||
stats = decoded["modules"][statPos]["data"]["PointsPurchased"] | |||
-- No cybernetics means extra toughness | |||
if extPos == 4 and #decoded["modules"][4]["data"]["selections"] == 1 then | |||
exts[1] = "No Cybernetic" | |||
else | |||
for i, v in ipairs(decoded["modules"][extPos]["data"]["selections"]) do | |||
exts[i] = v[extNoun] | |||
if v["variantName"] ~= "" and v["variantName"] ~= nil then | |||
exts[i] = exts[i] .. " (" .. v["variantName"] .. ")" | |||
end | |||
if data.isDefect(v[extNoun]) then | |||
exts[i] = exts[i] .. " (<span style=\"color:#a64a2e\">D</span>)" | |||
end | |||
if v["Count"] > 1 then | |||
exts[i] = exts[i] .. " <small>x</small>" .. v["Count"] | |||
end | |||
end | end | ||
end | end | ||
-- add 10 to stats chosen... | |||
-- add 10 (or 12) to stats chosen... | |||
for statName, statValue in pairs(stats) do | for statName, statValue in pairs(stats) do | ||
stats[statName] = stats[statName] + baseStat | stats[statName] = stats[statName] + baseStat | ||
end | end | ||
-- Add stat bonuses from subtype and mutations/cybernetics. | --[[Add stat bonuses from subtype and mutations/cybernetics. | ||
disabled as cryptogull/data already sums these up | |||
local bonusInt= data.getTotalStatBonuses(subtype, exts) | local bonusInt= data.getTotalStatBonuses(subtype, exts) | ||
for name, num in pairs(bonusInt) do | for name, num in pairs(bonusInt) do | ||
Line 71: | Line 99: | ||
bonus[name] = "-" .. num | bonus[name] = "-" .. num | ||
end | end | ||
end | end]] | ||
local skills = data.getSkills(subtype) | local skills = data.getSkills(subtype) | ||
local extra = data.getExtra(subtype) | local extra = data.getExtra(subtype) | ||
return p.MakeUpSheet(code, genotype, subtype, | return p.MakeUpSheet(code, genotype, subtype, classCalled, extCalled, | ||
stats, bonus, exts, skills, extra, title, author, frame) | |||
end | end | ||
function p.MakeUpSheet(codeIn, genoIn, subtype, classcalledIn, extnameIn, attributes, bonus, exts, skills, extra, frame) | function p.MakeUpSheet(codeIn, genoIn, subtype, classcalledIn, extnameIn, | ||
attributes, bonus, exts, skills, extra, title, author, frame) | |||
return frame:expandTemplate { | return frame:expandTemplate { | ||
title = ' | title = 'CryptoResultTest', | ||
args = { | args = { | ||
code = codeIn, | code = codeIn, | ||
Line 93: | Line 123: | ||
extname = extnameIn, | extname = extnameIn, | ||
skills= skills, | skills= skills, | ||
exts = utilTable.concat(exts, " | exts = utilTable.concat(exts, "</br>"), | ||
extra=extra | extra=extra, | ||
buildname=title, | |||
author=author | |||
} | } | ||
} | } | ||
Line 100: | Line 132: | ||
function p.test() | function p.test() | ||
str = " | str = "H4sIAAAAAAAACs1VW2vbMBR+L/Q/CLNH16RZNtZCHtJs7NaOLE67weiDbB9sUVky0lFHGvLfJ9lp4kuztIOFBIKj853Ll3O+Iy+OjwjxUprDPSjNpPDOidcPekG/NwjO3nl+iUeG8aTmcGodeissl4nhoK35lzsTsqgea2g2L8AF/ZxeBuOMKhojqAuXUQffTeK+H0FItG5XZYBPRlpDHvH5yTi0AYVPbqraww0zn4wNR6NgKMCgotwnExNxFn+F+UzegRgKw3nFsSSTUKSWxpqdNb3Cl1J7b5N06G2K2JyP/i7tlUGKkJBPJqei4dXp5SO2rH4s/X/uZWiiA21lg9nuTq7cXdIwziSnal8tLOdmc+sDbGKL2+425oXN+KZu0cAhLnNslrb6LOoHshLwqsnXQiONOBCn8BzqNUrfsTQCrWO/DdxQxWgJ9drQfQV9s9ePK+HV4aX/XGYXQO+20jndTqfDtEVnKjUqkzdZbQ63e1LjCFGxyCAcohzb5HbrcSKZQD0xKs6ohqRZ0609KhApZhZ42xiQN0oZZzi3wOsmMJMmzQRo3dGY91kgcM5SEDF00R+M80L+BtWFPqTSGTe2uh49WoQFlCI6OWvap5BTJphIHc3G2kX2747cMg4Ge1LO2GiUOXuANX6ACtpGcreSRLWnjkbdXAA+YbUKSMo5d9yVFPauCJ+M+p/DyaTUECJVaNVyKePyPjvEAf2F6DPe4q04V+yLLAr6spe5e9weHy3/ADv8xUOwCgAA" | ||
return p.a(str) | return p.a(str, "DijTItle", "Dij") | ||
end | end | ||
return p | return p |
Latest revision as of 21:36, 6 August 2023
Documentation for this module may be created at Module:Sandbox/User:Teamtoto/LuaModule/doc
local zlib = mw.ext.zlib
local utilTable = require('Module:Table Utility')
local data = require('Module:CryptogullJr/Data')
local p = {}
function p.main(frame)
local frame = mw.getCurrentFrame()
if frame.args ~= nil and frame.args ~= '' then
-- argument in template call has to be named so the equal sign doesn't
-- break input
local code = frame.args["code"]
local title = frame.args["title"]
local author = frame.args["author"]
if frame.args["code"]~= nil and frame.args["code"] ~= '' then
return p.a(mw.text.trim(frame:preprocess(frame.args["code"])), title, author)
else
error "There was no code in your input!"
end
end
end
function p.a(code, title, author)
local frame = mw.getCurrentFrame()
local decoded = mw.text.jsonDecode(zlib.gzdecode(zlib.base64_decode(code)))
local version = decoded["gameversion"]
local genotype = decoded["modules"][1]["data"]["Genotype"]
local classCalled = "Calling"
local extCalled = "Mutations"
local subtype = decoded["modules"][2]["data"]["Subtype"]
local baseStat = 10
local stats = {
["Strength"] = 0,
["Intelligence"] = 0,
["Toughness"] = 0,
["Willpower"] = 0,
["Ego"] = 0,
["Agility"] = 0}
local bonusInt = {}
local exts = {}
local bonus = {
["Strength"] = "",
["Intelligence"] = "",
["Toughness"] = "",
["Willpower"] = "",
["Ego"] = "",
["Agility"] = ""
}
if genotype == "True Kin" then
-- if true kin, stats are [3] and cybernetics are [4]
classCalled= "Caste"
extCalled = "Cybernetics"
statPos = 3
extPos = 4
extNoun = 'Cybernetic'
baseStat = 12
else
-- if mutant, stats are [4] and mutations are [3] :crungled:
statPos=4
extPos=3
extNoun='Mutation'
end
stats = decoded["modules"][statPos]["data"]["PointsPurchased"]
-- No cybernetics means extra toughness
if extPos == 4 and #decoded["modules"][4]["data"]["selections"] == 1 then
exts[1] = "No Cybernetic"
else
for i, v in ipairs(decoded["modules"][extPos]["data"]["selections"]) do
exts[i] = v[extNoun]
if v["variantName"] ~= "" and v["variantName"] ~= nil then
exts[i] = exts[i] .. " (" .. v["variantName"] .. ")"
end
if data.isDefect(v[extNoun]) then
exts[i] = exts[i] .. " (<span style=\"color:#a64a2e\">D</span>)"
end
if v["Count"] > 1 then
exts[i] = exts[i] .. " <small>x</small>" .. v["Count"]
end
end
end
-- add 10 (or 12) to stats chosen...
for statName, statValue in pairs(stats) do
stats[statName] = stats[statName] + baseStat
end
--[[Add stat bonuses from subtype and mutations/cybernetics.
disabled as cryptogull/data already sums these up
local bonusInt= data.getTotalStatBonuses(subtype, exts)
for name, num in pairs(bonusInt) do
if num > 0 then
bonus[name] = "+" .. num
elseif num < 0 then
bonus[name] = "-" .. num
end
end]]
local skills = data.getSkills(subtype)
local extra = data.getExtra(subtype)
return p.MakeUpSheet(code, genotype, subtype, classCalled, extCalled,
stats, bonus, exts, skills, extra, title, author, frame)
end
function p.MakeUpSheet(codeIn, genoIn, subtype, classcalledIn, extnameIn,
attributes, bonus, exts, skills, extra, title, author, frame)
return frame:expandTemplate {
title = 'CryptoResultTest',
args = {
code = codeIn,
genotype = genoIn,
classcalled = classcalledIn,
class = subtype,
strength = tostring(attributes["Strength"]) .. bonus["Strength"],
agility = tostring(attributes["Agility"]) .. bonus["Agility"],
toughness = attributes["Toughness"] .. bonus["Toughness"],
intelligence = attributes["Intelligence"] .. bonus["Intelligence"],
willpower = attributes["Willpower"] .. bonus["Willpower"],
ego = attributes["Ego"] .. bonus["Ego"],
extname = extnameIn,
skills= skills,
exts = utilTable.concat(exts, "</br>"),
extra=extra,
buildname=title,
author=author
}
}
end
function p.test()
str = "H4sIAAAAAAAACs1VW2vbMBR+L/Q/CLNH16RZNtZCHtJs7NaOLE67weiDbB9sUVky0lFHGvLfJ9lp4kuztIOFBIKj853Ll3O+Iy+OjwjxUprDPSjNpPDOidcPekG/NwjO3nl+iUeG8aTmcGodeissl4nhoK35lzsTsqgea2g2L8AF/ZxeBuOMKhojqAuXUQffTeK+H0FItG5XZYBPRlpDHvH5yTi0AYVPbqraww0zn4wNR6NgKMCgotwnExNxFn+F+UzegRgKw3nFsSSTUKSWxpqdNb3Cl1J7b5N06G2K2JyP/i7tlUGKkJBPJqei4dXp5SO2rH4s/X/uZWiiA21lg9nuTq7cXdIwziSnal8tLOdmc+sDbGKL2+425oXN+KZu0cAhLnNslrb6LOoHshLwqsnXQiONOBCn8BzqNUrfsTQCrWO/DdxQxWgJ9drQfQV9s9ePK+HV4aX/XGYXQO+20jndTqfDtEVnKjUqkzdZbQ63e1LjCFGxyCAcohzb5HbrcSKZQD0xKs6ohqRZ0609KhApZhZ42xiQN0oZZzi3wOsmMJMmzQRo3dGY91kgcM5SEDF00R+M80L+BtWFPqTSGTe2uh49WoQFlCI6OWvap5BTJphIHc3G2kX2747cMg4Ge1LO2GiUOXuANX6ACtpGcreSRLWnjkbdXAA+YbUKSMo5d9yVFPauCJ+M+p/DyaTUECJVaNVyKePyPjvEAf2F6DPe4q04V+yLLAr6spe5e9weHy3/ADv8xUOwCgAA"
return p.a(str, "DijTItle", "Dij")
end
return p