Module:Sandbox/User:Teamtoto/LuaModule
Jump to navigation
Jump to search
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)
return decoded
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