<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.deltav.gay/index.php?action=history&amp;feed=atom&amp;title=Module%3AChemistry_Lookup</id>
	<title>Module:Chemistry Lookup - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.deltav.gay/index.php?action=history&amp;feed=atom&amp;title=Module%3AChemistry_Lookup"/>
	<link rel="alternate" type="text/html" href="https://wiki.deltav.gay/index.php?title=Module:Chemistry_Lookup&amp;action=history"/>
	<updated>2026-04-12T03:17:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.deltav.gay/index.php?title=Module:Chemistry_Lookup&amp;diff=249&amp;oldid=prev</id>
		<title>Debug: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.deltav.gay/index.php?title=Module:Chemistry_Lookup&amp;diff=249&amp;oldid=prev"/>
		<updated>2023-07-02T02:00:25Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:00, 1 July 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key deltavwiki:diff:1.41:old-248:rev-249 --&gt;
&lt;/table&gt;</summary>
		<author><name>Debug</name></author>
	</entry>
	<entry>
		<id>https://wiki.deltav.gay/index.php?title=Module:Chemistry_Lookup&amp;diff=248&amp;oldid=prev</id>
		<title>Floofers: Update effects for chemicals</title>
		<link rel="alternate" type="text/html" href="https://wiki.deltav.gay/index.php?title=Module:Chemistry_Lookup&amp;diff=248&amp;oldid=prev"/>
		<updated>2023-05-18T11:57:54Z</updated>

		<summary type="html">&lt;p&gt;Update effects for chemicals&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local prototypes = mw.loadData(&amp;quot;Module:Chemistry Lookup/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
p.chem = prototypes.chem&lt;br /&gt;
p.react = prototypes.react&lt;br /&gt;
p.groupDirection = prototypes.groupDirection&lt;br /&gt;
&lt;br /&gt;
function p.readscalar(frame)&lt;br /&gt;
	return mw.text.nowiki(p.chem[frame.args[1]][frame.args[2]])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.readscalarreact(frame)&lt;br /&gt;
	if p.react[frame.args[1]][frame.args[2]] ~= nil then&lt;br /&gt;
		return mw.text.nowiki(p.react[frame.args[1]][frame.args[2]])&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getcolor(frame)&lt;br /&gt;
	return mw.text.nowiki(p.chem[frame.args[1]].color:sub(1, 7))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gettextcolor(frame)&lt;br /&gt;
	local basecol = p.chem[frame.args[1]].color&lt;br /&gt;
	local red = tonumber(basecol:sub(2, 3), 16)&lt;br /&gt;
	local grn = tonumber(basecol:sub(4, 5), 16)&lt;br /&gt;
	local blu = tonumber(basecol:sub(6, 7), 16)&lt;br /&gt;
	local luminance = math.sqrt(0.241*red*red + 0.691*grn*grn + 0.068*blu*blu)&lt;br /&gt;
	if luminance &amp;gt; 100 then&lt;br /&gt;
		return mw.text.nowiki(&amp;quot;#000&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.text.nowiki(&amp;quot;#FFF&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.hasrecipe(frame)&lt;br /&gt;
	return p.chem[frame.args[1]][&amp;quot;recipes&amp;quot;][1] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildboxes(frame)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	local group = frame.args[1]&lt;br /&gt;
	for k in pairs(p.chem) do&lt;br /&gt;
		if p.chem[k].group == group then&lt;br /&gt;
			out = out .. frame:expandTemplate{ title = &amp;quot;Chembox&amp;quot;, args = { prototype = k }}&lt;br /&gt;
		elseif group == nil then&lt;br /&gt;
			out = out .. frame:expandTemplate{ title = &amp;quot;Chembox&amp;quot;, args = { prototype = k }}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildreactboxes(frame)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for k in pairs(p.react) do&lt;br /&gt;
		if tablelength(p.react[k].effects) ~= 0 then&lt;br /&gt;
			out = out .. frame:expandTemplate{ title = &amp;quot;Reactionbox&amp;quot;, args = { reaction = k }}	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildrecipes(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for id, recipe in pairs(p.chem[chem].recipes) do&lt;br /&gt;
		out = out .. p.buildreaction(frame, recipe)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildreactionext(frame)&lt;br /&gt;
	local react = frame.args[1]&lt;br /&gt;
	return p.buildreaction(frame, react)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildreaction(frame, react)&lt;br /&gt;
	local data = p.react[react]&lt;br /&gt;
	local dest = &amp;quot;Chemistry&amp;quot;&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k,v in pairs(data.reactants) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local dest = &amp;quot;Chemistry&amp;quot;&lt;br /&gt;
		if (p.groupDirection[p.chem[k].group] ~= nil) then&lt;br /&gt;
			dest = p.groupDirection[p.chem[k].group]&lt;br /&gt;
		end&lt;br /&gt;
		args[&amp;quot;component-&amp;quot; .. i] = frame:expandTemplate{ title = &amp;quot;Chem Recipe Component&amp;quot;, args = { reagent = k, amount = v.amount, dest = dest }}&lt;br /&gt;
	end&lt;br /&gt;
	i = 0&lt;br /&gt;
	for k,v in pairs(data.products) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local dest = &amp;quot;Chemistry&amp;quot;&lt;br /&gt;
		if (p.groupDirection[p.chem[k].group] ~= nil) then&lt;br /&gt;
			dest = p.groupDirection[p.chem[k].group]&lt;br /&gt;
		end&lt;br /&gt;
		args[&amp;quot;result-&amp;quot; .. i] = frame:expandTemplate{ title = &amp;quot;Chem Recipe Component&amp;quot;, args = { reagent = k, amount = v, dest = dest }}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if data.effects ~= nil then&lt;br /&gt;
		args.effects = p.geneffectlist(data.effects, frame, 1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;Chem Box Recipe&amp;quot;, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checksatiatesthirst(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		for l, w in pairs(v.effects) do&lt;br /&gt;
			if w.id == &amp;quot;SatiateThirst&amp;quot; then&lt;br /&gt;
				return &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checksatiateshunger(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		for l, w in pairs(v.effects) do&lt;br /&gt;
			if w.id == &amp;quot;SatiateHunger&amp;quot; then&lt;br /&gt;
				return &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.haseffects(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		for l, w in pairs(v.effects) do&lt;br /&gt;
			if w.id ~= &amp;quot;SatiateHunger&amp;quot; and w.id ~= &amp;quot;SatiateThirst&amp;quot; then&lt;br /&gt;
				return &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.geneffects(frame, chem)&lt;br /&gt;
	if chem == nil then&lt;br /&gt;
		chem = frame.args[1]&lt;br /&gt;
	end&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;b&amp;gt;&amp;quot; .. k .. &amp;quot;&amp;lt;/b&amp;gt; (&amp;quot; .. v.rate .. &amp;quot; units per second)\n&amp;quot; .. p.geneffectlist(v.effects, frame, v.rate)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.geneffectlist(effects, frame, rate)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for l, w in pairs(effects) do&lt;br /&gt;
		-- Popup Message is ignored on purpose&lt;br /&gt;
		if w.id == &amp;quot;HealthChange&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genhealthchange(w, rate, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;AdjustReagent&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genadjustreagent(w, rate, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;FlammableReaction&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genflammablereaction(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;AdjustTemperature&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genadjusttemperature(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;GenericStatusEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.gengenericstatuseffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ExplosionReactionEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genexplosionreactioneffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;FoamAreaReactionEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genfoamareareactioneffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;SmokeAreaReactionEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.gensmokeareareactioneffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ModifyBleedAmount&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genmodifybleedamount(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;PopupMessage&amp;quot; or w.id == &amp;quot;SatiateThirst&amp;quot; or w.id == &amp;quot;SatiateHunger&amp;quot; then&lt;br /&gt;
			-- Don&amp;#039;t do anything.&lt;br /&gt;
		elseif w.id == &amp;quot;CreateEntityReactionEffect&amp;quot; then&lt;br /&gt;
			-- Nope.&lt;br /&gt;
		elseif w.id == &amp;quot;Jitter&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genjitter(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;MakeSentient&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genmakesentient(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ChemVomit&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;: Causes vomitting.\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ChemCureDisease&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;: Assists in curing diseases.\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;Drunk&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;: Causes drunkness.\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ChemHealEyeDamage&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;: Heals damage to the eyes.\n&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out = out .. &amp;quot;: Unknown effect: &amp;quot; .. w.id .. &amp;quot;. Ask in the discord for help.&amp;quot; .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genmakesentient(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;MakeSentientEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genjitter(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;JitterEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gensmokeareareactioneffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;SmokeAreaReactionEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genfoamareareactioneffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;FoamAreaReactionEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genexplosionreactioneffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;ExplosionReactionEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gengenericstatuseffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;GenericStatusEffect&amp;quot;, args = { key = r.Key, type = r.Type, time = r.Time, refresh = r.Refresh, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genadjusttemperature(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;AdjustTemperature&amp;quot;, args = { amount = r.Amount, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genflammablereaction(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;FlammableReaction&amp;quot;, args = { multiplier = r.Multiplier, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genflammablereaction(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;FlammableReaction&amp;quot;, args = { multiplier = r.Multiplier, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genadjustreagent(r, rate, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;AdjustReagent&amp;quot;, args = { amount = r.Amount, reagent = r.Reagent, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genmodifybleedamount(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;ModifyBleedAmount&amp;quot;, args = { amount = r.Amount, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genhealthchange(h, rate, frame)&lt;br /&gt;
	local healst = {}&lt;br /&gt;
	local dealst = {}&lt;br /&gt;
	local r = 1.0 / rate&lt;br /&gt;
	if h.damage.types ~= nil then&lt;br /&gt;
	for k, v in pairs(h.damage.types) do&lt;br /&gt;
		if v &amp;lt; 0 then&lt;br /&gt;
			healst[k] = v * r&lt;br /&gt;
		else&lt;br /&gt;
			dealst[k] = v * r&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if h.damage.groups ~= nil then&lt;br /&gt;
	for k, v in pairs(h.damage.groups) do&lt;br /&gt;
		if v &amp;lt; 0 then&lt;br /&gt;
			healst[k] = v * r&lt;br /&gt;
		else&lt;br /&gt;
			dealst[k] = v * r&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local heals = hchangelist(healst, frame)&lt;br /&gt;
	local deals = hchangelist(dealst, frame)&lt;br /&gt;
	local conds = nil&lt;br /&gt;
	if h.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(h.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;HealthChange&amp;quot;, args = { heals = heals, deals = deals, when = conds, prob = h.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function hchangelist(l, frame)&lt;br /&gt;
	out = &amp;quot;&amp;quot;&lt;br /&gt;
	local len = tablelength(l)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(l) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if len == i and i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, and &amp;quot;&lt;br /&gt;
		elseif i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. hchange(k, v, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- So we can make it fancy later&lt;br /&gt;
function hchange(ty, amnt, frame)&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;HealthModifier&amp;quot;, args = { adj = amnt, kind = ty } }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genconds(conds, frame)&lt;br /&gt;
	out = &amp;quot;&amp;quot;&lt;br /&gt;
	local len = tablelength(conds)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(conds) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if len == i and i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, and &amp;quot;&lt;br /&gt;
		elseif i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. p.gencond(v, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gencond(c, frame)&lt;br /&gt;
	if c.id == &amp;quot;TotalDamage&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;TotalDamage&amp;quot;, args = { min = c.Min, max = c.Max } }&lt;br /&gt;
	elseif c.id == &amp;quot;ReagentThreshold&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;ReagentThreshold&amp;quot;, args = { min = c.Min, max = c.Max, reagent = c.Reagent } }&lt;br /&gt;
	elseif c.id == &amp;quot;OrganType&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;OrganType&amp;quot;, args = { shouldhave = c.ShouldHave, type = c.Type } }&lt;br /&gt;
	elseif c.id == &amp;quot;Temperature&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;Temperature&amp;quot;, args = {  min = c.Min, max = c.Max } }&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function tablelength(T)&lt;br /&gt;
  local count = 0&lt;br /&gt;
  for _ in pairs(T) do count = count + 1 end&lt;br /&gt;
  return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function has_value(tab, val)&lt;br /&gt;
    for index, value in ipairs(tab) do&lt;br /&gt;
        if value[1] == val then&lt;br /&gt;
            return true&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function strsplit(inputstr, seperator)&lt;br /&gt;
        if seperator == nil then&lt;br /&gt;
                seperator = &amp;quot;,&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        local t={}&lt;br /&gt;
        for str in string.gmatch(inputstr, &amp;quot;([^&amp;quot;..seperator..&amp;quot;]+)&amp;quot;) do&lt;br /&gt;
                table.insert(t, str)&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Floofers</name></author>
	</entry>
</feed>