Difference between revisions of "Template:Infobox main"

From RimWorld Wiki
Jump to navigation Jump to search
m (attack part ucfirst)
(76 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<includeonly>{{#switch: {{lc:{{{set property|}}} }}
+
<includeonly><!--
 +
 
 +
0. TESTING
 +
-->{{#switch: {{lc:{{{set property|}}} }}
 
  | 1 | yes | y | t | true = {{#vardefine:setProperty | true }}
 
  | 1 | yes | y | t | true = {{#vardefine:setProperty | true }}
 
  | 0 | no | n | f | false = {{#vardefine:setProperty |}}
 
  | 0 | no | n | f | false = {{#vardefine:setProperty |}}
 
  | #default = {{#vardefine:setProperty | {{#ifeq: {{NAMESPACE}} || true }} }}
 
  | #default = {{#vardefine:setProperty | {{#ifeq: {{NAMESPACE}} || true }} }}
}}<div class="infobox float:right; {{#if: {{{1|}}} | {{#switch: {{{1}}}
+
}}<!--
 +
 
 +
1. HEAD
 +
--><div class="infobox float:right; {{#if: {{{1|}}} | {{#switch: {{{1}}}
 
   | furniture | medicine = c_01
 
   | furniture | medicine = c_01
 
   | structure = c_02
 
   | structure = c_02
Line 9: Line 15:
 
   | weapon = c_06
 
   | weapon = c_06
 
   | animal | food = c_08
 
   | animal | food = c_08
   | fabric = c_09s
+
   | fabric = c_09
 
   | security = c_10
 
   | security = c_10
 
   | area | exotic = c_11
 
   | area | exotic = c_11
Line 17: Line 23:
 
   | drug = c_24
 
   | drug = c_24
 
   | production = c_25
 
   | production = c_25
 +
  | psycast = c_09
 
}} }}">
 
}} }}">
 
<p class="heading">{{#vardefine:Name|{{{name|{{BASEPAGENAME}} }}} }} {{#var:Name}} {{#if: {{#var:setProperty}} | {{#set:Name = {{#var:Name}} }} }}</p>
 
<p class="heading">{{#vardefine:Name|{{{name|{{BASEPAGENAME}} }}} }} {{#var:Name}} {{#if: {{#var:setProperty}} | {{#set:Name = {{#var:Name}} }} }}</p>
Line 23: Line 30:
 
<p class="text-center" style="display:block; font-size:89%; padding: .5em;">{{#if:{{{audio|}}}|[[File:{{{audio|}}}]]{{#if: {{#var:setProperty}} | {{#set:Audio = {{{audio|}}} }} }} }}{{#if:{{{description|}}} | {{{description|}}}{{#if: {{#var:setProperty}} | {{#set:Description = {{{description|}}} }} }} }}</p>
 
<p class="text-center" style="display:block; font-size:89%; padding: .5em;">{{#if:{{{audio|}}}|[[File:{{{audio|}}}]]{{#if: {{#var:setProperty}} | {{#set:Audio = {{{audio|}}} }} }} }}{{#if:{{{description|}}} | {{{description|}}}{{#if: {{#var:setProperty}} | {{#set:Description = {{{description|}}} }} }} }}</p>
  
<!-- BASE STATS -->
+
<!-- 2. BASE STATS -->
 
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Base Stats</p>
 
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Base Stats</p>
 
<dl>
 
<dl>
  
 
<!-- Category -->
 
<!-- Category -->
 +
{{#if: {{#var:setProperty}} | {{#set:Type = {{{type|}}} }} }}
 +
{{#if: {{#var:setProperty}} | {{#set:Type2 = {{{type2|}}} }} }}
 
;Type
 
;Type
:[[{{{type}}}]]{{#if: {{#var:setProperty}} | {{#set:Type = {{{type|}}} }} }}{{#if: {{{type2|}}} |&#32;&ndash;&#32; {{#ifeq:{{{type2|}}}|Medicine|[[Medicine (disambiguation)|Medicine]]|[[{{{type2}}}]]}}{{#if: {{#var:setProperty}} | {{#set:Type2 = {{{type2|}}} }} }} }}
+
:[[{{{type}}}]]{{#if: {{{type2|}}} |&#32;&#32; {{#ifeq:{{{type2|}}}|Medicine|[[Medicine (disambiguation)|Medicine]]|[[{{{type2}}}]]}} }}
  
 
{{#if: {{{stuff category|}}} |
 
{{#if: {{{stuff category|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Stuff Category = {{{stuff category|}}} }} }}
+
   {{#if: {{#var:setProperty}} |  
;Stuff Category
+
    {{#set:Stuff Category = {{#explode:{{{stuff category|}}}|,|0}}
:{{{stuff category|}}}
+
        | Stuff Category = {{#explode:{{{stuff category|}}}|,|1}}
}}
+
        | Stuff Category = {{#explode:{{{stuff category|}}}|,|2}}
 +
        | Stuff Category = {{#explode:{{{stuff category|}}}|,|3}}
 +
        | Stuff Category = {{#explode:{{{stuff category|}}}|,|4}} }} }}
 +
;Stuff Categories
 +
:{{{stuff category|}}} {{#if: {{{color|}}} |
 +
  {{#vardefine:Red  | {{#replace:{{#explode:{{{color|}}}|,|0}}|(}} }}
 +
  {{#vardefine:Green| {{#explode:{{{color|}}}|,|1}} }}
 +
  {{#vardefine:Blue | {{#replace:{{#explode:{{{color|}}}|,|2}}|)}} }}
 +
<abbr title="Buildings and items made with this as stuff will have the color RGB: {{{color|}}}"><span><div style="width:16px;height:16px;background-color:rgb({{#var:Red}},{{#var:Green}},{{#var:Blue}});display:inline-block;border:1px solid black;vertical-align:middle;"></div></span></abbr>}} }}
  
 
{{#if: {{{tech level|}}} |
 
{{#if: {{{tech level|}}} |
Line 58: Line 75:
 
   {{#if: {{#var:setProperty}} | {{#set:Calculated Market Value = True }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Calculated Market Value = True }} }}
 
;Market Value
 
;Market Value
:{{Market Value | {{Market Value Calculator}} }}&nbsp;{{Icon Small|silver}} {{Hover title|link=no|This value is automatically calculated by the wiki and may not be correct|<sup>[Note]</sup>}} }} }} }} }}
+
:{{Market Value | {{Market Value Calculator}} }}&nbsp;{{Icon Small|silver}} <abbr title="This value is automatically calculated by the wiki and may not be correct"><sup>[Note]</sup></abbr> }} }} }} }}
 
}}
 
}}
 
}}
 
}}
Line 76: Line 93:
 
{{#if: {{{beauty|}}}{{{beauty outdoors|}}} |
 
{{#if: {{{beauty|}}}{{{beauty outdoors|}}} |
 
   {{#if: {{#var:setProperty}} | {{#set:Beauty Base = {{{beauty|}}} }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Beauty Base = {{{beauty|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Beauty Outdoors Base = {{{beauty uutdoors|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Beauty Outdoors Base = {{{beauty outdoors|}}} }} }}
 
;Beauty
 
;Beauty
 
:{{{beauty|0}}} {{#if:{{{beauty outdoors|}}}|<abbr title="Beauty score when outdoors">({{{beauty outdoors|}}})</abbr> }}
 
:{{{beauty|0}}} {{#if:{{{beauty outdoors|}}}|<abbr title="Beauty score when outdoors">({{{beauty outdoors|}}})</abbr> }}
Line 134: Line 151:
  
 
<!-- Other -->
 
<!-- Other -->
{{#if: {{{edifice|}}}
 
  | {{#if: {{#var:setProperty}} | {{#set:Edifice = {{{edifice|}}} }} }}
 
;Edifice
 
:{{{edifice|}}}
 
}}
 
 
 
{{#if: {{{rotatable|}}} |
 
{{#if: {{{rotatable|}}} |
 
   {{#if: {{#var:setProperty}} | {{#set:Rotatable = {{{rotatable|}}} }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Rotatable = {{{rotatable|}}} }} }}
Line 149: Line 160:
 
   {{#if: {{#var:setProperty}} | {{#set:Path Cost = {{{path cost|}}} }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Path Cost = {{{path cost|}}} }} }}
 
;Path Cost
 
;Path Cost
:{{{path cost|}}}
+
:{{{path cost|}}} ({{%|1 / (1 + {{{path cost|}}} * 0.077) round 2}})
 
}}
 
}}
  
 
+
<!-- Refuelable -->
<!-- BUILDING -->
+
{{#if: {{{fuel filter|}}} {{{fuel capacity|}}} {{{fuel consumption rate|}}} |
{{#if: {{{size|}}} {{{minifiable|}}} {{{placeable|}}} {{{passability|}}} {{{cover|}}} {{{blockswind|}}} {{{terrain affordance|}}} {{{power|}}} {{{cleanliness|}}} {{{facility|}}} {{{glowcolor|}}} {{{glowradius|}}} {{{heatpersecond|}}} {{{maxheattemperature|}}} {{{mincooltemperature|}}} {{{surgery success chance factor|}}} {{{immunity gain speed factor|}}} {{{rest effectiveness|}}} {{{comfort|}}} {{{comfort offset|}}} {{{recreation power|}}} {{{recreation type|}}} {{{work efficiency factor|}}} {{{work speed offset|}}} {{{max simultaneous facilities|}}} {{{unpowered work speed factor|}}} {{{efficiency|}}} {{{speed|}}} |
 
 
</dl>{{clear}}
 
</dl>{{clear}}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Building</p>
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Fuel</p>
 
<dl>
 
<dl>
 +
{{#if: {{{fuel filter|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Fuel Filter = {{{fuel filter|}}} }} }}
 +
;Usable Item(s)
 +
:{{Icon Small|{{{fuel filter|}}}|16}} [[{{{fuel filter|}}}]]
 
}}
 
}}
  
{{#if: {{{size|}}} | {{#vardefine: size | {{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{{size|}}}|}}|×|&nbsp;&times;&nbsp;}}|*|&nbsp;&times;&nbsp;}}|x|&nbsp;&times;&nbsp;}}|ˣ|&nbsp;&times;&nbsp;}}|+|&nbsp;+}} }}
+
{{#if: {{{fuel capacity|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Size = {{#var:size}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Fuel Capacity = {{{fuel capacity|}}} }} }}
;Size
+
;<abbr title="Maximum Capacity of Fuel in Units">Capacity</abbr>
:{{#var:size}}
+
:{{{fuel capacity|}}}
 
}}
 
}}
  
{{#if: {{{minifiable|}}} |
+
{{#if: {{{fuel consumption rate|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Minifiable = {{{minifiable|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Fuel Consumption Rate = {{{fuel consumption rate|}}} }} }}
;Minifiable
+
;<abbr title="Units of Fuel Consumed per Day/Charge">Consumption Rate</abbr>
:{{ucfirst:{{{minifiable|}}} }}
+
:{{{fuel consumption rate|}}}
 
}}
 
}}
  
{{#if: {{{placeable|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Placeable = {{{placeable|}}} }} }}
 
;Placeable
 
:{{ucfirst:{{{placeable|}}} }}
 
 
}}
 
}}
  
{{#if: {{{passability|}}} |
+
<!-- Mineable -->
   {{#if: {{#var:setProperty}} | {{#set:Passability = {{{passability|}}} }} }}
+
{{#if: {{{mineable thing|}}} {{{mineable yield|}}} {{{mineable scatter commonality|}}} {{{mineable scatter lump size range|}}} |
;Passability
+
</dl>{{clear}}
:{{{passability|}}}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Ore</p>
 +
<dl>
 +
{{#if: {{{mineable thing|}}} |
 +
   {{#if: {{#var:setProperty}} | {{#set:Mineable Thing = {{{mineable thing|}}} }} }}
 
}}
 
}}
  
{{#if: {{{cover|}}} | {{#ifexpr: {{{cover|}}} > 0.75 |
+
{{#if: {{{mineable yield|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Cover Effectiveness = 0.75}} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Mineable Yield = {{{mineable yield|}}} }} }}
;Cover Effectiveness
+
;Resource Base Yield
:75%
+
:{{Icon Small|{{{mineable thing|}}}||{{{mineable yield|}}}}} [[{{{mineable thing|}}}]]
| {{#if: {{#var:setProperty}} | {{#set:Cover Effectiveness= {{{cover|}}} }} }}
 
;Cover Effectiveness
 
:{{%| {{{cover|}}} }}
 
}} }}
 
 
 
{{#if: {{{blockswind|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Blocks Wind = {{{blockswind|}}} }} }}
 
;Blocks Wind
 
:{{ucfirst:{{{blockswind|}}} }}
 
 
}}
 
}}
  
{{#if: {{{terrain affordance|}}} |
+
{{#if: {{{mineable scatter commonality|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Terrain Affordance = {{{terrain affordance|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Mineable Scatter Commonality = {{{mineable scatter commonality|}}} }} }}
;Terrain Affordance
+
;Ore Commonality
:{{ucfirst:{{{terrain affordance|}}} }}
+
:{{{mineable scatter commonality|}}}
 
}}
 
}}
  
{{#if: {{{power|}}} |
+
{{#if: {{{mineable scatter lump size range|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Power Consumption = {{{power|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Mineable Scatter Lump Size Range = {{{mineable scatter lump size range|}}} }} }}
;Power
+
;Vein Size
:{{{power|}}} W
+
:{{{mineable scatter lump size range|}}}
 
}}
 
}}
  
{{#if: {{{cleanliness|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Cleanliness = {{{cleanliness|}}} }} }}
 
;Cleanliness
 
:{{{cleanliness|}}}
 
 
}}
 
}}
  
{{#if: {{{cleaning time factor|}}} |
+
<!-- 3. BUILDING -->
  {{#if: {{#var:setProperty}} | {{#set:Cleaning Time Factor = {{{cleaning time factor|}}} }} }}
+
{{#if: {{{size|}}} {{{minifiable|}}} {{{placeable|}}} {{{passability|}}} {{{cover|}}} {{{blockswind|}}} {{{terrain affordance|}}} {{{power|}}} {{{cleanliness|}}} {{{facility|}}} {{{glowcolor|}}} {{{glowradius|}}} {{{heatpersecond|}}} {{{maxheattemperature|}}} {{{mincooltemperature|}}} {{{surgery success chance factor|}}} {{{immunity gain speed factor|}}} {{{rest effectiveness|}}} {{{comfort|}}} {{{comfort offset|}}} {{{recreation power|}}} {{{recreation type|}}} {{{work efficiency factor|}}} {{{work speed offset|}}} {{{max simultaneous facilities|}}} {{{unpowered work speed factor|}}} {{{efficiency|}}} {{{speed|}}} |
;Cleaning Time Multiplier
+
</dl>{{clear}}
:{{%| {{{cleaning time factor|}}} }}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Building</p>
 +
<dl>
 +
 
 +
{{#if: {{{size|}}} | {{#vardefine: size | {{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{#replace:{{{size|}}}|}}|×|&nbsp;&times;&nbsp;}}|*|&nbsp;&times;&nbsp;}}|x|&nbsp;&times;&nbsp;}}|ˣ|&nbsp;&times;&nbsp;}}|+|&nbsp;+}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Size = {{#var:size}} }} }}
 +
;Size
 +
:{{#var:size}}
 
}}
 
}}
  
{{#if: {{{filth multiplier|}}} |
+
{{#if: {{{minifiable|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Filth Multiplier = {{{filth multiplier|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Minifiable = {{{minifiable|}}} }} }}
;Filth Multiplier
+
;Minifiable
:{{%| {{{filth multiplier|}}} }}
+
:{{ucfirst:{{{minifiable|}}} }}
 
}}
 
}}
  
{{#if: {{{facility|}}} |
+
{{#if: {{{placeable|}}} |
  {{#vardefine:Facility1 | {{ucfirst:{{#explode:{{{facility|}}}|,|0}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Placeable = {{{placeable|}}} }} }}
  {{#vardefine:Facility2 | {{ucfirst:{{#explode:{{{facility|}}}|,|1}} }} }}
+
;Placeable
  {{#vardefine:Facility3 | {{ucfirst:{{#explode:{{{facility|}}}|,|2}} }} }}
+
:{{ucfirst:{{{placeable|}}} }}
  {{#vardefine:Facility4 | {{ucfirst:{{#explode:{{{facility|}}}|,|3}} }} }}
 
  {{#vardefine:Facility5 | {{ucfirst:{{#explode:{{{facility|}}}|,|4}} }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Facility = {{#var:Facility1}} | Facility = {{#var:Facility2}} | Facility = {{#var:Facility3}} | Facility = {{#var:Facility4}} | Facility = {{#var:Facility5}} }} }}
 
;Facility
 
:[[{{#var:Facility1}}]]{{#if: {{#var:Facility2}} |, [[{{#var:Facility2}}]]}}{{#if: {{#var:Facility3}} |, [[{{#var:Facility3}}]]}}{{#if: {{#var:Facility4}} |, [[{{#var:Facility4}}]]}}{{#if: {{#var:Facility5}} |, [[{{#var:Facility5}}]]}}
 
 
}}
 
}}
  
<!-- Building - Furniture -->
+
{{#if: {{{passability|}}} |
{{#if: {{{glowcolor|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Passability = {{{passability|}}} }} }}
  {{#vardefine:Red  | {{#replace:{{#explode:{{{glowcolor|}}}|,|0}}|(}} }}
+
;Passability
  {{#vardefine:Green| {{#explode:{{{glowcolor|}}}|,|1}} }}
+
:{{{passability|}}}
  {{#vardefine:Blue | {{#replace:{{#explode:{{{glowcolor|}}}|,|2}}|)}} }}
 
  {{#vardefine:LightRadius|{{Lit Radius|{{{glowradius|}}}|{{#expr:{{#var:Red}}+{{#var:Green}}+{{#var:Blue}} }} }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Light Radius = {{#var:LightRadius}} }} }}
 
;<abbr title="The furthest away a tile can be before it falls below 30% light">Light Radius</abbr>
 
:{{#expr:{{#var:LightRadius}} round 2}}
 
 
}}
 
}}
  
{{#if: {{{heatpersecond|}}} |
+
{{#if: {{{cover|}}} | {{#ifexpr: {{{cover|}}} > 0.75 |
   {{#if: {{#var:setProperty}} | {{#set:Heat Per Second = {{{heatpersecond|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Cover Effectiveness = 0.75}} }}
;Heat Per Second
+
;Cover Effectiveness
:{{{heatpersecond|}}}
+
:75%
}}
+
| {{#if: {{#var:setProperty}} | {{#set:Cover Effectiveness= {{{cover|}}} }} }}
 +
;Cover Effectiveness
 +
:{{%| {{{cover|}}} }}
 +
}} }}
 +
 
  
{{#if: {{{maxheattemperature|}}} |
+
{{#if: {{{edifice|}}}
   {{#if: {{#var:setProperty}} | {{#set:Max Heat Temperature = {{{maxheattemperature|}}} }} }}
+
   | {{#if: {{#var:setProperty}} | {{#set:Edifice = {{{edifice|}}} }} }}
;Stops Heating At
+
;Edifice
:{{Temperature| {{{maxheattemperature}}} }}
+
:{{{edifice|}}}
 
}}
 
}}
  
{{#if: {{{mincooltemperature|}}} |
+
{{#if: {{{blockswind|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Min Cool Temperature = {{{mincooltemperature|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Blocks Wind = {{{blockswind|}}} }} }}
;Stops Cooling At
+
;Blocks Wind
:{{Temperature| {{{mincooltemperature}}} }}
+
:{{ucfirst:{{{blockswind|}}} }}
 
}}
 
}}
  
{{#if: {{{surgery success chance factor|}}} |
+
{{#if: {{{terrain affordance|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Surgery Success Chance Factor = {{{surgery success chance factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Terrain Affordance = {{ucfirst:{{{terrain affordance|}}} }} }} }}
;Surgery Success Chance Factor
+
;Terrain Affordance
:{{{surgery success chance factor|}}}
+
:{{ucfirst:{{{terrain affordance|}}} }}
 
}}
 
}}
  
{{#if: {{{immunity gain speed factor|}}} |
+
{{#if: {{{power|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Immunity Gain Speed Factor = {{{immunity gain speed factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Power Consumption = {{{power|}}} }} }}
;Immunity Gain Speed Factor
+
;Power
:{{{immunity gain speed factor|}}}
+
:{{{power|}}} W
 
}}
 
}}
  
{{#if: {{{rest effectiveness|}}} |
+
{{#if: {{{cleanliness|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Rest Effectiveness = {{{rest effectiveness|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Cleanliness = {{{cleanliness|}}} }} }}
;Rest Effectiveness
+
;Cleanliness
:{{{rest effectiveness|}}}
+
:{{{cleanliness|}}}
 
}}
 
}}
  
{{#if: {{{comfort|}}} |
+
{{#if: {{{cleaning time factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Comfort Base = {{{comfort|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Cleaning Time Factor = {{{cleaning time factor|}}} }} }}
;Comfort
+
;Cleaning Time Multiplier
:{{{comfort|}}}
+
:{{%| {{{cleaning time factor|}}} }}
 
}}
 
}}
  
{{#if: {{{comfort offset|}}} |
+
{{#if: {{{filth multiplier|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Comfort Offset = {{{comfort offset|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Filth Multiplier = {{{filth multiplier|}}} }} }}
;Comfort Offset
+
;Filth Multiplier
:{{{comfort offset|}}}
+
:{{%| {{{filth multiplier|}}} }}
 
}}
 
}}
  
<!-- Building - Recreation -->
+
{{#if: {{{facility|}}} |
{{#if: {{{recreation power|}}} {{{recreation type|}}} |
+
  {{#vardefine:Facility1 | {{ucfirst:{{#explode:{{{facility|}}}|,|0}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Recreation Power = {{{recreation power|}}} | Recreation Type = {{ucfirst: {{{recreation type|}}} }} }} }}
+
   {{#vardefine:Facility2 | {{ucfirst:{{#explode:{{{facility|}}}|,|1}} }} }}
;Recreation
+
  {{#vardefine:Facility3 | {{ucfirst:{{#explode:{{{facility|}}}|,|2}} }} }}
:{{#if: {{{recreation power|}}} | {{%| {{{recreation power|}}} }} }} {{{recreation type|}}}
+
  {{#vardefine:Facility4 | {{ucfirst:{{#explode:{{{facility|}}}|,|3}} }} }}
 +
  {{#vardefine:Facility5 | {{ucfirst:{{#explode:{{{facility|}}}|,|4}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Facility = {{#var:Facility1}} | Facility = {{#var:Facility2}} | Facility = {{#var:Facility3}} | Facility = {{#var:Facility4}} | Facility = {{#var:Facility5}} }} }}
 +
;Facility
 +
:[[{{#var:Facility1}}]]{{#if: {{#var:Facility2}} |, [[{{#var:Facility2}}]]}}{{#if: {{#var:Facility3}} |, [[{{#var:Facility3}}]]}}{{#if: {{#var:Facility4}} |, [[{{#var:Facility4}}]]}}{{#if: {{#var:Facility5}} |, [[{{#var:Facility5}}]]}}
 
}}
 
}}
  
<!-- Building - Production -->
+
<!-- Building - Furniture -->
{{#if: {{{work speed factor|}}} |
+
{{#if: {{{glowradius|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Work Speed Factor = {{{work speed factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Glow Radius = {{{glowradius|}}} }} }}
;Work Speed Factor
 
:{{%| {{{work speed factor|}}} }}
 
 
}}
 
}}
 
+
{{#if: {{{glowcolor|}}} |
{{#if: {{{work efficiency factor|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Glow Color = {{{glowcolor|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Work Efficiency Factor = {{{work efficiency factor|}}} }} }}
+
  {{#vardefine:Red  | {{#replace:{{#explode:{{{glowcolor|}}}|,|0}}|(}} }}
;Work Efficiency Factor
+
  {{#vardefine:Green| {{#explode:{{{glowcolor|}}}|,|1}} }}
:{{%| {{{work efficiency factor|}}} }}
+
  {{#vardefine:Blue | {{#replace:{{#explode:{{{glowcolor|}}}|,|2}}|)}} }}
 +
  {{#vardefine:LightRadius|{{Lit Radius|{{{glowradius|}}}|{{#expr:{{#var:Red}}+{{#var:Green}}+{{#var:Blue}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Light Radius = {{#var:LightRadius}} }} }}
 +
;<abbr title="The furthest away a tile can be before it falls below 30% light">Light Radius</abbr>
 +
:{{#expr:{{#var:LightRadius}} round 2}} <!--
 +
Color Square: --><abbr title="RGB: {{{glowcolor|}}}"><span><div style="width:16px;height:16px;background-color:rgb({{#var:Red}},{{#var:Green}},{{#var:Blue}});display:inline-block;border:1px solid black;vertical-align:middle;"></div></span></abbr>
 
}}
 
}}
  
{{#if: {{{unpowered work speed factor|}}} | <!-- work speed at an unpowered workstation -->
+
{{#if: {{{heatpersecond|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Unpowered Work Speed Factor = {{{unpowered work speed factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Heat Per Second = {{{heatpersecond|}}} }} }}
;Unpowered Work Speed Factor
+
;Heat Per Second
:{{%| {{{unpowered work speed factor|}}} }}
+
:{{{heatpersecond|}}}
 
}}
 
}}
  
<!-- Building - Misc -->
+
{{#if: {{{maxheattemperature|}}} |
{{#if: {{{work speed offset|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Max Heat Temperature = {{{maxheattemperature|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Work Speed Offset = {{{work speed offset|}}} }} }}
+
;Stops Heating At
;Work Speed Offset
+
:{{Temperature| {{{maxheattemperature}}} }}
:{{{work speed offset|}}}
 
 
}}
 
}}
  
{{#if: {{{max simultaneous facilities|}}} | <!-- how many of these facilities a work table can be connected to -->
+
{{#if: {{{mincooltemperature|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Max Simultaneous Facilities = {{{max simultaneous facilities|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Min Cool Temperature = {{{mincooltemperature|}}} }} }}
;Max Simultaneous Facilities
+
;Stops Cooling At
:{{{max simultaneous facilities|}}}
+
:{{Temperature| {{{mincooltemperature}}} }}
 
}}
 
}}
  
{{#if: {{{efficiency|}}} | <!-- efficiency of a battery -->
+
{{#if: {{{surgery success chance factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Efficiency = {{{efficiency|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Surgery Success Chance Factor = {{{surgery success chance factor|}}} }} }}
;Efficiency
+
;Surgery Success Chance Factor
:{{%| {{{efficiency|}}} }}
+
:{{{surgery success chance factor|}}}
 
}}
 
}}
  
<!-- Building - Floors -->
+
{{#if: {{{immunity gain speed factor|}}} |
{{#if: {{{speed|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Immunity Gain Speed Factor = {{{immunity gain speed factor|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Move Speed Factor = {{{speed|}}} }} }}
+
;Immunity Gain Speed Factor
;Move Speed Factor
+
:{{{immunity gain speed factor|}}}
:{{%| {{{speed|}}} }}
 
 
}}
 
}}
  
 
+
{{#if: {{{rest effectiveness|}}} |
<!-- APPAREL -->
+
  {{#if: {{#var:setProperty}} | {{#set:Rest Effectiveness = {{{rest effectiveness|}}} }} }}
{{#if: {{{insulationcold|}}} {{{insulationheat|}}} {{{insulationcoldfactor|}}} {{{insulationheatfactor|}}} {{{armorsharp|}}} {{{armorblunt|}}} {{{armorheat|}}} {{{armorsharpfactor|}}} {{{armorbluntfactor|}}} {{{armorheatfactor|}}} {{{painshockthreshold|}}} {{{coverage|}}} {{{layer|}}} |
+
;Rest Effectiveness
</dl>{{clear}}
+
:{{{rest effectiveness|}}}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Apparel</p>
 
<dl>
 
 
}}
 
}}
  
{{#if: {{{insulationcold|}}} |
+
{{#if: {{{comfort|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Insulation - Cold Base= {{{insulationcold|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Comfort Base = {{{comfort|}}} }} }}
;Insulation - Cold
+
;Comfort
:{{Temperature| {{{insulationcold|}}} || delta}}
+
:{{{comfort|}}}
 
}}
 
}}
  
{{#if: {{{insulationheat|}}} |
+
{{#if: {{{comfort offset|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Insulation - Heat Base= {{{insulationheat|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Comfort Offset = {{{comfort offset|}}} }} }}
;Insulation - Heat
+
;Comfort Offset
:{{Temperature| {{{insulationheat|}}} || delta}}
+
:{{{comfort offset|}}}
 
}}
 
}}
  
{{#if: {{{insulationcoldfactor|}}} |
+
<!-- Building - Recreation -->
   {{#if: {{#var:setProperty}} | {{#set:Insulation Factor - Cold= {{{insulationcoldfactor|}}} }} }}
+
{{#if: {{{recreation power|}}} {{{recreation type|}}} |
;<abbr title="See Apparel for how this is applied">Insulation Factor - Cold</abbr>
+
   {{#if: {{#var:setProperty}} | {{#set:Recreation Power = {{{recreation power|}}} | Recreation Type = {{ucfirst: {{{recreation type|}}} }} }} }}
:{{{insulationcoldfactor|}}}×
+
;Recreation
 +
:{{#if: {{{recreation power|}}} | {{%| {{{recreation power|}}} }} }} {{{recreation type|}}}
 
}}
 
}}
  
{{#if: {{{insulationheatfactor|}}} |
+
<!-- Building - Production -->
   {{#if: {{#var:setProperty}} | {{#set:Insulation Factor - Heat= {{{insulationheatfactor|}}} }} }}
+
{{#if: {{{work speed factor|}}} |
;<abbr title="See Apparel for how this is applied">Insulation Factor - Heat</abbr>
+
   {{#if: {{#var:setProperty}} | {{#set:Work Speed Factor = {{{work speed factor|}}} }} }}
:{{{insulationheatfactor|}}}×
+
;Work Speed Factor
 +
:{{%| {{{work speed factor|}}} }}
 
}}
 
}}
  
{{#if: {{{armorsharp|}}} |
+
{{#if: {{{work efficiency factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Armor - Sharp = {{{armorsharp|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Work Efficiency Factor = {{{work efficiency factor|}}} }} }}
;Armor - Sharp
+
;Work Efficiency Factor
:{{{armorsharp|}}}%
+
:{{%| {{{work efficiency factor|}}} }}
 
}}
 
}}
  
{{#if: {{{armorblunt|}}} |
+
{{#if: {{{unpowered work speed factor|}}} | <!-- work speed at an unpowered workstation -->
   {{#if: {{#var:setProperty}} | {{#set:Armor - Blunt= {{{armorblunt|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Unpowered Work Speed Factor = {{{unpowered work speed factor|}}} }} }}
;Armor - Blunt
+
;Unpowered Work Speed Factor
:{{{armorblunt|}}}%
+
:{{%| {{{unpowered work speed factor|}}} }}
 
}}
 
}}
  
{{#if: {{{armorheat|}}} |
+
<!-- Building - Misc -->
   {{#if: {{#var:setProperty}} | {{#set:Armor - Heat = {{{armorheat|}}} }} }}
+
{{#if: {{{work speed offset|}}} |
;Armor - Heat
+
   {{#if: {{#var:setProperty}} | {{#set:Work Speed Offset = {{{work speed offset|}}} }} }}
:{{{armorheat|}}}%
+
;Work Speed Offset
 +
:{{{work speed offset|}}}
 
}}
 
}}
  
{{#if: {{{armorsharpfactor|}}} |
+
{{#if: {{{max simultaneous facilities|}}} | <!-- how many of these facilities a work table can be connected to -->
   {{#if: {{#var:setProperty}} | {{#set:Armor Factor - Sharp = {{{armorsharpfactor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Max Simultaneous Facilities = {{{max simultaneous facilities|}}} }} }}
;Armor Factor - Sharp
+
;Max Simultaneous Facilities
:{{{armorsharpfactor|}}}
+
:{{{max simultaneous facilities|}}}
 
}}
 
}}
  
{{#if: {{{armorbluntfactor|}}} |
+
{{#if: {{{efficiency|}}} | <!-- efficiency of a battery -->
   {{#if: {{#var:setProperty}} | {{#set:Armor Factor - Blunt= {{{armorbluntfactor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Efficiency = {{{efficiency|}}} }} }}
;Armor Factor - Blunt
+
;Efficiency
:{{{armorbluntfactor|}}}
+
:{{%| {{{efficiency|}}} }}
 
}}
 
}}
  
{{#if: {{{armorheatfactor|}}} |
+
{{#if: {{{paintable|}}} | <!-- Paintable property. -->
   {{#if: {{#var:setProperty}} | {{#set:Armor Factor - Heat = {{{armorheatfactor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Paintable= {{{paintable|}}} }} }}
;Armor Factor - Heat
+
;Paintable
:{{{armorheatfactor|}}}
+
:{{ucfirst:{{{paintable|}}} }}
 
}}
 
}}
  
{{#if: {{{painshockthreshold|}}} |
+
<!-- Building - Floors -->
   {{#if: {{#var:setProperty}} | {{#set:Pain Shock Threshold = {{{painshockthreshold|}}} }} }}
+
{{#if: {{{speed|}}} |
;Pain Shock Threshold
+
   {{#if: {{#var:setProperty}} | {{#set:Move Speed Factor = {{{speed|}}} }} }}
:{{{painshockthreshold|}}}%
+
;Move Speed Factor
 +
:{{%| {{{speed|}}} }}
 
}}
 
}}
  
{{#switch: {{lc:{{{countsAsClothingForNudity|{{{clothing for nudity|}}} }}} }}
 
| 1 | yes | y | t | true = {{#if: {{#var:setProperty}} | {{#set:Clothing For Nudity = True }} }}
 
;Clothing For Nudity
 
:True
 
| 0 | no | n | f | false = {{#if: {{#var:setProperty}} | {{#set:Clothing For Nudity = False }} }}
 
;Clothing For Nudity
 
:False
 
| #default =
 
 
}}
 
}}
  
{{#if: {{{lifestage|}}} |
+
<!-- MECHANOID -->
   {{#if: {{#var:setProperty}} | {{#set:Lifestage = {{{lifestage|}}} }} }}
+
{{#if: {{{EMP resistance|}}} {{{bandwidth cost|}}} {{{wastepacks per recharge|}}} {{{control taking time|}}} {{{repair energy cost|}}} |
;Lifestage
+
</dl>{{clear}}
:{{{lifestage|}}}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Mechanoid</p>
 +
<dl>
 +
 
 +
{{#if: {{{EMP resistance|}}} |
 +
   {{#if: {{#var:setProperty}} | {{#set:EMP Resistance = {{{EMP resistance|}}} }} }}
 +
;EMP Resistance
 +
:{{%| {{{EMP resistance|}}} }}
 
}}
 
}}
  
 +
{{#if: {{{bandwidth cost|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Bandwidth Cost = {{{bandwidth cost|}}} }} }}
 +
;Bandwidth Cost
 +
:{{{bandwidth cost|}}}
 +
}}
  
{{#if: {{{coverage|}}} |
+
{{#if: {{{wastepacks per recharge|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Coverage = {{{coverage|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Wastepacks Per Recharge = {{{wastepacks per recharge|}}} }} }}
;Coverage
+
;Wastepacks Per Recharge
:{{{coverage|}}}
+
:{{{wastepacks per recharge|}}}
 
}}
 
}}
  
{{#if: {{{layer|}}} |
+
{{#if: {{{control taking time|}}} |
   {{#if: {{#var:setProperty}} | {{#set:layer= {{{layer|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Control Taking Time = {{{control taking time|}}} }} }}
;Layer
+
;Control Taking Time
:{{{layer|}}}
+
:{{{control taking time|}}}s
 
}}
 
}}
  
<!-- All pawns (animals, humanoids, mechanoids) -->
+
{{#if: {{{repair energy cost|}}} |
<!-- Animal Health --->
+
  {{#if: {{#var:setProperty}} | {{#set:repair energy cost = {{{repair energy cost|}}} }} }}
{{#if: {{{movespeed|}}} {{{massyoung|}}} {{{massjuvenile|}}} {{{massadult|}}} {{{healthscale|}}} {{{bodysize|}}} {{{ridingspeed|}}} {{{hungerrate|}}} {{{diet|}}} {{{lifespan|}}} {{{manhunter|}}} {{{manhuntertame|}}} {{{trainable|}}} {{{wildness|}}} {{{petness|}}} {{{predator|}}} {{{roamMtb|}}} {{{nuzzleMtb|}}} {{{maturityage|}}} {{{juvenileage|}}} {{{combatPower|}}}|
+
;repair energy cost
 +
:{{--|{{%| {{{repair energy cost|}}} }}}} / 100 {{HP}}
 +
}}
 +
 
 +
}}
 +
 
 +
 
 +
<!-- 4. APPAREL -->
 +
{{#if: {{{insulationcold|}}} {{{insulationheat|}}} {{{insulationcoldfactor|}}} {{{insulationheatfactor|}}} {{{armorsharp|}}} {{{armorblunt|}}} {{{armorheat|}}} {{{armorsharpfactor|}}} {{{armorbluntfactor|}}} {{{armorheatfactor|}}} {{{painshockthreshold|}}} {{{coverage|}}} {{{layer|}}} |
 
</dl>{{clear}}
 
</dl>{{clear}}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Pawn Stats</p>
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>{{#ifeq: {{{type|}}} | Gear | Apparel| Armor}}</p>
 
<dl>
 
<dl>
  
{{#ifeq: {{{type|}}} | Animals | {{#if: {{#var:setProperty}} | {{#set:Type = {{{type2|}}} }} }} }}
+
{{#if: {{{insulationcold|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Insulation - Cold Base= {{{insulationcold|}}} }} }}
 +
;Insulation - Cold
 +
:{{Temperature| {{{insulationcold|}}} || delta}}
 +
}}
  
{{#if: {{{combatPower|}}} |
+
{{#if: {{{insulationheat|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Combat Power = {{{combatPower|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Insulation - Heat Base= {{{insulationheat|}}} }} }}
;Combat Power
+
;Insulation - Heat
:{{{combatPower}}}
+
:{{Temperature| {{{insulationheat|}}} || delta}}
 
}}
 
}}
  
{{#if: {{{bandwidth|}}} |
+
{{#if: {{{insulationcoldfactor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Bandwidth = {{{bandwidth|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Insulation Factor - Cold= {{{insulationcoldfactor|}}} }} }}
;Bandwidth
+
;<abbr title="See Apparel for how this is applied">Insulation Factor - Cold</abbr>
:{{{bandwidth|}}}
+
:{{{insulationcoldfactor|}}}×
 
}}
 
}}
  
{{#if: {{{movespeed|}}} |
+
{{#if: {{{insulationheatfactor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Move Speed Base = {{{movespeed|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Insulation Factor - Heat= {{{insulationheatfactor|}}} }} }}
;Move Speed
+
;<abbr title="See Apparel for how this is applied">Insulation Factor - Heat</abbr>
:{{{movespeed|}}} {{CS}}
+
:{{{insulationheatfactor|}}}×
 
}}
 
}}
  
{{#if: {{{healthscale|}}} | <!-- please add a short explanation of this property here -->
+
{{#if: {{{armorsharp|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Health Scale = {{{healthscale|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor - Sharp = {{{armorsharp|}}} }} }}
;Health Scale
+
;Armor - Sharp
:{{{healthscale|}}}
+
:{{{armorsharp|}}}%
 
}}
 
}}
  
{{#if: {{{bodysize|}}} |
+
{{#if: {{{armorblunt|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Body Size = {{{bodysize|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor - Blunt = {{{armorblunt|}}} }} }}
;Body Size
+
;Armor - Blunt
:{{{bodysize|}}}
+
:{{{armorblunt|}}}%
 +
}}
  
{{#ifeq: {{{type|}}} | Mechanoid |
+
{{#if: {{{armorheat|}}} |
  {{#vardefine:MassAdult | {{#expr: 60 * {{{bodysize}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor - Heat = {{{armorheat|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Mass - Adult = {{#var:MassAdult}} }} }}
+
;Armor - Heat
;Mass
+
:{{{armorheat|}}}%
:{{#var:MassAdult}} kg 
+
}}
  
 +
{{#if: {{{armorsharpfactor|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Armor Factor - Sharp = {{{armorsharpfactor|}}} }} }}
 +
;Armor Factor - Sharp
 +
:{{{armorsharpfactor|}}}
 +
}}
  
  {{#vardefine:PackCapacity | {{#expr: {{{bodysize|}}} * 35 }} }}
+
{{#if: {{{armorbluntfactor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Pack Capacity = {{#var:PackCapacity}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor Factor - Blunt= {{{armorbluntfactor|}}} }} }}
;Pack Capacity
+
;Armor Factor - Blunt
:{{#var:PackCapacity}} kg
+
:{{{armorbluntfactor|}}}
 +
}}
  
|
+
{{#if: {{{armorheatfactor|}}} |
  <!-- Most animal babies are 0.2 the size of the adults, but birds are 0.1 -->
+
   {{#if: {{#var:setProperty}} | {{#set:Armor Factor - Heat = {{{armorheatfactor|}}} }} }}
  {{#vardefine:BabyScale | {{{babyscale|0.2}}} }}
+
;Armor Factor - Heat
   {{#if: {{#var:setProperty}} | {{#set:Baby Scale = {{#var:BabyScale}} }} }}
+
:{{{armorheatfactor|}}}
 +
}}
  
  <!-- Mass is 60*bodysize, with no exceptions -->
+
{{#if: {{{painshockthreshold|}}} |
  {{#vardefine:MassYoung | {{#expr: 60 * {{{bodysize}}} * {{#var:BabyScale}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Pain Shock Threshold = {{{painshockthreshold|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Mass - Young = {{#var:MassYoung}} }} }}
+
;Pain Shock Threshold
;Mass - Baby
+
:{{{painshockthreshold|}}}%
:{{#var:MassYoung}} kg
+
}}
  
  {{#vardefine:MassJuvenile | {{#expr: 60 * {{{bodysize}}} * 0.5 }} }}
+
{{#switch: {{lc:{{{countsAsClothingForNudity|{{{clothing for nudity|}}} }}} }}
  {{#if: {{#var:setProperty}} | {{#set:Mass - Juvenile = {{#var:MassJuvenile}} }} }}
+
| 1 | yes | y | t | true = {{#if: {{#var:setProperty}} | {{#set:Clothing For Nudity = True }} }}
;Mass - Juvenile
+
;Clothing For Nudity
:{{#var:MassJuvenile}} kg
+
:True
 +
| 0 | no | n | f | false = {{#if: {{#var:setProperty}} | {{#set:Clothing For Nudity = False }} }}
 +
;Clothing For Nudity
 +
:False
 +
| #default =
 +
}}
  
  {{#vardefine:MassAdult | {{#expr: 60 * {{{bodysize}}} }} }}
+
{{#if: {{{coverage|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Mass - Adult = {{#var:MassAdult}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Coverage = {{{coverage|}}} }} }}
;Mass - Adult
+
;Coverage
:{{#var:MassAdult}} kg
+
:{{{coverage|}}}
 
 
{{#ifeq: {{lc:{{{packanimal|}}} }} | true |
 
  {{#vardefine:PackCapacity | {{#expr: {{{bodysize|}}} * 35 }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Pack Capacity = {{#var:PackCapacity}} }} }}
 
;Pack Capacity
 
:{{#var:PackCapacity}} kg
 
}}
 
 
}}
 
}}
  
  {{#vardefine: CarryingCapacity | {{#expr: 75 * {{{bodysize|}}} round0}} }}
+
{{#if: {{{layer|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Carrying Capacity = {{#var:CarryingCapacity}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:layer= {{{layer|}}} }} }}
;Carrying Capacity
+
;Layer
:{{#var:CarryingCapacity}} kg
+
:{{{layer|}}}
 
}}
 
}}
 
  
 
}}
 
}}
  
{{#if: {{{ridingspeed|}}} |
+
{{#if: {{{lifestage|}}} | <!-- Was below the switch and above coverage. Taken outside "Appeal" as the Biomutation lance seems to use it. -->
   {{#if: {{#var:setProperty}} | {{#set:Riding Speed = {{{ridingspeed|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Lifestage = {{{lifestage|}}} }} }}
;<abbr title="Multiplier to the caravan's movement speed.">Riding Speed</abbr>
+
;Lifestage
:{{{ridingspeed|}}}
+
:{{{lifestage|}}}
 
}}
 
}}
  
{{#if: {{#vardefineecho:FilthRate | {{{filth rate|{{#if: {{{bodysize|}}} | 1}} }}} }} | <!-- Filth rate seems to default to 1 in game if it's not set in the xml. -->
 
  {{#if: {{#var:setProperty}} | {{#set:Animal Filth Rate = {{#var:FilthRate}} }} }}
 
;<abbr title="The average amount of filth produced on constructed floors per 1000 cells walked by this creature.">Filth Rate</abbr>
 
:{{#var:FilthRate}}
 
}}
 
  
{{#if: {{{hungerrate|}}} |
+
<!-- 5. PAWN STATS -->
  {{#if: {{#var:setProperty}} | {{#set:Base Hunger Rate = {{{hungerrate|}}} | Real Hunger Rate = {{#expr: {{{hungerrate|}}} * 1.6 round 2}} }} }}
+
<!-- Animal Health --->
;<abbr title="Nutrition lost per day.">Hunger Rate</abbr>
+
{{#if: {{{combatPower|}}} {{{movespeed|}}} {{{massyoung|}}} {{{massjuvenile|}}} {{{massadult|}}} {{{healthscale|}}} {{{bodysize|}}} {{{ridingspeed|}}} {{{hungerrate|}}} {{{diet|}}} {{{lifespan|}}} {{{manhunter|}}} {{{manhuntertame|}}} {{{trainable|}}} {{{wildness|}}} {{{petness|}}} {{{predator|}}} {{{roamMtb|}}} {{{nuzzleMtb|}}} {{{maturityage|}}} {{{juvenileage|}}} {{{psychic sensitivity|}}} {{{toxic resistance|}}} {{{toxic environment resistance|}}} |
:{{#expr: {{{hungerrate|}}} * 1.6 round2}} Nutrition/Day
+
</dl>{{clear}}
}}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Pawn Stats</p>
 +
<dl>
 +
 
 +
{{#ifeq: {{{type|}}} | Animals | {{#if: {{#var:setProperty}} | {{#set:Type = {{{type2|}}} }} }} }}
  
{{#if: {{{diet|}}} |
+
{{#if: {{{combatPower|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Diet = {{{diet|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Combat Power = {{{combatPower|}}} }} }}
;Diet
+
;Combat Power
:{{{diet|}}}
+
:{{{combatPower}}}
 
}}
 
}}
  
{{#if: {{{lifespan|}}} |
+
{{#if: {{{movespeed|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Life Expectancy = {{{lifespan|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Move Speed Base = {{{movespeed|}}} }} }}
;Life Expectancy
+
;Move Speed
:{{{lifespan|}}} years
+
:{{{movespeed|}}} {{CS}}
 
}}
 
}}
  
{{#if: {{{manhunter|}}} |
+
{{#if: {{{healthscale|}}} | <!-- please add a short explanation of this property here -->
   {{#if: {{#var:setProperty}} | {{#set:Turn Manhunter Chance When Attacked = {{{manhunter|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Health Scale = {{{healthscale|}}} }} }}
;<abbr title="Chance of this animal turning manhunter when attacked.">Manhunter Chance</abbr>
+
;Health Scale
:{{%| {{{manhunter|}}} }}
+
:{{%|{{{healthscale|}}} }} {{HP}}
 
}}
 
}}
  
{{#if: {{{manhuntertame|}}} |
+
{{#if: {{{bodysize|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Turn Manhunter Chance When Taming = {{{manhuntertame|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Body Size = {{{bodysize|}}} }} }}
;<abbr title="Chance of this animal turning manhunter on a failed taming attempt.">Manhunter Chance (Taming)</abbr>
+
;Body Size
:{{%| {{{manhuntertame|}}} }}
+
:{{{bodysize|}}}
}}
+
 
 +
  <!-- Moved outside as this is always used. There is no performance difference. -->
 +
  {{#vardefine:MassAdult | {{#expr: 60 * {{{bodysize}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Mass - Adult = {{#var:MassAdult}} }} }}
 +
  {{#vardefine:PackCapacity | {{#expr: {{{bodysize|}}} * 35 }} }}
 +
 
 +
{{#ifeq: {{{type|}}} | Mechanoid |
 +
;Mass
 +
:{{#var:MassAdult}} kg 
  
{{#if: {{{trainable|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Pack Capacity = {{#var:PackCapacity}} }} }}
   {{#if: {{#var:setProperty}} |
+
;Pack Capacity
    {{#set:Trainable Intelligence = {{{trainable|}}} }}
+
:{{#var:PackCapacity}} kg
    {{#switch: {{lc: {{{trainable|}}} }}
 
      | none =        {{#set:Can Train Guard = no  | Can Train Attack = no  | Can Train Rescue = no | Can Train Haul = no  }}
 
      | hauling only = {{#set:Can Train Guard = no  | Can Train Attack = no  | Can Train Rescue = no | Can Train Haul = yes }}
 
      | simple =      {{#set:Can Train Guard = yes | Can Train Attack = no  | Can Train Rescue = no | Can Train Haul = no  }}
 
      | intermediate = {{#set:Can Train Guard = yes | Can Train Attack = yes | Can Train Rescue = no | Can Train Haul = no  }}
 
      | advanced =    {{#set:Can Train Guard = yes | Can Train Attack = yes
 
        | Can Train Rescue = {{#ifexpr: {{{bodysize|}}} < 0.65| no | yes}}
 
        | Can Train Haul  = {{#ifexpr: {{{bodysize|}}} < 0.4 | no | yes}}
 
  }} }} }}
 
;Trainable Intelligence
 
:{{ucfirst:{{{trainable|}}} }}
 
}}
 
  
{{#if: {{{wildness|}}} |
+
|  
  {{#if: {{#var:setProperty}} | {{#set:Wildness = {{{wildness|}}} }} }}
 
;<abbr title="Wilder creatures are naturally more difficult to tame, train, and handle.">Wildness</abbr>
 
:{{%| {{{wildness|}}} | 0 }}
 
  
  {{#vardefine: MinHandlingSkill | {{#if: {{{min handling skill|}}} | {{{min handling skill|}}} | {{#expr:
+
{{#ifeq: {{{type|}}} | Entity |
    {{#ifexpr: {{{wildness|}}} < 0.2 | 0
+
;Mass
      | {{#ifexpr: {{{wildness|}}} < 0.45 | 1
+
:{{#var:MassAdult}} kg 
        | {{#ifexpr: {{{wildness|}}} < 0.55 | 4
+
|
          | {{#ifexpr: {{{wildness|}}} < 0.75 | 5
+
  <!-- Most animal babies are 0.2 the size of the adults, but birds are 0.1 -->
            | {{#ifexpr: {{{wildness|}}} < 0.8 | 7
+
  {{#vardefine:BabyScale | {{{babyscale|0.2}}} }}
              | {{#ifexpr: {{{wildness|}}} < 0.9 | 8
+
  {{#if: {{#var:setProperty}} | {{#set:Baby Scale = {{#var:BabyScale}} }} }}
                | {{#ifexpr: {{{wildness|}}} < 0.97 | 9
+
 
                  | 10
+
  <!-- Mass is 60*bodysize, with no exceptions -->
    }} }} }} }} }} }} }} <!-- Is this really the exact formula? [[Animals#Minimum_skill]] says otherwise, but that formula must be wrong as well -->
+
  {{#vardefine:MassYoung | {{#expr: 60 * {{{bodysize}}} * {{#var:BabyScale}} }} }}
    {{#ifeq: {{#var:Name}} | Human | + 7 }}
+
   {{#if: {{#var:setProperty}} | {{#set:Mass - Young = {{#var:MassYoung}} }} }}
  }} }} }}
+
;Mass - Baby
   {{#if: {{#var:setProperty}} | {{#set:Minimum Handling Skill = {{#var:MinHandlingSkill}} }} }}
+
:{{#var:MassYoung}} kg
  {{#ifeq: {{#var:MinHandlingSkill}}|0||
 
;<abbr title="This creature cannot be tamed, trained, or commanded by anyone with less than this skill in animals.">Minimum Handling Skill</abbr>
 
:{{#var:MinHandlingSkill}} }}
 
}}
 
  
{{#if: {{{petness|}}} | {{#if: {{#var:setProperty}} | {{#set:Petness = {{{petness|}}} }} }} }}
+
  {{#vardefine:MassJuvenile | {{#expr: 60 * {{{bodysize}}} * 0.5 }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Mass - Juvenile = {{#var:MassJuvenile}} }} }}
 +
;Mass - Juvenile
 +
:{{#var:MassJuvenile}} kg
  
{{#ifeq: {{{predator|}}} | true | {{#if: {{#var:setProperty}} | {{#set:Is Predator = true}} }}|}}
+
;Mass - Adult
 +
:{{#var:MassAdult}} kg
  
{{#if: {{{roamMtb|}}} |
+
{{#ifeq: {{lc:{{{packanimal|}}} }} | true |
   {{#if: {{#var:setProperty}} | {{#set:Roam Mtb Days = {{{roamMtb|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Pack Capacity = {{#var:PackCapacity}} }} }}
;<abbr title="How often an animal will attempt to roam away if not in a pen.">Roam Interval</abbr>
+
;Pack Capacity
:{{{roamMtb|}}} days
+
:{{#var:PackCapacity}} kg
 +
}}
 +
}}
 
}}
 
}}
  
{{#if: {{{nuzzleMtb|}}} |
+
{{#ifeq: {{{type|}}} | Entity | |
   {{#if: {{#var:setProperty}} | {{#set:Nuzzle Mtb Hours = {{{nuzzleMtb|}}} }} }}
+
   {{#vardefine: CarryingCapacity | {{#expr: 75 * {{{bodysize|}}} round0}} }}
;<abbr title="How often an animal will nuzzle friendly colonists, on average.">Nuzzle Interval</abbr>
+
  {{#if: {{#var:setProperty}} | {{#set:Carrying Capacity = {{#var:CarryingCapacity}} }} }}
{{#ifexpr: {{{nuzzleMtb|}}} <= 24
+
;Carrying Capacity
  |{{#switch: {{{nuzzleMtb|}}}
+
:{{#var:CarryingCapacity}} kg
    |24 = :1&nbsp;day
+
}}
    |1 = :1&nbsp;hour
 
    |#default = :{{{nuzzleMtb|}}}&nbsp;hours}}
 
  |:{{#expr: {{{nuzzleMtb|}}} / 24 round1}}&nbsp;days}}
 
 
}}
 
}}
  
{{#if: {{{mateMtb|}}} |
+
{{#if: {{{ridingspeed|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Mate Mtb Hours = {{{mateMtb|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Riding Speed = {{{ridingspeed|}}} }} }}
;{{Hover title|link=no|How often an awake, non-sterilised male will attempt to mate with a female, on average.|Mate Interval}}
+
;<abbr title="Multiplier to the caravan's movement speed.">Riding Speed</abbr>
:{{{mateMtb|}}} hours
+
:{{{ridingspeed|}}}
 
}}
 
}}
  
{{#if: {{{maturityage|}}} |
+
{{#if: {{#vardefineecho:FilthRate | {{{filth rate|{{#if: {{{bodysize|}}} | 1}} }}} }} | <!-- Filth rate seems to default to 1 in game if it's not set in the xml. -->
   {{#if: {{#var:setProperty}} | {{#set:Maturity Age = {{{maturityage|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Animal Filth Rate = {{#var:FilthRate}} }} }}
;{{Hover title|link=no|The age at which an animal reaches adulthood.|Maturity Age}}
+
;<abbr title="The average amount of filth produced on constructed floors per 1000 cells walked by this creature.">Filth Rate</abbr>
:{{#expr:{{{maturityage|}}} round 3}} years {{#ifexpr: {{{maturityage|}}}  < 1 | ({{formatnum: {{#expr: ({{formatnum:{{{maturityage|}}} |R}}*60)round 1}} }} days)
+
:{{#var:FilthRate}}
 
}}
 
}}
  
{{#if: {{{juvenileage|}}} |
+
{{#if: {{{hungerrate|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Juvenile Age = {{{juvenileage|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Base Hunger Rate = {{{hungerrate|}}} | Real Hunger Rate = {{#expr: {{{hungerrate|}}} * 1.6 round 2}} }} }}
;{{Hover title|link=no|The age at which an animal becomes a juvenile.|Juvenile Age}}
+
;<abbr title="Nutrition lost per day.">Hunger Rate</abbr>
:{{#expr:{{{juvenileage|}}} round 3}} years {{#ifexpr: {{{juvenileage|}}} < 1 | ({{formatnum: {{#expr: ({{formatnum:{{{juvenileage|}}}|R}}*60)round 1}} }} days) }} }}
+
:{{#expr: {{{hungerrate|}}} * 1.6 round2}} Nutrition/Day
 
}}
 
}}
  
 +
{{#if: {{{diet|}}} |
 +
  {{#if: {{#var:setProperty}} |
 +
    {{#set:Diet = {{#explode:{{{diet|}}}|,|0}}
 +
        | Diet = {{#explode:{{{diet|}}}|,|1}}
 +
        | Diet = {{#explode:{{{diet|}}}|,|2}} }} }}
 +
;Diet
 +
:{{{diet|}}}
 +
}}
  
{{#if: {{{min comfortable temperature|}}} |
+
{{#if: {{{lifespan|}}} |
   {{#if: {{{max comfortable temperature|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Life Expectancy = {{{lifespan|}}} }} }}
    {{#if: {{#var:setProperty}} | {{#set:Min Comfortable Temperature = {{{min comfortable temperature|}}} }} }}
+
;Life Expectancy
    {{#if: {{#var:setProperty}} | {{#set:Max Comfortable Temperature = {{{max comfortable temperature|}}} }} }}
+
:{{{lifespan|}}} years
;Comfortable Temp Range
+
}}
:{{Temperature|{{{min comfortable temperature|}}}|{{{max comfortable temperature|}}} }}
 
}} }}
 
  
{{#if: {{{livesin_temperateforest|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Temperate Forest = true }} }} }}
+
{{#if: {{{manhunter|}}} |
{{#if: {{{livesin_temperateswamp|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Temperate Swamp = true }} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Turn Manhunter Chance When Attacked = {{{manhunter|}}} }} }}
{{#if: {{{livesin_tropicalrainforest|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Tropical Rainforest = true }} }} }}
+
;<abbr title="Chance of this animal turning manhunter when attacked.">Manhunter Chance</abbr>
{{#if: {{{livesin_tropicalswamp|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Tropical Swamp = true }} }} }}
+
:{{%| {{{manhunter|}}} }}
{{#if: {{{livesin_aridshrubland|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Arid Shrubland = true }} }} }}
 
{{#if: {{{livesin_desert|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Desert = true }} }} }}
 
{{#if: {{{livesin_extremedesert|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Extreme Desert = true }} }} }}
 
{{#if: {{{livesin_borealforest|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Boreal Forest = true }} }} }}
 
{{#if: {{{livesin_coldbog|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Cold Bog = true }} }} }}
 
{{#if: {{{livesin_tundra|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Tundra = true }} }} }}
 
{{#if: {{{livesin_icesheet|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Ice Sheet = true }} }} }}
 
{{#if: {{{livesin_seaice|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Sea Ice = true }} }} }}
 
 
 
{{#if: {{{meatyield|}}} {{{meatname|}}} {{{leathername|}}} {{{leatheryield|}}} {{{milk|}}} {{{milkname|}}} {{{milktime|}}} {{{wool|}}} {{{woolname|}}} {{{sheartime|}}} {{{eggsmin|}}} {{{eggsmax|}}} {{{eggtime|}}} {{{eggs_avg|}}} {{{eggs_unfertilized|}}} {{{gestation|}}} {{{offspring|}}} {{{avg offspring|}}} |
 
</dl>{{clear}}
 
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Production</p>
 
<dl>
 
 
}}
 
}}
  
{{#ifeq:{{#expr:{{#ifeq:{{{type|}}}|Animals|1|0}} or {{#ifeq:{{{type|}}}|Animal|1|0}} }}|1|
+
{{#if: {{{manhuntertame|}}} |
   {{#vardefine: MeatName | {{{meatname | {{#var:Name}} meat}}} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Turn Manhunter Chance When Taming = {{{manhuntertame|}}} }} }}
  {{#vardefine: LeatherName | {{{leathername | {{#var:Name}} leather}}} }}
+
;<abbr title="Chance of this animal turning manhunter on a failed taming attempt.">Manhunter Chance (Taming)</abbr>
  {{#if: {{{is exotic species|}}} | {{#if: {{#var:setProperty}} | {{#set:Is Exotic Species = true}} }} | {{#if: {{#var:setProperty}} | {{#set:Is Exotic Species = false }} }} }}|
+
:{{%| {{{manhuntertame|}}} }}
 
}}
 
}}
  
{{#if: {{#var:LeatherName }} | {{#if: {{#var:setProperty}} | {{#set:Leather Name = {{#var:LeatherName}} }} }} }}
+
{{#if: {{{trainable|}}} |
 
+
   {{#if: {{#var:setProperty}} |
{{#if: {{{bodysize|}}} |
+
     {{#set:Trainable Intelligence = {{{trainable|}}} }}
  <!-- Uses meatyield when set, otherwise interpolates from curve applied to 140*body_size or basemeatamount*bodysize -->
+
     {{#switch: {{lc: {{{trainable|}}} }}
  <!-- See Property:Meat_Yield for details -->
+
      | none =        {{#set:Can Train Guard = no  | Can Train Attack = no  | Can Train Rescue = no | Can Train Haul = no  }}
   {{#if:{{#var:MeatName}} |
+
      | hauling only = {{#set:Can Train Guard = no  | Can Train Attack = no  | Can Train Rescue = no | Can Train Haul = yes }}
     {{#vardefine: MeatYield | {{{meatyield | {{Meat Leather Curve | {{{basemeatamount|140}}} * {{{bodysize|}}} }} }}} }}
+
      | simple =      {{#set:Can Train Guard = yes | Can Train Attack = no  | Can Train Rescue = no | Can Train Haul = no  }}
     {{#if: {{#var:setProperty}} | {{#set:Meat Yield = {{#var:MeatYield}} }} }}
+
      | intermediate = {{#set:Can Train Guard = yes | Can Train Attack = yes | Can Train Rescue = no | Can Train Haul = no  }}
;Meat Yield
+
      | advanced =    {{#set:Can Train Guard = yes | Can Train Attack = yes
:{{#var:MeatYield}} [[Meat|{{lc:{{#var:MeatName}} }}]]
+
        | Can Train Rescue = {{#ifexpr: {{{bodysize|}}} < 0.65| no | yes}}
  }}
+
        | Can Train Haul  = {{#ifexpr: {{{bodysize|}}} < 0.4 | no | yes}}
 
+
   }} }} }}
  <!-- Uses leatheryield when set, otherwise interpolates from curve applied to 40*body_size or baseleatheramount*bodysize-->
+
;Trainable Intelligence
  <!-- See Property:Leather_Yield for details -->
+
:{{ucfirst:{{{trainable|}}} }}
  {{#if: {{#var:LeatherName}}
 
    | {{#ifeq: {{#vardefineecho:LeatherYield | {{{leatheryield | {{Meat Leather Curve | {{{baseleatheramount|40}}} * {{{bodysize|}}} }} }}} }}
 
| 0 |
 
| {{#if: {{#var:setProperty}} | {{#set:Leather Yield = {{#var:LeatherYield}} }} }}
 
;Leather Yield
 
:{{#var:LeatherYield}} [[{{#var:LeatherName}}|{{lc:{{#var:LeatherName}} }}]]
 
}} }} }}
 
 
 
{{#if: {{{milk|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Milk Amount = {{{milk|}}} }} }}
 
  {{#vardefine: MilkName | {{{milkname| Milk}}} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Milk Name = {{#var:MilkName}} }} }}
 
;Milk Amount
 
:{{{milk|}}} [[{{#var:MilkName}}|{{lc:{{#var:MilkName}} }}]]
 
 
}}
 
}}
  
 +
{{#if: {{{wildness|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Wildness = {{{wildness|}}} }} }}
 +
;<abbr title="Wilder creatures are naturally more difficult to tame, train, and handle.">Wildness</abbr>
 +
:{{%| {{{wildness|}}} | 0 }}
  
{{#if: {{{milktime|}}} |
+
  {{#vardefine: MinHandlingSkill | {{#if: {{{min handling skill|}}} | {{{min handling skill|}}} | {{#expr:
   {{#if: {{#var:setProperty}} | {{#set:Milking Interval Days = {{{milktime|}}} }} }}
+
   {{#expr:
   {{#if: {{#var:setProperty}} | {{#set:Daily Milk Average = {{#expr: {{{milk|}}}/{{{milktime|}}}round2}} }} }}
+
    {{#ifexpr: {{{wildness|}}} < 0.151 | 0 | {{#expr: {{{wildness|}}}*10 - 0.01 - {{#ifexpr: {{{wildness|}}} > 0.7 | 0 | 1 }}  round 0 }} }}
;Milking Interval
+
   }} <!-- Changed to use the formula described in [[Minimum_Handling_Skill]]. The "-0.01" is to simulate the rounding half down. This could be changed to return values against a table, but this is clearer and seemlingly faster.-->
:{{{milktime|}}}&nbsp;days
+
    {{#ifeq: {{#var:Name}} | Human | + 7 }}
 +
  }} }} }}
 +
 
 +
  {{#if: {{#var:setProperty}} | {{#set:Minimum Handling Skill = {{#var:MinHandlingSkill}} }} }}
 +
  {{#ifeq: {{#var:MinHandlingSkill}}|0||
 +
;<abbr title="This creature cannot be tamed, trained, or commanded by anyone with less than this skill in animals.">Minimum Handling Skill</abbr>
 +
:{{#var:MinHandlingSkill}} }}
 
}}
 
}}
  
{{#if: {{{wool|}}}|
+
{{#if: {{{petness|}}} | {{#if: {{#var:setProperty}} | {{#set:Petness = {{{petness|}}} }} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Wool Amount = {{{wool|}}} }} }}
 
  {{#vardefine: WoolName | {{{woolname | {{#var:Name}} wool}}} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Wool Name = {{#var:WoolName}} }} }}
 
;Wool Amount
 
:{{{wool|}}} [[{{#var:WoolName}}|{{lc:{{#var:WoolName}} }}]]
 
}}
 
  
{{#if: {{{sheartime|}}} |
+
{{#ifeq: {{{predator|}}} | true | {{#if: {{#var:setProperty}} | {{#set:Is Predator = true}} }}|}}
  {{#if: {{#var:setProperty}} | {{#set:Shearing Interval Days = {{{sheartime|}}} }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Daily Wool Average = {{#expr: {{{wool|}}}/{{{sheartime}}}round2}} }} }}
 
;Shearing Interval
 
:{{{sheartime|}}}&nbsp;days
 
}}
 
  
{{#if: {{{eggsmin|}}} |
+
{{#if: {{{roamMtb|}}} |
   {{#if: {{{eggsmax|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Roam Mtb Days = {{{roamMtb|}}} }} }}
    {{#if: {{#var:setProperty}} | {{#set:Eggs Per Clutch Minimum = {{{eggsmin|}}} }} }}
+
;<abbr title="How often an animal will attempt to roam away if not in a pen.">Roam Interval</abbr>
    {{#if: {{#var:setProperty}} | {{#set:Eggs Per Clutch Maximum = {{{eggsmax|}}} }} }}
+
:{{{roamMtb|}}} days
;Eggs Per Clutch
+
}}
:{{{eggsmin|}}} to {{{eggsmax|}}}
 
}} }}
 
  
{{#if: {{{eggtime|}}} |
+
{{#if: {{{nuzzleMtb|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Egg Laying Interval = {{{eggtime|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Nuzzle Mtb Hours = {{{nuzzleMtb|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Eggs Per Season Average = {{#expr: {{{eggs_avg|}}}/{{{eggtime|}}}*15 round 2}} }} }}
+
;<abbr title="How often an animal will nuzzle friendly colonists, on average.">Nuzzle Interval</abbr>
;Egg Laying Interval
+
{{#ifexpr: {{{nuzzleMtb|}}} <= 24
:{{{eggtime|}}}&nbsp;days
+
  |{{#switch: {{{nuzzleMtb|}}}
 +
    |24 = :1&nbsp;day
 +
    |1 = :1&nbsp;hour
 +
    |#default = :{{{nuzzleMtb|}}}&nbsp;hours}}
 +
  |:{{#expr: {{{nuzzleMtb|}}} / 24 round1}}&nbsp;days}}
 
}}
 
}}
  
{{#if: {{{eggs_avg|}}} | {{#if: {{#var:setProperty}} | {{#set:Eggs Per Clutch Average = {{{eggs_avg|}}} }} }} }}
+
{{#if: {{{mateMtb|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Mate Mtb Hours = {{{mateMtb|}}} }} }}
 +
;<abbr title="How often an awake, non-sterilised male will attempt to mate with a female, on average.">Mate Interval</abbr>
 +
:{{{mateMtb|}}} hours
 +
}}
  
{{#if: {{{eggs_unfertilized|}}} |
+
{{#if: {{{maturityage|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Can Lay Unfertilized Eggs = {{{eggs_unfertilized|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Maturity Age = {{{maturityage|}}} }} }}
;Can Lay Unfertilized Eggs
+
;<abbr title="The age at which an animal reaches adulthood.">Maturity Age</abbr>
:{{{eggs_unfertilized|}}}
+
:{{#expr:{{{maturityage|}}} round 3}} years {{#ifexpr: {{{maturityage|}}}  < 1 | ({{formatnum: {{#expr: ({{formatnum:{{{maturityage|}}} |R}}*60)round 1}} }} days)
 +
}}
 +
 
 +
{{#if: {{{juvenileage|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Juvenile Age = {{{juvenileage|}}} }} }}
 +
;<abbr title="The age at which an animal becomes a juvenile.">Juvenile Age</abbr>
 +
:{{#expr:{{{juvenileage|}}} round 3}} years {{#ifexpr: {{{juvenileage|}}} < 1 | ({{formatnum: {{#expr: ({{formatnum:{{{juvenileage|}}}|R}}*60)round 1}} }} days) }} }}
 
}}
 
}}
  
{{#if: {{{gestation|}}} |
+
{{#if: {{{psychic sensitivity|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Gestation Period Days = {{{gestation|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Psychic Sensitivity = {{{psychic sensitivity|}}} }} }}
;Gestation Period
+
;Psychic Sensitivity
{{#switch: {{{gestation|}}}
+
:{{%|{{{psychic sensitivity|}}} }}
  | N/A      = :N/A
+
}}
  | 1        = :{{{gestation|}}} day
 
  | #default = :{{{gestation|}}} days
 
}} }}
 
  
{{#if: {{{offspring|}}} {{{avg offspring|}}} |
+
{{#if: {{{toxic resistance|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Offspring Per Birth = {{{offspring|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Toxic Resistance = {{{toxic resistance|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Average Offspring Per Birth = {{{avg offspring|}}} }} }}
+
;Toxic Resistance
;Offspring Per Birth
+
:{{%|{{{toxic resistance|}}} }}
:{{{offspring|}}} {{#if:{{{avg offspring|}}}|({{{avg offspring|}}} avg)}}
 
 
}}
 
}}
  
 +
{{#if: {{{toxic environment resistance|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Toxic Environment Resistance = {{{toxic environment resistance|}}} }} }}
 +
;Toxic Environment Resistance
 +
:{{%|{{{toxic environment resistance|}}} }}
 +
}}
  
<!-- Ingestion -->
+
{{#if: {{{min comfortable temperature|}}} |
{{#if: {{{nutrition|}}} {{{taste|}}} {{{ingested direct thought|}}} {{{joy offset|}}} {{{joy kind|}}} {{{addictiveness|}}} {{{food poison chance|}}} {{{max num to ingest at once|}}} {{{ingestion time|}}}|
+
  {{#if: {{{max comfortable temperature|}}} |
 +
    {{#if: {{#var:setProperty}} | {{#set:Min Comfortable Temperature = {{{min comfortable temperature|}}} }} }}
 +
    {{#if: {{#var:setProperty}} | {{#set:Max Comfortable Temperature = {{{max comfortable temperature|}}} }} }}
 +
;Comfortable Temp Range
 +
:{{Temperature|{{{min comfortable temperature|}}}|{{{max comfortable temperature|}}} }}
 +
}} }}
 +
 
 +
{{#if: {{{livesin_temperateforest|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Temperate Forest = true }} }} }}
 +
{{#if: {{{livesin_temperateswamp|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Temperate Swamp = true }} }} }}
 +
{{#if: {{{livesin_tropicalrainforest|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Tropical Rainforest = true }} }} }}
 +
{{#if: {{{livesin_tropicalswamp|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Tropical Swamp = true }} }} }}
 +
{{#if: {{{livesin_aridshrubland|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Arid Shrubland = true }} }} }}
 +
{{#if: {{{livesin_desert|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Desert = true }} }} }}
 +
{{#if: {{{livesin_extremedesert|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Extreme Desert = true }} }} }}
 +
{{#if: {{{livesin_borealforest|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Boreal Forest = true }} }} }}
 +
{{#if: {{{livesin_coldbog|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Cold Bog = true }} }} }}
 +
{{#if: {{{livesin_tundra|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Tundra = true }} }} }}
 +
{{#if: {{{livesin_icesheet|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Ice Sheet = true }} }} }}
 +
{{#if: {{{livesin_seaice|}}} | {{#if: {{#var:setProperty}} | {{#set:Lives In Sea Ice = true }} }} }}
 +
}}
 +
 
 +
<!-- 6. PRODUCTION -->
 +
{{#if: {{{meatyield|}}} {{{meatname|}}} {{{leathername|}}} {{{leatheryield|}}} {{{milk|}}} {{{milkname|}}} {{{milktime|}}} {{{wool|}}} {{{woolname|}}} {{{sheartime|}}} {{{eggsmin|}}} {{{eggsmax|}}} {{{eggtime|}}} {{{eggs_avg|}}} {{{eggs_unfertilized|}}} {{{gestation|}}} {{{offspring|}}} {{{avg offspring|}}} |
 
</dl>{{clear}}
 
</dl>{{clear}}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Ingestion</p>
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Production</p>
 
<dl>
 
<dl>
 +
 +
{{#ifexpr: {{{meatyield|1}}} * {{{basemeatamount|1}}}
 +
| {{#if: {{{meatname|}}} {{{meatyield|}}}
 +
  | {{#vardefine:hasMeat|1}}
 +
  | {{#ifeq: {{{type|}}}|Animal
 +
    | {{#vardefine:hasMeat|1}}
 +
    | {{#vardefine:hasMeat|0}}
 +
    }}
 +
  }}
 +
| {{#vardefine:hasMeat|0}}
 
}}
 
}}
  
{{#if: {{{nutrition|}}} |
+
{{#ifexpr: {{#var:hasMeat}}|
   {{#if: {{#var:setProperty}} | {{#set:Nutrition = {{{nutrition|}}} }} }}
+
  {{#vardefine: MeatName | {{ucfirst: {{{meatname | {{#var:Name}} meat}}} }}}}
;{{Hover title| link=no | Nutrition gained when this item or object is eaten | Nutrition }}
+
  {{#if: {{#var:setProperty}} | {{#set:Meat Name = {{#var:MeatName}} }} }}
:{{{nutrition}}}
+
  <!-- Uses meatyield when set, otherwise interpolates from curve applied to 140*body_size or basemeatamount*bodysize -->
 +
  <!-- See Property:Meat_Yield for details -->
 +
  {{#vardefine: MeatYield | {{{meatyield | {{#if: {{{bodysize|}}} |{{Meat Leather Curve | {{{basemeatamount|140}}} * {{{bodysize|}}} }} }} }}} }}
 +
   {{#if: {{#var:setProperty}} | {{#set:Meat Yield = {{#var:MeatYield}} }} }}
 +
 
 +
;Meat Yield
 +
:{{#switch: {{#var:MeatName}}
 +
| Human meat = {{Icon Small|Human meat||{{#var:MeatYield}}}} [[Human meat]]
 +
| Insect meat = {{Icon Small|Insect meat||{{#var:MeatYield}}}} [[Insect meat]]
 +
| Twisted meat = {{Icon Small|Twisted meat||{{#var:MeatYield}}}} [[Twisted meat]]
 +
| #default = {{#if: {{{bodysize|}}} | {{#ifexpr: {{{bodysize|}}} < 0.7 | [[File:Meat small c.png|16px|{{#var:MeatName}}|link=Meat]] | [[File:Meat big c.png|16px|{{#var:MeatName}}|link=Meat]]}} }} {{#var:MeatYield}} [[Meat|{{lc:{{#var:MeatName}} }}]]
 +
}}
 
}}
 
}}
  
{{#if: {{{taste|}}} |
+
{{#ifexpr: {{{leatheryield|1}}} * {{{baseleatheramount|1}}}
  {{#if: {{#var:setProperty}} | {{#set:Taste = {{ucfirst: {{{taste|}}} }} }} }}
+
| {{#if: {{{leathername|}}} {{{leatheryield|}}}
;Taste
+
  | {{#vardefine:hasLeather|1}}
:{{ucfirst: {{{taste|}}} }}
+
  | {{#ifeq: {{{type|}}}|Animal
 +
    | {{#vardefine:hasLeather|1}}
 +
    | {{#vardefine:hasLeather|0}}
 +
    }}
 +
  }}
 +
| {{#vardefine:hasLeather|0}}
 
}}
 
}}
  
{{#if: {{{ingested direct thought|}}} |
+
{{#ifexpr: {{#var:hasLeather}}|
   {{#if: {{#var:setProperty}} | {{#set:Ingested Direct Thought = {{{ingested direct thought|}}} }} }}
+
  {{#vardefine: LeatherName | {{ucfirst: {{{leathername | {{#var:Name}} leather}}} }}}}
;Ingested Direct Thought
+
   {{#if: {{#var:setProperty}} | {{#set:Leather Name = {{#var:LeatherName}} }} }}
:{{{ingested direct thought|}}}
+
  <!-- Uses leatheryield when set, otherwise interpolates from curve applied to 40*body_size or baseleatheramount*bodysize-->
}}
+
  <!-- See Property:Leather_Yield for details -->
 +
  {{#vardefine: LeatherYield | {{{leatheryield | {{#if: {{{bodysize|}}} |{{Meat Leather Curve | {{{baseleatheramount|40}}} * {{{bodysize|}}} }} }} }}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Leather Yield = {{#var:LeatherYield}} }} }}
  
{{#if: {{{joy offset|}}} |
+
;Leather Yield
  {{#if: {{#var:setProperty}} | {{#set:Joy Offset = {{{joy offset|}}} }} }}
+
: {{Icon Small|{{#var:LeatherName}}||{{#var:LeatherYield}}}} [[{{lc:{{#var:LeatherName}} }}]]
;Recreation Offset
 
:{{%|{{{joy offset|}}} }}
 
 
}}
 
}}
  
{{#if: {{{joy kind|}}} |
+
{{#if: {{{milk|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Joy Kind = {{{joy kind|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Milk Amount = {{{milk|}}} }} }}
;Recreation Kind
+
  {{#vardefine: MilkName | {{{milkname| Milk}}} }}
:{{{joy kind|}}}
+
  {{#if: {{#var:setProperty}} | {{#set:Milk Name = {{#var:MilkName}} }} }}
 +
;Milk Amount
 +
:{{Icon Small|{{#var:MilkName}}||{{{milk|}}}}} [[{{#var:MilkName}}|{{lc:{{#var:MilkName}} }}]]
 
}}
 
}}
  
{{#if: {{{addictiveness|}}} |
+
 
   {{#if: {{#var:setProperty}} | {{#set:Addictiveness = {{{addictiveness|}}} }} }}
+
{{#if: {{{milktime|}}} |
;Addictiveness
+
   {{#if: {{#var:setProperty}} | {{#set:Milking Interval Days = {{{milktime|}}} }} }}
:{{%| {{{addictiveness|}}} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Daily Milk Average = {{#expr: {{{milk|}}}/{{{milktime|}}}round2}} }} }}
 +
;Milking Interval
 +
:{{{milktime|}}}&nbsp;days
 
}}
 
}}
  
{{#if: {{{food poison chance|}}} |
+
{{#if: {{{wool|}}}|
   {{#if: {{#var:setProperty}} | {{#set:Food Poison Chance Base = {{{food poison chance|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Wool Amount = {{{wool|}}} }} }}
;Food Poison Chance
+
  {{#vardefine: WoolName | {{{woolname | {{#var:Name}} wool}}} }}
:{{%| {{{food poison chance|}}} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Wool Name = {{#var:WoolName}} }} }}
 +
;Wool Amount
 +
:{{Icon Small|{{#var:WoolName}}||{{{wool|}}}}} [[{{lc:{{#var:WoolName}} }}]]
 
}}
 
}}
  
{{#if: {{{max num to ingest at once|}}} |
+
{{#if: {{{sheartime|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Max Num To Ingest At Once = {{{max num to ingest at once|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Shearing Interval Days = {{{sheartime|}}} }} }}
;{{Hover title| link=no | Maximum Number To Ingest At Once | Maximum To Ingest}}
+
  {{#if: {{#var:setProperty}} | {{#set:Daily Wool Average = {{#expr: {{{wool|}}}/{{{sheartime}}}round2}} }} }}
:{{{max num to ingest at once|}}}
+
;Shearing Interval
 +
:{{{sheartime|}}}&nbsp;days
 
}}
 
}}
  
{{#if: {{{ingestion time|}}} |
+
{{#if: {{{eggsmin|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Ingestion Time= {{{ingestion time|}}} }} }}
+
   {{#if: {{{eggsmax|}}} |
;Ingestion Time
+
    {{#if: {{#var:setProperty}} | {{#set:Eggs Per Clutch Minimum = {{{eggsmin|}}} }} }}
:{{ticks| {{{ingestion time|}}} }}
+
    {{#if: {{#var:setProperty}} | {{#set:Eggs Per Clutch Maximum = {{{eggsmax|}}} }} }}
 +
;Eggs Per Clutch
 +
:{{{eggsmin|}}} to {{{eggsmax|}}}
 +
}} }}
 +
 
 +
{{#if: {{{eggtime|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Egg Laying Interval = {{{eggtime|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Eggs Per Season Average = {{#expr: {{{eggs_avg|}}}/{{{eggtime|}}}*15 round 2}} }} }}
 +
;Egg Laying Interval
 +
:{{{eggtime|}}}&nbsp;days
 
}}
 
}}
  
 +
{{#if: {{{eggs_avg|}}} | {{#if: {{#var:setProperty}} | {{#set:Eggs Per Clutch Average = {{{eggs_avg|}}} }} }} }}
  
<!-- Materials -->
+
{{#if: {{{eggs_unfertilized|}}} |
{{#if: {{{beauty factor|}}} {{{beauty offset|}}} {{{work to make factor|}}} {{{work to build factor|}}} {{{work to build offset|}}} {{{max hit points factor|}}} {{{flammability factor|}}} {{{armor - sharp factor|}}} {{{armor - blunt factor|}}} {{{armor - heat factor|}}} {{{armor - heat factor|}}} {{{insulation - cold factor|}}} {{{insulation - heat factor|}}} {{{melee blunt damage factor|}}} {{{melee sharp damage factor|}}} {{{melee cooldown factor|}}} {{{door opening speed factor|}}} {{{rest effectiveness factor|}}}|
+
  {{#if: {{#var:setProperty}} | {{#set:Can Lay Unfertilized Eggs = {{{eggs_unfertilized|}}} }} }}
</dl>{{clear}}
+
;Can Lay Unfertilized Eggs
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Stat Modifiers</p>
+
:{{{eggs_unfertilized|}}}
<dl>
 
 
}}
 
}}
  
{{#if: {{{beauty factor|}}} |
+
{{#if: {{{gestation|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Beauty Factor = {{{beauty factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Gestation Period Days = {{{gestation|}}} }} }}
;Beauty Factor
+
;Gestation Period
:×{{{beauty factor|}}}
+
{{#switch: {{{gestation|}}}
 +
  | N/A      = :N/A
 +
  | 1        = :{{{gestation|}}} day
 +
  | #default = :{{{gestation|}}} days
 +
}} }}
 +
 
 +
{{#if: {{{offspring|}}} {{{avg offspring|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Offspring Per Birth = {{{offspring|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Average Offspring Per Birth = {{{avg offspring|}}} }} }}
 +
;Offspring Per Birth
 +
:{{{offspring|}}} {{#if:{{{avg offspring|}}}|({{{avg offspring|}}} avg)}}
 
}}
 
}}
  
{{#if: {{{beauty offset|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Beauty Offset = {{{beauty offset|}}} }} }}
 
;Beauty Offset
 
:+{{{beauty offset|}}}
 
 
}}
 
}}
  
{{#if: {{{work to make factor|}}} |
+
<!-- 7. INGESTION -->
   {{#if: {{#var:setProperty}} | {{#set:Work To Make Factor = {{{work to make factor|}}} }} }}
+
{{#if: {{{nutrition|}}} {{{taste|}}} {{{ingested direct thought|}}} {{{joy offset|}}} {{{joy kind|}}} {{{addictiveness|}}} {{{food poison chance|}}} {{{max num to ingest at once|}}} {{{ingestion time|}}}|
;Work To Make Factor
+
</dl>{{clear}}
:×{{{work to make factor|}}}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Ingestion</p>
 +
<dl>
 +
 
 +
{{#if: {{{nutrition|}}} |
 +
   {{#if: {{#var:setProperty}} | {{#set:Nutrition = {{{nutrition|}}} }} }}
 +
;<abbr title="Nutrition gained when this item or object is eaten">Nutrition</abbr>
 +
:{{{nutrition}}}
 
}}
 
}}
  
{{#if: {{{work to build factor|}}} |
+
{{#if: {{{taste|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Work To Build Factor = {{{work to build factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Taste = {{ucfirst: {{{taste|}}} }} }} }}
;Work To Build Factor
+
;Taste
:×{{{work to build factor|}}}
+
:{{ucfirst: {{{taste|}}} }}
 
}}
 
}}
  
{{#if: {{{work to build offset|}}} |
+
{{#if: {{{ingested direct thought|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Work To Build Offset = {{{work to build offset|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Ingested Direct Thought = {{{ingested direct thought|}}} }} }}
;Work To Build Offset
+
;Ingested Direct Thought
:+{{ticks| {{{work to build offset|}}} }}
+
:{{{ingested direct thought|}}}
 
}}
 
}}
  
{{#if: {{{max hit points factor|}}} |
+
{{#if: {{{joy offset|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Max Hit Points Factor = {{{max hit points factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Joy Offset = {{{joy offset|}}} }} }}
;Max Hit Points
+
;Recreation Offset
:×{{{max hit points factor|}}}
+
:{{%|{{{joy offset|}}} }}
 
}}
 
}}
  
{{#if: {{{flammability factor|}}} |
+
{{#if: {{{joy kind|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Flammability Factor = {{{flammability factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Joy Kind = {{{joy kind|}}} }} }}
;Flammability
+
;Recreation Kind
:×{{{flammability factor|}}}
+
:{{{joy kind|}}}
 
}}
 
}}
  
{{#if: {{{armor - sharp factor|}}} |
+
{{#if: {{{addictiveness|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Armor - Sharp Factor = {{{armor - sharp factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Addictiveness = {{{addictiveness|}}} }} }}
;Armor - Sharp
+
;Addictiveness
:×{{{armor - sharp factor|}}}
+
:{{%| {{{addictiveness|}}} }}
 
}}
 
}}
  
{{#if: {{{armor - blunt factor|}}} |
+
{{#if: {{{food poison chance|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Armor - Blunt Factor = {{{armor - blunt factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Food Poison Chance Base = {{{food poison chance|}}} }} }}
;Armor - Blunt
+
;Food Poison Chance
:×{{{armor - blunt factor|}}}
+
:{{%| {{{food poison chance|}}} }}
 
}}
 
}}
  
{{#if: {{{armor - heat factor|}}} |
+
{{#if: {{{max num to ingest at once|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Armor - Heat Factor = {{{armor - heat factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Max Num To Ingest At Once = {{{max num to ingest at once|}}} }} }}
;Armor - Heat
+
;<abbr title="Maximum Number To Ingest At Once">Maximum To Ingest</abbr>
:×{{{armor - heat factor|}}}
+
:{{{max num to ingest at once|}}}
 
}}
 
}}
  
{{#if: {{{insulation - cold factor|}}} |
+
{{#if: {{{ingestion time|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Insulation - Cold Factor = {{{insulation - cold factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Ingestion Time= {{{ingestion time|}}} }} }}
;Insulation - Cold
+
;Ingestion Time
:+{{Temperature| {{{insulation - cold factor|}}} || delta }}
+
:{{ticks| {{{ingestion time|}}} }}
 
}}
 
}}
 
{{#if: {{{insulation - heat factor|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Insulation - Heat Factor = {{{insulation - heat factor|}}} }} }}
 
;Insulation - Heat
 
:+{{Temperature| {{{insulation - heat factor|}}} || delta }}
 
 
}}
 
}}
  
{{#if: {{{melee blunt damage factor|}}} |
+
<!-- 8. STAT MODIFIERS (for Materials) -->
  {{#if: {{#var:setProperty}} | {{#set:Melee Blunt Damage Factor = {{{melee blunt damage factor|}}} }} }}
+
{{#if: {{{beauty factor|}}} {{{beauty offset|}}} {{{work to make factor|}}} {{{work to build factor|}}} {{{work to build offset|}}} {{{max hit points factor|}}} {{{flammability factor|}}} {{{armor - sharp factor|}}} {{{armor - blunt factor|}}} {{{armor - heat factor|}}} {{{armor - heat factor|}}} {{{insulation - cold factor|}}} {{{insulation - heat factor|}}} {{{melee blunt damage factor|}}} {{{melee sharp damage factor|}}} {{{melee cooldown factor|}}} {{{door opening speed factor|}}} {{{rest effectiveness factor|}}}|
;Melee Blunt Damage
+
</dl>{{clear}}
{{{melee blunt damage factor|}}}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Stat Modifiers</p>
}}
+
<dl>
  
{{#if: {{{melee sharp damage factor|}}} |
+
{{#if: {{{beauty factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Sharp Damage Factor = {{{melee sharp damage factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Beauty Factor = {{{beauty factor|}}} }} }}
;Melee Sharp Damage
+
;Beauty Factor
:×{{{melee sharp damage factor|}}}
+
:×{{{beauty factor|}}}
 
}}
 
}}
  
{{#if: {{{melee cooldown factor|}}} |
+
{{#if: {{{beauty offset|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Cooldown Factor = {{{melee cooldown factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Beauty Offset = {{{beauty offset|}}} }} }}
;Melee Cooldown
+
;Beauty Offset
:×{{{melee cooldown factor|}}}
+
:+{{{beauty offset|}}}
 
}}
 
}}
  
{{#if: {{{door opening speed factor|}}} |
+
{{#if: {{{work to make factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Door Opening Speed Factor = {{{door opening speed factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Work To Make Factor = {{{work to make factor|}}} }} }}
;Door Opening Speed
+
;Work To Make Factor
:×{{{door opening speed factor|}}}
+
:×{{{work to make factor|}}}
 
}}
 
}}
  
{{#if: {{{rest effectiveness factor|}}} |
+
{{#if: {{{work to build factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Rest Effectiveness Factor = {{{rest effectiveness factor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Work To Build Factor = {{{work to build factor|}}} }} }}
;Rest Effectiveness
+
;Work To Build Factor
:×{{{rest effectiveness factor|}}}
+
:×{{{work to build factor|}}}
 
}}
 
}}
  
 +
{{#if: {{{work to build offset|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Work To Build Offset = {{{work to build offset|}}} }} }}
 +
;Work To Build Offset
 +
:+{{ticks| {{{work to build offset|}}} }}
 +
}}
  
<!-- Medicine -->
+
{{#if: {{{max hit points factor|}}} |
{{#if: {{{medical potency base|}}} {{{medical quality max|}}} |
+
  {{#if: {{#var:setProperty}} | {{#set:Max Hit Points Factor = {{{max hit points factor|}}} }} }}
</dl>{{clear}}
+
;Max Hit Points
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Medical</p>
+
{{{max hit points factor|}}}
<dl>
 
 
}}
 
}}
  
{{#if: {{{medical potency base|}}} |
+
{{#if: {{{flammability factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Medical Potency Base = {{{medical potency base|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Flammability Factor = {{{flammability factor|}}} }} }}
;Medical Potency
+
;Flammability
:{{%| {{{medical potency base|}}} }}
+
:×{{{flammability factor|}}}
 
}}
 
}}
  
{{#if: {{{medical quality max|}}} |
+
{{#if: {{{armor - sharp factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Medical Quality Max = {{{medical quality max|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor - Sharp Factor = {{{armor - sharp factor|}}} }} }}
;Max medical tend quality
+
;Armor - Sharp
:{{%| {{{medical quality max|}}} }}
+
:×{{{armor - sharp factor|}}}
 
}}
 
}}
  
 
+
{{#if: {{{armor - blunt factor|}}} |
<!--Plants-->
+
  {{#if: {{#var:setProperty}} | {{#set:Armor - Blunt Factor = {{{armor - blunt factor|}}} }} }}
{{#if: {{{grow days|}}} {{{sow work|}}} {{{harvest work|}}} {{{product|}}} {{{yield|}}} {{{min sowing skill|}}} {{{min fertility|}}} {{{fertility sensitivity|}}} {{{min grow light|}}}|
+
;Armor - Blunt
</dl>{{clear}}
+
{{{armor - blunt factor|}}}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Plant Stats</p>
 
<dl>
 
 
}}
 
}}
  
{{#if: {{{grow days|}}} |
+
{{#if: {{{armor - heat factor|}}} |
  {{#vardefine:realGrowDays | {{#expr: {{{grow days|}}} / 0.54167 round 2}} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor - Heat Factor = {{{armor - heat factor|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Grow Days = {{{grow days|}}} }} }}
+
;Armor - Heat
  {{#if: {{#var:setProperty}} | {{#set:Real Grow Days = {{#var:realGrowDays}} }} }}
+
:×{{{armor - heat factor|}}}
;Time to grow
 
:{{{grow days|}}} days {{Hover title|link=no|Actual days to grow, taking into account rest time|({{#var:realGrowDays}} days)}}
 
 
}}
 
}}
  
{{#if: {{{lifespanDaysPerGrowDays|}}} |
+
{{#if: {{{insulation - cold factor|}}} |
   {{#if: {{{grow days|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Insulation - Cold Factor = {{{insulation - cold factor|}}} }} }}
    {{#if: {{#var:setProperty}} | {{#set:Lifespan Days Per Grow Days = {{{lifespanDaysPerGrowDays|}}} }} }}
+
;Insulation - Cold
;Lifespan
+
:+{{Temperature| {{{insulation - cold factor|}}} || delta }}
:{{#ifeq: {{{lifespanDaysPerGrowDays|}}} | 0 | Indefinite |  {{#if: {{#var:setProperty}} | {{#set:Lifespan = {{#expr: {{{grow days|}}} * {{{lifespanDaysPerGrowDays|}}} }} }} }}{{#expr: {{{grow days|}}} * {{{lifespanDaysPerGrowDays|}}} }} days}}
+
}}
}} }}
 
  
{{#if: {{{sow work|}}} |
+
{{#if: {{{insulation - heat factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Sow Work = {{{sow work|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Insulation - Heat Factor = {{{insulation - heat factor|}}} }} }}
;Work to Sow
+
;Insulation - Heat
:{{ticks| {{{sow work|}}} }}
+
:+{{Temperature| {{{insulation - heat factor|}}} || delta }}
 
}}
 
}}
  
{{#if: {{{harvest work|}}} |
+
{{#if: {{{melee blunt damage factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Harvest Work = {{{harvest work|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Melee Blunt Damage Factor = {{{melee blunt damage factor|}}} }} }}
;Work to Harvest
+
;Melee Blunt Damage
:{{ticks| {{{harvest work|}}} }}
+
:×{{{melee blunt damage factor|}}}
 
}}
 
}}
  
{{#if: {{{product|}}} |
+
{{#if: {{{melee sharp damage factor|}}} |
{{#if: {{{yield|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Melee Sharp Damage Factor = {{{melee sharp damage factor|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Harvest Product = {{{product|}}} }} }}
+
;Melee Sharp Damage
   {{#if: {{#var:setProperty}} | {{#set:Harvest Yield = {{{yield|}}} }} }}
+
:×{{{melee sharp damage factor|}}}
;{{Hover title|link=no|Assumes 1x multipliers from difficulty, pawn stats, and other sources.|Base Harvest Yield}}
+
}}
:{{{yield|}}} {{Icon Small| {{{product|}}} | 16 }}
 
}}  
 
  
{{#if: {{{yield|}}} |
+
{{#if: {{{melee cooldown factor|}}} |
   {{#if: {{{sow work|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Melee Cooldown Factor = {{{melee cooldown factor|}}} }} }}
    {{#if: {{{harvest work|}}} |
+
;Melee Cooldown
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Work = {{#expr:{{{yield|}}}/( {{{sow work|}}} + {{{harvest work|}}})}} }} }}
+
{{{melee cooldown factor|}}}
    }}
 
  }}
 
}}
 
 
}}
 
}}
  
{{#if: {{{min sowing skill|}}} |
+
{{#if: {{{door opening speed factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Minimum Required Growing Skill = {{{min sowing skill|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Door Opening Speed Factor = {{{door opening speed factor|}}} }} }}
;{{Hover title|link=no|Minimum skill required to sow the plant|Min Skill}}
+
;Door Opening Speed
:{{{min sowing skill|}}} [[Skills#Plants|Plants]]
+
:×{{{door opening speed factor|}}}
 
}}
 
}}
  
{{#if: {{{min fertility|}}} |
+
{{#if: {{{rest effectiveness factor|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Fertility Min = {{{min fertility|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Rest Effectiveness Factor = {{{rest effectiveness factor|}}} }} }}
;Min Fertility
+
;Rest Effectiveness
:{{%| {{{min fertility|}}} }}
+
:×{{{rest effectiveness factor|}}}
 +
}}
 
}}
 
}}
  
{{#if: {{{fertility sensitivity|}}} |
+
<!-- MECHANITOR -->
   {{#if: {{#var:setProperty}} | {{#set:Fertility Sensitivity = {{{fertility sensitivity|}}} }} }}
+
{{#if: {{{mech bandwidth|}}} {{{mech control groups|}}} {{{mech gestation speed|}}} {{{mech remote repair distance|}}} {{{mech remote shield distance|}}} {{{mech remote shield energy|}}} {{{mech repair speed|}}} {{{mech work speed offset|}}} |
;Fertility Sensitivity
+
</dl>{{clear}}
:{{%| {{{fertility sensitivity|}}} }}
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Mechanitor</p>
 +
<dl>
 +
 
 +
{{#if: {{{mech bandwidth|}}} |
 +
   {{#if: {{#var:setProperty}} | {{#set:Mech Bandwidth = {{{mech bandwidth|}}} }} }}
 +
;Bandwidth
 +
:{{+|{{{mech bandwidth|}}}}}
 
}}
 
}}
  
{{#if: {{{fertility sensitivity|}}} |
+
{{#if: {{{mech control groups|}}} |
{{#if: {{#var:setProperty}} | {{#set:Min Grow Light = {{{min grow light|0.5}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Mech Control Groups = {{{mech control groups|}}} }} }}
;Min light to grow
+
;Control Groups
:{{%| {{{min grow light|0.5}}} }}
+
:{{+|{{{mech control groups|}}}}}
  {{#if: {{{grow days|}}} |
+
}}
    {{#if: {{{yield|}}} |
 
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (70)  = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((0.7-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }}
 
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (100) = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((1.0-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }}
 
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (140) = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((1.4-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }}
 
      {{#if: {{#pos:{{{sowTags|}}}|Hydroponic}} | {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (280) = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((2.8-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }} }}
 
}} }} }}
 
  
 +
{{#if: {{{mech gestation speed|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Mech Gestation Speed = {{{mech gestation speed|}}} }} }}
 +
;Gestation Speed
 +
:{{+|{{%| {{{mech gestation speed|}}} }}}}
 +
}}
  
 +
{{#if: {{{mech remote repair distance|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Mech Remote Repair Distance = {{{mech remote repair distance|}}} }} }}
 +
;Remote Repair Distance
 +
:{{{mech remote repair distance|}}} c
 +
}}
  
<!-- Weapons -->
+
{{#if: {{{mech remote shield distance|}}} |
{{#ifeq: {{{mode|}}} | Melee
+
   {{#if: {{#var:setProperty}} | {{#set:Mech Remote Shield Distance = {{{mech remote shield distance|}}} }} }}
  | {{#if: {{#var:setProperty}} | {{#set:Melee Damage Base = {{{damage|}}} | Melee Warmup = {{{warmup|}}} | Melee Cooldown Base = {{{cooldown|}}} }} }}
+
;Remote Shield Distance
   | {{#if: {{#var:setProperty}} | {{#set:Damage Base = {{{damage|}}} }} }}
+
:{{{mech remote shield distance|}}} c
    {{#if: {{{mode|}}}
+
}}
    | {{#if: {{#var:setProperty}} | {{#set:Aiming Time Base = {{{warmup|}}} | Ranged Cooldown Base = {{{cooldown|}}} }}
 
    }} }}
 
  
{{#if: {{{damage type|}}} {{{damage|}}} {{{armorPenetration|}}} {{{warmup|}}} {{{cooldown |}}} {{{range|}}} {{{minrange|}}} {{{accuracy|}}} {{{accuracyTouch|}}} {{{accuracyShort|}}} {{{accuracyMedium|}}} {{{accuracyLong|}}} {{{accuracyAvg|}}} {{{velocity|}}} {{{burst|}}} {{{burstTicks|}}} {{{missRadius|}}} {{{blastRadius|}}} {{{DPS|}}} {{{stoppingPower|}}} |
+
{{#if: {{{mech remote shield energy|}}} |
</dl>{{clear}}
+
  {{#if: {{#var:setProperty}} | {{#set:Mech Remote Shield Energy = {{{mech remote shield energy|}}} }} }}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Ranged Combat</p>
+
;Remote Shield Energy
<dl>
+
:{{{mech remote shield energy|}}}
 
}}
 
}}
  
{{#if: {{{mode|}}} |
+
{{#if: {{{mech repair speed|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Mode = {{{mode|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Mech Repair Speed = {{{mech repair speed|}}} }} }}
;Mode
+
;Repair Speed
:{{{mode|}}}
+
:{{+|{{%| {{{mech repair speed|}}} }}}}
 
}}
 
}}
  
 +
{{#if: {{{mech work speed offset|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Mech Work Speed Offset = {{{mech work speed offset|}}} }} }}
 +
;Work Speed Offset
 +
:{{+|{{%| {{{mech work speed offset|}}} }}}}
 
}}
 
}}
 
{{#if: {{{damage|}}} |
 
;Damage
 
:{{{damage|}}} dmg {{#if: {{{damage type|}}} | {{#if: {{#var:setProperty}} | {{#set:Damage Type = {{ucfirst:{{{damage type|}}} }} }} }}([[Damage Types#{{ucfirst:{{{damage type|}}} }}|{{ucfirst:{{{damage type|}}} }}]])}}
 
 
}}
 
}}
  
{{#if: {{{armorPenetration|}}} |
+
<!-- 9. MEDICAL -->
  {{#if: {{#var:setProperty}} | {{#set:Armor Penetration = {{{armorPenetration|}}} }} }}
+
{{#if: {{{medical potency base|}}} {{{medical quality max|}}} |
;Armor penetration
+
</dl>{{clear}}
:{{{armorPenetration|}}}%
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Medical</p>
}}
+
<dl>
  
{{#if: {{{warmup|}}} |
+
{{#if: {{{medical potency base|}}} |
;{{Hover title | link=no | Time it takes to aim the weapon | Warm-Up }}
+
  {{#if: {{#var:setProperty}} | {{#set:Medical Potency Base = {{{medical potency base|}}} }} }}
:{{ticks| {{{warmup|}}} }}
+
;Medical Potency
 +
:{{%| {{{medical potency base|}}} }}
 
}}
 
}}
  
{{#if: {{{cooldown |}}} |
+
{{#if: {{{medical quality max|}}} |
;{{Hover title| link=no | Waiting time before you can aim again after firing | Cooldown }}
+
  {{#if: {{#var:setProperty}} | {{#set:Medical Quality Max = {{{medical quality max|}}} }} }}
:{{ticks| {{{cooldown|}}} }}
+
;Max medical tend quality
 +
:{{%| {{{medical quality max|}}} }}
 
}}
 
}}
 
{{#if: {{{range|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Range = {{{range|}}} }} }}
 
;Range
 
:{{{range|}}} tile(s)
 
 
}}
 
}}
  
{{#if: {{{minrange|}}} |
+
<!-- 10. PLANT STATS -->
  {{#if: {{#var:setProperty}} | {{#set:Minimum Range = {{{minrange|}}} }} }}
+
{{#if: {{{grow days|}}} {{{sow work|}}} {{{harvest work|}}} {{{product|}}} {{{yield|}}} {{{min sowing skill|}}} {{{min fertility|}}} {{{fertility sensitivity|}}} {{{min grow light|}}}|
;Minimum Range
+
</dl>{{clear}}
:{{{minrange|}}} tiles
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Plant Stats</p>
}}
+
<dl>
  
{{#if: {{{accuracy|}}} |
+
{{#if: {{{grow days|}}} |
;Accuracy
+
  {{#vardefine:realGrowDays | {{#expr: {{{grow days|}}} / 0.54167 round 2}} }}
:{{{accuracy|}}}
+
  {{#if: {{#var:setProperty}} | {{#set:Grow Days = {{{grow days|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Real Grow Days = {{#var:realGrowDays}} }} }}
 +
;Time to grow
 +
:{{{grow days|}}} days <abbr title="Actual days to grow, taking into account rest time">({{#var:realGrowDays}} days)</abbr>
 
}}
 
}}
  
{{#if: {{{accuracyTouch|}}} |
+
{{#if: {{{lifespanDaysPerGrowDays|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Accuracy (Touch) Base = {{{accuracyTouch|}}} }} }}
+
   {{#if: {{{grow days|}}} |
  {{#if: {{{accuracyShort|}}} |
+
     {{#if: {{#var:setProperty}} | {{#set:Lifespan Days Per Grow Days = {{{lifespanDaysPerGrowDays|}}} }} }}
     {{#if: {{#var:setProperty}} | {{#set:Accuracy (Short) Base = {{{accuracyShort|}}} }} }}
+
;Lifespan
    {{#if: {{{accuracyMedium|}}} |
+
:{{#ifeq: {{{lifespanDaysPerGrowDays|}}} | 0 | Indefinite |  {{#if: {{#var:setProperty}} | {{#set:Lifespan = {{#expr: {{{grow days|}}} * {{{lifespanDaysPerGrowDays|}}} }} }} }}{{#expr: {{{grow days|}}} * {{{lifespanDaysPerGrowDays|}}} }} days}}
      {{#if: {{#var:setProperty}} | {{#set:Accuracy (Medium) Base = {{{accuracyMedium|}}} }} }}
+
}} }}
      {{#if: {{{accuracyLong|}}} |
 
        {{#if: {{#var:setProperty}} | {{#set:Accuracy (Long) Base = {{{accuracyLong|}}} }} }}
 
;{{Hover title|link=no|Touch % - Short % - Medium % - Long %|Accuracy}}
 
:{{{accuracyTouch|}}}% - {{{accuracyShort|}}}% - {{{accuracyMedium|}}}% - {{{accuracyLong|}}}%
 
}} }} }} }}
 
  
{{#if: {{{accuracyAvg|}}} |
+
{{#if: {{{sow work|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Average Accuracy = {{{accuracyAvg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Sow Work = {{{sow work|}}} }} }}
;{{Hover title| link=no | Average accuracy of the weapon, taking range into account. | Avg. accuracy }}
+
;Work to Sow
:{{{accuracyAvg|}}}%
+
:{{ticks| {{{sow work|}}} }}
 
}}
 
}}
  
{{#if: {{{velocity|}}} |
+
{{#if: {{{harvest work|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Velocity = {{{velocity|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Harvest Work = {{{harvest work|}}} }} }}
;Velocity
+
;Work to Harvest
:{{{velocity|}}} (m/s)
+
:{{ticks| {{{harvest work|}}} }}
 
}}
 
}}
  
{{#if: {{{burst|}}} |
+
{{#if: {{{product|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Burst Count = {{{burst|}}} }} }}
+
{{#if: {{{yield|}}} |
;Burst Count
+
  {{#if: {{#var:setProperty}} | {{#set:Harvest Product = {{{product|}}} }} }}
:{{{burst|}}} (per burst)
+
   {{#if: {{#var:setProperty}} | {{#set:Harvest Yield = {{{yield|}}} }} }}
 +
;<abbr title="Assumes 1x multipliers from difficulty, pawn stats, and other sources.">Base Harvest Yield</abbr>
 +
:{{{yield|}}} {{Icon Small| {{{product|}}} | 16 }}
 +
}}
 +
 
 +
{{#if: {{{yield|}}} |
 +
  {{#if: {{{sow work|}}} |
 +
    {{#if: {{{harvest work|}}} |
 +
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Work = {{#expr:{{{yield|}}}/( {{{sow work|}}} + {{{harvest work|}}})}} }} }}
 +
    }}
 +
  }}
 
}}
 
}}
 
{{#if: {{{burstTicks|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Burst Ticks = {{{burstTicks|}}} }} }}
 
;{{Hover title| link=no | Time between shots in a single burst | Burst Ticks }}
 
:{{ticks| {{{burstTicks|}}} }}<br/>({{#expr: 3600 / {{{burstTicks|}}} round2}} {{Hover title| link=no | Rounds Per Minute | RPM }})
 
 
}}
 
}}
  
{{#if: {{{missRadius|}}} |
+
{{#if: {{{min sowing skill|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Miss Radius = {{{missRadius|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Minimum Required Growing Skill = {{{min sowing skill|}}} }} }}
;{{Hover title| link=no | Missed shots are forced to land within this radius | Miss Radius }}
+
;<abbr title="Minimum skill required to sow the plant">Min Skill</abbr>
:{{{missRadius|}}} tile(s)
+
:{{{min sowing skill|}}} [[Skills#Plants|Plants]]
 
}}
 
}}
  
{{#if: {{{blastRadius|}}} |
+
{{#if: {{{min fertility|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Blast Radius = {{{blastRadius|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Fertility Min = {{{min fertility|}}} }} }}
;Blast Radius
+
;Min Fertility
:{{{blastRadius|}}}
+
:{{%| {{{min fertility|}}} }}
 
}}
 
}}
  
{{#if: {{{DPS|}}} |
+
{{#if: {{{fertility sensitivity|}}} | <!-- Combined, due to prior redundant condition -->
  {{#vardefine:maximumDPS | {{#expr: ((( {{{damage|}}} * {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} ) / (( {{#if: {{{cooldown|}}} | {{{cooldown|}}} | 1 }} + {{#if: {{{warmup|}}} | {{{warmup|}}} | 0 }} + ( {{#if: {{{burstTicks|}}} | {{{burstTicks|}}} | 1 }} * ( {{#if: {{{burst|}}} | {{{burst|}}}|1}} - 1 ))) / 60))) round2}} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Fertility Sensitivity = {{{fertility sensitivity|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Maximum DPS = {{#var:maximumDPS}} }} }}
+
;Fertility Sensitivity
  {{#if: {{{accuracyTouch|}}} |
+
:{{%| {{{fertility sensitivity|}}} }}
    {{#if: {{{accuracyShort|}}} |
 
      {{#if: {{{accuracyMedium|}}} |
 
    {{#if: {{{accuracyLong|}}} |
 
  {{#vardefine:averageDPS | {{#expr: ((( {{{damage|}}} * {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} ) / (( {{#if: {{{cooldown|}}} | {{{cooldown|}}} | 1 }} + {{#if: {{{warmup|}}} | {{{warmup|}}} | 0 }} + ( {{#if: {{{burstTicks|}}} | {{{burstTicks|}}} | 1 }} * ( {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} - 1 ))) / 60)) * ({{{accuracyAvg|}}} / 100)) round2}} }} }} }} }} }}
 
          {{#if: {{#var:setProperty}} | {{#set:Average DPS = {{#var:maximumDPS}} }} }}
 
;{{Hover title| link=yes | Formatted as: Maximum damage per second (DPS with average accuracy) | DPS }}
 
:{{#var:maximumDPS}} {{#if: {{#var:averageDPS}} | ({{#var:averageDPS}}) }}
 
}}
 
  
{{#if: {{{stoppingPower|}}} |
+
{{#if: {{#var:setProperty}} | {{#set:Min Grow Light = {{{min grow light|0.5}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Stopping Power = {{{stoppingPower|}}} }} }}
+
;Min light to grow
;{{Hover title| link=no | Ability of a weapon to 'stagger' targets, slowing them down for a short while. Larger values allow the weapon to stagger targets with bigger body sizes. | Stopping power}}
+
:{{%| {{{min grow light|0.5}}} }}
:{{{stoppingPower|}}}
+
   {{#if: {{{grow days|}}} |
 +
    {{#if: {{{yield|}}} |
 +
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (70)  = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((0.7-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }}
 +
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (100) = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((1.0-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }}
 +
      {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (140) = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((1.4-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }}
 +
      {{#if: {{#pos:{{{sowTags|}}}|Hydroponic}} | {{#if: {{#var:setProperty}} | {{#set:Harvest Yield Per Day (280) = {{#expr: {{{yield|}}}/( ({{{grow days|}}}/0.54167) / (((2.8-1)*{{{fertility sensitivity|}}}) + 1)) round 2}} }} }} }}
 +
}} }} }}
 
}}
 
}}
  
  
<!-- Animal and Weapon Melee Combat-->
+
<!-- WEAPONS -->
{{#if: {{{attack1dmg|}}}{{{attack1ap|}}}{{{attack1type|}}}{{{attack1part|}}}{{{attack1cool|}}}{{{attack1chancefactor|}}}    {{{attack2dmg|}}}{{{attack2ap|}}}{{{attack2type|}}}{{{attack2part|}}}{{{attack2cool|}}}{{{attack2chancefactor|}}}    {{{attack3dmg|}}}{{{attack3ap|}}}{{{attack3type|}}}{{{attack3part|}}}{{{attack3cool|}}}{{{attack3chancefactor|}}}    {{{attack4dmg|}}}{{{attack4ap|}}}{{{attack4type|}}}{{{attack4part|}}}{{{attack4cool|}}}{{{attack4chancefactor|}}}    {{{attack5dmg|}}}{{{attack5ap|}}}{{{attack5type|}}}{{{attack45art|}}}{{{attack5cool|}}}{{{attack5chancefactor|}}}   {{{attack6dmg|}}}{{{attack6ap|}}}{{{attack6type|}}}{{{attack46art|}}}{{{attack6cool|}}}{{{attack6chancefactor|}}}   {{{mobdamageaverage|}}} {{{mobdamage|}}} {{{meleeattack1dmg|}}}{{{meleeattack1type|}}}{{{meleeattack1part|}}}{{{meleeattack1cool|}}} {{{MeleeWeaponAverageDPS|}}} {{{MeleeWeaponAverageAP|}}}|
+
<!-- 11. RANGED COMBAT --> <!-- "Damage type" removed from this IF because it requires a defined "damage" field to be set. Replaced with "mode". -->
 +
{{#if: {{{mode|}}} {{{damage|}}} {{{armorPenetration|}}} {{{warmup|}}} {{{cooldown|}}} {{{range|}}} {{{minrange|}}} {{{accuracy|}}} {{{accuracyTouch|}}} {{{accuracyShort|}}} {{{accuracyMedium|}}} {{{accuracyLong|}}} {{{velocity|}}} {{{burst|}}} {{{burstTicks|}}} {{{missRadius|}}} {{{blastRadius|}}} {{{DPS|}}} {{{stoppingPower|}}} |
 
</dl>{{clear}}
 
</dl>{{clear}}
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Melee Combat</p>
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Ranged Combat</p>
 
<dl>
 
<dl>
}}
 
  
<!-- Animal Melee Combat -->
+
{{#if: {{{mode|}}} |
{{#if: {{{attack1dmg|}}}{{{attack1type|}}}{{{attack1part|}}}{{{attack1cool|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Mode = {{{mode|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Damage = {{{attack1dmg|}}} }} }}
+
;Mode
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 AP = {{{attack1ap|{{#expr: ({{{attack1dmg|}}}*1.5-0.001) round 0}} }}} }} }}
+
:{{{mode|}}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Type = {{ucfirst:{{{attack1type|}}} }} }} }}
+
}}
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Part = {{ucfirst:{{{attack1part|}}} }} }} }}
+
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Cooldown = {{{attack1cool|}}} }} }}
+
{{#if: {{{damage|}}} |
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Chance Factor = {{{attack1chancefactor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Damage Base = {{{damage|}}} }} }}
  {{#vardefine: Attack1DPS | {{#expr: {{{attack1dmg|}}} / ({{{attack1cool|}}}) }} }}
+
;Damage
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 DPS = {{#var:Attack1DPS}} }} }}
+
:{{{damage|}}} dmg {{#if: {{{damage type|}}} | {{#if: {{#var:setProperty}} | {{#set:Damage Type = {{ucfirst:{{{damage type|}}} }} }} }}([[Damage Types#{{ucfirst:{{{damage type|}}} }}|{{ucfirst:{{{damage type|}}} }}]])}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Stun = {{{attack1stun|}}} }} }}
+
}}
;Attack{{#if: {{{attack2dmg|}}}|&nbsp;1}}
 
:{{ucfirst:{{{attack1part|Body part?}}} }}<!--
 
--><br/>{{{attack1dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack1type|}}} }}|{{ucfirst:{{{attack1type|type?}}} }}]])<!--
 
--><br/>{{{attack1ap|{{#expr: ({{{attack1dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 
--><br/>{{{attack1cool|0}}} second cooldown<!--
 
-->{{#if: {{{attack1chancefactor|}}} | <br/>{{{attack1chancefactor|}}} chance factor}}<!--
 
-->{{#if: {{{attack1stun|}}} | <br/>Stun for {{Ticks|{{{attack1stun|0}}}*20}} on first strike}} }}
 
  
{{#if: {{{attack2dmg|}}}{{{attack2type|}}}{{{attack2part|}}}{{{attack2cool|}}} |
+
{{#if: {{{armorPenetration|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Damage = {{{attack2dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Armor Penetration = {{{armorPenetration|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 AP = {{{attack2ap|{{#expr: ({{{attack2dmg|}}}*1.5-0.001) round 0}} }}} }} }}
+
;Armor penetration
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Type = {{ucfirst:{{{attack2type|}}} }} }} }}
+
:{{{armorPenetration|}}}%
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Part = {{ucfirst:{{{attack2part|}}} }} }} }}
+
}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Cooldown = {{{attack2cool|}}} }} }}
+
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Chance Factor = {{{attack2chancefactor|}}} }} }}
+
 
  {{#vardefine: Attack2DPS | {{#expr: {{{attack2dmg|}}} / ({{{attack2cool|}}}) }} }}
+
{{#if: {{{warmup|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 DPS = {{#var:Attack2DPS}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Aiming Time Base = {{{warmup|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Stun = {{{attack2stun|}}} }} }}
+
;<abbr title="Time it takes to aim the weapon">Warm-Up</abbr>
;Attack 2
+
:{{ticks| {{{warmup|}}} }}
:{{ucfirst:{{{attack2part|Body part?}}} }}<!--
+
}}
--><br/>{{{attack2dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack2type|}}} }}|{{ucfirst:{{{attack2type|type?}}} }}]])<!--
 
--><br/>{{{attack2ap|{{#expr: ({{{attack2dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 
--><br/>{{{attack2cool|0}}} second cooldown<!--
 
-->{{#if: {{{attack2chancefactor|}}} | <br/>{{{attack2chancefactor|}}} chance factor}}<!--
 
-->{{#if: {{{attack2stun|}}} | <br/>Stun for {{Ticks|{{{attack2stun|0}}}*20}} on first strike}} }}
 
  
{{#if: {{{attack3dmg|}}}{{{attack3type|}}}{{{attack3part|}}}{{{attack3cool|}}}|
+
{{#if: {{{cooldown |}}} |
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Damage = {{{attack3dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Ranged Cooldown Base = {{{cooldown|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 AP = {{{attack3ap|{{#expr: ({{{attack3dmg|}}}*1.5-0.001) round 0}} }}} }} }}
+
;<abbr title="Waiting time before you can aim again after firing">Cooldown</abbr>
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Type = {{ucfirst:{{{attack3type|}}} }} }} }}
+
:{{ticks| {{{cooldown|}}} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Part = {{ucfirst:{{{attack3part|}}} }} }} }}
+
}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Cooldown = {{{attack3cool|}}} }} }}
+
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Chance Factor = {{{attack3chancefactor|}}} }} }}
+
{{#if: {{{range|}}} |
  {{#vardefine: Attack3DPS | {{#expr: {{{attack3dmg|}}} / ({{{attack3cool|}}}) }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Range = {{{range|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 DPS = {{#var:Attack3DPS}} }} }}
+
;Range
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Stun = {{{attack3stun|}}} }} }}
+
:{{{range|}}} tile(s)
;Attack 3
+
}}
:{{ucfirst:{{{attack3part|Body part?}}} }}<!--
 
--><br/>{{{attack3dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack3type|}}} }}|{{ucfirst:{{{attack3type|type?}}} }}]])<!--
 
--><br/>{{{attack3ap|{{#expr: ({{{attack3dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 
--><br/>{{{attack3cool|0}}} second cooldown<!--
 
-->{{#if: {{{attack3chancefactor|}}} | <br/>{{{attack3chancefactor|}}} chance factor}}<!--
 
-->{{#if: {{{attack3stun|}}}| <br/>Stun for {{Ticks|{{{attack3stun|0}}}*20}} on first strike}} }}
 
  
{{#if: {{{attack4dmg|}}}{{{attack4type|}}}{{{attack4part|}}}{{{attack4cool|}}}|
+
{{#if: {{{minrange|}}} |
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Damage = {{{attack4dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Minimum Range = {{{minrange|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 AP = {{{attack4ap|{{#expr: ({{{attack4dmg|}}}*1.5-0.001) round 0}} }}} }} }}
+
;Minimum Range
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Type = {{ucfirst:{{{attack4type|}}} }} }} }}
+
:{{{minrange|}}} tiles
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Part = {{ucfirst:{{{attack4part|}}} }} }} }}
+
}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Cooldown = {{{attack4cool|}}} }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Chance Factor = {{{attack4chancefactor|}}} }} }}
 
  {{#vardefine: Attack4DPS | {{#expr: {{{attack4dmg|}}} / ({{{attack4cool|}}}) }} }}
 
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 DPS = {{#var:Attack4DPS}} }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Stun = {{{attack4stun|}}} }} }}
 
;Attack 4
 
:{{ucfirst:{{{attack4part|Body part?}}} }}<!--
 
--><br/>{{{attack4dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack4type|}}} }}|{{ucfirst:{{{attack4type|type?}}} }}]])<!--
 
--><br/>{{{attack4ap|{{#expr: ({{{attack4dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 
--><br/>{{{attack4cool|0}}} second cooldown<!--
 
-->{{#if: {{{attack4chancefactor|}}} | <br/>{{{attack4chancefactor|}}} chance factor}}<!--
 
-->{{#if: {{{attack4stun|}}} | <br/>Stun for {{Ticks|{{{attack4stun|0}}}*20}} on first strike}} }}
 
  
{{#if: {{{attack5dmg|}}}{{{attack5type|}}}{{{attack5part|}}}{{{attack5cool|}}} |
+
{{#if: {{{accuracy|}}} |
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Damage = {{{attack5dmg|}}} }} }}
+
;Accuracy
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 AP = {{{attack5ap|{{#expr: ({{{attack5dmg|}}}*1.5-0.001) round 0}} }}} }} }}
+
:{{{accuracy|}}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Type = {{ucfirst:{{{attack5type|}}} }} }} }}
+
}}
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Part = {{ucfirst:{{{attack5part|}}} }} }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Cooldown = {{{attack5cool|}}} }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Chance Factor = {{{attack5chancefactor|}}} }} }}
 
  {{#vardefine: Attack5DPS | {{#expr: {{{attack5dmg|}}} / ({{{attack5cool|}}}) }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 DPS = {{#var:Attack5DPS}} }} }}
 
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Stun = {{{attack5stun|}}} }} }}
 
;Attack 5
 
:{{ucfirst:{{{attack5part|Body part?}}} }}<!--
 
--><br/>{{{attack5dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack5type|}}} }}|{{ucfirst:{{{attack5type|type?}}} }}]])<!--
 
--><br/>{{{attack5ap|{{#expr: ({{{attack5dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 
--><br/>{{{attack5cool|0}}} second cooldown<!--
 
-->{{#if: {{{attack5chancefactor|}}} | <br/>{{{attack5chancefactor|}}} chance factor}}<!--
 
-->{{#if: {{{attack5stun|}}} | <br/>Stun for {{Ticks|{{{attack5stun|0}}}*20}} on first strike}} }}
 
  
{{#if: {{{attack6dmg|}}}{{{attack6type|}}}{{{attack6part|}}}{{{attack6cool|}}} |
+
{{#if: {{{accuracyTouch|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Attack 6 Damage = {{{attack6dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Accuracy (Touch) Base = {{{accuracyTouch|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 6 AP = {{{attack6ap|{{#expr: ({{{attack6dmg|}}}*1.5-0.001) round 0}} }}} }} }}
+
   {{#if: {{{accuracyShort|}}} |
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Type = {{ucfirst:{{{attack6type|}}} }} }} }}
+
    {{#if: {{#var:setProperty}} | {{#set:Accuracy (Short) Base = {{{accuracyShort|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Part = {{ucfirst:{{{attack6part|}}} }} }} }}
+
    {{#if: {{{accuracyMedium|}}} |
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Cooldown = {{{attack6cool|}}} }} }}
+
      {{#if: {{#var:setProperty}} | {{#set:Accuracy (Medium) Base = {{{accuracyMedium|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Chance Factor = {{{attack6chancefactor|}}} }} }}
+
      {{#if: {{{accuracyLong|}}} |
  {{#vardefine: Attack6DPS | {{#expr: {{{attack6dmg|}}} / ({{{attack6cool|}}}) }} }}
+
        {{#if: {{#var:setProperty}} | {{#set:Accuracy (Long) Base = {{{accuracyLong|}}} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 DPS = {{#var:Attack6DPS}} }} }}
+
;<abbr title="Touch % - Short % - Medium % - Long %">Accuracy</abbr>
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Stun = {{{attack6stun|}}} }} }}
+
:{{{accuracyTouch|}}}% - {{{accuracyShort|}}}% - {{{accuracyMedium|}}}% - {{{accuracyLong|}}}%
;Attack 6
+
}} }} }} }}
:{{ucfirst:{{{attack6part|Body part?}}} }}<!--
 
--><br/>{{{attack6dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack6type|}}} }}|{{ucfirst:{{{attack6type|type?}}} }}]])<!--
 
--><br/>{{{attack6ap|{{#expr: ({{{attack6dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 
--><br/>{{{attack6cool|0}}} second cooldown<!--
 
-->{{#if: {{{attack6chancefactor|}}} | <br/>{{{attack6chancefactor|}}} chance factor}}<!--
 
-->{{#if: {{{attack6stun|}}} | <br/>Stun for {{Ticks|{{{attack6stun|0}}}*20}} on first strike}} }}
 
  
 +
{{#if: {{{velocity|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Velocity = {{{velocity|}}} }} }}
 +
;Velocity
 +
:{{{velocity|}}} (m/s)
 +
}}
  
{{#ifeq: {{#varexists: Attack6DPS}}|1|
+
{{#if: {{{burst|}}} |
  {{#vardefine: MobAverageDPS | {{#expr: ({{#var:Attack1DPS}} + {{#var:Attack2DPS}} + {{#var:Attack3DPS}} + {{#var:Attack4DPS}} + {{#var:Attack5DPS}} + {{#var:Attack6DPS}})/6 * 0.62 round 2}} }}|
+
   {{#if: {{#var:setProperty}} | {{#set:Burst Count = {{{burst|}}} }} }}
{{#ifeq: {{#varexists: Attack5DPS}}|1|
+
;Burst Count
   {{#vardefine: MobAverageDPS | {{#expr: ({{#var:Attack1DPS}} + {{#var:Attack2DPS}} + {{#var:Attack3DPS}} + {{#var:Attack4DPS}} + {{#var:Attack5DPS}})/5 * 0.62 round 2}} }}|
+
:{{{burst|}}} (per burst)
{{#ifeq: {{#varexists: Attack4DPS}}|1|
 
  {{#vardefine: MobAverageDPS | {{#expr: ({{#var:Attack1DPS}} + {{#var:Attack2DPS}} + {{#var:Attack3DPS}} + {{#var:Attack4DPS}})/4 * 0.62 round 2}} }}|
 
{{#ifeq: {{#varexists: Attack3DPS}}|1|
 
  {{#vardefine: MobAverageDPS | {{#expr: ({{#var:Attack1DPS}} + {{#var:Attack2DPS}} + {{#var:Attack3DPS}})/3 * 0.62 round 2}} }}|
 
    {{#ifeq: {{#varexists: Attack2DPS}}|1|
 
      {{#vardefine: MobAverageDPS | {{#expr: ({{#var:Attack1DPS}} + {{#var:Attack2DPS}})/2 * 0.62 round 2}} }}|
 
      {{#ifeq: {{#varexists: Attack1DPS}}|1|
 
        {{#vardefine: MobAverageDPS | {{#expr: {{#var:Attack1DPS}} * 0.62 round 2}} }} }} }} }} }} }} }}
 
 
 
{{#ifeq: {{#varexists: MobAverageDPS}} | 1 |
 
  {{#if: {{#var:setProperty}} | {{#set:Mob Average DPS = {{#var:MobAverageDPS}} }} }}
 
;Average {{DPS}}
 
:{{#var:MobAverageDPS}}
 
 
}}
 
}}
  
{{#if: {{{mobdamage|}}} |
+
{{#if: {{{burstTicks|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Damage Base = {{{mobdamage|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Burst Ticks = {{{burstTicks|}}} }} }}
;Damage
+
;<abbr title="Time between shots in a single burst">Burst Ticks</abbr>
:{{{mobdamage|}}}
+
:{{ticks| {{{burstTicks|}}} }}<br/>({{#expr: 3600 / {{{burstTicks|}}} round2}} <abbr title="Rounds Per Minute">RPM</abbr>)
 
}}
 
}}
  
{{#if: {{{mobdamagetype|}}} |
+
{{#if: {{{missRadius|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Damage Def = {{{mobdamagetype|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Miss Radius = {{{missRadius|}}} }} }}
;Damage Type
+
;<abbr title="Missed shots are forced to land within this radius">Miss Radius</abbr>
:{{{mobdamagetype|}}}
+
:{{{missRadius|}}} tile(s)
 
}}
 
}}
  
{{#if: {{{mobdamage2|}}} |
+
{{#if: {{{blastRadius|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Damage Base = {{{mobdamage2|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Blast Radius = {{{blastRadius|}}} }} }}
;Damage
+
;Blast Radius
:{{{mobdamage2|}}}
+
:{{{blastRadius|}}}
 
}}
 
}}
  
{{#if: {{{mobdamagetype2|}}} |
+
{{#if: {{{DPS|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Damage Def = {{{mobdamagetype2|}}} }} }}
+
  {{#vardefine:maximumDPS | {{#expr: ((( {{{damage|}}} * {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} ) / (( {{#if: {{{cooldown|}}} | {{{cooldown|}}} | 1 }} + {{#if: {{{warmup|}}} | {{{warmup|}}} | 0 }} + ( {{#if: {{{burstTicks|}}} | {{{burstTicks|}}} | 1 }} * ( {{#if: {{{burst|}}} | {{{burst|}}}|1}} - 1 ) )) / 60))) round2}} }}
;Damage Type
+
   {{#if: {{#var:setProperty}} | {{#set:Maximum DPS = {{#var:maximumDPS}} }} }}
:{{{mobdamagetype2|}}}
+
  {{#vardefine:maximumBandolierDPS | {{#expr: ((( {{{damage|}}} * {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} ) / (( {{#if: {{{cooldown|}}} | {{{cooldown|}}} | 1 }} * 0.8 + {{#if: {{{warmup|}}} | {{{warmup|}}} | 0 }} + ( {{#if: {{{burstTicks|}}} | {{{burstTicks|}}} | 1 }} * ( {{#if: {{{burst|}}} | {{{burst|}}}|1}} - 1 ) )) / 60) )) round2}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Maximum Bandolier DPS = {{#var:maximumBandolierDPS}} }} }}
 +
  {{#vardefine:maximumTriggerhappyDPS | {{#expr: ((( {{{damage|}}} * {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} ) / (( {{#if: {{{cooldown|}}} | {{{cooldown|}}} | 1 }} + {{#if: {{{warmup|}}} | {{{warmup|}}} | 0 }}*0.5 + ( {{#if: {{{burstTicks|}}} | {{{burstTicks|}}} | 1 }} * ( {{#if: {{{burst|}}} | {{{burst|}}}|1}} - 1 ) )) / 60) )) round2}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Maximum Triggerhappy DPS = {{#var:maximumTriggerhappyDPS}} }} }}
 +
  {{#vardefine:maximumBandolierTriggerhappyDPS | {{#expr: ((( {{{damage|}}} * {{#if: {{{burst|}}} | {{{burst|}}} | 1 }} ) / (( {{#if: {{{cooldown|}}} | {{{cooldown|}}} | 1 }} * 0.8 + {{#if: {{{warmup|}}} | {{{warmup|}}} | 0 }}*0.5 + ( {{#if: {{{burstTicks|}}} | {{{burstTicks|}}} | 1 }} * ( {{#if: {{{burst|}}} | {{{burst|}}}|1}} - 1 ) )) / 60) )) round2}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Maximum BandolierTriggerhappy DPS = {{#var:maximumBandolierTriggerhappyDPS}} }} }}
 +
;<abbr title="Formatted as: Maximum damage per second">DPS</abbr>
 +
:{{#var:maximumDPS}}
 
}}
 
}}
  
{{#if: {{{mobdamage3|}}} |
+
{{#if: {{{stoppingPower|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Melee Damage Base = {{{mobdamage3|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Stopping Power = {{{stoppingPower|}}} }} }}
;Damage
+
;<abbr title="Ability of a weapon to 'stagger' targets, slowing them down for a short while. Larger values allow the weapon to stagger targets with bigger body sizes.">Stopping power</abbr>
:{{{mobdamage3|}}}
+
:{{{stoppingPower|}}}
 
}}
 
}}
 
{{#if: {{{mobdamagetype3|}}} |
 
  {{#if: {{#var:setProperty}} | {{#set:Melee Damage Def = {{{mobdamagetype3|}}} }} }}
 
;Damage Type
 
:{{{mobdamagetype3|}}}
 
 
}}
 
}}
  
{{#if: {{{mobdamageaverage|}}} |
+
<!-- 12. MELEE COMBAT --> <!-- Reduced IF as some of these make no sense if the previous ones aren't defined.-->
  {{#if: {{#var:setProperty}} | {{#set:Average Melee Damage = {{{mobdamageaverage|}}} }} }}
+
{{#if: {{{attack1label|}}}{{{attack1labelNoLocation|}}}{{{attack1dmg|}}}{{{attack1ap|}}}{{{attack1type|}}}{{{attack1part|}}}{{{attack1cool|}}}<!--
}}
+
-->{{{attack2label|}}}{{{attack2labelNoLocation|}}}{{{attack2dmg|}}}{{{attack2ap|}}}{{{attack2type|}}}{{{attack2part|}}}{{{attack2cool|}}}<!--
 +
-->{{{attack3label|}}}{{{attack3labelNoLocation|}}}{{{attack3dmg|}}}{{{attack3ap|}}}{{{attack3type|}}}{{{attack3part|}}}{{{attack3cool|}}}<!--
 +
-->{{{attack4label|}}}{{{attack4labelNoLocation|}}}{{{attack4dmg|}}}{{{attack4ap|}}}{{{attack4type|}}}{{{attack4part|}}}{{{attack4cool|}}}<!--
 +
-->{{{attack5label|}}}{{{attack5labelNoLocation|}}}{{{attack5dmg|}}}{{{attack5ap|}}}{{{attack5type|}}}{{{attack5part|}}}{{{attack5cool|}}}<!--
 +
-->{{{attack6label|}}}{{{attack6labelNoLocation|}}}{{{attack6dmg|}}}{{{attack6ap|}}}{{{attack6type|}}}{{{attack6part|}}}{{{attack6cool|}}}<!--
 +
-->{{{attack7label|}}}{{{attack7labelNoLocation|}}}{{{attack7dmg|}}}{{{attack7ap|}}}{{{attack7type|}}}{{{attack7part|}}}{{{attack7cool|}}}<!--
 +
-->{{{meleeattack1dmg|}}}{{{meleeattack1type|}}}{{{meleeattack1part|}}}{{{meleeattack1cool|}}} {{{MeleeWeaponAverageDPS|}}} {{{MeleeWeaponAverageAP|}}}|
  
<!-- New melee starting from Beta 18 -->
+
</dl>{{clear}}
{{#ifeq: {{lc:{{{mode|}}} }} | melee |
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Melee Combat</p>
  {{#if: {{#var:setProperty}} | {{#set:Mode = {{{mode|}}} }} }}
+
<dl>
;Mode
 
:{{{mode|}}}
 
}}
 
  
{{#if: {{{meleeattack1dmg|}}}{{{meleeattack1type|}}}{{{meleeattack1part|}}}{{{meleeattack1cool|}}} |
+
<!-- Animal Melee Combat // This increments depth by 1. I deem the -2500 Preprocessor visited node count, -3000 Post-expand include size, and -100 template size worth it. -->
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Damage = {{{meleeattack1dmg|}}} }} }}
+
{{#if: {{{attack1dmg|}}}{{{attack1type|}}}{{{attack1part|}}}{{{attack1cool|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 AP = {{{meleeattack1ap|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Label = {{{attack1label|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Type = {{ucfirst:{{{meleeattack1type|}}} }} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Label No Location = {{{attack1labelNoLocation|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Part = {{ucfirst:{{{meleeattack1part|}}} }} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Damage = {{{attack1dmg|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Cooldown = {{{meleeattack1cool|}}} }} }}
+
  {{#vardefine: Attack1AP | {{{attack1ap|{{#expr: ({{{attack1dmg|}}}*1.5-0.001) round 0}} }}} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Chance Factor = {{{meleeattack1chancefactor|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 AP = {{#var:Attack1AP}} }} }}
   {{#vardefine: MeleeAttack1DPS | {{#expr: {{{meleeattack1dmg|}}} / ({{{meleeattack1cool}}}) }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Type = {{ucfirst:{{{attack1type|}}} }} }} }}
   {{#vardefine: MeleeAttack1Chance | {{#expr: {{{meleeattack1dmg|}}} ^ 2 }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Part = {{ucfirst:{{{attack1part|}}} }} }} }}
;Melee Attack{{#if: {{{meleeattack1dmg|}}}|&nbsp;1}}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Cooldown = {{{attack1cool|}}} }} }}
:{{ucfirst:{{{meleeattack1part|Body part?}}} }}<!--
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 Chance Factor = {{{attack1chancefactor|}}} }} }}
--><br/>{{{meleeattack1dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack1type|}}} }}|{{ucfirst:{{{meleeattack1type|type?}}} }}]])<!--
+
   {{#vardefine: Attack1DPS | {{#expr: {{{attack1dmg|}}} / ({{{attack1cool|}}}) }} }}
--><br/>{{{meleeattack1ap|0}}}% {{AP}}<!--
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 1 DPS = {{#var:Attack1DPS}} }} }}
--><br/>{{{meleeattack1cool|0}}} seconds cooldown<!--
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Stun = {{{attack1stun|}}} }} }}
-->{{#if: {{{meleeattack1chancefactor|}}} | <br/>{{{meleeattack1chancefactor|}}} chance factor}} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Ensure Linked Body Parts Group Always Usable = {{{attack1ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Always Treat As Weapon = {{{attack1alwaysTreatAsWeapon|}}} }} }}
 +
;Attack{{#if: {{{attack2dmg|}}}|&nbsp;1}}
 +
:{{#if: {{{attack1label|}}}|{{#if: {{{attack1labelNoLocation|}}}|{{ucfirst:{{{attack1label|}}}}} ({{ucfirst:{{{attack1labelNoLocation|}}}}})|{{ucfirst:{{{attack1label|}}} }} }}|{{ucfirst:{{{attack1part|Body part?}}}}} }}<!--
 +
--><br/>{{{attack1dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack1type|}}} }}|{{ucfirst:{{{attack1type|type?}}} }}]])<!--
 +
--><br/>{{{attack1ap|{{#expr: ({{{attack1dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 +
--><br/>{{{attack1cool|0}}} second cooldown<!--
 +
-->{{#if: {{{attack1chancefactor|}}} | <br/>{{{attack1chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack1stun|}}} | <br/>Stun for {{Ticks|{{{attack1stun|0}}}*20}} on first strike}} }}
  
{{#if: {{{body part|}}} | <!-- Body part that is replaced by an artificial body part -->
+
{{#if: {{{attack2dmg|}}}{{{attack2type|}}}{{{attack2part|}}}{{{attack2cool|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Body Part = {{{body part|}}} }} }} <!-- appliedOnFixedBodyParts or appliedOnFixedBodyPartGroups in the xml.-->
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Label = {{{attack2label|}}} }} }}
;Body Part
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Label No Location = {{{attack2labelNoLocation|}}} }} }}
:{{{body part|}}}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Damage = {{{attack2dmg|}}} }} }}
}}
+
  {{#vardefine: Attack2AP | {{{attack2ap|{{#expr: ({{{attack2dmg|}}}*1.5-0.001) round 0}} }}} }}
 
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 AP = {{#var:Attack2AP}} }} }}
{{#if: {{{meleeattack2dmg|}}}{{{meleeattack2type|}}}{{{meleeattack2part|}}}{{{meleeattack2cool|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Type = {{ucfirst:{{{attack2type|}}} }} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Damage = {{{meleeattack2dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Part = {{ucfirst:{{{attack2part|}}} }} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 AP = {{{meleeattack2ap|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Cooldown = {{{attack2cool|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Type = {{ucfirst:{{{meleeattack2type|}}} }} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Chance Factor = {{{attack2chancefactor|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Part = {{ucfirst:{{{meleeattack2part|}}} }} }} }}
+
   {{#vardefine: Attack2DPS | {{#expr: {{{attack2dmg|}}} / ({{{attack2cool|}}}) }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Cooldown = {{{meleeattack2cool|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 DPS = {{#var:Attack2DPS}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 2 Chance Factor = {{{meleeattack2chancefactor|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Stun = {{{attack2stun|}}} }} }}
   {{#vardefine: MeleeAttack2DPS | {{#expr: {{{meleeattack2dmg|}}} / ({{{meleeattack2cool}}}) }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Ensure Linked Body Parts Group Always Usable = {{{attack2ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
   {{#vardefine: MeleeAttack2Chance | {{#expr: {{{meleeattack2dmg|}}} ^ 2 }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Always Treat As Weapon = {{{attack2alwaysTreatAsWeapon|}}} }} }}
;Melee Attack 2{{#if: {{{meleeattack2dmg|}}}|&nbsp;}}
+
;Attack 2
:{{ucfirst:{{{meleeattack2part|Body part?}}} }}<!--
+
:{{#if: {{{attack2label|}}}|{{#if: {{{attack2labelNoLocation|}}}|{{ucfirst:{{{attack2label|}}}}} ({{ucfirst:{{{attack2labelNoLocation|}}}}})|{{ucfirst:{{{attack2label|}}} }} }}|{{ucfirst:{{{attack2part|Body part?}}}}} }}<!--
--><br/>{{{meleeattack2dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack2type|}}} }}|{{ucfirst:{{{meleeattack2type|type?}}} }}]])<!--
+
--><br/>{{{attack2dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack2type|}}} }}|{{ucfirst:{{{attack2type|type?}}} }}]])<!--
--><br/>{{{meleeattack2ap|0}}}% {{AP}}<!--
+
--><br/>{{{attack2ap|{{#expr: ({{{attack2dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
--><br/>{{{meleeattack2cool|0}}} seconds cooldown<!--
+
--><br/>{{{attack2cool|0}}} second cooldown<!--
-->{{#if: {{{meleeattack2chancefactor|}}} | <br/>{{{meleeattack2chancefactor|}}} chance factor}} }}
+
-->{{#if: {{{attack2chancefactor|}}} | <br/>{{{attack2chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack2stun|}}} | <br/>Stun for {{Ticks|{{{attack2stun|0}}}*20}} on first strike}} }}
  
{{#if: {{{meleeattack3dmg|}}}{{{meleeattack3type|}}}{{{meleeattack3part|}}}{{{meleeattack3cool|}}} |
+
{{#if: {{{attack3dmg|}}}{{{attack3type|}}}{{{attack3part|}}}{{{attack3cool|}}}|
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Damage = {{{meleeattack3dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Label = {{{attack3label|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 AP = {{{meleeattack3ap|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Label No Location = {{{attack3labelNoLocation|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Type = {{ucfirst:{{{meleeattack3type|}}} }} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Damage = {{{attack3dmg|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Part = {{ucfirst:{{{meleeattack3part|}}} }} }} }}
+
  {{#vardefine: Attack3AP | {{{attack3ap|{{#expr: ({{{attack3dmg|}}}*1.5-0.001) round 0}} }}} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Cooldown = {{{meleeattack3cool|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 AP = {{#var:Attack3AP}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Chance Factor = {{{meleeattack3chancefactor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Type = {{ucfirst:{{{attack3type|}}} }} }} }}
   {{#vardefine: MeleeAttack3DPS | {{#expr: {{{meleeattack3dmg|}}} / ({{{meleeattack3cool}}}) }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Part = {{ucfirst:{{{attack3part|}}} }} }} }}
   {{#vardefine: MeleeAttack3Chance | {{#expr: {{{meleeattack3dmg|}}} ^ 2 }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Cooldown = {{{attack3cool|}}} }} }}
;Melee Attack 3{{#if: {{{meleeattack3dmg|}}}|&nbsp;}}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 Chance Factor = {{{attack3chancefactor|}}} }} }}
:{{ucfirst:{{{meleeattack3part|Body part?}}} }}<!--
+
   {{#vardefine: Attack3DPS | {{#expr: {{{attack3dmg|}}} / ({{{attack3cool|}}}) }} }}
--><br/>{{{meleeattack3dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack3type|}}} }}|{{ucfirst:{{{meleeattack3type|type?}}} }}]])<!--
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 3 DPS = {{#var:Attack3DPS}} }} }}
--><br/>{{{meleeattack3ap|0}}}% {{AP}}<!--
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Stun = {{{attack3stun|}}} }} }}
--><br/>{{{meleeattack3cool|0}}} seconds cooldown<!--
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Ensure Linked Body Parts Group Always Usable = {{{attack3ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
-->{{#if: {{{meleeattack3chancefactor|}}} | <br/>{{{meleeattack3chancefactor|}}} chance factor}} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Always Treat As Weapon = {{{attack3alwaysTreatAsWeapon|}}} }} }}
 +
;Attack 3
 +
:{{#if: {{{attack3label|}}}|{{#if: {{{attack3labelNoLocation|}}}|{{ucfirst:{{{attack3label|}}}}} ({{ucfirst:{{{attack3labelNoLocation|}}}}})|{{ucfirst:{{{attack3label|}}} }} }}|{{ucfirst:{{{attack3part|Body part?}}}}} }}<!--
 +
--><br/>{{{attack3dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack3type|}}} }}|{{ucfirst:{{{attack3type|type?}}} }}]])<!--
 +
--><br/>{{{attack3ap|{{#expr: ({{{attack3dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 +
--><br/>{{{attack3cool|0}}} second cooldown<!--
 +
-->{{#if: {{{attack3chancefactor|}}} | <br/>{{{attack3chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack3stun|}}}| <br/>Stun for {{Ticks|{{{attack3stun|0}}}*20}} on first strike}} }}
  
{{#if: {{{meleeattack4dmg|}}}{{{meleeattack4type|}}}{{{meleeattack4part|}}}{{{meleeattack4cool|}}} |
+
{{#if: {{{attack4dmg|}}}{{{attack4type|}}}{{{attack4part|}}}{{{attack4cool|}}}|
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Damage = {{{meleeattack4dmg|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Label = {{{attack4label|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 AP = {{{meleeattack4ap|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Label No Location = {{{attack4labelNoLocation|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Type = {{ucfirst:{{{meleeattack4type|}}} }} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Damage = {{{attack4dmg|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Part = {{ucfirst:{{{meleeattack4part|}}} }} }} }}
+
  {{#vardefine: Attack4AP | {{{attack4ap|{{#expr: ({{{attack4dmg|}}}*1.5-0.001) round 0}} }}} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Cooldown = {{{meleeattack4cool|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 AP = {{#var:Attack4AP}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Chance Factor = {{{meleeattack4chancefactor|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Type = {{ucfirst:{{{attack4type|}}} }} }} }}
   {{#vardefine: MeleeAttack4DPS | {{#expr: {{{meleeattack4dmg|}}} / ({{{meleeattack4cool}}}) }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Part = {{ucfirst:{{{attack4part|}}} }} }} }}
   {{#vardefine: MeleeAttack4Chance | {{#expr: {{{meleeattack4dmg|}}} ^ 2 }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Cooldown = {{{attack4cool|}}} }} }}
;Melee Attack 4{{#if: {{{meleeattack3dmg|}}}|&nbsp;}}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Chance Factor = {{{attack4chancefactor|}}} }} }}
:{{ucfirst:{{{meleeattack4part|Body part?}}} }}<!--
+
   {{#vardefine: Attack4DPS | {{#expr: {{{attack4dmg|}}} / ({{{attack4cool|}}}) }} }}
--><br/>{{{meleeattack4dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack4type|}}} }}|{{ucfirst:{{{meleeattack4type|type?}}} }}]])<!--
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 DPS = {{#var:Attack4DPS}} }} }}
--><br/>{{{meleeattack4ap|0}}}% {{AP}}<!--
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Stun = {{{attack4stun|}}} }} }}
--><br/>{{{meleeattack4cool|0}}} seconds cooldown<!--
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Ensure Linked Body Parts Group Always Usable = {{{attack4ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
-->{{#if: {{{meleeattack4chancefactor|}}} | <br/>{{{meleeattack4chancefactor|}}} chance factor}} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Always Treat As Weapon = {{{attack4alwaysTreatAsWeapon|}}} }} }}
 +
;Attack 4
 +
:{{#if: {{{attack4label|}}}|{{#if: {{{attack4labelNoLocation|}}}|{{ucfirst:{{{attack4label|}}}}} ({{ucfirst:{{{attack4labelNoLocation|}}}}})|{{ucfirst:{{{attack4label|}}} }} }}|{{ucfirst:{{{attack4part|Body part?}}}}} }}<!--
 +
--><br/>{{{attack4dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack4type|}}} }}|{{ucfirst:{{{attack4type|type?}}} }}]])<!--
 +
--><br/>{{{attack4ap|{{#expr: ({{{attack4dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 +
--><br/>{{{attack4cool|0}}} second cooldown<!--
 +
-->{{#if: {{{attack4chancefactor|}}} | <br/>{{{attack4chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack4stun|}}} | <br/>Stun for {{Ticks|{{{attack4stun|0}}}*20}} on first strike}} }}
  
 +
{{#if: {{{attack5dmg|}}}{{{attack5type|}}}{{{attack5part|}}}{{{attack5cool|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Label = {{{attack5label|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Label No Location = {{{attack5labelNoLocation|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Damage = {{{attack5dmg|}}} }} }}
 +
  {{#vardefine: Attack5AP | {{{attack5ap|{{#expr: ({{{attack5dmg|}}}*1.5-0.001) round 0}} }}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 AP = {{#var:Attack5AP}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Type = {{ucfirst:{{{attack5type|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Part = {{ucfirst:{{{attack5part|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Cooldown = {{{attack5cool|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Chance Factor = {{{attack5chancefactor|}}} }} }}
 +
  {{#vardefine: Attack5DPS | {{#expr: {{{attack5dmg|}}} / ({{{attack5cool|}}}) }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 DPS = {{#var:Attack5DPS}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Stun = {{{attack5stun|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Ensure Linked Body Parts Group Always Usable = {{{attack5ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 5 Always Treat As Weapon = {{{attack5alwaysTreatAsWeapon|}}} }} }}
 +
;Attack 5
 +
:{{#if: {{{attack5label|}}}|{{#if: {{{attack5labelNoLocation|}}}|{{ucfirst:{{{attack5label|}}}}} ({{ucfirst:{{{attack5labelNoLocation|}}}}})|{{ucfirst:{{{attack5label|}}} }} }}|{{ucfirst:{{{attack5part|Body part?}}}}} }}<!--
 +
--><br/>{{{attack5dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack5type|}}} }}|{{ucfirst:{{{attack5type|type?}}} }}]])<!--
 +
--><br/>{{{attack5ap|{{#expr: ({{{attack5dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 +
--><br/>{{{attack5cool|0}}} second cooldown<!--
 +
-->{{#if: {{{attack5chancefactor|}}} | <br/>{{{attack5chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack5stun|}}} | <br/>Stun for {{Ticks|{{{attack5stun|0}}}*20}} on first strike}} }}
  
{{#if: {{{MeleeWeaponAverageDPS|}}} |
+
{{#if: {{{attack6dmg|}}}{{{attack6type|}}}{{{attack6part|}}}{{{attack6cool|}}} |
   {{#if: {{#var:setProperty}} | {{#set:MeleeDPS = {{{MeleeWeaponAverageDPS|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 6 Label = {{{attack6label|}}} }} }}
;Melee Average {{DPS}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Label No Location = {{{attack6labelNoLocation|}}} }} }}
:{{{MeleeWeaponAverageDPS|}}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Damage = {{{attack6dmg|}}} }} }}
}}
+
  {{#vardefine: Attack6AP | {{{attack6ap|{{#expr: ({{{attack6dmg|}}}*1.5-0.001) round 0}} }}} }}
 
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 AP = {{#var:Attack6AP}} }} }}
{{#if: {{{MeleeWeaponAverageAP|}}} |
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Type = {{ucfirst:{{{attack6type|}}} }} }} }}
   {{#if: {{#var:setProperty}} | {{#set:MeleeAP = {{{MeleeWeaponAverageAP|}}} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Part = {{ucfirst:{{{attack6part|}}} }} }} }}
;Melee Average {{AP}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Cooldown = {{{attack6cool|}}} }} }}
:{{{MeleeWeaponAverageAP|}}}%
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 6 Chance Factor = {{{attack6chancefactor|}}} }} }}
}}
+
  {{#vardefine: Attack6DPS | {{#expr: {{{attack6dmg|}}} / ({{{attack6cool|}}}) }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 DPS = {{#var:Attack6DPS}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Stun = {{{attack6stun|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Ensure Linked Body Parts Group Always Usable = {{{attack6ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 6 Always Treat As Weapon = {{{attack6alwaysTreatAsWeapon|}}} }} }}
 +
;Attack 6
 +
:{{#if: {{{attack6label|}}}|{{#if: {{{attack6labelNoLocation|}}}|{{ucfirst:{{{attack6label|}}}}} ({{ucfirst:{{{attack6labelNoLocation|}}}}})|{{ucfirst:{{{attack6label|}}} }} }}|{{ucfirst:{{{attack6part|Body part?}}}}} }}<!--
 +
--><br/>{{{attack6dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack6type|}}} }}|{{ucfirst:{{{attack6type|type?}}} }}]])<!--
 +
--><br/>{{{attack6ap|{{#expr: ({{{attack6dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 +
--><br/>{{{attack6cool|0}}} second cooldown<!--
 +
-->{{#if: {{{attack6chancefactor|}}} | <br/>{{{attack6chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack6stun|}}} | <br/>Stun for {{Ticks|{{{attack6stun|0}}}*20}} on first strike}} }}
  
 +
{{#if: {{{attack7dmg|}}}{{{attack7type|}}}{{{attack7part|}}}{{{attack7cool|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Label = {{{attack7label|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Label No Location = {{{attack7labelNoLocation|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Damage = {{{attack7dmg|}}} }} }}
 +
  {{#vardefine: Attack7AP | {{{attack7ap|{{#expr: ({{{attack7dmg|}}}*1.5-0.001) round 0}} }}} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 AP = {{#var:Attack7AP}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Type = {{ucfirst:{{{attack7type|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Part = {{ucfirst:{{{attack7part|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Cooldown = {{{attack7cool|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Chance Factor = {{{attack7chancefactor|}}} }} }}
 +
  {{#vardefine: Attack7DPS | {{#expr: {{{attack7dmg|}}} / ({{{attack7cool|}}}) }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 DPS = {{#var:Attack7DPS}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Stun = {{{attack7stun|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Ensure Linked Body Parts Group Always Usable = {{{attack7ensureLinkedBodyPartsGroupAlwaysUsable|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 7 Always Treat As Weapon = {{{attack7alwaysTreatAsWeapon|}}} }} }}
 +
;Attack 7
 +
:{{#if: {{{attack7label|}}}|{{#if: {{{attack7labelNoLocation|}}}|{{ucfirst:{{{attack7label|}}}}} ({{ucfirst:{{{attack7labelNoLocation|}}}}})|{{ucfirst:{{{attack7label|}}} }} }}|{{ucfirst:{{{attack7part|Body part?}}}}} }}<!--
 +
--><br/>{{{attack7dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{attack7type|}}} }}|{{ucfirst:{{{attack7type|type?}}} }}]])<!--
 +
--><br/>{{{attack7ap|{{#expr: ({{{attack7dmg|}}}*1.5-0.001) round 0}} }}}% {{AP}}<!--
 +
--><br/>{{{attack7cool|0}}} second cooldown<!--
 +
-->{{#if: {{{attack7chancefactor|}}} | <br/>{{{attack7chancefactor|}}} chance factor}}<!--
 +
-->{{#if: {{{attack7stun|}}} | <br/>Stun for {{Ticks|{{{attack7stun|0}}}*20}} on first strike}} }}
  
<!-- was supposed to calculate stuff but then decided it's just better to use the value provided by the game
 
  
{{#ifeq: {{#varexists: MeleeAttack3Chance}}|1|
+
{{#if: {{#varexists: Attack1DPS}} | <!-- Defined on the "attack1" block.-->
   {{#vardefine: TotalChance | {{#expr: ({{#var:MeleeAttack1Chance}} + {{#var:MeleeAttack2Chance}} + {{#var:MeleeAttack3Chance}}) }} }}|
+
   {{#vardefine:MobAverageDPS|{{#expr:0.62*{{True Melee DPS Calculator|{{#var:Name}} }} }} }}{{#if: {{#var:setProperty}} | {{#set:Mob Average DPS = {{#var:MobAverageDPS}} }} }}
    {{#ifeq: {{#varexists: MeleeAttack2Chance}}|1|
+
;Average {{DPS}}
      {{#vardefine: TotalChance | {{#expr: ({{#var:MeleeAttack1Chance}} + {{#var:MeleeAttack2Chance}})}} }}|
+
:{{#var:MobAverageDPS}}
      {{#ifeq: {{#varexists: MeleeAttack1Chance}}|1|
 
        {{#vardefine: TotalChance | {{#expr: {{#var:MeleeAttack1Chance}} }} }} }} }} }}
 
 
 
{{#ifeq: {{#varexists: MeleeAttack3DPS}}|1|
 
  {{#vardefine: MeleeWeaponAverageDPS | {{#expr: ({{#var:MeleeAttack1DPS}} * {{#var:MeleeAttack1Chance}} + {{#var:MeleeAttack2DPS}} * {{#var:MeleeAttack2Chance}} + {{#var:MeleeAttack3DPS}} * {{#var:MeleeAttack3Chance}} ) / {{#var:TotalChance}} }} }}|
 
    {{#ifeq: {{#varexists: MeleeAttack2DPS}}|1|
 
      {{#vardefine: MeleeWeaponAverageDPS | {{#expr: ({{#var:MeleeAttack1DPS}} * {{#var:MeleeAttack1Chance}} + {{#var:meleeattack2dmg}} * {{#var:MeleeAttack2Chance}} ) / {{#var:TotalChance}} }} }}|
 
      {{#ifeq: {{#varexists: MeleeAttack1DPS}}|1|
 
        {{#vardefine: MeleeWeaponAverageDPS | {{#expr: {{#var:MeleeAttack1DPS}} }} }} }} }} }}
 
 
 
---------- Line to separate the mess above from the other stuff below ---------- -->
 
 
 
<!--- Creation --->
 
{{#if: {{{research|}}} {{{production facility 1|}}} {{{work to make|}}} {{{resources to make|}}} {{{stuff tags|}}} {{{deconstruct yield|}}} {{{resource 1|}}} {{{resource 2|}}}{{{resource 3|}}} {{{resource 4|}}} {{{resource 5|}}} {{{resource 6|}}} {{{resource 1 amount|}}} {{{resource 2 amount|}}} {{{resource 3 amount|}}} {{{resource 4 amount|}}} {{{resource 5 amount|}}} {{{resource 6 amount|}}} {{{product amount|}}} |
 
</dl>{{clear}}
 
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Creation</p>
 
<dl>
 
 
}}
 
}}
 
{{#if: {{{production facility 1|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 1 = {{{production facility 1|}}} }} }} }}
 
{{#if: {{{production facility 2|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 2 = {{{production facility 2|}}} }} }} }}
 
{{#if: {{{production facility 3|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 3 = {{{production facility 3|}}} }} }} }}
 
{{#if: {{{production facility 4|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 4 = {{{production facility 4|}}} }} }} }}
 
{{#if: {{{production facility 1|}}} |
 
;Crafted At
 
:{{#if:{{{production facility 1|}}}|{{Icon Small|{{{production facility 1|}}}|{{#switch:{{lc:{{{production facility 1|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}{{#if:{{{production facility 2|}}}|&nbsp;/&nbsp;{{Icon Small|{{{production facility 2|}}}|{{#switch:{{lc:{{{production facility 2|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}{{#if:{{{production facility 3|}}}|&nbsp;/&nbsp;{{Icon Small|{{{production facility 3|}}}|{{#switch:{{lc:{{{production facility 3|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}{{#if:{{{production facility 4|}}}|&nbsp;/&nbsp;{{Icon Small|{{{production facility 4|}}}|{{#switch:{{lc:{{{production facility 4|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}
 
 
}}
 
}}
  
{{#if: {{{research|}}}| {{#vardefine: research1|{{ucfirst:{{#explode:{{{research|}}}|,|0}} }} }} {{#vardefine: research2|{{ucfirst:{{#explode:{{{research|}}}|,|1}} }} }} {{#vardefine: research3|{{ucfirst:{{#explode:{{{research|}}}|,|2}} }} }} {{#vardefine: research4|{{ucfirst:{{#explode:{{{research|}}}|,|3}} }} }} {{#vardefine: research5|{{ucfirst:{{#explode:{{{research|}}}|,|4}} }} }}
+
<!-- New melee starting from Beta 18 -->
{{#if: {{#var:setProperty}} | {{#set:
+
{{#ifeq: {{lc:{{{mode|}}} }} | melee |
Required Research = {{#var:research1}}
+
  {{#if: {{#var:setProperty}} | {{#set:Mode = {{{mode|}}} }} }}
|Required Research = {{#var:research2}}
+
;Mode
|Required Research = {{#var:research3}}
+
:{{{mode|}}}
|Required Research = {{#var:research4}}
+
}}
|Required Research = {{#var:research5}}
 
}} }}
 
;Required Research
 
:[[Research#{{#var:research1}}|{{#var:research1}}]] {{#if: {{#pos:artificial metabolism,brain wiring,cataphract armor,circadian influence,compact weaponry,flesh shaping,healing factors,jump packs,molecular analysis,neural computation,poison synthesis,specialized limbs,skin hardening | {{lc:{{#var:research1}} }} }} | {{Icon Small|Techprint|16}} }}<!--
 
  
-->{{#if:{{#var:research2}}|, [[Research#{{#var:research2}}|{{#var:research2}}]] {{#if: {{#pos:artificial metabolism,brain wiring,cataphract armor,circadian influence,compact weaponry,flesh shaping,healing factors,jump packs,molecular analysis,neural computation,poison synthesis,specialized limbs,skin hardening | {{lc:{{#var:research2}} }} }} | {{Icon Small|Techprint|16}} }} }}<!--
+
{{#if: {{{meleeattack1dmg|}}}{{{meleeattack1type|}}}{{{meleeattack1part|}}}{{{meleeattack1cool|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Damage = {{{meleeattack1dmg|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 AP = {{{meleeattack1ap|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Type = {{ucfirst:{{{meleeattack1type|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Part = {{ucfirst:{{{meleeattack1part|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Cooldown = {{{meleeattack1cool|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 1 Chance Factor = {{{meleeattack1chancefactor|}}} }} }}
 +
  {{#vardefine: MeleeAttack1DPS | {{#expr: {{{meleeattack1dmg|}}} / ({{{meleeattack1cool}}}) }} }}
 +
  {{#vardefine: MeleeAttack1Chance | {{#expr: {{{meleeattack1dmg|}}} ^ 2 }} }}
 +
;Melee Attack{{#if: {{{meleeattack1dmg|}}}|&nbsp;1}}
 +
:{{ucfirst:{{{meleeattack1part|Body part?}}} }}<!--
 +
--><br/>{{{meleeattack1dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack1type|}}} }}|{{ucfirst:{{{meleeattack1type|type?}}} }}]])<!--
 +
--><br/>{{{meleeattack1ap|0}}}% {{AP}}<!--
 +
--><br/>{{{meleeattack1cool|0}}} seconds cooldown<!--
 +
-->{{#if: {{{meleeattack1chancefactor|}}} | <br/>{{{meleeattack1chancefactor|}}} chance factor}} }}
  
-->{{#if:{{#var:research3}}|, [[Research#{{#var:research3}}|{{#var:research3}}]] {{#if: {{#pos:artificial metabolism,brain wiring,cataphract armor,circadian influence,compact weaponry,flesh shaping,healing factors,jump packs,molecular analysis,neural computation,poison synthesis,specialized limbs,skin hardening | {{lc:{{#var:research3}} }} }} | {{Icon Small|Techprint|16}} }} }}<!--
+
{{#if: {{{body part|}}} | <!-- Body part that is replaced by an artificial body part -->
 
+
  {{#if: {{#var:setProperty}} | {{#set:Body Part = {{{body part|}}} }} }} <!-- appliedOnFixedBodyParts or appliedOnFixedBodyPartGroups in the xml.-->
-->{{#if:{{#var:research4}}|, [[Research#{{#var:research4}}|{{#var:research4}}]] {{#if: {{#pos:artificial metabolism,brain wiring,cataphract armor,circadian influence,compact weaponry,flesh shaping,healing factors,jump packs,molecular analysis,neural computation,poison synthesis,specialized limbs,skin hardening | {{lc:{{#var:research4}} }} }} | {{Icon Small|Techprint|16}} }} }}<!--
+
;Body Part
 
+
:{{{body part|}}}
-->{{#if:{{#var:research5}}|, [[Research#{{#var:research5}}|{{#var:research5}}]] {{#if: {{#pos:artificial metabolism,brain wiring,cataphract armor,circadian influence,compact weaponry,flesh shaping,healing factors,jump packs,molecular analysis,neural computation,poison synthesis,specialized limbs,skin hardening | {{lc:{{#var:research5}} }} }} | {{Icon Small|Techprint|16}} }} }}
 
 
}}
 
}}
  
{{#if: {{{skill 1|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 1 = {{ucfirst:{{{skill 1|}}} }} }} }} }}
+
{{#if: {{{meleeattack2dmg|}}}{{{meleeattack2type|}}}{{{meleeattack2part|}}}{{{meleeattack2cool|}}} |
{{#if: {{{skill 2|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 2 = {{ucfirst:{{{skill 2|}}} }} }} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Damage = {{{meleeattack2dmg|}}} }} }}
{{#if: {{{skill 1 level|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 1 Level = {{{skill 1 level|}}} }} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 AP = {{{meleeattack2ap|}}} }} }}
{{#if: {{{skill 2 level|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 2 Level = {{{skill 2 level|}}} }} }} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Type = {{ucfirst:{{{meleeattack2type|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Part = {{ucfirst:{{{meleeattack2part|}}} }} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Cooldown = {{{meleeattack2cool|}}} }} }}
 +
  {{#if: {{#var:setProperty}} | {{#set:Attack 2 Chance Factor = {{{meleeattack2chancefactor|}}} }} }}
 +
  {{#vardefine: MeleeAttack2DPS | {{#expr: {{{meleeattack2dmg|}}} / ({{{meleeattack2cool}}}) }} }}
 +
  {{#vardefine: MeleeAttack2Chance | {{#expr: {{{meleeattack2dmg|}}} ^ 2 }} }}
 +
;Melee Attack 2{{#if: {{{meleeattack2dmg|}}}|&nbsp;}}
 +
:{{ucfirst:{{{meleeattack2part|Body part?}}} }}<!--
 +
--><br/>{{{meleeattack2dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack2type|}}} }}|{{ucfirst:{{{meleeattack2type|type?}}} }}]])<!--
 +
--><br/>{{{meleeattack2ap|0}}}% {{AP}}<!--
 +
--><br/>{{{meleeattack2cool|0}}} seconds cooldown<!--
 +
-->{{#if: {{{meleeattack2chancefactor|}}} | <br/>{{{meleeattack2chancefactor|}}} chance factor}} }}
  
{{#if: {{{skill 1|}}} |
+
{{#if: {{{meleeattack3dmg|}}}{{{meleeattack3type|}}}{{{meleeattack3part|}}}{{{meleeattack3cool|}}} |
;Skill{{#if:{{{skill 2|}}}|s}} Required
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Damage = {{{meleeattack3dmg|}}} }} }}
:[[Skills#{{ucfirst:{{{skill 1|}}} }}|{{ucfirst:{{{skill 1|}}} }}]] {{{skill 1 level|}}} {{#if: {{{skill 2|}}}|& [[Skills#{{ucfirst:{{{skill 2|}}} }}|{{ucfirst:{{{skill 2|}}} }}]] {{{skill 2 level|}}} }}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 AP = {{{meleeattack3ap|}}} }} }}
}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Type = {{ucfirst:{{{meleeattack3type|}}} }} }} }}
 
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Part = {{ucfirst:{{{meleeattack3part|}}} }} }} }}
<!-- Work to make should be specified in *ticks*, like in the game files. This has been inconsistent in the past -->
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Cooldown = {{{meleeattack3cool|}}} }} }}
{{#ifeq: {{lc:{{{constructable|}}} }} | false ||
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 3 Chance Factor = {{{meleeattack3chancefactor|}}} }} }}
  {{#if: {{{work to make|}}} |
+
  {{#vardefine: MeleeAttack3DPS | {{#expr: {{{meleeattack3dmg|}}} / ({{{meleeattack3cool}}}) }} }}
    {{#if: {{#var:setProperty}} | {{#set:Work To Make = {{{work to make|}}} }} }}
+
  {{#vardefine: MeleeAttack3Chance | {{#expr: {{{meleeattack3dmg|}}} ^ 2 }} }}
;Work To Make
+
;Melee Attack 3{{#if: {{{meleeattack3dmg|}}}|&nbsp;}}
:{{ticks| {{{work to make|}}} }}
+
:{{ucfirst:{{{meleeattack3part|Body part?}}} }}<!--
}} }}
+
--><br/>{{{meleeattack3dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack3type|}}} }}|{{ucfirst:{{{meleeattack3type|type?}}} }}]])<!--
 +
--><br/>{{{meleeattack3ap|0}}}% {{AP}}<!--
 +
--><br/>{{{meleeattack3cool|0}}} seconds cooldown<!--
 +
-->{{#if: {{{meleeattack3chancefactor|}}} | <br/>{{{meleeattack3chancefactor|}}} chance factor}} }}
  
{{#if: {{{gestation cycles|}}} |
+
{{#if: {{{meleeattack4dmg|}}}{{{meleeattack4type|}}}{{{meleeattack4part|}}}{{{meleeattack4cool|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Gestation Cycles = {{{gestation cycles}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Damage = {{{meleeattack4dmg|}}} }} }}
;{{Hover title|link=no|The number of gestation cycles that must be initiated by a mechanitor to gestate this mechanoid|Gestation Cycles}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 AP = {{{meleeattack4ap|}}} }} }}
:{{{gestation cycles|}}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Type = {{ucfirst:{{{meleeattack4type|}}} }} }} }}
}}
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Part = {{ucfirst:{{{meleeattack4part|}}} }} }} }}
 
+
  {{#if: {{#var:setProperty}} | {{#set:Attack 4 Cooldown = {{{meleeattack4cool|}}} }} }}
{{#if: {{{stuff tags|}}} |
+
   {{#if: {{#var:setProperty}} | {{#set:Attack 4 Chance Factor = {{{meleeattack4chancefactor|}}} }} }}
   {{#if: {{#var:setProperty}} | {{#set:Stuff Tags = {{{stuff tags}}} }} }}
+
  {{#vardefine: MeleeAttack4DPS | {{#expr: {{{meleeattack4dmg|}}} / ({{{meleeattack4cool}}}) }} }}
;{{Hover title|link=no|The types of resource that can be substituted for the generic resource type|Stuff Tags}}
+
  {{#vardefine: MeleeAttack4Chance | {{#expr: {{{meleeattack4dmg|}}} ^ 2 }} }}
:{{{stuff tags|}}}
+
;Melee Attack 4{{#if: {{{meleeattack3dmg|}}}|&nbsp;}}
}}
+
:{{ucfirst:{{{meleeattack4part|Body part?}}} }}<!--
 +
--><br/>{{{meleeattack4dmg|?}}} dmg ([[Damage Types#{{ucfirst:{{{meleeattack4type|}}} }}|{{ucfirst:{{{meleeattack4type|type?}}} }}]])<!--
 +
--><br/>{{{meleeattack4ap|0}}}% {{AP}}<!--
 +
--><br/>{{{meleeattack4cool|0}}} seconds cooldown<!--
 +
-->{{#if: {{{meleeattack4chancefactor|}}} | <br/>{{{meleeattack4chancefactor|}}} chance factor}} }}
 +
 
 +
 
 +
<!-- was supposed to calculate stuff but then decided it's just better to use the value provided by the game
  
{{#ifeq: {{lc:{{{constructable|}}} }} | false ||
+
{{#ifeq: {{#varexists: MeleeAttack3Chance}}|1|
  {{#if: {{{resource 1|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 1 = {{{resource 1|}}} }} }} }}
+
   {{#vardefine: TotalChance | {{#expr: ({{#var:MeleeAttack1Chance}} + {{#var:MeleeAttack2Chance}} + {{#var:MeleeAttack3Chance}}) }} }}|
   {{#if: {{{resource 2|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 2 = {{{resource 2|}}} }} }} }}
+
    {{#ifeq: {{#varexists: MeleeAttack2Chance}}|1|
  {{#if: {{{resource 3|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 3 = {{{resource 3|}}} }} }} }}
+
      {{#vardefine: TotalChance | {{#expr: ({{#var:MeleeAttack1Chance}} + {{#var:MeleeAttack2Chance}})}} }}|
  {{#if: {{{resource 4|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 4 = {{{resource 4|}}} }} }} }}
+
      {{#ifeq: {{#varexists: MeleeAttack1Chance}}|1|
  {{#if: {{{resource 5|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 5 = {{{resource 5|}}} }} }} }}
+
        {{#vardefine: TotalChance | {{#expr: {{#var:MeleeAttack1Chance}} }} }} }} }} }}
  {{#if: {{{resource 6|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 6 = {{{resource 6|}}} }} }} }}
 
  {{#if: {{{resource 1 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 1 Type = {{{resource 1 type|}}} }} }} }}
 
  {{#if: {{{resource 2 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 2 Type = {{{resource 2 type|}}} }} }} }}
 
  {{#if: {{{resource 3 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 3 Type = {{{resource 3 type|}}} }} }} }}
 
  {{#if: {{{resource 4 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 4 Type = {{{resource 4 type|}}} }} }} }}
 
  {{#if: {{{resource 5 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 5 Type = {{{resource 5 type|}}} }} }} }}
 
  {{#if: {{{resource 6 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 6 Type = {{{resource 6 type|}}} }} }} }}
 
  {{#if: {{{resource 1 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 1 Amount = {{{resource 1 amount|}}} }} }} }}
 
  {{#if: {{{resource 2 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 2 Amount = {{{resource 2 amount|}}} }} }} }}
 
  {{#if: {{{resource 3 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 3 Amount = {{{resource 3 amount|}}} }} }} }}
 
  {{#if: {{{resource 4 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 4 Amount = {{{resource 4 amount|}}} }} }} }}
 
  {{#if: {{{resource 5 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 5 Amount = {{{resource 5 amount|}}} }} }} }}
 
  {{#if: {{{resource 6 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 6 Amount = {{{resource 6 amount|}}} }} }} }}
 
  
 +
{{#ifeq: {{#varexists: MeleeAttack3DPS}}|1|
 +
  {{#vardefine: MeleeWeaponAverageDPS | {{#expr: ({{#var:MeleeAttack1DPS}} * {{#var:MeleeAttack1Chance}} + {{#var:MeleeAttack2DPS}} * {{#var:MeleeAttack2Chance}} + {{#var:MeleeAttack3DPS}} * {{#var:MeleeAttack3Chance}} ) / {{#var:TotalChance}} }} }}|
 +
    {{#ifeq: {{#varexists: MeleeAttack2DPS}}|1|
 +
      {{#vardefine: MeleeWeaponAverageDPS | {{#expr: ({{#var:MeleeAttack1DPS}} * {{#var:MeleeAttack1Chance}} + {{#var:meleeattack2dmg}} * {{#var:MeleeAttack2Chance}} ) / {{#var:TotalChance}} }} }}|
 +
      {{#ifeq: {{#varexists: MeleeAttack1DPS}}|1|
 +
        {{#vardefine: MeleeWeaponAverageDPS | {{#expr: {{#var:MeleeAttack1DPS}} }} }} }} }} }}
  
  {{#if: {{{resource 1|}}}|<!--{{#ifeq: {{lc:{{{placeable|}}} }}|false||-->
+
---------- Line to separate the mess above from the other stuff below ---------- -->
;Resources to make
 
:{{#ifeq: {{{resource 1|}}}|Nutrition|{{{resource 1 amount|}}} [[{{{resource 1|}}}]] ({{{resource 1 type|}}})|{{Icon Small|{{{resource 1|}}}|16}} {{{resource 1 amount|}}} }} {{#if: {{{resource 2|}}}| + {{#ifeq: {{{resource 2|}}}|Nutrition|{{{resource 2 amount|}}} [[{{{resource 2|}}}]] ({{{resource 2 type|}}})|{{Icon Small|{{{resource 2|}}}|16}} {{{resource 2 amount|}}} }} }} {{#if: {{{resource 3|}}}| + {{Icon Small|{{{resource 3|}}}|16}} {{{resource 3 amount|}}}|}} {{#if: {{{resource 4|}}}| + {{Icon Small|{{{resource 4|}}}|16}} {{{resource 4 amount|}}}|}} {{#if: {{{resource 5|}}}| + {{Icon Small|{{{resource 5|}}}|16}} {{{resource 5 amount|}}}|}} {{#if: {{{resource 6|}}}| + {{Icon Small|{{{resource 6|}}}|16}} {{{resource 6 amount|}}}|}}
 
<!--|}}-->
 
}}
 
  
<!---If resource 1 is set to stuff, but theres no stuff tags, make note of it--->
+
<!--- 13. CREATION --->
{{#ifeq: Stuff | {{{resource 1|}}} | {{#if: {{{stuff tags|}}}| |
+
{{#if: {{{research|}}} {{{production facility 1|}}} {{{work to make|}}} {{{resources to make|}}} {{{stuff tags|}}} {{{deconstruct yield|}}} {{{resource 1|}}} {{{resource 2|}}}{{{resource 3|}}} {{{resource 4|}}} {{{resource 5|}}} {{{resource 6|}}} {{{resource 1 amount|}}} {{{resource 2 amount|}}} {{{resource 3 amount|}}} {{{resource 4 amount|}}} {{{resource 5 amount|}}} {{{resource 6 amount|}}} {{{product amount|}}} |
;{{Hover title|link=no|The types of resource that can be substituted for the generic resource type|Stuff tags}}
+
</dl>{{clear}}
:<span style="color:red">'''ERROR: NO STUFF TAGS'''</span>
+
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Creation</p>
 +
<dl>
 +
 
 +
{{#if: {{{production facility 1|}}} | <!-- Compressed -->
 +
{{#if: {{#var:setProperty}} | {{#set:Production Facility 1 = {{{production facility 1|}}} }} }}
 +
{{#if: {{{production facility 2|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 2 = {{{production facility 2|}}} }} }} }}
 +
{{#if: {{{production facility 3|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 3 = {{{production facility 3|}}} }} }} }}
 +
{{#if: {{{production facility 4|}}} | {{#if: {{#var:setProperty}} | {{#set:Production Facility 4 = {{{production facility 4|}}} }} }} }}
 +
;Crafted At
 +
:{{Icon Small|{{{production facility 1|}}}|{{#switch:{{lc:{{{production facility 1|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }}{{#if:{{{production facility 2|}}}|&nbsp;/&nbsp;{{Icon Small|{{{production facility 2|}}}|{{#switch:{{lc:{{{production facility 2|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}{{#if:{{{production facility 3|}}}|&nbsp;/&nbsp;{{Icon Small|{{{production facility 3|}}}|{{#switch:{{lc:{{{production facility 3|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}{{#if:{{{production facility 4|}}}|&nbsp;/&nbsp;{{Icon Small|{{{production facility 4|}}}|{{#switch:{{lc:{{{production facility 4|}}} }}|butcher spot|crafting spot|campfire|fermenting barrel|nutrient paste dispenser=16|#default=32}} }} }}
 
}}
 
}}
|}}
+
 
 +
<!-- Research section -->
 +
{{#if: {{#vardefineecho:research|{{{research|}}} }} | {{#vardefine:research1|{{ucfirst:{{#explode:{{#var:research}}|,|0}} }} }}{{#vardefine:research2|{{ucfirst:{{#explode:{{#var:research}}|,|1}} }} }}{{#vardefine:research3|{{ucfirst:{{#explode:{{#var:research}}|,|2}} }} }}{{#vardefine:research4|{{ucfirst:{{#explode:{{#var:research}}|,|3}} }} }}{{#vardefine:research5|{{ucfirst:{{#explode:{{#var:research}}|,|4}} }} }}
 +
{{#if: {{#var:setProperty}} | {{#set:
 +
  Required Research = {{#var:research1}}
 +
| Required Research = {{#var:research2}}
 +
| Required Research = {{#var:research3}}
 +
| Required Research = {{#var:research4}}
 +
| Required Research = {{#var:research5}}
 +
}} }}
 +
;Required Research
 +
:[[Research#{{#var:research1}}|{{#var:research1}}]]{{#if: {{#pos:Artificial metabolism, Brain wiring, Cataphract armor, Circadian influence, Compact weaponry, Flesh shaping, Healing factors, Jump packs, Molecular analysis, Neural computation, Poison synthesis, Specialized limbs, Skin hardening | {{#var:research1}} }} | {{Icon Small|Techprint|16}} }}<!--
 +
 
 +
-->{{#if:{{#var:research2}}|, [[Research#{{#var:research2}}|{{#var:research2}}]]{{#if: {{#pos:Artificial metabolism, Brain wiring, Cataphract armor, Circadian influence, Compact weaponry, Flesh shaping, Healing factors, Jump packs, Molecular analysis, Neural computation, Poison synthesis, Specialized limbs, Skin hardening | {{#var:research2}} }} | &nbsp;{{Icon Small|Techprint|16}} }} }}<!--
 +
 
 +
-->{{#if:{{#var:research3}}|, [[Research#{{#var:research3}}|{{#var:research3}}]]{{#if: {{#pos:Artificial metabolism, Brain wiring, Cataphract armor, Circadian influence, Compact weaponry, Flesh shaping, Healing factors, Jump packs, Molecular analysis, Neural computation, Poison synthesis, Specialized limbs, Skin hardening | {{#var:research3}} }} | &nbsp;{{Icon Small|Techprint|16}} }} }}<!--
 +
 
 +
-->{{#if:{{#var:research4}}|, [[Research#{{#var:research4}}|{{#var:research4}}]]{{#if: {{#pos:Artificial metabolism, Brain wiring, Cataphract armor, Circadian influence, Compact weaponry, Flesh shaping, Healing factors, Jump packs, Molecular analysis, Neural computation, Poison synthesis, Specialized limbs, Skin hardening | {{#var:research4}} }} | &nbsp;{{Icon Small|Techprint|16}} }} }}<!--
 +
 
 +
-->{{#if:{{#var:research5}}|, [[Research#{{#var:research5}}|{{#var:research5}}]]{{#if: {{#pos:Artificial metabolism, Brain wiring, Cataphract armor, Circadian influence, Compact weaponry, Flesh shaping, Healing factors, Jump packs, Molecular analysis, Neural computation, Poison synthesis, Specialized limbs, Skin hardening | {{#var:research5}} }} | &nbsp;{{Icon Small|Techprint|16}} }} }}
 
}}
 
}}
  
{{#if: {{{product amount|}}} |
+
{{#if: {{{skill 1|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 1 = {{ucfirst:{{{skill 1|}}} }} }} }} }}
  {{#if: {{#var:setProperty}} | {{#set:Product Amount = {{{product amount|}}} }} }}
+
{{#if: {{{skill 2|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 2 = {{ucfirst:{{{skill 2|}}} }} }} }} }}
;{{Hover title|link=no|The amount of this item produced from the required resources|Product Amount}}
+
{{#if: {{{skill 1 level|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 1 Level = {{{skill 1 level|}}} }} }} }}
:{{Icon Small| {{#var:Name}} | 16 }} {{{product amount|}}}
+
{{#if: {{{skill 2 level|}}} | {{#if: {{#var:setProperty}} | {{#set:Skill 2 Level = {{{skill 2 level|}}} }} }} }}
 +
 
 +
{{#if: {{{skill 1|}}} |
 +
;Skill{{#if:{{{skill 2|}}}|s}} Required
 +
:[[Skills#{{ucfirst:{{{skill 1|}}} }}|{{ucfirst:{{{skill 1|}}} }}]] {{{skill 1 level|}}} {{#if: {{{skill 2|}}}|& [[Skills#{{ucfirst:{{{skill 2|}}} }}|{{ucfirst:{{{skill 2|}}} }}]] {{{skill 2 level|}}} }}
 
}}
 
}}
  
{{#if: {{{deconstruct yield|}}}|
+
<!-- Work to make should be specified in *ticks*, like in the game files. This has been inconsistent in the past -->
;{{Hover title| link=no | Resources recovered when deconstructing. | Deconstruct yield }}
+
{{#ifeq: {{lc:{{{constructable|}}} }} | false ||
:{{{deconstruct yield|}}}|
+
  {{#if: {{{work to make|}}} |
<!-- if resource 1 != None and type = Building and deconstructable != false and deconstructyieldfraction|0.5 > 0 NON-EXCLUSIVE OR if deconstruct yield fraction set above 0 manually OR set to deconstructable true
+
    {{#if: {{#var:setProperty}} | {{#set:Work To Make = {{{work to make|}}} }} }}
-->{{#ifexpr:{{#if: {{{resource 1|}}}|1|0}}*{{#ifeq:{{{type|}}}|Building|1|0}}*{{#ifeq:{{lc:{{{deconstructable|}}} }}|false|0|1}}*{{#ifexpr: {{{deconstructyieldfraction|0.5}}} > 0|1|0}} + {{#ifexpr: {{{deconstructyieldfraction|-1}}} > 0|1|0}} + {{#ifeq:{{lc:{{{deconstructable|}}} }}|true|1|0}} > 0|
+
;Work To Make
;{{Hover title|link=no|Resources recovered when deconstructing.|Deconstruct yield}}
+
:{{ticks| {{{work to make|}}} }}
:{{Icon Small|{{{resource 1|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }} <!--
+
}} }}
-->{{#if: {{{resource 2|}}}| + {{Icon Small|{{{resource 2|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
+
 
-->{{#if: {{{resource 3|}}}| + {{Icon Small|{{{resource 3|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
+
{{#if: {{{work speed stat|}}} |
-->{{#if: {{{resource 4|}}}| + {{Icon Small|{{{resource 4|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
+
  {{#if: {{#var:setProperty}} | {{#set:Work Speed Stat = {{{work speed stat|}}} }} }}
-->{{#if: {{{resource 5|}}}| + {{Icon Small|{{{resource 5|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
+
;Work Speed Stat
-->{{#if: {{{resource 6|}}}| + {{Icon Small|{{{resource 6|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}}
+
:[[{{{work speed stat|}}}]]
|}}
+
}}
 +
 
 +
{{#if: {{{gestation cycles|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Gestation Cycles = {{{gestation cycles}}} }} }}
 +
;<abbr title="The number of gestation cycles that must be initiated by a mechanitor to gestate this mechanoid">Gestation Cycles</abbr>
 +
:{{{gestation cycles|}}}
 
}}
 
}}
  
{{#if:{{{destroyyield|}}} |
+
{{#if: {{{stuff tags|}}} |
;{{Hover title| link=no | Resources recovered when destroyed. | Destroy yield }}
+
  {{#if: {{#var:setProperty}} |
:{{{destroyyield|}}}<!--Uses destroyyield if it's set. leavesresourceswhendestroyed and bonusdestroyleavings are to be phased out.
+
    {{#set:Stuff Tags = {{#explode:{{{stuff tags|}}}|,|0}}
-->| {{#ifeq:{{{type|}}}|Building|<!--If leavesresourceswhendestroyed != false and resource 1 != None or if bonusdestroyleavings != None: write the title
+
        | Stuff Tags = {{#explode:{{{stuff tags|}}}|,|1}}
-->{{#ifexpr: {{#ifeq:{{lc:{{{leavesresourceswhendestroyed|}}} }}|false|0|1}}*{{#if:{{{resource 1|}}}|1|0}} + {{#if:{{{bonusdestroyleavings|}}}|1|0}} > 0|
+
        | Stuff Tags = {{#explode:{{{stuff tags|}}}|,|2}}
;{{Hover title|link=no|Resources recovered when destroyed.|Destroy yield}}
+
        | Stuff Tags = {{#explode:{{{stuff tags|}}}|,|3}}
:{{#ifexpr: {{#ifeq:{{lc:{{{leavesresourceswhendestroyed|}}} }}|false|0|1}}*{{#if:{{{resource 1|}}}|1|0}} = 1|<!--If leavesresourceswhendestroyed != false and resource 1 != None: list out resources*0.25
+
        | Stuff Tags = {{#explode:{{{stuff tags|}}}|,|4}} }} }}
-->{{#if: {{{resource 1|}}}| {{Icon Small|{{{resource 1|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 1 amount|}}}*0.25) }} | {{#expr: floor({{{resource 1 amount|}}}*0.25) }} | {{#expr: {{{resource 1 amount|}}}*0.25 }} | {{#expr: floor({{{resource 1 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 1 amount|}}}*0.25) }} }}|}} <!--
+
;<abbr title="The types of resource that can be substituted for the generic resource type">Stuff Tags</abbr>
-->{{#if: {{{resource 2|}}}| + {{Icon Small|{{{resource 2|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 2 amount|}}}*0.25) }} | {{#expr: floor({{{resource 2 amount|}}}*0.25) }} | {{#expr: {{{resource 2 amount|}}}*0.25 }} | {{#expr: floor({{{resource 2 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 2 amount|}}}*0.25) }} }}|}} <!--
+
:{{{stuff tags|}}}
-->{{#if: {{{resource 3|}}}| + {{Icon Small|{{{resource 3|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 3 amount|}}}*0.25) }} | {{#expr: floor({{{resource 3 amount|}}}*0.25) }} | {{#expr: {{{resource 3 amount|}}}*0.25 }} | {{#expr: floor({{{resource 3 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 3 amount|}}}*0.25) }} }}|}} <!--
+
}}
-->{{#if: {{{resource 4|}}}| + {{Icon Small|{{{resource 4|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 4 amount|}}}*0.25) }} | {{#expr: floor({{{resource 4 amount|}}}*0.25) }} | {{#expr: {{{resource 4 amount|}}}*0.25 }} | {{#expr: floor({{{resource 4 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 4 amount|}}}*0.25) }} }}|}} <!--
+
 
-->{{#if: {{{resource 5|}}}| + {{Icon Small|{{{resource 5|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 5 amount|}}}*0.25) }} | {{#expr: floor({{{resource 5 amount|}}}*0.25) }} | {{#expr: {{{resource 5 amount|}}}*0.25 }} | {{#expr: floor({{{resource 5 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 5 amount|}}}*0.25) }} }}|}} <!--
+
{{#ifeq: {{lc:{{{constructable|}}} }} | false ||
-->{{#if: {{{resource 6|}}}| + {{Icon Small|{{{resource 6|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 6 amount|}}}*0.25) }} | {{#expr: floor({{{resource 6 amount|}}}*0.25) }} | {{#expr: {{{resource 6 amount|}}}*0.25 }} | {{#expr: floor({{{resource 6 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 6 amount|}}}*0.25) }} }}|}}<!--
+
  {{#if: {{{resource 1|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 1 = {{{resource 1|}}} }} }} }}
-->|}}<!--
+
  {{#if: {{{resource 2|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 2 = {{{resource 2|}}} }} }} }}
-->{{#ifexpr:{{#ifeq:{{lc:{{{leavesresourceswhendestroyed|}}} }}|false|0|1}}*{{#if:{{{resource 1|}}}|1|0}}*{{#if:{{{bonusdestroyleavings|}}}|1|0}} = 1| + }}<!--If leavesresourceswhendestroyed != false and resource 1 != None and bonusdestroyleavings != None: write " + "
+
  {{#if: {{{resource 3|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 3 = {{{resource 3|}}} }} }} }}
-->{{#if: {{{bonusdestroyleavings|}}} | {{{bonusdestroyleavings|}}} }}<!--If bonusdestroyleavings != None, write bonusdestroyleavings (should be given in format: <amount> {{Icon Small|<resource>}})
+
  {{#if: {{{resource 4|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 4 = {{{resource 4|}}} }} }} }}
-->|}}<!--
+
  {{#if: {{{resource 5|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 5 = {{{resource 5|}}} }} }} }}
-->|}}<!--
+
  {{#if: {{{resource 6|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 6 = {{{resource 6|}}} }} }} }}
-->}}
+
  {{#if: {{{resource 1 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 1 Type = {{{resource 1 type|}}} }} }} }}
 
+
  {{#if: {{{resource 2 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 2 Type = {{{resource 2 type|}}} }} }} }}
<!-- TECHNICAL -->
+
  {{#if: {{{resource 3 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 3 Type = {{{resource 3 type|}}} }} }} }}
{{#if: {{#var:setProperty}} | {{#if: {{{page verified for version|}}} | {{Verified|{{{page verified for version|}}} }} | {{Verified}} }} }}
+
  {{#if: {{{resource 4 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 4 Type = {{{resource 4 type|}}} }} }} }}
 
+
  {{#if: {{{resource 5 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 5 Type = {{{resource 5 type|}}} }} }} }}
{{#if: {{{defName|}}} {{{has quality|}}} {{{color|}}} {{{thingCategories|}}} {{{file|}}} {{{weaponTags|}}} {{{thingSetMakerTags|}}} {{{defaultOutfitTags|}}} {{{factionPrerequisiteTags|}}} {{{harvestTag|}}} {{{recipePrerequisiteTags|}}} {{{ResearchProjectTagDef|}}} {{{sowTag|}}} {{{sowTags|}}} {{{tag|}}} {{{tags|}}} {{{techHediffsTags|}}} {{{thingSetMakerTagsToAllow|}}} {{{thingSetMakerTagsToDisallow|}}} {{{tradeTag|}}} {{{tradeTags|}}} {{{tradeTagsBuy|}}} {{{tradeTagsSell|}}} {{{tradeTagsToAllow|}}} {{{tutorHighlightTag|}}} {{{apparelTags|}}} {{{buildingTags|}}} {{{stuff adjective|}}} {{{small volume|}}} {{{preferability|}}} {{{food preference|}}} {{{drug category|}}} {{{is pleasure drug|}}} {{{work efficiency factor|}}} {{{work efficiency offset|}}} {{{max simultaneous facilities|}}} {{{unpowered work speed factor|}}} {{{bulk product amount|}}} |
+
  {{#if: {{{resource 6 type|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 6 Type = {{{resource 6 type|}}} }} }} }}
</dl>{{clear}}
+
  {{#if: {{{resource 1 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 1 Amount = {{{resource 1 amount|}}} }} }} }}
<div class="subheading mw-customtoggle-myDivision" style='height: 1em !important; padding: 0.25em 0em 0.5em !important; margin: 0.5em 0 0.5em !important; width:300px'> Technical
+
  {{#if: {{{resource 2 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 2 Amount = {{{resource 2 amount|}}} }} }} }}
<div class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision"> <span style='color: #504f54; text-align: left; text-shadow: 0px 0px; font-family: Arial; font-size: 0.8em; height: 0em !important; padding: 0em 0em 0em !important; margin: 0em 0 0em !important;'>
+
  {{#if: {{{resource 3 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 3 Amount = {{{resource 3 amount|}}} }} }} }}
{{#if: {{{defName|}}} |
+
  {{#if: {{{resource 4 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 4 Amount = {{{resource 4 amount|}}} }} }} }}
; defName
+
  {{#if: {{{resource 5 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 5 Amount = {{{resource 5 amount|}}} }} }} }}
: {{{defName|}}}
+
  {{#if: {{{resource 6 amount|}}} | {{#if: {{#var:setProperty}} | {{#set:Resource 6 Amount = {{{resource 6 amount|}}} }} }} }}
}}<!--
+
 
-->{{#if: {{{has quality|}}} | {{#if: {{#var:setProperty}} | {{#set:Has Quality = {{ucfirst:{{{has quality|}}} }} }} }}
+
 
;Has Quality
+
  {{#if: {{{resource 1|}}}|<!--{{#ifeq: {{lc:{{{placeable|}}} }}|false||-->
:{{ucfirst:{{{has quality|}}} }}
+
;Resources to make
}}<!--
+
:{{#ifeq: {{{resource 1|}}}|Nutrition|{{{resource 1 amount|}}} [[{{{resource 1|}}}]] ({{{resource 1 type|}}})|{{Icon Small|{{{resource 1|}}}|16}} {{{resource 1 amount|}}} }} {{#if: {{{resource 2|}}}| + {{#ifeq: {{{resource 2|}}}|Nutrition|{{{resource 2 amount|}}} [[{{{resource 2|}}}]] ({{{resource 2 type|}}})|{{Icon Small|{{{resource 2|}}}|16}} {{{resource 2 amount|}}} }} }} {{#if: {{{resource 3|}}}| + {{Icon Small|{{{resource 3|}}}|16}} {{{resource 3 amount|}}}|}} {{#if: {{{resource 4|}}}| + {{Icon Small|{{{resource 4|}}}|16}} {{{resource 4 amount|}}}|}} {{#if: {{{resource 5|}}}| + {{Icon Small|{{{resource 5|}}}|16}} {{{resource 5 amount|}}}|}} {{#if: {{{resource 6|}}}| + {{Icon Small|{{{resource 6|}}}|16}} {{{resource 6 amount|}}}|}}
-->{{#if: {{{color|}}} | {{#if: {{#var:setProperty}} | {{#set:color = {{{color|}}} }} }}
+
<!--|}}-->
;Color
+
}}
:{{{color|}}}
+
 
 +
<!---If resource 1 is set to stuff, but theres no stuff tags, make note of it--->
 +
{{#ifeq: Stuff | {{{resource 1|}}} | {{#if: {{{stuff tags|}}}| |
 +
;<abbr title="The types of resource that can be substituted for the generic resource type">Stuff tags</abbr>
 +
:<span style="color:red">'''ERROR: NO STUFF TAGS'''</span>
 +
}}
 +
|}}
 +
}}
 +
 
 +
{{#if: {{{product amount|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Product Amount = {{{product amount|}}} }} }}
 +
;<abbr title="The amount of this item produced from the required resources">Product Amount</abbr>
 +
:{{Icon Small| {{#var:Name}} | 16 }} {{{product amount|}}}
 +
}}
 +
 
 +
{{#if: {{{deconstruct yield|}}}|
 +
;<abbr title="Resources recovered when deconstructing.">Deconstruct yield</abbr>
 +
:{{{deconstruct yield|}}}|
 +
<!-- if resource 1 != None and type = Building and deconstructable != false and deconstructyieldfraction|0.5 > 0 NON-EXCLUSIVE OR if deconstruct yield fraction set above 0 manually OR set to deconstructable true
 +
-->{{#ifexpr:{{#if: {{{resource 1|}}}|1|0}}*{{#ifeq:{{{type|}}}|Building|1|0}}*{{#ifeq:{{lc:{{{deconstructable|}}} }}|false|0|1}}*{{#ifexpr: {{{deconstructyieldfraction|0.5}}} > 0|1|0}} + {{#ifexpr: {{{deconstructyieldfraction|-1}}} > 0|1|0}} + {{#ifeq:{{lc:{{{deconstructable|}}} }}|true|1|0}} > 0|
 +
;<abbr title="Resources recovered when deconstructing.">Deconstruct yield</abbr>
 +
:{{Icon Small|{{{resource 1|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 1 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }} <!--
 +
-->{{#if: {{{resource 2|}}}| + {{Icon Small|{{{resource 2|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 2 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
 +
-->{{#if: {{{resource 3|}}}| + {{Icon Small|{{{resource 3|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 3 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
 +
-->{{#if: {{{resource 4|}}}| + {{Icon Small|{{{resource 4|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 4 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
 +
-->{{#if: {{{resource 5|}}}| + {{Icon Small|{{{resource 5|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 5 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}} <!--
 +
-->{{#if: {{{resource 6|}}}| + {{Icon Small|{{{resource 6|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} | {{#expr: floor({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }}|{{#expr: {{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}} }}|{{#expr: floor({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} - {{#expr: ceil({{{resource 6 amount|}}}*{{{deconstructyieldfraction|0.5}}}) }} }}|}}
 +
|}}
 +
}}
 +
 
 +
{{#if:{{{destroyyield|}}} |
 +
;<abbr title="Resources recovered when destroyed.">Destroy yield</abbr>
 +
:{{{destroyyield|}}}<!--Uses destroyyield if it's set. leavesresourceswhendestroyed and bonusdestroyleavings are to be phased out.
 +
-->| {{#ifeq:{{{type|}}}|Building|<!--If leavesresourceswhendestroyed != false and resource 1 != None or if bonusdestroyleavings != None: write the title
 +
-->{{#ifexpr: {{#ifeq:{{lc:{{{leavesresourceswhendestroyed|}}} }}|false|0|1}}*{{#if:{{{resource 1|}}}|1|0}} + {{#if:{{{bonusdestroyleavings|}}}|1|0}} > 0|
 +
;<abbr title="Resources recovered when destroyed.">Destroy yield</abbr>
 +
:{{#ifexpr: {{#ifeq:{{lc:{{{leavesresourceswhendestroyed|}}} }}|false|0|1}}*{{#if:{{{resource 1|}}}|1|0}} = 1|<!--If leavesresourceswhendestroyed != false and resource 1 != None: list out resources*0.25
 +
-->{{#if: {{{resource 1|}}}| {{Icon Small|{{{resource 1|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 1 amount|}}}*0.25) }} | {{#expr: floor({{{resource 1 amount|}}}*0.25) }} | {{#expr: {{{resource 1 amount|}}}*0.25 }} | {{#expr: floor({{{resource 1 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 1 amount|}}}*0.25) }} }}|}} <!--
 +
-->{{#if: {{{resource 2|}}}| + {{Icon Small|{{{resource 2|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 2 amount|}}}*0.25) }} | {{#expr: floor({{{resource 2 amount|}}}*0.25) }} | {{#expr: {{{resource 2 amount|}}}*0.25 }} | {{#expr: floor({{{resource 2 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 2 amount|}}}*0.25) }} }}|}} <!--
 +
-->{{#if: {{{resource 3|}}}| + {{Icon Small|{{{resource 3|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 3 amount|}}}*0.25) }} | {{#expr: floor({{{resource 3 amount|}}}*0.25) }} | {{#expr: {{{resource 3 amount|}}}*0.25 }} | {{#expr: floor({{{resource 3 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 3 amount|}}}*0.25) }} }}|}} <!--
 +
-->{{#if: {{{resource 4|}}}| + {{Icon Small|{{{resource 4|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 4 amount|}}}*0.25) }} | {{#expr: floor({{{resource 4 amount|}}}*0.25) }} | {{#expr: {{{resource 4 amount|}}}*0.25 }} | {{#expr: floor({{{resource 4 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 4 amount|}}}*0.25) }} }}|}} <!--
 +
-->{{#if: {{{resource 5|}}}| + {{Icon Small|{{{resource 5|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 5 amount|}}}*0.25) }} | {{#expr: floor({{{resource 5 amount|}}}*0.25) }} | {{#expr: {{{resource 5 amount|}}}*0.25 }} | {{#expr: floor({{{resource 5 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 5 amount|}}}*0.25) }} }}|}} <!--
 +
-->{{#if: {{{resource 6|}}}| + {{Icon Small|{{{resource 6|}}}|16}} {{#ifeq: {{#expr: ceil({{{resource 6 amount|}}}*0.25) }} | {{#expr: floor({{{resource 6 amount|}}}*0.25) }} | {{#expr: {{{resource 6 amount|}}}*0.25 }} | {{#expr: floor({{{resource 6 amount|}}}*0.25) }} - {{#expr: ceil({{{resource 6 amount|}}}*0.25) }} }}|}}<!--
 +
-->|}}<!--
 +
-->{{#ifexpr:{{#ifeq:{{lc:{{{leavesresourceswhendestroyed|}}} }}|false|0|1}}*{{#if:{{{resource 1|}}}|1|0}}*{{#if:{{{bonusdestroyleavings|}}}|1|0}} = 1| + }}<!--If leavesresourceswhendestroyed != false and resource 1 != None and bonusdestroyleavings != None: write " + "
 +
-->{{#if: {{{bonusdestroyleavings|}}} | {{{bonusdestroyleavings|}}} }}<!--If bonusdestroyleavings != None, write bonusdestroyleavings (should be given in format: <amount> {{Icon Small|<resource>}})
 +
-->|}}<!--
 +
-->|}}<!--
 +
-->}}
 +
}}
 +
 
 +
<!-- 14. ABILITY -->
 +
{{#if: {{{psylink level|}}} {{{casting time|}}} {{{ability range|}}} {{{psyfocus cost|}}} {{{neural heat gain|}}} {{{effect radius|}}} {{{duration|}}} {{{duration multiplier|}}} {{{goodwill impact|}}} |
 +
</dl>{{clear}}
 +
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important; margin: 0.5em 0 0.5em !important'>Ability</p>
 +
<dl>
 +
 
 +
{{#if: {{{psylink level|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Psylink Level = {{{psylink level|}}} }} }}
 +
;Psylink Level
 +
:{{{psylink level|}}}
 +
}}
 +
 
 +
{{#if: {{{psyfocus cost|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Psyfocus Cost = {{{psyfocus cost|}}} }} }}
 +
;Psyfocus Cost
 +
:{{%|{{{psyfocus cost|}}}}}
 +
}}
 +
 
 +
{{#if: {{{neural heat gain|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Neural Heat Gain = {{{neural heat gain|}}} }} }}
 +
;Neural Heat Gain
 +
:{{{neural heat gain|}}}
 +
}}
 +
 
 +
{{#if: {{{casting time|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Casting Time = {{{casting time|}}} }} }}
 +
;Casting Time
 +
:{{Ticks|{{{casting time|}}}}}
 +
}}
 +
 
 +
{{#if: {{{ability range|}}} | <!--- Unsure whether to fold this inot normal range - is currently used by weapons, weapon likes and weapon like utilityies -->
 +
  {{#if: {{#var:setProperty}} | {{#set:Ability Range = {{{ability range|}}} }} }}
 +
;Range
 +
:{{{ability range|}}} tiles
 +
}}
 +
 
 +
{{#if: {{{effect radius|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Effect Radius = {{{effect radius|}}} }} }}
 +
;Effect Radius
 +
:{{{effect radius|}}} tiles
 +
}}
 +
 
 +
{{#if: {{{duration|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Duration = {{{duration|}}} }} {{#set:Duration Multiplier = {{{duration multiplier|}}} }} }}
 +
;Duration
 +
:{{ticks|{{{duration|}}}}}{{#if: {{{duration multiplier|}}}|<br><small>(Modified by {{{duration multiplier|}}})</small>}}
 +
}}
 +
 
 +
{{#if: {{{goodwill impact|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Goodwill Impact = {{{goodwill impact|}}} }} }}
 +
;Goodwill Impact
 +
:{{{goodwill impact|}}}
 +
}}
 +
 
 +
{{#if: {{{caster must be capable of violence|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Caster Must Be Capable Of Violence = {{{caster must be capable of violence|}}} }} }}
 +
;Caster Must Be Capable of Violence
 +
:{{ucfirst:{{{caster must be capable of violence|}}}}}
 +
}}
 +
 
 +
}}
 +
 
 +
<!-- 14.5 Containment -->
 +
{{#if: {{{containment strength|}}} {{{containment offset|}}} {{{containment factor|}}} {{{minimum containment strength|}}} {{{anomaly knowledge|}}} {{{anomaly knowledge offset|}}} {{{knowledge category|}}} {{{study interval|}}} {{{gets cold containment bonus|}}} {{{min monolith level|}}} {{{min monolith level for study|}}} {{{requires holding platform|}}} {{{requires imprisonment|}}} {{{base escape interval MTB days|}}} |
 +
</dl>{{clear}}
 +
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Containment</p>
 +
<dl>
 +
 
 +
{{#if: {{{containment strength|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Containment Strength = {{{containment strength|}}} }} }}
 +
;Containment Strength
 +
:{{{containment strength|}}}
 +
}}
 +
 
 +
{{#if: {{{containment offset|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Containment Strength = {{{containment offset|}}} }} }}
 +
;Containment Offset
 +
:{{#ifexpr: {{{containment offset|}}} > 0 | {{+|{{{containment offset|}}} }} | {{--|{{{containment offset|}}} }} }}
 +
}}
 +
 
 +
{{#if: {{{containment factor|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Containment Factor = {{{containment factor|}}} }} }}
 +
;Containment Factor
 +
:{{#ifexpr: {{{containment factor|}}} = 1 | ×{{%|{{{containment factor|}}} }} | {{#ifexpr: {{{containment factor|}}} > 1 | {{Good|×{{%|{{{containment factor|}}} }} }} | {{Bad|×{{%|{{{containment factor|}}} }} }} }} }}
 +
}}
 +
 
 +
{{#if: {{{minimum containment strength|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Minimum Containment Strength = {{{minimum containment strength|}}} }} }}
 +
;Min Containment Strength
 +
:{{{minimum containment strength|}}}
 +
}}
 +
 
 +
{{#if: {{{anomaly knowledge|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Anomaly Knowledge = {{{anomaly knowledge|}}} }} }}
 +
}}
 +
 
 +
{{#if: {{{anomaly knowledge offset|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Anomaly Knowledge = {{{anomaly knowledge|}}} + {{{anomaly knowledge offset|}}} }} }}
 +
}}
 +
 
 +
{{#if: {{{knowledge category|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Knowledge Category = {{{knowledge category|}}} }} }}
 +
;Knowledge Gain
 +
:{{{anomaly knowledge|}}} {{{knowledge category|}}}
 +
}}
 +
 
 +
{{#if: {{{study interval|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Studiable Frequency Ticks = {{{study interval|}}} }} }}
 +
;Study Interval
 +
:{{Ticks/gametime/days|{{{study interval|}}} }}
 +
}}
 +
 
 +
{{#if: {{{bioferrite density|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Bioferrite Density = {{{bioferrite density|}}} }} }}
 +
;Bioferrite Generation
 +
:{{Icon Small|Bioferrite}} {{#expr: 1 * {{{bodysize|}}} * {{{bioferrite density|}}} }}/day
 +
}}
 +
 
 +
{{#if: {{{gets cold containment bonus|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Gets Cold Containment Bonus = {{{gets cold containment bonus|}}} }} }}
 +
;<abbr title="{{Q|Cold Containment Bonus|Description}}">Gets Cold Bonus</abbr>
 +
:{{{gets cold containment bonus|}}}
 +
}}
 +
 
 +
{{#if: {{{min monolith level|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Minimum Monolith Level = {{{min monolith level|}}} }} }}
 +
;Min Monolith Level
 +
:{{{min monolith level|}}}
 +
}}
 +
 
 +
{{#if: {{{min monolith level for study|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Minimum Monolith Level For Study = {{{min monolith level for study|}}} }} }}
 +
;Min Monolith Level For Study
 +
:{{{min monolith level for study|}}}
 +
}}
 +
 
 +
{{#if: {{{requires holding platform|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Requires Holding Platform = {{{requires holding platform|}}} }} }}
 +
;Held on Spot or Platform
 +
:{{{requires holding platform|}}}
 +
}}
 +
 
 +
{{#if: {{{requires imprisonment|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Requires Imprisonment = {{{requires imprisonment|}}} }} }}
 +
;Imprisoned
 +
:{{{requires imprisonment|}}}
 +
}}
 +
 
 +
{{#if: {{{base escape interval MTB days|}}} |
 +
  {{#if: {{#var:setProperty}} | {{#set:Base Escape Interval Mtb Days = {{{base escape interval MTB days|}}} }} }}
 +
;Escape Interval
 +
:{{MTB}} {{{base escape interval MTB days|}}} days
 +
}}
 +
}}
 +
 
 +
<!-- 15. TECHNICAL -->
 +
{{#if: {{#var:setProperty}} | {{#if: {{{page verified for version|}}} | {{Verified|{{{page verified for version|}}} }} | {{Verified}} }} }}
 +
 
 +
{{#if: {{{defName|}}} {{{has quality|}}} {{{color|}}} {{{thingCategories|}}} {{{file|}}} {{{weaponTags|}}} {{{thingSetMakerTags|}}} {{{defaultOutfitTags|}}} {{{factionPrerequisiteTags|}}} {{{harvestTag|}}} {{{recipePrerequisiteTags|}}} {{{ResearchProjectTagDef|}}} {{{sowTag|}}} {{{sowTags|}}} {{{tag|}}} {{{tags|}}} {{{techHediffsTags|}}} {{{thingSetMakerTagsToAllow|}}} {{{thingSetMakerTagsToDisallow|}}} {{{tradeTag|}}} {{{tradeTags|}}} {{{tradeTagsBuy|}}} {{{tradeTagsSell|}}} {{{tradeTagsToAllow|}}} {{{tutorHighlightTag|}}} {{{apparelTags|}}} {{{buildingTags|}}} {{{stuff adjective|}}} {{{small volume|}}} {{{preferability|}}} {{{food preference|}}} {{{drug category|}}} {{{is pleasure drug|}}} {{{work efficiency factor|}}} {{{work efficiency offset|}}} {{{max simultaneous facilities|}}} {{{unpowered work speed factor|}}} {{{bulk product amount|}}} |
 +
</dl>{{clear}}
 +
<div class="subheading mw-customtoggle-myDivision" style='height: 1em !important; padding: 0.25em 0em 0.5em !important; margin: 0.5em 0 0.5em !important; width:300px'> Technical
 +
<div class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision"> <span style='color: #504f54; text-align: left; text-shadow: 0px 0px; font-family: Arial; font-size: 0.8em; height: 0em !important; padding: 0em 0em 0em !important; margin: 0em 0 0em !important;'>
 +
{{#if: {{{defName|}}} |
 +
; defName
 +
: {{{defName|}}}
 +
}}<!--
 +
-->{{#if: {{{has quality|}}} | {{#if: {{#var:setProperty}} | {{#set:Has Quality = {{ucfirst:{{{has quality|}}} }} }} }}
 +
;Has Quality
 +
:{{ucfirst:{{{has quality|}}} }}
 +
}}<!--
 +
-->{{#if: {{{color|}}} | {{#if: {{#var:setProperty}} | {{#set:color = {{{color|}}} }} }}
 +
;Color
 +
:{{{color|}}}
 
}}<!--
 
}}<!--
 
-->{{#if: {{{file|}}} |
 
-->{{#if: {{{file|}}} |
Line 1,684: Line 2,043:
 
:{{{sowTag|}}}
 
:{{{sowTag|}}}
 
}}<!--
 
}}<!--
-->{{#if: {{{sowTags|}}} | {{#if: {{#var:setProperty}} | {{#set:sowTags = {{{sowTags|}}} }} }}
+
-->{{#if: {{{sowTags|}}} | {{#if: {{#var:setProperty}} | {{#set:
 +
sowTags = {{ucfirst:{{#explode:{{{sowTags|}}}|,|0}} }}
 +
|sowTags = {{ucfirst:{{#explode:{{{sowTags|}}}|,|1}} }}
 +
|sowTags = {{ucfirst:{{#explode:{{{sowTags|}}}|,|2}} }}
 +
|sowTags = {{ucfirst:{{#explode:{{{sowTags|}}}|,|3}} }}
 +
}} }}
 
;sowTags
 
;sowTags
 
:{{{sowTags|}}}
 
:{{{sowTags|}}}
Line 1,732: Line 2,096:
 
}}<!--
 
}}<!--
 
-->{{#if: {{{tradeTags|}}} |
 
-->{{#if: {{{tradeTags|}}} |
   {{#if: {{#var:setProperty}} | {{#set:tradeTags = {{{tradeTags|}}} }} }}
+
   {{#if: {{#var:setProperty}} |  
 +
    {{#set:TradeTags = {{#explode:{{{tradeTags|}}}|,|0}}
 +
        | TradeTags = {{#explode:{{{tradeTags|}}}|,|1}}
 +
        | TradeTags = {{#explode:{{{tradeTags|}}}|,|2}} }} }}
 
;tradeTags
 
;tradeTags
 
:{{{tradeTags|}}}
 
:{{{tradeTags|}}}
Line 1,783: Line 2,150:
 
}}<!--
 
}}<!--
 
-->{{#if: {{{preferability|}}} |
 
-->{{#if: {{{preferability|}}} |
   {{#if: {{#var:setProperty}} | {{#set:Preferability = {{{preferability|}}} }} }}
+
   {{#if: {{#var:setProperty}} | {{#set:Preferability = {{ucfirst:{{{preferability|}}} }} }} }}
 
; Preferability
 
; Preferability
: {{{preferability|}}}
+
: {{ucfirst:{{{preferability|}}} }}
 
}}<!--
 
}}<!--
 
-->{{#if: {{{food preference|}}} |
 
-->{{#if: {{{food preference|}}} |

Revision as of 09:13, 26 January 2025

Documentation icon Template documentation[view] [edit] [history] [purge]

Intro

Template:Infobox main Is the core of what powers the SemanticMediaWiki database of rimworld objects. Since the template is so complex, it's worth taking a step back and summarizing what this template does:

  • Takes in facts: On each page which describes an in-game object, we call {{infobox main | ...}}

|, where ... | is a very long list of parameters describing the object in question, including its name, type, the cost to make it, and a bunch of other things

  • Rendering an infobox: This template takes those parameters and presents them in a nice looking infobox on the right side of the page. If you add a param |marketvalue = 200

|, this template will add a line to the infobox showing the market value annotated with a silver icon. Cool!

  • Setting SMW properties: The real magic comes from this templates ability to also set SMW properties. If the |marketvalue = 200

| param is present, this template will also set a SMW property 'Market Value Base' equal to 200 for whatever page the infobox was called on.

As an example, say there was an Page called "Foo" for an in-game object with the same name. In-game, a foo has a market value of 200. When you invoke {{infobox main | ... | marketvalue = 200 | ... |, this template will set the 'Market Value Base' property of the 'Foo' page to 200.

These properties can then be retrieved using a snippet like {{#show:Foo|?Market Value Base}} |. You can browse the properties for a given page by clicking the "Browse properties" link on the left side of the page. For an example, see Special:Browse/:Duster

Positional parameters

This template also takes one (and only one -- all others are ignored) positional parameter that specifies the type of infobox styling to use (primarily: to set the color of the infobox based on object type)

Usage

  • Everything is optional for the template to function; however, relevant sections should be filled in for the sake of completeness. The information displayed is dependent on which category is used, and will not be displayed unless a value is provided.
  • You can add a "name" and "image". Fill these values if the PAGENAME macro is not adequate (if the page name has a disambig qualifier for example)

Parameter List

Parameter Table

Parameter Dependencies Type/Unit Property / Stat Description xml-tag / hierarchy
0. Testing
set property optional boolean Boolean value for whether the template should set properties. This defaults to true on main namespace pages, and false on all other namespace pages. Only use it when absolutely neccesary.
1. Head
<1> optional One of:
  • furniture, medicine = c_01
  • structure = c_02
  • resource = c_03
  • weapon = c_06
  • animal, food = c_08
  • fabric = c_09
  • security = c_10
  • area, exotic = c_11
  • metallic, stony = c_12
  • plant = c_14
  • leathery = c_22
  • drug = c_24
  • production = c_25
  • psycast = c_09
Sets the color of the infobox.
name optional pagename Property:Name Title of the infobox. Defaults to current page name if not specified. <label>
image optional Picture name.png Property:Image Defaults to name.png. <graphicData>
imagesize optional, image px See https://www.mediawiki.org/wiki/Help:Images#Rendering_a_single_image.
audio optional Audio name.wav Property:Audio So far only used for musical instruments. <soundPlayInstrument>
description optional text Property:Description In-game description of the item. <description>
2. Base Stats
type mandatory pagename Property:Type Sets main category.
type2 optional pagename Property:Type2 Sets subcategory.
stuff category optional One of:
  • Leathery
  • Fabric
  • Woody
  • Metallic
  • Stony
  • Bioferrite
Property:Stuff Category Used by materials. <stuffProps>
<categories>
color optional -
  1. <stuffProps>
    <color>
  2. <color>
tech level optional One of:
  • Neolithic
  • Medieval
  • Industrial
  • Spacer
  • Ultra
  • Archotech
Property:Tech Level <techLevel>
class optional One of:
  • Neolithic Weapons
  • Medieval Weapons
  • Industrial Weapons
  • Spacer Weapons
  • Ultra Weapons
  • Mechanoid Weapons
Property:Class Used by weapons. <weaponClasses>
stack limit optional integer Property:Stack Limit Maximum stach size. <stackLimit>
style optional, styledominance One of:
  • Hindu
  • Christian
  • Islamic
  • Buddhist
  • Morbid
  • Totemic
  • Spikecore
  • Rustic
  • Animalist
  • Techist
  • Horaxian
Property:Style <StyleCategoryDef>
days to rot optional days Property:Days To Start Rot Base Used for items that spoil when not frozen. <daysToRotStart>
min safe temperature optional °C Property:Min Safe Temperature Used for fertilzed eggs. <minSafeTemperature>
max safe temperature optional °C Property:Max Safe Temperature Used for fertilzed eggs. <maxSafeTemperature>
spoiling rate per degree per tick optional number (displayed as %) Property:Spoiling Rate Used for fertilzed eggs. <progressPerDegreePerTick>
rotatable optional Boolean Property:Rotatable Whether this item spoils when not frozen. <rotatable>
path cost optional Integer Property:Path Cost <pathCost>
burnable optional Boolean Property:Burnable Whether this item can be burned as a bill <burnableByRecipe>
smeltable optional Boolean Property:Smeltable Whether this item can be smelted as a bill <smeltable>
possession count optional Integer Property:Possession Count The amount of this item a pawn carries when it is used as a possession <possessionCount>
combatPower optional Number Property:Combat Power Combat power of a pawn, used for raid points and calculating the size / composition of threats.
  1. <combatPower>
  2. <building>
    <combatPower>
Refuelable
fuel filter optional Text Property:Fuel Filter The applicable item(s) that can refuel a building <comps>
<Class="CompProperties_Refuelable">
<fuelFilter>
fuel capacity optional Number Property:Fuel Capacity The maximum quantity of applicable fuel items a building can be fueled with <comps>
<Class="CompProperties_Refuelable">
<fuelCapacity>
fuel consumption rate optional Number Property:Fuel Consumption Rate Units of fuel consumed per day <comps>
<Class="CompProperties_Refuelable">
<fuelConsumptionRate>
Mineable
mineable thing optional Page Property:Mineable Thing The item that is dropped upon an ore being mined <mineableThing>
mineable yield optional Number Property:Mineable Yield The amount of an item that is dropped upon an ore being mined <mineableYield>
mineable scatter commonality optional Number Property:Mineable Scatter Commonality The frequency of an ore spawning in an applicable map <mineableScatterCommonality>
mineable scatter lump size range optional Text Property:Mineable Scatter Lump Size Range The range of size in cells of an ore vein <mineableScatterLumpSizeRange>
7. Ingestion
taste optional One of:
  • Raw
  • Bad
  • Tasty
  • Terrible
  • Awful
  • Simple
  • Fine
  • Lavish

From FoodPreferability:

  • Undefined
  • NeverForNutrition
  • DesperateOnly
  • DesperateOnlyForHumanlikes
  • RawBad
  • RawTasty
  • MealTerrible
  • MealAwful
  • MealSimple
  • MealFine
  • MealLavish
Property:Taste <ingestible>
<preferability>
ingested direct thought optional Property:Ingested Direct Thought <ingestible>
<tasteThought>
joy offset optional Number Property:Joy Offset <ingestible>
<joy>
joy kind optional One of:
  • Meditative
  • Social
  • Gaming_Dexterity
  • Gaming_Cerebral
  • Television
  • Telescope
  • Chemical
  • Gluttonous
  • Reading
  • HighCulture Content added by the Royalty DLC
Property:Joy Kind <ingestible>
<joyKind>
addictiveness optional Property:Addictiveness <comps>
<Class="CompProperties_Drug">
<addictiveness>
max num to ingest at once optional Property:Max Num To Ingest At Once <ingestible>
<maxNumToIngestAtOnce>
ingestion time optional Property:Ingestion Time <ingestible>
<baseIngestTicks>
10. Plant Stats
grow days optional Number (Days) Property:Grow Days <plant>
<growDays>
lifespanDaysPerGrowDays optional Number (Days) Property:Lifespan Days Per Grow Days <plant>
<lifespanDaysPerGrowDays>
sow work optional Number (Ticks) Property:Sow Work <plant>
<sowWork>
harvest work optional Number (Ticks) Property:Harvest Work <plant>
<harvestWork>
product optional Page Property:Harvest Product <plant>
<harvestedThingDef>
yield optional Number Property:Harvest Yield <plant>
<harvestYield>
min sowing skill optional Number (0~20) Property:Minimum Required Growing Skill <plant>
<sowMinSkill>
min fertility optional Number Property:Fertility Min <plant>
<fertilityMin>
fertility sensitivity optional Number Property:Fertility Sensitivity <plant>
<fertilitySensitivity>
min grow light optional Number Property:Min Grow Light <plant>
<growMinGlow>
damage type optional - <verbs>
<defaultProjectile>
<ThingDef>
<projectile>
<damageDef>
mode optional One of:


  • Melee
  • Single-Shot
  • Burst
  • Single Thrown
  • Single-Use
  • Beam
Property:Mode
damage optional Number Property:Damage Base <verbs>
<defaultProjectile>
<ThingDef>
<projectile>
<damageAmountBase>
armorPenetration optional Number Property:Armor Penetration <verbs>
<defaultProjectile>
<ThingDef>
<projectile>
<armorPenetrationBase>
warmup optional Number Property:Aiming Time Base Warmup
  1. <verbs>
    <warmupTime>
  2. <building>
    <turretBurstWarmupTime>
cooldown optional Number Property:Ranged Cooldown Base
  1. <statBases>
    <RangedWeapon_Cooldown>
  2. <building><turretBurstCooldownTime>
range optional Number (Cells) Property:Range Range <verbs>
<range>
minrange optional Number (Cells) Property:Minimum Range <verbs>
<minRange>
accuracy optional Number Shooting Accuracy (Turrets) <statBases>
<ShootingAccuracyTurret>
accuracyTouch optional Number (0~1) The weapon's accuracy at a distance of 3 cells or less.
An actual shot's chance to hit will also be affected by other factors.
<statBases>
<AccuracyTouch>
accuracyShort optional Number (0~1) The weapon's accuracy at a distance of 12 cells.
An actual shot's chance to hit will also be affected by other factors.
<statBases>
<AccuracyShort>
accuracyMedium optional Number (0~1) The weapon's accuracy at a distance of 25 cells.
An actual shot's chance to hit will also be affected by other factors.
<statBases>
<AccuracyMedium>
accuracyLong optional Number (0~1) The weapon's accuracy at a distance of 40 cells or more.
An actual shot's chance to hit will also be affected by other factors.
<statBases>
<AccuracyLong>
velocity optional Number Property:Velocity <verbs>
<defaultProjectile>
<ThingDef>
<projectile>
<speed>
burst optional Number Property:Burst Count Burst shot count <verbs>
<burstShotCount>
burstTicks optional Number (Ticks) Property:Burst Ticks <verbs>
<ticksBetweenBurstShots>
missRadius optional Number Property:Miss Radius Miss radius
  1. <verbs>
    <forcedMissRadius>
  2. <verbs>
    <forcedMissRadiusClassicMortars>
blastRadius optional Number Property:Blast Radius <ThingDef>
<projectile>
<explosionRadius>
DPS optional Number Property:Maximum DPS Damage Per Second
stoppingPower optional Number Property:Stopping Power Stopping power

Hits from this weapon will stagger targets, slowing their movement for several seconds.

Targets with a body size larger than the stopping power will be unaffected.

<ThingDef>
<projectile>
<stoppingPower>
12. Melee Combat
  1. attack1label
  2. attack2label
  3. attack3label
  4. attack4label
  5. attack5label
  6. attack6label
  7. attack7label
optional Text
  1. Property:Attack 1 Label
  2. Property:Attack 2 Label
  3. Property:Attack 3 Label
  4. Property:Attack 4 Label
  5. Property:Attack 5 Label
  6. Property:Attack 6 Label
  7. Property:Attack 7 Label
Label for this attack <tools>
<label>
  1. attack1labelNoLocation
  2. attack2labelNoLocation
  3. attack3labelNoLocation
  4. attack4labelNoLocation
  5. attack5labelNoLocation
  6. attack6labelNoLocation
  7. attack7labelNoLocation
optional Text
  1. Property:Attack 1 Label No Location
  2. Property:Attack 2 Label No Location
  3. Property:Attack 3 Label No Location
  4. Property:Attack 4 Label No Location
  5. Property:Attack 5 Label No Location
  6. Property:Attack 6 Label No Location
  7. Property:Attack 7 Label No Location
Non-specific label for this attack <tools>
<labelNoLocation>
  1. attack1dmg
    • meleeattack1dmg
  2. attack2dmg
  3. attack3dmg
  4. attack4dmg
  5. attack5dmg
  6. attack6dmg
  7. attack7dmg
optional Number
  1. Property:Attack 1 Damage
  2. Property:Attack 2 Damage
  3. Property:Attack 3 Damage
  4. Property:Attack 4 Damage
  5. Property:Attack 5 Damage
  6. Property:Attack 6 Damage
  7. Property:Attack 7 Damage
Damage that this attack deals <tools>
<power>
  1. attack1ap
  2. attack2ap
  3. attack3ap
  4. attack4ap
  5. attack5ap
  6. attack6ap
  7. attack7ap
optional Number (0~2)
  1. Property:Attack 1 AP
  2. Property:Attack 2 AP
  3. Property:Attack 3 AP
  4. Property:Attack 4 AP
  5. Property:Attack 5 AP
  6. Property:Attack 6 AP
  7. Property:Attack 7 AP
Armor penetration

Armor penetration is the amount of armor this weapon will ignore each time it hits the target.

If armor penetration is greater than the target's armor, it is as though the target is unarmored. Otherwise, the armor penetration is subtracted from the target's armor.

<tools>
<armorPenetration>
  1. attack1type
    • meleeattack1type
  2. attack2type
  3. attack3type
  4. attack4type
  5. attack5type
  6. attack6type
  7. attack7type
optional Text
  1. Property:Attack 1 Type
  2. Property:Attack 2 Type
  3. Property:Attack 3 Type
  4. Property:Attack 4 Type
  5. Property:Attack 5 Type
  6. Property:Attack 6 Type
  7. Property:Attack 7 Type
Damage Type of this attack <tools>
<capacities>
  1. attack1part
    • meleeattack1part
  2. attack2part
  3. attack3part
  4. attack4part
  5. attack5part
  6. attack6part
  7. attack7part
optional Text
  1. Property:Attack 1 Part
  2. Property:Attack 2 Part
  3. Property:Attack 3 Part
  4. Property:Attack 4 Part
  5. Property:Attack 5 Part
  6. Property:Attack 6 Part
  7. Property:Attack 7 Part
Body part group associated with this attack <tools>
<linkedBodyPartsGroup>
  1. attack1cool
    • meleeattack1cool
  2. attack2cool
  3. attack3cool
  4. attack4cool
  5. attack5cool
  6. attack6cool
  7. attack7cool
optional Number (Seconds)
  1. Property:Attack 1 Cooldown
  2. Property:Attack 2 Cooldown
  3. Property:Attack 3 Cooldown
  4. Property:Attack 4 Cooldown
  5. Property:Attack 5 Cooldown
  6. Property:Attack 6 Cooldown
  7. Property:Attack 7 Cooldown
Cooldown of this attack in seconds <tools>
<cooldownTime>
  1. attack1chancefactor
  2. attack2chancefactor
  3. attack3chancefactor
  4. attack4chancefactor
  5. attack5chancefactor
  6. attack6chancefactor
  7. attack7chancefactor
optional Number
  1. Property:Attack 1 Chance Factor
  2. Property:Attack 2 Chance Factor
  3. Property:Attack 3 Chance Factor
  4. Property:Attack 4 Chance Factor
  5. Property:Attack 5 Chance Factor
  6. Property:Attack 6 Chance Factor
  7. Property:Attack 7 Chance Factor
Multiplier on the chance that this attack will be used <tools>
<chanceFactor>
  1. attack1stun
  2. attack2stun
  3. attack3stun
  4. attack4stun
  5. attack5stun
  6. attack6stun
  7. attack7stun
optional Number
  1. Property:Attack 1 Stun
  2. Property:Attack 2 Stun
  3. Property:Attack 3 Stun
  4. Property:Attack 4 Stun
  5. Property:Attack 5 Stun
  6. Property:Attack 6 Stun
  7. Property:Attack 7 Stun
Amount of stun damage received from the first attack <tools>
<surpriseAttack>
<extraMeleeDamages>
<def></def>
<amount>
  1. attack1ensureLinkedBodyPartsGroupAlwaysUsable
  2. attack2ensureLinkedBodyPartsGroupAlwaysUsable
  3. attack3ensureLinkedBodyPartsGroupAlwaysUsable
  4. attack4ensureLinkedBodyPartsGroupAlwaysUsable
  5. attack5ensureLinkedBodyPartsGroupAlwaysUsable
  6. attack6ensureLinkedBodyPartsGroupAlwaysUsable
  7. attack7ensureLinkedBodyPartsGroupAlwaysUsable
optional Boolean
  1. Property:Attack 1 Ensure Linked Body Parts Group Always Usable
  2. Property:Attack 2 Ensure Linked Body Parts Group Always Usable
  3. Property:Attack 3 Ensure Linked Body Parts Group Always Usable
  4. Property:Attack 4 Ensure Linked Body Parts Group Always Usable
  5. Property:Attack 5 Ensure Linked Body Parts Group Always Usable
  6. Property:Attack 6 Ensure Linked Body Parts Group Always Usable
  7. Property:Attack 7 Ensure Linked Body Parts Group Always Usable
? <tools>
<ensureLinkedBodyPartsGroupAlwaysUsable>
  1. attack1alwaysTreatAsWeapon
  2. attack2alwaysTreatAsWeapon
  3. attack3alwaysTreatAsWeapon
  4. attack4alwaysTreatAsWeapon
  5. attack5alwaysTreatAsWeapon
  6. attack6alwaysTreatAsWeapon
  7. attack7alwaysTreatAsWeapon
optional Boolean
  1. Property:Attack 1 Always Treat As Weapon
  2. Property:Attack 2 Always Treat As Weapon
  3. Property:Attack 3 Always Treat As Weapon
  4. Property:Attack 4 Always Treat As Weapon
  5. Property:Attack 5 Always Treat As Weapon
  6. Property:Attack 6 Always Treat As Weapon
  7. Property:Attack 7 Always Treat As Weapon
? <tools>
<alwaysTreatAsWeapon>
MeleeWeaponAverageDPS optional Number -
MeleeWeaponAverageAP optional Number -
body part optional -
13. Creation
research optional Property:Required Research <researchPrerequisites>
  1. production facility 1
  2. production facility 2
  3. production facility 3
  4. production facility 4
optional Page Where this item can be crafted at <recipeUsers>
resources to make optional - <costList>
  1. resource 1
  2. resource 2
  3. resource 3
  4. resource 4
  5. resource 5
  6. resource 6
optional Page
  1. Property:Resource 1
  2. Property:Resource 2
  3. Property:Resource 3
  4. Property:Resource 4
  5. Property:Resource 5
  6. Property:Resource 6
  1. resource 1 amount
  2. resource 2 amount
  3. resource 3 amount
  4. resource 4 amount
  5. resource 5 amount
  6. resource 6 amount
optional Number
  1. Property:Resource 1 Amount
  2. Property:Resource 2 Amount
  3. Property:Resource 3 Amount
  4. Property:Resource 4 Amount
  5. Property:Resource 5 Amount
  6. Property:Resource 6 Amount
  1. skill 1
  2. skill 2
optional
  1. Property:Skill 1
  2. Property:Skill 2
  1. <skillRequirements>
  2. <constructionSkillPrerequisite>
  1. skill 1 level
  2. skill 2 level
optional Number (0-20)
  1. Property:Skill 1 Level
  2. Property:Skill 2 Level
<skillRequirements>
constructable optional -
work speed stat optional Property:Work Speed Stat
gestation cycles optional Property:Gestation Cycles
stuff tags optional Property:Stuff Tags
product amount optional Property:Product Amount
deconstruct yield optional -
destroyyield optional -
leavesresourceswhendestroyed optional - <leaveResourcesWhenKilled>
bonusdestroyleavings optional -
Important
marketvalue optional silver The amount of silver the item is worth. Defaults to Template:Market Value Calculator. <statBases>
<MarketValue>
honor value optional Number The amount of honor your trader will earn for giving this to a tribute collector. <RoyalFavorValue>
Non Pawn Important
nutrition optional Number How nutritious this food is. <statBases>
<Nutrition>
medical potency base optional number (displayed as %) How effective this is when used to tend wounds and diseases, or do surgery.
Higher medical potency improves the quality of tending, and acts as a multiplier on the chance of success during surgery.
Medical potency is just one factor in medical outcomes, among many others, including doctor ability, equipment, cleanliness, and luck.
<statBases>
<MedicalPotency>
medical quality max optional number (displayed as %) The maximum quality of medical tending that can be achieved while using this.
Better tend quality allows skilled doctors to treat wounds better, as well as more reliably.
<statBases>
<MedicalQualityMax>
hp optional integer Property:Max Hit Points Base The amount of damage an object can take. <statBases>
<MaxHitPoints>
Basics
mass base optional kg Mass in kilograms - DO NOT USE FOR ANIMALS.

The physical mass of an object.

<statBases>
<Mass>
flammability optional number (displayed as %) How easily an object catches fire and how quickly a fire will grow as it burns. <statBases>
<Flammability>
psychic sensitivity factor optional Number A factor applied to the user's psychic sensitivity. <statFactorsQuality>
<stat>PsychicSensitivityFactor</stat>
psychic sensitivity offset optional Number An offset applied to the user's psychic sensitivity. <equippedStatOffsets>
<PsychicSensitivityOffset>
neural heat limit offset optional Number An offset applied to the user's neural heat limit. <statOffsetsQuality>
<stat>PsychicEntropyMaxOffset</stat>
neural heat recovery rate offset optional Number An offset applied to the user's neural heat recovery rate. <statOffsetsQuality>
<stat>PsychicEntropyRecoveryRateOffset</stat>
slave suppression offset optional Number An offset applied to the wearer's slave suppression. Higher values suppress slaves longer, while lower values make slaves rebel more often. <equippedStatOffsets>
<SlaveSuppressionOffset>
terror source optional Number The intensity of terror this object induces when viewed. <statBases>
<TerrorSource>
max install count optional Number How many times this can be installed. Each additional installation increases or upgrades the base effect. <statBases>
<MaxInstallCount>
Pawn
5. Pawn Stats
movespeed optional Number Property:Move Speed Base
healthscale optional Number Property:Health Scale <race>
<baseHealthScale>
bodysize optional Number Property:Body Size <race>
<baseBodySize>
massyoung optional Number Property:Mass - Young
massjuvenile optional Number Property:Mass - Juvenile
massadult optional Number Property:Mass - Adult
ridingspeed optional Number Property:Riding Speed
filth rate optional Number Property:Animal Filth Rate <statBases>
<FilthRate>
hungerrate optional Number Property:Base Hunger Rate <race>
<baseHungerRate>
diet optional One of:


Food Types:

  • None
    • none
  • VegetableOrFruit
  • Meat
  • Fluid
  • Corpse
  • Seed
  • AnimalProduct
    • animal products
  • Plant
  • Tree
  • Meal
  • Processed
  • Liquor
  • Kibble
  • Fungus
  • VegetarianAnimal
  • VegetarianRoughAnimal
  • herbivorous
  • CarnivoreAnimal
    • carnivorous
  • CarnivoreAnimalStrict
    • raw meat and corpses
  • OmnivoreAnimal
    • omnivorous
  • OmnivoreRoughAnimal
    • omnivorous grazer
  • DendrovoreAnimal
    • dendrovorous
  • OvivoreAnimal
    • ovivorous
  • OmnivoreHuman
    • omnivorous (human)

Diet Categories:

  • NeverEats
  • Herbivorous
  • Dendrovorous
  • Ovivorous
  • Omnivorous
  • Carnivorous
Property:Diet <race>
<foodType>
lifespan optional Number (Years) Property:Life Expectancy Lifespan (Years) <race>
<lifeExpectancy>
manhunter optional Number Property:Turn Manhunter Chance When Attacked <race>
<manhunterOnDamageChance>
manhuntertame optional Number Property:Turn Manhunter Chance When Taming <race>
<manhunterOnTameFailChance>
trainable optional Text Property:Trainable Intelligence <race>
<trainability>
wildness optional Number Property:Wildness <race>
<wildness>
min handling skill optional Number (0~20) Property:Minimum Handling Skill
petness optional Number Property:Petness <race>
<petness>
predator optional Boolean - <race>
<predator>
roamMtb optional Number Property:Roam Mtb Days <race>
<roamMtbDays>
nuzzleMtb optional Number Property:Nuzzle Mtb Hours <race>
<nuzzleMtbHours>
mateMtb optional Number Property:Mate Mtb Hours <race>
<mateMtbHours>
maturityage optional Number Property:Maturity Age <lifeStageAges>
<def></def>
<minAge>
juvenileage optional Number Property:Juvenile Age <lifeStageAges>
<def></def>
<minAge>
psychic sensitivity optional Number More sensitive people suffer more from negative psychic effects, and benefit more from positive ones. Higher psychic sensitivity also increases neural heat limit. <PsychicSensitivity>
toxic resistance optional Number (0~1) How well this creature resists toxic buildup. <ToxicResistance>
toxic environment resistance optional Number (0~1) How resistant this creature is to the effects of environmental toxins. This protects against toxic fallout and rot stink exposure, but not against direct attacks with venom or injected poison. <ToxicEnvironmentResistance>
min comfortable temperature optional Number Below this temperature, characters will be unhappy.
Significantly below this temperature, they will develop hypothermia and frostbite and eventually die.
<statBases>
<ComfyTemperatureMin>
max comfortable temperature optional Number Above this temperature, characters will be unhappy.
Significantly above this temperature, they will develop heatstroke and eventually die.
<statBases>
<ComfyTemperatureMax>
livesin_temperateforest optional Number Property:Lives In Temperate Forest The density of this animal in a Temperate forest biome <wildAnimals>
livesin_temperateswamp optional Number Property:Lives In Temperate Swamp The density of this animal in a Temperate swamp biome <wildAnimals>
livesin_tropicalrainforest optional Number Property:Lives In Tropical Rainforest The density of this animal in a Tropical rainforest biome <wildAnimals>
livesin_tropicalswamp optional Number Property:Lives In Tropical Swamp The density of this animal in a Tropical swamp biome <wildAnimals>
livesin_aridshrubland optional Number Property:Lives In Arid Shrubland The density of this animal in an Arid shrubland biome <wildAnimals>
livesin_desert optional Number Property:Lives In Desert The density of this animal in a Desert biome <wildAnimals>
livesin_extremedesert optional Number Property:Lives In Extreme Desert The density of this animal in an Extreme desert biome <wildAnimals>
livesin_borealforest optional Number Property:Lives In Boreal Forest The density of this animal in a Boreal forest biome <wildAnimals>
livesin_coldbog optional Number Property:Lives In Cold Bog The density of this animal in a Cold bog biome <wildAnimals>
livesin_tundra optional Number Property:Lives In Tundra The density of this animal in a Tundra biome <wildAnimals>
livesin_icesheet optional Number Property:Lives In Ice Sheet The density of this animal in an Ice sheet biome <wildAnimals>
livesin_seaice optional Number Property:Lives In Sea Ice The density of this animal in a Sea ice biome <wildAnimals>
Non Pawn
deterioration optional number The rate at which this item deteriorates when left outside, in average hit points per day.
Deterioration rate is also affected by things like weather, roofs, toxic fallout, or being left in shallow water.
<statBases>
<DeteriorationRate>
beauty optional integer How enjoyable an object is to look at.
Beautiful objects fulfill characters' need for beauty.
<statBases>
<Beauty>
beauty outdoors optional integer How enjoyable something is to look at if it's outside.
Beautiful objects fulfill peoples' need for beauty.
<statBases>
<BeautyOutdoors>
cleanliness optional Number How much an object contributes to an area's cleanliness score. <statBases>
<Cleanliness>
comfort optional Number How comfortable an object is to sit or lay on.
Using comfortable objects fulfills a character's need for comfort.
<statBases>
<Comfort>
work to make optional Number, Ticks

work to make


The base amount of work it takes to make an item, once all materials are gathered.


work to build


The base amount of work it takes to build a structure, once all materials are gathered.
The work required to deconstruct the structure is also based on this.

  1. <statBases>
    <WorkToMake>
    (Items)
  2. <statBases>
    <WorkToBuild>
    (Buildings)
food poison chance optional Number (0~1) The chance this food will cause food poisoning. <statBases>
<FoodPoisonChanceFixedHuman>
styledominance optional integer How much this object contributes to overall style dominance in an area. <statBases>
<StyleDominance>
Animal Productivity
meatyield optional The amount of meat yielded when butchering this creature. This value is reduced if the creature is not slaughtered cleanly, or if it is wounded when killed. <statBases>
<MeatAmount>
basemeatamount optional - -
meatname optional Property:Meat Name
  1. <race>
    <meatLabel>
  2. <race>
    <specificMeatDef>
leathername optional Property:Leather Name <race>
<leatherDef>
leatheryield optional The amount of leather yielded when butchering this creature. This value is reduced if the creature is not slaughtered cleanly, or if it is wounded when killed. <statBases>
<LeatherAmount>
baseleatheramount optional - -
milk optional Number Property:Milk Amount <comps>
<Class="CompProperties_Milkable">
<milkAmount>
mlikname optional Text Property:Milk Name <comps>
<Class="CompProperties_Milkable">
<milkDef>
milktime optional Number (Days) <comps>
<Class="CompProperties_Milkable">
<milkIntervalDays>
wool optional Property:Wool Amount <comps>
<Class="CompProperties_Shearable">
<woolDef>
woolname optional Property:Wool Name <comps>
<Class="CompProperties_Shearable">
<woolAmount>
sheartime optional <comps>
<Class="CompProperties_Shearable">
<shearIntervalDays>
eggsmin optional Number Property:Eggs Per Clutch Minimum <comps>
<Class="CompProperties_EggLayer">
<eggCountRange>
eggsmax optional Number Property:Eggs Per Clutch Maximum <comps>
<Class="CompProperties_EggLayer">
<eggCountRange>
eggtime optional Number (Days) <comps>
<Class="CompProperties_EggLayer">
<eggLayIntervalDays>
eggs_avg optional Number Property:Eggs Per Clutch Average <comps>
<Class="CompProperties_EggLayer">
<eggCountRange>
egg_unfertilized optional Boolean Property:Can Lay Unfertilized Eggs <comps>
<Class="CompProperties_EggLayer">
<eggUnfertilizedDef>
gestation optional Number (Days) Property:Gestation Period Days <race>
<gestationPeriodDays>
offspring optional Number Property:Offspring Per Birth <race>
<litterSizeCurve>
avg offspring optional Number Property:Average Offspring Per Birth <race>
<litterSizeCurve>
Terrain
cleaning time factor optional Number A multiplier on how long it takes to clean filth from this surface. <statBases>
<CleaningTimeFactor>
filth multiplier optional Number How susceptible this surface is to filth. If this is less than 100%, some of the filth deposited here will disappear on contact. This only applies to organic filth. <statBases>
<FilthMultiplier>
natural terrain optional Boolean Property:Natural Terrain Whether this terrain is considered natural <natural>
filth acceptance mask optional One of:


  • Terrain
  • Natural
  • Unnatural
  • Pawn
  • Any
Property:Filth Acceptance Mask Types of filth able to be deposited onto this surface <filthAcceptanceMask>
generated filth optional One of:


  • Filth_Dirt
  • Filth_Sand
Property:Generated Filth Filth type generated by this surface <generatedFilth>
fertility optional Number Property:Fertility The fertility of this object <fertility>
Meditation
artificial for meditation purposes optional Boolean Property:Artificial For Meditation Purposes Whether this building affects structures sensitive to artificial buildings <building>
<artificialForMeditationPurposes>
Mechanoid
EMP resistance optional Number (0~1) This mechanoid has special shielding and shock-dissipation filaments that reduce the effect of EMP damage by this percentage. This reduces the duration of stuns caused by EMP. <statBases>
<EMPResistance>
bandwidth cost optional Number (Integer) How much bandwidth this mech consumes when under mechanitor control. <statBases>
<BandwidthCost>
wastepacks per recharge optional Number How many toxic wastepacks this mechanoid will generate at a mech recharger when going from 0 to 100% energy. Larger mechanoids will generally create more toxic wastepacks. <statBases>
<WastepacksPerRecharge>
control taking time optional Number (Seconds) How many seconds it will take for a mechanitor to take control of this mech. <statBases>
<ControlTakingTime>
repair energy cost optional Number The amount of energy that this mechanoid loses for every 100 damage repaired. <statBases>
<MechEnergyLossPerHP>
Apparel
insulationcold optional °C How much this apparel improves a wearer's minimum comfortable temperature.
Greater values allow surviving in colder temperatures.
<statBases>
<Insulation_Cold>
insulationheat optional °C How much this apparel improves a wearer's maximum comfortable temperature.
Greater values allow surviving in warmer temperatures.
<statBases>
<Insulation_Heat>
insulationcoldfactor optional Number - <statBases>
<StuffEffectMultiplierInsulation_Cold>
insulationheatfactor optional Number - <statBases>
<StuffEffectMultiplierInsulation_Heat>
armorsharp optional Number (0~200)% The protection given against sharp damage like bullets, knife stabs, explosions, and animal bites.

Upon taking damage, first this armor rating is reduced by the attack's armor penetration value.

The remaining armor rating is then compared against a random number from 0 to 100.

00- If the random number is under half the armor rating, the damage deflects harmlessly.
00- If the random number is over half the armor rating, but not higher than the armor rating, the damage is reduced by half and changed to blunt.
00- If the random number is greater than the armor rating, the armor has no effect.

For example, at 90% armor rating against an attack with 10% armor penetration, there is a 40% chance of deflecting the attack harmlessly, and a 40% chance of mitigating the damage.

Each layer of armor is applied separately, from the outside in.

<statBases>
<ArmorRating_Sharp>
armorblunt optional Number (0~200)% The protection given against blunt damage like fists, club impacts and rock falls.

Upon taking damage, first this armor rating is reduced by the attack's armor penetration value.

The remaining armor rating is then compared against a random number from 0 to 100.

00- If the random number is under half the armor rating, the damage deflects harmlessly.
00- If the random number is over half the armor rating, but not higher than the armor rating, the damage is reduced by half and changed to blunt.
00- If the random number is greater than the armor rating, the armor has no effect.

For example, at 90% armor rating against an attack with 10% armor penetration, there is a 40% chance of deflecting the attack harmlessly, and a 40% chance of mitigating the damage.

Each layer of armor is applied separately, from the outside in.

<statBases>
<ArmorRating_Blunt>
armorheat optional Number (0~200)% The protection given against temperature-related damage like burns.

Upon taking damage, first this armor rating is reduced by the attack's armor penetration value.

The remaining armor rating is then compared against a random number from 0 to 100.

00- If the random number is under half the armor rating, the damage deflects harmlessly.
00- If the random number is over half the armor rating, but not higher than the armor rating, the damage is reduced by half and changed to blunt.
00- If the random number is greater than the armor rating, the armor has no effect.

For example, at 90% armor rating against an attack with 10% armor penetration, there is a 40% chance of deflecting the attack harmlessly, and a 40% chance of mitigating the damage.

Each layer of armor is applied separately, from the outside in.

<statBases>
<ArmorRating_Heat>
armorsharpfactor optional Number - <statBases>
<StuffEffectMultiplierArmor>
armorbluntfactor optional Number - <statBases>
<StuffEffectMultiplierArmor>
armorheatfactor optional Number - <statBases>
<StuffEffectMultiplierArmor>
painshockthreshold optional Number Property:Pain Shock Threshold <equippedStatOffsets>
<PainShockThreshold>
lifestage optional Any of:


  • None
  • Newborn
  • Baby
  • Child
  • Adult
Property:Lifestage The life / developmental stages that can wear this apparel <apparel>
<developmentalStageFilter>
coverage optional Text Property:Coverage The body parts that this apparel covers <apparel>
<bodyPartGroups>
layer optional Any of:
Def
Name
Label Draw
Order
OnSkin skin (Skin) 0
Middle middle 100
Shell outer (Outer) 200
Belt utility (Utility) 300
Overhead headgear (Headgear) 400
EyeCover eyes (Eyes) 500

This wiki also uses "internal" for technical reasons but is not used in game.

Property:layer The layer(s) that this apparel occupies <apparel>
<layers>
Implant
Drug
Weapon
weapon classes optional One of:


Def Name Label
Melee melee
Ranged ranged
MeleePiercer melee piercer
MeleeBlunt melee blunt
LongShots long shots
ShortShots short shots
RangedHeavy ranged heavy
RangedLight ranged light
Neolithic neolithic
Ultratech ultratech
Property:Weapon Classes The weapon classes this belongs to <weaponClasses>
Weapon (Ranged)
Weapon (Melee)
Building
building tags optional One of:


  • Artillery
  • Artillery_BaseDestroyer
  • Artillery_MannedMortar
  • Bed
  • Production
  • MechClusterActivator Content added by the Royalty DLC
  • MechClusterCombatThreat Content added by the Royalty DLC
  • MechClusterMember Content added by the Royalty DLC
  • MechClusterMemberGood Content added by the Royalty DLC
  • MechClusterMemberLamp Content added by the Royalty DLC
  • MechClusterProblemCauser Content added by the Royalty DLC
  • RitualFocus Content added by the Ideology DLC
  • RitualSeat Content added by the Ideology DLC
  • Biotech Content added by the Biotech DLC
  • Anomaly Content added by the Anomaly DLC
Property:Building Tags Identifying tag for the general purpose of this building <buildingTags>
designation category optional One of:


  • Structure
  • Production
  • Furniture
  • Power
  • Security
  • Misc
  • Floors
  • Joy
  • Ship
  • Temperature
  • Ideology Content added by the Ideology DLC
  • Biotech Content added by the Biotech DLC
  • Anomaly Content added by the Anomaly DLC
Property:Designation Category What architect designation category this building belongs to <designationCategory>
building size category optional One of:


  • None
  • Small
  • Medium
  • Large
Property:Building Size Category The size category of this building <building>
<buildingSizeCategory>
paintable optional Boolean Property:Paintable Whether this building can be painted <building>
<paintable>
claimable optional Boolean Property:Claimable Whether this building can be claimed <building>
<claimable>
expand home area optional Boolean Property:Expand Home Area Whether this building will expand the home area, when expand home area with newly constructed buildings is toggled on <building>
<expandHomeArea>
repairable optional Boolean Property:Repairable Whether this building can be repaired <building>
<repairable>
is inert optional Boolean Property:Is Inert <building>
<isInert>
destroyable optional Boolean Property:Destroyable Whether this building can be destroyed
deconstructable optional Boolean Property:Deconstructable Whether this building can be deconstructed <building>
<deconstructible>
can overlap zones optional Boolean Property:Can Overlap Zones Whether zones can overlap this building <canOverlapZones>
size optional Text (x × y) Property:Size The dimensions of this object <size>
minifiable optional Boolean Property:Minifiable Whether this building is minifiable <minifiedDef>
passability optional One of:


Allowed Value Code Name
standable Standable
pass through only PassThroughOnly
impassable Impassable
Property:Passability Whether an object can be stood on, can only be walked over, or is impassable <passability>
cover optional Number (0~1: > 0.75 = 0.75) Property:Cover Effectiveness Cover effectiveness

How effective this is when used as cover in a gunfight.

Higher percentages will block more shots.

<fillPercent>
edifice optional boolean Property:Edifice Whether this building has height. <building>
<isEdifice>
blockswind optional Boolean Property:Blocks Wind Whether this building blocks wind[Elaborate] <blockWind>
terrain affordance optional What buildings / functions this terrain can support, or what affordances this building requires
  1. <terrainAffordanceNeeded> (Buildings)
  2. <affordances> (Terrain)
power optional Number The maximum power that this generator can output in ideal conditions. <comps>
<Class="CompProperties_Power">
<basePowerConsumption>
facility optional Property:Facility
glowcolor optional Property:Glow Color <comps>
<Class="CompProperties_Glower">
<glowColor>
glowradius optional Property:Glow Radius <comps>
<Class="CompProperties_Glower">
<glowRadius>
heatpersecond optional Property:Heat Per Second <comps>
<Class="CompProperties_HeatPusher">
<heatPerSecond>
maxheattemperature optional Property:Max Heat Temperature <comps>
<Class="CompProperties_HeatPusher">
<heatPushMaxTemperature>
mincooltemperature optional Property:Min Cool Temperature <comps>
<Class="CompProperties_HeatPusher">
<heatPushMinTemperature>
surgery success chance factor optional A multiplier to the chance that a surgery will succeed when performed here. Surgery success chances are also affected by many other factors, including the surgeon's ability and medicine used. <statBases>
<SurgerySuccessChanceFactor>
immunity gain speed factor optional Immunity gain speed is multiplied by this value. <statBases>
<ImmunityGainSpeedFactor>
rest effectiveness optional How fast people sleeping on this gain rest.
comfort offset optional Property:Comfort Offset
recreation power optional How effectively this item entertains people and fulfills the need for recreation. <statBases>
<JoyGainFactor>
recreation type optional - <joyKind>
work speed factor optional Work speed is multiplied by this value. <statBases>
<WorkTableWorkSpeedFactor>
work efficiency factor optional Work efficiency is multiplied by this value. <statBases>
<WorkTableEfficiencyFactor>
unpowered work speed factor optional Property:Unpowered Work Speed Factor <building>
<unpoweredWorkTableWorkSpeedFactor>
work speed offset optional Property:Work Speed Offset
max simultaneous facilities optional Property:Max Simultaneous Facilities
efficiency optional Property:Efficiency
Ability
goodwill impact optional Number How casting this ability on someone will impact relations with their faction. <comps>
<Class="CompProperties_AbilityEffectWithDuration">
<goodwillImpact>
effect radius optional Number The radius of the area of effect of this ability. <statBases>
<Ability_EffectRadius>
duration optional Number How long the effects of this ability last. <statBases>
<Ability_Duration>
duration multiplier optional Number - <comps>
<Class="CompProperties_AbilityGiveHediff">
<durationMultiplier>
ability range optional Number The maximum distance to a target of this ability, or to the center of the target location. <verbProperties>
<range>
psyfocus cost optional Number How much psyfocus must be spent to perform this ability. <statBases>
<Ability_PsyfocusCost>
neural heat gain optional Number How much neural heat will be added as a result of performing this ability. <statBases>
<Ability_EntropyGain>
casting time optional Number How long it takes to perform this ability. <verbProperties>
<warmupTime>
psylink level optional Number (1-6) The minimum psylink level required to use this ability. <level>
caster must be capable of violence optional Boolean Property:Caster Must Be Capable Of Violence <casterMustBeCapableOfViolence>
8. Stat Modifiers (for materials)
beauty factor optional number Property:Beauty Factor <stuffProps>
<statFactors>
<Beauty>
beauty offset optional number Property:Beauty Offset <stuffProps>
<statOffsets>
<Beauty>
work to make factor optional number Property:Work To Make Factor <stuffProps>
<statFactors>
<WorkToMake>
work to build factor optional number Property:Work To Build Factor <stuffProps>
<statFactors>
<WorkToBuild>
work to build offset optional ticks Property:Work To Build Offset <stuffProps>
<statOffsets>
<WorkToBuild>
max hit points factor optional number Property:Max Hit Points Factor <stuffProps>
<statFactors>
<MaxHitPoints>
flammability factor optional number Property:Flammability Factor <stuffProps>
<statFactors>
<Flammability>
armor - sharp factor optional number Armor against sharp damage like bullets, knife stabs, and animal bites. <statBases>
<StuffPower_Armor_Sharp>
armor - blunt factor optional number Armor against blunt damage like club impacts, rock falls, and explosions. <statBases>
<StuffPower_Armor_Blunt>
armor - heat factor optional number Armor against temperature-related damage like burns. <statBases>
<StuffPower_Armor_Heat>
insulation - cold factor optional °C How much an apparel made of this material improves a wearer's minimum comfortable temperature when worn. <statBases>
<StuffPower_Insulation_Cold>
insulation - heat factor optional °C How much an apparel made of this material improves a wearer's maximum comfortable temperature when worn. <statBases>
<StuffPower_Insulation_Heat>
melee blunt damage factor optional number A multiplier on damage from blunt-type attacks for weapons made of this material. <statBases>
<BluntDamageMultiplier>
melee sharp damage factor optional number A multiplier on damage from sharp-type attacks for weapons made of this material. <statBases>
<SharpDamageMultiplier>
melee cooldown factor optional number A multiplier on attack delay for weapons made of this material. <stuffProps>
<statFactors>
<MeleeWeapon_CooldownMultiplier>
door opening speed factor optional number Property:Door Opening Speed Factor <stuffProps>
<statFactors>
<DoorOpenSpeed>
rest effectiveness factor optional number Property:Rest Effectiveness Factor <stuffProps>
<statFactors>
<BedRestEffectiveness>
Surgical
Capacity Effects
Mechanitor Content added by the Biotech DLC
mech bandwidth optional Number How much bandwidth a mechanitor has. More bandwidth allows a mechanitor to produce and control more mechs at the same time.
Losing bandwidth means losing control of mechs, leaving them without an overseer. Such mechs can eventually become feral if not re-dominated.
  1. <statOffsets>
    <MechBandwidth>
  2. <equippedStatOffsets>
    <MechBandwidth>
mech control groups optional Number How many control groups this mechanitor can direct independently. Each control group can be given its own separate orders.
  1. <statOffsets>
    <MechControlGroups>
  2. <equippedStatOffsets>
    <MechControlGroups>
mech gestation speed optional Number A multiplier on the speed at which this mechanitor can form new mechanoids at a gestator. <statOffsets>
<MechFormingSpeed>
mech remote repair distance optional Number How far away a mech can be during remote repair. <statOffsets>
<MechRemoteRepairDistance>
mech remote shield distance optional Number The maximum range at which a mechanitor can place a shield on a mechanoid. <statOffsets>
<MechRemoteShieldDistance>
mech remote shield energy optional Number The energy a remote shield will have when created by a mechanitor. <statOffsets>
<MechRemoteShieldEnergy>
mech repair speed optional Number A multiplier on how fast a mechanitor can repair mechanoids. <statOffsets>
<MechRepairSpeed>
mech work speed offset optional Number A work speed offset applied to a mechanitor's mechs. <statOffsets>
<WorkSpeedGlobalOffsetMech>
Drug Addiction
Pawn Combat
Pawn Social
Pawn Misc
Pawn Work
Genetics Content added by the Biotech DLC
Psychic Ritual Content added by the Anomaly DLC
Containment Content added by the Anomaly DLC
containment strength optional Number How securely this can contain an entity. This is improved by stronger walls and doors, more light, fewer other entities in the room, and special containment devices. Some entities are easier to contain in cold temperatures. <statBases>
<ContainmentStrength>
minimum containment strength optional Number The containment strength needed to contain this entity properly. An entity in a chamber below its minimum containment strength will have a very high chance to escape. <statBases>
<MinimumContainmentStrength>
anomaly knowledge optional Number Property:Anomaly Knowledge The base amount of Property:Knowledge Category gained when studied
  1. <comps>
    <Class="CompProperties_Studiable">
    <knowledgeCategory>
  2. <race>
    <anomalyKnowledge>
knowledge category optional Text (Basic, Advanced) Property:Knowledge Category The category of knowledge gained when studying applicable pawns
  1. <comps>
    <Class="CompProperties_Studiable">
    <knowledgeCategory>
  2. <race>
    <knowledgeCategory>
study interval optional Number Property:Studiable Frequency Ticks The cooldown before a thing can be studied again. This value is typically 120,000 ticks (2 in-game days) <comps>
<Class="CompProperties_Studiable">
<frequencyTicks>
bioferrite density optional Number Property:Bioferrite Density A multiplier on the base Bioferrite generation of an entity <comps>
<Class="CompProperties_ProducesBioferrite">
<bioferriteDensity>
gets cold containment bonus optional Boolean This entity is less likely to escape if kept in a very cold room. <comps>
<Class="CompProperties_HoldingPlatformTarget">
<getsColdContainmentBonus>
min monolith level for study optional Number (0, 1, 2, 3, 4, 5, 6) Property:Minimum Monolith Level For Study The Monolith activation level required to study applicable things <comps>
<Class="CompProperties_Studiable">
<minMonolithLevelForStudy>
requires holding platform optional Boolean Property:Requires Holding Platform Whether or not a pawn needs to be contained by a Holding spot or Holding platform in order to be studied <comps>
<Class="CompProperties_Studiable">
<requiresHoldingPlatform>
requires imprisonment optional Boolean Property:Requires Imprisonment Whether or not a pawn needs to be imprisoned in order to be studied <comps>
<Class="CompProperties_Studiable">
<requiresImprisonment>
base escape interval MTB days optional Number Property:Base Escape Interval Mtb Days The base average number of days a holdable pawn will try to escape <comps>
<Class="CompProperties_HoldingPlatformTarget">
<baseEscapeIntervalMtbDays>
Serum
Content Source
14. Technical
  • page verified for version
  • Verified
optional Page Property:Verified For -
defName optional Text Property:Def Name <defName>
label optional Text Property:Label <label>
has quality optional Boolean Property:Has Quality <comps>
<compClass>CompQuality</compClass>
color optional -
thingCategories optional - <thingCategories>
file optional -
weaponTags optional Text Property:weaponTags <weaponTags>
thingSetMakerTags optional Text Property:Thing Set Maker Tags <thingSetMakerTags>
thingSetMakerTagsToAllow optional Text - <thingSetMakerTagsToAllow>
thingSetMakerTagsToDisallow optional Text - <thingSetMakerTagsToDisallow>
defaultOutfitTags optional Text Property:Default Outfit Tags What default apparel policies this apparel will be assigned to <apparel>
<defaultOutfitTags>
factionPrerequisiteTags optional Text -
  • harvestTag
  • harvestTags
optional Text - <plant>
<harvestTag>
recipePrerequisitetags optional Text -
ResearchProjectTagDef optional Text -
  • sowTag
  • sowTags
optional Text Property:sowTags
  1. <plant>
    <sowTags>
  2. <building>
    <sowTag>
  • tag
  • tags
optional Text Property:tags
techHediffsTags optional Text Property:techHediffsTags
  • tradeTag
  • tradeTags
optional One of:


  • AnimalCommon
  • AnimalDryad
  • AnimalExotic
  • AnimalFarm
  • AnimalFighter
  • AnimalInsect
  • AnimalPet
  • AnimalUncommon
  • Armor
  • Art
  • Artifact
  • BasicClothing
  • Bionic
  • Clothing
  • Drugs
  • ExoticBuilding
  • ExoticMisc
  • HiTechArmor
  • HoraxArmor
  • HoraxWeapon
  • ImplantEmpireCommon
  • ImplantEmpireRoyal
  • MortarShell
  • MusicalInstrument
  • PsychicApparel
  • PsychicWeapon
  • PsylinkNeuroformer
  • Serum
  • TechHediff
  • Television
  • UtilitySpecial
  • WeaponMelee
  • WeaponRanged
Property:TradeTags <tradeTags>
tradeTagsBuy optional Text -
tradeTagsSell optional Text -
tradeTagsToAllow optional Text -
tutorHighlightTag optional Text -
apparelTags optional Text Property:apparelTags
stuff adjective optional Property:Stuff Adjective <stuffProps> <stuffAdjective>
small volume optional Boolean Property:Small Volume <smallVolume>
preferability optional One of:


  • Plant
  • Raw
  • Awful
  • Simple
  • Fine
  • Lavish
  • Desperate

FoodPreferability Enum:

  • Undefined
  • NeverForNutrition
  • DesperateOnly
  • DesperateOnlyForHumanlikes
  • RawBad
  • RawTasty
  • MealTerrible
  • MealAwful
  • MealSimple
  • MealFine
  • MealLavish
Property:Preferability
food preference optional Property:Food Preference
drug category optional One of:


  • None
  • Medical
  • Social
  • Hard
  • Any
Property:Drug Category <ingestible><drugCategory>
is pleasure drug optional Boolean Property:Is Pleasure Drug
work efficiency factor optional -
work efficiency offset optional -
max simultaneous facilities optional Number -
unpowered work speed factor optional -
bulk product amount optional Property:Bulk Product Amount

Deprecated positional parameters

This template used to take in up to 4 positional parameters, often accomplish relatively hacky things. As of now this template only takes ONE positional parameter -- all others are ignored.

  1. (still in use)
  2. DEPRECATED: Extra CSS class to be applied to the infobox div.
  3. DEPRECATED: Used to be extra params passed to the image layout in the infobox. Superseded by the imagesize= param
  4. DEPRECATED: Overly clever use of the size parameter. The usual format is |size = X|Y. This then gets transformed into x * y. BUT it only works if you have 3 positional parameters prior to the first param.


Examples