<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://dwarffortresswiki.org/index.php?action=history&amp;feed=atom&amp;title=User%3AFleeting_Frames%2Fconstructmultiz</id>
	<title>User:Fleeting Frames/constructmultiz - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://dwarffortresswiki.org/index.php?action=history&amp;feed=atom&amp;title=User%3AFleeting_Frames%2Fconstructmultiz"/>
	<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;action=history"/>
	<updated>2026-05-05T06:49:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.11</generator>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=253193&amp;oldid=prev</id>
		<title>Fleeting Frames: /* copy 1 building */ minor memoization issue.</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=253193&amp;oldid=prev"/>
		<updated>2020-06-12T21:57:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;copy 1 building: &lt;/span&gt; minor memoization issue.&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:57, 12 June 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot; &gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;33&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;34&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l831&quot; &gt;Line 831:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 831:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         or (bd.type == df.building_type.Trap and bd.subtype == 4 )) then -- All traps other than weapon trap&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         or (bd.type == df.building_type.Trap and bd.subtype == 4 )) then -- All traps other than weapon trap&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         argumenttable = {material = {mat_type = lbd.mat_type, mat_index = lbd.mat_index,}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         argumenttable = {material = {mat_type = lbd.mat_type, mat_index = lbd.mat_index,}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         if &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;getFlag(&lt;/del&gt;lbd.jobs[0].items&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;) &lt;/del&gt;then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         if &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;#&lt;/ins&gt;lbd.jobs[0].items&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&lt;/ins&gt;0 then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           argumenttable.material.item_type =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;           argumenttable.material.item_type =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             df.item_type[tostring2(lbd.jobs[0].items[0].item):gsub(&amp;quot;st:.*&amp;quot;,&amp;quot;&amp;quot;):gsub(&amp;quot;&amp;lt;item_&amp;quot;,&amp;quot;&amp;quot;):upper()]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             df.item_type[tostring2(lbd.jobs[0].items[0].item):gsub(&amp;quot;st:.*&amp;quot;,&amp;quot;&amp;quot;):gsub(&amp;quot;&amp;lt;item_&amp;quot;,&amp;quot;&amp;quot;):upper()]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_db:diff::1.12:old-252796:rev-253193 --&gt;
&lt;/table&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252796&amp;oldid=prev</id>
		<title>Fleeting Frames: /* designationMapTable */ Upstair -&gt; UpStair capitalization error</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252796&amp;oldid=prev"/>
		<updated>2020-05-24T01:22:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;designationMapTable: &lt;/span&gt; Upstair -&amp;gt; UpStair capitalization error&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:22, 24 May 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot; &gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;32&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;33&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l104&quot; &gt;Line 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_RAMP&amp;quot;)] = {dig = df.tile_dig_designation.Ramp}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_RAMP&amp;quot;)] = {dig = df.tile_dig_designation.Ramp}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_STAIR_DOWN&amp;quot;)] = {dig = df.tile_dig_designation.DownStair}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_STAIR_DOWN&amp;quot;)] = {dig = df.tile_dig_designation.DownStair}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_STAIR_UP&amp;quot;)] = {dig = df.tile_dig_designation.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Upstair&lt;/del&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_STAIR_UP&amp;quot;)] = {dig = df.tile_dig_designation.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;UpStair&lt;/ins&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         --smoothing, plant gathering, probably other designations that don't set dig to 2+ have issue of losing themselves over time (with save and reload?)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         --smoothing, plant gathering, probably other designations that don't set dig to 2+ have issue of losing themselves over time (with save and reload?)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_SMOOTH&amp;quot;)] = {smooth = 1}  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationMapTable[gui.getKeyDisplay(&amp;quot;DESIGNATE_SMOOTH&amp;quot;)] = {smooth = 1}  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_db:diff::1.12:old-252795:rev-252796 --&gt;
&lt;/table&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252795&amp;oldid=prev</id>
		<title>Fleeting Frames: /* building */ added count</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252795&amp;oldid=prev"/>
		<updated>2020-05-23T22:41:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;building: &lt;/span&gt; added count&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:41, 23 May 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot; &gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;31&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;32&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1018&quot; &gt;Line 1,018:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,018:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   local yoff = 0&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   local yoff = 0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  local nr = 0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  if difflen &amp;gt; 0 then   &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  if difflen &amp;gt; 0 then   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    local hdif = zpositive-znegative&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    local hdif = zpositive-znegative&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1026&quot; &gt;Line 1,026:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,027:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    for dstring, _ in pairs(zDiff) do --typically 1 member&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    for dstring, _ in pairs(zDiff) do --typically 1 member&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      for curlength, x, y,z in targetDesignations(dstring, tostring(hdif)) do&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      for curlength, x, y,z in targetDesignations(dstring, tostring(hdif)) do &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;--only current z for now, could use zpositive or znegative to do on other zs&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       local tbld = df.global.world.buildings.all[lenb-1-curlength%w*h]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       local tbld = df.global.world.buildings.all[lenb-1-curlength%w*h]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(tbld, x-tbld.x1, y-tbld.y1, z-tbld.z)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(tbld, x-tbld.x1, y-tbld.y1, z-tbld.z)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      nr = nr + 1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1041&quot; &gt;Line 1,041:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,043:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for zoff = 1, zpositive do&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for zoff = 1, zpositive do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(df.global.world.buildings.all[lenb-i], xoff, yoff, zoff)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(df.global.world.buildings.all[lenb-i], xoff, yoff, zoff)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      nr = nr +1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1046&quot; &gt;Line 1,046:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,049:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for zoff = -1, -znegative, -1 do&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for zoff = -1, -znegative, -1 do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(df.global.world.buildings.all[lenb-i], xoff, yoff, zoff)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(df.global.world.buildings.all[lenb-i], xoff, yoff, zoff)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      nr = nr +1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; if (nr &amp;gt; 0) then print(&amp;quot;Placed &amp;quot; .. nr .. &amp;quot; buildings.&amp;quot;) end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_db:diff::1.12:old-252794:rev-252795 --&gt;
&lt;/table&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252794&amp;oldid=prev</id>
		<title>Fleeting Frames: /* decodeDesignation */ use comma instead of dot for fraction</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252794&amp;oldid=prev"/>
		<updated>2020-05-23T22:36:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;decodeDesignation: &lt;/span&gt; use comma instead of dot for fraction&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:36, 23 May 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot; &gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;constructonmultiplezlevels&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==========================&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     version 1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;31&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Script to construct multiple z-levels of buildings at once.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Currently uses general seeking for matching material and type,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l144&quot; &gt;Line 144:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 144:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local targettype = designationtype.targettype&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local targettype = designationtype.targettype&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationtype.targettype = nil&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     designationtype.targettype = nil&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local designationpriority = tonumber(designationstring:match('[%d|%&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/del&gt;]+'))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local designationpriority = tonumber(designationstring:match('[%d|%&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;,&lt;/ins&gt;]+'))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local ismarked = designationstring:match('m') and true or false&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local ismarked = designationstring:match('m') and true or false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local checkold = designationstring:match('O') and true or false&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local checkold = designationstring:match('O') and true or false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_db:diff::1.12:old-252737:rev-252794 --&gt;
&lt;/table&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252737&amp;oldid=prev</id>
		<title>Fleeting Frames: /* zdetection */ fixed equality, removed obsolete comment</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252737&amp;oldid=prev"/>
		<updated>2020-05-17T18:15:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;zdetection: &lt;/span&gt; fixed equality, removed obsolete comment&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:15, 17 May 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l699&quot; &gt;Line 699:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 699:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   local function multizonInput(self, keys)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   local function multizonInput(self, keys)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     oldInput(self, keys)--TODO adapt for new indi in 4303&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     oldInput(self, keys)--TODO adapt for new indi in 4303&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if z &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;= df.global.window_z then  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if z &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;~&lt;/ins&gt;= df.global.window_z then  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       z = df.global.window_z  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       z = df.global.window_z  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       makeDesignationTable(true)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       makeDesignationTable(true)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1026&quot; &gt;Line 1,026:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,026:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    for dstring, _ in pairs(zDiff) do --typically 1 member&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    for dstring, _ in pairs(zDiff) do --typically 1 member&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      for curlength, x, y,z in targetDesignations(dstring, tostring(hdif)) do &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;--only current z for now, could use zpositive or znegative to do on other zs&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      for curlength, x, y,z in targetDesignations(dstring, tostring(hdif)) do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       local tbld = df.global.world.buildings.all[lenb-1-curlength%w*h]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       local tbld = df.global.world.buildings.all[lenb-1-curlength%w*h]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(tbld, x-tbld.x1, y-tbld.y1, z-tbld.z)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       copy1building(tbld, x-tbld.x1, y-tbld.y1, z-tbld.z)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252048&amp;oldid=prev</id>
		<title>Fleeting Frames: Ver 1.3</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252048&amp;oldid=prev"/>
		<updated>2020-03-30T12:23:13Z</updated>

		<summary type="html">&lt;p&gt;Ver 1.3&lt;/p&gt;
&lt;a href=&quot;//dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;amp;diff=252048&amp;amp;oldid=252047&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
	<entry>
		<id>http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252047&amp;oldid=prev</id>
		<title>Fleeting Frames: Ver 1.01</title>
		<link rel="alternate" type="text/html" href="http://dwarffortresswiki.org/index.php?title=User:Fleeting_Frames/constructmultiz&amp;diff=252047&amp;oldid=prev"/>
		<updated>2020-03-30T12:21:24Z</updated>

		<summary type="html">&lt;p&gt;Ver 1.01&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;See [http://www.bay12forums.com/smf/index.php?topic=167598.0 Forum thread] for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--lets one construct simultaneously on z-axis&lt;br /&gt;
local helptext = [===[&lt;br /&gt;
constructonmultiplezlevels&lt;br /&gt;
==========================&lt;br /&gt;
    version 1.01 (beta)&lt;br /&gt;
Script to construct multiple z-levels of buildings at once.&lt;br /&gt;
Currently uses general seeking for matching material and type,&lt;br /&gt;
expect for bucket, barrel, chain, mechanism, screw, pipe, anvil.&lt;br /&gt;
General: Dwarf will use the matching item closest to them.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
  constructmultiz x y&lt;br /&gt;
    orders x above and y below same buildings as the last one.&lt;br /&gt;
  constructmultiz display&lt;br /&gt;
    Displays an indicator_screen in bottom-right for bound x and y&lt;br /&gt;
    Also enables Ctrl+A and Ctrl+B to place bindings&lt;br /&gt;
  constructmultiz bind&lt;br /&gt;
    Adds keybinds to call this when building and exits&lt;br /&gt;
  constructmultiz unbind&lt;br /&gt;
    Removes keybinds to call this when building and exits&lt;br /&gt;
  constructmultiz bindings&lt;br /&gt;
    displays list of what bindings it would use and exits]===]&lt;br /&gt;
&lt;br /&gt;
local args = {...}&lt;br /&gt;
local argsline = &amp;quot;&amp;quot;&lt;br /&gt;
if args then argsline = table.concat(args, &amp;quot; &amp;quot;) end&lt;br /&gt;
&lt;br /&gt;
if not args or argsline:find(&amp;quot;help&amp;quot;) or argsline:find(&amp;quot;?&amp;quot;) then&lt;br /&gt;
print(helptext)&lt;br /&gt;
qerror(&amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getCurHeightAndDepth()&lt;br /&gt;
local keybinding_text = dfhack.run_command_silent(&amp;quot;keybinding list Enter&amp;quot;)&lt;br /&gt;
                      --get all enter keybinds&lt;br /&gt;
                      --I'd need to see D and shift-enter ones too if this was setting them&lt;br /&gt;
if not keybinding_text:find(&amp;quot;No bindings&amp;quot;) then --No bindings, ergo nothing to do&lt;br /&gt;
    for single_bind in keybinding_text:gmatch(&amp;quot;%s%s[^%s].-\n&amp;quot;) do&lt;br /&gt;
        --iterate through all Enter binds&lt;br /&gt;
        if single_bind:find('constructmultiz') then&lt;br /&gt;
            --found one constructmultiz under enter,&lt;br /&gt;
            local twonumbers = single_bind:match(&amp;quot;:.*&amp;quot;)&lt;br /&gt;
            --isolating it and returning first and last number in the command&lt;br /&gt;
            return tonumber(twonumbers:match(&amp;quot;%d+&amp;quot;)), tonumber(twonumbers:match(&amp;quot; %d+%s$&amp;quot;))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
return 0, 0 --if found nothing, reset to nothing&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function initBindings()&lt;br /&gt;
  local keybinding_list = {} --hides higher-lever list via same name&lt;br /&gt;
  table.insert(keybinding_list, 'B@dwarfmode/Default &amp;quot;constructmultiz display&amp;quot;')&lt;br /&gt;
  table.insert(keybinding_list, 'D@dwarfmode/Build/Material/Groups &amp;quot;constructmultiz ' .. curheight .. ' ' .. curdepth .. '&amp;quot;')&lt;br /&gt;
  table.insert(keybinding_list, 'Enter@dwarfmode/Build/Position/FarmPlot &amp;quot;constructmultiz ' .. curheight .. ' ' .. curdepth .. '&amp;quot;')&lt;br /&gt;
  table.insert(keybinding_list, 'Enter@dwarfmode/Build/Position/RoadDirt &amp;quot;constructmultiz ' .. curheight .. ' ' .. curdepth .. '&amp;quot;')&lt;br /&gt;
  table.insert(keybinding_list, 'Enter@dwarfmode/Build/Material/Groups &amp;quot;constructmultiz ' .. curheight .. ' ' .. curdepth .. '&amp;quot;')&lt;br /&gt;
  table.insert(keybinding_list, 'Shift-Enter@dwarfmode/Build/Material/Groups &amp;quot;constructmultiz ' .. curheight .. ' ' .. curdepth .. '&amp;quot;')&lt;br /&gt;
  return keybinding_list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function constructMultiZPowerState(enable)&lt;br /&gt;
    for bindingi=1, #keybinding_list do&lt;br /&gt;
        dfhack.run_command_silent(&amp;quot;keybinding &amp;quot; .. (enable and &amp;quot;add &amp;quot; or &amp;quot;clear &amp;quot;)  .. keybinding_list[bindingi])&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
curheight, curdepth = getCurHeightAndDepth()&lt;br /&gt;
keybinding_list = initBindings()&lt;br /&gt;
&lt;br /&gt;
if argsline:find(&amp;quot;unbind&amp;quot;) then&lt;br /&gt;
    constructMultiZPowerState(false)&lt;br /&gt;
    qerror(&amp;quot;&amp;quot;)&lt;br /&gt;
elseif argsline:find(&amp;quot;bindings&amp;quot;) then&lt;br /&gt;
   for bindingi=1, #keybinding_list do&lt;br /&gt;
       dfhack.println(keybinding_list[bindingi])&lt;br /&gt;
   end&lt;br /&gt;
   dfhack.println('(Internal with gui) Ctrl-A@dwarfmode/Build/Type &amp;quot;constructmultiz display adjust height&amp;quot;')&lt;br /&gt;
   dfhack.println('(Internal with gui) Ctrl-B@dwarfmode/Build/Type &amp;quot;constructmultiz display adjust depth&amp;quot;')&lt;br /&gt;
   qerror(&amp;quot;&amp;quot;)&lt;br /&gt;
elseif argsline:find(&amp;quot;bind&amp;quot;) then&lt;br /&gt;
    constructMultiZPowerState(true)&lt;br /&gt;
    qerror(&amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if argsline:find(&amp;quot;display&amp;quot;) then&lt;br /&gt;
  local function adjustbinds(height, depth)&lt;br /&gt;
    constructMultiZPowerState(false)&lt;br /&gt;
    --first, remove old binds&lt;br /&gt;
    curheight = height+curheight&lt;br /&gt;
    curdepth = depth+curdepth&lt;br /&gt;
    --figure out new heights&lt;br /&gt;
    if curheight &amp;lt; 0 then curheight = 0 end&lt;br /&gt;
    if curdepth &amp;lt; 0 then curdepth = 0 end&lt;br /&gt;
    --if they're negative, limit them to 0&lt;br /&gt;
    keybinding_list = initBindings()&lt;br /&gt;
    --reconstruct binding table&lt;br /&gt;
    constructMultiZPowerState(true)&lt;br /&gt;
    --then add new bindings&lt;br /&gt;
  end&lt;br /&gt;
  local indipresent, indi = pcall(function() return dfhack.script_environment('gui/indicator_screen') end)&lt;br /&gt;
  --attempt to get indicator_screen - not necessarily present.&lt;br /&gt;
&lt;br /&gt;
  local changeHeight --defined below&lt;br /&gt;
  local gui = require 'gui'&lt;br /&gt;
  local dlg = require 'gui.dialogs'&lt;br /&gt;
  function numberprompt (above, initialvalue)&lt;br /&gt;
        local retvalue = tostring(initialvalue)&lt;br /&gt;
        dlg.showInputPrompt(&lt;br /&gt;
            'Change number for ' .. (above and &amp;quot;above&amp;quot; or &amp;quot;below&amp;quot;),&lt;br /&gt;
            ('Enter a new number for the building ' .. (above and 'height:' or 'depth:')), COLOR_GREEN,&lt;br /&gt;
            retvalue,&lt;br /&gt;
            function(changedvalue)&lt;br /&gt;
              changeHeight (above, (tonumber(changedvalue))- (above and curheight or curdepth))&lt;br /&gt;
            end&lt;br /&gt;
        )&lt;br /&gt;
  end&lt;br /&gt;
 if indipresent then&lt;br /&gt;
  local texts&lt;br /&gt;
  changeHeight = function(above, newvalue)&lt;br /&gt;
    if above then&lt;br /&gt;
      adjustbinds(newvalue, 0)&lt;br /&gt;
      texts[3].text = &amp;quot; &amp;quot; .. curheight .. &amp;quot; &amp;quot;&lt;br /&gt;
      texts[3].color = (curheight ~= 0 and 10 or 8)&lt;br /&gt;
    else&lt;br /&gt;
      adjustbinds(0, newvalue)&lt;br /&gt;
      texts[5].text = &amp;quot; &amp;quot; .. curdepth .. &amp;quot; &amp;quot;&lt;br /&gt;
      texts[5].color = (curdepth ~= 0 and 10 or 8)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  texts = {&lt;br /&gt;
  --Building # above and # below was initial text plan&lt;br /&gt;
  --Build # up &amp;amp; # low(Ctrl+A/B) was new, to fit binds &amp;gt;_&amp;gt;&lt;br /&gt;
  {text = &amp;quot;&amp;quot; }, --empty table to adjust signature location 1 up.&lt;br /&gt;
  {text = &amp;quot;Build&amp;quot;, notEndOfLine = true},&lt;br /&gt;
  {text = &amp;quot; &amp;quot; .. curheight .. &amp;quot; &amp;quot;, color = (curheight ~= 0 and 10 or 8), notEndOfLine = true,&lt;br /&gt;
   onclick = function() changeHeight(true,1) end, onrclick = function() changeHeight(true,-1) end},&lt;br /&gt;
  {text = &amp;quot;up &amp;amp;&amp;quot;, notEndOfLine = true},&lt;br /&gt;
  {text = &amp;quot; &amp;quot; .. curdepth .. &amp;quot; &amp;quot;, color = (curdepth ~= 0 and 10 or 8), notEndOfLine = true,&lt;br /&gt;
   onclick = function() changeHeight(false,1) end, onrclick = function() changeHeight(false,-1) end},&lt;br /&gt;
  {text = &amp;quot;low(&amp;quot;, notEndOfLine = true},&lt;br /&gt;
  {text = &amp;quot;Ctrl+A&amp;quot;, color = 12, notEndOfLine = true, onclick = function() numberprompt(true, curheight) end},&lt;br /&gt;
  {text = &amp;quot;/&amp;quot;, color = 4, notEndOfLine = true, onclick = function() numberprompt(false, curheight) end},&lt;br /&gt;
  {text = &amp;quot;B&amp;quot;, color = 12, notEndOfLine = true, onclick = function() numberprompt(false, curheight) end},&lt;br /&gt;
  {text = &amp;quot;)&amp;quot;},&lt;br /&gt;
  color = 7&lt;br /&gt;
  }&lt;br /&gt;
  if indi.indicator_screen_version &amp;gt;= 1.1 then&lt;br /&gt;
    texts.onhoverfunction = function()&lt;br /&gt;
      dfhack.screen.paintString(2, df.global.gps.dimx-30,df.global.gps.dimy -7,&amp;quot;(r-)click to nudge numbers&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  local newscreen = indi.getScreen(texts, {x = -30, y = -7})&lt;br /&gt;
  function newscreen:onResize() self:adjustDims(true, -30, -7) end --ordinary resize maintains topleft position&lt;br /&gt;
  --newscreen.signature = false --would otherwise cover date indicator&lt;br /&gt;
  local oldInput = newscreen.onInput&lt;br /&gt;
  local function repeatfunction(rfunc, stopconditionfunc, N)&lt;br /&gt;
    --takes two functions and number N, evalutes second every N frames until it is true, then calls first.&lt;br /&gt;
    local myrfunc&lt;br /&gt;
    myrfunc = function ()&lt;br /&gt;
      dfhack.timeout(N, &amp;quot;frames&amp;quot;, function()&lt;br /&gt;
         if stopconditionfunc() then rfunc() else myrfunc() end&lt;br /&gt;
       end)&lt;br /&gt;
    end&lt;br /&gt;
    myrfunc()&lt;br /&gt;
  end&lt;br /&gt;
 &lt;br /&gt;
  local function isInBuildType()&lt;br /&gt;
    return dfhack.gui.getFocusString(df.global.gview.view.child):find(&amp;quot;dwarfmode/Build/Type&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
  local notincountdown = true&lt;br /&gt;
  local function multizonInput(self, keys)&lt;br /&gt;
    oldInput(self, keys)&lt;br /&gt;
    if (dfhack.gui.getFocusString(df.global.gview.view.child):find(&amp;quot;dwarfmode/Build/Position/Construction&amp;quot;)&lt;br /&gt;
    or (keys.SELECT and&lt;br /&gt;
        dfhack.gui.getFocusString(df.global.gview.view.child):find(&amp;quot;dwarfmode/Build/Material/Groups&amp;quot;) ) )&lt;br /&gt;
        and notincountdown then&lt;br /&gt;
        notincountdown = false&lt;br /&gt;
        texts[1].text = &amp;quot;Hiding this indicator in 2&amp;quot;&lt;br /&gt;
        texts[1].color = 12&lt;br /&gt;
        dfhack.timeout(math.floor(df.global.enabler.fps), &amp;quot;frames&amp;quot;, function()&lt;br /&gt;
         texts[1].text = &amp;quot;Hiding this indicator in 1&amp;quot; end)&lt;br /&gt;
        dfhack.timeout(math.floor(2*df.global.enabler.fps), &amp;quot;frames&amp;quot;, function()&lt;br /&gt;
         texts[1].text = &amp;quot;&amp;quot;&lt;br /&gt;
         if indi.indicator_screen_version &amp;gt;= 1.1 then&lt;br /&gt;
           self._native.parent.child = nil&lt;br /&gt;
           repeatfunction(function()&lt;br /&gt;
             indi.placeOnTop(self._native)&lt;br /&gt;
             notincountdown = true&lt;br /&gt;
             end, isInBuildType, 10)&lt;br /&gt;
         else self:dismiss() end&lt;br /&gt;
        end)&lt;br /&gt;
    end&lt;br /&gt;
    if keys.CUSTOM_CTRL_A then&lt;br /&gt;
    numberprompt(true, curheight) --adusting height&lt;br /&gt;
    elseif keys.CUSTOM_CTRL_B then&lt;br /&gt;
    numberprompt(false, curdepth) --adjusting depth&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
    newscreen.onInput = multizonInput&lt;br /&gt;
    newscreen:show()&lt;br /&gt;
 elseif argsline:find(&amp;quot;display adjust&amp;quot;) then&lt;br /&gt;
  changeHeight =&lt;br /&gt;
  function (above, newvalue)&lt;br /&gt;
    if above then&lt;br /&gt;
      adjustbinds(newvalue, 0)&lt;br /&gt;
    else&lt;br /&gt;
      adjustbinds(0, newvalue)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  if argsline:find(&amp;quot;display adjust height&amp;quot;) then&lt;br /&gt;
    numberprompt(true, curheight)&lt;br /&gt;
  elseif argsline:find(&amp;quot;display adjust depth&amp;quot;) then&lt;br /&gt;
    numberprompt(false, curdepth)&lt;br /&gt;
  end&lt;br /&gt;
 else&lt;br /&gt;
   dfhack.run_command('keybinding add Ctrl-A@dwarfmode/Build/Type &amp;quot;constructmultiz display adjust height&amp;quot;')&lt;br /&gt;
   dfhack.run_command('keybinding add Ctrl-B@dwarfmode/Build/Type &amp;quot;constructmultiz display adjust depth&amp;quot;')&lt;br /&gt;
   dfhack.run_command_silent('keybinding clear B@dwarfmode/Default &amp;quot;constructmultiz display&amp;quot;')&lt;br /&gt;
 end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function getFlag(object, flag)&lt;br /&gt;
    -- Utility function for safely requesting info from userdata&lt;br /&gt;
    -- Returns nil if the object doesn't have flag attribute, else returns it's value&lt;br /&gt;
    -- Because well, ordinarily, {}[flag] returns nil.&lt;br /&gt;
    -- However, if object is unit - or some other type, it may instead throw an error&lt;br /&gt;
    local a = {}&lt;br /&gt;
    if not object or not flag then return nil end&lt;br /&gt;
        --Crash is still possible for attempting to pairs a nil&lt;br /&gt;
    for index, value in pairs(object) do&lt;br /&gt;
        a[index] = value&lt;br /&gt;
    end&lt;br /&gt;
    local returnvalue = a[flag]&lt;br /&gt;
    a = nil --lua automatically garbage cleans tables without variable that links to them.&lt;br /&gt;
    return returnvalue&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local context = dfhack.gui.getCurFocus()&lt;br /&gt;
if #args == 2 and (&lt;br /&gt;
   not (context:find(&amp;quot;dwarfmode/Build/Position/FarmPlot&amp;quot;)&lt;br /&gt;
    or context:find(&amp;quot;dwarfmode/Build/Position/RoadDirt&amp;quot;)&lt;br /&gt;
    or context:find(&amp;quot;dwarfmode/Build/Material/Groups&amp;quot;) )) then&lt;br /&gt;
    --Because one can choose multiple materials with enter, the script should only launch after last material&lt;br /&gt;
function getBuildingTypeIndex(building_type_name)&lt;br /&gt;
  local simplename = building_type_name&lt;br /&gt;
   :gsub(&amp;quot;_.&amp;quot;, string.upper)&lt;br /&gt;
     :gsub(&amp;quot;_&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
       :gsub(&amp;quot;&amp;lt;building&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
         :gsub(&amp;quot;st:.*&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
  if df.building_type[simplename] then return df.building_type[simplename] end&lt;br /&gt;
--above fails for &amp;lt;building_farmplotst: 0xetcetera&amp;gt; resulting in Farmplot instead of FarmPlot, so...&lt;br /&gt;
  for i = df.building_type._first_item, df.building_type._last_item do&lt;br /&gt;
    if df.building_type[i]:lower() == simplename:lower() then&lt;br /&gt;
      return i&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local zpositive = tonumber(args[1]) -- 0 0 should equal nothing being done&lt;br /&gt;
local znegative = tonumber(args[2])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if zpositive &amp;gt; 0 or znegative &amp;gt; 0 then&lt;br /&gt;
&lt;br /&gt;
local buildings = require('dfhack.buildings')&lt;br /&gt;
--never used that local, so idk how useful it is *shrug*&lt;br /&gt;
&lt;br /&gt;
    --copy1building takes a preexisting building and orders a really similar thing built x zlevels above or below&lt;br /&gt;
    --its' called in a for loop, so better take variable declarations out of it when reasonable&lt;br /&gt;
local flippedPumps = 0 -- for multiz pumpstacks&lt;br /&gt;
local bd, argumenttable&lt;br /&gt;
local usemyfilterbuildings = {} -- Small list that gets special handling.&lt;br /&gt;
usemyfilterbuildings[df.building_type.RoadPaved] = true --Paved Road&lt;br /&gt;
usemyfilterbuildings[df.building_type.Bridge] = true --Bridge&lt;br /&gt;
usemyfilterbuildings[df.building_type.WindowGem] = true --Gem Window&lt;br /&gt;
usemyfilterbuildings[df.building_type.Weapon] = true --Upright weapon&lt;br /&gt;
usemyfilterbuildings[df.building_type.Bookcase] = true --Bookcase&lt;br /&gt;
local tostring2 = tostring&lt;br /&gt;
local tadd = table.insert    --tadd is less missleading than tin or tins&lt;br /&gt;
function copy1building(lbd, zoffset)&lt;br /&gt;
    bd = {}&lt;br /&gt;
    bd.x = lbd.x1&lt;br /&gt;
    bd.width = 1+lbd.x2-lbd.x1&lt;br /&gt;
    bd.height = 1+lbd.y2-lbd.y1&lt;br /&gt;
    bd.y = lbd.y1&lt;br /&gt;
    bd.z = lbd.z+zoffset&lt;br /&gt;
&lt;br /&gt;
    bd.type = getBuildingTypeIndex(tostring2(lbd))&lt;br /&gt;
    if getFlag(lbd, &amp;quot;type&amp;quot;) then bd.subtype = lbd.type&lt;br /&gt;
    elseif getFlag(lbd, &amp;quot;trap_type&amp;quot;) then bd.subtype = lbd.trap_type&lt;br /&gt;
    elseif getFlag(lbd, &amp;quot;bait_type&amp;quot;) then bd.subtype = lbd.bait_type end&lt;br /&gt;
    if getFlag(lbd, &amp;quot;custom_type&amp;quot;) then bd.custom = lbd.custom_type end&lt;br /&gt;
    --bd.items = {df.item.find(22603)}    --how to build with items instead&lt;br /&gt;
    bd.filters = {}&lt;br /&gt;
&lt;br /&gt;
    if not (usemyfilterbuildings[bd.type]&lt;br /&gt;
        or (bd.type == df.building_type.Trap and bd.subtype == 4 )) then -- All traps other than weapon trap&lt;br /&gt;
        argumenttable = {material = {mat_type = lbd.mat_type, mat_index = lbd.mat_index,}}&lt;br /&gt;
        if getFlag(lbd.jobs[0].items, 0) then&lt;br /&gt;
          argumenttable.material.item_type =&lt;br /&gt;
            df.item_type[tostring2(lbd.jobs[0].items[0].item):gsub(&amp;quot;st:.*&amp;quot;,&amp;quot;&amp;quot;):gsub(&amp;quot;&amp;lt;item_&amp;quot;,&amp;quot;&amp;quot;):upper()]&lt;br /&gt;
        end&lt;br /&gt;
        local getfilters = dfhack.buildings.getFiltersByType(argumenttable, bd.type, bd.subtype, bd.custom)&lt;br /&gt;
            --TODO: Figure out if fixing ash with item_type breaks anything due first item being not as intended&lt;br /&gt;
            -- i.e. mat_index and mat_type legal mismatch.&lt;br /&gt;
            --roads, maybe?&lt;br /&gt;
            --if it is in order of age, maybe constructing ashery with ash bar and newer/older bucket?&lt;br /&gt;
            --ditto for weapon traps and such.&lt;br /&gt;
            --farm plot and dirt road doesn't have any items.&lt;br /&gt;
&lt;br /&gt;
    --[=====[ Machinery:&lt;br /&gt;
            --lever, gear assembly, roller report unknown material?&lt;br /&gt;
            -- Specificaly, for unknown mat gear assembly item_type and vector_id get passed, mat_type and mat_index not&lt;br /&gt;
            -- The worker picks the mechanism closest to them, not closest to building site or newest or oldest.&lt;br /&gt;
            -- Weapons:&lt;br /&gt;
            -- upright spears only request 1 spike, weapon traps 1 any mechanism and 1 any weapon.&lt;br /&gt;
            -- Multi-mat buildings:&lt;br /&gt;
            -- Gem windows only request quantity 3 any small gem of first? newest? base material? Works fine, though&lt;br /&gt;
            -- roads have same trouble AND soap+boulder road doesn't get design.flags.rough = true&lt;br /&gt;
            -- bridges probably too&lt;br /&gt;
            -- The lack of item type (being set to -1) might also be a problem. Can specify it via job items tho.&lt;br /&gt;
            -- Also at least the road doesn't use willy-nilly highwood non-logs, so there's that.&lt;br /&gt;
&lt;br /&gt;
            --for bucket/weapon/mechanism/etc. it only specifies appropriate item type, vector id and flags, not material&lt;br /&gt;
            --q: do I want to restrict these when mass-producing?&lt;br /&gt;
            --a: weapon and mechanism maybe. anvil def not. screw, pipe, chain, bucket, barrel eh.&lt;br /&gt;
&lt;br /&gt;
            --instrument is untested&lt;br /&gt;
&lt;br /&gt;
            --]=====]&lt;br /&gt;
        if getfilters then&lt;br /&gt;
        --some cases, it can't get filters.&lt;br /&gt;
         for i=1, #getfilters do&lt;br /&gt;
          tadd(bd.filters,&lt;br /&gt;
          getfilters[i])&lt;br /&gt;
         end&lt;br /&gt;
            else&lt;br /&gt;
             qerror(&amp;quot;Can't find appropriate building materials for building &amp;quot; .. tostring2(lbd))&lt;br /&gt;
        end&lt;br /&gt;
    elseif bd.type == df.building_type.Bookcase then --bookcase&lt;br /&gt;
        tadd(bd.filters, {&lt;br /&gt;
        item_type = df.item_type.TOOL,&lt;br /&gt;
        item_subtype = lbd.jobs[0].items[0].item.subtype.subtype,&lt;br /&gt;
        has_tool_use = lbd.jobs[0].items[0].item.subtype.tool_use[0], --both of these are unnecessary tbh.&lt;br /&gt;
        mat_index = lbd.mat_index,&lt;br /&gt;
        mat_type = lbd.mat_type,&lt;br /&gt;
        new = true&lt;br /&gt;
        })&lt;br /&gt;
    elseif bd.type == df.building_type.RoadPaved or&lt;br /&gt;
           bd.type == df.building_type.Bridge or&lt;br /&gt;
           bd.type == df.building_type.WindowGem then&lt;br /&gt;
      for itemindex = 0, #lbd.jobs[0].items-1 do&lt;br /&gt;
        tadd(bd.filters, {&lt;br /&gt;
        item_type = df.item_type[tostring2(lbd.jobs[0].items[itemindex].item)&lt;br /&gt;
                                  :gsub(&amp;quot;st:.*&amp;quot;,&amp;quot;&amp;quot;):gsub(&amp;quot;&amp;lt;item_&amp;quot;,&amp;quot;&amp;quot;):upper()],&lt;br /&gt;
        mat_index = lbd.jobs[0].items[itemindex].item.mat_index,&lt;br /&gt;
        mat_type = lbd.jobs[0].items[itemindex].item.mat_type,&lt;br /&gt;
        quantity = 1,&lt;br /&gt;
        new = true,&lt;br /&gt;
        flags2 = (bd.type ~= df.building_type.WindowGem and {building_material = true, non_economic = false} or nil)&lt;br /&gt;
        })&lt;br /&gt;
      end&lt;br /&gt;
    elseif bd.type == df.building_type.Trap and bd.subtype == 4&lt;br /&gt;
        or bd.type == df.building_type.Weapon then&lt;br /&gt;
        --Weapon traps or upright weapons&lt;br /&gt;
        --How specific do I want to be with those two?&lt;br /&gt;
        --First is the matter of component weapon.&lt;br /&gt;
        --Second is the matter of mechanism.&lt;br /&gt;
        --When the hell does one even buid multiple zs of weapon traps?&lt;br /&gt;
        --When building snaking dodge-me setups, perhaps.&lt;br /&gt;
        --In that case, would want same quality mechanism (impossible)&lt;br /&gt;
        --And either random weapons made from goblinite or all serrated glass discs and such.&lt;br /&gt;
        --The latter is more important to not screw up than the former.&lt;br /&gt;
        local itemfilter&lt;br /&gt;
      for itemindex = 0, #lbd.jobs[0].items-1 do&lt;br /&gt;
       itemfilter = {&lt;br /&gt;
        item_type = df.item_type[tostring2(lbd.jobs[0].items[itemindex].item)&lt;br /&gt;
                                  :gsub(&amp;quot;st:.*&amp;quot;,&amp;quot;&amp;quot;):gsub(&amp;quot;&amp;lt;item_&amp;quot;,&amp;quot;&amp;quot;):upper()],&lt;br /&gt;
        quantity = 1,&lt;br /&gt;
        new = true&lt;br /&gt;
       }&lt;br /&gt;
       if itemfilter.item_type == df.item_type.TRAPPARTS then&lt;br /&gt;
            --Keep grabbing random closest mechanism.&lt;br /&gt;
        itemfilter.vector_id = df.job_item_vector_id.TRAPPARTS --probs unnecessary&lt;br /&gt;
       else&lt;br /&gt;
            --Utilize weapon or trapcomp with exact same material and type.&lt;br /&gt;
        itemfilter.mat_index = lbd.jobs[0].items[itemindex].item.mat_index&lt;br /&gt;
        itemfilter.mat_type = lbd.jobs[0].items[itemindex].item.mat_type&lt;br /&gt;
        itemfilter.item_subtype = lbd.jobs[0].items[itemindex].item.subtype.subtype&lt;br /&gt;
       end&lt;br /&gt;
        tadd(bd.filters, itemfilter)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    local createdbuilding = dfhack.buildings.constructBuilding(bd)&lt;br /&gt;
    --Here is where I would have to reorient pumps, rollers, bridges, horizontal axles, water wheels&lt;br /&gt;
    -- Also, I'm getting inconsistencent failures now.&lt;br /&gt;
      if createdbuilding then&lt;br /&gt;
    if getFlag(createdbuilding,&amp;quot;direction&amp;quot;) then --pump, roller, bridge&lt;br /&gt;
        createdbuilding.direction = lbd.direction&lt;br /&gt;
        if bd.type == df.building_type.ScrewPump then&lt;br /&gt;
            --flip screw pump around&lt;br /&gt;
            createdbuilding.direction = (createdbuilding.direction +2*(1+flippedPumps) ) % 4&lt;br /&gt;
            flippedPumps = 1+flippedPumps&lt;br /&gt;
        end&lt;br /&gt;
        if bd.type == df.building_type.Rollers and lbd.speed ~= 50000 then&lt;br /&gt;
            --roller speed adjusment, if necessary&lt;br /&gt;
            createdbuilding.speed = lbd.speed&lt;br /&gt;
        end&lt;br /&gt;
    elseif getFlag(createdbuilding,&amp;quot;is_vertical&amp;quot;) ~= nil then --horizontal axle, water wheel&lt;br /&gt;
        --need to fix both orientation and dimensions&lt;br /&gt;
        createdbuilding.is_vertical = lbd.is_vertical&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if getFlag(createdbuilding, &amp;quot;friction&amp;quot;) then&lt;br /&gt;
        --probably just track stops, but gets given to all traps at least&lt;br /&gt;
        createdbuilding.friction = lbd.friction&lt;br /&gt;
        if getFlag(createdbuilding, &amp;quot;dump_x_shift&amp;quot;) then --track stop dump direction&lt;br /&gt;
            createdbuilding.dump_x_shift = lbd.dump_x_shift&lt;br /&gt;
            createdbuilding.dump_y_shift = lbd.dump_y_shift&lt;br /&gt;
            createdbuilding.use_dump = lbd.use_dump&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if bd.type == 23 and bd.subtype == 1 then --pressure plate&lt;br /&gt;
        for index, v in pairs(createdbuilding.plate_info) do&lt;br /&gt;
            if index ~= &amp;quot;flags&amp;quot; then&lt;br /&gt;
                --set all plate setting to prototype's&lt;br /&gt;
                createdbuilding.plate_info[index] = lbd.plate_info[index]&lt;br /&gt;
            else&lt;br /&gt;
                for flagname, flagstate in pairs(v) do&lt;br /&gt;
                    --set all plate enabled states to prototype's&lt;br /&gt;
                    createdbuilding.plate_info[index][flagname] = lbd.plate_info[index][flagname]&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if bd.type == df.building_type.RoadPaved or --Paved road&lt;br /&gt;
       bd.type == df.building_type.Bridge then  --Bridge&lt;br /&gt;
    -- Buildings for which using boulders changes appearance.&lt;br /&gt;
    -- Could also pick and iterate through the design of any architecture,&lt;br /&gt;
    -- but that shouldn't be necessary.&lt;br /&gt;
        createdbuilding.design.flags.rough = lbd.design.flags.rough&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if (getFlag(createdbuilding,&amp;quot;is_vertical&amp;quot;) or getFlag(createdbuilding,&amp;quot;direction&amp;quot;) )&lt;br /&gt;
    and bd.type ~= df.building_type.Bridge then --bridges are already perfect in x and y&lt;br /&gt;
        createdbuilding.x1 = lbd.x1&lt;br /&gt;
        createdbuilding.y1 = lbd.y1&lt;br /&gt;
        createdbuilding.x2 = lbd.x2&lt;br /&gt;
        createdbuilding.y2 = lbd.y2&lt;br /&gt;
    end&lt;br /&gt;
    createdbuilding.centerx = lbd.centerx&lt;br /&gt;
    createdbuilding.centery = lbd.centery&lt;br /&gt;
    --constructbuilding tends to round center up where df rounds down.&lt;br /&gt;
    if flippedPumps % 2 ~= 0 and bd.type == df.building_type.ScrewPump then&lt;br /&gt;
      --screw pump direction was swapped, so it'd center tile has to be swapped as well&lt;br /&gt;
      --otherwise dwarf tries to build it on impassable tile.&lt;br /&gt;
     if createdbuilding.direction % 2 == 0 then --northsouth&lt;br /&gt;
       createdbuilding.centery = createdbuilding.centery == createdbuilding.y1 and createdbuilding.y2 or createdbuilding.y1&lt;br /&gt;
     else --eastwest&lt;br /&gt;
       createdbuilding.centerx = createdbuilding.centerx == createdbuilding.x1 and createdbuilding.x2 or createdbuilding.x1&lt;br /&gt;
     end&lt;br /&gt;
    end&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lenb = #df.global.world.buildings.all --changes during usage so must save beforehand&lt;br /&gt;
local w,h&lt;br /&gt;
if getBuildingTypeIndex(tostring(df.global.world.buildings.all[lenb-1])) ~= 34 then&lt;br /&gt;
  --not construction&lt;br /&gt;
  w, h = 1,1&lt;br /&gt;
else&lt;br /&gt;
  w = df.global.world.building_width&lt;br /&gt;
  h = df.global.world.building_height&lt;br /&gt;
end&lt;br /&gt;
  for i = 1, w*h do&lt;br /&gt;
   if zpositive &amp;gt; 0 then&lt;br /&gt;
    for zoff = 1, zpositive do&lt;br /&gt;
      copy1building(df.global.world.buildings.all[lenb-i],zoff)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
   if znegative &amp;gt; 0 then&lt;br /&gt;
    for zoff = -1, -znegative, -1 do&lt;br /&gt;
      copy1building(df.global.world.buildings.all[lenb-i],zoff)&lt;br /&gt;
    end&lt;br /&gt;
   end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fleeting Frames</name></author>
	</entry>
</feed>