<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dwarffortresswiki.org/index.php?action=history&amp;feed=atom&amp;title=Experiment%2Fscript</id>
	<title>Experiment/script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dwarffortresswiki.org/index.php?action=history&amp;feed=atom&amp;title=Experiment%2Fscript"/>
	<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=Experiment/script&amp;action=history"/>
	<updated>2026-07-04T21:01:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.11</generator>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=Experiment/script&amp;diff=317014&amp;oldid=prev</id>
		<title>Ziusudra: from 53.15 creatures.lua</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=Experiment/script&amp;diff=317014&amp;oldid=prev"/>
		<updated>2026-06-30T09:18:39Z</updated>

		<summary type="html">&lt;p&gt;from 53.15 creatures.lua&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function experiment_tokens(lines,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[NO_DRINK][NO_EAT][NO_SLEEP]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[LARGE_PREDATOR]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[NIGHT_CREATURE]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[SUPERNATURAL]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[FANCIFUL]&amp;quot;&lt;br /&gt;
    if not one_in(4) and random_object_parameters.experimenter_creature then&lt;br /&gt;
        if random_object_parameters.experimenter_creature.flags.MATES_TO_BREED then&lt;br /&gt;
            lines[#lines+1]=&amp;quot;[CASTE:FEMALE]&amp;quot;&lt;br /&gt;
                lines[#lines+1]=&amp;quot;[FEMALE]&amp;quot;&lt;br /&gt;
            lines[#lines+1]=&amp;quot;[CASTE:MALE]&amp;quot;&lt;br /&gt;
                lines[#lines+1]=&amp;quot;[MALE]&amp;quot;&lt;br /&gt;
            lines[#lines+1]=&amp;quot;[SELECT_CASTE:ALL]&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            lines[#lines+1]=&amp;quot;[NO_GENDER]&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[NO_GENDER]&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BIOME:ANY_LAND]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PETVALUE:2000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[ALL_ACTIVE]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[NOFEAR]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[NO_FEVERS]&amp;quot;&lt;br /&gt;
    options.spheres=options.spheres or {&lt;br /&gt;
        NIGHT=true,&lt;br /&gt;
        DEFORMITY=true&lt;br /&gt;
    }&lt;br /&gt;
    options.never_uniform=true&lt;br /&gt;
    options.experiment_colors=true&lt;br /&gt;
    options.forced_color={ -- overridden by humanoid, but that's fine&lt;br /&gt;
            f=2,&lt;br /&gt;
            b=0,&lt;br /&gt;
            br=1&lt;br /&gt;
        }&lt;br /&gt;
    options.experiment_attack_tweak=true&lt;br /&gt;
    options.sickness_name=&amp;quot;night sickness&amp;quot;&lt;br /&gt;
    options.pref_str=options.pref_str or {&amp;quot;unsettling origin&amp;quot;}&lt;br /&gt;
--[[&lt;br /&gt;
************************** EXPERIMENT OBJECT def - desc phys/affect&lt;br /&gt;
	they expect the amalgamated giants to refer to all the pieces making them up -- do we do tissues differently though?  go all muscle?&lt;br /&gt;
		but don't actually give them tissues&lt;br /&gt;
]]&lt;br /&gt;
    options.no_extra_description=true&lt;br /&gt;
    options.cannot_swim=true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function experimenter_sphere_info(lines,options)&lt;br /&gt;
    local ropar=random_object_parameters&lt;br /&gt;
    if ropar.experimenter_creature then&lt;br /&gt;
        if ropar.experimenter_creature.caste[ropar.experimenter_hf.caste].flags.UNIQUE_DEMON then&lt;br /&gt;
            -- ?. would be pretty cool, alas&lt;br /&gt;
            local spheres = ropar.experimenter_hf.profile and ropar.experimenter_hf.profile.mpp and ropar.experimenter_hf.profile.mpp.spheres&lt;br /&gt;
            if spheres then&lt;br /&gt;
                return spheres.CHAOS,spheres.DEFORMITY&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return false,false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function experiment_description(lines,options)&lt;br /&gt;
    local ropar=random_object_parameters&lt;br /&gt;
    local end_str=&amp;quot;&amp;quot;&lt;br /&gt;
    local add_desc=function(str) end_str=end_str..str end&lt;br /&gt;
    if ropar.experimenter_hf then&lt;br /&gt;
        add_desc(&amp;quot; This night creature was first created &amp;quot;)&lt;br /&gt;
        if options.failed_experiment then&lt;br /&gt;
            add_desc(&amp;quot;accidentally &amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
        add_desc(&amp;quot;by the &amp;quot;)&lt;br /&gt;
        local ip = ropar.experimenter_hf.profile and ropar.experimenter_hf.profile.interaction_profile&lt;br /&gt;
        if ip and ip.uwss_display_name_sing~=&amp;quot;&amp;quot; then&lt;br /&gt;
            add_desc(ropar.experimenter_race_adj..ip.uwss_display_name_sing)&lt;br /&gt;
        else&lt;br /&gt;
            add_desc(ropar.experimenter_race_name)&lt;br /&gt;
        end&lt;br /&gt;
        add_desc(&amp;quot; &amp;quot;)&lt;br /&gt;
        add_desc(ropar.experimenter_hf.name.translated)&lt;br /&gt;
        if ropar.experimenter_capital_st then&lt;br /&gt;
            add_desc(&amp;quot; of &amp;quot;)&lt;br /&gt;
            add_desc(ropar.experimenter_capital_st.name.translated)&lt;br /&gt;
        end&lt;br /&gt;
        local chaos,deformity=experimenter_sphere_info(lines,options)&lt;br /&gt;
        if deformity and chaos then&lt;br /&gt;
            add_desc(&amp;quot; through the fiend's terrifying power&amp;quot;)&lt;br /&gt;
        elseif deformity then&lt;br /&gt;
            add_desc(&amp;quot; through the fiend's twisted power&amp;quot;)&lt;br /&gt;
        elseif chaos then&lt;br /&gt;
            add_desc(&amp;quot; through the fiend's chaotic power&amp;quot;)&lt;br /&gt;
        else&lt;br /&gt;
            add_desc(&amp;quot; after horrible experiments&amp;quot;)&lt;br /&gt;
            if options.failed_experiment then&lt;br /&gt;
                add_desc(&amp;quot; gone wrong&amp;quot;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if ropar.experimenter_source_hfid~=-1 or ropar.experimenter_source_race~=-1 then&lt;br /&gt;
            if deformity or chaos then add_desc(&amp;quot; unleashed upon &amp;quot;)&lt;br /&gt;
            else add_desc(&amp;quot; on &amp;quot;)&lt;br /&gt;
            end&lt;br /&gt;
            if options.amalgam_experiment then add_desc(&amp;quot;multitudes&amp;quot;)&lt;br /&gt;
            elseif ropar.experimenter_source_hfid~=-1 then&lt;br /&gt;
                add_desc(&amp;quot;the &amp;quot;)&lt;br /&gt;
                if ropar.experiment_hf then&lt;br /&gt;
                    local ip = ropar.experiment_hf.profile and ropar.experiment_hf.profile.interaction_profile&lt;br /&gt;
                    if ip then&lt;br /&gt;
                        add_desc(ropar.experiment_source_race_adj..&amp;quot; &amp;quot;..ip.uwss_display_name_sing)&lt;br /&gt;
                    else&lt;br /&gt;
                        add_desc(ropar.experiment_source_race_name)&lt;br /&gt;
                    end&lt;br /&gt;
                    add_desc(&amp;quot; &amp;quot;)&lt;br /&gt;
                    add_desc(ropar.experiment_hf.name.translated)&lt;br /&gt;
                else add_desc(&amp;quot;an unknown creature&amp;quot;)&lt;br /&gt;
                end&lt;br /&gt;
            elseif ropar.experimenter_source_race~=-1 then&lt;br /&gt;
                add_desc(ropar.experiment_source_race_name_plural)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if ropar.experimenter_create_st then&lt;br /&gt;
            add_desc(&amp;quot; in &amp;quot;..ropar.experimenter_create_st.name.translated)&lt;br /&gt;
        end&lt;br /&gt;
        add_desc(&amp;quot; in the year &amp;quot;..tostring(world.year)..&amp;quot;.&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return end_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- you can add more of your own, e.g. experiment_nouns.cyborg or whatever&lt;br /&gt;
experiment_nouns={&lt;br /&gt;
    humanoid={&lt;br /&gt;
        {&amp;quot;hand&amp;quot;,&amp;quot;hands&amp;quot;},&lt;br /&gt;
        {&amp;quot;demon&amp;quot;,&amp;quot;demons&amp;quot;},&lt;br /&gt;
        {&amp;quot;warrior&amp;quot;,&amp;quot;warriors&amp;quot;},&lt;br /&gt;
        {&amp;quot;soldier&amp;quot;,&amp;quot;soldiers&amp;quot;},&lt;br /&gt;
        {&amp;quot;fist&amp;quot;,&amp;quot;fists&amp;quot;},&lt;br /&gt;
        {&amp;quot;eye&amp;quot;,&amp;quot;eyes&amp;quot;},&lt;br /&gt;
    },&lt;br /&gt;
    humanoid_giant={&lt;br /&gt;
        {&amp;quot;giant&amp;quot;,&amp;quot;giants&amp;quot;},&lt;br /&gt;
        {&amp;quot;hulk&amp;quot;,&amp;quot;hulks&amp;quot;},&lt;br /&gt;
        {&amp;quot;tower&amp;quot;,&amp;quot;towers&amp;quot;},&lt;br /&gt;
        {&amp;quot;mountain&amp;quot;,&amp;quot;mountains&amp;quot;},&lt;br /&gt;
    },&lt;br /&gt;
    beast_small={&lt;br /&gt;
        {&amp;quot;dog&amp;quot;,&amp;quot;dogs&amp;quot;},&lt;br /&gt;
        {&amp;quot;hound&amp;quot;,&amp;quot;hounds&amp;quot;},&lt;br /&gt;
        {&amp;quot;wolf&amp;quot;,&amp;quot;wolves&amp;quot;},&lt;br /&gt;
    },&lt;br /&gt;
    beast_large={&lt;br /&gt;
        {&amp;quot;beast&amp;quot;,&amp;quot;beasts&amp;quot;},&lt;br /&gt;
        {&amp;quot;monster&amp;quot;,&amp;quot;monsters&amp;quot;},&lt;br /&gt;
        {&amp;quot;creature&amp;quot;,&amp;quot;creatures&amp;quot;},&lt;br /&gt;
    },&lt;br /&gt;
    failed_small={&lt;br /&gt;
        {&amp;quot;mistake&amp;quot;,&amp;quot;mistakes&amp;quot;},&lt;br /&gt;
        {&amp;quot;folly&amp;quot;,&amp;quot;follies&amp;quot;},&lt;br /&gt;
        {&amp;quot;experiment&amp;quot;,&amp;quot;experiments&amp;quot;},&lt;br /&gt;
    },&lt;br /&gt;
    failed_large={&lt;br /&gt;
        {&amp;quot;nightmare&amp;quot;,&amp;quot;nightmares&amp;quot;},&lt;br /&gt;
        {&amp;quot;catastrophe&amp;quot;,&amp;quot;catastrophes&amp;quot;},&lt;br /&gt;
        {&amp;quot;disaster&amp;quot;,&amp;quot;disasters&amp;quot;},&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
experiment_random_names={&lt;br /&gt;
    --originally just a straight assignment, wanted to take the opportunity to let mods add variety&lt;br /&gt;
    deformity_chaos={&amp;quot;horror&amp;quot;},&lt;br /&gt;
    deformity={&amp;quot;misfortune&amp;quot;},&lt;br /&gt;
    chaos={&amp;quot;chaos&amp;quot;},&lt;br /&gt;
    night={&amp;quot;night&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function experiment_name_token(lines,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[GO_TO_START]&amp;quot;&lt;br /&gt;
    local ropar = random_object_parameters&lt;br /&gt;
    local name_to_use=ropar.experimenter_hf and ropar.experimenter_hf.name&lt;br /&gt;
    if one_in(4) then&lt;br /&gt;
        if one_in(2) then name_to_use=ropar.experimenter_create_st and ropar.experimenter_create_st.name or name_to_use&lt;br /&gt;
        else name_to_use=ropar.experimenter_capital_st and ropar.experimenter_capital_st.name or name_to_use&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    local experiment_name=nil&lt;br /&gt;
    if name_to_use then&lt;br /&gt;
        -- we preprocess these indices for lua--i know it's inconsistent, sorry&lt;br /&gt;
        if string.len(name_to_use.firstname)&amp;gt;0 and ((not name_to_use.translated_epithet_the and not name_to_use.translated_epithet_compound) or one_in(2)) then&lt;br /&gt;
            experiment_name=name_to_use.firstname&lt;br /&gt;
            experiment_name=capitalize_string_words(experiment_name)&lt;br /&gt;
        else&lt;br /&gt;
            if name_to_use.translated_epithet_the and (one_in(2) or not name_to_use.translated_epithet_compound) then&lt;br /&gt;
                -- &amp;quot;of The Murk&amp;quot;&lt;br /&gt;
                if one_in(2) then experiment_name=translated_epithet_the&lt;br /&gt;
                else experiment_name=native_epithet_the&lt;br /&gt;
                end&lt;br /&gt;
            elseif name_to_use.translated_epithet_compound then&lt;br /&gt;
                -- &amp;quot;of Tireshadows&amp;quot;&lt;br /&gt;
                if one_in(2) then experiment_name=translated_epithet_compound&lt;br /&gt;
                else experiment=native_epithet_compound&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if not experiment_name or one_in(10) then&lt;br /&gt;
        local chaos,deformity=experimenter_sphere_info(lines,options)&lt;br /&gt;
        if deformity and chaos then experiment_name=pick_random(experiment_random_names.deformity_chaos)&lt;br /&gt;
        elseif deformity then experiment_name=pick_random(experiment_random_names.deformity)&lt;br /&gt;
        elseif chaos then experiment_name=pick_random(experiment_random_names.chaos)&lt;br /&gt;
        else experiment_name=pick_random(experiment_random_names.night)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    options.experiment_name_type = options.experiment_name_type or ropar.making_experiment&lt;br /&gt;
    local nmm,pnmm=table.unpack(pick_random(experiment_nouns[options.experiment_name_type]))&lt;br /&gt;
    local full_name_str&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        local possessive=experiment_name..&amp;quot;'s &amp;quot;&lt;br /&gt;
        full_name_str=possessive..nmm..&amp;quot;:&amp;quot;..possessive..pnmm..&amp;quot;:&amp;quot;..possessive..nmm&lt;br /&gt;
    else&lt;br /&gt;
        local possessive=&amp;quot; of &amp;quot;..experiment_name&lt;br /&gt;
        full_name_str=nmm..possessive..&amp;quot;:&amp;quot;..pnmm..possessive..&amp;quot;:&amp;quot;..nmm..possessive&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[NAME:&amp;quot;..full_name_str..&amp;quot;]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CASTE_NAME:&amp;quot;..full_name_str..&amp;quot;]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
creatures.experiment.humanoid.default=function(tok)&lt;br /&gt;
    local lines={}&lt;br /&gt;
    local options={&lt;br /&gt;
        token=tok,&lt;br /&gt;
        normal_biological=true&lt;br /&gt;
    }&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        options.night_creature_strength_pref=true&lt;br /&gt;
    else&lt;br /&gt;
        options.night_creature_agile_pref=true&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CAN_LEARN]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[LOCAL_POPS_CONTROLLABLE]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[LOCAL_POPS_PRODUCE_HEROES]&amp;quot;&lt;br /&gt;
--[[************************** EXPERIMENT OBJECT personality + desc&lt;br /&gt;
        --do a few archetypes that'll be appended to the description&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:ANXIETY_PROPENSITY:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:DEPRESSION_PROPENSITY:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:BASHFUL:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:STRESS_VULNERABILITY:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:FRIENDLINESS:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:ASSERTIVENESS:100:100:100]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:DISDAIN_ADVICE:100:100:100]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:CHEER_PROPENSITY:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:GRATITUDE:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:TRUST:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:ALTRUISM:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:SWAYED_BY_EMOTIONS:0:0:0]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:CRUELTY:100:100:100]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:PRIDE:100:100:100]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PERSONALITY:GREED:100:100:100]&amp;quot;&lt;br /&gt;
]]&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CAN_SPEAK]&amp;quot;&lt;br /&gt;
    options.can_learn=true&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]&amp;quot;&lt;br /&gt;
    if options.night_creature_strength_pref then&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:STRENGTH:1000:1250:1500:2000:2250:2500:3000]&amp;quot;&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:AGILITY:450:550:700:750:800:850:900]&amp;quot;&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:TOUGHNESS:850:900:950:1000:1050:1100:1150]&amp;quot;&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:ENDURANCE:850:900:950:1000:1050:1100:1150]&amp;quot;&lt;br /&gt;
        options.special_walk_speed=1000;&lt;br /&gt;
    elseif options.night_creature_agile_pref then&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:STRENGTH:450:550:700:750:800:850:900]&amp;quot;&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:AGILITY:1000:1250:1500:2000:2250:2500:3000]&amp;quot;&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:TOUGHNESS:850:900:950:1000:1050:1100:1150]&amp;quot;&lt;br /&gt;
        lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:ENDURANCE:850:900:950:1000:1050:1100:1150]&amp;quot;&lt;br /&gt;
        options.special_walk_speed=800;&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:RECUPERATION:450:1050:1150:1250:1350:1550:2250]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[PHYS_ATT_RANGE:DISEASE_RESISTANCE:700:1300:1400:1500:1600:1800:2500]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:ANALYTICAL_ABILITY:1250:1500:1750:2000:2500:3000:5000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:FOCUS:1250:1500:1750:2000:2500:3000:5000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:WILLPOWER:1250:1500:1750:2000:2500:3000:5000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:PATIENCE:0:333:666:1000:2333:3666:5000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:MEMORY:1250:1500:1750:2000:2500:3000:5000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:LINGUISTIC_ABILITY:450:1050:1150:1250:1350:1550:2250]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:MUSICALITY:0:333:666:1000:2333:3666:5000]&amp;quot;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[MENT_ATT_RANGE:SOCIAL_AWARENESS:700:1300:1400:1500:1600:1800:2500]&amp;quot;&lt;br /&gt;
    experiment_tokens(lines,options)&lt;br /&gt;
    populate_sphere_info(lines,options)&lt;br /&gt;
    local rcp={&lt;br /&gt;
        type=&amp;quot;GENERAL_HUMANOID&amp;quot;,&lt;br /&gt;
		name_string=&amp;quot;humanoid&amp;quot;,&lt;br /&gt;
		tile='H',&lt;br /&gt;
		body_base=&amp;quot;HUMANOID&amp;quot;,&lt;br /&gt;
        --FOR SKIN/ORGANS AND NO HAIR/FEATHERS AT FIRST&lt;br /&gt;
		c_class=&amp;quot;AMPHIBIAN&amp;quot;,&lt;br /&gt;
		min_size=1,&lt;br /&gt;
        cannot_have_shell=true&lt;br /&gt;
    }&lt;br /&gt;
    add_body_size(lines,50000+trandom(4)*10000+trandom(11)*1000,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CREATURE_TILE:72]&amp;quot;&lt;br /&gt;
    options.forced_color={&lt;br /&gt;
        f=4,&lt;br /&gt;
        b=0,&lt;br /&gt;
        br=1&lt;br /&gt;
    }&lt;br /&gt;
    options.end_phrase=experiment_description(lines,options)&lt;br /&gt;
    options.experiment_layering=true&lt;br /&gt;
    build_procgen_creature(rcp,lines,options)&lt;br /&gt;
    experiment_name_token(lines,options)&lt;br /&gt;
    return {raws=lines,weight=1}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
creatures.experiment.humanoid_giant.default=function(tok)&lt;br /&gt;
    local lines={}&lt;br /&gt;
    local options={&lt;br /&gt;
        amalgam_experiment=true,&lt;br /&gt;
        token=tok,&lt;br /&gt;
        normal_biological=true&lt;br /&gt;
    }&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        options.night_creature_strength_pref=true&lt;br /&gt;
    else&lt;br /&gt;
        options.night_creature_agile_pref=true&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    experiment_tokens(lines,options)&lt;br /&gt;
    populate_sphere_info(lines,options)&lt;br /&gt;
    local rcp={&lt;br /&gt;
        type=&amp;quot;GENERAL_HUMANOID&amp;quot;,&lt;br /&gt;
		name_string=&amp;quot;humanoid&amp;quot;,&lt;br /&gt;
		tile='H',&lt;br /&gt;
		body_base=&amp;quot;HUMANOID&amp;quot;,&lt;br /&gt;
		c_class=&amp;quot;FLESHY&amp;quot;,&lt;br /&gt;
		min_size=1,&lt;br /&gt;
        cannot_have_shell=true&lt;br /&gt;
    }&lt;br /&gt;
    add_body_size(lines,5000000+trandom(4)*1000000+trandom(11)*100000,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CREATURE_TILE:165]&amp;quot;&lt;br /&gt;
    options.end_phrase=experiment_description(lines,options)&lt;br /&gt;
    build_procgen_creature(rcp,lines,options)&lt;br /&gt;
    experiment_name_token(lines,options)&lt;br /&gt;
    return {raws=lines,weight=1}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
beast_experiment_rcps={&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;quadruped&amp;quot;,&lt;br /&gt;
        tile='Q',&lt;br /&gt;
        body_base=&amp;quot;QUADRUPED&amp;quot;,&lt;br /&gt;
        maybe_slinky=true&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;hexapod&amp;quot;,&lt;br /&gt;
        tile='H',&lt;br /&gt;
        body_base=&amp;quot;INSECT&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;spider&amp;quot;,&lt;br /&gt;
        tile='S',&lt;br /&gt;
        body_base=&amp;quot;SPIDER&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;scorpion&amp;quot;,&lt;br /&gt;
        tile='S',&lt;br /&gt;
        body_base=&amp;quot;SPIDER&amp;quot;,&lt;br /&gt;
        must_have_pincers=true,&lt;br /&gt;
        must_have_scorpion_tail=true&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;decapod&amp;quot;,&lt;br /&gt;
        tile='D',&lt;br /&gt;
        body_base=&amp;quot;TEN_LEGGED&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;octopod&amp;quot;,&lt;br /&gt;
        tile='O',&lt;br /&gt;
        body_base=&amp;quot;EIGHT_LEGGED&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;primate&amp;quot;,&lt;br /&gt;
        tile='P',&lt;br /&gt;
        body_base=&amp;quot;QUADRUPED_FRONT_GRASP&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function make_beast_rcp(lines,options)&lt;br /&gt;
    local rcp={&lt;br /&gt;
        type=&amp;quot;GENERAL_QUADRUPED&amp;quot;,&lt;br /&gt;
        c_class=&amp;quot;FLESHY&amp;quot;,&lt;br /&gt;
        min_size=1,&lt;br /&gt;
        cannot_have_shell=true,&lt;br /&gt;
        cannot_have_get_more_legs=true&lt;br /&gt;
    }&lt;br /&gt;
    map_merge(rcp,pick_random(beast_experiment_rcps))&lt;br /&gt;
    if rcp.maybe_slinky then&lt;br /&gt;
        rcp.maybe_slinky=nil&lt;br /&gt;
        if one_in(2) then rcp.SLINKY_QUADRUPED=true end&lt;br /&gt;
    end&lt;br /&gt;
    return rcp&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
creatures.experiment.beast_small.default=function(tok)&lt;br /&gt;
    local lines={}&lt;br /&gt;
    local options={&lt;br /&gt;
        token=tok,&lt;br /&gt;
        normal_biological=true&lt;br /&gt;
    }&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        options.night_creature_strength_pref=true&lt;br /&gt;
    else&lt;br /&gt;
        options.night_creature_agile_pref=true&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:LENGTH:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    experiment_tokens(lines,options)&lt;br /&gt;
    populate_sphere_info(lines,options)&lt;br /&gt;
    local rcp=make_beast_rcp(lines,options)&lt;br /&gt;
    add_body_size(lines,50000+trandom(4)*10000+trandom(11)*1000,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CREATURE_TILE:&amp;quot;..rcp.tile..&amp;quot;]&amp;quot;&lt;br /&gt;
    options.end_phrase=experiment_description(lines,options)&lt;br /&gt;
    build_procgen_creature(rcp,lines,options)&lt;br /&gt;
    experiment_name_token(lines,options)&lt;br /&gt;
    return {raws=lines,weight=1}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
creatures.experiment.beast_large.default=function(tok)&lt;br /&gt;
    local lines={}&lt;br /&gt;
    local options={&lt;br /&gt;
        token=tok,&lt;br /&gt;
        normal_biological=true&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        options.night_creature_strength_pref=true&lt;br /&gt;
    else&lt;br /&gt;
        options.night_creature_agile_pref=true&lt;br /&gt;
    end&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:LENGTH:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]&amp;quot;;&lt;br /&gt;
    experiment_tokens(lines,options)&lt;br /&gt;
    populate_sphere_info(lines,options)&lt;br /&gt;
    local rcp=make_beast_rcp(lines,options)&lt;br /&gt;
    add_body_size(lines,500000+trandom(4)*100000+trandom(11)*10000,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CREATURE_TILE:&amp;quot;..rcp.tile..&amp;quot;]&amp;quot;&lt;br /&gt;
    options.end_phrase=experiment_description(lines,options)&lt;br /&gt;
    build_procgen_creature(rcp,lines,options)&lt;br /&gt;
    experiment_name_token(lines,options)&lt;br /&gt;
    return {raws=lines,weight=1}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
failed_experiment_rcps={&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;blob&amp;quot;,&lt;br /&gt;
        tile='b',&lt;br /&gt;
        body_base=&amp;quot;AMORPHOUS&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;maggot&amp;quot;,&lt;br /&gt;
        tile='m',&lt;br /&gt;
        body_base=&amp;quot;INSECT_LARVA&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;worm&amp;quot;,&lt;br /&gt;
        tile='w',&lt;br /&gt;
        body_base=&amp;quot;WORM&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;wyrm&amp;quot;,&lt;br /&gt;
        tile='w',&lt;br /&gt;
        body_base=&amp;quot;NO_LIMB&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;snake&amp;quot;,&lt;br /&gt;
        tile='s',&lt;br /&gt;
        body_base=&amp;quot;SNAKE&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        name_string=&amp;quot;armless biped&amp;quot;,&lt;br /&gt;
        tile='b',&lt;br /&gt;
        body_base=&amp;quot;TWO_LEGS_NO_ARMS_HUMANOID&amp;quot;,&lt;br /&gt;
        always_flightless=true&lt;br /&gt;
    },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function make_failed_rcp(lines,options)&lt;br /&gt;
    local rcp={&lt;br /&gt;
        type=&amp;quot;BLOB&amp;quot;,&lt;br /&gt;
        c_class=&amp;quot;FLESHY&amp;quot;,&lt;br /&gt;
        min_size=1,&lt;br /&gt;
        cannot_have_shell=true,&lt;br /&gt;
    }&lt;br /&gt;
    map_merge(rcp,pick_random(failed_experiment_rcps))&lt;br /&gt;
    if options.is_large then rcp.tile=string.upper(rcp.tile) end&lt;br /&gt;
    return rcp&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
creatures.experiment.failed_small.default=function(tok)&lt;br /&gt;
    local lines={}&lt;br /&gt;
    local options={&lt;br /&gt;
        failed_experiment=true,&lt;br /&gt;
        token=tok,&lt;br /&gt;
        normal_biological=true&lt;br /&gt;
    }&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        options.night_creature_strength_pref=true&lt;br /&gt;
    else&lt;br /&gt;
        options.night_creature_agile_pref=true&lt;br /&gt;
    end&lt;br /&gt;
    experiment_tokens(lines,options)&lt;br /&gt;
    populate_sphere_info(lines,options)&lt;br /&gt;
    local rcp=make_beast_rcp(lines,options)&lt;br /&gt;
    add_body_size(lines,50000+trandom(4)*10000+trandom(11)*1000,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CREATURE_TILE:&amp;quot;..rcp.tile..&amp;quot;]&amp;quot;&lt;br /&gt;
    options.end_phrase=experiment_description(lines,options)&lt;br /&gt;
    build_procgen_creature(rcp,lines,options)&lt;br /&gt;
    experiment_name_token(lines,options)&lt;br /&gt;
    return {raws=lines,weight=1}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
creatures.experiment.failed_large.default=function(tok)&lt;br /&gt;
    local lines={}&lt;br /&gt;
    local options={&lt;br /&gt;
        is_large=true,&lt;br /&gt;
        failed_experiment=true,&lt;br /&gt;
        token=tok,&lt;br /&gt;
        normal_biological=true&lt;br /&gt;
    }&lt;br /&gt;
    if one_in(2) then&lt;br /&gt;
        options.night_creature_strength_pref=true&lt;br /&gt;
    else&lt;br /&gt;
        options.night_creature_agile_pref=true&lt;br /&gt;
    end&lt;br /&gt;
    experiment_tokens(lines,options)&lt;br /&gt;
    populate_sphere_info(lines,options)&lt;br /&gt;
    local rcp=make_beast_rcp(lines,options)&lt;br /&gt;
    add_body_size(lines,500000+trandom(4)*100000+trandom(11)*10000,options)&lt;br /&gt;
    lines[#lines+1]=&amp;quot;[CREATURE_TILE:&amp;quot;..rcp.tile..&amp;quot;]&amp;quot;&lt;br /&gt;
    options.end_phrase=experiment_description(lines,options)&lt;br /&gt;
    build_procgen_creature(rcp,lines,options)&lt;br /&gt;
    experiment_name_token(lines,options)&lt;br /&gt;
    return {raws=lines,weight=1}&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Category|Lua script pages}}{{Category|Creature raw pages}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ziusudra</name></author>
	</entry>
</feed>