Module:CryptogullJr/Codes: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
(namespaces changed, rm selector for now)
mNo edit summary
 
(2 intermediate revisions by the same user 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='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='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