<?xml version="1.0"?>
<rss version="2.0"><channel><title/><link>https://www.loverslab.com/blogs/blog/2790-mcgufin/</link><description><![CDATA[<p style="background-color:#1c1c1c; color:#bcbcbc; font-size:14px; text-align:start">
	Monoman's Common General Utility Framework &amp; Interface Node (Preview)
</p>

<p style="background-color:#1c1c1c; color:#bcbcbc; font-size:14px; text-align:start">
	(MCGUFIN or MGF for short)
</p>

<p style="background-color:#1c1c1c; color:#bcbcbc; font-size:14px; text-align:start">
	 
</p>

<p style="background-color:#1c1c1c; color:#bcbcbc; font-size:14px; text-align:start">
	Because MGF's application has become very broad I've decided to create this blog to serve a number of purposes: 
</p>

<ul>
	<li style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
		Introduce the various aspects of MGF in a more approachable fashion. 
	</li>
	<li style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
		Ease you in, hopefully without scaring the bejesus out of you. 
	</li>
	<li style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
		Serve as a sort of entry point lookup for MGF - "I'm looking for location information. Where do  I start?". 
	</li>
	<li style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
		Showcase the frameworks wide gamut of capabilities. 
	</li>
</ul>

<p style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
	 
</p>

<p style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
	I'll upload more stuff or flesh out the various existing sections as I go. 
</p>

<p style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
	There's still quite a bit left out at this point. I'll add more as I'm more confident in a feature or make it a bit more presentable/organized. 
</p>

<p style="background-color: rgb(28, 28, 28); color: rgb(188, 188, 188); font-size: 14px; text-align: start;">
	<br>
	Note: All of this is subject to change! 
</p>
]]></description><language>en</language><item><title>Load Order Monitor</title><link>https://www.loverslab.com/blogs/entry/26168-load-order-monitor/</link><description><![CDATA[<p>
	I've often wondered how many OnPlayerLoadGame events are fired when you load a save. A huge chunk of these would be compatibility checks. <br>
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9754_13" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnPlayerLoadGame</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="str">"CoolMod.esp"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CoolMod</span><span class="pln"> is installed</span><span class="pun">.</span><span class="pln"> 
        </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Do</span><span class="pln"> </span><span class="typ">Stuff</span><span class="pun">.</span><span class="pln">
        
	</span><span class="typ">Else</span><span class="pln">
    	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CoolMod</span><span class="pln"> is not installed</span><span class="pun">.</span><span class="pln">
        </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Do</span><span class="pln"> other stuff</span><span class="pun">.</span><span class="pln">
    </span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

<p>
	<br>
	Inefficient - How many of these checks end up doing nothing really? - Yup 'CoolMod.esp' still IS or is NOT installed. What percentage of save loads has your load order actually changed?
</p>

<p>
	And it leads to a huge spike in papyrus activity right when you kind of don't want it. <br>
	<br>
	Alternatively you can register with MGF for load order change events and it will let you know when you need to check for real. <br>
	<br>
	Usage: <br>
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9754_45" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LoadOrderChanged"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LoadOrderChanged"</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

<p>
	 
</p>

<p>
	Now any time mods:
</p>

<ul>
	<li>
		are added. 
	</li>
	<li>
		removed.
	</li>
	<li>
		the order of mods changed (nothing was necessarily added or removed). 
	</li>
	<li>
		the modified timestamp has changed on a plugin file. 
	</li>
	<li>
		Something's actually changed. 
	</li>
</ul>

<p>
	 
</p>

<p>
	You'll get this event: <br>
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1087_6" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LoadOrderChanged</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">OrderChanged</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsModified</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">OrderChanged</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> order has simply changed since last load</span><span class="pun">.</span><span class="pln"> 
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mods</span><span class="pln"> were added since the last load</span><span class="pun">.</span><span class="pln"> 
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mods</span><span class="pln"> were removed since last load</span><span class="pun">.</span><span class="pln"> 
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">ModsModified</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">At</span><span class="pln"> least one </span><span class="kwd">of</span><span class="pln"> the plugin files has been modified since the last load</span><span class="pun">.</span><span class="pln"> 
    
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">All</span><span class="pln"> these flags are </span><span class="kwd">set</span><span class="pln"> individually </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pln"> and </span><span class="typ">ModsRemoved</span><span class="pln"> could both be </span><span class="kwd">true</span><span class="pun">!</span><span class="pln"> 
</span><span class="typ">EndFunction</span></pre>

<p>
	 
</p>

<p>
	You can use these functions to pull a list of what's changed: <br>
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9754_49" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a string array </span><span class="kwd">of</span><span class="pln"> the mods added since last load</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAddedMods</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a string array </span><span class="kwd">of</span><span class="pln"> the mods removed since last load</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRemovedMods</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a string array </span><span class="kwd">of</span><span class="pln"> the mods modifed </span><span class="pun">(</span><span class="pln">time modified check</span><span class="pun">)</span><span class="pln"> since last load</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> detects changes to the esp</span><span class="pun">.</span><span class="pln"> </span><span class="typ">And</span><span class="pln"> not changes to scripts </span><span class="pun">(</span><span class="pln">unless properties were changed</span><span class="pun">).</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetModifiedMods</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

<p>
	 
</p>

<p>
	Additional functions that might be useful: <br>
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9754_51" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a string array </span><span class="kwd">of</span><span class="pln"> the current load order</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCurrentLoadOrder</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a string array </span><span class="kwd">of</span><span class="pln"> the previous load order</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPreviousLoadOrder</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

<p>
	 
</p>

<p>
	Example usage: <br>
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9754_43" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LoadOrderChanged</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">OrderChanged</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsModified</span><span class="pun">)</span><span class="pln">
    </span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pln">
        </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">AddedMods</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetAddedMods</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">AddedMods</span><span class="pun">.</span><span class="typ">Find</span><span class="pun">(</span><span class="str">"CoolArmorMod.esp"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln">
			</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Cool</span><span class="pln"> armor mod added</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Add</span><span class="pln"> it</span><span class="str">'</span><span class="pln">s armors to my shop</span><span class="pun">!</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
    </span><span class="typ">EndIf</span><span class="pln">
    
    </span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pln">
        </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">RemovedMods</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetRemovedMods</span><span class="pun">()</span><span class="pln">
        </span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Notification</span><span class="pun">(</span><span class="str">"Removed "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">RemovedMods</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" mods"</span><span class="pun">)</span><span class="pln">
    </span><span class="typ">EndIf</span><span class="pln">
    
    </span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModsModified</span><span class="pln">
        </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModifiedMods</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetModifiedMods</span><span class="pun">()</span><span class="pln">
        </span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModifiedMods</span><span class="pun">.</span><span class="typ">Find</span><span class="pun">(</span><span class="str">"CoolArmorMod.esp"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln">
			</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">CoolArmorMod</span><span class="pun">.</span><span class="pln">esp added a </span><span class="kwd">new</span><span class="pln"> armor </span><span class="kwd">set</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> my shop</span><span class="pun">!</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
    </span><span class="typ">EndIf</span><span class="pln">
    
    </span><span class="typ">If</span><span class="pln"> </span><span class="typ">OrderChanged</span><span class="pln">
        </span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Notification</span><span class="pun">(</span><span class="str">"Load order was rearranged"</span><span class="pun">)</span><span class="pln">
        </span><span class="typ">HandleOrderChange</span><span class="pun">()</span><span class="pln">
    </span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

<p>
	 
</p>

<p>
	This load order event is used extensively in MGF's interface scripts. 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26168</guid><pubDate>Tue, 18 Aug 2026 00:57:19 +0000</pubDate></item><item><title>LocOps</title><link>https://www.loverslab.com/blogs/entry/26166-locops/</link><description><![CDATA[<p>
	LocOps - Location Operations - The yellow pages of Skyrim. <br>
	<br>
	Get information about the area you're in. The system is data driven and can be expanded via Json. I've already got one for JK's Skyrim. Multiple jsons are 'rolled together' for a complete picture. 
</p>

<p>
	 
</p>

<p>
	Highlights: 
</p>

<ul>
	<li>
		Look up people by roles/location, Jarl's, Stewards, House carls, Court wizards, Inn keepers, blacksmiths, shop keepers, etc. 
	</li>
	<li>
		Respects civil war status. 
	</li>
	<li>
		Location agnostic. You don't need to know where the player is. MGF will figure that out for you. 
	</li>
	<li>
		Layered area, hold, world scripts/functions. 
	</li>
	<li>
		Slaverun status. 
	</li>
	<li>
		Vanilla home ownership. 
	</li>
	<li>
		Thane status. 
	</li>
	<li>
		Custom roles. You can expand the lookup with custom roles (not Jarl, Blacksmith etc) via Json. Eg: 'Tailor'. Again duplicate roles will be rolled together. 
	</li>
	<li>
		Coming soon: Get the closest whatever - Example in LocOpsWorld. 
	</li>
</ul>

<p>
	 
</p>

<p>
	2 'Points Of Interest' quests - (Area / Hold) with aliases that are automatically populated on area/hold change: <br>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="2654458" data-ratio="70.98" data-unique="n815tos9x" width="758" alt="image.png" src="https://www.loverslab.com/uploads/monthly_2026_08/image.png.b3e713a787b8ec4bd1578ca7bd09439d.png">
</p>

<p>
	 
</p>

<p>
	Some of these I'm still cleaning up. 
</p>

<p>
	<br>
	LocOpsArea: <br>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3715_6" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_LocOpsArea extends </span><span class="typ">Quest</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> yellow pages </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Skyrim</span><span class="pln"> </span><span class="pun">(</span><span class="pln">local area edition</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;========================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">User</span><span class="pln"> </span><span class="typ">Functions</span><span class="pln"> </span><span class="pun">========================================================================</span><span class="pln">
</span><span class="pun">;========================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Should</span><span class="pln"> probably stick to calling </span><span class="str">'user functions'</span><span class="pln"> only</span><span class="pun">.</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Primary</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Editor</span><span class="pln"> ID</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Anywhere</span><span class="pln"> in </span><span class="typ">Riverwood</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'RiverwoodLocation'</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Walled</span><span class="pln"> cities are the exception</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Inside</span><span class="pln"> city walls </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Primary</span><span class="pln"> location editor ID</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Anywhere</span><span class="pln"> inside </span><span class="typ">Whiterun</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'WhiterunLocation'</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Outside</span><span class="pln"> city walls are </span><span class="str">'&lt;City&gt;Outskirts'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="str">'WhiterunOutskirts'</span><span class="pln">

</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">UpdatePointsOfInterest</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">BeginPoiUpdate</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownByString</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> free
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> enslaved

	_MGF_LocOpsArea_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">Handler</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> dedicated handler </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">.</span><span class="pln"> 
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fall</span><span class="pln"> back to the hold</span><span class="str">'</span><span class="pln">s overall enslavement status rather than defaulting straight to </span><span class="str">"free"</span><span class="pun">.</span><span class="pln"> 
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="str">"Wilderness"</span><span class="pln">
			</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetIsSlaverunFreeHoldByString</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetHoldStateNameForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		</span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">IsSlaverunFreeTown</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownByIndex</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownByString</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNameByIndex</span><span class="pun">(</span><span class="typ">Index</span><span class="pun">))</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownByString</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">OwnsVanillaHomeHere</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLeaderForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the guy in charge</span><span class="pun">.</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> big cheese</span><span class="pun">.</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> head honcho</span><span class="pun">.</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> main cahone</span><span class="pun">.</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Main</span><span class="pln"> towns </span><span class="pun">-</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> is always going to be the jarl</span><span class="pun">.</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Orc</span><span class="pln"> strongholds </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> orc chief
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetLeader</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLeaderHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetLeaderForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetStewardForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetSteward</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetStewardHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetStewardForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCourtWizardForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetCourtWizard</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCourtWizardHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetCourtWizardForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHousecarlForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetHousecarl</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHousecarlHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHousecarlForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHostlerForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> guy that sells horses</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetHostler</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHostlerHere</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> guy that sells horses</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHostlerForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLicenceOfficerForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">ForkLicence</span><span class="pun">.</span><span class="typ">GetLicenceOfficerForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLicenceOfficerHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetLicenceOfficerForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetDriverForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Carriage</span><span class="pln"> driver
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetDriver</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetDriverHere</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Carriage</span><span class="pln"> driver
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetDriverForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetInnkeepersForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetInnkeepers</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetInnkeepersHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetInnkeepersForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBlacksmithsForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetBlacksmiths</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBlacksmithsHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetBlacksmithsForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetGeneralTradersForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetGeneralTraders</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetGeneralTradersHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetGeneralTradersForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAlchemistsForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetAlchemists</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAlchemistsHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetAlchemistsForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPriestsForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetPriests</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPriestsHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetPriestsForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCustomRoleForArea</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Custom</span><span class="pln"> role lookup </span><span class="kwd">for</span><span class="pln"> third</span><span class="pun">-</span><span class="pln">party mods </span><span class="pun">-</span><span class="pln"> see _MGF_LocOpsArea_Base</span><span class="pun">.</span><span class="typ">GetCustomRole</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> details</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> role name works</span><span class="pun">,</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln"> </span><span class="typ">GetCustomRoleForArea</span><span class="pun">(</span><span class="str">"WindhelmLocation"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Tailor"</span><span class="pun">).</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> changes to </span><span class="kwd">this</span><span class="pln"> script ever required</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Wrapped</span><span class="pln"> in </span><span class="typ">ValidateRefs</span><span class="pun">()</span><span class="pln"> as a safety net</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> two mods use the same role </span><span class="kwd">for</span><span class="pln"> the same location </span><span class="pun">(</span><span class="pln">but different jsons obviously</span><span class="pun">)</span><span class="pln"> then all actors 
	</span><span class="pun">;</span><span class="pln"> from both mods will be rolled into the same role</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Deliberately</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> typed to allow the </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> </span><span class="str">'things'</span><span class="pln"> and not just actors</span><span class="pun">.</span><span class="pln">

	</span><span class="typ">Return</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">ValidateRefs</span><span class="pun">(</span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">).</span><span class="typ">GetCustomRole</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">))</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCustomRoleHere</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetCustomRoleForArea</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">AreaStateName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Internal</span><span class="pln"> </span><span class="typ">Stuff</span><span class="pln"> </span><span class="pun">========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln"> </span><span class="typ">Dispatch</span><span class="pln"> </span><span class="pun">======================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Replaced</span><span class="pln"> the old state machine mechanics which had the potential to mix up requests 
</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">LocOps</span><span class="pln"> ever got clobbered </span><span class="kwd">with</span><span class="pln"> simultaneous requests</span><span class="pun">.</span><span class="pln"> 


_MGF_LocOpsArea_Base </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">Index</span><span class="pln"> is out </span><span class="kwd">of</span><span class="pln"> range </span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pln"> not in the table</span><span class="pun">)</span><span class="pln"> 
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">.</span><span class="typ">Find</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Index</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> as _MGF_LocOpsArea_Base
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">None</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

_MGF_LocOpsArea_Base </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	_MGF_LocOpsArea_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">GenerateAreaStateNames</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GenerateAreaStateNames</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Dynamically</span><span class="pln"> generates </span><span class="typ">AreaStateNames</span><span class="pln"> </span><span class="pun">(</span><span class="pln">all areas </span><span class="kwd">with</span><span class="pln"> a special handler script</span><span class="pun">)</span><span class="pln"> via the alias names</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> forms the </span><span class="lit">1</span><span class="pun">:</span><span class="lit">1</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> to </span><span class="typ">Alias</span><span class="pln"> index handler map</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">()</span><span class="pln">	
	</span><span class="typ">AreaStateNames</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetAliasNames</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Last</span><span class="pln"> alias should always be the </span><span class="kwd">default</span><span class="pln"> </span><span class="pun">(</span><span class="pln">base</span><span class="pun">)</span><span class="pln"> handler</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> an actual area </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Pluck</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">AreaStateNames</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayStringPluck</span><span class="pun">(</span><span class="typ">AreaStateNames</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">BeginPoiUpdate</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fills</span><span class="pln"> the </span><span class="typ">PointsOfInterest</span><span class="pln"> quest </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="str">'</span><span class="pln">s </span><span class="typ">POIs</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Or</span><span class="pln"> clears them </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> is not mapped</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> unknown
		</span><span class="typ">ClearPointsOfInterest</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">FillPointsOfInterest</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FillPointsOfInterest</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
	_MGF_LocOpsArea_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">0</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetLeader</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">1</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetSteward</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">2</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetCourtWizard</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">3</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetHousecarl</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">4</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetHostler</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">5</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">ForkLicence</span><span class="pun">.</span><span class="typ">GetLicenceOfficerForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetInnkeepers</span><span class="pun">/</span><span class="typ">Blacksmiths</span><span class="pun">/</span><span class="typ">GeneralTraders</span><span class="pun">/</span><span class="typ">Alchemists</span><span class="pun">/</span><span class="typ">Priests</span><span class="pln"> already </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">(</span><span class="pln">filtered </span><span class="kwd">for</span><span class="pln"> disabled</span><span class="pun">/</span><span class="pln">dead</span><span class="pun">).</span><span class="pln"> 
	</span><span class="typ">FillAliasArray</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">6</span><span class="pun">],</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetInnkeepers</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
	</span><span class="typ">FillAliasArray</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">7</span><span class="pun">],</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetBlacksmiths</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
	</span><span class="typ">FillAliasArray</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">8</span><span class="pun">],</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetGeneralTraders</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
	</span><span class="typ">FillAliasArray</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">9</span><span class="pun">],</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetAlchemists</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
	</span><span class="typ">FillAliasArray</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="lit">10</span><span class="pun">],</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetPriests</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Helpers</span><span class="pln"> </span><span class="pun">===============================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ClearPointsOfInterest</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesArea</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pln">
		akAlias</span><span class="pun">.</span><span class="typ">ForceRefTo</span><span class="pun">(</span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		akAlias</span><span class="pun">.</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FillAliasArray</span><span class="pun">(</span><span class="typ">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">POIs</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">POIs</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		akAlias</span><span class="pun">.</span><span class="typ">ForceRefTo</span><span class="pun">(</span><span class="typ">POIs</span><span class="pun">[</span><span class="typ">POIs</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Prefer</span><span class="pln"> last element </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Primary</span><span class="pln"> location POI
	</span><span class="typ">Else</span><span class="pln">
		akAlias</span><span class="pun">.</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetSpecialAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Every</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> a dedicated handler script</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">.</span><span class="pln">e</span><span class="pun">.</span><span class="pln"> exactly what </span><span class="typ">GetHandler</span><span class="pun">()</span><span class="pln"> can resolve to something other than </span><span class="typ">DefaultHandler</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBuiltInRoles</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> fixed </span><span class="kwd">set</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> built</span><span class="pun">-</span><span class="pln">in role names</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> the property comment on _MGF_LocOpsArea_PropertyStore</span><span class="pun">.</span><span class="typ">BuiltInRoles</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> the canonical list</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">BuiltInRoles</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> </span><span class="pun">=================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpHandlers</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> walks </span><span class="typ">AreaStateNames</span><span class="pln"> and prints what each alias index actually resolves to</span><span class="pun">.</span><span class="pln"> 
	
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ==== DumpHandlers: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" entries ===="</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		_MGF_LocOpsArea_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> as _MGF_LocOpsArea_Base
		</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Status</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">Handler</span><span class="pln">
			</span><span class="typ">Status</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">" &lt;&lt;&lt; NONE - no script attached to this alias, or wrong script type"</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" -&gt; "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Status</span><span class="pun">)</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] DefaultHandler -&gt; "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ==== DumpHandlers: done ===="</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">


</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpDirectoryFull</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> cycles through every </span><span class="typ">AreaStateName</span><span class="pln"> and calls the real accessor functions 
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="typ">GetLeaderForArea</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetInnkeepersForArea</span><span class="pun">,</span><span class="pln"> etc</span><span class="pun">.)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> the same path an actual caller takes</span><span class="pun">.</span><span class="pln"> 

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ==== DumpDirectoryFull: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" entries ===="</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
		_MGF_LocOpsArea_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> as _MGF_LocOpsArea_Base

		</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">Handler</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" &lt;&lt;&lt; NONE - no script attached to this alias, or wrong script type"</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Else</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" ("</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">")"</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	IsSlaverunFreeTown: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownByString</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	OwnsVanillaHome: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	Leader: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetLeaderForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	Steward: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetStewardForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	CourtWizard: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetCourtWizardForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	Housecarl: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHousecarlForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	Hostler: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHostlerForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	Driver: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetDriverForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]	LicenceOfficer: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetLicenceOfficerForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Innkeepers"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetInnkeepersForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Blacksmiths"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetBlacksmithsForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"GeneralTraders"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetGeneralTradersForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Alchemists"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetAlchemistsForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Priests"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetPriestsForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] DefaultHandler -&gt; "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ==== DumpDirectoryFull: done ===="</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">


</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpDirectoryFromJson</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> reads the FULL location list straight from the authoritative </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json </span><span class="str">"locationstates"</span><span class="pln"> array 
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> every settlement</span><span class="pun">/</span><span class="pln">camp</span><span class="pun">/</span><span class="pln">cabin the game tracks</span><span class="pun">),</span><span class="pln"> rather than the </span><span class="typ">AreaStateNames</span><span class="pln"> property </span><span class="pun">(</span><span class="pln">only the locations </span><span class="kwd">with</span><span class="pln"> a
	</span><span class="pun">;</span><span class="pln"> dedicated handler script</span><span class="pun">).</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Exercises</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">()</span><span class="pln"> and the </span><span class="kwd">default</span><span class="pun">-</span><span class="pln">fallback </span><span class="typ">StorageUtil</span><span class="pln"> path </span><span class="kwd">for</span><span class="pln"> EVERY known area</span><span class="pun">,</span><span class="pln"> not just the
	</span><span class="pun">;</span><span class="pln"> ones </span><span class="kwd">with</span><span class="pln"> a handler

	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">JsonPath</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Data/SKSE/Plugins/StorageUtilData/Mcgufin/Internal/LocationMap.json"</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">AllAreaStates</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_File</span><span class="pun">.</span><span class="typ">JsonStringListGet</span><span class="pun">(</span><span class="typ">JsonPath</span><span class="pun">,</span><span class="pln"> </span><span class="str">"locationstates"</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ==== DumpDirectoryFromJson: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AllAreaStates</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" entries from LocationMap.json ===="</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">AllAreaStates</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">String</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AllAreaStates</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     IsSlaverunFreeTown: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeTownByString</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     OwnsVanillaHome: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     Leader: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetLeaderForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     Steward: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetStewardForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     CourtWizard: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetCourtWizardForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     Housecarl: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHousecarlForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     Hostler: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHostlerForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     Driver: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetDriverForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     LicenceOfficer: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetLicenceOfficerForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Innkeepers"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetInnkeepersForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Blacksmiths"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetBlacksmithsForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"GeneralTraders"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetGeneralTradersForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Alchemists"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetAlchemistsForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Priests"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetPriestsForArea</span><span class="pun">(</span><span class="typ">AreaStateName</span><span class="pun">))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea] ==== DumpDirectoryFromJson: done ===="</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Label</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Helper</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">DumpDirectoryFull</span><span class="pun">()/</span><span class="typ">DumpDirectoryFromJson</span><span class="pun">().</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Joins</span><span class="pln"> an </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> into one readable</span><span class="pun">,</span><span class="pln"> comma</span><span class="pun">-</span><span class="pln">separated log line via
	</span><span class="pun">;</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorNames</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_ArrayCreate</span><span class="pun">.</span><span class="typ">ArrayStringJoin</span><span class="pun">().</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Names</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorNames</span><span class="pun">(</span><span class="pln">akActors</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Names</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Label</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">": (none)"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsArea]     "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Label</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">": "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">ArrayStringJoin</span><span class="pun">(</span><span class="typ">Names</span><span class="pun">,</span><span class="pln"> </span><span class="str">", "</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;==================================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Properties</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;==================================================================================================</span><span class="pln">

_MGF_LocOpsArea_PropertyStore </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Store</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_LocOpsHold </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Attached</span><span class="pln"> to its own alias</span><span class="pun">,</span><span class="pln"> OUTSIDE the </span><span class="lit">0</span><span class="pun">-</span><span class="lit">25</span><span class="pln"> indexed range below </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> alias </span><span class="lit">26</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> just the plain _MGF_LocOpsArea_Base script</span><span class="pun">,</span><span class="pln"> no subclass</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Used</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> any </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> no dedicated handler </span><span class="pun">(</span><span class="pln">mostly </span><span class="str">"Wilderness"</span><span class="pun">),</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> and as the fallback when a real handler</span><span class="str">'</span><span class="pln">s alias is wired wrong</span><span class="pun">.</span><span class="pln">
_MGF_LocOpsArea_Base </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pln"> is computed automatically at </span><span class="typ">OnInit</span><span class="pln"> from the alias
</span><span class="pun">;</span><span class="pln"> names themselves </span><span class="pun">(</span><span class="pln">see </span><span class="typ">GenerateAreaStateNames</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> nothing to
</span><span class="pun">;</span><span class="pln"> fill here directly</span><span class="pun">.</span><span class="pln"> </span><span class="typ">What</span><span class="pln"> actually needs doing in the CK is naming
</span><span class="pun">;</span><span class="pln"> each alias to match the list below exactly</span><span class="pun">,</span><span class="pln"> in order</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Walled</span><span class="pun">-</span><span class="pln">city
</span><span class="pun">;</span><span class="pln"> pairs </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Windhelm</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">WindhelmOutskirts</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">get</span><span class="pln"> two ALIASES both
</span><span class="pun">;</span><span class="pln"> hosting the same handler script </span><span class="pun">-</span><span class="pln"> see the earlier conversation on
</span><span class="pun">;</span><span class="pln"> why duplicate aliases beat a parallel </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> index</span><span class="pun">-</span><span class="pln">mapping array here</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">26</span><span class="pln"> area</span><span class="pun">-</span><span class="pln">state aliases total </span><span class="pun">(</span><span class="pln">indices </span><span class="lit">0</span><span class="pun">-</span><span class="lit">25</span><span class="pun">),</span><span class="pln"> mapping to </span><span class="lit">21</span><span class="pln"> distinct
</span><span class="pun">;</span><span class="pln"> handler scripts</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">0</span><span class="pln">  </span><span class="typ">WindhelmLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">1</span><span class="pln">  </span><span class="typ">WindhelmOutskirts</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">2</span><span class="pln">  </span><span class="typ">WinterholdLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">3</span><span class="pln">  </span><span class="typ">SolitudeLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">4</span><span class="pln">  </span><span class="typ">SolitudeOutskirts</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">5</span><span class="pln">  </span><span class="typ">MarkarthLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">6</span><span class="pln">  </span><span class="typ">MarkarthOutskirts</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">7</span><span class="pln">  </span><span class="typ">RiftenLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">8</span><span class="pln">  </span><span class="typ">RiftenOutskirts</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">9</span><span class="pln">  </span><span class="typ">WhiterunLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">10</span><span class="pln"> </span><span class="typ">WhiterunOutskirts</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">11</span><span class="pln"> </span><span class="typ">FalkreathLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">12</span><span class="pln"> </span><span class="typ">BYOHHouse1Location</span><span class="pln">   </span><span class="pun">(</span><span class="typ">Lakeview</span><span class="pln"> </span><span class="typ">Manor</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">13</span><span class="pln"> </span><span class="typ">MorthalLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">14</span><span class="pln"> </span><span class="typ">BYOHHouse2Location</span><span class="pln">   </span><span class="pun">(</span><span class="typ">Windstad</span><span class="pln"> </span><span class="typ">Manor</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">15</span><span class="pln"> </span><span class="typ">DawnstarLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">16</span><span class="pln"> </span><span class="typ">BYOHHouse3Location</span><span class="pln">   </span><span class="pun">(</span><span class="typ">Heljarchen</span><span class="pln"> </span><span class="typ">Hall</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">17</span><span class="pln"> </span><span class="typ">NarzulburLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">18</span><span class="pln"> </span><span class="typ">DushnikhYalLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">19</span><span class="pln"> </span><span class="typ">MorKhazgurLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">20</span><span class="pln"> </span><span class="typ">LargashburLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">21</span><span class="pln"> </span><span class="typ">OldHroldanLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">22</span><span class="pln"> </span><span class="typ">IvarsteadLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">23</span><span class="pln"> </span><span class="typ">ShorsStoneLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">24</span><span class="pln"> </span><span class="typ">RiverwoodLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">25</span><span class="pln"> </span><span class="typ">RoriksteadLocation</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Alias</span><span class="pln"> </span><span class="lit">26</span><span class="pln"> </span><span class="pun">(</span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln"> needs no name matching anything here </span><span class="pun">-</span><span class="pln"> it</span><span class="str">'</span><span class="pln">s
</span><span class="pun">;</span><span class="pln"> excluded from </span><span class="kwd">this</span><span class="pln"> array entirely </span><span class="pun">(</span><span class="pln">see </span><span class="typ">GenerateAreaStateNames</span><span class="pun">()).</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Adding</span><span class="pln"> a </span><span class="kwd">new</span><span class="pln"> area later</span><span class="pun">:</span><span class="pln"> attach its handler script to a </span><span class="kwd">new</span><span class="pln"> alias at
</span><span class="pun">;</span><span class="pln"> the next free index and name that alias to match </span><span class="pun">-</span><span class="pln"> nothing </span><span class="kwd">else</span><span class="pln"> to
</span><span class="pun">;</span><span class="pln"> update</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GenerateAreaStateNames</span><span class="pun">()</span><span class="pln"> picks it up automatically on next load</span><span class="pun">.</span><span class="pln">

</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AreaStateNames</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln"> </span><span class="typ">Hidden</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	LocOpsHold:<br>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3715_8" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_LocOpsHold extends </span><span class="typ">Quest</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> yellow pages </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Skyrim</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Hold</span><span class="pun">-</span><span class="pln">wide edition</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;==================================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">User</span><span class="pln"> </span><span class="typ">Functions</span><span class="pln"> </span><span class="pun">==================================================================================</span><span class="pln">
</span><span class="pun">;==================================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Should</span><span class="pln"> probably stick to calling </span><span class="str">'user functions'</span><span class="pln"> only</span><span class="pun">.</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> name </span><span class="kwd">of</span><span class="pln"> the hold </span><span class="kwd">with</span><span class="pln"> any whitespace removed</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json </span><span class="kwd">for</span><span class="pln"> details</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Egs</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="str">'Whiterun'</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="str">'ThePale'</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="str">'TheRift'</span><span class="pln">

</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">UpdatePointsOfInterest</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">BeginPoiUpdate</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeHoldByString</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> free
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> enslaved
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">IsSlaverunFreeHold</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeHoldHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeHoldByString</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">OwnsVanillaHomeInHold</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsThaneOfHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> the player a thane </span><span class="kwd">of</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> hold
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">IsThaneOfHold</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsThaneOfHoldHere</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Should</span><span class="pln"> work anywhere within the hold borders
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetIsThaneOfHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetJarlForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">GetJarl</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetJarlHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetJarlForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetStewardForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">GetSteward</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetStewardHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetStewardForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCourtWizardForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">GetCourtWizard</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCourtWizardHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetCourtWizardForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHousecarlForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">GetHousecarl</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHousecarlHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHousecarlForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHostlerForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">).</span><span class="typ">GetHostler</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHostlerHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetHostlerForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Never</span><span class="pln"> went through the </span><span class="typ">State</span><span class="pun">/</span><span class="typ">GoToState</span><span class="pln"> system in the original </span><span class="pun">-</span><span class="pln"> not
	</span><span class="pun">;</span><span class="pln"> hold</span><span class="pun">-</span><span class="pln">dependent handler logic</span><span class="pun">,</span><span class="pln"> just a direct delegation</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">ForkLicence</span><span class="pun">.</span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLicenceOfficerHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">Hold</span><span class="pun">-</span><span class="pln">level aggregation </span><span class="pun">--</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Aggregates</span><span class="pln"> the plural POI categories across every area within a hold
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln"> </span><span class="typ">GetBlacksmithsForHold</span><span class="pun">(</span><span class="str">"Whiterun"</span><span class="pun">)</span><span class="pln"> merges </span><span class="typ">Whiterun</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Riverwood</span><span class="pln"> </span><span class="pun">+</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rorikstead</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> every other area </span><span class="typ">GetAreaStateNamesForHold</span><span class="pln"> returns</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Deliberately</span><span class="pln"> NOT applied to the singular leadership roles above
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Jarl</span><span class="pun">/</span><span class="typ">Steward</span><span class="pun">/</span><span class="typ">CourtWizard</span><span class="pun">/</span><span class="typ">Housecarl</span><span class="pun">/</span><span class="typ">Hostler</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> those are tied
</span><span class="pun">;</span><span class="pln"> specifically to the hold</span><span class="str">'</span><span class="pln">s capital</span><span class="pun">,</span><span class="pln"> and </span><span class="str">"</span><span class="pln">aggregate all jarls in the
</span><span class="pun">;</span><span class="pln"> hold</span><span class="str">"</span><span class="pln"> doesn</span><span class="str">'</span><span class="pln">t mean anything when only the capital has one</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="str">"primary POI last in the array"</span><span class="pln"> convention within a single area</span><span class="str">'</span><span class="pln">s
</span><span class="pun">;</span><span class="pln"> list doesn</span><span class="str">'t carry any special meaning here - each area'</span><span class="pln">s own primary
</span><span class="pun">;</span><span class="pln"> just ends up wherever that area</span><span class="str">'</span><span class="pln">s results land in the merge order</span><span class="pun">.</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetInnkeepersForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetInnkeepersForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetInnkeepersHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetInnkeepersForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBlacksmithsForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetBlacksmithsForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBlacksmithsHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetBlacksmithsForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetGeneralTradersForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetGeneralTradersForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetGeneralTradersHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetGeneralTradersForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAlchemistsForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetAlchemistsForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAlchemistsHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetAlchemistsForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPriestsForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetPriestsForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPriestsHere</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetPriestsForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Custom</span><span class="pln"> role aggregation </span><span class="pun">-</span><span class="pln"> same pattern</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> rather than
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> since </span><span class="typ">GetCustomRoleForArea</span><span class="pln"> can </span><span class="kwd">return</span><span class="pln"> non</span><span class="pun">-</span><span class="typ">Actor</span><span class="pln"> entries
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">shrines</span><span class="pun">,</span><span class="pln"> etc</span><span class="pun">.).</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCustomRoleForHold</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayRefMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetCustomRoleForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">],</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCustomRoleHere</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetCustomRoleForHold</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">HoldStateName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;==================================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln"> </span><span class="typ">Dispatch</span><span class="pln"> </span><span class="pun">================================================================================</span><span class="pln">
</span><span class="pun">;==================================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> design as _MGF_LocOpsArea </span><span class="pun">-</span><span class="pln"> alias order on </span><span class="kwd">this</span><span class="pln"> quest IS the
</span><span class="pun">;</span><span class="pln"> lookup table</span><span class="pun">.</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> returns the alias</span><span class="pun">,</span><span class="pln"> cast to
</span><span class="pun">;</span><span class="pln"> _MGF_LocOpsHold_Base resolves to whichever specific handler script is
</span><span class="pun">;</span><span class="pln"> attached to it</span><span class="pun">.</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> registration</span><span class="pun">,</span><span class="pln"> no array property</span><span class="pun">,</span><span class="pln"> nothing to
</span><span class="pun">;</span><span class="pln"> bootstrap at runtime </span><span class="pun">-</span><span class="pln"> only the CK</span><span class="pun">-</span><span class="pln">side alias ordering to keep correct
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">see the property doc comment below</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> isn</span><span class="str">'</span><span class="pln">t in the table</span><span class="pun">,</span><span class="pln"> or </span><span class="kwd">if</span><span class="pln"> the alias at
</span><span class="pun">;</span><span class="pln"> that index has no matching script attached</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Most</span><span class="pln"> callers should use
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">()</span><span class="pln"> below</span><span class="pun">.</span><span class="pln">
_MGF_LocOpsHold_Base </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">.</span><span class="typ">Find</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Index</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> as _MGF_LocOpsHold_Base
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">None</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

_MGF_LocOpsHold_Base </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	_MGF_LocOpsHold_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Every</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> a dedicated handler script </span><span class="pun">-</span><span class="pln"> i</span><span class="pun">.</span><span class="pln">e</span><span class="pun">.</span><span class="pln"> exactly
</span><span class="pun">;</span><span class="pln"> what </span><span class="typ">GetHandler</span><span class="pun">()</span><span class="pln"> can resolve to something other than </span><span class="typ">DefaultHandler</span><span class="pun">.</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetSpecialHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> walks </span><span class="typ">HoldStateNames</span><span class="pln"> and prints what each alias index
</span><span class="pun">;</span><span class="pln"> actually resolves to</span><span class="pun">,</span><span class="pln"> so a CK wiring mistake </span><span class="pun">(</span><span class="pln">wrong script on an
</span><span class="pun">;</span><span class="pln"> alias</span><span class="pun">,</span><span class="pln"> or an alias left empty</span><span class="pun">)</span><span class="pln"> shows up as a visible </span><span class="typ">None</span><span class="pln"> in the log
</span><span class="pun">;</span><span class="pln"> rather than a silent wrong</span><span class="pun">-</span><span class="pln">handler bug later</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Call</span><span class="pln"> from console via
</span><span class="pun">;</span><span class="pln"> </span><span class="str">"cgf _MGF_LocOpsHold DumpDirectory"</span><span class="pln"> </span><span class="pun">(</span><span class="pln">adjust to your actual quest
</span><span class="pun">;</span><span class="pln"> editor ID</span><span class="pun">)</span><span class="pln"> or from another debug script holding a reference to </span><span class="kwd">this</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> quest</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> walks </span><span class="typ">HoldStateNames</span><span class="pln"> and prints what each alias index
</span><span class="pun">;</span><span class="pln"> actually resolves to</span><span class="pun">,</span><span class="pln"> so a CK wiring mistake </span><span class="pun">(</span><span class="pln">wrong script on an
</span><span class="pun">;</span><span class="pln"> alias</span><span class="pun">,</span><span class="pln"> or an alias left empty</span><span class="pun">)</span><span class="pln"> shows up as a visible </span><span class="typ">None</span><span class="pln"> in the log
</span><span class="pun">;</span><span class="pln"> rather than a silent wrong</span><span class="pun">-</span><span class="pln">handler bug later</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Cheap</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> just resolves
</span><span class="pun">;</span><span class="pln"> the handler</span><span class="pun">,</span><span class="pln"> doesn</span><span class="str">'</span><span class="pln">t touch </span><span class="typ">StorageUtil</span><span class="pun">/</span><span class="pln">aliases</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">DumpDirectoryFull</span><span class="pun">()</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> below </span><span class="kwd">for</span><span class="pln"> a full data dump</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Call</span><span class="pln"> from console via
</span><span class="pun">;</span><span class="pln"> </span><span class="str">"cgf _MGF_LocOpsHold DumpHandlers"</span><span class="pln"> </span><span class="pun">(</span><span class="pln">adjust to your actual quest editor
</span><span class="pun">;</span><span class="pln"> ID</span><span class="pun">)</span><span class="pln"> or from another debug script holding a reference to </span><span class="kwd">this</span><span class="pln"> quest</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpHandlers</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ==== DumpHandlers: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" entries ===="</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		_MGF_LocOpsHold_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> as _MGF_LocOpsHold_Base
		</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Status</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">Handler</span><span class="pln">
			</span><span class="typ">Status</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">" &lt;&lt;&lt; NONE - no script attached to this alias, or wrong script type"</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" -&gt; "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Status</span><span class="pun">)</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] DefaultHandler -&gt; "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ==== DumpHandlers: done ===="</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> cycles through every </span><span class="typ">HoldStateName</span><span class="pln"> and calls the real
</span><span class="pun">;</span><span class="pln"> accessor functions </span><span class="pun">(</span><span class="typ">GetJarlForHold</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetStewardForHold</span><span class="pun">,</span><span class="pln"> etc</span><span class="pun">.)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> the
</span><span class="pun">;</span><span class="pln"> same path an actual caller takes</span><span class="pun">,</span><span class="pln"> not just alias resolution </span><span class="pun">-</span><span class="pln"> printing
</span><span class="pun">;</span><span class="pln"> readable names via _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pln"> instead </span><span class="kwd">of</span><span class="pln"> raw object
</span><span class="pun">;</span><span class="pln"> references</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Call</span><span class="pln"> from console via </span><span class="str">"cgf _MGF_LocOpsHold DumpDirectoryFull"</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpDirectoryFull</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ==== DumpDirectoryFull: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" entries ===="</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
		_MGF_LocOpsHold_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetNthAlias</span><span class="pun">(</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> as _MGF_LocOpsHold_Base

		</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">Handler</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" &lt;&lt;&lt; NONE - no script attached to this alias, or wrong script type"</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Else</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" ("</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">")"</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     IsSlaverunFreeHold: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeHoldByString</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     OwnsVanillaHome: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     IsThaneOfHold: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsThaneOfHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Jarl: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetJarlForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Steward: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetStewardForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     CourtWizard: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetCourtWizardForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Housecarl: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHousecarlForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Hostler: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHostlerForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     LicenceOfficer: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Innkeepers (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetInnkeepersForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Blacksmiths (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetBlacksmithsForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"GeneralTraders (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetGeneralTradersForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Alchemists (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetAlchemistsForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
			</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Priests (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetPriestsForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] DefaultHandler -&gt; "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ==== DumpDirectoryFull: done ===="</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Helper</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">DumpDirectoryFull</span><span class="pun">()/</span><span class="typ">DumpDirectoryFromJson</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> joins an
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> into one readable</span><span class="pun">,</span><span class="pln"> comma</span><span class="pun">-</span><span class="pln">separated log line via
</span><span class="pun">;</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorNames</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_ArrayQuery</span><span class="pun">.</span><span class="typ">ArrayStringJoin</span><span class="pun">().</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Label</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Names</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorNames</span><span class="pun">(</span><span class="pln">akActors</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Names</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Label</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">": (none)"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Label</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">": "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">ArrayStringJoin</span><span class="pun">(</span><span class="typ">Names</span><span class="pun">,</span><span class="pln"> </span><span class="str">", "</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> utility </span><span class="pun">-</span><span class="pln"> reads the full hold list straight from the
</span><span class="pun">;</span><span class="pln"> authoritative </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json </span><span class="str">"holdstates"</span><span class="pln"> array </span><span class="pun">(</span><span class="lit">10</span><span class="pln"> entries </span><span class="pun">-</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="str">"Wilderness"</span><span class="pln"> plus the </span><span class="lit">9</span><span class="pln"> real holds</span><span class="pun">)</span><span class="pln"> rather than our own </span><span class="typ">HoldStateNames</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> property</span><span class="pun">.</span><span class="pln"> </span><span class="typ">For</span><span class="pln"> </span><span class="typ">Hold</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> covers the same ground either way </span><span class="pun">(</span><span class="pln">no holds
</span><span class="pun">;</span><span class="pln"> are missing a dedicated handler the way </span><span class="typ">DragonBridgeLocation</span><span class="pln"> was on
</span><span class="pun">;</span><span class="pln"> the </span><span class="typ">Area</span><span class="pln"> side</span><span class="pun">),</span><span class="pln"> but keeps </span><span class="kwd">this</span><span class="pln"> dump automatically in sync </span><span class="kwd">with</span><span class="pln"> the
</span><span class="pun">;</span><span class="pln"> JSON source </span><span class="kwd">if</span><span class="pln"> a hold is ever added</span><span class="pun">,</span><span class="pln"> rather than needing a hardcoded
</span><span class="pun">;</span><span class="pln"> list update</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Note</span><span class="pln"> the aggregate categories can </span><span class="kwd">get</span><span class="pln"> large </span><span class="kwd">for</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="str">"Wilderness"</span><span class="pln"> specifically </span><span class="pun">-</span><span class="pln"> </span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">(</span><span class="str">"Wilderness"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> returns every area not assigned to one </span><span class="kwd">of</span><span class="pln"> the </span><span class="lit">9</span><span class="pln"> real holds</span><span class="pun">,</span><span class="pln"> so the
</span><span class="pun">;</span><span class="pln"> merged </span><span class="typ">Innkeepers</span><span class="pun">/</span><span class="typ">Blacksmiths</span><span class="pun">/</span><span class="pln">etc lists here cover a lot more ground
</span><span class="pun">;</span><span class="pln"> than a real hold</span><span class="str">'</span><span class="pln">s would</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Call</span><span class="pln"> from console via
</span><span class="pun">;</span><span class="pln"> </span><span class="str">"cgf _MGF_LocOpsHold DumpDirectoryFromJson"</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpDirectoryFromJson</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">JsonPath</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Data/SKSE/Plugins/StorageUtilData/Mcgufin/Internal/LocationMap.json"</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">AllHoldStates</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_File</span><span class="pun">.</span><span class="typ">JsonStringListGet</span><span class="pun">(</span><span class="typ">JsonPath</span><span class="pun">,</span><span class="pln"> </span><span class="str">"holdstates"</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ==== DumpDirectoryFromJson: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AllHoldStates</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" entries from LocationMap.json ===="</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">AllHoldStates</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AllHoldStates</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     IsSlaverunFreeHold: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsSlaverunFreeHoldByString</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     OwnsVanillaHome: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetOwnsVanillaHomeInHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     IsThaneOfHold: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsThaneOfHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Jarl: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetJarlForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Steward: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetStewardForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     CourtWizard: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetCourtWizardForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Housecarl: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHousecarlForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     Hostler: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetHostlerForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold]     LicenceOfficer: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetActorName</span><span class="pun">(</span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Innkeepers (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetInnkeepersForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Blacksmiths (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetBlacksmithsForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"GeneralTraders (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetGeneralTradersForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Alchemists (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetAlchemistsForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">TraceActorList</span><span class="pun">(</span><span class="str">"Priests (aggregate)"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GetPriestsForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">

	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"[_MGF_LocOpsHold] ==== DumpDirectoryFromJson: done ===="</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;==================================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Helper</span><span class="pln"> </span><span class="typ">Functions</span><span class="pln"> </span><span class="pun">================================================================================</span><span class="pln">
</span><span class="pun">;==================================================================================================</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">GenerateHoldStateNames</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> reasoning as _MGF_LocOpsArea</span><span class="str">'</span><span class="pln">s </span><span class="typ">GenerateAreaStateNames</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> see
</span><span class="pun">;</span><span class="pln"> that comment </span><span class="kwd">for</span><span class="pln"> the full explanation </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">GetAliasNames</span><span class="str">'</span><span class="pln"> parameters
</span><span class="pun">;</span><span class="pln"> and why </span><span class="typ">SkipUnfilled</span><span class="pun">=</span><span class="typ">False</span><span class="pln"> matters</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Alias</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> </span><span class="pun">(</span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln"> has no
</span><span class="pun">;</span><span class="pln"> corresponding </span><span class="typ">HoldStateName</span><span class="pln"> and is excluded the same way</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GenerateHoldStateNames</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">HoldStateNames</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetAliasNames</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">HoldStateNames</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayStringPluck</span><span class="pun">(</span><span class="typ">HoldStateNames</span><span class="pun">,</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">BeginPoiUpdate</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> unknown
		</span><span class="typ">ClearPointsOfInterest</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">FillPointsOfInterest</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FillPointsOfInterest</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Single</span><span class="pln"> </span><span class="typ">GetHandler</span><span class="pun">()</span><span class="pln"> resolution </span><span class="kwd">for</span><span class="pln"> the whole update</span><span class="pun">,</span><span class="pln"> same reasoning
	</span><span class="pun">;</span><span class="pln"> as _MGF_LocOpsArea</span><span class="str">'</span><span class="pln">s version </span><span class="pun">-</span><span class="pln"> one lookup instead </span><span class="kwd">of</span><span class="pln"> five separate
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ForHold</span><span class="pun">()</span><span class="pln"> calls each re</span><span class="pun">-</span><span class="pln">resolving the handler independently</span><span class="pun">.</span><span class="pln">
	_MGF_LocOpsHold_Base </span><span class="typ">Handler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetHandlerOrDefault</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="lit">0</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetJarl</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="lit">1</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetSteward</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="lit">2</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetCourtWizard</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="lit">3</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetHousecarl</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="lit">4</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Handler</span><span class="pun">.</span><span class="typ">GetHostler</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="lit">5</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">ForkLicence</span><span class="pun">.</span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">HoldStateName</span><span class="pun">))</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ClearPointsOfInterest</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PoiAliasesHold</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FillAlias</span><span class="pun">(</span><span class="typ">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pln">
		akAlias</span><span class="pun">.</span><span class="typ">ForceRefTo</span><span class="pun">(</span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		akAlias</span><span class="pun">.</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;==================================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Properties</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;==================================================================================================</span><span class="pln">

_MGF_LocOpsArea_PropertyStore </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Store</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Needed</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Hold</span><span class="pun">-</span><span class="pln">level POI aggregation </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hold</span><span class="pln"> calls </span><span class="typ">Area</span><span class="str">'</span><span class="pln">s own
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetXForArea</span><span class="pun">()</span><span class="pln"> accessors </span><span class="kwd">for</span><span class="pln"> every area within a hold and merges the
</span><span class="pun">;</span><span class="pln"> results</span><span class="pun">.</span><span class="pln">
_MGF_LocOpsArea </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Attached</span><span class="pln"> to its own alias</span><span class="pun">,</span><span class="pln"> OUTSIDE the </span><span class="lit">0</span><span class="pun">-</span><span class="lit">8</span><span class="pln"> indexed range below </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> alias </span><span class="lit">9</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> just the plain _MGF_LocOpsHold_Base script</span><span class="pun">,</span><span class="pln"> no subclass</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Used</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> any </span><span class="typ">HoldStateName</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> no dedicated handler</span><span class="pun">,</span><span class="pln"> and as the
</span><span class="pun">;</span><span class="pln"> fallback when a real handler</span><span class="str">'</span><span class="pln">s alias is wired wrong</span><span class="pun">.</span><span class="pln">
_MGF_LocOpsHold_Base </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">DefaultHandler</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pln"> is computed automatically at </span><span class="typ">OnInit</span><span class="pln"> from the alias
</span><span class="pun">;</span><span class="pln"> names themselves </span><span class="pun">(</span><span class="pln">see </span><span class="typ">GenerateHoldStateNames</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> nothing to
</span><span class="pun">;</span><span class="pln"> fill here directly</span><span class="pun">.</span><span class="pln"> </span><span class="typ">What</span><span class="pln"> actually needs doing in the CK is naming
</span><span class="pun">;</span><span class="pln"> each alias to match the list below exactly</span><span class="pun">,</span><span class="pln"> in order</span><span class="pun">.</span><span class="pln"> </span><span class="typ">No</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Outskirts</span><span class="pun">-</span><span class="pln">style pairing here </span><span class="pun">-</span><span class="pln"> every hold gets exactly one alias</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">0</span><span class="pln">  </span><span class="typ">Eastmarch</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">1</span><span class="pln">  </span><span class="typ">Falkreath</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">2</span><span class="pln">  </span><span class="typ">Haafingar</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">3</span><span class="pln">  </span><span class="typ">Hjaalmarch</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">4</span><span class="pln">  </span><span class="typ">ThePale</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">5</span><span class="pln">  </span><span class="typ">TheReach</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">6</span><span class="pln">  </span><span class="typ">TheRift</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">7</span><span class="pln">  </span><span class="typ">Whiterun</span><span class="pln">
</span><span class="pun">;</span><span class="pln">   </span><span class="lit">8</span><span class="pln">  </span><span class="typ">Winterhold</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Alias</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> </span><span class="pun">(</span><span class="typ">DefaultHandler</span><span class="pun">)</span><span class="pln"> needs no name matching anything here </span><span class="pun">-</span><span class="pln"> it</span><span class="str">'</span><span class="pln">s
</span><span class="pun">;</span><span class="pln"> excluded from </span><span class="kwd">this</span><span class="pln"> array entirely </span><span class="pun">(</span><span class="pln">see </span><span class="typ">GenerateHoldStateNames</span><span class="pun">()).</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Adding</span><span class="pln"> a </span><span class="kwd">new</span><span class="pln"> hold later</span><span class="pun">:</span><span class="pln"> attach its handler script to a </span><span class="kwd">new</span><span class="pln"> alias at
</span><span class="pun">;</span><span class="pln"> the next free index and name that alias to match </span><span class="pun">-</span><span class="pln"> nothing </span><span class="kwd">else</span><span class="pln"> to
</span><span class="pun">;</span><span class="pln"> update</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GenerateHoldStateNames</span><span class="pun">()</span><span class="pln"> picks it up automatically on next load</span><span class="pun">.</span><span class="pln">

</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">HoldStateNames</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln"> </span><span class="typ">Hidden</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	LocOpsWorld:<br>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3715_10" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_LocOpsWorld extends </span><span class="typ">Quest</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> yellow pages </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Skyrim</span><span class="pln"> </span><span class="pun">(</span><span class="pln">world edition</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllJarls</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Holds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Holds</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Jarl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetJarlForHold</span><span class="pun">(</span><span class="typ">Holds</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Jarl</span><span class="pln">
			</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Jarl</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllJarlsByProximity</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetAllJarls</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> akRefs </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">SortRefsByAnchoredDistance</span><span class="pun">(</span><span class="typ">Store</span><span class="pun">.</span><span class="typ">PlayerRef</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="pln">akActors</span><span class="pun">),</span><span class="pln"> </span><span class="typ">DropUnknowns</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">RefsToActors</span><span class="pun">(</span><span class="pln">akRefs</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllStewards</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Holds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Holds</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Steward</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetStewardForHold</span><span class="pun">(</span><span class="typ">Holds</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Steward</span><span class="pln">
			</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Steward</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllCourtWizards</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Holds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Holds</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">CourtWizard</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetCourtWizardForHold</span><span class="pun">(</span><span class="typ">Holds</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">CourtWizard</span><span class="pln">
			</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">CourtWizard</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllHousecarls</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Holds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Holds</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Housecarl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetHousecarlForHold</span><span class="pun">(</span><span class="typ">Holds</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Housecarl</span><span class="pln">
			</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Housecarl</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllHostlers</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Holds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Holds</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Hostler</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetHostlerForHold</span><span class="pun">(</span><span class="typ">Holds</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Hostler</span><span class="pln">
			</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Hostler</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllLicenceOfficers</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Holds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllHolds</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Holds</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">LicenceOfficer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pun">.</span><span class="typ">GetLicenceOfficerForHold</span><span class="pun">(</span><span class="typ">Holds</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">LicenceOfficer</span><span class="pln">
			</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LicenceOfficer</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">Flat</span><span class="pln"> </span><span class="pun">(</span><span class="pln">world</span><span class="pun">)</span><span class="pln"> aggregation </span><span class="pun">--</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Aggregates</span><span class="pln"> the plural POI categories across EVERY area in the game</span><span class="pun">,</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> not just one hold </span><span class="pun">-</span><span class="pln"> </span><span class="typ">GetAllBlacksmiths</span><span class="pun">()</span><span class="pln"> is the </span><span class="kwd">union</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> every
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetBlacksmithsForHold</span><span class="pun">()</span><span class="pln"> call across </span><span class="typ">GetAllHolds</span><span class="pun">().</span><span class="pln"> </span><span class="typ">Goes</span><span class="pln"> straight
</span><span class="pun">;</span><span class="pln"> through </span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln"> rather than nesting through
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetAllHolds</span><span class="pun">()/</span><span class="typ">GetAreaStateNamesForHold</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> the </span><span class="typ">Hold</span><span class="pln"> grouping means
</span><span class="pun">;</span><span class="pln"> nothing to a </span><span class="str">"give me everything"</span><span class="pln"> caller</span><span class="pun">,</span><span class="pln"> so there</span><span class="str">'</span><span class="pln">s no reason to
</span><span class="pun">;</span><span class="pln"> pay </span><span class="kwd">for</span><span class="pln"> the extra tier </span><span class="kwd">of</span><span class="pln"> dispatch</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Deliberately</span><span class="pln"> NOT cached</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Several</span><span class="pln"> _MGF_LocOpsArea_Base subclasses
</span><span class="pun">;</span><span class="pln"> override the plural getters </span><span class="kwd">with</span><span class="pln"> alias reads that swap on actor
</span><span class="pun">;</span><span class="pln"> death or civil war status </span><span class="pun">(</span><span class="pln">see that script</span><span class="str">'</span><span class="pln">s </span><span class="typ">GetCustomRole</span><span class="pun">()</span><span class="pln"> warning
</span><span class="pun">;</span><span class="pln"> about per</span><span class="pun">-</span><span class="pln">town alias overrides</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> a cache only rebuilt on
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">ReloadJsons</span><span class="pun">()</span><span class="pln"> would go stale exactly when those swaps
</span><span class="pun">;</span><span class="pln"> happen</span><span class="pun">,</span><span class="pln"> which defeats the point </span><span class="kwd">of</span><span class="pln"> the alias</span><span class="pun">-</span><span class="pln">dispatch system</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> a
</span><span class="pun">;</span><span class="pln"> real caller later proves </span><span class="kwd">this</span><span class="pln"> walk is too expensive to run live</span><span class="pun">,</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> invalidate on whatever event</span><span class="pun">/</span><span class="pln">state</span><span class="pun">-</span><span class="pln">change the alias swaps themselves
</span><span class="pun">;</span><span class="pln"> react to </span><span class="pun">-</span><span class="pln"> not on JSON reload</span><span class="pun">,</span><span class="pln"> which is the wrong signal </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">this</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> data</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Scope</span><span class="pln"> note</span><span class="pun">:</span><span class="pln"> </span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln"> is backed by </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json</span><span class="str">'</span><span class="pln">s
</span><span class="pun">;</span><span class="pln"> </span><span class="str">"locationstates"</span><span class="pun">,</span><span class="pln"> which today only covers the </span><span class="typ">Skyrim</span><span class="pln"> worldspace </span><span class="pun">(</span><span class="lit">9</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> holds </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Wilderness</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Sovngarde</span><span class="pun">/</span><span class="typ">The</span><span class="pln"> </span><span class="typ">Soul</span><span class="pln"> </span><span class="typ">Cairn</span><span class="pun">/</span><span class="typ">Solstheim</span><span class="pln"> exist one
</span><span class="pun">;</span><span class="pln"> tier up in </span><span class="str">"worldstates"</span><span class="pln"> but have no area</span><span class="pun">-</span><span class="pln">level breakdown yet</span><span class="pun">,</span><span class="pln"> so
</span><span class="pun">;</span><span class="pln"> there is currently no meaningfully different </span><span class="str">"every worldspace"</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> variant to build </span><span class="pun">-</span><span class="pln"> it would </span><span class="kwd">return</span><span class="pln"> identical results to these</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Only</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> add one </span><span class="kwd">if</span><span class="pun">/</span><span class="pln">when those worlds </span><span class="kwd">get</span><span class="pln"> their own area entries in the JSON</span><span class="pun">.</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllInnkeepers</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetInnkeepersForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllBlacksmiths</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetBlacksmithsForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllGeneralTraders</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetGeneralTradersForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllAlchemists</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetAlchemistsForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllPriests</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetPriestsForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllCustomRole</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
	</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Areas</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Store</span><span class="pun">.</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetAllAreas</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">Areas</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayRefMerge</span><span class="pun">(</span><span class="typ">Result</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pun">.</span><span class="typ">GetCustomRoleForArea</span><span class="pun">(</span><span class="typ">Areas</span><span class="pun">[</span><span class="pln">i</span><span class="pun">],</span><span class="pln"> </span><span class="typ">RoleName</span><span class="pun">))</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Result</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;==================================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Properties</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;==================================================================================================</span><span class="pln">

_MGF_LocOpsArea_PropertyStore </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Store</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_LocOpsArea </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">LocOpsArea</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_LocOpsHold </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">LocOpsHold</span><span class="pln"> </span><span class="typ">Auto</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26166</guid><pubDate>Mon, 17 Aug 2026 16:45:42 +0000</pubDate></item><item><title>ConstructibleObject Functions</title><link>https://www.loverslab.com/blogs/entry/26161-constructibleobject-functions/</link><description><![CDATA[<p>
	A pretty comprehensive array of ConstructibleObject functions. 
</p>

<p>
	 
</p>

<p>
	Highlights: 
</p>

<ul>
	<li>
		Crafting event. Other mods have crafting events. This one includes the exact recipe used. 
	</li>
	<li>
		Find every recipe for an item or ingredient. 
	</li>
	<li>
		Recursively calculate what your ingredients can ultimately produce. Iron Ore -&gt; Iron Ingot -&gt; Iron Dagger. 
	</li>
	<li>
		Check craftability (what you can actually craft right now with what's in your inventory), includes perk and condition checks. 
	</li>
	<li>
		Calculate material costs, output values, profits and profit margins. 
	</li>
	<li>
		Find the most profitable recipes. 
	</li>
	<li>
		Built in token compatibility system for mods like CACO that represent items like flour via hidden inventory tokens. 
	</li>
</ul>

<p>
	<br>
	Surface thus far: <br>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5504_6" style=""><span class="pun">;========================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ConstructibleObjects</span><span class="pln"> </span><span class="pun">==================================================================</span><span class="pln">
</span><span class="pun">;========================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Register</span><span class="pln"> your form </span><span class="kwd">for</span><span class="pln"> crafting mod events</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Usage</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> 		_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForItemCrafted</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> 		</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_ItemCrafted</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">CreatedItem</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Recipe</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Quantity</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">BenchKeyword</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">    		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"Crafted: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">CreatedItem</span><span class="pun">.</span><span class="typ">GetName</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nRecipe: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Recipe</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nQuantity: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Quantity</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nBenchKeyword: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akBenchKeyword</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> akCreatedItem </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> item created</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akRecipe </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> recipe used to create the item</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Quantity</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> number </span><span class="kwd">of</span><span class="pln"> items created</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">BenchKeyword</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> workbench keyword </span><span class="pun">(</span><span class="pln">BNAM</span><span class="pun">)</span><span class="pln"> associated </span><span class="kwd">with</span><span class="pln"> the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Load</span><span class="pln"> game maintenance not required</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Registrations</span><span class="pln"> persist through save</span><span class="pun">/</span><span class="pln">loads</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Use</span><span class="pln"> </span><span class="typ">UnregisterForItemCrafted</span><span class="pln"> below to stop events</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RegisterForItemCrafted</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unregister</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> crafting events</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">UnregisterForItemCrafted</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Whether</span><span class="pln"> or not </span><span class="kwd">this</span><span class="pln"> form is registered </span><span class="kwd">for</span><span class="pln"> crafting events</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsRegisteredForItemCrafted</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Some</span><span class="pln"> mods </span><span class="pun">(</span><span class="pln">CACO</span><span class="pun">!)</span><span class="pln"> use a system </span><span class="kwd">of</span><span class="pln"> tokens to represent portions </span><span class="kwd">of</span><span class="pln"> ingredients</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Use</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> to </span><span class="kwd">register</span><span class="pln"> an inventory form </span><span class="kwd">with</span><span class="pln"> a corresponding token form</span><span class="pun">,</span><span class="pln"> token count and </span><span class="typ">ModName</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">When</span><span class="pln"> running relevant crafting functions </span><span class="pun">(</span><span class="pln">like </span><span class="typ">GetCraftableRecipes</span><span class="pun">())</span><span class="pln"> the system will automatically swap out 
</span><span class="pun">;</span><span class="pln"> inventory facing items </span><span class="kwd">for</span><span class="pln"> the equivalent crafting tokens and their equivalent token count</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Registrations</span><span class="pln"> are persistent until unregistered</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> MGF has built in support </span><span class="kwd">for</span><span class="pln"> CACO</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> _MGF_InterfaceCaco</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">InvForm</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> inventory facing form that the token represents</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">TokenForm</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> actual crafting ingredient</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">TokenCount</span><span class="pun">:</span><span class="pln"> </span><span class="typ">How</span><span class="pln"> many tokens the inventory item is </span><span class="str">'worth'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ModName</span><span class="pun">:</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is just so tokens can be tracked and grouped together and be </span><span class="typ">Unregistered</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> necessary</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;/</span><span class="pln">
	</span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> 
	</span><span class="typ">RegisterTokenMapping</span><span class="pun">(</span><span class="typ">InvForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PinchOfSalt</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TokenForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SaltToken</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TokenCount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ModName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SomeMod.esp"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">RegisterTokenMapping</span><span class="pun">(</span><span class="typ">InvForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SpoonOfSalt</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TokenForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SaltToken</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TokenCount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">20</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ModName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SomeMod.esp"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">RegisterTokenMapping</span><span class="pun">(</span><span class="typ">InvForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">BagOfSalt</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TokenForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SaltToken</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TokenCount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ModName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SomeMod.esp"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">/;</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RegisterTokenMapping</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">InvForm</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">TokenForm</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">TokenCount</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">ModName</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> all token mappings that were registered </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">ModName</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">UnregisterTokenMappings</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">ModName</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> a registered inventory form </span><span class="kwd">for</span><span class="pln"> a token</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsTokenIngredient</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">InvForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the equivalent token registered </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">InvForm</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> not found</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetTokenFor</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">InvForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the number </span><span class="kwd">of</span><span class="pln"> tokens </span><span class="typ">InvForm</span><span class="pln"> is </span><span class="str">'worth'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">.</span><span class="pln"> CACO</span><span class="pun">:</span><span class="pln"> </span><span class="typ">BYOHFoodIngrFlourBarley05</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> tokens </span><span class="kwd">of</span><span class="pln"> flour</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetTokenCountFor</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">InvForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> every portionIndex registered against </span><span class="typ">Token</span><span class="pun">,</span><span class="pln"> sorted ascending</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="kwd">if</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Token</span><span class="pln"> isn</span><span class="str">'</span><span class="pln">t a registered token</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Use</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> to discover valid </span><span class="typ">GetFormForToken</span><span class="pln"> quantities</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">From</span><span class="pln"> the example above in </span><span class="typ">RegisterTokenMapping</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> would </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">20</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRegisteredPortionsForToken</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Token</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the ingredient form registered against </span><span class="typ">Token</span><span class="pln"> at exactly </span><span class="typ">Quantity</span><span class="pln"> portions</span><span class="pun">,</span><span class="pln"> or 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> no form is registered at that quantity</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Exact</span><span class="pln"> match only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Use</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetRegisteredPortionsForToken</span><span class="pun">()</span><span class="pln"> to discover which quantities are valid</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFormForToken</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Token</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Quantity</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the gold value </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Token</span><span class="str">'</span><span class="pln">s canonical </span><span class="pun">(</span><span class="pln">portionIndex </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> ingredient</span><span class="pun">,</span><span class="pln"> or </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Token</span><span class="pln"> isn</span><span class="str">'</span><span class="pln">t a registered token or has no atomic</span><span class="pun">-</span><span class="pln">unit entry</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> rather than </span><span class="lit">0</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> on a miss</span><span class="pun">,</span><span class="pln"> since a real ingredient can legitimately be worth </span><span class="lit">0</span><span class="pln"> gold</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetGoldValueForToken</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Token</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Batch</span><span class="pun">-</span><span class="pln">resolves </span><span class="typ">InvForms</span><span class="pln"> through the token map</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Each</span><span class="pln"> form that has a token registered 
</span><span class="pun">;</span><span class="pln"> gets swapped </span><span class="kwd">for</span><span class="pln"> its token form</span><span class="pun">;</span><span class="pln"> anything unregistered passes through unchanged</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Equivalent</span><span class="pln"> to calling </span><span class="typ">GetTokenFor</span><span class="pln"> on every element</span><span class="pun">,</span><span class="pln"> but in one native call</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ResolveTokenForms</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InvForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">For</span><span class="pln"> each form in </span><span class="typ">InvForms</span><span class="pun">,</span><span class="pln"> returns how many tokens akRef</span><span class="str">'</span><span class="pln">s current inventory represents 
</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> it</span><span class="pun">:</span><span class="pln"> inventoryCount </span><span class="pun">*</span><span class="pln"> portionIndex </span><span class="kwd">if</span><span class="pln"> the form is a registered token ingredient</span><span class="pun">,</span><span class="pln"> or 
</span><span class="pun">;</span><span class="pln"> just the raw inventory count otherwise</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Arrays</span><span class="pln"> are matched by index </span><span class="pun">—</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> corresponds 
</span><span class="pun">;</span><span class="pln"> to </span><span class="typ">InvForms</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an all</span><span class="pun">-</span><span class="pln">zero array </span><span class="kwd">if</span><span class="pln"> akRef is </span><span class="typ">None</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ResolveTokenCounts</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akRef</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InvForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Register</span><span class="pln"> a global </span><span class="kwd">for</span><span class="pln"> the crafting query system to ignore</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">When</span><span class="pln"> checking crafting recipes </span><span class="kwd">for</span><span class="pln"> global conditions the system will consider these as passing</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Registrations</span><span class="pln"> are persistent until unregistered</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Globals</span><span class="pln"> designed to declutter the crafting menu will inadvertently narrow results </span><span class="pun">(</span><span class="pln">CACO_OptionDeclutterCookingMenu</span><span class="pun">).</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RegisterIgnoredGlobal</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pln"> akGlobal</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> asModName</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unregister</span><span class="pln"> a global</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">UnregisterIgnoredGlobals</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> asModName</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the index </span><span class="kwd">of</span><span class="pln"> the first recipe in the list that creates akForm</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> not found</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> recipe in the list that isn</span><span class="str">'</span><span class="pln">t a COBJ will be ignored</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindRecipeForItem</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Recipes</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> the recipe is a tempering recipe</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> isn</span><span class="str">'t just a workstation keyword check (though that'</span><span class="pln">s a fallback</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Should</span><span class="pln"> be pretty accurate</span><span class="pun">,</span><span class="pln"> even </span><span class="kwd">for</span><span class="pln"> mod added stuff</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsTemperingRecipe</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Recipes</span><span class="pln"> that create akForm</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Optional</span><span class="pln"> check player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipesForForm</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the ingredients needed </span><span class="kwd">for</span><span class="pln"> a recipe as an array </span><span class="kwd">of</span><span class="pln"> forms
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is a </span><span class="lit">1</span><span class="pun">:</span><span class="lit">1</span><span class="pln"> map </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">GetRecipeQuantities</span><span class="pun">()</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeIngredients</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the quantity </span><span class="kwd">of</span><span class="pln"> items needed to create a recipe
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is a </span><span class="lit">1</span><span class="pun">:</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">GetRecipeIngredients</span><span class="pun">()</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeQuantities</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pln"> has all the ingredients needed to create akRecipe
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">HasIngredientsForRecipe</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> the player can craft akRecipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Automatically</span><span class="pln"> checks both player perks and global conditions</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckIngredients</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> must have the ingredients</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t care</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">CanCraftRecipe</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckIngredients</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> recipes the player can actually craft</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akRecipes</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> list </span><span class="kwd">of</span><span class="pln"> recipes to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckIngredients</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> must have the ingredients</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t care</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Optional</span><span class="pln"> check player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FilterCraftableRecipes</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> akRecipes</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckIngredients</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> all recipes that can be crafted </span><span class="kwd">with</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the listed ingredients</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Optional</span><span class="pln"> check player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Recursive</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Recursively</span><span class="pln"> include the results </span><span class="kwd">of</span><span class="pln"> what akIngredients can craft</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Continue</span><span class="pln"> until no additional results are generated</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCraftableRecipes</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akIngredients</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> \
													</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
													</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Recursive</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> as </span><span class="typ">GetCraftableRecipes</span><span class="pun">()</span><span class="pln"> but instead returns the forms that could be created </span><span class="kwd">with</span><span class="pln"> the ingredients</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCraftableForms</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akIngredients</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Recursive</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Similar</span><span class="pln"> to </span><span class="typ">GetCraftableRecipes</span><span class="pln"> but also takes a count </span><span class="kwd">of</span><span class="pln"> the forms on hand to satisfy crafting conditions</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Both</span><span class="pln"> input arrays must be a </span><span class="lit">1</span><span class="pun">:</span><span class="lit">1</span><span class="pln"> map </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Combine</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">CountForms</span><span class="pun">().</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCraftableRecipesWithCount</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akIngredients</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akCounts</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
															</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
															</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> as </span><span class="typ">GetCraftableForms</span><span class="pun">()</span><span class="pln"> but </span><span class="kwd">with</span><span class="pln"> form counts</span><span class="pun">,</span><span class="pln"> like </span><span class="typ">GetCraftableRecipesWithCount</span><span class="pun">()</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCraftableFormsWithCount</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akIngredients</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akCounts</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> \
											</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> recipes that result in an item matching at least one </span><span class="kwd">of</span><span class="pln"> akKeywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipesByKeywords</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKeywords</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> \
													</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> recipes that use akForm to create something</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akKeywords</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> created items that have at least one </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> keyword filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipesUsingIngredient</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akIngredient</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akFilterKeywords</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
														</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
														</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> recipes that use a workstation </span><span class="kwd">with</span><span class="pln"> the </span><span class="typ">BenchKw</span><span class="pln"> to be created</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterKeywords</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> only created items that have at least one matching keyword</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipesForWorkbench</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pln"> akWorkbench</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterKeywords</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
													</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> there</span><span class="str">'</span><span class="pln">s at least one recipe to create akForm</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Automatically</span><span class="pln"> excluded tempering recipes</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsCraftable</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> there</span><span class="str">'</span><span class="pln">s at least one recipe to temper akForm
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsTemperable</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only forms that have at least one craftable recipe </span><span class="pun">(</span><span class="pln">excludes tempering recipes</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only items that have no crafting recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FilterFormsWithRecipes</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">,</span><span class="pln"> bool </span><span class="typ">ReverseFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the total gold value </span><span class="kwd">for</span><span class="pln"> all items to create the item </span><span class="pun">(</span><span class="typ">Not</span><span class="pln"> market value </span><span class="pun">-</span><span class="pln"> speech skill</span><span class="pun">/</span><span class="pln">perks etc</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeMaterialCost</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> all the perks needed to create akRecipe
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeRequiredPerks</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;/</span><span class="pln">	A note on </span><span class="str">'Float Accuracy = 100.0'</span><span class="pln"> parameter in the next few functions</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">Accuracy</span><span class="pln"> is intended as a simple skill based system</span><span class="pun">.</span><span class="pln"> 
</span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Profit</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100g</span><span class="pln"> </span><span class="pun">→</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> exactly </span><span class="lit">100g</span><span class="pln">
</span><span class="lit">75</span><span class="pun">%</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Profit</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100g</span><span class="pln"> </span><span class="pun">→</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="lit">87</span><span class="pun">-</span><span class="lit">113g</span><span class="pln"> </span><span class="pun">(±</span><span class="lit">12.5</span><span class="pun">%</span><span class="pln"> variance</span><span class="pun">)</span><span class="pln">
</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Profit</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100g</span><span class="pln"> </span><span class="pun">→</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="lit">75</span><span class="pun">-</span><span class="lit">125g</span><span class="pln"> </span><span class="pun">(±</span><span class="lit">25</span><span class="pun">%</span><span class="pln"> variance</span><span class="pun">)</span><span class="pln">
</span><span class="lit">25</span><span class="pun">%</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Profit</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100g</span><span class="pln"> </span><span class="pun">→</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="lit">62</span><span class="pun">-</span><span class="lit">138g</span><span class="pln"> </span><span class="pun">(±</span><span class="lit">37.5</span><span class="pun">%</span><span class="pln"> variance</span><span class="pun">)</span><span class="pln">
</span><span class="lit">0</span><span class="pun">%</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Profit</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100g</span><span class="pln"> </span><span class="pun">→</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="lit">50</span><span class="pun">-</span><span class="lit">150g</span><span class="pln"> </span><span class="pun">(±</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> variance</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> complete guess</span><span class="pun">!</span><span class="pln">
</span><span class="pun">/;</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> the total gold value </span><span class="kwd">of</span><span class="pln"> the items created by a recipe</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> above
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeOutputValue</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the gold difference </span><span class="kwd">of</span><span class="pln"> the total output value </span><span class="kwd">of</span><span class="pln"> the recipe minus the total cost </span><span class="kwd">of</span><span class="pln"> the ingredients</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> above
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeProfit</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the </span><span class="pun">%</span><span class="pln"> profit made between the cost </span><span class="kwd">of</span><span class="pln"> the ingredients versus the output value </span><span class="kwd">of</span><span class="pln"> the recipe</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> above
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRecipeProfitMargin</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pln"> akRecipe</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> recipes </span><span class="kwd">with</span><span class="pln"> the most profits to be made</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">:</span><span class="pln"> </span><span class="typ">How</span><span class="pln"> many recipes to </span><span class="kwd">return</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckIngredients</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> must have the ingredients </span><span class="kwd">for</span><span class="pln"> recipe to be returned</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SortBy</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Sort</span><span class="pln"> by profit margin </span><span class="pun">(%</span><span class="pln"> profit</span><span class="pun">).</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Sort</span><span class="pln"> by absolute profit</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Element</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> being the best and element n being the least profitable</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterKeywords</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that result in an item </span><span class="kwd">with</span><span class="pln"> at least one </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">:</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> note above</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any tempering recipes from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes crafted </span><span class="kwd">with</span><span class="pln"> these workbench keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no workbench filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Normal</span><span class="pln"> operation</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only recipes that don</span><span class="str">'</span><span class="pln">t use any </span><span class="kwd">of</span><span class="pln"> the listed workbench keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> player has the perks to craft the recipe</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Check</span><span class="pln"> any global conditions are satisfied</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetMostProfitableRecipes</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckIngredients</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">SortBy</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterKeywords</span><span class="pun">,</span><span class="pln"> \
														</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Accuracy</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeTempering</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">WorkbenchFilter</span><span class="pun">,</span><span class="pln"> \
														</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorkbenchFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckPerks</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
														</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CheckGlobals</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26161</guid><pubDate>Mon, 17 Aug 2026 15:30:54 +0000</pubDate></item><item><title>Room Mapping System</title><link>https://www.loverslab.com/blogs/entry/26159-room-mapping-system/</link><description><![CDATA[<p>
	<span id="cke_bm_94S">This system uses the navmesh to build a picture of what kind of shape an interior cell takes. This allows you to ask questions like: </span>
</p>

<ul>
	<li>
		<span id="cke_bm_94S">How many rooms in this cell? </span>
	</li>
	<li>
		<span>What room am I in? </span>
	</li>
	<li>
		<span>Who's in this room with me? </span>
	</li>
	<li>
		<span>What kind of things are in this room?</span>
	</li>
	<li>
		<span>What rooms are adjacent to this room? </span>
	</li>
	<li>
		<span>How many exits does this room have? </span>
	</li>
	<li>
		<span>Where are the exits from this room?</span>
	</li>
	<li>
		<span>Where are the exits from this cell?</span>
	</li>
	<li>
		<span>Roughly what size is a room? And by extension which room is the biggest/smallest? </span>
	</li>
	<li>
		<span>Roughly where is the center?</span>
	</li>
	<li>
		How far is the actual path between two actors? (They may be physically close but there might also be a wall in the way). 
	</li>
</ul>

<p>
	 
</p>

<p>
	Any actor or object ref can be tracked for room change events. <br>
	<br>
	If Belethor room == 1 &amp; Player room == 1 then Belethor and the player are in the same room. <br>
	If Player room changes to 2. Should Belethor follow the player?
</p>

<p>
	 
</p>

<p>
	I hope to eventually be able to give you an idea of the purpose of the room though this could never be absolutely definitive. 
</p>

<p>
	 
</p>

<p>
	Here's a video of me plodding around a couple of cells. The player is tracked for room change events. Every time the player changes room we get an event to tell you which room I was in and which room I'm in now. AutoRoomMap is turned on so every time I change room the system maps out the current room with soul gems - It's a visual debugging functionality to make sure the map is right. 
</p>

<p>
	 
</p>

<p>
	 
</p>

<div class="ipsEmbeddedVideo" contenteditable="false">
	<div>
		<iframe allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share" frameborder="0" height="240" referrerpolicy="strict-origin-when-cross-origin" src="https://player.vimeo.com/video/1196058688?app_id=122963" title="Timeline 1" width="426"></iframe>
	</div>
</div>

<p>
	<br>
	<br>
	API surface thus far:<br>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5645_15" style=""><span class="pun">;========================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Room</span><span class="pln"> </span><span class="typ">Detection</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Experimental</span><span class="pun">)(</span><span class="pln">WIP</span><span class="pun">)</span><span class="pln"> </span><span class="pun">====================================================</span><span class="pln">
</span><span class="pun">;========================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Register</span><span class="pln"> a form </span><span class="kwd">for</span><span class="pln"> reference room change events</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Registrations</span><span class="pln"> survive save </span><span class="pun">+</span><span class="pln"> reload</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_ActorRoomChange</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> akActor</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">OldRoom</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NewRoom</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akActor</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> actor that changed room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">OldRoom</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room akActor came from</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NewRoom</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room akActor is now in</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomTrackActor</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unregister</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> reference </span><span class="kwd">for</span><span class="pln"> room change events</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomUntrackActor</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Untrack</span><span class="pln"> all references</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomUntrackAll</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> reference registered </span><span class="kwd">for</span><span class="pln"> room change events on </span><span class="kwd">this</span><span class="pln"> form</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomIsTrackedActor</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> akRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> all references registered </span><span class="kwd">for</span><span class="pln"> tracking on </span><span class="kwd">this</span><span class="pln"> form</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetTrackedActors</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> whether </span><span class="kwd">this</span><span class="pln"> form has been registered in the room system</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> opening</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> stair</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> not registered</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomIsRegisteredStatic</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomRegisterStatic</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> akForm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> aiType</span><span class="pun">,</span><span class="pln"> string asFile</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">When</span><span class="pln"> registering an opening</span><span class="pun">,</span><span class="pln"> stand in the center </span><span class="kwd">of</span><span class="pln"> the opening and face the </span><span class="str">'door jamb'</span><span class="pun">,</span><span class="pln"> so that you</span><span class="str">'</span><span class="pln">re facing parallel
</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> the dividing wall and at </span><span class="lit">90</span><span class="pln"> degrees from the angle </span><span class="kwd">of</span><span class="pln"> the opening</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> more centered you are in both the x</span><span class="pun">,</span><span class="pln"> y axis the better the results generally</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Type</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> opening</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> stair
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FileName</span><span class="pun">:</span><span class="pln"> filename only </span><span class="pun">(</span><span class="pln">no path separators</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="str">"mymod.json"</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomRegisterStatic</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akRef</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Type</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">FileName</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Attempts</span><span class="pln"> to add a boundary where akActor is standing</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> success</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Stand</span><span class="pln"> in the center </span><span class="kwd">of</span><span class="pln"> the opening and face parallel </span><span class="kwd">with</span><span class="pln"> the dividing wall</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> system will </span><span class="kwd">try</span><span class="pln"> to find the closest</span><span class="pun">,</span><span class="pln"> parallel edge to create a </span><span class="kwd">new</span><span class="pln"> boundary</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Boundaries</span><span class="pln"> are saved to json </span><span class="pun">&lt;</span><span class="typ">FileName</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomAddBoundary</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">FileName</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Attempts</span><span class="pln"> to remove a boundary within </span><span class="typ">Radius</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> the player</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> success</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> all manual boundaries within </span><span class="pun">&lt;</span><span class="typ">Radius</span><span class="pun">&gt;</span><span class="pln"> from all jsons</span><span class="pun">.</span><span class="pln">  
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomRemoveBoundary</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Radius</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">64.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> how many manual boundaries in the current cell</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetOverrideCount</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomRegisterObjectsAs</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> aiRole</span><span class="pun">,</span><span class="pln"> string asModName</span><span class="pun">)</span><span class="pln"> native global
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomUnregisterMod</span><span class="pun">(</span><span class="pln">string asModName</span><span class="pun">)</span><span class="pln"> native global
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetClassificationScores</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> aiRoom</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomUnregisterStatic</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Remap</span><span class="pln"> the current cell again</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomRemapCell</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Force</span><span class="pln"> the system to ignore a particular door reference</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Need</span><span class="pln"> to call </span><span class="typ">RoomRemapCell</span><span class="pun">()</span><span class="pln"> afterwards to update the room map</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Added</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> after discovering a door buried in a wall in </span><span class="typ">Dragonsreach</span><span class="pln"> messing up the room mapping</span><span class="pun">...</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unlike</span><span class="pln"> </span><span class="typ">RoomIsIgnoredDoorEid</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> affects a single reference</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomIgnoreDoorRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Opposite</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">RoomIgnoreDoorRef</span><span class="pun">().</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomUnignoreDoorRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> reference is in MGF</span><span class="str">'</span><span class="pln">s door reference ignore list</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomIsIgnoredDoorRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> defined </span><span class="pun">(</span><span class="pln">via json</span><span class="pun">)</span><span class="pln"> as a </span><span class="str">'weird door'</span><span class="pln"> the system should ignore</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Display</span><span class="pln"> cases</span><span class="pun">,</span><span class="pln"> shackles</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is essentially a string check </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="str">'s base EditorID against MGF'</span><span class="pln">s list </span><span class="kwd">of</span><span class="pln"> strings to ignore</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomIsIgnoredDoorEid</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> boundary midpoints as flat </span><span class="pun">[</span><span class="pln">x</span><span class="pun">,</span><span class="pln">y</span><span class="pun">,</span><span class="pln">z</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...]</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">These</span><span class="pln"> are the positions </span><span class="kwd">of</span><span class="pln"> the entrances</span><span class="pun">/</span><span class="pln">exits to a room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetBoundaryMidpoints</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the navmesh triangle count </span><span class="kwd">of</span><span class="pln"> the room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetTriangleCount</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetTriangleForRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetTriangleFlags</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Tries</span><span class="pln"> to </span><span class="kwd">return</span><span class="pln"> the center position </span><span class="kwd">of</span><span class="pln"> the navmesh </span><span class="kwd">for</span><span class="pln"> the room </span><span class="kwd">with</span><span class="pln"> the specified clearance around it</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Useful</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> placing markers etc</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Always</span><span class="pln"> check the returned array</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> to check </span><span class="kwd">for</span><span class="pln"> failure</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> will always </span><span class="kwd">try</span><span class="pln"> to </span><span class="kwd">return</span><span class="pln"> the best point even </span><span class="kwd">if</span><span class="pln"> the clearance isn</span><span class="str">'</span><span class="pln">t fully met or a clearance </span><span class="kwd">of</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln"> is requested</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note</span><span class="pln"> that </span><span class="kwd">this</span><span class="pln"> is the navmesh center and not the room center really</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetCenter</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Clearance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> would be a more </span><span class="str">'exact'</span><span class="pln"> center </span><span class="kwd">of</span><span class="pln"> the room geometrically</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Probably</span><span class="pln"> still not perfect because </span><span class="kwd">of</span><span class="pln"> the navmesh shape</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Though</span><span class="pln"> it might be floating in air a bit or inside some object like a pillar or fireplace etc</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Also</span><span class="pln"> check that length </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> failure</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetCentroid</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Get</span><span class="pln"> the area covered by the navmesh associated </span><span class="kwd">with</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> the actual area </span><span class="kwd">of</span><span class="pln"> the room</span><span class="pun">.</span><span class="pln"> </span><span class="typ">But</span><span class="pln"> should be a decent indicator </span><span class="kwd">of</span><span class="pln"> room size</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetArea</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> total number </span><span class="kwd">of</span><span class="pln"> rooms detected in player</span><span class="str">'</span><span class="pln">s current cell
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetCount</span><span class="pun">()</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the indices </span><span class="kwd">of</span><span class="pln"> all connecting rooms</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetAdjacentRooms</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> actor</span><span class="str">'</span><span class="pln">s room within the cell</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetIndexForActor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> akActor</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> reference</span><span class="str">'</span><span class="pln">s room within the cell</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetIndexForRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Gets</span><span class="pln"> the number </span><span class="kwd">of</span><span class="pln"> entrances</span><span class="pun">/</span><span class="pln">exits to a room</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Includes</span><span class="pln"> load doors</span><span class="pun">,</span><span class="pln"> interior doors</span><span class="pun">,</span><span class="pln"> door arches </span><span class="pun">(</span><span class="pln">without doors</span><span class="pun">)</span><span class="pln"> and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t go past any </span><span class="kwd">of</span><span class="pln"> the rooms boundaries</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 						  </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Expand</span><span class="pln"> over open boundaries like door arches and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="typ">RoomGetExitCount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">RoomGetDoors</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> then it</span><span class="str">'</span><span class="pln">s probably </span><span class="pun">(</span><span class="pln">but not certainly</span><span class="pun">)</span><span class="pln"> a room </span><span class="kwd">with</span><span class="pln"> a single entrance </span><span class="kwd">with</span><span class="pln"> a door</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="typ">RoomGetExitCount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">RoomGetDoors</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> then it</span><span class="str">'s probably (but not certainly) a room with a single '</span><span class="pln">open</span><span class="str">'</span><span class="pln"> entrance</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetExitCount</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> door references that are associated </span><span class="kwd">with</span><span class="pln"> a room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">DoorTypes</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> non</span><span class="pun">-</span><span class="pln">load doors only</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> load doors only
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t go past any </span><span class="kwd">of</span><span class="pln"> the rooms boundaries</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 						  </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Expand</span><span class="pln"> over open boundaries like door arches and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetDoors</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">DoorTypes</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> all furniture references in a room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t go past any </span><span class="kwd">of</span><span class="pln"> the rooms boundaries</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 						  </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Expand</span><span class="pln"> over open boundaries like door arches and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetFurniture</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> object references </span><span class="kwd">with</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the listed keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t go past any </span><span class="kwd">of</span><span class="pln"> the rooms boundaries</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 						  </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Expand</span><span class="pln"> over open boundaries like door arches and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetRefsWithKeywords</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> as </span><span class="typ">RoomGetRefsWithKeywords</span><span class="pln"> but only returns a count</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomCountRefsWithKeywords</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> references in </span><span class="pun">&lt;</span><span class="typ">RoomIndex</span><span class="pun">&gt;</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> type </span><span class="pun">&lt;</span><span class="typ">FormType</span><span class="pun">&gt;.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FormType</span><span class="pun">:</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//ck.uesp.net/wiki/GetType_-_Form</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t go past any </span><span class="kwd">of</span><span class="pln"> the rooms boundaries</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 						  </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Expand</span><span class="pln"> over open boundaries like door arches and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetRefsOfType</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FormType</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> all actors in a room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the room to check</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'</span><span class="pln">t go past any </span><span class="kwd">of</span><span class="pln"> the rooms boundaries</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 						  </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Expand</span><span class="pln"> over open boundaries like door arches and stairs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetActors</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExpandOverOpenBoundary</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Approximate</span><span class="pln"> navmesh path distance in game units between the positions </span><span class="kwd">of</span><span class="pln"> the two references</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln"> </span><span class="kwd">if</span><span class="pun">:</span><span class="pln">	either ref is </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> outside the navmesh</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">					they are in different cells</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">					the room data isn</span><span class="str">'</span><span class="pln">t ready yet
</span><span class="pun">;</span><span class="pln">					no path exists within the A</span><span class="pun">*</span><span class="pln"> node budget </span><span class="pun">(</span><span class="lit">8192</span><span class="pln"> triangles</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetDistance</span><span class="pln"> will always be </span><span class="pun">&lt;=</span><span class="pln"> than </span><span class="typ">RoomGetPathDistance</span><span class="pun">.</span><span class="pln"> </span><span class="typ">What</span><span class="str">'</span><span class="pln">s the point </span><span class="kwd">of</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">?</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RoomGetPathDistance</span><span class="pun">(</span><span class="typ">PlayerRef</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pun">.</span><span class="typ">GetDistance</span><span class="pun">(</span><span class="typ">ObjRef</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">~</span><span class="lit">1.4</span><span class="pln"> means that there is a significant difference between
</span><span class="pun">;</span><span class="pln"> direct distance to the object and the pathing distance to the object</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> IE</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> could be through a wall or on another floor</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Despite</span><span class="pln"> the name </span><span class="kwd">this</span><span class="pln"> works in exterior cells too though be aware that it has a distance limit due to the triangle budget above and
</span><span class="pun">;</span><span class="pln"> the object must be in the same cell</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> navmesh island</span><span class="pun">:</span><span class="pln">	A</span><span class="pun">*</span><span class="pln"> on triangle adjacency graph</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Different</span><span class="pln"> islands</span><span class="pun">:</span><span class="pln">	</span><span class="typ">Dijkstra</span><span class="pln"> on the room boundary graph</span><span class="pun">,</span><span class="pln"> straight</span><span class="pun">-</span><span class="pln">line between boundary midpoints</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln">                      	</span><span class="typ">Less</span><span class="pln"> precise but handles multi</span><span class="pun">-</span><span class="pln">level cells</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetPathDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">ObjRef2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a flat array </span><span class="kwd">of</span><span class="pln"> the navmesh vertices that constitute </span><span class="kwd">this</span><span class="pln"> room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> elements are in triplets</span><span class="pun">.</span><span class="pln"> </span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> x1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> y1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> z1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="lit">4</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> x2</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="lit">5</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> y2</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="lit">6</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> z2 etc
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomGetNavmeshVertices</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Places</span><span class="pln"> </span><span class="typ">MarkerForms</span><span class="pln"> at every vertex that constitute the room</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Easy</span><span class="pln"> visualization </span><span class="kwd">of</span><span class="pln"> the room limits</span><span class="pun">.</span><span class="pln"> </span><span class="typ">References</span><span class="pln"> are spawned </span><span class="kwd">with</span><span class="pln"> persist </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">But</span><span class="pln"> it</span><span class="str">'</span><span class="pln">s your responsibility to manage the returned object references </span><span class="pun">(</span><span class="pln">cleanup</span><span class="pun">).</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RoomMap</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RoomIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">MarkerForm</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26159</guid><pubDate>Mon, 17 Aug 2026 15:30:42 +0000</pubDate></item><item><title>LocTrack</title><link>https://www.loverslab.com/blogs/entry/26165-loctrack/</link><description><![CDATA[<p>
	Mcgufin's player location tracking system has several layers: <br>
	    <br>
	Cell: 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix">
		<p>
			Cell change tracker:
		</p>

		<p>
			 
		</p>

		<p>
			Just a straight up cell change event. If you're using Mcgufin as a master and need cell change events then might as well use Mcgufins'.<br>
			It's implemented natively so no magic effect and no invisible object following you around and it has a practical event payload. 
		</p>

		<p>
			 
		</p>

		<p>
			See script: _MGF_Util
		</p>

		<p>
			 
		</p>

		<p>
			Usage:
		</p>

		<p>
			Event OnInit()<br>
			    _MGF_Util.RegisterForCellChange(Self)<br>
			EndEvent
		</p>

		<p>
			 
		</p>

		<p>
			Event On_MGF_CellChange(Cell akCell, Location akLocation, WorldSpace akWorldspace, bool abInterior)<br>
			    ; Cell changed.<br>
			EndEvent
		</p>
	</div>
</div>

<p>
	<br>
	Area / Hold / World Tracking: 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix">
		<p>
			The is more of a semantic 'geography' system than anything else. 
		</p>

		<p>
			 
		</p>

		<p>
			Your current location is expressed by Mcgufin with GlobalVariables: <br>
			_MGF_PcLoc2_AreaIndex: The player's current area. <br>
			_MGF_PcLoc1_HoldIndex: The player's current hold. 
		</p>

		<p>
			_MGF_PcLoc0_WorldIndex: The player's current 'world'. 
		</p>

		<p>
			 
		</p>

		<p>
			And string script properties: <br>
			AreaStateName: The player's current area. This is set as the 'main' area location's EditorID - 'locationstates' in LocationMap.json. 
		</p>

		<p>
			HoldStateName: The player's current hold. The hold name with any whitespace removed ('TheRift') - 'holdstates' in LocationMap.json. 
		</p>

		<p>
			WorldStateName: The player's current world - 'worldstates' in LocationMap.json. 
		</p>

		<p>
			 
		</p>

		<p>
			Incidentally, these are the same strings you'd pass to LocOpsArea/Hold for an information request about a specific area/hold. 
		</p>

		<p>
			 
		</p>

		<p>
			Because LocationMap.json is a json and can be modified Mcgufin will send event "_MGF_LocTrack_JsonReload" when LocTrack's json is reloaded so that outside mods can update any variables they are using. 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_8" style=""><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_JsonReload"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LocTrack_JsonReload"</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LocTrack_JsonReload</span><span class="pun">(</span><span class="pln">string eventName</span><span class="pun">,</span><span class="pln"> string strArg</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> numArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> sender</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Update</span><span class="pln"> local variables </span><span class="kwd">if</span><span class="pln"> needed</span><span class="pun">.</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

		<p>
			 
		</p>

		<p>
			Areas:
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="">
			<div class="ipsSpoiler_header">
				<span>Spoiler</span>
			</div>

			<div class="ipsSpoiler_contents ipsClearfix">
				<p>
					This system treats groups of locations as single entities. Useful when you don't really care where exactly the PC is, only that they are somewhere in Riverwood or somewhere in Rorikstead or Winterhold etc. Walled cities like Whiterun are a bit of a special case. Inside the walls and outside the walls are defined as separate areas. So the global variable has one value for inside the walls and another for outside. A mod event is sent whenever the player moves between any area. 
				</p>

				<p>
					 
				</p>

				<p>
					This system is also capable of 'learning' the structure of the area when location mods are involved. For example if a town mod placed a farmhouse within the Whiterun outskirts region then inside the farmhouse will automatically be mapped to being within the Whiterun outskirts region IF (and only if) the player enters the cell via an activatable door (Not via console, teleport or seamless transition entrance (cave gap) etc). This way you shouldn't get false events when the PC enters interior cells that would normally be undefined. 
				</p>

				<p>
					 
				</p>

				<p>
					Areas are usually towns, cities or other localized areas. Eg: Kynesgrove, High Hrothgar, military camps, orc strongholds etc. <br>
					Mcgufin sets a global variable and sends an event when the PC changes area. 
				</p>

				<p>
					 
				</p>

				<p>
					Global: _MGF_PcLoc2_AreaIndex: <br>
					                        0 = Wilderness<br>
					                        1 = Undefined (Not wilderness but not defined - likely a dungeon entrance etc)<br>
					                        x = ?
				</p>

				<p>
					<br>
					Locations are mapped via LocationMap.json. 'locationstates' is a 1:1 map with 'locationindex' and 'areanames'.
				</p>

				<p>
					<br>
					Global Usage:
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_12" style=""><span class="typ">MyGlob</span><span class="pun">.</span><span class="typ">SetValueInt</span><span class="pun">(</span><span class="typ">LocTrack</span><span class="pun">.</span><span class="typ">GetIndexForArea</span><span class="pun">(</span><span class="str">"RiverwoodLocation"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Because</span><span class="pln"> json can potentially be modified

</span><span class="pun">;</span><span class="typ">Dialogue</span><span class="pln"> </span><span class="pun">(</span><span class="pln">or anything </span><span class="kwd">else</span><span class="pun">)</span><span class="pln"> condition</span><span class="pun">:</span><span class="pln">
_MGF_PcLoc2_AreaIndex </span><span class="pun">==</span><span class="pln"> </span><span class="typ">MyGlob</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="str">"Welcome to Riverwood"</span></pre>

				<p>
					<br>
					Event usage:
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_16" style=""><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_AreaChange"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LocTrack_AreaChange"</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LocTrack_AreaChange</span><span class="pun">(</span><span class="pln">string eventName</span><span class="pun">,</span><span class="pln"> string strArg</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> numArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> sender</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Do</span><span class="pln"> area stuff</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">GoToState</span><span class="pun">(</span><span class="pln">strArg</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> strArg is the location editor name</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">WhiterunLocation</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">WhiterunLocation</span><span class="pln">
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnBeginState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Set</span><span class="pln"> up stuff </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Whiterun</span><span class="pln">
	</span><span class="typ">EndEvent</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLocalInnkeeper</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Hulda</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnEndState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Tear</span><span class="pln"> down stuff </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Whiterun</span><span class="pln">
	</span><span class="typ">EndEvent</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">RiverwoodLocation</span><span class="pln">
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnBeginState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Set</span><span class="pln"> up stuff </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Riverwood</span><span class="pln">
	</span><span class="typ">EndEvent</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLocalInnkeeper</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Orgnar</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnEndState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Tear</span><span class="pln"> down stuff </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Riverwood</span><span class="pln">
	</span><span class="typ">EndEvent</span><span class="pln">
</span><span class="typ">EndState</span></pre>

				<p>
					 
				</p>
			</div>
		</div>

		<p>
			Hold: 
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="">
			<div class="ipsSpoiler_header">
				<span>Spoiler</span>
			</div>

			<div class="ipsSpoiler_contents ipsClearfix">
				<p>
					Tracks which of the 9 holds the PC is currently in. Works in interiors, town exteriors and out in the wilds too. This system CURRENTLY requires the user run the XCLR region patch TesEdit script and good management of the resulting patch plugin (Smash patch etc). Consult the map to see hold borders. Borders don't tend to extend to ALL areas of the map simply because I didn't want Mcgufin to 'overreach' into possible modded areas. So you can NOT be in any hold while still in the Skyrim world. 
				</p>

				<p>
					 
				</p>

				<p>
					Global: _MGF_PcLoc1_HoldIndex: <br>
					                                0 = Wilderness (Not in any hold)<br>
					                                1 = Eastmarch<br>
					                                ; Holds are unlikely to change but I still wouldn't recommend hardcoded values. LocationMap.json can be modified. <br>
					                                ; LocTrack.GetIndexForHold("Eastmarch")
				</p>

				<p>
					 
				</p>

				<p>
					Event sent: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_25" style=""><span class="typ">SendModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_HoldChange"</span><span class="pun">,</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pun">,</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">HoldIndex</span><span class="pun">)</span></pre>

				<p>
					Usage:
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_27" style=""><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_HoldChange"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LocTrack_HoldChange"</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LocTrack_HoldChange</span><span class="pun">(</span><span class="pln">string eventName</span><span class="pun">,</span><span class="pln"> string strArg</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> numArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> sender</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Do</span><span class="pln"> hold stuff</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">GoToState</span><span class="pun">(</span><span class="pln">strArg</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> strArg is the hold name </span><span class="kwd">with</span><span class="pln"> any white space removed</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="str">"The Pale"</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="str">"ThePale"</span><span class="pun">.</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> it can be used in state names
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Whiterun</span><span class="pln">
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnBeginState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> entered </span><span class="typ">Whiterun</span><span class="pln"> hold
	</span><span class="typ">EndEvent</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetJarlHere</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Balgruuf</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnEndState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> left </span><span class="typ">Whiterun</span><span class="pln"> hold
	</span><span class="typ">EndEvent</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">TheRift</span><span class="pln">
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnBeginState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> entered </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Rift</span><span class="pln"> hold
	</span><span class="typ">EndEvent</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetJarlHere</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Laila</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnEndState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> left </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Rift</span><span class="pln"> hold
	</span><span class="typ">EndEvent</span><span class="pln">
</span><span class="typ">EndState</span></pre>

				<p>
					 
				</p>

				<p>
					 
				</p>
			</div>
		</div>

		<p>
			 
		</p>

		<p>
			World: 
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="">
			<div class="ipsSpoiler_header">
				<span>Spoiler</span>
			</div>

			<div class="ipsSpoiler_contents ipsClearfix">
				<p>
					Probably the least useful. Mcgufin only tracks a few 'worlds'. Skyrim, Sovngarde, The Soul Cairn, Solstheim and they are treated as human logical worlds rather than game logic worlds. Ie: Most of these worlds are made up of multiple worldspaces. The overall idea is that if Mcgufin says the player is somewhere in Skyrim then they should be geographically somewhere in Skyrim regardless of whether they're indoors, outdoors, in a city or in some niche pocket worldspace. 
				</p>

				<p>
					 
				</p>

				<p>
					Event sent: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_29" style=""><span class="typ">SendModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_WorldChange"</span><span class="pun">,</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WorldStateName</span><span class="pun">,</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span></pre>

				<p>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_35" style=""><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_WorldChange"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LocTrack_WorldChange"</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LocTrack_WorldChange</span><span class="pun">(</span><span class="pln">string eventName</span><span class="pun">,</span><span class="pln"> string strArg</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> numArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> sender</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Do</span><span class="pln"> world change stuff
	</span><span class="typ">GoToState</span><span class="pun">(</span><span class="pln">strArg</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> strArg is the world name </span><span class="kwd">with</span><span class="pln"> any white space removed</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="str">"The Soul Cairn"</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="str">"TheSoulCairn"</span><span class="pun">.</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> it can be used in state names
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">TheSoulCairn</span><span class="pln">
	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnBeginState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> entered </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Soul</span><span class="pln"> </span><span class="typ">Cairn</span><span class="pln">
	</span><span class="typ">EndEvent</span><span class="pln">

	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnEndState</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> left </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Soul</span><span class="pln"> </span><span class="typ">Cairn</span><span class="pln">
	</span><span class="typ">EndEvent</span><span class="pln">
</span><span class="typ">EndState</span></pre>

				<p>
					 
				</p>
			</div>
		</div>
	</div>
</div>

<p>
	<br>
	Area Proximity:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix">
		<p>
			Events only. Fires when you get 'close to an area'. This is usually when a center marker's OnCellAttach() event fires. So how close to an area it fires is determined by where the marker is and how wide the area spans (and the number of cells configured to load in the users ini settings). IE: If it's a really small place like a shack or cabin it may fire from relatively far away. If it's a biggish town it may not fire until a lot closer. Note that because of the size and span of walled cities and the outskirts of walled cities, this event does not fire for them. A center marker would be too far away to be effective usually. Use the area tracker above for walled cities. 
		</p>

		<p>
			 
		</p>

		<p>
			Why use this? Sometimes you need to do things as the player approaches a location but before the player actually arrives there. SLS's enforcer randomizer uses this to randomize the enforcer Npcs as the player approaches but before they'd usually be within visible range of the enforcers. I've decided against gating the events in any way so that you can decide how it's gated.
		</p>

		<p>
			 
		</p>

		<p>
			But as an example, in the case of SLS's enforcer randomizer, I want to run it while the player is far enough away that they can't see the enforcers but not so close that they would see them being enabled/disabled. So I added a basic distance check to the marker on SLS's side. Around &gt;= 8000.0 seems to work well. If the PC is at a distance of &gt; 8000.0 when the event fires<br>
			it likely means that they walked into the area and that they 1) didn't fast travel into the area and 2) didn't just exit a building in the area. 
		</p>

		<p>
			<br>
			There is one event for approaching a location and another for departing a location. At default ugridsToLoad departing usually occurs around the 12000 - 15000 distance mark. Distance to the marker when entering an internal cell will be astronomically high even if the marker is just outside the door.
		</p>

		<p>
			 
		</p>

		<p>
			Event sent (approaching area): 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_38" style=""><span class="typ">ObjRef</span><span class="pun">.</span><span class="typ">SendModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_ApproachingArea"</span><span class="pun">,</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocStateName</span><span class="pun">,</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">.</span><span class="typ">GetDistance</span><span class="pun">(</span><span class="typ">PlayerRef</span><span class="pun">))</span></pre>

		<p>
			Usage:
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_40" style=""><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_ApproachingArea"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LocTrack_ApproachingArea"</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LocTrack_ApproachingArea</span><span class="pun">(</span><span class="pln">string eventName</span><span class="pun">,</span><span class="pln"> string strArg</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> numArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> sender</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json </span><span class="str">'locationstates'</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> distance to the marker
	</span><span class="pun">;</span><span class="pln"> sender </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> marker object reference
</span><span class="typ">EndEvent</span></pre>

		<p>
			<br>
			Event sent (departing area):<br>
			 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_44" style=""><span class="typ">ObjRef</span><span class="pun">.</span><span class="typ">SendModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_DepartedArea"</span><span class="pun">,</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LocStateName</span><span class="pun">,</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="pun">.</span><span class="typ">GetDistance</span><span class="pun">(</span><span class="typ">PlayerRef</span><span class="pun">))</span></pre>

		<p>
			Usage:
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1072_46" style=""><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LocTrack_DepartedArea"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LocTrack_DepartedArea"</span><span class="pun">)</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LocTrack_DepartedArea</span><span class="pun">(</span><span class="pln">string eventName</span><span class="pun">,</span><span class="pln"> string strArg</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> numArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> sender</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AreaStateName</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json </span><span class="str">'locationstates'</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> distance to the marker
	</span><span class="pun">;</span><span class="pln"> sender </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> marker object reference
</span><span class="typ">EndEvent</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26165</guid><pubDate>Mon, 17 Aug 2026 15:30:03 +0000</pubDate></item><item><title>Fork Pregnancy</title><link>https://www.loverslab.com/blogs/entry/26162-fork-pregnancy/</link><description><![CDATA[<p>
	Pregnancy Fork is an interoperability adapter layer that presents a single unified surface for modders to use. <br>
	Single surface interface to 2/3 backend pregnancy mods. Modders don't need to know anything about the underlying pregnancy mod a user has installed. 
</p>

<p>
	 
</p>

<p>
	Another great feature of this approach is that e<span style="background-color:#1c1c1c; color:#bcbcbc; font-size:14px; text-align:start">xpanding the system to include another pregnancy mod simply involves authoring a new backend interface. Once that backend interface is in place then any mod accessing pregnancy functions via MGF is <u><strong>automatically compatible</strong></u> with the new pregnancy mod without any changes on their end!</span>
</p>

<p>
	 
</p>

<p>
	Structure: 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix">
		<p>
			<a class="ipsAttachLink ipsAttachLink_image" href="https://www.loverslab.com/uploads/monthly_2026_08/image.png.e362d68367daff2fb61d0267b4edbf4d.png" data-fileid="2654910" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="2654910" data-ratio="56.25" data-unique="ljzqnpt01" width="1920" alt="image.png" src="https://www.loverslab.com/uploads/monthly_2026_08/image.thumb.png.62775ffc865f5fd96893ac0ea5275063.png"></a>
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Highlights:
</p>

<ul>
	<li>
		Unified pregnancy events - _MGF_Preg_Conceived, _MGF_Preg_LaborStarted, _MGF_Preg_Birthed, _MGF_Preg_Aborted. 
	</li>
	<li>
		Query functions - IsPregnant(), GetFathers(), GetFatherRaces(), GetPregnancyPercent(), GetTrimester(), GetCyclePhase(). 
	</li>
	<li>
		'Action' functions - Impregnate(), ForceLabor(), Abort(). 
	</li>
	<li>
		Faction Data:
		<ul>
			<li>
				MGF_PregStatusFact. Rank -1/0 - Not pregnant. 1 -&gt; First trimester. 2 -&gt; Second trimester. 3 -&gt; Third trimester. 
			</li>
			<li>
				_MGF_PregActiveWithPcFact - This Npc is the Father of the player's current pregnancy. 
			</li>
			<li>
				_MGF_PregConceivedWithPcFact - This Npc has conceived with a female player &lt;FactionRank&gt; times. 
			</li>
			<li>
				_MGF_PregBirthedWithPcFact - This Npc has Fathered &lt;FactionRank&gt; babies with a female player. 
			</li>
		</ul>
	</li>
</ul>

<p>
	 
</p>

<p>
	Mods: <br>
	Fertility Mode v3 Fixes and Tweaks - Built, tested. <br>
	Beeing Female NG - Built, requires testing currently. <br>
	Fertility Mode Reloaded - In process. <br>
	Fertility Mode (base) and Beeing Female (base) - Unsupported. <br>
	<br>
	_MGF_ForkPregnancy:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_2954_6" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_ForkPregnancy extends </span><span class="typ">Quest</span><span class="pln">  

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fork</span><span class="pln"> script </span><span class="kwd">for</span><span class="pln"> when you don</span><span class="str">'</span><span class="pln">t give a damn which pregnancy mod is installed
</span><span class="pun">;</span><span class="pln"> and just want to ask common</span><span class="pun">,</span><span class="pln"> conceptual questions about an actor</span><span class="pun">.</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Currently</span><span class="pln"> covers</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Beeing</span><span class="pln"> </span><span class="typ">Female</span><span class="pln"> NG
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Fertility</span><span class="pln"> </span><span class="typ">Mode</span><span class="pln"> v3 </span><span class="typ">Fixes</span><span class="pln"> and </span><span class="typ">Tweaks</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Fertility</span><span class="pln"> </span><span class="typ">Mode</span><span class="pln"> </span><span class="typ">Reloaded</span><span class="pln"> </span><span class="pun">(</span><span class="pln">not compatible </span><span class="kwd">with</span><span class="pln"> base </span><span class="typ">Fertility</span><span class="pln"> </span><span class="typ">Mode</span><span class="pln"> alone</span><span class="pun">,</span><span class="pln">
</span><span class="pun">;</span><span class="pln">     or </span><span class="kwd">with</span><span class="pln"> the </span><span class="typ">Fixes</span><span class="pln"> and </span><span class="typ">Tweaks</span><span class="pln"> patch </span><span class="pun">-</span><span class="pln"> pick one FM variant per game</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Pregnancy</span><span class="pln"> mod you want not here</span><span class="pun">?</span><span class="pln"> </span><span class="typ">Write</span><span class="pln"> the </span><span class="kwd">interface</span><span class="pln"> script</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Test</span><span class="pln"> it</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Send</span><span class="pln"> it to me</span><span class="pun">.</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> NOTE</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> </span><span class="typ">Fork</span><span class="pln"> only carries the surface all three mods can answer</span><span class="pun">.</span><span class="pln"> </span><span class="typ">There</span><span class="pln"> will not always be overlap</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Events</span><span class="pln"> </span><span class="pun">=================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unified</span><span class="pln"> conceptual</span><span class="pun">-</span><span class="pln">level events</span><span class="pun">,</span><span class="pln"> fired regardless </span><span class="kwd">of</span><span class="pln"> which backend mod is active</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln">	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_Preg_Conceived"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"OnConceived"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnConceived</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Father</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> may be </span><span class="typ">None</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> not every pregnancy has one on record
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">EndEvent</span><span class="pln">
</span><span class="pun">;</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	_MGF_Preg_Conceived		</span><span class="pun">-</span><span class="pln"> she just conceived				</span><span class="pun">-&gt;</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	_MGF_Preg_LaborStarted	</span><span class="pun">-</span><span class="pln"> labor has begun					</span><span class="pun">-&gt;</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	_MGF_Preg_Birthed		</span><span class="pun">-</span><span class="pln"> she has now given birth			</span><span class="pun">-&gt;</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Baby</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	_MGF_Preg_Aborted		</span><span class="pun">-</span><span class="pln"> pregnancy ended without a birth	</span><span class="pun">-&gt;</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;</span><span class="pln">	_MGF_Preg_TriCycle_Complete	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> trimester and menstrual cycle update has completed</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> IMPORTANT</span><span class="pun">:</span><span class="pln"> BF has the concept </span><span class="kwd">of</span><span class="pln"> multiple </span><span class="typ">Fathers</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">One</span><span class="pln"> pregnancy</span><span class="pun">,</span><span class="pln"> multiple babies</span><span class="pun">,</span><span class="pln"> different </span><span class="typ">Fathers</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> event only sends </span><span class="typ">Fathers</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln"> </span><span class="typ">You</span><span class="str">'</span><span class="pln">ll need to call </span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> you want all </span><span class="kwd">of</span><span class="pln"> them</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> FM </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Single</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note</span><span class="pun">:</span><span class="pln"> BF clears </span><span class="typ">Father</span><span class="pln"> data on </span><span class="typ">Abort</span><span class="pun">/</span><span class="typ">Birth</span><span class="pln"> so </span><span class="kwd">if</span><span class="pln"> you need them better </span><span class="kwd">get</span><span class="pln"> them on conception</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Baby</span><span class="pun">,</span><span class="pln"> on </span><span class="typ">Birthed</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> BF </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Some</span><span class="pln"> form</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Need</span><span class="pln"> to investigate what </span><span class="kwd">this</span><span class="pln"> form is</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> FM </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Nothing</span><span class="pln"> spawned until much later </span><span class="pun">(</span><span class="pln">baby grows up</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Might</span><span class="pln"> be expandable</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Also</span><span class="pln"> needs investigation</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Queryable</span><span class="pln"> </span><span class="typ">Data</span><span class="pln"> </span><span class="pun">========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Globals</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> _MGF_Globs </span><span class="pun">==================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	_MGF_PcPreg_CurrentBabyCount 	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> number </span><span class="kwd">of</span><span class="pln"> babies the player is currently pregnant </span><span class="kwd">with</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">	_MGF_PcPreg_CyclePhase			</span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> player</span><span class="str">'</span><span class="pln">s current menstrual cycle phase</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Factions</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> _MGF_Factions </span><span class="pun">==============================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">General</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		_MGF_PregStatusFact	</span><span class="pun">-</span><span class="pln">	</span><span class="typ">Any</span><span class="pln"> actor </span><span class="pun">(</span><span class="pln">including the player</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="lit">1</span><span class="pun">-</span><span class="lit">3</span><span class="pln"> </span><span class="pun">(</span><span class="pln">trimester</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">while</span><span class="pln"> pregnant</span><span class="pun">,</span><span class="pln"> removed on birth</span><span class="pun">/</span><span class="pln">abort</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Npcs</span><span class="pln"> impregnated by the player</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		_MGF_PregConceivedByPcFact	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Number</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> times </span><span class="kwd">this</span><span class="pln"> actor has been conceived by the player</span><span class="pun">,</span><span class="pln"> capped at </span><span class="lit">127.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		_MGF_PregBirthedByPcFact	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Number</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> times </span><span class="kwd">this</span><span class="pln"> actor has given birth by the player</span><span class="pun">,</span><span class="pln"> capped at </span><span class="lit">127.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		_MGF_PregActiveByPcFact		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> </span><span class="typ">Npc</span><span class="pln"> is currently pregnant by the player</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Npcs</span><span class="pln"> that got the player pregnant</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		_MGF_PregActiveWithPcFact </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> is currently carrying a pregnancy by </span><span class="kwd">this</span><span class="pln"> actor</span><span class="pun">.</span><span class="pln"> </span><span class="typ">There</span><span class="pln"> can be multiple </span><span class="typ">Fathers</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> BF</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="pln">multiple babies</span><span class="pun">,</span><span class="pln"> different </span><span class="typ">Fathers</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		_MGF_PregConceivedWithPcFact </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Number</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> times </span><span class="kwd">this</span><span class="pln"> actor has conceived a pregnancy </span><span class="kwd">with</span><span class="pln"> the player</span><span class="pun">,</span><span class="pln"> capped at </span><span class="lit">127.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		_MGF_PregBirthedWithPcFact </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Number</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> times </span><span class="kwd">this</span><span class="pln"> actor has fathered a birth </span><span class="kwd">with</span><span class="pln"> the player</span><span class="pun">,</span><span class="pln"> capped at </span><span class="lit">127.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Aliases</span><span class="pln"> </span><span class="pun">===============================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Impregnated</span><span class="pln"> player</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Current</span><span class="pln"> father </span><span class="kwd">of</span><span class="pln"> the player</span><span class="str">'</span><span class="pln">s ongoing pregnancy</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		</span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Father</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> the player</span><span class="str">'</span><span class="pln">s most recently CONCLUDED pregnancy </span><span class="pun">(</span><span class="pln">birth or abort</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		</span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Father</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> the player</span><span class="str">'</span><span class="pln">s most recent actual BIRTH specifically</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Impregnated</span><span class="pln"> by the player</span><span class="pun">:</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		</span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> three most recent </span><span class="typ">NPCs</span><span class="pln"> the player has conceived </span><span class="kwd">with</span><span class="pln"> </span><span class="pun">(</span><span class="pln">index </span><span class="lit">3</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> latest</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="lit">6</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">8</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> three most recent </span><span class="typ">NPCs</span><span class="pln"> the player has fathered a birth </span><span class="kwd">with</span><span class="pln"> </span><span class="pun">(</span><span class="pln">index </span><span class="lit">6</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> latest</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rolling</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> element conception</span><span class="pun">/</span><span class="pln">birthed logs </span><span class="kwd">for</span><span class="pln"> the player</span><span class="pun">.</span><span class="pln"> </span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Newest</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Array</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Oldest</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Impregnated</span><span class="pln"> player</span><span class="pun">:</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">GetConceivedWithPcLog</span><span class="pun">()</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">GetFatheredWithPcLog</span><span class="pun">()</span><span class="pln">

</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Player</span><span class="pln"> impregnated</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">GetConceivedByPcLog</span><span class="pun">()</span><span class="pln">
</span><span class="pun">;</span><span class="pln">		</span><span class="typ">GetFatheredByPcLog</span><span class="pun">()</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Plumbing</span><span class="pln"> </span><span class="pun">==============================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"BeeingFemaleNG.esp"</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Fertility Mode 3 Fixes and Updates.esp"</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> gating on the </span><span class="typ">Fixes</span><span class="pln"> and </span><span class="typ">Tweaks</span><span class="pln"> patch specifically </span><span class="pun">-</span><span class="pln"> base </span><span class="typ">Fertility</span><span class="pln"> </span><span class="typ">Mode</span><span class="pln"> alone is no longer supported
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Fertility Mode.esm"</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> informational only </span><span class="pun">(</span><span class="pln">see </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln"> under </span><span class="typ">State</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> FMR itself is NOT gated on </span><span class="kwd">this</span><span class="pun">,</span><span class="pln"> see </span><span class="typ">CornerstoneScript</span><span class="pln"> below
	
	</span><span class="typ">SetCyclePhaseNames</span><span class="pun">()</span><span class="pln">
	
	</span><span class="typ">DecideState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LoadOrderChanged"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LoadOrderChanged"</span><span class="pun">)</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">For</span><span class="pln"> </span><span class="typ">Status</span><span class="pun">-</span><span class="pln">board wiring
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_Preg_Conceived"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"OnPregConceived"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_Preg_Birthed"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"OnPregBirthed"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_Preg_Aborted"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"OnPregAborted"</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">ConceivedWithLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">BirthedWithLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ConceivedWithMeLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">BirthedWithMeLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">CurrentlyPregnantByPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">AllCurrentlyPregnant</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">

	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">GameTimeUpdatesAllowed</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">RegisterForSingleUpdateGameTime</span><span class="pun">(</span><span class="typ">PollIntervalHours</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_MQ101_Stage240"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_MQ101_Stage240"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GameTimeUpdatesAllowed</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetFormFromFile</span><span class="pun">(</span><span class="lit">0x03372B</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Skyrim.esm"</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">Quest</span><span class="pun">).</span><span class="typ">GetStage</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">240</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> MQ101
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_MQ101_Stage240</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">EventName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">StrArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">NumArg</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Sender</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">UnRegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_MQ101_Stage240"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">RegisterForSingleUpdateGameTime</span><span class="pun">(</span><span class="typ">PollIntervalHours</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetCyclePhaseNames</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">CyclePhaseNames</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayStringCreate</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Follicular"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">CyclePhaseNames</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Ovulation"</span><span class="pln">
	</span><span class="typ">CyclePhaseNames</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Luteal"</span><span class="pln">
	</span><span class="typ">CyclePhaseNames</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Menstruation"</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IncrementFactionRankCapped</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Target</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">Fact</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Clamp</span><span class="pln"> faction rank increases to avoid wrap around</span><span class="pun">.</span><span class="pln"> </span><span class="typ">GetFactionRank</span><span class="pln"> returns
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> an actor who isn</span><span class="str">'</span><span class="pln">t a member </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Fact</span><span class="pln"> at all </span><span class="pun">(</span><span class="pln">not </span><span class="str">"rank -1"</span><span class="pun">),</span><span class="pln"> so the
	</span><span class="pun">;</span><span class="pln"> first</span><span class="pun">-</span><span class="pln">ever occurrence needs to land on rank </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> not </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> would otherwise silently add them to the faction at </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> one event </span><span class="kwd">short</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Target</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">Fact</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Target</span><span class="pun">.</span><span class="typ">GetFactionRank</span><span class="pun">(</span><span class="typ">Fact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln">
			</span><span class="typ">Target</span><span class="pun">.</span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="typ">Fact</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">ElseIf</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">127</span><span class="pln">
			</span><span class="typ">Target</span><span class="pun">.</span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="typ">Fact</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Rank</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DecideState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Beeing</span><span class="pln"> </span><span class="typ">Female</span><span class="pln"> NG
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Bf"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ElseIf</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fertility</span><span class="pln"> </span><span class="typ">Mode</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Fixes</span><span class="pln"> and </span><span class="typ">Tweaks</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Fm"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ElseIf</span><span class="pln"> _MGF_File</span><span class="pun">.</span><span class="typ">FileExists</span><span class="pun">(</span><span class="typ">CornerstoneScript</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fertility</span><span class="pln"> </span><span class="typ">Mode</span><span class="pln"> </span><span class="typ">Reloaded</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> no distinct plugin </span><span class="kwd">of</span><span class="pln"> its own</span><span class="pun">,</span><span class="pln"> see _MGF_InterfaceFmr </span><span class="kwd">for</span><span class="pln"> why </span><span class="kwd">this</span><span class="pln"> checks a script file instead
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Fmr"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">""</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LoadOrderChanged</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">OrderChanged</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsModified</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Because</span><span class="pln"> FMR </span><span class="str">'overwrites'</span><span class="pln"> </span><span class="typ">FertilityMode</span><span class="pun">.</span><span class="pln">esm </span><span class="pun">(</span><span class="pln">and we don</span><span class="str">'t support base FM) we can'</span><span class="pln">t 
	</span><span class="pun">;</span><span class="pln"> gate on mod name here</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Need</span><span class="pln"> to </span><span class="kwd">do</span><span class="pln"> a </span><span class="str">'CornerstoneScript'</span><span class="pln"> check
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pln">
		</span><span class="typ">DecideState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Status</span><span class="pln"> board </span><span class="pun">-</span><span class="pln"> event handlers </span><span class="pun">==============================================</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnPregConceived</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">TheMother</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Father</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> actor</span><span class="pun">,</span><span class="pln"> any father</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregStatusFact</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> conception is always trimester </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">AllCurrentlyPregnant</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">)</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">She</span><span class="str">'</span><span class="pln">s the player</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pln">
		</span><span class="typ">Globs</span><span class="pun">.</span><span class="pln">_MGF_PcPreg_CurrentBabyCount</span><span class="pun">.</span><span class="typ">SetValue</span><span class="pun">(</span><span class="typ">NumBabies</span><span class="pln"> as </span><span class="typ">Float</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasCurrentFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheFather</span><span class="pln"> as </span><span class="typ">Form</span><span class="pun">)</span><span class="pln">

		</span><span class="pun">;</span><span class="pln"> BF</span><span class="str">'</span><span class="pln">s multi</span><span class="pun">-</span><span class="pln">father</span><span class="pun">:</span><span class="pln"> BF records one entry per BABY</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Deduplicate</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">CurrentFathersOfPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorUnique</span><span class="pun">(</span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">PlayerRef</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
			</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
			</span><span class="typ">IncrementFactionRankCapped</span><span class="pun">(</span><span class="typ">WithFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregConceivedWithPcFact</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">WithFather</span><span class="pun">.</span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveWithPcFact</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ConceivedWithMeLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PushForwardActor</span><span class="pun">(</span><span class="typ">ConceivedWithMeLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ConceivedWithMeLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="typ">LogSize</span><span class="pun">)</span><span class="pln">
			i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
		</span><span class="typ">EndWhile</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">

	</span><span class="typ">If</span><span class="pln"> </span><span class="pun">(</span><span class="typ">ArrayActorFind</span><span class="pun">(</span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">TheMother</span><span class="pun">),</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> player fathered </span><span class="kwd">this</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> checked against the full father list </span><span class="pun">(</span><span class="pln">BF</span><span class="str">'</span><span class="pln">s multi</span><span class="pun">-</span><span class="pln">father</span><span class="pun">).</span><span class="pln"> 
		</span><span class="typ">IncrementFactionRankCapped</span><span class="pun">(</span><span class="typ">TheMother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregConceivedByPcFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveByPcFact</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">CurrentlyPregnantByPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">CurrentlyPregnantByPc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">ConceivedWithLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PushForwardActor</span><span class="pun">(</span><span class="typ">ConceivedWithLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="typ">LogSize</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">RefreshConceivedAliases</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnPregBirthed</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Baby</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">TheMother</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Father</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> actor</span><span class="pun">,</span><span class="pln"> any father</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregStatusFact</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">AllCurrentlyPregnant</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorRemove</span><span class="pun">(</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">)</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">She</span><span class="str">'</span><span class="pln">s the player</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pln">
		</span><span class="typ">Globs</span><span class="pun">.</span><span class="pln">_MGF_PcPreg_CurrentBabyCount</span><span class="pun">.</span><span class="typ">SetValue</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Read</span><span class="pln"> the CURRENT alias rather than trusting the event</span><span class="str">'</span><span class="pln">s own </span><span class="typ">Father</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> parameter </span><span class="pun">-</span><span class="pln"> keeps one source </span><span class="kwd">of</span><span class="pln"> truth </span><span class="kwd">for</span><span class="pln"> what </span><span class="str">"current father"</span><span class="pln"> meant
		</span><span class="pun">;</span><span class="pln"> a moment ago</span><span class="pun">,</span><span class="pln"> rather than two that could theoretically disagree</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">ConcludedFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">GetAlias</span><span class="pun">(</span><span class="typ">AliasCurrentFather</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">ReferenceAlias</span><span class="pun">).</span><span class="typ">GetReference</span><span class="pun">()</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasPrevConcludedFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConcludedFather</span><span class="pln"> as </span><span class="typ">Form</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasPrevBirthFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConcludedFather</span><span class="pln"> as </span><span class="typ">Form</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">(</span><span class="typ">GetAlias</span><span class="pun">(</span><span class="typ">AliasCurrentFather</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">ReferenceAlias</span><span class="pun">).</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">

		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Consuming</span><span class="pln"> the cache from conception</span><span class="pun">,</span><span class="pln"> not re</span><span class="pun">-</span><span class="pln">querying </span><span class="typ">GetFathers</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> BF has already cleared its own father record </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> pregnancy by
		</span><span class="pun">;</span><span class="pln"> now</span><span class="pun">,</span><span class="pln"> so that call would </span><span class="kwd">return</span><span class="pln"> nothing</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="str">'</span><span class="pln">s
		</span><span class="pun">;</span><span class="pln"> declaration </span><span class="kwd">for</span><span class="pln"> why</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
			</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
			</span><span class="typ">If</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pln">
				</span><span class="typ">IncrementFactionRankCapped</span><span class="pun">(</span><span class="typ">WithFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregBirthedWithPcFact</span><span class="pun">)</span><span class="pln">
				</span><span class="typ">WithFather</span><span class="pun">.</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveWithPcFact</span><span class="pun">)</span><span class="pln">
				</span><span class="typ">BirthedWithMeLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PushForwardActor</span><span class="pun">(</span><span class="typ">BirthedWithMeLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">BirthedWithMeLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="typ">LogSize</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">EndIf</span><span class="pln">
			i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
		</span><span class="typ">EndWhile</span><span class="pln">
		</span><span class="typ">CurrentFathersOfPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> player fathered </span><span class="kwd">this</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> checked via faction membership</span><span class="pun">,</span><span class="pln"> not
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetFathers</span><span class="pun">().</span><span class="pln"> </span><span class="typ">By</span><span class="pln"> the time </span><span class="kwd">this</span><span class="pln"> fires</span><span class="pun">,</span><span class="pln"> BF has already cleared its own
	</span><span class="pun">;</span><span class="pln"> father record </span><span class="kwd">for</span><span class="pln"> a concluded pregnancy</span><span class="pun">,</span><span class="pln"> so re</span><span class="pun">-</span><span class="pln">querying here would
	</span><span class="pun">;</span><span class="pln"> silently </span><span class="kwd">return</span><span class="pln"> nothing</span><span class="pun">.</span><span class="pln"> _MGF_PregActiveByPcFact was </span><span class="kwd">set</span><span class="pln"> at conception
	</span><span class="pun">;</span><span class="pln"> and lives on the actor independently </span><span class="kwd">of</span><span class="pln"> BF</span><span class="str">'</span><span class="pln">s own storage</span><span class="pun">,</span><span class="pln"> so it survives
	</span><span class="pun">;</span><span class="pln"> that cleanup </span><span class="pun">-</span><span class="pln"> read it BEFORE removing her from it</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">IsInFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveByPcFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">IncrementFactionRankCapped</span><span class="pun">(</span><span class="typ">TheMother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregBirthedByPcFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveByPcFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">CurrentlyPregnantByPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorRemove</span><span class="pun">(</span><span class="typ">CurrentlyPregnantByPc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">BirthedWithLog</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PushForwardActor</span><span class="pun">(</span><span class="typ">BirthedWithLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="typ">LogSize</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">RefreshBirthedAliases</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnPregAborted</span><span class="pun">(</span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">TheMother</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">TheFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Father</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> actor</span><span class="pun">,</span><span class="pln"> any father</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregStatusFact</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">AllCurrentlyPregnant</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorRemove</span><span class="pun">(</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">)</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">She</span><span class="str">'</span><span class="pln">s the player</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pln">
		</span><span class="typ">Globs</span><span class="pun">.</span><span class="pln">_MGF_PcPreg_CurrentBabyCount</span><span class="pun">.</span><span class="typ">SetValue</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> the </span><span class="str">"concluded"</span><span class="pln"> slot moves </span><span class="pun">-</span><span class="pln"> an abortion isn</span><span class="str">'</span><span class="pln">t a birth</span><span class="pun">,</span><span class="pln"> so
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">AliasPrevBirthFather</span><span class="pln"> is deliberately left untouched here</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">ConcludedFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">GetAlias</span><span class="pun">(</span><span class="typ">AliasCurrentFather</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">ReferenceAlias</span><span class="pun">).</span><span class="typ">GetReference</span><span class="pun">()</span><span class="pln"> as </span><span class="typ">Actor</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasPrevConcludedFather</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConcludedFather</span><span class="pln"> as </span><span class="typ">Form</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">(</span><span class="typ">GetAlias</span><span class="pun">(</span><span class="typ">AliasCurrentFather</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">ReferenceAlias</span><span class="pun">).</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">

		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> cache consumption as </span><span class="typ">OnPregBirthed</span><span class="pun">,</span><span class="pln"> minus any counter increment </span><span class="pun">-</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> an abortion isn</span><span class="str">'</span><span class="pln">t a birth</span><span class="pun">,</span><span class="pln"> and conception already got its credit</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> WI </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">While</span><span class="pln"> WI </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
			</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span><span class="pun">[</span><span class="pln">WI</span><span class="pun">]</span><span class="pln">
			</span><span class="typ">If</span><span class="pln"> </span><span class="typ">WithFather</span><span class="pln">
				</span><span class="typ">WithFather</span><span class="pun">.</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveWithPcFact</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">EndIf</span><span class="pln">
			WI </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
		</span><span class="typ">EndWhile</span><span class="pln">
		</span><span class="typ">CurrentFathersOfPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> player fathered </span><span class="kwd">this</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> same reorder as </span><span class="typ">OnPregBirthed</span><span class="pun">,</span><span class="pln"> see its
	</span><span class="pun">;</span><span class="pln"> comment</span><span class="pun">.</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> conceived</span><span class="pun">/</span><span class="pln">birthed counter change </span><span class="pun">-</span><span class="pln"> she was already counted
	</span><span class="pun">;</span><span class="pln"> at conception</span><span class="pun">,</span><span class="pln"> and an abortion isn</span><span class="str">'</span><span class="pln">t a birth</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">IsInFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveByPcFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">TheMother</span><span class="pun">.</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregActiveByPcFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">CurrentlyPregnantByPc</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorRemove</span><span class="pun">(</span><span class="typ">CurrentlyPregnantByPc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TheMother</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">AliasIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Target</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ForceRefTo</span><span class="pun">(</span><span class="typ">None</span><span class="pun">)</span><span class="pln"> is NOT how you clear an alias </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Clear</span><span class="pun">()</span><span class="pln"> is the actual
	</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> that</span><span class="pun">,</span><span class="pln"> and calling </span><span class="typ">ForceRefTo</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> a </span><span class="typ">None</span><span class="pln"> target doesn</span><span class="str">'</span><span class="pln">t
	</span><span class="pun">;</span><span class="pln"> reliably </span><span class="kwd">do</span><span class="pln"> the same thing</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Centralized</span><span class="pln"> here because every write site
	</span><span class="pun">;</span><span class="pln"> below can legitimately receive a </span><span class="typ">None</span><span class="pln"> </span><span class="pun">(</span><span class="pln">no father on record</span><span class="pun">,</span><span class="pln"> a log slot
	</span><span class="pun">;</span><span class="pln"> that hasn</span><span class="str">'t been filled yet, or a father who'</span><span class="pln">s since become
	</span><span class="pun">;</span><span class="pln"> unresolvable</span><span class="pun">),</span><span class="pln"> and every one </span><span class="kwd">of</span><span class="pln"> them needs the same branch</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">ReferenceAlias</span><span class="pln"> </span><span class="typ">TargetAlias</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetAlias</span><span class="pun">(</span><span class="typ">AliasIndex</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">ReferenceAlias</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="pun">!</span><span class="typ">TargetAlias</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Target</span><span class="pln">
		</span><span class="typ">TargetAlias</span><span class="pun">.</span><span class="typ">ForceRefTo</span><span class="pun">(</span><span class="typ">Target</span><span class="pln"> as </span><span class="typ">ObjectReference</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">TargetAlias</span><span class="pun">.</span><span class="typ">Clear</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RefreshConceivedAliases</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Index</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> is always the most recent </span><span class="pun">-</span><span class="pln"> see </span><span class="typ">PushForwardActor</span><span class="str">'</span><span class="pln">s semantics
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">inserts at index </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> shifts the rest back</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Length</span><span class="pln"> can be under </span><span class="lit">3</span><span class="pln"> early
	</span><span class="pun">;</span><span class="pln"> in a playthrough now that the log grows from empty rather than being
	</span><span class="pun">;</span><span class="pln"> pre</span><span class="pun">-</span><span class="pln">filled </span><span class="pun">-</span><span class="pln"> bounds</span><span class="pun">-</span><span class="pln">checked so </span><span class="kwd">this</span><span class="pln"> never indexes past what actually
	</span><span class="pun">;</span><span class="pln"> exists yet</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasConceived0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasConceived1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasConceived2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RefreshBirthedAliases</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> bounds</span><span class="pun">-</span><span class="pln">checking as </span><span class="typ">RefreshConceivedAliases</span><span class="pun">,</span><span class="pln"> same reason</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasBirthed0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasBirthed1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
		</span><span class="typ">SetAliasTarget</span><span class="pun">(</span><span class="typ">AliasBirthed2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Status</span><span class="pln"> board </span><span class="pun">===============================================================</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnUpdateGameTime</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RunPregPoll</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RegisterForSingleUpdateGameTime</span><span class="pun">(</span><span class="typ">PollIntervalHours</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RunPregPoll</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Trimester</span><span class="pun">/</span><span class="typ">CyclePhase</span><span class="pln"> have no source event on any backend</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Plain</span><span class="pln"> recurring poll </span><span class="pun">-</span><span class="pln"> gives a single</span><span class="pun">,</span><span class="pln"> simple accuracy guarantee</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Trimester</span><span class="pun">/</span><span class="typ">Phase</span><span class="pln"> data can be </span><span class="str">'stale'</span><span class="pln"> up to </span><span class="typ">PollIntervalHours</span><span class="pln"> game hours</span><span class="pun">.</span><span class="pln"> 
	
	</span><span class="typ">PollPlayerCycleState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">PollAllPregnantTrimesters</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">SendModEvent</span><span class="pun">(</span><span class="str">"_MGF_Preg_TriCycle_Complete"</span><span class="pun">,</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">,</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PollPlayerCycleState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Globs</span><span class="pun">.</span><span class="pln">_MGF_PcPreg_CyclePhase</span><span class="pun">.</span><span class="typ">SetValue</span><span class="pun">(</span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">PlayerRef</span><span class="pun">)</span><span class="pln"> as </span><span class="typ">Float</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PollAllPregnantTrimesters</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Bounded</span><span class="pln"> by how many pregnancies are active right now</span><span class="pun">,</span><span class="pln"> not by the size </span><span class="kwd">of</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> either backend</span><span class="str">'</span><span class="pln">s full tracked</span><span class="pun">-</span><span class="pln">actor history</span><span class="pun">.</span><span class="pln"> 
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> </span><span class="typ">None</span><span class="pun">/</span><span class="pln">dead actors</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">AllCurrentlyPregnant</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">While</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">AllCurrentlyPregnant</span><span class="pun">.</span><span class="typ">Length</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">CurrentTrimester</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">[</span><span class="pln">i</span><span class="pun">])</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">CurrentTrimester</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
			</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="typ">SetFactionRank</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregStatusFact</span><span class="pun">,</span><span class="pln"> </span><span class="typ">CurrentTrimester</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Else</span><span class="pln">
			</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Shouldn</span><span class="str">'</span><span class="pln">t normally happen but just in </span><span class="kwd">case</span><span class="pun">.</span><span class="pln"> 
			</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="typ">RemoveFromFaction</span><span class="pun">(</span><span class="typ">Factions</span><span class="pun">.</span><span class="pln">_MGF_PregStatusFact</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
		i </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndWhile</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Events</span><span class="pln"> </span><span class="pun">================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RelayConceived</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Create</span><span class="pun">(</span><span class="str">"_MGF_Preg_Conceived"</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushInt</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Send</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RelayLaborStarted</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Create</span><span class="pun">(</span><span class="str">"_MGF_Preg_LaborStarted"</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushInt</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Send</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RelayBirthed</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Baby</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Create</span><span class="pun">(</span><span class="str">"_MGF_Preg_Birthed"</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushInt</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Baby</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Send</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RelayAborted</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Create</span><span class="pun">(</span><span class="str">"_MGF_Preg_Aborted"</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Handle</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">PushForm</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
			</span><span class="typ">ModEvent</span><span class="pun">.</span><span class="typ">Send</span><span class="pun">(</span><span class="typ">Handle</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rolling</span><span class="pln"> </span><span class="typ">Logs</span><span class="pln"> </span><span class="pun">==========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rolling</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> element logs </span><span class="kwd">of</span><span class="pln"> pregnancy events based around the player</span><span class="pun">.</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> got these actors pregnant </span><span class="pun">======================================================</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetConceivedByPcLog</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NPCs</span><span class="pln"> the player has impregnated</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">ConceivedWithLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatheredByPcLog</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NPCs</span><span class="pln"> the player has fathered a birth </span><span class="kwd">with</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">BirthedWithLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> got impregnated by these actors </span><span class="pun">================================================</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetConceivedWithPcLog</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="str">'Men'</span><span class="pln"> who</span><span class="str">'</span><span class="pln">ve conceived a pregnancy WITH the player
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">ConceivedWithMeLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatheredWithPcLog</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="str">'Men'</span><span class="pln"> who</span><span class="str">'</span><span class="pln">ve fathered a birth WITH the player</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">BirthedWithMeLog</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCurrentlyPregnantByPc</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">CurrentlyPregnantByPc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAllCurrentlyPregnant</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">AllCurrentlyPregnant</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fork</span><span class="pln"> state

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetState</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="str">""</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">User</span><span class="pln"> </span><span class="typ">Functions</span><span class="pln"> </span><span class="pun">========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">=======================================================================================</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePhaseName</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Human</span><span class="pun">-</span><span class="pln">readable label </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">GetCyclePhase</span><span class="pun">()</span><span class="str">'</span><span class="pln">s numeric result</span><span class="pun">.</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> </span><span class="typ">State</span><span class="pln"> dispatched </span><span class="pun">-</span><span class="pln"> FM and BF use identical phase numbering</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="str">"Pregnant"</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Postpartum</span><span class="pln"> recovery is neither pregnant nor cycling</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="str">"Recovering"</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Phase</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Phase</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">CyclePhaseNames</span><span class="pun">[</span><span class="typ">Phase</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="str">"Unknown"</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Bf</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> backend</span><span class="str">'</span><span class="pln">s plugin filename</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> currently pregnant</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Babies</span><span class="pln"> in the current pregnancy</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">First</span><span class="pln"> recorded father</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">All</span><span class="pln"> recorded fathers </span><span class="pun">-</span><span class="pln"> </span><span class="pun">(</span><span class="pln">BF</span><span class="str">'</span><span class="pln">s multi</span><span class="pun">-</span><span class="typ">Father</span><span class="pln"> mechanism</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRace</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">First</span><span class="pln"> recorded father</span><span class="str">'</span><span class="pln">s race</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetFatherRace</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRaces</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Per</span><span class="pun">-</span><span class="pln">baby father races</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">-</span><span class="pln">aligned </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">GetFathers</span><span class="pun">().</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetFatherRaces</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Days</span><span class="pln"> since conception</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Configured</span><span class="pln"> full</span><span class="pun">-</span><span class="pln">term length</span><span class="pun">,</span><span class="pln"> in days</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Progress</span><span class="pln"> through the pregnancy</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100.</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Value</span><span class="pln"> is not clamped at the upper end </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Can</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> values </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">100.0</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="lit">110.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Woman</span><span class="pln"> is </span><span class="str">'10%'</span><span class="pln"> overdue</span><span class="pun">.</span><span class="pln"> 
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">/</span><span class="lit">2</span><span class="pun">/</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> or </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> not pregnant</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> or </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> pregnant</span><span class="pun">/</span><span class="pln">not tracked</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> during the postpartum window after a birth</span><span class="pun">,</span><span class="pln"> before cycling resumes</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCycleDuration</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> BF</span><span class="str">'</span><span class="pln">s duration is actor</span><span class="pun">/</span><span class="pln">race scaled </span><span class="pun">-</span><span class="pln"> 
		</span><span class="pun">;</span><span class="pln"> A different </span><span class="typ">Woman</span><span class="pln"> here can give a different answer </span><span class="pun">(</span><span class="pln">FM</span><span class="str">'</span><span class="pln">s version is the same </span><span class="kwd">for</span><span class="pln"> all</span><span class="pun">).</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">Woman</span><span class="pln"> isn</span><span class="str">'</span><span class="pln">t currently tracked</span><span class="pun">/</span><span class="pln">cycling</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetCycleDuration</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Progress</span><span class="pln"> through the current phase</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">100.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetCyclePercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unborn</span><span class="pln"> baby</span><span class="str">'</span><span class="pln">s health</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">100.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Lifetime</span><span class="pln"> birth count</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> is honored here </span><span class="pun">-</span><span class="pln"> unlike FM</span><span class="pun">/</span><span class="pln">FMR below</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ForceLabor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Skips</span><span class="pln"> straight to labor instead </span><span class="kwd">of</span><span class="pln"> waiting </span><span class="kwd">for</span><span class="pln"> term</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">ForceLabor</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Abort</span><span class="pln"> a pregnancy
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Bf</span><span class="pun">.</span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Fm</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> backend</span><span class="str">'</span><span class="pln">s plugin filename</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> currently pregnant</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Always</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> or </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> FM only ever supports one baby per pregnancy</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> recorded father</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Always</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> or </span><span class="lit">1</span><span class="pln"> entries </span><span class="pun">-</span><span class="pln"> FM only ever has one father</span><span class="pun">,</span><span class="pln"> wrapped in an array purely </span><span class="kwd">for</span><span class="pln"> parity </span><span class="kwd">with</span><span class="pln"> BF</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRace</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> recorded father</span><span class="str">'</span><span class="pln">s race</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetFatherRace</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRaces</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Always</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> or </span><span class="lit">1</span><span class="pln"> entries </span><span class="pun">-</span><span class="pln"> see </span><span class="typ">GetFathers</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetFatherRaces</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Days</span><span class="pln"> since conception</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Configured</span><span class="pln"> full</span><span class="pun">-</span><span class="pln">term length</span><span class="pun">,</span><span class="pln"> in days</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Progress</span><span class="pln"> through the pregnancy</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100.</span><span class="pln"> 
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> clamped at the upper end</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Values</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">100.0</span><span class="pln"> are possible</span><span class="pun">.</span><span class="pln"> 
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="lit">110.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Mother</span><span class="pln"> is </span><span class="str">'10%'</span><span class="pln"> overdue
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">/</span><span class="lit">2</span><span class="pun">/</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> or </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> not pregnant</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> or </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> pregnant</span><span class="pun">/</span><span class="pln">not tracked</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> during the postpartum window after a birth</span><span class="pun">,</span><span class="pln"> before cycling resumes</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCycleDuration</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> FM</span><span class="str">'s cycle duration is a flat value. BF'</span><span class="pln">s is not</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">See</span><span class="pln"> BF</span><span class="str">'</span><span class="pln">s version</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Parameter</span><span class="pln"> </span><span class="str">'Woman'</span><span class="pln"> is here </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> signature parity only</span><span class="pun">.</span><span class="pln"> 
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetCycleDuration</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Progress</span><span class="pln"> through the whole cycle</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetCyclePercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unborn</span><span class="pln"> baby</span><span class="str">'</span><span class="pln">s health</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> only ever tracked </span><span class="kwd">for</span><span class="pln"> the player</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Lifetime</span><span class="pln"> birth count</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> is silently ignored here </span><span class="pun">-</span><span class="pln"> FM only ever supports one baby per pregnancy</span><span class="pun">.</span><span class="pln"> 
		</span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ForceLabor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Skips</span><span class="pln"> straight to labor instead </span><span class="kwd">of</span><span class="pln"> waiting </span><span class="kwd">for</span><span class="pln"> term</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">ForceLabor</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Abort</span><span class="pln"> a pregnancy
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Informational</span><span class="pln"> only </span><span class="pun">-</span><span class="pln"> not what gates </span><span class="kwd">this</span><span class="pln"> </span><span class="typ">State</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> </span><span class="typ">CornerstoneScript</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> below </span><span class="kwd">for</span><span class="pln"> the real detection</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> currently pregnant</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Always</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> or </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> FMR only ever supports one baby per pregnancy</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> recorded father</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Always</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> or </span><span class="lit">1</span><span class="pln"> entries </span><span class="pun">-</span><span class="pln"> same reason as FM</span><span class="str">'</span><span class="pln">s version above</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRace</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">None</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> FMR never got </span><span class="kwd">this</span><span class="pln"> built </span><span class="pun">(</span><span class="pln">see _MGF_InterfaceFmr</span><span class="pun">,</span><span class="pln"> which
		</span><span class="pun">;</span><span class="pln"> has no equivalent </span><span class="pun">-</span><span class="pln"> sidelined along </span><span class="kwd">with</span><span class="pln"> the rest </span><span class="kwd">of</span><span class="pln"> FMR</span><span class="str">'</span><span class="pln">s newer
		</span><span class="pun">;</span><span class="pln"> work</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> a claim that FMR lacks the underlying data</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">None</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRaces</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Empty</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> see </span><span class="typ">GetFatherRace</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayRaceCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Days</span><span class="pln"> since conception</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Configured</span><span class="pln"> full</span><span class="pun">-</span><span class="pln">term length</span><span class="pun">,</span><span class="pln"> in days</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Progress</span><span class="pln"> through the pregnancy</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">/</span><span class="lit">2</span><span class="pun">/</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> or </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> not pregnant</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> FMR has no cycle</span><span class="pun">-</span><span class="pln">phase concept implemented on our side
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">see _MGF_InterfaceFmr</span><span class="pun">,</span><span class="pln"> which never got </span><span class="kwd">this</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> sidelined along </span><span class="kwd">with</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> the rest </span><span class="kwd">of</span><span class="pln"> FMR</span><span class="str">'</span><span class="pln">s labor</span><span class="pun">/</span><span class="pln">cycle work</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> the same claim as </span><span class="str">"</span><span class="pln">FMR has
		</span><span class="pun">;</span><span class="pln"> no menstrual cycle</span><span class="str">"</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> we simply haven</span><span class="str">'</span><span class="pln">t built </span><span class="kwd">this</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> it yet</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> not built </span><span class="kwd">for</span><span class="pln"> FMR</span><span class="pun">,</span><span class="pln"> same as </span><span class="typ">GetCyclePhase</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">False</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCycleDuration</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> see </span><span class="typ">GetCyclePhase</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> see </span><span class="typ">GetCyclePhase</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unborn</span><span class="pln"> baby</span><span class="str">'</span><span class="pln">s health</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> only ever tracked </span><span class="kwd">for</span><span class="pln"> the player</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> FMR doesn</span><span class="str">'</span><span class="pln">t track lifetime birth count at all</span><span class="pun">,</span><span class="pln"> as far
		</span><span class="pun">;</span><span class="pln"> as we</span><span class="str">'</span><span class="pln">ve been able to find </span><span class="pun">(</span><span class="pln">see _MGF_IntFmr</span><span class="pun">.</span><span class="typ">GetNumBirths</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Different</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> from BF</span><span class="pun">/</span><span class="pln">FM</span><span class="pun">,</span><span class="pln"> where </span><span class="kwd">this</span><span class="pln"> is a real count</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> is silently ignored here </span><span class="pun">-</span><span class="pln"> same limitation as </span><span class="typ">State</span><span class="pln"> </span><span class="typ">Fm</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ForceLabor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">No</span><span class="pun">-</span><span class="pln">op</span><span class="pun">,</span><span class="pln"> always </span><span class="pun">-</span><span class="pln"> not built </span><span class="kwd">for</span><span class="pln"> FMR </span><span class="pun">(</span><span class="pln">see _MGF_InterfaceFmr</span><span class="pun">,</span><span class="pln"> which has
		</span><span class="pun">;</span><span class="pln"> no equivalent </span><span class="pun">-</span><span class="pln"> sidelined along </span><span class="kwd">with</span><span class="pln"> the rest </span><span class="kwd">of</span><span class="pln"> FMR</span><span class="str">'</span><span class="pln">s labor work</span><span class="pun">,</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> same as </span><span class="typ">GetCyclePhase</span><span class="pun">()</span><span class="pln"> above</span><span class="pun">).</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Abort</span><span class="pln"> a pregnancy
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pun">.</span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> state </span><span class="typ">Functions</span><span class="pln"> </span><span class="pun">=================================================</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">None</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFathers</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRace</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">None</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatherRaces</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">ArrayRaceCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyDuration</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePhase</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsInRecovery</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">False</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCycleDuration</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCyclePercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Impregnate</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Father</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NumBabies</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">No</span><span class="pun">-</span><span class="pln">op </span><span class="pun">-</span><span class="pln"> neither mod is installed</span><span class="pun">/</span><span class="pln">active</span><span class="pun">.</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Ends</span><span class="pln"> a pregnancy without a birth</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> only </span><span class="kwd">if</span><span class="pln"> there was one to end</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Abort</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Mother</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">False</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ForceLabor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">No</span><span class="pun">-</span><span class="pln">op </span><span class="pun">-</span><span class="pln"> neither mod is installed</span><span class="pun">/</span><span class="pln">active</span><span class="pun">.</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Debug</span><span class="pln"> </span><span class="pun">=================================================================================</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Test</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: Test Begin"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: Active Mod: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: Target: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Woman</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: IsPregnant(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">IsPregnant</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetNumBabies(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetNumBabies</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetFather(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFather</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetPregnancyDay(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetPregnancyDay</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetPregnancyDuration(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetPregnancyDuration</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetPregnancyPercent(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetPregnancyPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetTrimester(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetTrimester</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetBabyHealthPercent(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetBabyHealthPercent</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: GetNumBirths(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetNumBirths</span><span class="pun">(</span><span class="typ">Woman</span><span class="pun">))</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkPregnancy: Test End"</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Properties</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">

</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Mods</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> FMR needs file</span><span class="pun">-</span><span class="pln">existence gating instead </span><span class="kwd">of</span><span class="pln"> a plugin</span><span class="pun">-</span><span class="pln">name check because it uses the same </span><span class="typ">FertilityMode</span><span class="pun">.</span><span class="pln">esm as the base mod</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">CornerstoneScript</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Data/Scripts/_JSW_BB_DetectFertilityLoader.pex"</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">

_MGF_InterfaceBf </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Bf</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceFm </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Fm</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceFmr </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Fmr</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Status</span><span class="pln"> board </span><span class="pun">===============================================================</span><span class="pln">

_MGF_Globs </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Globs</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_Factions </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Factions</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Alias</span><span class="pln"> indices
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasCurrentFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasPrevConcludedFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasPrevBirthFather</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasConceived0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasConceived1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasConceived2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasBirthed0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasBirthed1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">7</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">AliasBirthed2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">8</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Target</span><span class="pln"> window size </span><span class="kwd">for</span><span class="pln"> the four rolling logs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">LogSize</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">How</span><span class="pln"> often </span><span class="typ">Trimester</span><span class="pun">/</span><span class="typ">CyclePhase</span><span class="pun">/</span><span class="pln">_MGF_PregStatusFact </span><span class="kwd">get</span><span class="pln"> re</span><span class="pun">-</span><span class="pln">checked</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> system is accurate to within </span><span class="kwd">this</span><span class="pln"> window</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">PollIntervalHours</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1.0</span><span class="pln"> </span><span class="typ">AutoReadOnly</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Display</span><span class="pln"> names </span><span class="kwd">for</span><span class="pln"> menstrual cycle phases</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">CyclePhaseNames</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln"> </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Log</span><span class="pln"> arrays</span><span class="pun">:</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ConceivedWithLog</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pun">-</span><span class="pln">fathered
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">BirthedWithLog</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pun">-</span><span class="pln">fathered
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ConceivedWithMeLog</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="str">'Men'</span><span class="pln"> who conceived </span><span class="kwd">with</span><span class="pln"> the player
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">BirthedWithMeLog</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="str">'Men'</span><span class="pln"> who fathered a birth </span><span class="kwd">with</span><span class="pln"> the player
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">CurrentlyPregnantByPc</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> live</span><span class="pun">,</span><span class="pln"> player</span><span class="pun">-</span><span class="pln">fathered only
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">AllCurrentlyPregnant</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> live</span><span class="pun">,</span><span class="pln"> any father </span><span class="pun">-</span><span class="pln"> drives _MGF_PregStatusFact</span><span class="str">'</span><span class="pln">s poll

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Exists</span><span class="pln"> specifically because BF clears its own father record before our 
</span><span class="pun">;</span><span class="pln"> poll</span><span class="pun">-</span><span class="pln">based </span><span class="typ">Birthed</span><span class="pln"> detection ever fires</span><span class="pun">,</span><span class="pln"> so re</span><span class="pun">-</span><span class="pln">querying </span><span class="typ">GetFathers</span><span class="pun">()</span><span class="pln"> at that point 
</span><span class="pun">;</span><span class="pln"> would </span><span class="kwd">return</span><span class="pln"> nothing</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">CurrentFathersOfPc</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26162</guid><pubDate>Mon, 17 Aug 2026 15:29:42 +0000</pubDate></item><item><title>Fork Needs</title><link>https://www.loverslab.com/blogs/entry/26163-fork-needs/</link><description><![CDATA[<p>
	Fork Needs is similar to ForkPregnancy - A interoperability adapter layer that presents a single unified surface for modders to integrate with. 
</p>

<p>
	 
</p>

<p>
	ForkNeeds grants seamless access to Rnd, iNeed, Last Seed &amp; Sunhelm without the modder needing to know or understand the underlying mod. Expanding the system to include another needs mod simply involves authoring a new backend interface. Once that backend interface is in place then any mod accessing Needs functions via MGF is automatically compatible with the new needs mod without any changes on their end. Very handy!<br>
	<br>
	Highlights:
</p>

<ul>
	<li>
		GetHungerPercent(), ModHungerPercent(), SetHungerPercent(), GetHungerLevelString()
	</li>
	<li>
		Same as above but for thirst and fatigue. 
	</li>
</ul>

<p>
	 
</p>

<p>
	There are additional forks for pregnancy, warmth (Frostfall, Sunhelm) and some others but I don't want to commit on those just yet. <br>
	 
</p>

<p>
	_MGF_ForkNeeds: 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_998_8" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_ForkNeeds extends </span><span class="typ">Quest</span><span class="pln">  

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fork</span><span class="pln"> script </span><span class="kwd">for</span><span class="pln"> when you don</span><span class="str">'</span><span class="pln">t give a damn which needs mod is installed and
</span><span class="pun">;</span><span class="pln"> just want to </span><span class="kwd">do</span><span class="pun">/</span><span class="pln">check some basic stuff</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Currently</span><span class="pln"> covers</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Realistic</span><span class="pln"> </span><span class="typ">Needs</span><span class="pln"> and </span><span class="typ">Diseases</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> iNeed
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Last</span><span class="pln"> </span><span class="typ">Seed</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">SunHelm</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Wilderness</span><span class="pln"> </span><span class="typ">Survival</span><span class="pln"> </span><span class="pun">(</span><span class="pln">hunger</span><span class="pun">/</span><span class="pln">thirst</span><span class="pun">/</span><span class="pln">fatigue component only </span><span class="pun">-</span><span class="pln">
</span><span class="pun">;</span><span class="pln">     see _MGF_ForkWarmth </span><span class="kwd">for</span><span class="pln"> its cold</span><span class="pun">/</span><span class="pln">exposure component</span><span class="pun">)</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Needs</span><span class="pln"> mod you want not here</span><span class="pun">?</span><span class="pln"> </span><span class="typ">Write</span><span class="pln"> the </span><span class="kwd">interface</span><span class="pln"> script</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Test</span><span class="pln"> it</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Send</span><span class="pln"> it to me</span><span class="pun">.</span><span class="pln"> 

</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[</span><span class="lit">4</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"RealisticNeedsandDiseases.esp"</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"iNeed.esp"</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"LastSeed.esp"</span><span class="pln">
	</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"SunHelmSurvival.esp"</span><span class="pln">
	</span><span class="typ">DecideState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_LoadOrderChanged"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_LoadOrderChanged"</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DecideState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pln">
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Rnd"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ElseIf</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> iNeed
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Ineed"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ElseIf</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Last</span><span class="pln"> </span><span class="typ">Seed</span><span class="pln">
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Seed"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ElseIf</span><span class="pln"> </span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetModByName</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">3</span><span class="pun">])</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">255</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">SunHelm</span><span class="pln">
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Sunhelm"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Else</span><span class="pln">
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">""</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_LoadOrderChanged</span><span class="pun">(</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">OrderChanged</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ModsModified</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModsAdded</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="typ">ModsRemoved</span><span class="pln">
		</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModsAddedList</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetAddedMods</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModsRemovedList</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetRemovedMods</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">ModsAddedList</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayStringIntersectionValues</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ModsAddedList</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">ModsRemovedList</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ArrayStringIntersectionValues</span><span class="pun">(</span><span class="typ">Mods</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ModsRemovedList</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">ModsAddedList</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="typ">ModsRemovedList</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
			</span><span class="typ">DecideState</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">EndIf</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveState</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">GetState</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="str">""</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the name </span><span class="kwd">of</span><span class="pln"> the mod </span><span class="kwd">this</span><span class="pln"> script is currently hooking into</span><span class="pun">.</span><span class="pln"> 
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> hunger as </span><span class="lit">0</span><span class="pun">-</span><span class="lit">100</span><span class="pun">%</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">%</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> hunger
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Maximum</span><span class="pln"> hunger
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">100.0</span><span class="pln"> to </span><span class="pun">+</span><span class="lit">100.0</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">+</span><span class="lit">100.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> become maximally hungry</span><span class="pun">.</span><span class="pln"> 
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">100.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> completely satisfy hunger</span><span class="pun">.</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="pun">-</span><span class="lit">50.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> half</span><span class="pun">-</span><span class="pln">satisfy hunger</span><span class="pun">.</span><span class="pln">
		</span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln"> to </span><span class="lit">100.0</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">%</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> hunger</span><span class="pun">.</span><span class="pln"> 
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Maximum</span><span class="pln"> hunger
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Directly</span><span class="pln"> sets hunger to the specified percentage
		</span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Gluttony</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satiated</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Peckish</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Starving</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> maximum level </span><span class="kwd">of</span><span class="pln"> hunger </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> mod
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Glutted</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satiated</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Peckish</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Starving</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingHungry</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> hungry enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetBegIsHungry</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Thirst</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Quenched</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Slightly</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingThirsty</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> thirsty enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetBegIsThirsty</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fatigue</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Slightly</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Exhausted</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Utility</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> is at the maximum level </span><span class="kwd">of</span><span class="pln"> thirst or hunger
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pun">.</span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satiated</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mild</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Moderate</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severe</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> maximum level </span><span class="kwd">of</span><span class="pln"> hunger </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> mod
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satiated</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mild</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Moderate</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severe</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingHungry</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> hungry enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetBegIsHungry</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Thirst</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> hydrated
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mild</span><span class="pln"> thirst
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Moderate</span><span class="pln"> thirst
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severe</span><span class="pln"> thirst
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> hydrated
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mild</span><span class="pln"> thirst
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Moderate</span><span class="pln"> thirst
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severe</span><span class="pln"> thirst
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingThirsty</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> thirsty enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetBegIsThirsty</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fatigue</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mild</span><span class="pln"> fatigue
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Moderate</span><span class="pln"> fatigue
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severe</span><span class="pln"> fatigue
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Mild</span><span class="pln"> fatigue
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Moderate</span><span class="pln"> fatigue
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severe</span><span class="pln"> fatigue
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Utility</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> is at the maximum level </span><span class="kwd">of</span><span class="pln"> thirst or hunger
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pun">.</span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Seed</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingHungry</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> hungry enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetBegIsHungry</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Fed</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satisfied</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Ravenous</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Starving</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> maximum level </span><span class="kwd">of</span><span class="pln"> hunger </span><span class="kwd">for</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> mod
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Fed</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satisfied</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Ravenous</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Starving</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Thirst</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Quenched</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Refreshed</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Parched</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Quenched</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Refreshed</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Parched</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingThirsty</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> thirsty enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetBegIsThirsty</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fatigue</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Lover</span><span class="str">'s Comfort - Parent'</span><span class="pln">s </span><span class="typ">Love</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Sharp</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Haggard</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Exhausted</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Lover</span><span class="str">'s Comfort - Parent'</span><span class="pln">s </span><span class="typ">Love</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Sharp</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Very</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Haggard</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Exhausted</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
	
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Utility</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	
	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> is at the maximum level </span><span class="kwd">of</span><span class="pln"> thirst or hunger
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Seed</span><span class="pun">.</span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="typ">State</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pln">
	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Mods</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Hunger</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Fed</span><span class="pln">    </span><span class="pun">(&lt;</span><span class="pln"> </span><span class="lit">40</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satisfied</span><span class="pln">   </span><span class="pun">(</span><span class="lit">40</span><span class="pun">-</span><span class="lit">79</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Peckish</span><span class="pln">     </span><span class="pun">(</span><span class="lit">80</span><span class="pun">-</span><span class="lit">139</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">      </span><span class="pun">(</span><span class="lit">140</span><span class="pun">-</span><span class="lit">239</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Ravenous</span><span class="pln">    </span><span class="pun">(</span><span class="lit">240</span><span class="pun">-</span><span class="lit">359</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Starving</span><span class="pln">    </span><span class="pun">(&gt;=</span><span class="pln"> </span><span class="lit">360</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Fed</span><span class="pln">    </span><span class="pun">(&lt;</span><span class="pln"> </span><span class="lit">40</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Satisfied</span><span class="pln">   </span><span class="pun">(</span><span class="lit">40</span><span class="pun">-</span><span class="lit">79</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Peckish</span><span class="pln">     </span><span class="pun">(</span><span class="lit">80</span><span class="pun">-</span><span class="lit">139</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Hungry</span><span class="pln">      </span><span class="pun">(</span><span class="lit">140</span><span class="pun">-</span><span class="lit">239</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Ravenous</span><span class="pln">    </span><span class="pun">(</span><span class="lit">240</span><span class="pun">-</span><span class="lit">359</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Starving</span><span class="pln">    </span><span class="pun">(&gt;=</span><span class="pln"> </span><span class="lit">360</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingHungry</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> hungry enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetIsBeggingHungry</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Thirst</span><span class="pln"> </span><span class="pun">=====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Quenched</span><span class="pln">              </span><span class="pun">(&lt;</span><span class="pln"> </span><span class="lit">40</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Sated</span><span class="pln">                 </span><span class="pun">(</span><span class="lit">40</span><span class="pun">-</span><span class="lit">59</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">               </span><span class="pun">(</span><span class="lit">60</span><span class="pun">-</span><span class="lit">119</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Parched</span><span class="pln">               </span><span class="pun">(</span><span class="lit">120</span><span class="pun">-</span><span class="lit">179</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">            </span><span class="pun">(</span><span class="lit">180</span><span class="pun">-</span><span class="lit">299</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severely</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">   </span><span class="pun">(&gt;=</span><span class="pln"> </span><span class="lit">300</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Quenched</span><span class="pln">              </span><span class="pun">(&lt;</span><span class="pln"> </span><span class="lit">40</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Sated</span><span class="pln">                 </span><span class="pun">(</span><span class="lit">40</span><span class="pun">-</span><span class="lit">59</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Thirsty</span><span class="pln">               </span><span class="pun">(</span><span class="lit">60</span><span class="pun">-</span><span class="lit">119</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Parched</span><span class="pln">               </span><span class="pun">(</span><span class="lit">120</span><span class="pun">-</span><span class="lit">179</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">            </span><span class="pun">(</span><span class="lit">180</span><span class="pun">-</span><span class="lit">299</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Severely</span><span class="pln"> </span><span class="typ">Dehydrated</span><span class="pln">   </span><span class="pun">(&gt;=</span><span class="pln"> </span><span class="lit">300</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingThirsty</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> thirsty enough to beg
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetIsBeggingThirsty</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Fatigue</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">

	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln">      </span><span class="pun">(&lt;</span><span class="pln"> </span><span class="lit">80</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln">           </span><span class="pun">(</span><span class="lit">80</span><span class="pun">-</span><span class="lit">159</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Slightly</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">   </span><span class="pun">(</span><span class="lit">160</span><span class="pun">-</span><span class="lit">239</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">            </span><span class="pun">(</span><span class="lit">240</span><span class="pun">-</span><span class="lit">359</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Weary</span><span class="pln">            </span><span class="pun">(</span><span class="lit">360</span><span class="pun">-</span><span class="lit">479</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Exhausted</span><span class="pln">        </span><span class="pun">(&gt;=</span><span class="pln"> </span><span class="lit">480</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Well</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln">      </span><span class="pun">(&lt;</span><span class="pln"> </span><span class="lit">80</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Rested</span><span class="pln">           </span><span class="pun">(</span><span class="lit">80</span><span class="pun">-</span><span class="lit">159</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Slightly</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">   </span><span class="pun">(</span><span class="lit">160</span><span class="pun">-</span><span class="lit">239</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Tired</span><span class="pln">            </span><span class="pun">(</span><span class="lit">240</span><span class="pun">-</span><span class="lit">359</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Weary</span><span class="pln">            </span><span class="pun">(</span><span class="lit">360</span><span class="pun">-</span><span class="lit">479</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Exhausted</span><span class="pln">        </span><span class="pun">(&gt;=</span><span class="pln"> </span><span class="lit">480</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">

	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Utility</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">

	</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
		</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> is at the maximum level </span><span class="kwd">of</span><span class="pln"> thirst or hunger
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pun">.</span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">EndFunction</span><span class="pln">
</span><span class="typ">EndState</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> state </span><span class="typ">Functions</span><span class="pln"> </span><span class="pun">=================================================</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetHungerLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="str">""</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingHungry</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> hungry enough to beg
	</span><span class="typ">Return</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetThirstLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="str">""</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsBeggingThirsty</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Is</span><span class="pln"> thirsty enough to beg
	</span><span class="typ">Return</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Percentage</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevel</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelMax</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFatigueLevelString</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Return</span><span class="pln"> </span><span class="str">""</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsDesperate</span><span class="pun">()</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> is at the maximum level </span><span class="kwd">of</span><span class="pln"> thirst or hunger
	</span><span class="typ">Return</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">Test</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: Test Begin"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: Active Mod: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetActiveMod</span><span class="pun">())</span><span class="pln">
	
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: HUNGER ==================================="</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetHungerLevel(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerLevel</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetHungerLevelMax(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerLevelMax</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetHungerLevelString(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerLevelString</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">OldValue</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetHungerPercent(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">ModHungerPercent</span><span class="pun">(</span><span class="lit">30.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: ModHungerPercent(30%): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">ModHungerPercent</span><span class="pun">(-</span><span class="lit">30.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: ModHungerPercent(-30%): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: SetHungerPercent(0%): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="lit">100.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: SetHungerPercent(100%): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetHungerPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetIsBeggingHungry(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsBeggingHungry</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetHungerPercent</span><span class="pun">(</span><span class="typ">OldValue</span><span class="pun">)</span><span class="pln">
	
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: Thirst ==================================="</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">OldValue</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetThirstPercent(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">ModThirstPercent</span><span class="pun">(</span><span class="lit">30.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: ModThirstPercent(30.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">ModThirstPercent</span><span class="pun">(-</span><span class="lit">30.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: ModThirstPercent(-30.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: SetThirstPercent(0.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="lit">100.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: SetThirstPercent(100.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstPercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetThirstPercent</span><span class="pun">(</span><span class="typ">OldValue</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetThirstLevel(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstLevel</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetThirstLevelMax(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstLevelMax</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetThirstLevelString(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetThirstLevelString</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetIsBeggingThirsty(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetIsBeggingThirsty</span><span class="pun">())</span><span class="pln">
	
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: Fatigue ==================================="</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">OldValue</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetFatiguePercent(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">ModFatiguePercent</span><span class="pun">(</span><span class="lit">30.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: ModFatiguePercent(30.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">ModFatiguePercent</span><span class="pun">(-</span><span class="lit">30.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: ModFatiguePercent(-30.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: SetFatiguePercent(0.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="lit">100.0</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: SetFatiguePercent(100.0): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatiguePercent</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">SetFatiguePercent</span><span class="pun">(</span><span class="typ">OldValue</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetFatigueLevel(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatigueLevel</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetFatigueLevelMax(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatigueLevelMax</span><span class="pun">())</span><span class="pln">
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: GetFatigueLevelString(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFatigueLevelString</span><span class="pun">())</span><span class="pln">
	
	</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkNeeds: Test End"</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">

</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Mods</span><span class="pln">

_MGF_InterfaceRnd </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Rnd</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceIneed </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Ineed</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceLastSeed </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Seed</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceSunhelm </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Sunhelm</span><span class="pln"> </span><span class="typ">Auto</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26163</guid><pubDate>Mon, 17 Aug 2026 15:29:27 +0000</pubDate></item><item><title>Array Utilites</title><link>https://www.loverslab.com/blogs/entry/26160-array-utilites/</link><description><![CDATA[<p>
	Massive library of native array functions and I'm still fleshing out types and adding new function types.
</p>

<p>
	There's so many now that I recently had to split _MGF_Array to _MGF_ArrayCreate, _MGF_ArrayEdit, _MGF_ArrayQuery due to function declaration overload...
</p>

<p>
	 
</p>

<p>
	Super boring but also extremely useful. 
</p>

<p>
	 
</p>

<p>
	_MGF_ArrayCreate:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6609_6" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_ArrayCreate </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;/</span><span class="pln">	
	</span><span class="typ">Advise</span><span class="pln"> </span><span class="str">'import'</span><span class="pln">ing all three array scripts </span><span class="kwd">for</span><span class="pln"> easy access</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">That</span><span class="pln"> way you don</span><span class="str">'</span><span class="pln">t need to remember which </span><span class="kwd">function</span><span class="pln"> is in which script</span><span class="pun">.</span><span class="pln"> 
	
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery
</span><span class="pun">/;</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Create</span><span class="pln"> </span><span class="pun">==========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a </span><span class="kwd">new</span><span class="pln"> array </span><span class="kwd">of</span><span class="pln"> the specified size and fill</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Works</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> size </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.</span><span class="pln"> </span><span class="typ">Handy</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> you need to call a </span><span class="kwd">function</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> an empty array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SomeFunctionThatNeedsEmptyArray</span><span class="pun">(</span><span class="pln">_MGF_ArrayCreate</span><span class="pun">.</span><span class="typ">ArrayFactionCreate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Or</span><span class="pln"> just create a single length array </span><span class="kwd">with</span><span class="pln"> a certain value</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SomeFunctionThatNeedsAOneElementArray</span><span class="pun">(</span><span class="pln">_MGF_ArrayCreate</span><span class="pun">.</span><span class="typ">ArrayKeywordCreate</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">VendorItemArmor</span><span class="pun">))</span><span class="pln">
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> size</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> bool </span><span class="typ">Randomize</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Randomize</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RandomMin</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RandomMax</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Randomize</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">RandomMin</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">RandomMax</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Randomize</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Size</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">Fill</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListCreate</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> size </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> fillValue </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Conversion</span><span class="pln"> </span><span class="pun">======================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Convert</span><span class="pln"> an array from </span><span class="typ">Form</span><span class="pln"> to x</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Or</span><span class="pln"> x to </span><span class="typ">Form</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Handy</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> storing or pulling information from </span><span class="typ">StorageUtil</span><span class="pln"> which only works on type </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Also</span><span class="pln"> useful </span><span class="kwd">if</span><span class="pln"> you need to run any array operations on a non</span><span class="pun">-</span><span class="pln">form type array</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Convert</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> actor arrays to form arrays</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Merge</span><span class="pln"> them</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Deduplicate</span><span class="pln"> them</span><span class="pun">.</span><span class="pln"> </span><span class="typ">And</span><span class="pln"> then convert back to an actor array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">I</span><span class="str">'</span><span class="pln">ve since added full type coverage </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Merge</span><span class="pln"> and </span><span class="typ">Unique</span><span class="pln"> but you </span><span class="kwd">get</span><span class="pln"> the idea</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Automatically</span><span class="pln"> removes any </span><span class="str">'Nones'</span><span class="pln"> </span><span class="pun">(</span><span class="pln">either </span><span class="typ">Nones</span><span class="pln"> passed in or that don</span><span class="str">'</span><span class="pln">t survive casting to the desired type</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> filterDisabled </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> disabled </span><span class="typ">ObjRefs</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">Actors</span><span class="pln"> from the returned array
</span><span class="pun">;</span><span class="pln"> filterDead </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> dead actors from the returned array

</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToRefs</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToActors</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToActorBases</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToFactions</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToWeapons</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToArmor</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToArmorAddons</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToSpells</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToMagicEffects</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToEnchantments</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToPotions</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToIngredients</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToKeywords</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToLocations</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToGlobals</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToBooks</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToMiscObjects</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToAmmo</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToRaces</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToQuests</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToPerks</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToCells</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToCobjs</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormsToFormLists</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RefsToForms</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ObjRefs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ActorsToForms</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ActorBasesToForms</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> akBases</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FactionsToForms</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> akFactions</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">WeaponsToForms</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> akWeapons</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArmorToForms</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> akArmors</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArmorAddonsToForms</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> akArmorAddons</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SpellsToForms</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> akSpells</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">MagicEffectsToForms</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> akEffects</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">EnchantmentsToForms</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> akEnchantments</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PotionsToForms</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> akPotions</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IngredientsToForms</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> akIngredients</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">KeywordsToForms</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKeywords</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">LocationsToForms</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> akLocations</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GlobalsToForms</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> akGlobals</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">BooksToForms</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> akBooks</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">MiscObjectsToForms</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> akMiscObjects</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">AmmoToForms</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> akAmmo</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RacesToForms</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> akRaces</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">QuestsToForms</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> akQuests</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PerksToForms</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> akPerks</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">CellsToForms</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> akCells</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">CobjsToForms</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> akRecipes</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FormListsToForms</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> akFormLists</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Two</span><span class="pln"> special </span><span class="kwd">case</span><span class="pln"> conversions
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ActorsToRefs</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RefsToActors</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ObjRefs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilteredDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	_MGF_ArrayEdit: 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6609_8" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_ArrayEdit </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;/</span><span class="pln">	
	</span><span class="typ">Advise</span><span class="pln"> </span><span class="str">'import'</span><span class="pln">ing all three array scripts </span><span class="kwd">for</span><span class="pln"> easy access</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">That</span><span class="pln"> way you don</span><span class="str">'</span><span class="pln">t need to remember which </span><span class="kwd">function</span><span class="pln"> is in which script</span><span class="pun">.</span><span class="pln"> 
	
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery
</span><span class="pun">/;</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Sanitize</span><span class="pln"> </span><span class="pun">=========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> entries from an array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Additional</span><span class="pln"> parameters </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Refs</span><span class="pln"> </span><span class="pun">&amp;</span><span class="pln"> </span><span class="typ">Actors</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormSanitize</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefSanitize</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorSanitize</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseSanitize</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionSanitize</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponSanitize</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorSanitize</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonSanitize</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellSanitize</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectSanitize</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentSanitize</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionSanitize</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientSanitize</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordSanitize</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationSanitize</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalSanitize</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookSanitize</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectSanitize</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoSanitize</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceSanitize</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestSanitize</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkSanitize</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellSanitize</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjSanitize</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListSanitize</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Append</span><span class="pln"> </span><span class="pun">==========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Append</span><span class="pln"> a </span><span class="kwd">new</span><span class="pln"> value to the end </span><span class="kwd">of</span><span class="pln"> the </span><span class="typ">Input</span><span class="pln"> array</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolAppend</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntAppend</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatAppend</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringAppend</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormAppend</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefAppend</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorAppend</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseAppend</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionAppend</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponAppend</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAppend</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonAppend</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellAppend</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectAppend</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentAppend</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionAppend</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientAppend</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordAppend</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationAppend</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalAppend</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookAppend</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectAppend</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoAppend</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceAppend</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestAppend</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkAppend</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellAppend</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjAppend</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListAppend</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> array</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> element</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Insert</span><span class="pln"> </span><span class="pun">==========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">These</span><span class="pln"> functions take an input array and insert </span><span class="str">'Value'</span><span class="pln"> at </span><span class="str">'Index'</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> array </span><span class="str">'Input'</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Simply</span><span class="pln"> replaces value at index</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> size remains the same</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Doesn</span><span class="str">'t replace the value at '</span><span class="pln">index</span><span class="str">'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Pushes</span><span class="pln"> all values from </span><span class="typ">Index</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> forward by </span><span class="lit">1</span><span class="pln"> and inserts </span><span class="str">'value'</span><span class="pln"> at </span><span class="str">'index'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> size </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the modified array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Attempting</span><span class="pln"> to add an element at </span><span class="pun">&gt;</span><span class="pln"> array</span><span class="pun">.</span><span class="pln">length will just append it to the end</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolInsert</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Replace</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntInsert</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatInsert</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringInsert</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormInsert</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Pluck</span><span class="pln"> </span><span class="pun">===========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> the element at </span><span class="str">'Index'</span><span class="pln"> and returns the shortened array</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolPluck</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntPluck</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatPluck</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringPluck</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormPluck</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> </span><span class="pun">==========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> occurences </span><span class="kwd">of</span><span class="pln"> </span><span class="str">'Value'</span><span class="pln"> from the </span><span class="typ">Input</span><span class="pln"> array</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> all occurences</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> first hit</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Can</span><span class="pln"> also be used to remove all </span><span class="str">'None'</span><span class="pln">s from an array</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntRemove</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringRemove</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormRemove</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefRemove</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorRemove</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseRemove</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionRemove</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponRemove</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorRemove</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonRemove</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellRemove</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectRemove</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentRemove</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionRemove</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientRemove</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordRemove</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationRemove</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalRemove</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookRemove</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectRemove</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoRemove</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceRemove</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestRemove</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkRemove</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellRemove</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjRemove</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveAll</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListRemove</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> removeAll</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Reverse</span><span class="pln"> </span><span class="pun">=========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Reverse</span><span class="pln"> the order </span><span class="kwd">of</span><span class="pln"> an array</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolReverse</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntReverse</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatReverse</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringReverse</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormReverse</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Slice</span><span class="pln"> </span><span class="pun">===========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> a section </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Input</span><span class="pln"> array starting at </span><span class="typ">StartIndex</span><span class="pln"> and up to </span><span class="str">'Len'</span><span class="pln"> length
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolSlice</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Len</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntSlice</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Len</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatSlice</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Len</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringSlice</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Len</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormSlice</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Len</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Sort</span><span class="pln"> </span><span class="pun">============================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Sorts</span><span class="pln"> arrays numerically or alphabetically</span><span class="pun">.</span><span class="pln"> </span><span class="typ">In</span><span class="pln"> the </span><span class="kwd">case</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> forms</span><span class="pun">,</span><span class="pln"> </span><span class="str">'none'</span><span class="pln">s are dropped</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntSort</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln">  </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatSort</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln">  </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringSort</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln">  </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormSort</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akForms</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Shuffle</span><span class="pln"> </span><span class="pun">=========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">These</span><span class="pln"> functions just shuffle the elements around in your array randomly</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Handles</span><span class="pln"> empty arrays and single</span><span class="pun">-</span><span class="pln">element arrays gracefully</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolShuffle</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntShuffle</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatShuffle</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringShuffle</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormShuffle</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Merge</span><span class="pln"> </span><span class="pun">===========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Append</span><span class="pln"> arr2 to the end </span><span class="kwd">of</span><span class="pln"> arr1 </span><span class="pun">-&gt;</span><span class="pln"> arr1 </span><span class="pun">+</span><span class="pln"> arr2</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolMerge</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntMerge</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatMerge</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringMerge</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormMerge</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefMerge</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorMerge</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseMerge</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionMerge</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponMerge</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorMerge</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonMerge</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellMerge</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectMerge</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentMerge</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionMerge</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientMerge</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordMerge</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationMerge</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalMerge</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookMerge</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectMerge</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoMerge</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceMerge</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestMerge</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkMerge</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellMerge</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjMerge</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListMerge</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> array1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> array2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Index</span><span class="pun">-</span><span class="pln">wise coalesce </span><span class="pun">-</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> arr1</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> it</span><span class="str">'</span><span class="pln">s not </span><span class="str">"unset"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> arr2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">].</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unset</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'None'</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="str">'form'</span><span class="pln"> types </span><span class="pun">(</span><span class="typ">Ref</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> etc</span><span class="pun">).</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">.</span><span class="pln"> </span><span class="typ">For</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> and </span><span class="kwd">float</span><span class="pln"> there is a configurable parameter</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> length mismatch pads to the longest</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> arr1 longer </span><span class="pun">-</span><span class="pln"> fills arr1 values</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> arr2 longer </span><span class="pun">-</span><span class="pln"> fills arr2 values</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntBlend</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">UnsetValue</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatBlend</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">UnsetValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> afTolerance </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringBlend</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormBlend</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefBlend</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBlend</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseBlend</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionBlend</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponBlend</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorBlend</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonBlend</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellBlend</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectBlend</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentBlend</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionBlend</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientBlend</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordBlend</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationBlend</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalBlend</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookBlend</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectBlend</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoBlend</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceBlend</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestBlend</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkBlend</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellBlend</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjBlend</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> akarr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> akarr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Formlist</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormlistBlend</span><span class="pun">(</span><span class="typ">Formlist</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Formlist</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Difference</span><span class="pln"> </span><span class="pun">======================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> any occurence </span><span class="kwd">of</span><span class="pln"> any element </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> from input</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the remainder</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntDifference</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringDifference</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormDifference</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefDifference</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorDifference</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseDifference</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionDifference</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponDifference</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorDifference</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonDifference</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellDifference</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectDifference</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentDifference</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionDifference</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientDifference</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordDifference</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationDifference</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalDifference</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookDifference</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectDifference</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoDifference</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceDifference</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestDifference</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkDifference</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellDifference</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjDifference</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListDifference</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> remove</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Unique</span><span class="pln"> </span><span class="pun">==========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> all duplicates from the </span><span class="typ">Input</span><span class="pln"> array</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Order</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> occurence is unchanged</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntUnique</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringUnique</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormUnique</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefUnique</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorUnique</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseUnique</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionUnique</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponUnique</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorUnique</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonUnique</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellUnique</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectUnique</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentUnique</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionUnique</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientUnique</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordUnique</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationUnique</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalUnique</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookUnique</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectUnique</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoUnique</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceUnique</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestUnique</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkUnique</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellUnique</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjUnique</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListUnique</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> array</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Push</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">Pull</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="pun">======================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Push</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Push</span><span class="pln"> all elements in the array </span><span class="pun">+</span><span class="lit">1</span><span class="pln"> element and add </span><span class="typ">NewValue</span><span class="pln"> at element </span><span class="lit">0</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Pull</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Pull</span><span class="pln"> all elements in the array </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> element and add </span><span class="typ">NewValue</span><span class="pln"> at the end </span><span class="kwd">of</span><span class="pln"> the array
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pun">:</span><span class="pln"> 	</span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Value</span><span class="pln"> at start</span><span class="pun">/</span><span class="pln">end drops off</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> remains the same size</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln">			</span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Values</span><span class="pln"> aren</span><span class="str">'</span><span class="pln">t removed</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> size </span><span class="pun">+=</span><span class="lit">1.</span><span class="pln">

</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardBool</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardInt</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardFloat</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardString</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardForm</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardActor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardActorBase</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardFaction</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardWeapon</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardArmor</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardArmorAddon</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardSpell</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardMagicEffect</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardEnchantment</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardPotion</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardIngredient</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardKeyword</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardLocation</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardGlobal</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardBook</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardMiscObject</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardAmmo</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardRace</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardQuest</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardPerk</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardCell</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardCobj</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PushForwardFormList</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackBool</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackInt</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackFloat</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackString</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackForm</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackActor</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackActorBase</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackFaction</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackWeapon</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackArmor</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackArmorAddon</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackSpell</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackMagicEffect</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackEnchantment</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackPotion</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackIngredient</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackKeyword</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackLocation</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackGlobal</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackBook</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackMiscObject</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackAmmo</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackRace</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackQuest</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackPerk</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackCell</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackCobj</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">PullBackFormList</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">NewValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DropOff</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	_MGF_ArrayQuery: 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6609_10" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_ArrayQuery </span><span class="typ">Hidden</span><span class="pln">

</span><span class="pun">;/</span><span class="pln">	
	</span><span class="typ">Advise</span><span class="pln"> </span><span class="str">'import'</span><span class="pln">ing all three array scripts </span><span class="kwd">for</span><span class="pln"> easy access</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">That</span><span class="pln"> way you don</span><span class="str">'</span><span class="pln">t need to remember which </span><span class="kwd">function</span><span class="pln"> is in which script</span><span class="pun">.</span><span class="pln"> 
	
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayCreate
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayEdit
	</span><span class="typ">Import</span><span class="pln"> _MGF_ArrayQuery
</span><span class="pun">/;</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Regular</span><span class="pln"> </span><span class="typ">Find</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> types without support in vanilla papyrus
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefFind</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorFind</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseFind</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionFind</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponFind</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorFind</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonFind</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellFind</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectFind</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentFind</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionFind</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientFind</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordFind</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationFind</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalFind</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookFind</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectFind</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoFind</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceFind</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestFind</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkFind</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellFind</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjFind</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListFind</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">StartIndex</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">FindAll</span><span class="pln"> </span><span class="pun">=========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> the indices </span><span class="kwd">of</span><span class="pln"> all elements that match </span><span class="typ">Value</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note</span><span class="pln"> on caseSensitive</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Papyrus</span><span class="pln"> is </span><span class="kwd">case</span><span class="pln"> insensitive and depending on the string table 
</span><span class="pun">;</span><span class="pln"> you may not be able to pass a string </span><span class="kwd">with</span><span class="pln"> the </span><span class="kwd">case</span><span class="pln"> format you desire</span><span class="pun">.</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> the recommended </span><span class="kwd">default</span><span class="pln"> is </span><span class="kwd">false</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Tolerance</span><span class="pun">:</span><span class="pln"> </span><span class="typ">How</span><span class="pln"> close a </span><span class="kwd">float</span><span class="pln"> can be to match </span><span class="pun">-</span><span class="pln"> floating point error tolerance</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolFindAll</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntFindAll</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatFindAll</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Tolerance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0001</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringFindAll</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> caseSensitive </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormFindAll</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefFindAll</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorFindAll</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseFindAll</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionFindAll</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponFindAll</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorFindAll</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonFindAll</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellFindAll</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectFindAll</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentFindAll</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionFindAll</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientFindAll</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordFindAll</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationFindAll</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalFindAll</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookFindAll</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectFindAll</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoFindAll</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceFindAll</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestFindAll</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkFindAll</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellFindAll</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjFindAll</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListFindAll</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">FindLasr</span><span class="pln"> </span><span class="pun">========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the index </span><span class="kwd">of</span><span class="pln"> the last occurence </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Value</span><span class="pln"> in the input array</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> not found</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntFindLast</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringFindLast</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormFindLast</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Count</span><span class="pln"> </span><span class="pun">===========================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a count </span><span class="kwd">of</span><span class="pln"> the number </span><span class="kwd">of</span><span class="pln"> occurences </span><span class="kwd">of</span><span class="pln"> </span><span class="str">'Value'</span><span class="pln"> in the </span><span class="typ">Input</span><span class="pln"> array
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntCount</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringCount</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormCount</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Intersection</span><span class="pln"> </span><span class="pun">====================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> indices from arr1 that also exist in arr2
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntIntersection</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatIntersection</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Tolerance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0001</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringIntersection</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> caseSensitive </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormIntersection</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">IntersectionValues</span><span class="pln"> </span><span class="pun">=============================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> values from arr1 that also exist in arr2</span><span class="pun">.</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> version is </span><span class="kwd">case</span><span class="pln"> insensitive</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntIntersectionValues</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatIntersectionValues</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> tolerance </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0001</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringIntersectionValues</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormIntersectionValues</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefIntersectionValues</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorIntersectionValues</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseIntersectionValues</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionIntersectionValues</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponIntersectionValues</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorIntersectionValues</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonIntersectionValues</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellIntersectionValues</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectIntersectionValues</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentIntersectionValues</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionIntersectionValues</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientIntersectionValues</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordIntersectionValues</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationIntersectionValues</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalIntersectionValues</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookIntersectionValues</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectIntersectionValues</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoIntersectionValues</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceIntersectionValues</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestIntersectionValues</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkIntersectionValues</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellIntersectionValues</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjIntersectionValues</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListIntersectionValues</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">FilterByIndices</span><span class="pln"> </span><span class="pun">=================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> the elements </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Input</span><span class="pln"> at the specified akIndices
</span><span class="pun">;</span><span class="pln"> reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only the elements at the specified akIndices
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolFilterByIndices</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">,</span><span class="pln"> bool reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntFilterByIndices</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">,</span><span class="pln"> bool reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatFilterByIndices</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">,</span><span class="pln"> bool reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringFilterByIndices</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">,</span><span class="pln"> bool reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormFilterByIndices</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">,</span><span class="pln"> bool reverse </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Reorders</span><span class="pln"> akArray by akIndices</span><span class="pun">:</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> akArray</span><span class="pun">[</span><span class="pln">akIndices</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]].</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Output</span><span class="pln"> length follows akIndices</span><span class="pun">,</span><span class="pln"> not akArray</span><span class="pun">.</span><span class="pln"> </span><span class="typ">An</span><span class="pln"> out</span><span class="pun">-</span><span class="kwd">of</span><span class="pun">-</span><span class="pln">range index is skipped</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolSortByIndices</span><span class="pun">(</span><span class="typ">Bool</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntSortByIndices</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatSortByIndices</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringSortByIndices</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormSortByIndices</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefSortByIndices</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorSortByIndices</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBaseSortByIndices</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionSortByIndices</span><span class="pun">(</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponSortByIndices</span><span class="pun">(</span><span class="typ">Weapon</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorSortByIndices</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonSortByIndices</span><span class="pun">(</span><span class="typ">ArmorAddon</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellSortByIndices</span><span class="pun">(</span><span class="typ">Spell</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectSortByIndices</span><span class="pun">(</span><span class="typ">MagicEffect</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentSortByIndices</span><span class="pun">(</span><span class="typ">Enchantment</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionSortByIndices</span><span class="pun">(</span><span class="typ">Potion</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientSortByIndices</span><span class="pun">(</span><span class="typ">Ingredient</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordSortByIndices</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationSortByIndices</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalSortByIndices</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookSortByIndices</span><span class="pun">(</span><span class="typ">Book</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectSortByIndices</span><span class="pun">(</span><span class="typ">MiscObject</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoSortByIndices</span><span class="pun">(</span><span class="typ">Ammo</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRaceSortByIndices</span><span class="pun">(</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestSortByIndices</span><span class="pun">(</span><span class="typ">Quest</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkSortByIndices</span><span class="pun">(</span><span class="typ">Perk</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellSortByIndices</span><span class="pun">(</span><span class="typ">Cell</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjSortByIndices</span><span class="pun">(</span><span class="typ">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListSortByIndices</span><span class="pun">(</span><span class="typ">FormList</span><span class="pun">[]</span><span class="pln"> akArray</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> akIndices</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Odd</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Ops</span><span class="pln"> </span><span class="pun">=========================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Append</span><span class="pln"> or prepend a string to every string in </span><span class="typ">Input</span><span class="pln"> array</span><span class="pun">.</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringConcatElements</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Prefix</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Convert</span><span class="pln"> a string array into a single string separated by </span><span class="str">','</span><span class="pln"> </span><span class="pun">(</span><span class="pln">configurable separator</span><span class="pun">).</span><span class="pln">
</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringJoin</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Separator</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">","</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Convert</span><span class="pln"> a comma separated </span><span class="pun">(</span><span class="pln">configurable separator</span><span class="pun">)</span><span class="pln"> string into a string array</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringSplit</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Separator</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">","</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Searches</span><span class="pln"> all elements </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">Input</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Match</span><span class="pln"> and replaces according to parameters</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FullMatch</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> entire element must equal </span><span class="typ">Match</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Substring</span><span class="pln"> match</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FullReplace</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Entire</span><span class="pln"> element is replaced </span><span class="kwd">with</span><span class="pln"> </span><span class="pun">&lt;</span><span class="typ">Replace</span><span class="pun">&gt;.</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> the matched substring</span><span class="pun">(</span><span class="pln">s</span><span class="pun">)</span><span class="pln"> within the element are replaced</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FirstMatchOnly</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> the first occurrence in each element is replaced</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Every</span><span class="pln"> occurrence within each element are replaced</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Papyrus</span><span class="pln"> is notoriously </span><span class="kwd">case</span><span class="pln"> insensitive</span><span class="pun">.</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> is too</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringFindAndReplace</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Match</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Replace</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FullMatch</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FullReplace</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FirstMatchOnly</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Reduces</span><span class="pln"> keyword array so it contains at most </span><span class="lit">1</span><span class="pln"> keyword from the filter list</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Keywords</span><span class="pln"> not in filter list are always kept</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> multiple matches exist</span><span class="pun">,</span><span class="pln"> randomly keeps only one</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordReduceToOne</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akFilterKwds</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a sorted copy </span><span class="kwd">of</span><span class="pln"> the input array by distance from the origin reference</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Origin</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> reference to measure distance from</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> is none then the input array is returned unchanged</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MinDistance</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Minimum</span><span class="pln"> distance from the origin reference</span><span class="pun">.</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> limit</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Maximum</span><span class="pln"> distance from the origin reference</span><span class="pun">.</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> limit</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Sort</span><span class="pln"> nearest to furthest</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Sort</span><span class="pln"> furthest to nearest</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">AllowNones</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Don</span><span class="str">'t remove any '</span><span class="typ">Nones</span><span class="str">' from the array (same array length). False - Remove all '</span><span class="typ">Nones</span><span class="str">'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> </span><span class="str">'Nones'</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">if</span><span class="pln"> allowed</span><span class="pun">)</span><span class="pln"> are sorted to the end </span><span class="kwd">of</span><span class="pln"> the array</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorSortByDistance</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Origin</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MinDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">AllowNones</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayObjRefSortByDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ObjRefs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Origin</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MinDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Ascending</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">AllowNones</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the names </span><span class="kwd">of</span><span class="pln"> a reference array as a </span><span class="typ">String</span><span class="pln"> array</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">DisplayName</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Gets</span><span class="pln"> the base object name</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Get</span><span class="pln"> the display name</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">AllowNones</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Keep</span><span class="pln"> </span><span class="str">'Nones'</span><span class="pln"> in the array </span><span class="pun">(</span><span class="pln">same array size</span><span class="pun">).</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Discard</span><span class="pln"> any </span><span class="str">'Nones'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">StripEmpty</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Valid</span><span class="pln"> refs that resolve to </span><span class="str">""</span><span class="pln"> are discarded</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Keep</span><span class="pln"> references </span><span class="kwd">with</span><span class="pln"> empty names </span><span class="pun">(</span><span class="pln">same array size</span><span class="pun">).</span><span class="pln"> 
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayObjRefGetNames</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ObjRefs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DisplayName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">AllowNones</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">StripEmpty</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorGetNames</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">DisplayName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">AllowNones</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">StripEmpty</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Remove</span><span class="pln"> children</span><span class="pun">/</span><span class="pln">adults from an array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReturnChildren</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Adults</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Children</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> checks the flag on the race record</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorFilterChildren</span><span class="pun">(</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReturnChildren</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Arithmetic</span><span class="pln"> </span><span class="pun">==================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> sum </span><span class="kwd">of</span><span class="pln"> all elements
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntSum</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> average </span><span class="kwd">of</span><span class="pln"> all elements
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntAverage</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> minimum value in array
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntMin</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> maximum value in array
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntMax</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Add</span><span class="pln"> value to all elements
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntAdd</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Subtract</span><span class="pln"> value from all elements
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntSubtract</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Multiply</span><span class="pln"> all elements by value
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntMultiply</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Divide</span><span class="pln"> all elements by value </span><span class="pun">(</span><span class="pln">integer division</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntDivide</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Clamp</span><span class="pln"> all values between min and max
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntClamp</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> minValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> maxValue</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Get</span><span class="pln"> absolute value </span><span class="kwd">of</span><span class="pln"> all elements
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntAbs</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Element</span><span class="pun">-</span><span class="pln">wise addition</span><span class="pun">:</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> arr1</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> arr2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntElementWiseAdd</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Element</span><span class="pun">-</span><span class="pln">wise multiplication</span><span class="pun">:</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> arr1</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> arr2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIntElementWiseMultiply</span><span class="pun">(</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">


</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> </span><span class="typ">Arithmetic</span><span class="pln"> </span><span class="pun">================================================================</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> sum </span><span class="kwd">of</span><span class="pln"> all elements
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatSum</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> average </span><span class="kwd">of</span><span class="pln"> all elements
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatAverage</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> minimum value in array
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatMin</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> maximum value in array
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatMax</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Add</span><span class="pln"> value to all elements
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatAdd</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Subtract</span><span class="pln"> value from all elements
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatSubtract</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Multiply</span><span class="pln"> all elements by value
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatMultiply</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Divide</span><span class="pln"> all elements by value
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatDivide</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Clamp</span><span class="pln"> all values between min and max
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatClamp</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> minValue</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> maxValue</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Get</span><span class="pln"> absolute value </span><span class="kwd">of</span><span class="pln"> all elements
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatAbs</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Round</span><span class="pln"> all elements to nearest integer
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatRound</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Floor</span><span class="pln"> all elements </span><span class="pun">(</span><span class="pln">round down</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatFloor</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Ceiling</span><span class="pln"> all elements </span><span class="pun">(</span><span class="pln">round up</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatCeiling</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Normalize</span><span class="pln"> array to </span><span class="lit">0</span><span class="pun">-</span><span class="lit">1</span><span class="pln"> range
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatNormalize</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Element</span><span class="pun">-</span><span class="pln">wise addition</span><span class="pun">:</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> arr1</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> arr2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatElementWiseAdd</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Element</span><span class="pun">-</span><span class="pln">wise multiplication</span><span class="pun">:</span><span class="pln"> result</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> arr1</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> arr2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFloatElementWiseMultiply</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> arr2</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26160</guid><pubDate>Mon, 17 Aug 2026 15:29:04 +0000</pubDate></item><item><title>Find</title><link>https://www.loverslab.com/blogs/entry/26164-find/</link><description><![CDATA[<p>
	Find/filter functions with practically every filtering parameter you could ever want. 
</p>

<p>
	 
</p>

<p>
	Find: 
</p>

<ul>
	<li>
		Actors around the player or any other (loaded) reference. 
	</li>
	<li>
		Actors 'in' a location, or sublocations of that location. 
	</li>
	<li>
		Actors who were placed in the editor at a certain location. 
	</li>
	<li>
		Actors who were placed in the editor within a specific cell. 
	</li>
	<li>
		ObjectReferences around the player or another ref. 
	</li>
	<li>
		Armor records. 
	</li>
	<li>
		Forms. 
	</li>
	<li>
		Locations. 
	</li>
</ul>

<p>
	 
</p>

<p>
	Filter actors by:
</p>

<ul>
	<li>
		Distance. 
	</li>
	<li>
		Faction. 
	</li>
	<li>
		Race. 
	</li>
	<li>
		Mod. 
	</li>
	<li>
		Gender. 
	</li>
	<li>
		Dead. 
	</li>
	<li>
		Unique. 
	</li>
	<li>
		Child. 
	</li>
	<li>
		In a scene. 
	</li>
	<li>
		In combat. 
	</li>
	<li>
		Hostile to the player. 
	</li>
	<li>
		Searching (Sneaking player searching)
	</li>
	<li>
		Alarmed (Actor approaching the player for crime)
	</li>
	<li>
		Actor. 
	</li>
</ul>

<p>
	 
</p>

<p>
	Filter armors by:
</p>

<ul>
	<li>
		Keywords. 
	</li>
	<li>
		Name. 
	</li>
	<li>
		Slot. 
	</li>
	<li>
		Enchantment. 
	</li>
</ul>

<p>
	 
</p>

<p>
	Filter forms by:
</p>

<ul>
	<li>
		Form type (Armor, spell, basically anything - <a href="https://ck.uesp.net/wiki/GetType_-_Form" ipsnoembed="true" rel="external nofollow">https://ck.uesp.net/wiki/GetType_-_Form</a>)
	</li>
	<li>
		Keywords. 
	</li>
	<li>
		Mod. 
	</li>
	<li>
		Name. 
	</li>
	<li>
		EditorID. 
	</li>
</ul>

<p>
	 
</p>

<p>
	Most of these function have both a direct array return, or if you're expecting a lot of results, a formlist filling version. 
</p>

<p>
	<br>
	Take a deep breath before opening the spoiler...<br>
	This is not as bad as it looks. And once you understand one, the rest will fall into place pretty quickly. 
</p>

<p>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5031_6" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> actors near the reference</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Origin</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> object to search around</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Note</span><span class="pun">:</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> the player is not the origin then the player can be included in the results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> number </span><span class="kwd">of</span><span class="pln"> actors to </span><span class="kwd">try</span><span class="pln"> to find</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Closest</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Get</span><span class="pln"> the closest qualifying actors </span><span class="pun">(</span><span class="pln">actors arranged by closest</span><span class="pun">).</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Random</span><span class="pln"> actors</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Maximum</span><span class="pln"> distance from the player</span><span class="pun">.</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> limit</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterFactions</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> actors that are a member </span><span class="kwd">of</span><span class="pln"> at least one </span><span class="kwd">of</span><span class="pln"> these factions</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseFactFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Reverse</span><span class="pln"> the faction filter </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors that are not a member </span><span class="kwd">of</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the provided factions</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterRaces</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors whos race is one </span><span class="kwd">of</span><span class="pln"> these</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> match any</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseRaceFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> actors matching any </span><span class="typ">FilterRaces</span><span class="pln"> race</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> actors that don</span><span class="str">'</span><span class="pln">t match any </span><span class="kwd">of</span><span class="pln"> these races</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterMods</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> actors that are defined in these mods</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors that are NOT defined in </span><span class="typ">FilterMods</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterGender</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Either</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Male</span><span class="pln"> only</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Female</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pln"> gender</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Creatures</span><span class="pln"> are likely male only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterCreatures</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Either</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Humanoid</span><span class="pln"> only </span><span class="pun">(</span><span class="typ">ActorTypeNpc</span><span class="pln"> keyword check</span><span class="pun">),</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Creature</span><span class="pln"> only
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Dead</span><span class="pln"> or alive</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> alive</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> dead</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnique</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Unique</span><span class="pln"> only</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Non</span><span class="pun">-</span><span class="pln">unique only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterChildren</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> children</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Children</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterInScene</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> in scenes</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> in scenes</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Note</span><span class="pun">:</span><span class="pln"> </span><span class="typ">An</span><span class="pln"> actor can be in a scene and in active combat at the same time</span><span class="pun">!</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterInCombat</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> in combat</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> in combat</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterHostileToPlayer</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> hostile disposition to player</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> those </span><span class="kwd">with</span><span class="pln"> hostile disposition</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">May</span><span class="pln"> or may not be actively hostile</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterCombatWithPlayer</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> fighting the player</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> those fighting the player</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Target</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Player</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterSearching</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> searching</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Searching</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is combat</span><span class="pun">/</span><span class="pln">sneaking searching</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterAlarmed</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> alarmed</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Alarmed</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Alarmed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> actor confronting the player </span><span class="kwd">for</span><span class="pln"> crime</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Approach</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> dialogue</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeActors</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any actor in </span><span class="kwd">this</span><span class="pln"> array from results</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindActorsNearRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Origin</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">,</span><span class="pln"> \
									bool </span><span class="typ">Closest</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterFactions</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFactFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterRaces</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseRaceFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterMods</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterGender</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCreatures</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">\
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterUnique</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterChildren</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInScene</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInCombat</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterHostileToPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCombatWithPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterSearching</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterAlarmed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeActors</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
									
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> actors who</span><span class="str">'</span><span class="pln">s location is designated at akLocation or lower in the location hierarchy</span><span class="pun">.</span><span class="pln">  
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> example </span><span class="typ">FindActorsInLocation</span><span class="pun">(</span><span class="typ">WhiterunLocation</span><span class="pun">)</span><span class="pln"> would find any actor in any </span><span class="typ">Whiterun</span><span class="pln"> location or sublocations</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">And</span><span class="pln"> </span><span class="typ">FindActorsInLocation</span><span class="pun">(</span><span class="typ">WhiterunHoldLocation</span><span class="pun">)</span><span class="pln"> could find any actor in </span><span class="typ">Whiterun</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Riverwood</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Rorikstead</span><span class="pln"> or any other location that
</span><span class="pun">;</span><span class="pln"> is a sublocation </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">WhiterunHoldLocation</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> akLocation</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Where</span><span class="pln"> to pull actors from</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Use</span><span class="pln"> a broader location to increase the area</span><span class="pun">.</span><span class="pln"> </span><span class="typ">SleepingGiantInnLocation</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">RiverwoodLocation</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">WhiterunHoldLocation</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> number </span><span class="kwd">of</span><span class="pln"> actors to </span><span class="kwd">try</span><span class="pln"> to find</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterFactions</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> actors that are a member </span><span class="kwd">of</span><span class="pln"> at least one </span><span class="kwd">of</span><span class="pln"> these factions</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseFactFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Reverse</span><span class="pln"> the faction filter </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors that are NOT a member </span><span class="kwd">of</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the provided factions</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterRaces</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors whos race is one </span><span class="kwd">of</span><span class="pln"> these</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> match any</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseRaceFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> actors matching any race</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> actors that don</span><span class="str">'</span><span class="pln">t match any </span><span class="kwd">of</span><span class="pln"> these races</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterMods</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> actors that are defined in these mods</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pun">:</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors defined in </span><span class="typ">FilterMods</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only actors that are NOT defined in </span><span class="typ">FilterMods</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterGender</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Either</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Male</span><span class="pln"> only</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Female</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pln"> gender</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Creatures</span><span class="pln"> are likely male only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterCreatures</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Either</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Humanoid</span><span class="pln"> only </span><span class="pun">(</span><span class="typ">ActorTypeNpc</span><span class="pln"> keyword check</span><span class="pun">),</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Creature</span><span class="pln"> only
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Dead</span><span class="pln"> or alive</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> alive</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> dead</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnique</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Unique</span><span class="pln"> only</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Non</span><span class="pun">-</span><span class="pln">unique only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterChildren</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> children</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Children</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterInScene</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> in scenes</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> in scenes</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Note</span><span class="pun">:</span><span class="pln"> </span><span class="typ">An</span><span class="pln"> actor can be in a scene and in active combat at the same time</span><span class="pun">!</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterInCombat</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> in combat</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> in combat</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterHostileToPlayer</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> hostile disposition to player</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> those </span><span class="kwd">with</span><span class="pln"> hostile disposition</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">May</span><span class="pln"> or may not be actively hostile</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterCombatWithPlayer</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> fighting the player</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> those fighting the player</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Target</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Player</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterSearching</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> searching</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Searching</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is combat</span><span class="pun">/</span><span class="pln">sneaking searching</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterAlarmed</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> alarmed</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Alarmed</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Alarmed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> actor confronting the player </span><span class="kwd">for</span><span class="pln"> crime</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Approach</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> dialogue</span><span class="pun">)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeActors</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> any actor in </span><span class="kwd">this</span><span class="pln"> array from results</span><span class="pun">.</span><span class="pln"> 									
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindActorsInLocation</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLocation</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterFactions</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFactFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterRaces</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseRaceFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterMods</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterGender</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCreatures</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterUnique</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterChildren</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInScene</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInCombat</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterHostileToPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCombatWithPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterSearching</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterAlarmed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeActors</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Similar</span><span class="pln"> to </span><span class="typ">FindActorsInLocation</span><span class="pln"> but returns actors that were placed in the editor at akLocation</span><span class="pun">,</span><span class="pln"> whereas
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FindActorsInLocation</span><span class="pun">()</span><span class="pln"> works on where the actor currently is</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindActorsByEditorLocation</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLocation</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterFactions</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFactFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterRaces</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseRaceFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterMods</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterGender</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCreatures</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterUnique</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterChildren</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInScene</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInCombat</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterHostileToPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCombatWithPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterSearching</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterAlarmed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
										</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeActors</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
										
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Similar</span><span class="pln"> to </span><span class="typ">FindActorsByEditorLocation</span><span class="pln"> but keys on the </span><span class="typ">Cell</span><span class="pln"> the actor was placed in by the editor
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> may only be reliable </span><span class="kwd">for</span><span class="pln"> interior cells</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Exterior</span><span class="pln"> cells need testing</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetEditorLocation2</span><span class="pln"> may resolve exterior placements to the parent </span><span class="typ">Worldspace</span><span class="pln"> rather than a specific grid </span><span class="typ">Cell</span><span class="pun">,</span><span class="pln"> in which </span><span class="kwd">case</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> will not match</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akCell</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> cell to match against</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">LoadedOnly</span><span class="pun">:</span><span class="pln"> 	</span><span class="typ">True</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> scan actors currently in the process lists </span><span class="pun">(</span><span class="pln">cheap</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">				</span><span class="typ">False</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> scan every actor ever placed anywhere in the load order </span><span class="pun">(</span><span class="pln">complete</span><span class="pun">,</span><span class="pln"> but expensive</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Consider</span><span class="pln"> caching the result</span><span class="pun">).</span><span class="pln"> 
</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindActorsByEditorCell</span><span class="pun">(</span><span class="typ">Cell</span><span class="pln"> akCell</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">LoadedOnly</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterFactions</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFactFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterRaces</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseRaceFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FilterMods</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterGender</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCreatures</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterDead</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterUnique</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterChildren</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInScene</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterInCombat</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterHostileToPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterCombatWithPlayer</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterSearching</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterAlarmed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
									</span><span class="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeActors</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Find</span><span class="pln"> matching object references in the world around a reference</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Origin</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Reference</span><span class="pln"> to center the search on</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Count</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> max number </span><span class="kwd">of</span><span class="pln"> matching objects to </span><span class="kwd">try</span><span class="pln"> to find</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Closest</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">ObjRefs</span><span class="pln"> are returned in order </span><span class="kwd">of</span><span class="pln"> distance from player</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">ObjRefs</span><span class="pln"> are randomly picked within </span><span class="typ">MaxDistance</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">How</span><span class="pln"> far from the player to search</span><span class="pun">.</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> distance</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FormTypes</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Which</span><span class="pln"> types </span><span class="kwd">of</span><span class="pln"> forms to find</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pln"> the CK </span><span class="typ">Wiki</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="str">'GetType'</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> a full list</span><span class="pun">:</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//ck.uesp.net/wiki/GetType_-_Form</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> 				</span><span class="typ">Empty</span><span class="pln"> </span><span class="typ">FormTypes</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> match any form type</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akKwds </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="str">'</span><span class="pln">s base object must have at least one </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> match anything</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseKwds</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Reverses</span><span class="pln"> the keyword filter</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only objects that DON</span><span class="str">'</span><span class="pln">T have any </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">IncludeForms</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">ObjRef</span><span class="str">'</span><span class="pln">s base object must be one </span><span class="kwd">of</span><span class="pln"> these to pass</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> match anything</span><span class="pun">.</span><span class="pln"> A form in both </span><span class="typ">IncludeForms</span><span class="pln"> </span><span class="pun">&amp;</span><span class="pln"> </span><span class="typ">ExcludeForms</span><span class="pln"> will be excluded</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeForms</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> specific forms from search results</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MinGold</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> base must be worth at least </span><span class="kwd">this</span><span class="pun">.</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> minimum</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MaxGold</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> base must be worth at most </span><span class="kwd">this</span><span class="pun">.</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> maximum</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MinWeight</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> must weight at least </span><span class="kwd">this</span><span class="pun">.</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> </span><span class="typ">Minimum</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MaxWeight</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> must weigh at most </span><span class="kwd">this</span><span class="pun">.</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> maximum</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Ownership</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">0</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Unowned</span><span class="pln"> only</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Owned</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeQuestItems</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> items</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> out quest references</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindObjRefsNearRef</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Origin</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Count</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Closest</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">FormTypes</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseKwds</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">IncludeForms</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeForms</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">IncludeDisabled</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">MinGold</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">MaxGold</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MinWeight</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxWeight</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Ownership</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> \
												</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ExcludeQuestItems</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> an array </span><span class="kwd">of</span><span class="pln"> armors matching your search criteria</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akKwds </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Keywords</span><span class="pln"> to match</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeKwds</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> must have NONE </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Slots</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> must occupy at least ONE </span><span class="kwd">of</span><span class="pln"> these slots </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no slot filter</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchNames</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> name must contain at least ONE </span><span class="kwd">of</span><span class="pln"> these strings </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no filter</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeNames</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> name must NOT contain any </span><span class="kwd">of</span><span class="pln"> these strings </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no filter</span><span class="pun">).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> by enchantment status</span><span class="pun">.</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">.</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Unenchanted</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> enchanted</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchAnyKwd</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> armor needs ANY required keyword</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> armor needs ALL required keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> any items that don</span><span class="str">'</span><span class="pln">t have any name </span><span class="pun">(</span><span class="typ">These</span><span class="pln"> are typically hidden inventory items</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindArmor</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeKwds</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Slots</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">MatchNames</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeNames</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">MatchAnyKwd</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Populates</span><span class="pln"> the provided formlist </span><span class="kwd">with</span><span class="pln"> armors matching your provided criteria</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the number </span><span class="kwd">of</span><span class="pln"> armors added to the formlist</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akFormList </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> formlist to add matching armors to</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akKwds </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Keywords</span><span class="pln"> to match</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeKwds</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> must have NONE </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Slots</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> must occupy at least ONE </span><span class="kwd">of</span><span class="pln"> these slots </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no slot filter</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchNames</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> name must contain at least ONE </span><span class="kwd">of</span><span class="pln"> these strings </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no filter</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeNames</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> name must NOT contain any </span><span class="kwd">of</span><span class="pln"> these strings </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no filter</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> by enchantment status</span><span class="pun">.</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">.</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Unenchanted</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> enchanted</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchAnyKwd</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> armor needs ANY required keyword</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> armor needs ALL required keywords</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ClearFormList</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Whether</span><span class="pln"> to clear the formlist before adding</span><span class="pun">.</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Clear</span><span class="pln"> formlist</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Add</span><span class="pln"> to formlist</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> any items that don</span><span class="str">'</span><span class="pln">t have any name </span><span class="pun">(</span><span class="typ">These</span><span class="pln"> are typically hidden inventory items</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindArmorToList</span><span class="pun">(</span><span class="typ">FormList</span><span class="pln"> akFormList</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeKwds</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Slots</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">MatchNames</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeNames</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">MatchAnyKwd</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ClearFormList</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> a given armor array</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akKwds </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Keywords</span><span class="pln"> to match</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeKwds</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> must have NONE </span><span class="kwd">of</span><span class="pln"> these keywords</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Slots</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> must occupy at least ONE </span><span class="kwd">of</span><span class="pln"> these slots </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no slot filter</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchNames</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> name must contain at least ONE </span><span class="kwd">of</span><span class="pln"> these strings </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no filter</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeNames</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> name must NOT contain any </span><span class="kwd">of</span><span class="pln"> these strings </span><span class="pun">(</span><span class="pln">empty </span><span class="pun">=</span><span class="pln"> no filter</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchAnyKwd</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> armor needs ANY required keyword</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> armor needs ALL required keywords</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> any items that don</span><span class="str">'</span><span class="pln">t have any name </span><span class="pun">(</span><span class="typ">These</span><span class="pln"> are typically hidden inventory items</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FilterArmors</span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">InputArmors</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeKwds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Slots</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">MatchNames</span><span class="pun">,</span><span class="pln"> \
								</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeNames</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">MatchAnyKwd</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> bool filterUnnamed </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> all forms </span><span class="kwd">of</span><span class="pln"> type </span><span class="str">'FormType'</span><span class="pln"> that have keyword akKeyword</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FormType</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> type </span><span class="kwd">of</span><span class="pln"> forms to </span><span class="kwd">get</span><span class="pun">.</span><span class="pln"> </span><span class="typ">See</span><span class="pun">:</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//ck.uesp.net/wiki/GetType_-_Form</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akKeyword </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> keywords to filter </span><span class="kwd">with</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Pass</span><span class="pln"> an empty array to skip keyword filtering</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RequireAllKeywords</span><span class="pln">  </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> form must have ALL keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> ANY keyword matches</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseKeywordFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes forms that pass the keyword check instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ModFilter</span><span class="pln">           </span><span class="pun">-</span><span class="pln"> </span><span class="typ">List</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> mod</span><span class="pun">/</span><span class="pln">plugin name substrings to filter by </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln"> </span><span class="str">"Skyrim.esm"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"MyMod"</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Pass</span><span class="pln"> empty array to skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln">    </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes forms originating from matched mods instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NameFilter</span><span class="pln">          </span><span class="pun">-</span><span class="pln"> </span><span class="typ">List</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> strings to substring match against the form</span><span class="str">'</span><span class="pln">s name</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Pass</span><span class="pln"> an empty array to skip</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseNameFilter</span><span class="pln">   </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes forms whose name matches instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">EditorIDFilter</span><span class="pln">      </span><span class="pun">-</span><span class="pln"> </span><span class="typ">List</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> strings to substring match against the form</span><span class="str">'</span><span class="pln">s editor ID</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Pass</span><span class="pln"> empty array to skip</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseEditorIDFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes forms whose </span><span class="typ">EditorID</span><span class="pln"> matches instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FormListFilter</span><span class="pln">      </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> include </span><span class="pun">(</span><span class="pln">or exclude</span><span class="pun">)</span><span class="pln"> forms present in </span><span class="kwd">this</span><span class="pln"> </span><span class="typ">FormList</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Pass</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> to skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseFormListFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes forms found in the </span><span class="typ">FormList</span><span class="pln"> instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnplayable</span><span class="pln">    </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes forms flagged as non</span><span class="pun">-</span><span class="pln">playable </span><span class="pun">(</span><span class="pln">where applicable</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln">       </span><span class="pun">-</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> excludes inventory type forms </span><span class="pun">(</span><span class="typ">Armor</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Weapon</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Potion</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MiscObject</span><span class="pln"> etc</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> an empty name</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> by enchantment status</span><span class="pun">.</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Any</span><span class="pun">.</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Unenchanted</span><span class="pln"> only</span><span class="pun">.</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> enchanted</span><span class="pun">.</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> effect on non</span><span class="pun">-</span><span class="pln">enchantable forms</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindForms</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> </span><span class="typ">FormType</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKeywords</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RequireAllKeywords</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseKeywordFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModFilter</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">NameFilter</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseNameFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">EditorIDFilter</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseEditorIDFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">FormListFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFormListFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterUnplayable</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> as </span><span class="typ">FindForms</span><span class="pun">()</span><span class="pln"> but instead fills akList </span><span class="kwd">with</span><span class="pln"> the forms</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Better</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> you expect a large number </span><span class="kwd">of</span><span class="pln"> forms</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> formlist is not cleared first</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> is additive</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindFormsToList</span><span class="pun">(</span><span class="typ">FormList</span><span class="pln"> akList</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FormType</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKeywords</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RequireAllKeywords</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseKeywordFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModFilter</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">NameFilter</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseNameFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">EditorIDFilter</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseEditorIDFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">FormListFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFormListFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterUnplayable</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">FilterUnnamed</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
							</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">FilterEnchanted</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> native

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Filter</span><span class="pln"> the input array </span><span class="kwd">of</span><span class="pln"> forms </span><span class="kwd">for</span><span class="pln"> any keyword in akKwds</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Input</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> input array </span><span class="kwd">of</span><span class="pln"> forms</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akKwds </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> list </span><span class="kwd">of</span><span class="pln"> keywords to match</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Reverse</span><span class="pln"> the keyword filter</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln">				</span><span class="typ">False</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> any form that has any keyword in akKwds</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">				</span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> any form that has none </span><span class="kwd">of</span><span class="pln"> the keywords in akKwd</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FilterFormsByKeywords</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Input</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKwds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> all </span><span class="typ">Location</span><span class="pln"> forms matching the given filters</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akKeywords </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Keywords</span><span class="pln"> to filter by</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> no keyword filtering</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RequireAllKeywords</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> must have ALL keywords</span><span class="pun">.</span><span class="pln"> </span><span class="typ">False</span><span class="pun">:</span><span class="pln"> ANY keyword matches</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeKeywords</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> is rejected </span><span class="kwd">if</span><span class="pln"> it has ANY </span><span class="kwd">of</span><span class="pln"> these</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ModFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">List</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> mod</span><span class="pun">/</span><span class="pln">plugin name substrings to filter by</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> locations from matched mods instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">NameFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Substrings</span><span class="pln"> to match against the location</span><span class="str">'</span><span class="pln">s full name</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseNameFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> locations whose name matches instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">EditorIDFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Substrings</span><span class="pln"> to match against the location</span><span class="str">'</span><span class="pln">s </span><span class="typ">EditorID</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> array </span><span class="pun">=</span><span class="pln"> skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseEditorIDFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> exclude locations whose </span><span class="typ">EditorID</span><span class="pln"> matches instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FormListFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> include </span><span class="pun">(</span><span class="pln">or exclude</span><span class="pun">)</span><span class="pln"> locations present in </span><span class="kwd">this</span><span class="pln"> </span><span class="typ">FormList</span><span class="pun">.</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseFormListFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> locations found in the </span><span class="typ">FormList</span><span class="pln"> instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WorldspaceFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Only</span><span class="pln"> include </span><span class="pun">(</span><span class="pln">or exclude</span><span class="pun">)</span><span class="pln"> locations resolving into </span><span class="kwd">this</span><span class="pln"> worldspace </span><span class="pun">(</span><span class="pln">via center</span><span class="pun">/</span><span class="pln">horse marker</span><span class="pun">,</span><span class="pln"> then parentLoc chain</span><span class="pun">).</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> skip</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ReverseWorldspaceFilter</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">True</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Exclude</span><span class="pln"> locations resolving into </span><span class="typ">WorldspaceFilter</span><span class="pln"> instead </span><span class="kwd">of</span><span class="pln"> including them</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLocationsOfType</span><span class="pun">(</span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> akKeywords</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RequireAllKeywords</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ExcludeKeywords</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModFilter</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseModFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">NameFilter</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseNameFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">EditorIDFilter</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseEditorIDFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">FormList</span><span class="pln"> </span><span class="typ">FormListFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseFormListFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">True</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">WorldSpace</span><span class="pln"> </span><span class="typ">WorldspaceFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pun">,</span><span class="pln"> \
                        </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ReverseWorldspaceFilter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">False</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span><span class="pln">
                        
                                </span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26164</guid><pubDate>Mon, 17 Aug 2026 15:28:39 +0000</pubDate></item></channel></rss>
