Module:CryptogullJr/Codes: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
(update for mutations rework)
mNo edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
local cargo = mw.ext.cargo
local textutil = require'Module:Text Utility'
     --[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]--
Line 49: Line 46:
}
}


function p.mergeCodes(muttable, cybtable)
muts = {
     finaltable = muttable
    ['aa'] = {"Chimera", ""},
     for k,v in pairs(cybtable) do
     ['ab'] = {"Esper", ""},
    if finaltable[k] then
     ['uu'] = {"Unstable Genome", ""},
    error("there are cybernetics and mutations that have the same creation code!")
    ['ba'] = {"Adrenal Control", ""},
    end
    ['bb'] = {"Burrowing Claws", ""},
    finaltable[k] = v
    ['bc'] = {"Carapace", ""},
     end
    ['bd'] = {"Corrosive Gas Generation", ""},
     return finaltable
     ['be'] = {"Double-muscled", ""},
end
     ['bf'] = {"Electrical Generation", ""},
 
    ['bg'] = {"Electromagnetic Pulse", ""},
function getMutCodes()
    ['bh'] = {"Flaming Ray", ""},
local mutresult = cargo.query('Mutations', '_pageName=Name, CreationCode, Variants, Type',  
    ['bi'] = {"Freezing Ray", ""},
  {where='_pageNamespace="0" AND CreationCode <> ""',
    ['bj'] = {"Heightened Hearing", ""},
default=nil,
    ['bk'] = {"Heightened Quickness", ""},
orderBy='CreationCode ASC'} )
    ['bl'] = {"Horns", ""},
--[If there was no result, search by alias instead]
    ['bm'] = {"Metamorphosis", ""},
if not next(mutresult) then
    ['bn'] = {"Multiple Arms", ""},
error('There was no defined mutation table, or it wasn\'t found.')
    ['bo'] = {"Multiple Legs", ""},
else
    ['bp'] = {"Night Vision", ""},
-- Next, reorganize the table so it's [code] = {other, fields}
    ['bq'] = {"Phasing", ""},
mutresulttable = {}
    ['br'] = {"Photosynthetic Skin", ""},
    for _,j in ipairs(mutresult) do
    ['bs'] = {"Quills", ""},
    mutresulttable[j['CreationCode']] = {j['Name'], textutil.split(j['Variants']), j['Type'] }
    ['bt'] = {"Regeneration", ""},
    end
    ['bu'] = {"Sleep Gas Generation", ""},
    -- Add unstable genome stacks because they're not stored
    ['bv'] = {"Slime Glands", ""},
    mutresulttable['u2'] = {"Unstable Genome(2)", "", "Genotype"}
    ['bw'] = {"Spinnerets", ""},
        mutresulttable['u3'] = {"Unstable Genome(3)", "", "Genotype"}
    ['bx'] = {"Stinger (Confusing Venom)", ""},
        mutresulttable['u4'] = {"Unstable Genome(4)", "", "Genotype"}
    ['by'] = {"Stinger (Paralyzing Venom)", ""},
        mutresulttable['u5'] = {"Unstable Genome(5)", "", "Genotype"}
    ['bz'] = {"Stinger (Poisoning Venom)", ""},
        mutresulttable['u6'] = {"Unstable Genome(6)", "", "Genotype"}
    ['b1'] = {"Thick Fur", ""},
        mutresulttable['u7'] = {"Unstable Genome(7)", "", "Genotype"}
    ['b2'] = {"Triple-jointed", ""},
        mutresulttable['u8'] = {"Unstable Genome(8)", "", "Genotype"}
    ['b3'] = {"Two-headed", ""},
        mutresulttable['u9'] = {"Unstable Genome(9)", "", "Genotype"}
    ['b4'] = {"Two-hearted", ""},
    return mutresulttable
    ['b5'] = {"Wings", ""},
     end
    ['b6'] = {"Carnivorous", ""},
end
    ['ca'] = {"Albino", ""},
 
    ['cb'] = {"Amphibious", ""},
function getCyberneticsCodes()
    ['cc'] = {"Nerve Poppy", ""},
local cyberneticresult = cargo.query('Cybernetics',  
    ['cd'] = {"Beak", ""},
'Name, CreationCode, StartingCybernetic',
    ['ce'] = {"Cold Blooded", ""},
  {where='_pageNamespace="10002" AND CreationCode <> ""',
    ['cf'] = {"Brittle Bones", ""},
default=nil,
    ['cf'] = {"Electromagnetic Impulse", ""},
orderBy='CreationCode ASC'} )
    ['ch'] = {"Hemophilia", ""},
--[If there was no result, search by alias instead]
    ['ci'] = {"Hooks for Feet", ""},
if not next(cyberneticresult) then
    ['cj'] = {"Myopic", ""},
error('There was no defined cybernetic table, or it wasn\'t found.')
    ['ck'] = {"I forgor", ""},
else
    ['cl'] = {"Spontaneous Combustion", ""},
-- Next, reorganize the table so it's [code] = {other, fields}
    ['cm'] = {"Tonic Allergy", ""},
cyberneticresulttable = {}
    ['cn'] = {"Irritable Genome", ""},
arcologycybertable = {}
    ['da'] = {"Beguiling", ""},
    for _,j in ipairs(cyberneticresult) do
    ['db'] = {"Burgeoning", ""},
    if j['CreationCode'] ~= "16" then -- no 16 variants
    ['dc'] = {"Clairvoyance", ""},
    cyberneticresulttable[j['CreationCode']] = {j['Name'], j['StartingCybernetic']}
    ['dd'] = {"Confusion", ""},
    end
    ['de'] = {"Cryokinesis", ""},
    end
    ['df'] = {"Domination", ""},
    -- add no cybernetic because its not stored
    ['dg'] = {"Disintegration", ""},
    cyberneticresulttable['00'] = {"No Cybernetic", "", ""}
    ['dh'] = {"Ego Projection", ""},
    return cyberneticresulttable
    ['di'] = {"Force Bubble", ""},
     end
    ['dj'] = {"Force Wall", ""},
end
    ['dk'] = {"Kindle", ""},
 
    ['dl'] = {"Light Manipulation", ""},
muts = p.mergeCodes(getMutCodes(), getCyberneticsCodes())
    ['dm'] = {"Mass Mind", ""},
    ['dn'] = {"Mental Mirror", ""},
    ['do'] = {"Precognition", ""},
    ['dp'] = {"Psychometry", ""},
     ['dq'] = {"Pyrokinesis", ""},
    ['dr'] = {"Sense Psychic", ""},
    ['ds'] = {"Space-Time Vortex", ""},
    ['dt'] = {"Stunning Force", ""},
    ['du'] = {"Sunder Mind", ""},
    ['dv'] = {"Syphon Vim", ""},
    ['dw'] = {"Telepathy", ""},
    ['dx'] = {"Teleportation", ""},
    ['dy'] = {"Teleport Other", ""},
    ['d1'] = {"Temporal Fugue", ""},
    ['dz'] = {"Time Dilation", ""},
    ['ea'] = {"Amnesia", ""},
    ['eb'] = {"Blinking Tic", ""},
    ['ec'] = {"Evil Twin", ""},
    ['ed'] = {"Narcolepsy", ""},
    ['ee'] = {"??", ""},
    ['ef'] = {"Socially Repugnant", ""},
    ['eg'] = {"Unwelcome Germination", ""},
    ['eh'] = {"Quantum Jitters", ""},
    ['ei'] = {"Dystechnia", ""},
    ['ow'] = {"Psionic Migraines", ""},
    ['u2'] = {"Unstable Genome(2)", ""},
    ['u3'] = {"Unstable Genome(3)", ""},
    ['u4'] = {"Unstable Genome(4)", ""},
    ['u5'] = {"Unstable Genome(5)", ""},
    ['u6'] = {"Unstable Genome(6)", ""},
    ['u7'] = {"Unstable Genome(7)", ""},
    ['u8'] = {"Unstable Genome(8)", ""},
    ['u9'] = {"Unstable Genome(9)", ""},
    ['00'] = {"No Cybernetic", ""},
    ['01'] = {"dermal insulation", ""},
    ['02'] = {"dermal insulation", ""},
    ['03'] = {"dermal insulation", ""},
    ['04'] = {"optical bioscanner", ""},
    ['05'] = {"optical technoscanner", ""},
    ['06'] = {"night vision", ""},
    ['07'] = {"hyper-elastic ankle tendons", ""},
    ['08'] = {"parabolic muscular subroutine", ""},
    ['09'] = {"translucent skin", ""},
    ['10'] = {"translucent skin", ""},
    ['11'] = {"stabilizer arm locks", ""},
     ['12'] = {"rapid release finger flexors", ""},
    ['13'] = {"carbide hand bones", ""},
    ['14'] = {"pentaceps", ""},
    ['15'] = {"inflatable axons", ""}
}





Latest revision as of 00:41, 7 August 2023


local p = {}
    --[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]--
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, "" }
    }

    --[NAME, stats (STR, AGI, TUF, INT, WIL, EGO),]--
    --[Skills, Resist(ACID, ELEC, COLD, HEAT, BLEED), bonusstart]--
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" }
    }


statBonus = {
	['Doubled-muscled'] = {2, 0, 0, 0, 0, 0},
	['Triple-jointed'] = {0, 2, 0, 0, 0, 0},
	['Two-hearted'] = {0, 0, 2, 0, 0, 0},
	['Beak'] = {0, 0, 0, 0, 0, 1},
	['No Cybernetic'] = {0, 0, 1, 0, 0, 0}
}

muts = {
    ['aa'] = {"Chimera", ""},
    ['ab'] = {"Esper", ""},
    ['uu'] = {"Unstable Genome", ""},
    ['ba'] = {"Adrenal Control", ""},
    ['bb'] = {"Burrowing Claws", ""},
    ['bc'] = {"Carapace", ""},
    ['bd'] = {"Corrosive Gas Generation", ""},
    ['be'] = {"Double-muscled", ""},
    ['bf'] = {"Electrical Generation", ""},
    ['bg'] = {"Electromagnetic Pulse", ""},
    ['bh'] = {"Flaming Ray", ""},
    ['bi'] = {"Freezing Ray", ""},
    ['bj'] = {"Heightened Hearing", ""},
    ['bk'] = {"Heightened Quickness", ""},
    ['bl'] = {"Horns", ""},
    ['bm'] = {"Metamorphosis", ""},
    ['bn'] = {"Multiple Arms", ""},
    ['bo'] = {"Multiple Legs", ""},
    ['bp'] = {"Night Vision", ""},
    ['bq'] = {"Phasing", ""},
    ['br'] = {"Photosynthetic Skin", ""},
    ['bs'] = {"Quills", ""},
    ['bt'] = {"Regeneration", ""},
    ['bu'] = {"Sleep Gas Generation", ""},
    ['bv'] = {"Slime Glands", ""},
    ['bw'] = {"Spinnerets", ""},
    ['bx'] = {"Stinger (Confusing Venom)", ""},
    ['by'] = {"Stinger (Paralyzing Venom)", ""},
    ['bz'] = {"Stinger (Poisoning Venom)", ""},
    ['b1'] = {"Thick Fur", ""},
    ['b2'] = {"Triple-jointed", ""},
    ['b3'] = {"Two-headed", ""},
    ['b4'] = {"Two-hearted", ""},
    ['b5'] = {"Wings", ""},
    ['b6'] = {"Carnivorous", ""},
    ['ca'] = {"Albino", ""},
    ['cb'] = {"Amphibious", ""},
    ['cc'] = {"Nerve Poppy", ""},
    ['cd'] = {"Beak", ""},
    ['ce'] = {"Cold Blooded", ""},
    ['cf'] = {"Brittle Bones", ""},
    ['cf'] = {"Electromagnetic Impulse", ""},
    ['ch'] = {"Hemophilia", ""},
    ['ci'] = {"Hooks for Feet", ""},
    ['cj'] = {"Myopic", ""},
    ['ck'] = {"I forgor", ""},
    ['cl'] = {"Spontaneous Combustion", ""},
    ['cm'] = {"Tonic Allergy", ""},
    ['cn'] = {"Irritable Genome", ""},
    ['da'] = {"Beguiling", ""},
    ['db'] = {"Burgeoning", ""},
    ['dc'] = {"Clairvoyance", ""},
    ['dd'] = {"Confusion", ""},
    ['de'] = {"Cryokinesis", ""},
    ['df'] = {"Domination", ""},
    ['dg'] = {"Disintegration", ""},
    ['dh'] = {"Ego Projection", ""},
    ['di'] = {"Force Bubble", ""},
    ['dj'] = {"Force Wall", ""},
    ['dk'] = {"Kindle", ""},
    ['dl'] = {"Light Manipulation", ""},
    ['dm'] = {"Mass Mind", ""},
    ['dn'] = {"Mental Mirror", ""},
    ['do'] = {"Precognition", ""},
    ['dp'] = {"Psychometry", ""},
    ['dq'] = {"Pyrokinesis", ""},
    ['dr'] = {"Sense Psychic", ""},
    ['ds'] = {"Space-Time Vortex", ""},
    ['dt'] = {"Stunning Force", ""},
    ['du'] = {"Sunder Mind", ""},
    ['dv'] = {"Syphon Vim", ""},
    ['dw'] = {"Telepathy", ""},
    ['dx'] = {"Teleportation", ""},
    ['dy'] = {"Teleport Other", ""},
    ['d1'] = {"Temporal Fugue", ""},
    ['dz'] = {"Time Dilation", ""},
    ['ea'] = {"Amnesia", ""},
    ['eb'] = {"Blinking Tic", ""},
    ['ec'] = {"Evil Twin", ""},
    ['ed'] = {"Narcolepsy", ""},
    ['ee'] = {"??", ""},
    ['ef'] = {"Socially Repugnant", ""},
    ['eg'] = {"Unwelcome Germination", ""},
    ['eh'] = {"Quantum Jitters", ""},
    ['ei'] = {"Dystechnia", ""},
    ['ow'] = {"Psionic Migraines", ""},
    ['u2'] = {"Unstable Genome(2)", ""},
    ['u3'] = {"Unstable Genome(3)", ""},
    ['u4'] = {"Unstable Genome(4)", ""},
    ['u5'] = {"Unstable Genome(5)", ""},
    ['u6'] = {"Unstable Genome(6)", ""},
    ['u7'] = {"Unstable Genome(7)", ""},
    ['u8'] = {"Unstable Genome(8)", ""},
    ['u9'] = {"Unstable Genome(9)", ""},
    ['00'] = {"No Cybernetic", ""},
    ['01'] = {"dermal insulation", ""},
    ['02'] = {"dermal insulation", ""},
    ['03'] = {"dermal insulation", ""},
    ['04'] = {"optical bioscanner", ""},
    ['05'] = {"optical technoscanner", ""},
    ['06'] = {"night vision", ""},
    ['07'] = {"hyper-elastic ankle tendons", ""},
    ['08'] = {"parabolic muscular subroutine", ""},
    ['09'] = {"translucent skin", ""},
    ['10'] = {"translucent skin", ""},
    ['11'] = {"stabilizer arm locks", ""},
    ['12'] = {"rapid release finger flexors", ""},
    ['13'] = {"carbide hand bones", ""},
    ['14'] = {"pentaceps", ""},
    ['15'] = {"inflatable axons", ""}
}


function p.TrueKinSubtype(code)
    return caste[code]
end

function p.MutantSubtype(code)
    return calling[code]
end

function p.getStatBonus(code)
	return statBonus[code]
end

function p.getexts(code, subtypeC)
    if code ~= nil and code == '16' then
        if subtypeC < 'e' then
            return { 'nocturnal apex'}
        elseif subtypeC < 'i' then
            return { 'cherubic visage'}
        else
            return { 'air current microsensor'}
        end
    else
        return muts[code]
    end
end

return p