Module:CryptogullJrOld: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
Syntaxaire (talk | contribs) (autoformat code) |
||
Line 2: | Line 2: | ||
function p.Main(frame) | function p.Main(frame) | ||
local buildcode = string.lower(frame.args[1]) | |||
local genotype | |||
local subtype | |||
local classcalled | |||
local extname | |||
local attributes = {} | |||
local bonus = {} | |||
local exts = {} | |||
if (string.len(buildcode) >= 8) then | |||
--[Check Genotype Code, and then subtype code] | |||
local genotypeC = string.match(buildcode, '%w') | |||
local subtypeC = string.sub(buildcode, 2, 2) | |||
if (genotypeC == 'a') then | |||
genotype = "True Kin" | |||
classcalled = "Caste: " | |||
extname = "Implants: " | |||
subtype = p.TrueKinSubtype(subtypeC) | |||
elseif (genotypeC == 'b') then | |||
genotype = "Mutated Human" | |||
classcalled = "Calling: " | |||
extname = "Mutations: " | |||
subtype = p.MutantSubtype(subtypeC) | |||
else | |||
error("The genotype code " .. genotypeC .. " does not exist!", 0) | |||
end | |||
--[Check if subtype worked] | |||
if (subtype == nil) then | |||
error("Couldn't find subtype " .. subtypeC, 0) | |||
else | |||
--[get attributes and put it in a table] | |||
local attributesC = string.sub(buildcode, 3, 8) | |||
local i = 1 | |||
for char in string.gmatch(attributesC, "%w") do | |||
attributes[i] = tonumber(string.byte(char)) - 91 | |||
i = i + 1 | |||
end | |||
--[Mutations/Implants hooray] | |||
--if >8 chars, and have an even set of chars | |||
if (buildcode:len() >= 10 and buildcode:len() % 2 == 0) then | |||
local i = 1 | |||
local extstring = buildcode:sub(9) | |||
for chars in string.gmatch(extstring, "%w%w") do | |||
exts[i] = p.getexts(chars, subtypeC) | |||
i = i + 1 | |||
end | |||
end | |||
--calculate bonus | |||
bonus = p.getbonus(subtype, exts) | |||
--recalculate attributes after stat bonuses | |||
attributes = p.fixattributes(bonus, attributes) | |||
--make the dang sheet | |||
output = p.MakeUpSheet(buildcode, genotype, subtype, classcalled, extname, attributes, bonus, exts, frame) | |||
return output | |||
end | end | ||
else | |||
error("This build code is too short(<8 chars)!", 0) | |||
end | end | ||
end | |||
end | |||
function p.TrueKinSubtype(code) | function p.TrueKinSubtype(code) | ||
--[1 NAME, stats (2 STR, 3 AGI, 4 TUF, 5 INT, 6 WIL, 7 EGO),]-- | --[1 NAME, stats (2 STR, 3 AGI, 4 TUF, 5 INT, 6 WIL, 7 EGO),]-- | ||
--[8 Skills, Resist(9 ACID, 10 ELEC, 11 COLD, 12 HEAT, 13 BLEED), 14 bonusstart]-- | --[8 Skills, Resist(9 ACID, 10 ELEC, 11 COLD, 12 HEAT, 13 BLEED), 14 bonusstart]-- | ||
local caste= { | local caste = { | ||
--[The Toxic Arboreta of Ekuemekiyye, the Holy City] | |||
['a'] = { "Horticulturist", 0, 0, 0, 3, 0, 0, "Harvestry, Axe Proficiency, Steady Hands, Draw a Bead, Wilderness Lore: Jungles", 0, 0, 0, 0, 2, "Start with a bio-scanning bracelet" }, | |||
['b'] = { "Priest of All Suns", 0, 0, 0, 0, 0, 3, "Cudgel Proficiency, Heal, Snake Oiler, Intimidate, Wilderness Lore: Jungles", 0, 0, 0, 0, 2, "Start with a smiling sun mask" }, | |||
['c'] = { "Priest of All Moons", 0, 0, 2, 0, 2, 0, "Axe Proficiency, Butchery, Lionheart, Poison Tolerance, Wilderness Lore: Jungles", 0, 0, 0, 0, 2, "Start with a frowning moon mask" }, | |||
['d'] = { "Syzygyrior", 0, 3, 0, 0, 0, 0, "Offhand Strikes, Ambidexterity, Wayfaring: Jungles", 0, 0, 0, 0, 0, "" }, | |||
--[he Ice-Sheathed Arcology of Ibul] | |||
['e'] = { "Artifex", 0, 0, 0, 3, 0, 0, "Repair, Disassemble,Deploy Turret, Tinker I, Tinker II", 0, 0, 15, 0, 0, "" }, | |||
['f'] = { "Consul", 0, 0, 0, 0, 0, 3, "Inspiring Presence, Proselytize", 0, 0, 15, 0, 0, "" }, | |||
['g'] = { "Praetorian", 2, 0, 1, 0, 1, 0, "Long Blade Proficiency, Shield Slam, Steady Hands, Draw a Bead", 0, 0, 15, 0, 0, "" }, | |||
['h'] = { "Eunuch", 0, 2, 0, 2, 0, 0, "Hobble, Weak Spotter, Spry, Hurdle", 0, 0, 15, 0, 0, "" }, | |||
--[The Crustal Mortars of Yawningmoon] | |||
['i'] = { "Child of the Hearth", 3, 0, 0, 0, 0, 0, "Slam, Calloused, Strapping Shoulders", 0, 0, 0, 15, 0, "" }, | |||
['j'] = { "Child of the Wheel", 1, 2, 0, 0, 0, 1, "Short Blades Proficiency, Cleave, Offhand Strikes, Iron Mind", 0, 0, 0, 15, 0, "" }, | |||
['k'] = { "Child of the Deep", 0, 0, 3, 0, 0, 0, "Tank, Strapping Shoulders, Shake It Off, Wilderness Lore: Mountains, Wilderness Lore: Canyons", 0, 0, 0, 15, 0, "" }, | |||
['l'] = { "Fuming God-Child", 0, 0, 0, 0, 4, 0, "Fasting Way, Lionheart, Poison Tolerance, Intimidate", 0, 0, 0, 15, 0, "" } | |||
} | } | ||
return caste[code] | return caste[code] | ||
end | end | ||
function p.MutantSubtype(code) | function p.MutantSubtype(code) | ||
--[NAME, stats (STR, AGI, TUF, INT, WIL, EGO),]-- | --[NAME, stats (STR, AGI, TUF, INT, WIL, EGO),]-- | ||
--[Skills, Resist(ACID, ELEC, COLD, HEAT, BLEED), bonusstart]-- | --[Skills, Resist(ACID, ELEC, COLD, HEAT, BLEED), bonusstart]-- | ||
local calling = { | local calling = { | ||
['a'] = { "Apostle", 0, 0, 0, 0, 0, 2, "Intimidate, Proselytize, Tactful", 0, 0, 0, 0, 0, "" }, | |||
['b'] = { "Arconaut", 0, 2, 0, 0, 0, 0, "Short Blades Proficiency, Scavenger, Gadget Inspector, Spry", 0, 0, 0, 0, 0, "Start with random junk and artifacts" }, | |||
['c'] = { "Greybeard", -1, 0, 0, 0, 3, 0, "Cudgel Proficiency, Berate, Calloused", 0, 0, 0, 0, 0, "Start with +100 bear reputation" }, | |||
['d'] = { "Gunslinger", 0, 2, 0, 0, 0, 0, "Weak Spotter", 0, 0, 0, 0, 0, "Start with +200 reputation with mysterious strangers" }, | |||
['e'] = { "Marauder", 2, 0, 0, 0, 0, 0, "Dismember, Charge, Butchery", 0, 0, 0, 0, 0, "" }, | |||
['f'] = { "Pilgrim", 0, 0, 0, 0, 2, 0, "Meditate, Fasting Way, Iron Mind, Mind's Compass", 0, 0, 0, 0, 0, "" }, | |||
['g'] = { "Nomad", 0, 0, 2, 0, 0, 0, "Mind's Compass, Wilderness Lore: Salt Pans, Harvestry, Weathered", 0, 0, 15, 15, 0, "Starts with +200 Issachari reputation and a recycling suit" }, | |||
['h'] = { "Scholar", 0, 0, 0, 2, 0, 0, "Gadget Inspector, Heal, Harvestry, Hurdle, Tactful", 0, 0, 0, 0, 0, "" }, | |||
['i'] = { "Tinker", 0, 0, 0, 2, 0, 0, "Gadget Inspector, Lay Mine, Disassemble, Repair, Tinker I", 0, 0, 0, 0, 0, "Begins with a number of random artifacts and scrap and +100 Barathrumites reputation" }, | |||
['j'] = { "Warden", 2, 0, 0, 0, 0, 0, "Long Blades Proficiency, Shield Slam, Steady Hands, Draw a Bead, Pistol Proficiency", 0, 0, 0, 0, 0, "Starts with +300 Warden reputation" }, | |||
['k'] = { "Water Merchant", 0, 0, 0, 0, 0, 2, "Menacing Stare, Snake Oiler", 0, 0, 0, 0, 0, "Starts with trade goods and a merchant's token" }, | |||
['l'] = { "Watervine Farmer", 0, 0, 2, 0, 0, 0, "Cooking and Gathering, Harvestry, Axe Proficiency, Wilderness Lore: Salt Marshes", 0, 0, 0, 0, 0, "Starts with +100 reputation with the villagers of Joppa and a farmer's token" } | |||
} | } | ||
return calling[code] | return calling[code] | ||
end | end | ||
function p.getexts(code,subtypeC) | function p.getexts(code, subtypeC) | ||
local muts = { | |||
['aa'] = { "Chimera", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ab'] = { "Esper", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['uu'] = { "Unstable Genome", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u2'] = { "Unstable Genome(2)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u3'] = { "Unstable Genome(3)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u4'] = { "Unstable Genome(4)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u5'] = { "Unstable Genome(5)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u6'] = { "Unstable Genome(6)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u7'] = { "Unstable Genome(7)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u8'] = { "Unstable Genome(8)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['u9'] = { "Unstable Genome(9)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ba'] = { "Adrenal Control", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bb'] = { "Burrowing Claws", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bc'] = { "Carapace", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['b6'] = { "Carnivorous", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bd'] = { "Corrosive Gas Generation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['be'] = { "Double-muscled", 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bf'] = { "Electrical Generation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bg'] = { "Electromagnetic Pulse", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bh'] = { "Flaming Hands", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bi'] = { "Freezing Hands", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bj'] = { "Heightened Hearing", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bk'] = { "Heightened Quickness", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bl'] = { "Horns", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bm'] = { "Metamorphosis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bn'] = { "Multiple Arms", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bo'] = { "Multiple Legs", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bp'] = { "Night Vision", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bq'] = { "Phasing", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['br'] = { "Photosynthetic Skin", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bs'] = { "Quills", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bt'] = { "Regeneration", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bu'] = { "Sleep Gas Generation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bv'] = { "Slime Glands", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bw'] = { "Spinnerets", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bx'] = { "Stinger (Confusing Venom)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['by'] = { "Stinger (Paralyzing Venom)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['bz'] = { "Stinger (Poisoning Venom)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['b1'] = { "Thick Fur", 0, 0, 0, 0, 0, 0, 0, 0, 4, 4 }, | |||
['b2'] = { "Triple-jointed", -1, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['b3'] = { "Two-headed", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['b4'] = { "Two-hearted", 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 }, | |||
['b5'] = { "Wings", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
--[phys defects] | |||
['ca'] = { "Albino", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['cb'] = { "Amphibious", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['cc'] = { "Analgesia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['cd'] = { "Beak", 0, 0, 0, 0, 0, -1, 0, 0, 0, 0 }, | |||
['ce'] = { "Cold-Blooded", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['cf'] = { "Brittle Bones", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['cg'] = { "Electromagnetic Impulse", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ch'] = { "Hemophilia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ci'] = { "Hooks for Feet", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['cj'] = { "Myopia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ck'] = { "Spontaneous Combustion", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
--[mental muts] | |||
['da'] = { "Beguiling", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['db'] = { "Burgeoning", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dc'] = { "Clairvoyance", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dd'] = { "Confusion", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['de'] = { "Cryokinesis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['df'] = { "Domination", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dg'] = { "Disintegration", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dh'] = { "Ego Projection", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['di'] = { "Force Bubble", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dj'] = { "Force Wall", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dk'] = { "Kindle", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dl'] = { "Light Manipulation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dm'] = { "Mass Mind", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dn'] = { "Mental Mirror", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['do'] = { "Precognition", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dp'] = { "Psychometry", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dq'] = { "Pyrokinesis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dr'] = { "Sense Psychic", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ds'] = { "Space-Time Vortex", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dt'] = { "Stunning Force", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['du'] = { "Sunder Mind", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dv'] = { "Syphon Vim", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dw'] = { "Telepathy", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dx'] = { "Teleportation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dy'] = { "Teleport Other", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['dz'] = { "Time Dilation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['d1'] = { "Temporal Fugue", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
--[mental defects] | |||
['ea'] = { "Amnesia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['eb'] = { "Blinking Tic", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ec'] = { "Evil Twin", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ed'] = { "Narcolepsy", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ee'] = { "Pack Rat", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['ef'] = { "Socially Repugnant", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['eg'] = { "Unwelcome Germination", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
--[cybernetics (to be added)] | |||
['00'] = { "", 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, | |||
['01'] = { "dermal insulation", 0, 0, 0, 0, 0, 0, 6, 6, 6, 6 }, | |||
['04'] = { 'optical bioscanner', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['05'] = { 'optical technoscanner', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['06'] = { 'night vision', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['07'] = { 'hyper-elastic ankle tendons', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['08'] = { 'parabolic muscular subroutine', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['09'] = { 'translucent skin', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['11'] = { 'stabilizer arm locks', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['12'] = { 'rapid release finger flexors', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['13'] = { 'carbide hand bones', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['14'] = { 'pentaceps', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
['15'] = { 'inflatable axons', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |||
-- subtypes A-D, E-H, I-L | |||
['16'] = { 'nocturnal apex', 'cherubic visage', 'air current microsensor', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } | |||
} | |||
if code ~= nil and code == '16' then | |||
if subtypeC < 'e' then | |||
return { 'nocturnal apex', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } | |||
elseif subtypeC < 'i' then | |||
return { 'cherubic visage', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } | |||
else | |||
return { 'air current microsensor', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } | |||
end | |||
else | |||
return muts[code] | |||
end | end | ||
end | end | ||
function p.getImplants(code,subtypeC) | function p.getImplants(code, subtypeC) | ||
end | end | ||
function p.getbonus(subtype, exts) | function p.getbonus(subtype, exts) | ||
--STR, AGI, TOUGH,INT, WILL, EGO | --STR, AGI, TOUGH,INT, WILL, EGO | ||
local extbonuses = {0,0,0,0,0,0,0,0,0,0,0} | local extbonuses = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } | ||
for x,y in ipairs(exts) do | for x, y in ipairs(exts) do | ||
extbonuses[1] = extbonuses[1] + y[2] | |||
extbonuses[2] = extbonuses[2] + y[3] | |||
extbonuses[3] = extbonuses[3] + y[4] | |||
extbonuses[4] = extbonuses[4] + y[5] | |||
extbonuses[5] = extbonuses[5] + y[6] | |||
extbonuses[6] = extbonuses[6] + y[7] | |||
extbonuses[7] = extbonuses[7] + y[8] | |||
extbonuses[8] = extbonuses[8] + y[9] | |||
extbonuses[9] = extbonuses[9] + y[10] | |||
extbonuses[10] = extbonuses[10] + y[11] | |||
end | end | ||
local bonusints = {} | local bonusints = {} | ||
bonusints[1] = subtype[2] + extbonuses[1] | bonusints[1] = subtype[2] + extbonuses[1] | ||
bonusints[2] = subtype[3] + extbonuses[2] | bonusints[2] = subtype[3] + extbonuses[2] | ||
bonusints[3] = subtype[4] + extbonuses[3] | bonusints[3] = subtype[4] + extbonuses[3] | ||
bonusints[4] = subtype[5] + extbonuses[4] | bonusints[4] = subtype[5] + extbonuses[4] | ||
bonusints[5] = subtype[6] + extbonuses[5] | bonusints[5] = subtype[6] + extbonuses[5] | ||
bonusints[6] = subtype[7] + extbonuses[6] | bonusints[6] = subtype[7] + extbonuses[6] | ||
local i = 0 | local i = 0 | ||
local bonusT = {} | local bonusT = {} | ||
for x,y in ipairs(bonusints) do | for x, y in ipairs(bonusints) do | ||
local symbol = " " | |||
if y < 0 then | |||
symbol = "" | |||
elseif y > 0 then | |||
symbol = "+" | |||
end | |||
if symbol ~= nil and symbol ~= " " then | |||
bonusT[x] = symbol .. y | |||
else | |||
bonusT[x] = " " | |||
end | end | ||
end | end | ||
return bonusT | return bonusT | ||
end | end | ||
function p.fixattributes(bonus, attr) | function p.fixattributes(bonus, attr) | ||
local newattr = {} | local newattr = {} | ||
for x,y in ipairs(bonus) do | for x, y in ipairs(bonus) do | ||
if y ~= " " then | |||
newattr[x] = tonumber(attr[x]) - tonumber(y) | |||
else | |||
newattr[x] = tonumber(attr[x]) | |||
end | |||
end | end | ||
return newattr | return newattr | ||
end | end | ||
function p.MakeUpSheet(codeIn, genoIn, subtype, classcalledIn, extnameIn,attributes, bonus,extsIn,frame) | function p.MakeUpSheet(codeIn, genoIn, subtype, classcalledIn, extnameIn, attributes, bonus, extsIn, frame) | ||
local mutstring = "" | local mutstring = "" | ||
for _,ext in ipairs(extsIn) do | for _, ext in ipairs(extsIn) do | ||
mutstring = mutstring .. ", "..ext[1] | mutstring = mutstring .. ", " .. ext[1] | ||
end | end | ||
return frame:expandTemplate { | |||
title = 'Crypto result', | |||
args = { | |||
code = codeIn:upper(), | |||
genotype = genoIn, | |||
classcalled = classcalledIn, | |||
class = subtype[1], | |||
strength = tostring(attributes[1]) .. bonus[1], | |||
agility = tostring(attributes[2]) .. bonus[2], | |||
toughness = attributes[3] .. bonus[3], | |||
intelligence = attributes[4] .. bonus[4], | |||
willpower = attributes[5] .. bonus[5], | |||
ego = attributes[6] .. bonus[6], | |||
extname = extnameIn, | |||
exts = mutstring:sub(3), | |||
skills = subtype[8], | |||
notes = subtype[14] | |||
} | |||
} | |||
end | end | ||
return p | return p |
Revision as of 01:34, 29 September 2019
Documentation for this module may be created at Module:CryptogullJrOld/doc
local p = {}
function p.Main(frame)
local buildcode = string.lower(frame.args[1])
local genotype
local subtype
local classcalled
local extname
local attributes = {}
local bonus = {}
local exts = {}
if (string.len(buildcode) >= 8) then
--[Check Genotype Code, and then subtype code]
local genotypeC = string.match(buildcode, '%w')
local subtypeC = string.sub(buildcode, 2, 2)
if (genotypeC == 'a') then
genotype = "True Kin"
classcalled = "Caste: "
extname = "Implants: "
subtype = p.TrueKinSubtype(subtypeC)
elseif (genotypeC == 'b') then
genotype = "Mutated Human"
classcalled = "Calling: "
extname = "Mutations: "
subtype = p.MutantSubtype(subtypeC)
else
error("The genotype code " .. genotypeC .. " does not exist!", 0)
end
--[Check if subtype worked]
if (subtype == nil) then
error("Couldn't find subtype " .. subtypeC, 0)
else
--[get attributes and put it in a table]
local attributesC = string.sub(buildcode, 3, 8)
local i = 1
for char in string.gmatch(attributesC, "%w") do
attributes[i] = tonumber(string.byte(char)) - 91
i = i + 1
end
--[Mutations/Implants hooray]
--if >8 chars, and have an even set of chars
if (buildcode:len() >= 10 and buildcode:len() % 2 == 0) then
local i = 1
local extstring = buildcode:sub(9)
for chars in string.gmatch(extstring, "%w%w") do
exts[i] = p.getexts(chars, subtypeC)
i = i + 1
end
end
--calculate bonus
bonus = p.getbonus(subtype, exts)
--recalculate attributes after stat bonuses
attributes = p.fixattributes(bonus, attributes)
--make the dang sheet
output = p.MakeUpSheet(buildcode, genotype, subtype, classcalled, extname, attributes, bonus, exts, frame)
return output
end
else
error("This build code is too short(<8 chars)!", 0)
end
end
function p.TrueKinSubtype(code)
--[1 NAME, stats (2 STR, 3 AGI, 4 TUF, 5 INT, 6 WIL, 7 EGO),]--
--[8 Skills, Resist(9 ACID, 10 ELEC, 11 COLD, 12 HEAT, 13 BLEED), 14 bonusstart]--
local caste = {
--[The Toxic Arboreta of Ekuemekiyye, the Holy City]
['a'] = { "Horticulturist", 0, 0, 0, 3, 0, 0, "Harvestry, Axe Proficiency, Steady Hands, Draw a Bead, Wilderness Lore: Jungles", 0, 0, 0, 0, 2, "Start with a bio-scanning bracelet" },
['b'] = { "Priest of All Suns", 0, 0, 0, 0, 0, 3, "Cudgel Proficiency, Heal, Snake Oiler, Intimidate, Wilderness Lore: Jungles", 0, 0, 0, 0, 2, "Start with a smiling sun mask" },
['c'] = { "Priest of All Moons", 0, 0, 2, 0, 2, 0, "Axe Proficiency, Butchery, Lionheart, Poison Tolerance, Wilderness Lore: Jungles", 0, 0, 0, 0, 2, "Start with a frowning moon mask" },
['d'] = { "Syzygyrior", 0, 3, 0, 0, 0, 0, "Offhand Strikes, Ambidexterity, Wayfaring: Jungles", 0, 0, 0, 0, 0, "" },
--[he Ice-Sheathed Arcology of Ibul]
['e'] = { "Artifex", 0, 0, 0, 3, 0, 0, "Repair, Disassemble,Deploy Turret, Tinker I, Tinker II", 0, 0, 15, 0, 0, "" },
['f'] = { "Consul", 0, 0, 0, 0, 0, 3, "Inspiring Presence, Proselytize", 0, 0, 15, 0, 0, "" },
['g'] = { "Praetorian", 2, 0, 1, 0, 1, 0, "Long Blade Proficiency, Shield Slam, Steady Hands, Draw a Bead", 0, 0, 15, 0, 0, "" },
['h'] = { "Eunuch", 0, 2, 0, 2, 0, 0, "Hobble, Weak Spotter, Spry, Hurdle", 0, 0, 15, 0, 0, "" },
--[The Crustal Mortars of Yawningmoon]
['i'] = { "Child of the Hearth", 3, 0, 0, 0, 0, 0, "Slam, Calloused, Strapping Shoulders", 0, 0, 0, 15, 0, "" },
['j'] = { "Child of the Wheel", 1, 2, 0, 0, 0, 1, "Short Blades Proficiency, Cleave, Offhand Strikes, Iron Mind", 0, 0, 0, 15, 0, "" },
['k'] = { "Child of the Deep", 0, 0, 3, 0, 0, 0, "Tank, Strapping Shoulders, Shake It Off, Wilderness Lore: Mountains, Wilderness Lore: Canyons", 0, 0, 0, 15, 0, "" },
['l'] = { "Fuming God-Child", 0, 0, 0, 0, 4, 0, "Fasting Way, Lionheart, Poison Tolerance, Intimidate", 0, 0, 0, 15, 0, "" }
}
return caste[code]
end
function p.MutantSubtype(code)
--[NAME, stats (STR, AGI, TUF, INT, WIL, EGO),]--
--[Skills, Resist(ACID, ELEC, COLD, HEAT, BLEED), bonusstart]--
local calling = {
['a'] = { "Apostle", 0, 0, 0, 0, 0, 2, "Intimidate, Proselytize, Tactful", 0, 0, 0, 0, 0, "" },
['b'] = { "Arconaut", 0, 2, 0, 0, 0, 0, "Short Blades Proficiency, Scavenger, Gadget Inspector, Spry", 0, 0, 0, 0, 0, "Start with random junk and artifacts" },
['c'] = { "Greybeard", -1, 0, 0, 0, 3, 0, "Cudgel Proficiency, Berate, Calloused", 0, 0, 0, 0, 0, "Start with +100 bear reputation" },
['d'] = { "Gunslinger", 0, 2, 0, 0, 0, 0, "Weak Spotter", 0, 0, 0, 0, 0, "Start with +200 reputation with mysterious strangers" },
['e'] = { "Marauder", 2, 0, 0, 0, 0, 0, "Dismember, Charge, Butchery", 0, 0, 0, 0, 0, "" },
['f'] = { "Pilgrim", 0, 0, 0, 0, 2, 0, "Meditate, Fasting Way, Iron Mind, Mind's Compass", 0, 0, 0, 0, 0, "" },
['g'] = { "Nomad", 0, 0, 2, 0, 0, 0, "Mind's Compass, Wilderness Lore: Salt Pans, Harvestry, Weathered", 0, 0, 15, 15, 0, "Starts with +200 Issachari reputation and a recycling suit" },
['h'] = { "Scholar", 0, 0, 0, 2, 0, 0, "Gadget Inspector, Heal, Harvestry, Hurdle, Tactful", 0, 0, 0, 0, 0, "" },
['i'] = { "Tinker", 0, 0, 0, 2, 0, 0, "Gadget Inspector, Lay Mine, Disassemble, Repair, Tinker I", 0, 0, 0, 0, 0, "Begins with a number of random artifacts and scrap and +100 Barathrumites reputation" },
['j'] = { "Warden", 2, 0, 0, 0, 0, 0, "Long Blades Proficiency, Shield Slam, Steady Hands, Draw a Bead, Pistol Proficiency", 0, 0, 0, 0, 0, "Starts with +300 Warden reputation" },
['k'] = { "Water Merchant", 0, 0, 0, 0, 0, 2, "Menacing Stare, Snake Oiler", 0, 0, 0, 0, 0, "Starts with trade goods and a merchant's token" },
['l'] = { "Watervine Farmer", 0, 0, 2, 0, 0, 0, "Cooking and Gathering, Harvestry, Axe Proficiency, Wilderness Lore: Salt Marshes", 0, 0, 0, 0, 0, "Starts with +100 reputation with the villagers of Joppa and a farmer's token" }
}
return calling[code]
end
function p.getexts(code, subtypeC)
local muts = {
['aa'] = { "Chimera", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ab'] = { "Esper", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['uu'] = { "Unstable Genome", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u2'] = { "Unstable Genome(2)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u3'] = { "Unstable Genome(3)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u4'] = { "Unstable Genome(4)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u5'] = { "Unstable Genome(5)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u6'] = { "Unstable Genome(6)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u7'] = { "Unstable Genome(7)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u8'] = { "Unstable Genome(8)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['u9'] = { "Unstable Genome(9)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ba'] = { "Adrenal Control", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bb'] = { "Burrowing Claws", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bc'] = { "Carapace", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['b6'] = { "Carnivorous", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bd'] = { "Corrosive Gas Generation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['be'] = { "Double-muscled", 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bf'] = { "Electrical Generation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bg'] = { "Electromagnetic Pulse", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bh'] = { "Flaming Hands", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bi'] = { "Freezing Hands", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bj'] = { "Heightened Hearing", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bk'] = { "Heightened Quickness", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 },
['bl'] = { "Horns", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bm'] = { "Metamorphosis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bn'] = { "Multiple Arms", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bo'] = { "Multiple Legs", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bp'] = { "Night Vision", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bq'] = { "Phasing", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['br'] = { "Photosynthetic Skin", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bs'] = { "Quills", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bt'] = { "Regeneration", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bu'] = { "Sleep Gas Generation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bv'] = { "Slime Glands", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bw'] = { "Spinnerets", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bx'] = { "Stinger (Confusing Venom)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['by'] = { "Stinger (Paralyzing Venom)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['bz'] = { "Stinger (Poisoning Venom)", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['b1'] = { "Thick Fur", 0, 0, 0, 0, 0, 0, 0, 0, 4, 4 },
['b2'] = { "Triple-jointed", -1, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
['b3'] = { "Two-headed", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['b4'] = { "Two-hearted", 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 },
['b5'] = { "Wings", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
--[phys defects]
['ca'] = { "Albino", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['cb'] = { "Amphibious", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['cc'] = { "Analgesia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['cd'] = { "Beak", 0, 0, 0, 0, 0, -1, 0, 0, 0, 0 },
['ce'] = { "Cold-Blooded", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['cf'] = { "Brittle Bones", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['cg'] = { "Electromagnetic Impulse", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ch'] = { "Hemophilia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ci'] = { "Hooks for Feet", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['cj'] = { "Myopia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ck'] = { "Spontaneous Combustion", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
--[mental muts]
['da'] = { "Beguiling", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['db'] = { "Burgeoning", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dc'] = { "Clairvoyance", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dd'] = { "Confusion", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['de'] = { "Cryokinesis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['df'] = { "Domination", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dg'] = { "Disintegration", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dh'] = { "Ego Projection", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['di'] = { "Force Bubble", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dj'] = { "Force Wall", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dk'] = { "Kindle", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dl'] = { "Light Manipulation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dm'] = { "Mass Mind", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dn'] = { "Mental Mirror", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['do'] = { "Precognition", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dp'] = { "Psychometry", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dq'] = { "Pyrokinesis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dr'] = { "Sense Psychic", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ds'] = { "Space-Time Vortex", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dt'] = { "Stunning Force", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['du'] = { "Sunder Mind", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dv'] = { "Syphon Vim", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dw'] = { "Telepathy", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dx'] = { "Teleportation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dy'] = { "Teleport Other", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['dz'] = { "Time Dilation", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['d1'] = { "Temporal Fugue", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
--[mental defects]
['ea'] = { "Amnesia", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['eb'] = { "Blinking Tic", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ec'] = { "Evil Twin", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ed'] = { "Narcolepsy", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ee'] = { "Pack Rat", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['ef'] = { "Socially Repugnant", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['eg'] = { "Unwelcome Germination", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
--[cybernetics (to be added)]
['00'] = { "", 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
['01'] = { "dermal insulation", 0, 0, 0, 0, 0, 0, 6, 6, 6, 6 },
['04'] = { 'optical bioscanner', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['05'] = { 'optical technoscanner', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['06'] = { 'night vision', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['07'] = { 'hyper-elastic ankle tendons', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['08'] = { 'parabolic muscular subroutine', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['09'] = { 'translucent skin', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['11'] = { 'stabilizer arm locks', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['12'] = { 'rapid release finger flexors', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['13'] = { 'carbide hand bones', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['14'] = { 'pentaceps', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
['15'] = { 'inflatable axons', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-- subtypes A-D, E-H, I-L
['16'] = { 'nocturnal apex', 'cherubic visage', 'air current microsensor', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}
if code ~= nil and code == '16' then
if subtypeC < 'e' then
return { 'nocturnal apex', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
elseif subtypeC < 'i' then
return { 'cherubic visage', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
else
return { 'air current microsensor', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
end
else
return muts[code]
end
end
function p.getImplants(code, subtypeC)
end
function p.getbonus(subtype, exts)
--STR, AGI, TOUGH,INT, WILL, EGO
local extbonuses = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
for x, y in ipairs(exts) do
extbonuses[1] = extbonuses[1] + y[2]
extbonuses[2] = extbonuses[2] + y[3]
extbonuses[3] = extbonuses[3] + y[4]
extbonuses[4] = extbonuses[4] + y[5]
extbonuses[5] = extbonuses[5] + y[6]
extbonuses[6] = extbonuses[6] + y[7]
extbonuses[7] = extbonuses[7] + y[8]
extbonuses[8] = extbonuses[8] + y[9]
extbonuses[9] = extbonuses[9] + y[10]
extbonuses[10] = extbonuses[10] + y[11]
end
local bonusints = {}
bonusints[1] = subtype[2] + extbonuses[1]
bonusints[2] = subtype[3] + extbonuses[2]
bonusints[3] = subtype[4] + extbonuses[3]
bonusints[4] = subtype[5] + extbonuses[4]
bonusints[5] = subtype[6] + extbonuses[5]
bonusints[6] = subtype[7] + extbonuses[6]
local i = 0
local bonusT = {}
for x, y in ipairs(bonusints) do
local symbol = " "
if y < 0 then
symbol = ""
elseif y > 0 then
symbol = "+"
end
if symbol ~= nil and symbol ~= " " then
bonusT[x] = symbol .. y
else
bonusT[x] = " "
end
end
return bonusT
end
function p.fixattributes(bonus, attr)
local newattr = {}
for x, y in ipairs(bonus) do
if y ~= " " then
newattr[x] = tonumber(attr[x]) - tonumber(y)
else
newattr[x] = tonumber(attr[x])
end
end
return newattr
end
function p.MakeUpSheet(codeIn, genoIn, subtype, classcalledIn, extnameIn, attributes, bonus, extsIn, frame)
local mutstring = ""
for _, ext in ipairs(extsIn) do
mutstring = mutstring .. ", " .. ext[1]
end
return frame:expandTemplate {
title = 'Crypto result',
args = {
code = codeIn:upper(),
genotype = genoIn,
classcalled = classcalledIn,
class = subtype[1],
strength = tostring(attributes[1]) .. bonus[1],
agility = tostring(attributes[2]) .. bonus[2],
toughness = attributes[3] .. bonus[3],
intelligence = attributes[4] .. bonus[4],
willpower = attributes[5] .. bonus[5],
ego = attributes[6] .. bonus[6],
extname = extnameIn,
exts = mutstring:sub(3),
skills = subtype[8],
notes = subtype[14]
}
}
end
return p