<?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=Demon%2Fscript</id>
	<title>Demon/script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dwarffortresswiki.org/index.php?action=history&amp;feed=atom&amp;title=Demon%2Fscript"/>
	<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=Demon/script&amp;action=history"/>
	<updated>2026-07-06T05:08:00Z</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=Demon/script&amp;diff=317010&amp;oldid=prev</id>
		<title>Ziusudra: added demon_names block</title>
		<link rel="alternate" type="text/html" href="https://dwarffortresswiki.org/index.php?title=Demon/script&amp;diff=317010&amp;oldid=prev"/>
		<updated>2026-06-30T08:30:36Z</updated>

		<summary type="html">&lt;p&gt;added demon_names block&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:30, 30 June 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;demon_names={&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;demon&amp;quot;,names=&amp;quot;demons&amp;quot;,name_adj=&amp;quot;demonic&amp;quot;,cond=function(options) return true end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;devil&amp;quot;,names=&amp;quot;devils&amp;quot;,name_adj=&amp;quot;devilish&amp;quot;,cond=function(options) return true end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;fiend&amp;quot;,names=&amp;quot;fiends&amp;quot;,name_adj=&amp;quot;fiendish&amp;quot;,cond=function(options) return true end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;brute&amp;quot;,names=&amp;quot;brutes&amp;quot;,name_adj=&amp;quot;brutish&amp;quot;,cond=function(options) return adj_exploitable_check(options.fadj) end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;monster&amp;quot;,names=&amp;quot;monsters&amp;quot;,name_adj=&amp;quot;monster&amp;quot;,cond=function(options) return true end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;spirit&amp;quot;,names=&amp;quot;spirits&amp;quot;,name_adj=&amp;quot;spirit&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;ghost&amp;quot;,names=&amp;quot;ghosts&amp;quot;,name_adj=&amp;quot;ghost&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;banshee&amp;quot;,names=&amp;quot;banshees&amp;quot;,name_adj=&amp;quot;banshee&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;haunt&amp;quot;,names=&amp;quot;haunts&amp;quot;,name_adj=&amp;quot;haunt&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;phantom&amp;quot;,names=&amp;quot;phantoms&amp;quot;,name_adj=&amp;quot;phantom&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;specter&amp;quot;,names=&amp;quot;specters&amp;quot;,name_adj=&amp;quot;specter&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    {name=&amp;quot;wraith&amp;quot;,names=&amp;quot;wraiths&amp;quot;,name_adj=&amp;quot;wraith&amp;quot;,cond=function(options) return options.intangible end},&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;creatures.demon.default=function(demon_type,difficulty,tok)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;creatures.demon.default=function(demon_type,difficulty,tok)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local tbl={}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local tbl={}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_db:diff::1.12:old-317008:rev-317010 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ziusudra</name></author>
	</entry>
	<entry>
		<id>https://dwarffortresswiki.org/index.php?title=Demon/script&amp;diff=317008&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=Demon/script&amp;diff=317008&amp;oldid=prev"/>
		<updated>2026-06-30T08:24:38Z</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;
creatures.demon.default=function(demon_type,difficulty,tok)&lt;br /&gt;
    local tbl={}&lt;br /&gt;
    local l2=get_debug_logger(2)&lt;br /&gt;
    l2(tok,demon_type,difficulty)&lt;br /&gt;
    local options={&lt;br /&gt;
        is_evil=true,&lt;br /&gt;
        pick_sphere_rcm=true,&lt;br /&gt;
        strong_attack_tweak=true,&lt;br /&gt;
        always_nobreathe=true,&lt;br /&gt;
        force_goo=true,&lt;br /&gt;
        intangible_flier=true,&lt;br /&gt;
        fixed_temp=10040,&lt;br /&gt;
        forced_odor_chance=2,&lt;br /&gt;
        forced_odor_string=&amp;quot;brimstone&amp;quot;,&lt;br /&gt;
        forced_odor_level=90,&lt;br /&gt;
        sickness_name=&amp;quot;demon sickness&amp;quot;,&lt;br /&gt;
        feature_flavor_adj=true,&lt;br /&gt;
        fire_immune=true,&lt;br /&gt;
        token=tok&lt;br /&gt;
    }&lt;br /&gt;
    if demon_type==&amp;quot;unique&amp;quot; then&lt;br /&gt;
        tbl=split_to_lines(tbl,[[&lt;br /&gt;
[UNIQUE_DEMON]&lt;br /&gt;
[SPREAD_EVIL_SPHERES_IF_RULER]&lt;br /&gt;
&lt;br /&gt;
[NATURAL_SKILL:WRESTLING:14]&lt;br /&gt;
[NATURAL_SKILL:BITE:14]&lt;br /&gt;
[NATURAL_SKILL:GRASP_STRIKE:14]&lt;br /&gt;
[NATURAL_SKILL:STANCE_STRIKE:14]&lt;br /&gt;
[NATURAL_SKILL:MELEE_COMBAT:14]&lt;br /&gt;
[NATURAL_SKILL:RANGED_COMBAT:14]&lt;br /&gt;
[NATURAL_SKILL:DODGING:14]&lt;br /&gt;
[NATURAL_SKILL:SITUATIONAL_AWARENESS:14]&lt;br /&gt;
&lt;br /&gt;
[CAN_LEARN][CAN_SPEAK][DIFFICULTY:10]&lt;br /&gt;
        ]])&lt;br /&gt;
        options.humanoidable_only=true&lt;br /&gt;
        options.can_learn=true&lt;br /&gt;
    else&lt;br /&gt;
        tbl=split_to_lines(tbl,[[&lt;br /&gt;
[DEMON]&lt;br /&gt;
&lt;br /&gt;
[NATURAL_SKILL:WRESTLING:10]&lt;br /&gt;
[NATURAL_SKILL:BITE:10]&lt;br /&gt;
[NATURAL_SKILL:GRASP_STRIKE:10]&lt;br /&gt;
[NATURAL_SKILL:STANCE_STRIKE:10]&lt;br /&gt;
[NATURAL_SKILL:MELEE_COMBAT:10]&lt;br /&gt;
[NATURAL_SKILL:RANGED_COMBAT:10]&lt;br /&gt;
[NATURAL_SKILL:DODGING:10]&lt;br /&gt;
[NATURAL_SKILL:SITUATIONAL_AWARENESS:10]&lt;br /&gt;
        ]])&lt;br /&gt;
        if(demon_type==&amp;quot;humanoid_beast&amp;quot;) then options.humanoidable_only=true end&lt;br /&gt;
        if one_in(2) then &lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[CAN_LEARN][CAN_SPEAK]&amp;quot;&lt;br /&gt;
            options.can_learn=true&lt;br /&gt;
        end&lt;br /&gt;
        tbl=split_to_lines(tbl,[[&lt;br /&gt;
[LARGE_ROAMING]&lt;br /&gt;
[LARGE_PREDATOR][DIFFICULTY:]]..tostring(difficulty)..[[]&lt;br /&gt;
[BIOME:SUBTERRANEAN_CHASM]&lt;br /&gt;
[UNDERGROUND_DEPTH:5:5]&lt;br /&gt;
[POPULATION_NUMBER:5:10]&lt;br /&gt;
[CLUSTER_NUMBER:1:5]&lt;br /&gt;
]])&lt;br /&gt;
        options.fallback_pref_str=&amp;quot;horrifying features&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    pick_random({&lt;br /&gt;
        function()&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[CASTE:FEMALE]&amp;quot;&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[FEMALE]&amp;quot;&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[CASTE:MALE]&amp;quot;&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[MALE]&amp;quot;&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[SELECT_CASTE:ALL]&amp;quot;&lt;br /&gt;
        end,&lt;br /&gt;
        function()&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[MALE]&amp;quot;&lt;br /&gt;
        end,&lt;br /&gt;
        function()&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[FEMALE]&amp;quot;&lt;br /&gt;
        end,&lt;br /&gt;
        function()&lt;br /&gt;
            tbl[#tbl+1]=&amp;quot;[NO_GENDER]&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    })()&lt;br /&gt;
    tbl=split_to_lines(tbl,[[[PHYS_ATT_RANGE:STRENGTH:450:1050:1150:1250:1350:1550:2250]&lt;br /&gt;
[PHYS_ATT_RANGE:TOUGHNESS:450:1050:1150:1250:1350:1550:2250]&lt;br /&gt;
[PHYS_ATT_RANGE:ENDURANCE:450:1050:1150:1250:1350:1550:2250]&lt;br /&gt;
[PHYS_ATT_RANGE:RECUPERATION:450:1050:1150:1250:1350:1550:2250]&lt;br /&gt;
[PHYS_ATT_RANGE:DISEASE_RESISTANCE:700:1300:1400:1500:1600:1800:2500]&lt;br /&gt;
[MENT_ATT_RANGE:ANALYTICAL_ABILITY:1250:1500:1750:2000:2500:3000:5000]&lt;br /&gt;
[MENT_ATT_RANGE:FOCUS:1250:1500:1750:2000:2500:3000:5000]&lt;br /&gt;
[MENT_ATT_RANGE:WILLPOWER:1250:1500:1750:2000:2500:3000:5000]&lt;br /&gt;
[MENT_ATT_RANGE:PATIENCE:0:333:666:1000:2333:3666:5000]&lt;br /&gt;
[MENT_ATT_RANGE:MEMORY:1250:1500:1750:2000:2500:3000:5000]&lt;br /&gt;
[MENT_ATT_RANGE:LINGUISTIC_ABILITY:450:1050:1150:1250:1350:1550:2250]&lt;br /&gt;
[MENT_ATT_RANGE:MUSICALITY:0:333:666:1000:2333:3666:5000]&lt;br /&gt;
[MENT_ATT_RANGE:SOCIAL_AWARENESS:700:1300:1400:1500:1600:1800:2500]&lt;br /&gt;
[PERSONALITY:ANXIETY_PROPENSITY:0:0:0]&lt;br /&gt;
[PERSONALITY:DEPRESSION_PROPENSITY:0:0:0]&lt;br /&gt;
[PERSONALITY:BASHFUL:0:0:0]&lt;br /&gt;
[PERSONALITY:STRESS_VULNERABILITY:0:0:0]&lt;br /&gt;
[PERSONALITY:FRIENDLINESS:0:0:0]&lt;br /&gt;
[PERSONALITY:ASSERTIVENESS:100:100:100]&lt;br /&gt;
[PERSONALITY:DISDAIN_ADVICE:100:100:100]&lt;br /&gt;
[PERSONALITY:CHEER_PROPENSITY:0:0:0]&lt;br /&gt;
[PERSONALITY:GRATITUDE:0:0:0]&lt;br /&gt;
[PERSONALITY:TRUST:0:0:0]&lt;br /&gt;
[PERSONALITY:ALTRUISM:0:0:0]&lt;br /&gt;
[PERSONALITY:SWAYED_BY_EMOTIONS:0:0:0]&lt;br /&gt;
[PERSONALITY:CRUELTY:100:100:100]&lt;br /&gt;
[PERSONALITY:PRIDE:100:100:100]&lt;br /&gt;
[PERSONALITY:GREED:100:100:100]&lt;br /&gt;
[NO_DRINK][NO_EAT][NO_SLEEP]&lt;br /&gt;
[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]&lt;br /&gt;
[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]&lt;br /&gt;
[MAGMA_VISION]&lt;br /&gt;
[EVIL]&lt;br /&gt;
[FANCIFUL]&lt;br /&gt;
[SUPERNATURAL]&lt;br /&gt;
]])&lt;br /&gt;
    add_regular_tokens(tbl,options)&lt;br /&gt;
    local available_sphere_cur={}&lt;br /&gt;
    local available_sphere={}&lt;br /&gt;
    options.spheres={}&lt;br /&gt;
    l2(&amp;quot;Starting spheres&amp;quot;)&lt;br /&gt;
    for k,v in pairs(world.spheres) do&lt;br /&gt;
        available_sphere_cur[k]=true&lt;br /&gt;
        available_sphere[k]=true&lt;br /&gt;
    end&lt;br /&gt;
    --ANY SPHERE COLLECTION + ONE EVIL + NO PURE GOOD/CIVIS/FLUFF STUFF&lt;br /&gt;
    available_sphere_cur.AGRICULTURE=false;&lt;br /&gt;
    available_sphere_cur.BALANCE=false;&lt;br /&gt;
    available_sphere_cur.CHARITY=false;&lt;br /&gt;
    available_sphere_cur.CONSOLATION=false;&lt;br /&gt;
    available_sphere_cur.COURAGE=false;&lt;br /&gt;
    available_sphere_cur.DUTY=false;&lt;br /&gt;
    available_sphere_cur.FAMILY=false;&lt;br /&gt;
    available_sphere_cur.FERTILITY=false;&lt;br /&gt;
    available_sphere_cur.FESTIVALS=false;&lt;br /&gt;
    available_sphere_cur.FORGIVENESS=false;&lt;br /&gt;
    available_sphere_cur.FREEDOM=false;&lt;br /&gt;
    available_sphere_cur.GENEROSITY=false;&lt;br /&gt;
    available_sphere_cur.HAPPINESS=false;&lt;br /&gt;
    available_sphere_cur.HEALING=false;&lt;br /&gt;
    available_sphere_cur.HOSPITALITY=false;&lt;br /&gt;
    available_sphere_cur.JUSTICE=false;&lt;br /&gt;
    available_sphere_cur.LABOR=false;&lt;br /&gt;
    available_sphere_cur.LOVE=false;&lt;br /&gt;
    available_sphere_cur.LOYALTY=false;&lt;br /&gt;
    available_sphere_cur.MARRIAGE=false;&lt;br /&gt;
    available_sphere_cur.MERCY=false;&lt;br /&gt;
    available_sphere_cur.OATHS=false;&lt;br /&gt;
    available_sphere_cur.PEACE=false;&lt;br /&gt;
    available_sphere_cur.PREGNANCY=false;&lt;br /&gt;
    available_sphere_cur.RAINBOWS=false;&lt;br /&gt;
    available_sphere_cur.REVELRY=false;&lt;br /&gt;
    available_sphere_cur.SACRIFICE=false;&lt;br /&gt;
    available_sphere_cur.TRADE=false;&lt;br /&gt;
    available_sphere_cur.TRAVELERS=false;&lt;br /&gt;
    available_sphere_cur.TRUTH=false;&lt;br /&gt;
    available_sphere_cur.VALOR=false;&lt;br /&gt;
    available_sphere_cur.WISDOM=false;&lt;br /&gt;
    local branch_number=trandom(2)+1&lt;br /&gt;
    while branch_number &amp;gt; 0 do&lt;br /&gt;
        local candidates={}&lt;br /&gt;
        -- not cleverness, just paranoia&lt;br /&gt;
        if branch_number&amp;lt;=1 then&lt;br /&gt;
            for k,v in ipairs(evil_spheres) do&lt;br /&gt;
                if available_sphere_cur[v] then candidates[#candidates+1]=v end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if #candidates==0 then&lt;br /&gt;
            for k,v in pairsByKeys(available_sphere_cur) do&lt;br /&gt;
                if v then candidates[#candidates+1]=k end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if #candidates then&lt;br /&gt;
            local new_s = pick_random(candidates)&lt;br /&gt;
            add_sphere_mpp(options.spheres,new_s,available_sphere,available_sphere_cur)&lt;br /&gt;
            while one_in(2) do&lt;br /&gt;
                candidates={}&lt;br /&gt;
                for k,v in pairsByKeys(world.spheres[new_s].friends) do&lt;br /&gt;
                    if available_sphere_cur[k] then&lt;br /&gt;
                        candidates[#candidates+1]=k&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                new_s = pick_random(candidates)&lt;br /&gt;
                if new_s then&lt;br /&gt;
                    add_sphere_mpp(options.spheres,new_s,available_sphere,available_sphere_cur)&lt;br /&gt;
                else&lt;br /&gt;
                    break&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        branch_number = branch_number-1&lt;br /&gt;
    end&lt;br /&gt;
    l2(&amp;quot;Done with spheres&amp;quot;)&lt;br /&gt;
    options.beast_only=demon_type==&amp;quot;humanoid_beast&amp;quot; or demon_type==&amp;quot;beast&amp;quot;&lt;br /&gt;
    if demon_type==&amp;quot;flying_spirit&amp;quot; then&lt;br /&gt;
        options.always_insubstantial=true&lt;br /&gt;
        options.always_make_uniform=true&lt;br /&gt;
    end&lt;br /&gt;
    populate_sphere_info(tbl,options)&lt;br /&gt;
    local rcp=get_random_creature_profile(options)&lt;br /&gt;
    local body_size = difficulty==6 and (400000+trandom(9)*10000 + trandom(11)*1000) or (10000000)&lt;br /&gt;
    add_body_size(tbl,math.max(body_size, rcp.min_size),options)&lt;br /&gt;
    tbl[#tbl+1]=&amp;quot;[CREATURE_TILE:'&amp;amp;']&amp;quot;&lt;br /&gt;
    build_procgen_creature(rcp,tbl,options)&lt;br /&gt;
    tbl[#tbl+1]=&amp;quot;[GO_TO_START]&amp;quot;&lt;br /&gt;
    options.flavor_adj = options.flavor_adj or {}&lt;br /&gt;
    options.potential_end_phrase = options.potential_end_phrase or {}&lt;br /&gt;
    local name_str=&amp;quot;&amp;quot;&lt;br /&gt;
    if (#options.flavor_adj&amp;gt;0 or #options.potential_end_phrase&amp;gt;0) and one_in(3) then&lt;br /&gt;
        if trandom(#options.flavor_adj + #options.potential_end_phrase) &amp;gt; #options.flavor_adj then&lt;br /&gt;
            options.eadj=pick_random(options.potential_end_phrase)&lt;br /&gt;
            local name=pick_random_conditional(demon_names,&amp;quot;cond&amp;quot;,options)&lt;br /&gt;
            name_str=name.name..options.eadj..&amp;quot;:&amp;quot;..name.names..options.eadj..&amp;quot;:&amp;quot;..name.name_adj..options.eadj&lt;br /&gt;
        else&lt;br /&gt;
            options.fadj=pick_random(options.flavor_adj)&lt;br /&gt;
            local name=pick_random_conditional(demon_names,&amp;quot;cond&amp;quot;,options)&lt;br /&gt;
            name_str=options.fadj..&amp;quot; &amp;quot;..name.name..&amp;quot;:&amp;quot;..options.fadj..&amp;quot; &amp;quot;..name.names..&amp;quot;:&amp;quot;..name.name_adj&lt;br /&gt;
        end&lt;br /&gt;
    elseif not options.name_mat or #options.name_mat==0 then&lt;br /&gt;
        local name=pick_random_conditional(demon_names,&amp;quot;cond&amp;quot;,options)&lt;br /&gt;
        name_str=rcp.name_string..&amp;quot; &amp;quot;..name.name..&amp;quot;:&amp;quot;..rcp.name_string..&amp;quot; &amp;quot;..name.names..&amp;quot;:&amp;quot;..rcp.name_string..&amp;quot; &amp;quot;..name.name_adj&lt;br /&gt;
    else&lt;br /&gt;
        local name=pick_random_conditional(demon_names,&amp;quot;cond&amp;quot;,options)&lt;br /&gt;
        local nmm=pick_random(options.name_mat)&lt;br /&gt;
        if one_in(2) then&lt;br /&gt;
            name_str=name.name..&amp;quot; of &amp;quot;..nmm..&amp;quot;:&amp;quot;..name.names..&amp;quot; of &amp;quot;..nmm..&amp;quot;:&amp;quot;..name.name..&amp;quot; of &amp;quot;..nmm&lt;br /&gt;
        else&lt;br /&gt;
            name_str=nmm..&amp;quot; &amp;quot;..name.name..&amp;quot;:&amp;quot;..nmm..&amp;quot; &amp;quot;..name.names..&amp;quot;:&amp;quot;..nmm..&amp;quot;:&amp;quot;..name.name_adj&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if name_str==&amp;quot;&amp;quot; then&lt;br /&gt;
        local name=pick_random_conditional(demon_names,&amp;quot;cond&amp;quot;,options)&lt;br /&gt;
        name_str=rcp.name_string..&amp;quot; &amp;quot;..name.name..&amp;quot;:&amp;quot;..rcp.name_string..&amp;quot; &amp;quot;..name.names..&amp;quot;:&amp;quot;..rcp.name_string..&amp;quot; &amp;quot;..name.name_adj&lt;br /&gt;
    end&lt;br /&gt;
    if name_str==&amp;quot;&amp;quot; then&lt;br /&gt;
        name_str=&amp;quot;glitch demon:glitch demons:glitch demon&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    tbl[#tbl+1]=&amp;quot;[NAME:&amp;quot;..name_str..&amp;quot;]&amp;quot;&lt;br /&gt;
    tbl[#tbl+1]=&amp;quot;[CASTE_NAME:&amp;quot;..name_str..&amp;quot;]&amp;quot;&lt;br /&gt;
    return {raws=tbl,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>